‏إظهار الرسائل ذات التسميات programming. إظهار كافة الرسائل

Genetic Algorithms


يعنى ايه Genetic Algorithm؟

هى طريقه لتطوير الحلول لمشكله معينه لحد ما نوصل للحل الامثل من الحلول المتاحه معانا و هى بتقوم على اساس تطوير الاجيال و تحسينها بطرق معينه للاختيار بين الحلول و توليد حلول جديده لحد ما توصل لمجموعه حلول مثالية
و ده مثال من الواقع:
لو عندنا مجموعة من الارانب سريعة و ذكية و مجموعهتانيه بطيئة و غبية و كان الجيل الاول من الارانب يعيش فى سعادة و امان لحد ما جت مجموعة من الثعالب تأكلهم وفى هذة الحاله للاسف معرفش يهرب الا مجموعه كبيرة من الارانب السريعة وشويه قليله من الارانب البطيئة نتيجة الحظ بعدها عاش الجيل اللى فاضل بعد ما حصل الهجوم الشديد مع بعض فى امان و تم التزاوج بين هذة الارانب المتبقية واللى هتتقسم كالتالي:
• تزاوج ارانب سريعة مع اخرى مثلها
• وارانب بطيئة مع سريعة
• و ارانب بطيئة مع بطيئة
ومعنى ده ان الجيل الناتج هيأخذ جينات من الاباء والامهات و يطلع جيل جديد ولكن استمرت هجوم الثعالب و تكررت القصة ومع مرور الوقت فأن معدل الارانب السريعة يزيد و يقل معدل الارانب البطيئة و و بعد فترة اكبر متبقاش الا مجموعة من الارانب الاسرع
وانتهت القصة بموت الضعفاء !!!!
بمعنى اصح ان البقاء للاقوى دائما ( الاقوى هنا تحسب حسب المشكلة اللى بنحلها)
~تعالوا نطبق قصة العيش فى الغابة باستخدام Genetic algorithms:
ببساطه لو عندى مشكله ليها حلول كتير و عاوز اوصل لاحسن حل يا ترى مفروض اعمل ايه؟
• هنفرض مجموعه من الحلول Solutions (مجموعه الارانب)
• هنقيس جودة الحل (Fitness function) يعنى فى مثالنا نقيس سرعة الارانب
• عمليه التزاوج (crossover) و دى هنعملها عشان نبدل اجزاء من الحلول (ننتج ارانب سريعه بدل البطيئه)
• ندى فرصة للارنب انها تعيش عن طريق الحظ (selection) و دى هيكون بكذا طريقه
• نسيب فرصه لان ممكن تحصل طفره وراثيه (mutation) فى الارانب الجديده (علميا عن طريق تغيير فى جين معين عشان نوصل لحل احسن)

بمنهى البساطة ده تطبيق لحل مشكله ب Genetic algorithms

و ده فيديو بيشرح الموضوع من MIT University

يعنى ايه الذكاء الاصطناعى ؟

بقالنا فتره بنسمع كلمه Artificial Intelligence او AI ببساطه كده هو اننا نخلى اى جهاز Machine يفكر لوحده طبعا هتقول ازاى جهاز يفكر و انى بقول كلام ميحصلش لا يا سيدى و انت كمان اتعاملت مع تفكيره و ابسط مثال لكده لما بتقول هلعب لعبه و هلاعب الكمبيوتر تفتكر لو الكمبيوتر مش ذكى و انت بتلعب لعبه زى fifa هيتوقع منين حركه الكوره و انهى لاعب مفروض يتحرك و ده ابسط مثال على AI لو عايز تتعلمه ده كورس من MIT University بيشرح الموضوع بشكل اوسع
MIT university AI Course
 ‫خليك حبشتكانى‬

لغة Java


