يوم الهندسة المصري .. نقطة تحول في حياة الكثيرين
لا أدري من أين أبدأ الموضوع .. فمازلت لم أخرج بعد من الحالة التي تنتاب المشاركين في أكبر مؤتمر للمهندسين و طلبة الهندسة في مصر , يوم الهندسة المصري , بالرغم من أن قد مر على إنتهاءه أكثر من ثلاثة أيام. تلك الحالة التي تجمع بين الفرح بما قدمناه و الأمل و التفاؤل بما هو قادم و الوطنية و الحماس و الحنين إلى اللحظات التي قضيناها على مر الأيام الثلاث !
كنت قد دعيت لإلقاء كلمة في إحدى المحاضرات التي أقيمت في يوم الهندسة المصري حول تاريخ هذا المؤتمر و قصص نجاح المشاركين فيه و التي تكلم فيها العديد من الذين شاركوا في الأعوام السابقة , و قد كنت أمثل المشاركين الذين لم يتخرجوا بعد. و لم يكن من العناء أن أستعد أو أحضر لتلك الكلمة و أتذكر ما الذي إستفدته من مشاركتي كعارض لمشروع لعامين متتاليين في يوم الهندسة المصري , بل حتى إنني قد نسيت بعض النقاط المهمة من كثرة الأشياء التي إستفدت بها. و سأذكر منها ما أتذكره الآن حتى أوصل بعض الرسائل , قد يراها البعض صغيرة أو تافهة , غير أنها تمثل نقطة تحول كبيرة في حياة الكثيرين.
أولاً ..
بحكم بعض المفاهيم الخاطئة المنتشرة في المجتمع , وضع البعض صورة نمطية لطلبة الجامعات تحولت إلى حقيقة بعد أن قد دفنت الصورة الحقيقية تحت أوهام المتشائمين. فقد إعتقد البعض بأن طالب البكالريوس عاجز عن أن يعلم نفسه بنفسه و عاجز عن أن يكتشف طريقه وحده و يقوده أساتذته إلى طريقه كالأعمى حتى التخرج. و بهذه النظرة الإستصغارية كثيراً ما يتعثر الطلاب عندما يبدأون في مشروع تخرجهم و يتعثر الخريجين في بداية حياتهم العملية إذ أنهم لم يعتادوا على العمل الجاد المتواصل و الإعتماد على النفس في تحصيل المعلومات و حل مشاكلهم بأنفسهم رغم أن الفرصة كانت أمامهم لسنوات لكنهم لم ينتهزوها. ففي أثناء العام الدراسي إذا كلف الطلبة بعمل مشروع صغير يتعلق بإحدى المواد الدراسية لا يجد الطلبة الظروف الكافية التي تجعلهم يستفيدون من هذا الأمر. ففي أغلب الأحيان لا تشكل المشاريع العملية نسبة كبيرة في تقييم المادة و ينشغل الطلبة بالمذاكرة للإمتحانات إذ أنه في أغلب الأحيان يعد التفرغ للعمل في المشروع تضييعاً للوقت و إنشغالاً عن المذاكرة ! .. فيلجأ الطلبة إلى الإنتهاء سريعاً من المشروع العملي عن طريق تقديم شئ تقليدي مكرر خالي من الإبداع و الإبتكار بل و قد يكون مليئ بالأخطاء التي لم يجد الطلبة وقتاً ولا تشجيعاً على إصلاحها نظراً لإن أستاذ المادة سيراعي ظروفهم. و في مثل هذه الظروف يتم قتل الإبداع بداخل كل من أراد أن يبدع و يبتكر شيئاً في مشروعه فضلاً عن أنه سيحارب من قبل بقية الطلاب الذين من مصلحتهم أن تكون المشاريع كلها متساوية حتى يراعي الأستاذ ظروفهم ! كما سيحارب من قبل مدعي النصح و الواقعية الذين يرون أن ما سيقوم به تضييعاً للوقت في ما لا يفيد !
و كحل لتلك المشكلة يلجأ بعض الناجين من تلك الكارثة إلى أن يعلموا أنفسهم شيئاً و لو بسيطاً في فترة الأجازة الصيفية. غير أن هذا الأمر عادةً ما لا ينجح نظراً لإن الأغلبية تفقد حماسها بعد فترة خصوصاً عندما لا تجد ما يحفزها على الإستمرار. خصوصاً و أن أغلبية المحيطين به لن يشجعوه على هذا الأمر.
و قد كان الحل الأمثل لهذا الأمر – بالنسبة لي و للكثيرين غيري – هو أن أشارك كعارض لمشروع في يوم الهندسة المصري. ففي أثناء فترة تنفيذ المشروع لن أجد ما يدفعني لإهمال النواحي الإبداعية في المشروع بل سأجد ما يدفعني لها لأنني أريد أن أقدم أفضل ما عندي. فلم يعد هناك أي مبرر يجعلني أهمل بعض الأشياء و أتغافل عن بعض الأخطاء كما قد يحدث في أثناء الفترة الدراسية. و في ذات الوقت لن أصاب بالملل و أستشعر عدم جدوى ما أفعله أو أتكاسل و أتباطأ و ذلك لأن هناك موعد يجب أن أكون قد إنتهيت من كل شئ قبله و الأمر ليس مفتوحاً.
و قد يتسائل البعض كيف يقوم بعمل منتج أو مشروع و هو قليل الخبرة و ليس عنده أفكار ؟؟ .. بالنسبة للأفكار فهذا أسهل ما في الأمر. فلا أعتقد بأن هناك شخص لا يواجه أي مشاكل في حياته. إن كان لا يواجه آية مشاكل هندسية فهذا جيد فليعش سعيداً ! و إن كان يواجه بعض المشاكل فليقم بحلها ! و إن كان قليل الخبرة فهذه ليست مشكلة كبيرة. بل هي فرصة جيدة لكي يتعلم و يعتمد على نفسه في التعلم. و أكثر المعلومات تذكراً عند الطلبة هي المعلومات التي حصل عليها بعد أن شعر بأهميتها و حاجته إليها.
ثانياً ..
يعد يوم الهندسة المصري تدريباً عملياً على فن التسويق و طرح منتج جديد أو فكرة جديدة. فالعارضين يتحدثون خلال الثلاثة أيام عن مشروعهم ربما مئات المرات. و في كل مرة يكتشفون من خلال إنطباع و رد فعل الزائرين شيئاً جديداً كان يمكنه أن يجعل طريقة عرضهم للمشروع أفضل و أوضح و أكثر لفتاً لإنتباه المستمعين و ربما أقل في عدد الكلمات. فربما يبدأ الواحد منهم في اليوم الأول بعرض المشروع خلال خمسة دقائق و ينتهي به الأمر في اليوم الأخير بأنه قد إستطاع أن يلخص المشروع في دقيقة واحدة و بطريقة أكثر ترتيباً , بغض النظر عن كون العارضين يفقدون أصواتهم منذ اليوم الثاني ! و بالطبع فهذا يساعدهم بشكل كبير على التدرب على كيفية تقديم أنفسهم في المقابلات الوظيفية Job Interviews.
ثالثاً ..
تعلمت من مشاركتي في يوم الهندسة المصري أن أكسر حاجز الخوف و الرهبة من تقديم نفسي و أعمالي إلى الناس. ربما يصاب البعض ببعض الرهبة و التشكك في ذاته على سبيل المثال إذا ما ألقى محاضرة أو كتب مقالاً. فيشعر أحياناً بالخجل من نفسه و من ما قدمه و يتمنى أن لم يكن قد ألقى المحاضرة أو كتب المقال. و بالرغم من ذلك فإن القراء و المستمعين لن يشعروا بهذا الأمر و بل و قد تعجبهم المحاضرة أو المقالة. و هذا بسبب أن هذا الخوف ليس إلا وهم بداخلنا و لا وجود له على أرض الواقع. نفس الأمر يتكرر مع المشاريع التي نعرضها في يوم الهندسة المصري. ففي البداية قد يستصغر الواحد منا مشروعه – خصوصاً إذا كان مشروعه ليس بمشروع تخرج – و قد يشعر بالخجل من عرضه بجانب بقية المشاريع. غير أننا شيئاً فشيئاً سيزول عندنا هذا الشعور بعد أن نكتشف حقيقة أن هذه المخاوف لا توجد إلا بداخلنا ولا وجود لها على أرض الواقع.
رابعاً ..
يعد يوم الهندسة المصري مدرسة عملية للتربية الوطنية .. فلم تقدم ألاف المحاضرات و الخطب و لم تجدي دراسة “مادة التربية الوطنية” شيئاً يذكر بالمقارنة مع ما تعلمته من يوم الهندسة المصري. فإجتماع العديد من الطلاب من مختلف المحافظات. و ربما تجد بعض الخلافات السياسية إلى جانب الجغرافية. غير أنهم تجمعهم نفس المشكلات في التعليم و سوق العمل. تربطهم نفس الأهداف و نفس الأحلام. يعملون معاً على أرضية واحدة. يشجعون بعضهم بعضاً على المواصلة نحو هدفهم و يخدمون بعضهم بعضاً بلا مقابل.
ربما يكون هناك المزيد من الأشياء التي لا أتذكرها الآن .. و لعل الكثيرين لديهم العديد من الإستفادات التي خرجوا بها. فهكذا تكون الأعمال التي تجمع شمل الوطن. مخطئ من يظن بأننا متفرقين و كسالى. نحتاج فقط إلى أن نتجمع على حلم واحد و على أرضية مشتركة. و الآن أترككم مع الفيديو الختامي ليوم الهندسة المصري العاشر لعام 2011.
Code And Play – Version 0.1 Beta
منذ عدة شهور كنت ألعب إحدى الألعاب الإستراتيجية .. و لفت نظري (أو بمعنى أصح كان يضايقني) أن الفريق الذي أتحكم به لا أستطيع السيطرة عليه بشكل كامل .. فعلى سبيل المثال عندما كان يحدث هجوم من الفريق الأخر (و الذي يتحكم فيه الذكاء الأصطناعي) كان علي أن أقوم بتوجيه كل جندي إلى مساره بنفسي لإني إذا تركته سيتحكم الحاسب به أوتوماتيكياً و ربما سار في طريق أخر يفسد الخطة و يمكن أن يهرب !! .. المهم أن مسألة التحكم الكامل في اللعبة بدقة كان هو ما أريده و لكنه لا يوجد بالشكل الذي ينبغي في الألعاب خاصة في الألعاب الإستراتيجية ..
حينها خطرت ببالي فكرة تحل هذا المشكلة و هي أن اللاعب يقوم بكتابة أوامر و أكواد تصف كيف ستتصرف كائنات اللعبة و أثناء اللعبة يتم تنفيذ تلك الأوامر .. بدأت في تنفيذ لعبة بهذا المفهوم الذي ربما يكون جديداً أو على الأقل غير معروف في عالم الألعاب .. و بعد أن قمت بإستشارة إحدى الدكاترة في الجامعة عدلت المسار قليلاً .. و بعد بضعة أسابيع من العمل المتواصل خرج الإصدار التجريبي الأول إلى النور !
هذا الإصدار ليس لعبة بل هو برنامج يتيح للاعبين أن يقوموا بكتابة أكوادهم و إرسالها إلى خادم يقوم بعمل مباريات بين تلك الأكواد و تسجيل النتائج و هكذا .. إنظر إلى هذه الصورة :
هذه أول لعبة من هذا النوع . Read more…
مدخل إلى محاكاة تصميمات الهاردوير
بدأنا في الدرس السابق بعمل مثال بسيط بلغة الـ VHDL و هو وحدة المعالجة و المنطق Arithmetic Logic Unit – ALU و قد قمنا بإستعراض بعض الأشياء التي تظهر في التقرير الذي يخرجه لنا برنامج الـ Xilinx ISE Webpack عن التصميم الذي قمنا به من مساحة و التأخير الذي يستغرقه و الطاقة المستهلكة و غير ذلك .. و قد أجلنا الكلام عن محاكاة التصميم إلى هذا الدرس
تخيل أنك بيدك الآن دائرة تكاملية Integrated Circuit تقوم بإختبارها .. ستقوم أولاً بتوصيلها مثلاً على لوحة إختبار Bread Board .. ربما تقوم بتوصيل بعض الدوائر التكاملية الأخرى أو لا تقوم بذلك حسب الإختبار الذي تريده .. ربما نجد معك أيضاً أثناء الإختبار جهاز راسم الإشارات Oscilloscope لتشاهد الإشارات الداخلة و الخارجة .. و ربما يكون بجانبك ورقة تكتب فيها ملاحظاتك و قياساتك .. و سوف نسمي هذا كله مقعد الإختبار Test Bench .. تذكر أننا في الدرس الأول و الثاني شددنا على مفهوم أن اللغات الوصفية و التي منها لغة الـ VHDL لا تخاطب الهاردوير و إنما تخاطب الذي سيقوم بتصميم الهاردوير .. و بما أننا في هذه المرة لن نقوم بتصميم الهاردوير و إنما سنقوم بإختبار الهاردوير .. فسوف نحتاج أيضاً إلى لغة وصفية تصف للرجل الجالس على مقعد الإختبار Test Bench ماذا سيفعل بالضبط لكي يقوم بإختباره .. فسوف نصف له كيف سنقوم بتركيب الدوائر التكاملية التي صممناها (مثل وحدة المعالجة و المنطق في الدرس السابق) و نصف له أين يقوم بتوصيلها و هل سيقوم بتوصيل بعض الدوائر الأخرى أم لا و هكذا .. ثم نصف له بعد ذلك خطوات التجربة .. هل سيقوم مثلاً بإدخال بعض المدخلات لوحدة المعالجة و المنطق ثم يقوم بإختبار هل النتيجة ستخرج كما ينبغي أم لا و ما هي الأشياء التي سوف يجربها و كيف سيتصرف عند رؤية أي مخرج من المخرجات و هكذا .. في قائمة Hierarchy التي في أيمن الشاشة قم بتحديد الملف الذي وضعت فيه كود وحدة المعالجة و المنطق ALU و إضغط عليه بالزر الأيمن و إختر New Source ثم قم بتحديد VHDL TestBench :
و قم بتسمية الملف الجديد بأي شئ ثم إضغط Next حيث ستقوم بإختيار الوحدة التي تريد أن تقوم بعمل محاكاة و إختبار لها .. Read more…
المثال العملي 1 : وحدة المعالجة و المنطق
منذ فترة قمنا بوضع بعض الدروس حول تصميم الهاردوير بإستخدام لغة الـVHDL .. و الآن لنعد لإستكمالها ..
تحدثنا في الدروس السابقة عن تعريف لغة الـVHDL و لماذا نحتاج إليها و كيف ستفيدنا في تصميم الهاردوير .. و هذه المرة سنقوم بكتابة مثال عملي بتلك اللغة .. سيكون الكلام هذه المرة عن وحدة المعالجة و المنطق المعروفة بالـALU و التي هي إختصار لـArithmetic Logic Unit .. و هي وحدة من أهم الوحدات في المعالج Processor .. و هي التي تقوم بعمليات الجمع و الطرح و الضرب و سائر العمليات الرياضية و العمليات المنطقية .. هذه الوحدة لها مدخلان يكونان هما المدخلان الذان نريد أن نقوم بعمل العملية الرياضية أو المنطقية عليهما .. و هناك مخرج من المخرجات به ناتج العملية .. فمثلاً قد يكون الناتج هو حاصل ضرب المدخلين أو مجموعهما أو الفرق بينهما و غير ذلك من العمليات .. و هناك مدخل ثالث يحدد لنا ما هي العملية التي نريد .. فعلى سبيل المثال إذا كان هذا المدخل بقيمة 000 فهذا معناه أنه سيقوم بعملية جمع .. و إذا كان 001 فهذا معناه أنه سيقوم بعملية طرح و غير ذلك بحسب الذي نريد .. و الآن إنظر إلى فقرة الـVHDL التالية :
entity ALU is Port (
A : in STD_LOGIC_VECTOR (31 downto 0);
B : in STD_LOGIC_VECTOR (31 downto 0);
ALU_OUT : out STD_LOGIC_VECTOR (31 downto 0);
Control : in STD_LOGIC_VECTOR (2 downto 0));
end ALU;
هنا قمنا بتعريف الوحدة بمداخلها و مخارجها .. هناك مدخلان بطول 32bits و هما A و B و هما المدخلان الذان سنقوم بعمل العملية الرياضية أو المنطقية عليهما .. و المخرج ALU_OUT بنفس الطول أيضاً .. و هناك المدخل Control الذي سيقوم بتحديد العملية التي سنقوم بها .. و طول هذا المدخل يتم تحديده بناءاً على عدد العمليات التي ستقوم وحدة المعالجة و المنطق بها .. فعلى سبيل المثال إذا كانت ستقوم بـعملياتان فقط فيكفي أن يكون الـControl بطول بت واحد .. و إذا كانت ستقوم بأكثر من عمليتين إلى أربع عمليات فسيكون طول الـControl بـ2bits إذ أن الإحتمالات هي 00 و 01 و 10 و 11 فقط .. و هكذا .. و في هذه الحالة سنقول مثلاً أننا نريد أن نقوم بعمل ثمانية عمليات فقط و لهذا جعلنا طول الـControl بـ3bits .. بالطبع فإن وحدة المعالجة و المنطق ليست هذا فقط .. بل يوجد بها في الواقع أكثر من ذلك و لكننا سنكتفي بهذا للتبسيط ..
و بعد أن قمنا بتعريف الوحدة .. سنقوم الآن بتوصيف سلوكها الداخلي .. إنظر إلى الفقرة القادمة : Read more…
التعريف بـXilinx و لغة الـVHDL الوصفية للهاردوير
تحدثنا في السابق عن مفهوم اللغات الوصفية للهاردوير Hardware Description Languages (راجع مقدمة إلى اللغات الوصفية للهاردوير) .. و الآن ندخل إلى أول درس عملي سنقوم بتنفيذه عن طريق اللغات الوصفية للهاردوير .. و سنختار من بين اللغات الوصفية لغة الـVHDL .. و التي هي إختصار لكلمة VHSIC Hardware Description Language .. و أما VHSIC فتعني Very High Speed Integrated Circuit .. و يوجد غيرها الكثير من اللغات الوصفية كالـVerilog و غيرها ..
تذكر .. هدفنا الذي نريد أن نصل إليه هو أن نقوم بتصميم الدوائر الرقمية و الهاردوير بطريقة سهلة بدلاً من القيام بعمل جداول طويلة جداً قد تصل إلى المئات و الألاف من المعطيات .. و ذلك عن طريق اللغات الوصفية التي ستتحول بعد ذلك إلى دوائر رقمية .. و الذي سيقوم بتحويلها برنامج يشبه إلى حدٍ ما المترجم Compiler الذي سيتخدم في اللغات البرمجية ..
البرنامج الذي سوف نقوم بإستخدامه يسمى ISE WebPACK وهو من إنتاج شركة Xilinx و هي شركة ذات شهرة في هذا المجال ..
إدخل إلى هذا الرابط :
http://www.xilinx.com/support/download/index.htm
و قم بتحميل الإصدار الأخير .. و إنتبه إلى أن النسخة التي ستقوم بتنزيلها ستفوق الـ3 جيجا بايت .. و بعد أن تقوم بتثبيتها ستأخذ ما يزيد على الـ10 جيجا بايت ..
مقدمة إلى اللغات الوصفية للهاردوير
قانونٌ واحد جمع بين معظم التطورات في شتى مجالات الهندسة .. يمكن أن تلحظ سريان هذا القانون بسهولة في العديد من التطورات و الإختراعات .. يقول هذا القانون بأنك إذا وجدت عملاً روتينياً مكرراً يقوم به الإنسان بشكل متكرر و كانت التكنولوجيا التي عندك تسمح لك بأن تجعل الآلة تعمل هذا العمل بدلاً من الإنسان فقم بعمل تلك الآلة .. و إذا كانت التكونولوجيا التي عندك لا توفر لك هذا فقم بتطويرها حتى تصل بها إلى هذا المستوى
و إذا دققت النظر في معظم الأشياء – إن لم يكن كلها – ستجد أن هذه القاعدة تنطبق عليها .. فعلى سبيل المثال .. الموظف الذي يقوم بإدارة قواعد البيانات .. كان يحتفظ بالعديد من الدفاتر و الأوراق و يقوم بالبحث فيها و ترتيبها .. عندما زاد الأمر عن حده و وجدنا أننا بحاجة إلى العديد من الموظفين .. و لهذا الأمر تم عمل برامج إدارة قواعد البيانات و خوارزميات البحث Searching Algorithms إلى غير ذلك .. فليس الجديد أن توجد قواعد بيانات و إنما الجديد هو من الذي سيقوم بها .. هل الإنسان أم الآلة .. فالإنسان دائماً ما يمل من تكرار العمليات الروتينية التي لا تفكير فيها ولا إبداع و يميل أكثر إلى إعمال عقله و ليس إلى تعطيله .. و البحث وسط الأوراق عملية تعطل العقل و تجعل الإنسان مجرد آلة تعمل .. فلماذا لا نجعل الآلة تعمل هذا العمل من البداية .. و يدخل في هذا الأمر العديد من الأشياء مثل الروبوتات Robotics و الذكاء الإصطناعي Artificial Intelligence و الشبكات Networking و الإتصالات و غير ذلك ..
و لم يقتصر الأمر على تسهيل حياة المستخدم النهائي End User فحسب .. بل تعدى الأمر إلى المصممين أيضاً .. فبعض التصميمات تحتاج إلى العديد من المعادلات الرياضية المعقدة مما يجعلنا نحتاج إلى عمل بعض البرامج التي تقوم بحل المعادلات الرياضية و تحليلها .. فالمصمم هو الأخر يريد أن يستغل وقته في الإبداع و إستخراج أفضل الأفكار و ليس في حل معادلات رياضية روتينية تقليدية تحتاج إلى الوقت أكثر من إحتياجها إلى العقل .. و يدخل في هذا الأمر برامج تصميم الدوائر الإلكترونية و الكهربائية و برامج المحاكاة للأنظمة الكهربائية و الميكانيكية و أنظمة التحكم الآلي إلى غير ذلك ..
Ubuntu Linux 10.10 is Out Now !! Hurry Up
يومٍ لن يتكرر إلا بعد ألف عامٍ من الزمان .. إنه اليوم العاشر من الشهر العاشر (أكتوبر) في السنة العاشرة بعد الألفين .. أو كما أطلق عليه البعض يوم الـBinary إذ أنك إن كتبت هذا التاريخ بالأرقام فلن تخرج عن الواحد أو الصفر ..
على أي الأحوال كل هذا لا يهم الآن .. المهم أن شركة كانونيكال (و قلتدها بعض الشركات الآخرى) قامت بإصدار الإصدار العاشر فاصل العاشر من توزيعتها المعروفة أوبونتو لينوكس Ubuntu Linux 10.10 .. في العادة تقوم شركة كانونيكال Canonical بإصدار تلك التوزيعة Distribution كل ستة أشهر .. و جرى العرف على مر السنين أن يكون الإصدار في الشهر الرابع و يليه الإصدار الآخر في الشهر العاشر ثم الرابع و هكذا .. و كانت الإصدارات تخرج إلى النور في أخر خميس من الشهر .. غير أن في هذه المرة قاموا بإصداره في اليوم العاشر من الشهر حتى يتوافق رقم الإصدار 10.10 مع التاريخ 10.10.10 .. لا أدري كم كانت الساعة حينها إلا أنها بالقرب من العاشرة بتوقيت جرنيتش فربما كان في الساعة العاشرة بعد الثانية العاشرة من الدقيقة العاشرة و ربما كان بعد عشرة علامات من العلامة العشرية للثانية العاشرة على حسب ما يسعه عدد البتات Bits التي تمثل الرقم الكسري floating point .. دعونا من كل ذلك .. المهم أن الإصدار قد خرج ..
و هذا هو رابط التحميل
http://www.ubuntu.com/desktop/get-ubuntu/download