لغة Java هى لغة برمجه متعدده الاغراض بدايتها كانت سنه 1995 فى شركة Sun Microsystems (حاليا اشترتها شركة Oracle) بواسطة فريقGreen Team بقياده James Goslingطبعا اول سؤال هيتسال دلوقتى يعنى ايه متعدده الاغراض دى؟ بص يا سيدى متعدده الاغراض يعنى نقدر نعمل بيها اكتر من نوع من التطبيقات يعنى نقدر نعمل بيها برامج لاجهزة الكمبيوتر Desktop applications و ممكن للموبايل Mobile Applications و حتى مواقع الانترنت (web applications) فريق Grean Team نجح فعلا انه يصمم لغه سهله و تشتغل على اى نظام تشغيل و اى جهاز و متعملش اى مشاكل فى ده و عشان كده نقدر نقول ان الجافا بقت فى كل مكان Java Every Where
طبعا دلوقتى بدانا نفكر ازاى الجافا بتشتغل على اى نظام او جهاز و ده ببساطه لان البرنامج اللي مكتوب بالجافا مبيشتغلش على نظام التشغيل بس بيشتغل على حاجه اسمها Java Virtual Machine (JVM) و هى اللي بتتعامل مع نظام التشغيل و JVM بتتعامل مع كل انظمه التشغيل طيب و ازاى بقي بتتعامل مع اى جهاز؟ طبعا السؤال ده اسهل من اللي فات لان نظام التشغيل هو اللى بيتعامل مع hardware و بما اننا عرفنا ان JVM بيخلى جافا تشتغل على اى نظام بالتالى النظام هيخليها تشتغل على اى جهاز و ده بيكسب الجافا ميزه WORA (Write Once Read Anywhere) يعنى “أكتب مرة واحدة وشغّل في كل مكان”.


Python

Python Language


يعنى ايه بايثون Python من اسهل لغات البرمجه و كتير اوى بينصحوا بيها المبتدئين و كمان مطلوبة جدا فى سوق العمل حسب احصائيات Linkedin هى من المهارات المطلوبه بنسبهكبيره ميزاتها :


- زى ما قلنا قبل كده لغه بسيطه و قويه و ممتازه لمبتدئين لانها مش هتحتاج منك لانك هتبقي بتكتب كلام انجليزى بسيط فهتتعلمها بدون مجهود
- لغه مفتوحه المصدر (يعنى ببلاش) و بيحصل عليها تعديل باستمرار عشان قوتها تزيد
- بتشتغل على اغلب انظمه التشغيل زى Linux Windows, Macintosh, .
- سهل انك تدخلها ضمن برامج c/ c++ و كمان ممكن تكتب جزء من برنامج البايثون ب c/c++
- بتستخدم فى برمجه الويب ، وفي البرامج التي تستخدم الواجهات الرسومية و في توزيعات انضمة التشغيل

و دى شويه كورسات تقدر تبدا تتعلمها من خلالهم:






يعنى ايه Freelancing ؟

يعنى ايه Freelancing ؟ و يا ترى فى مجال معين او ناس معينه هى اللي بتشتغله؟


بص يا سيدي الــfreelancing  معناه انى بقدم خدمة بمقابل مادى , كل خدمه ليها وقت تنفيذ على حسب حجم المشروع .. طبعا الخدمة مش لازم تبقي فى مجال معين يعنى ممكن يبقى برمجة، تصميم، كتابة، ترجمة وهكذا طول ما بتقدر تعمل خدمة بمقابل مادى تانى حاجة لازم اللى بيدخل فى الــ freelancing تكون خبرته كويسه جدا فى المجال اللى هو هيشتغل فيه عشان يبقى عارف الاخطاء اللى ممكن يقع فيها لان انت دلوقتى ” حر نفسك ” و انت اللى بتتعامل مع العملاء مباشرة يعنى انت اللى بتدير المشروع و دى مش اى حد يقدر يعملها غالباً اللي شدك للموضوع هو فكرة انك ممكن وانت قاعد في البيت تكسب فلوس كتيييير جدا بدون اي مجهود يؤسفني يا عزيزي اني اقول لك ان الفكره دي غلط وان اللي بيكسب من الــ freelancing بذل مجهود كبير جدا لحد ما وصل للدرجه دي, ولحد ما قدر يوفر لنفسه دخل محترم ينافس مرتبات وظائف الناس بتحلم بيها. المهم
لو انت لسه بتبدأ أو حتي شغال من فتره في العمل الحر هقولك شوية نصايح هتساعدك كتير انك تبدأ فعلا في كسب دخل محترم او تزود دخلك الحالي ان شاء الله

- اول نصيحه متشتغلش من السرير

    تقريبا كلنا و خصوصا فى الشتا بنحب ناخد اللابتوب في حضننا ونريح علي السرير طول اليوم  و دي كارثه بكل المقاييس فلازم تقوم من على السرير حالا لو انت عايز تنجح ... ليه بقا؟؟؟؟؟بيقولك ان فيه حاجه اسمها الـComfort Zone أو منطقة الراحه ودي منطقه الانسان بيحب يأنتخ فيها لانه مستريح وأهم Comfort Zone لأي حد هي اوضه نومه و سريره بالذات بنسبة كبيرة طول ما انت فيها هتحس على طول بالخمول والنوم فانتاجيتك وابداعك هيقل بكل تاكيد ,
فلو عايز فعلا تحقق نجاح في العمل الحر , لازم تخرج من منطقه الراحه اللي هي "غرفة النوم" وخد اللابتوب اطلع في الصالون او فوق السطوح حتي...... أو اي حته بعيده عن منطقة الراحه وابدأ الشغل بجد  .

- تانى نصيحه خليك جاد 

    يعنى لو انت داخل المجال كتجربه يا صابت يا خابت فانصحك انك تخرج حالا وتفكر في شغلانه تانيه , لازم عشان تنجح في المجال دا انك تأخده بجديه فعلاً , وان دا شغل زي اي شغل وتلزم نفسك بساعات عمل كأنك في وظيفه في قطاع خاص . علميا اي حد بيعمل حاجه معينه لمدة 4 ساعات يوميا في سبيل تحقيق هدف معين بيوصل فعلا في النهايه لتخقيق الهدف دا. فحاول تلزم نفسك بعدد ساعات معين تشتغل فعلا وبجد لأنها وظيفه زي اي وظيفه تانيه.

- تالت نصيحة انك تطور من نفسك باستمرار

   لازم ما توقفشي عند حد معين , يعني مش علشان اتعلمت برنامج فوتوشوب تقول خلاص انا كدا Professional Graphic Designer ....لا يا راجل... !!! لازم عشان فعلاً توصل لدرجة الاحترافيه انك تتعلم وتطور نفسك باستمرار وما توقفشي ابداً لان التعلم ليس له نهايه .فمثلاً لو انت مستواك متوسط في برنامج معين مثلا فوتوشوب , ابحث عن دورات مستويات متقدمه و اتعلم و طور نفسك باستمرار ..... وهكذا مع اي برنامج تاني .

- رابع نصيحة متستعجلش

    انا عارف ان أصعب حاجه هي الانتظار , فعلاً دي حقيقه محدش يقدر ينكرها . انت ممكن تذاكر و تشتغل وما يجيلكش شغل و ما تكسبشي حاجه فيجيلك اكتئاب وتزهق وتسيب الموضوع خالص , بس أحب أقولك ان الموضوع بيحتاج وقت . يعني انت لو حابب تأكل لحمه مش بتحطها علي النار وتستني حوالي علي الاقل 30 دقيقه ...ينفع بقا انك بعد 3 دقائق تطلع اللحمه وتقول انها بايظه وترميها في الزباله .....انت رمتها لانك ما استنتشي عليها وما انتظرتش لحد ما تستوي. اى حاجه فى الدنيا كده لازم تاخد وقتها متستعجلش و ما تملش أبداً و حاول تستغل الوقت دا تطوير نفسك باستمرار

- خامس نصيحه اتعلم من الناجحين

    النجاح في اي حاجه ما بيجيش من يوم وليله , النجاح بيكون نتيجه تجربه طويله مريره ومشاكل وضغط مستمر , فعشان تجنب نفسك المشاكل والضغط دا , حاول تتعلم من الناجحين في المجال اللي انت بتفكر تدخله , تواصل معاهم واسألهم واستفسر منهم عن كل حاجه , ولو هما من المشاهير زي ستيف جوبز او مارك زاكربرج فبيكون لهم فيديوهات بيحكوا فيها عن تجاربهم, وحاول تستفيد قدر الامكان من قصص نجاحهم. 


النجاح في الـ Freelncing محتاج إنك تركز وتتخصص في مجال معين لان أغلب اللي بيشتغلوا Freelncer  بيكون عندهم أكتر من مهارة. مثلا الـWeb developer  ممكن يكون شاطر في الـprogramming  و ممكن يكون كمان اشتغل في تصميم الجرافيك من ناحية و عنده هواية الكتابة من ناحية تانية .. لو اشتغلت في كل اللى بتعرف تعمله مرة واحدة هتشتغل أكتر و طبعا كل ما الشغل زاد معناه دخل أكبر. بس الموضوع ده مش بينفع للكل لان بعد شوية وقت المعاناة بتبدأ عشان في النهاية هتوصل لمرحلة تشتت ذهني وعدم تركيز في كل المجالات اللى بتتقنها، ونسبة كبيرة من الأعمال اللي نجحت في الأول و بعدين فشلت كان سببها الإفراط و التوسع في مجالات كتير. احسن حل انك تقارن بين كل المجالات اللى بتحبها و حدد مجهودك الأساسي المفروض يتركز في أي مجال أكتر من التاني، المؤشر اللى ممكن يحدد لك تختار أي مجال فيهم هو أي واحد فيهم بيعمل فلوس أكتر من التاني و بالتالي هيكون عندك سبب منطقي يخليك تكمل في مجال ما أكتر من غيره، و لو أكتر من مجال بيدخلوا دخل كويس فمش منطقي أبدا انك تسيب أي مجال منهم في سبيل التركيز في مجال واحد و عدم التشتيتت، ممكن في الحالة دي تشغل معاك ناس تانية شاطرة في المجالات دي و بكده تبقى وسعت شغلك و في نفس الوقت ركزت مجهودك لمجال واحد رئيسي و مضيعتش فرصة الدخل اللى جايلك من طرق تانية.


نيجى بقي لأكبر المشاكل اللى بتواجه الـ freelancers هى ضياع وعدم تنظيم الوقت، خصوصا لو شغلك بيكون على الكمبيوتر والنت.. طيب والحل؟!علشان تخرج برة الدايرة دى لازم تلزم نفسك بجدول زمنى محدد كل يوم، وفى وقت الشغل تقفل كل اللى ممكن يشغلك، و لو شغلك مش محتاج نت تقدر تفصله. و فى حالة التزامك بالجدول تكافىء نفسك بوقت راحة محدد تعمل فيه حاجه بتحبها، وبكده فى كل مرة هتستسلم فيها وتخرج عن الجدول هتلاقى نفسك بتتعاقب تلقائيا بحرمانك من الراحة و المكافأة اليومية.. و مع الوقت التزامك بالجدول الزمنى يتحول لعادة. و فيه مشكلة تانية ممكن تواجهك هي انك بعد تسليم الشغل المطلوب منك أفتكرت ان فى أجزاء نسيت تحطها..أو نسيت تشتغل عليها؟ و ترجع تشتغل على المشروع من تانى..و يضيع منك وقت ومجهود ، طيب و الحل؟؟ انك قبل ما تبدأ تشتغل أكتب خطة للمشروع اللى هتشتغل عليه فيها كل المطلوب منك، و ضيف عليهم أفكارك و قسم الخطة فى شكل خطوات 

.

لو عايز تعرف اكتر دى شويه لينكات هتفيدك:


شرح لموقع خمسات

شرح موقع فايفر

محاضرات مهندسة سمر صبحى

مجموعة محاضرات عن الفريه لانسج والتعامل مع المواقع وسحب الفلوس من هنا

خليك حبشتكانى


ايه هو الــ MATLAB

ايه هو الــ MATLAB


كلمة MATLAB جت اصلا كاختصار لــ MATrix LABoratory و هى High level language و بتستخدم فى الغالب عشان تحل الحسابات التقنيه لانها بتحل المسائل الحسابية و بتطلع النتائج على شكل رسومات Graphs و على فكره ممكن تكتب بيها البرامج بمسويات برمجيه مختلفه Low level  أو High level language و كل ده فى بيئة عمل سهلة الاستخدام
طبعا هتقولى يعنى هو بس بيستخدم فى نوع برامج عامله ازاى خليك مركز معايا الــ MATLAB  ليه استخدمات كتير زى:
Math and Computation, Algorithm Development, Data Acquisition, Modeling, Simulink, and Prototyping, Data Analysis, Exploration, and Visualization, Application Development
السيستم بتاع الــ MATLAB عبارة عن نظام تفاعلى بيتعامل مع مدخلات البرنامج على شكل مصفوفات و مش بتحتاج لتعريفها او تحديد ابعادها و الطريقه دى بتسمح لنا بحل مسائل كتير و مشاكل تقنية و كمان ممكن نكتب برامج غير تفاعلية زى برامج لغه الـ ( C ) أو لغة الـ ( Fortran ) و في الإصدارات الجديدة من MATLAB بقي ممكن نكتب و نستخدم مكتبات لغات الـ ( C ) و الـ ( C++ ) .و كمان الــ MATLAB  بيميزه انه بيحتوى على برامج و أدوات خاصة لحل مشكلات و مسائل تقنية خاصةو الحاجات دى موجودة فيحاجه اسمهاToolbox  و هى عباره عن دوال جاهزه و مكتبات موجوده جوه البرنامج عشان تحل مشاكل و مسائل تقنية خاصة زى :
Fuzzy Logic, Neural Networks, Signal Processing, Control Systems, etc..
 

كده انا قولتلك فكرة سريعه عن البرنامج و اخر حاجه لو عايز تبدأ تتعلمه يا سيدى
 

ده كورس من MIT Courseware  تقدر تبدأ بيه: https://goo.gl/HYSpja
و ده كورس لدكتور سيف الدين خالد فطين لاساسيات البرمجه بالــ MATLAB تقدر تشوفه من هنا: https://goo.gl/dXLVaO

و ده كورس اساسيات تانى من أكاديمية الدارين:  https://goo.gl/YMSpbt
و ده كورس بيشرح اساسيات الــ
Simulink: https://goo.gl/ufrRc1
خليك حبشتكانى

ازاى تبقي مبرمج فاشل ؟

لو عايز تبقي مبرمج فاشل تعال معانا و احنا هنحطك على الطريق الصح للفشل


الخطوة الأولى عشان تبقي مبرمج فاشل

اتعلم اكتر من لغة فى نفس الوقت عشان يبقى اسمك مبرمج جامد وعارف لغات كتير و لو انت متعلم لغة معينة كفاية عليك اوي اللى انت متعمله متحاولش تطور نفسك وتعرف الجديد

و بكده انت اخدت اول خطوة فى طريقك للفشل 

شكلك لسه مصر تكمل فى الفشل ماشي يا سيدى

الخطوة الثانية عشان تبقي مبرمج فاشل

جيب كتب كتييير و فيديوهات اكتر و تقعد تقرأ و تسمع كتير على اد ماتقدر من غير تطبيقو اى حاجة تقرأ عنها لمدة خمس دقايق اكتبها فى الـــ CV على طول و اكتب إنك محترف فيها

عاجبني اصرارك و هكملك اهووووو

الخطوة الثالثة عشان تبقي مبرمج فاشل

اوعى تنقل معلوماتك لغيرك عشان محدش يتفوق عليك و دايما قارن نفسك بغيرك و حاول تحاربه عشان ميبقاش ناجح اكتر منك

مادام وصلت لهنا بقي اكملك و امرى لله

الخطوة الرابعه و الاهم من كل اللي فات

اى مشروع يجيلك اقبله على طول من غير ما تفكر بس نسيت أقلك فكر فى الفلوس أولا و أخيرا و لما يجيلك مشروع هياخد شهر شغل اقعد ضيع تلات اسابيع واشتغل فى اخر اسبوع 

و بكده انا حطيتك على اول طريق الفشل كمبرمج

و ربنا يقدرنا على عمل الخير






حاسبات يعنى برمجه؟؟؟

حاسبات يعنى برمجه 


هصدمك و اقولك ان الكلام ده مش صح 

طبعا لو قلنا السوق المصري هنقول الفكرة العظمى ان حاسبات بتخرج مبرمج سواء Web او Mobile او Desktop Application طبعا دول لو اتخصصت فيهم هتلاقى شغل كتير بس بصراحه انت مش بتتعب و تتعلم 4 سنين فى الكليه عشان في الاخر تشتغل مبرمج بتستخدم لغة برمجة واحدة بعدين ايه الفرق بينك و بين اي واحد واخد كورس في اللغة دي و خلاص ؟
البرمجة جزء كبير من حاسبات لكن هى فى الاخر وسيله مش الهدف الحقيقي الاصل في حاسبات انك بتحل مشاكل باستخدام الكمبيوتر زى مشاكل ذكاء اصطناعي – شبكات – انظمة متوازية – محاكاة - خوارزميات و غيرها و هنا بتستخدم لغة البرمجة عشان تتواصل مع الكمبيوتر و تتكلم معاه و تخليه يحل المشكلة دي يعني لغة البرمجة اداة مش علم و عشان نحل مشكلة في مجال من دول مش لازم تكون فاهم المجال نفسه الاول هنا بقى ييجي دور الكلية انك بتدرس التخصصات دي جوة الكلية كعلوم عشان تفهمها في حد ذاتها بطريقة مطلقة و بعدين لما تيجي تطبقها على الكمبيوتر تستخدم لغة برمجة .. اي لغة برمجة بقى مش مشكلة .. المهم انك فهمت العلم نفسه و فهمت انت عايز تعمل ايهفي كل المشاكل انت هتكتب نفس الكود و الكود هينفذ نفس الخطوات .. الفرق بس هيكون في طريقة كتابة اللغة نفسها .. يعني مثلا طريقة كتابة الكود على لغة c++ غير طريقة كتابته على Java بس النتيجه فى الاخر واحده

و دا الفرق بين خريج كمبيوتر و بين اللي واخد كورس

دا يعرف علم .. لكن دا يعرف اداة او وسيله


هو الكورس ده بناخد منه شهادة معتمدة؟

هو الكورس ده بناخد منه شهادة معتمدة؟


طبعا ده أول سؤال بيتسأل من ناس كتير أول ما يشوف كورس و يعجبه 

عايز اقولك انك مش محتاجها فى حاجة خالص 

تخيل انك مكان صاحب الشركة كده هتستفاد ايه من موظف جايبلك شهادات كتير (شوال ورق) لو مكنش بيعرف يطبق اللى مكتوب فيها 
تخيل معايا انك حضرت كويس " مهارات التواصل مع الاخرين ومعاك شهادة معتمدة و قدمت على شغل و دخلت الانترفيو المدير بيسألك هتعمل ايه لو العميل قالك كلام محرج قدام الناس ؟ 
رحت متعصب و قايله هضربه عشان يتعلم الادب
انت كده اثبتت ان الشهاده مش مهمه لان ببساطه معرفتش تطبق اللي اتعلمته فى الكورس
للاسف أكتر المراكز التدريبية بتعتمد على موضوع الشهادات ععشان ييحقق منها فلوس ويستغل قلة الوعى عند بعض الناس ويرجع يقول لان العميل عايز كدا على الرغم انه كـ مركز تدريب مهم يوضح للعميل كل حاجة قبل الاشتراك فى الكورسات اللى بيقدمها .
للعلم مافيش حاجة اسمها شهادة معتمدة لكورس بـ 300 او 500 جنيه لان الاعتماد مكلف جدا واقل اعتماد فى مصر هو شهادة ICDL غير كدا بقى كل الاعتمادات فى الكورسات المتخصصة بفلوس كتير
ابعد عن الكورسات اللى يقولك فيها ده اعتماد جامعة القاهرة وجامعة كامبردج وحاجات تانية كتير كل دى اعتمادات غير صحيحة علميا 

احب أقولك:
* احضر كورس علشان تتعلم مش علشان تاخد شهادة
* الشهادة مش هى اللى هتشغلك انما خبرتك ومهاراتك 
* النصب كتير حاول تسأل وتعرف قبل ما تدبس 
* الكورس مش بس انك تحضر اهم حاجة انك تطبق اللى اتعلمته
* الاعتماد الحقيقى فى خبرتك 
* ساعد غيرك يعرف يعنى ايه شهادة معتمده بدون ما تفضل تخبط فى المراكز اللى ممكن تكون مبتعملش كدا وعايزة تقدم علم حقيقى
* قبل ما تطلب الشهادة المعتمدة اسألك نفسك هتعمل بيها ايه ؟