الخميس، 10 مايو، 2012

كيف أحببت مجال بناء المترجمات compilers.

كيف أحببتُ مجال بناء المُتَرْجِمَات compilers

ما إن يعرف أحدهم مني أنني أحب و أَدرس مجال تصميم و بناء المترجمات compilers (كجزءٍ من عملية تصميم و بناء لغات البرمجة) حتي تظهر عليه الدهشة، و ربما السخرية من حماقة اختياري الذي لا يفتح بيتاً و لا يقيم أُوداَ.
و لكن السؤال الذي قد يفكر فيه البعض و أنوي الإجابه عنه هنا هو: كيف أحببت هذا المجال من الأصل ؟ و ما الذي شدني إليه من بين المجالات الحاسوبية شديدة الاتساع و التعدد و الاختلاف ؟
فالمجالات المشهورة في أوساط المطورين مثل: التعامل مع قواعد البيانات و إدارتها و برمجة مواقع الشبكات و متابعة أنظمتها، يمكن للمبتديء السماع عنها بسبب شهرتها الطاغية، و لا يحتاج الأمر منه إلا فتح الإنترنت أو حتي قراءة ركن الوظائف في الجرائد اليومية !
فماذا عن ذلك المجال الغريب الذي اخترته لنفسي عن حبٍ عميق ؟!


الحقيقة أن هناك أموراً كثيرةً زرعت في قلبي هذا الحب زرعاً، منها:
  • أن هذا المجال يُعد من أصول علم الحوسبة؛ فلغة البرمجة هي الأداة التي يُحّوِّل بها المبرمج أفكاره النظرية إلي واقعٍ فعلي، و كلما كانت تلك اللغة أقوي كلما أصبح باستطاعته التفرغ أكثر و أكثر في تطوير أفكاره و طرق حله للمشكلات.
    و قد شرحتُ من قبل أنني أحب دائماً تحصيل علوم الأصول في كل العلوم التي أدرسها، و لذلك أحسست أنني سأجد ذاتي في هذا المجال دون غيره.
  • حبي للاعتماد علي نفسي؛ فمبرمج المترجمات في نظري هو الشخص الوحيد الذي يمكنه أن يأخذ منك معالجاً بمفرده ثم يعيده إليك بعد عامٍ واحدٍ و معه مترجم compiler و نظام تشغيل و مكتبة تطوير لذلك المعالج :)
  • تعايشي مع المشروعات الحرة و المفتوحة المصدر التي بنسبةٍ كبيرة تكون متعلقةً بما يحتاجه المبرمجون في عملهم، من مترجماتٍ و مفسراتٍ و مكتباتٍ و بيئات تطوير متكاملة. و إعجابي الكبير برموز تلك المجتمعات بمختلف مشروعاتها. مما أثر فِيَّ بقوةٍ و جعلني أحس في عقلي الباطن أن هذا هو العلم الحقيقي و أن هذا هو سمت المبرمجين المتمرسين أصحاب الحل و العقد :)
  • واقعةٌ عمليةٌ حدثت معي أيام الدراسة الجامعية، حيث في باكالوريوس هندسة طلبت منا معيدةٌ في الكلية أن نكتب برنامجاً لمُحاكاة برنامج الماتلاب matlab، و كان المطلوب شيئاً بسيطاً: أن يتمكن المُحاكِي من تنفيذ العمليات الحسابية الأساسية، و التعرف علي أسماء المتغيرات و إسناد القيم لها، و استخدام تلك القيم فيما بعد في إجراء العمليات الحسابية.
    و كالعادة لأن الموضوع يتعلق بالبرمجة استولي علي تفكيري بشكلٍ كبير، فكنت أنهي مذاكرتي لأتفرغ للعمل عليه و تطويره رويداً رويداً، و نظراً ﻷني استخدمت لغة الـ#C و بيئة الـVisual Studio لكتابة البرنامج فقد كان الأمر ممتعاً بحق.
    و رغم أنني نفذت ما كان مطلوباً منا في أيامٍ قليلة إلا أنني لم أتوقف عن تطوير البرنامج، فأخذت أزيد من قدراته علي محاكاة الماتلاب و اكتشاف الأخطاء النحوية syntax errors لأوامر المستخدم !
    و لكن قدر الله عز و جل أن تدخل فترة امتحاناتٍ (أظنها كانت امتحانات أعمال سنة) فكففت مضطراً عن العمل علي تطوير البرنامج أكثر من تلك المرحلة، و لكن كان قد زرع في قلبي حب المجال بشكلٍ لا يمكن تجاهله أبداً. و بعدها قررت أنني لن أجد نفسي في الحقيقة إلا في هذا التخصص مهما كانت غرابته عند الناس.

لكن الأغرب أنني لم أدرس في الكلية أي شيءٍ يخص المترجمات !؛ لأن كليتنا تركز علي مجال التحكم control بكل أنواعه، لدرجة أن ما درسناه في مجال التحكم أكثر مما درسناه في البرمجة من حيث الكم و الكيف ! و رغم ذلك زهدت نفسي كل ما درسناه أيام الكلية و رغبت في ذلك المجال الغامض ذي المذاق الشهي.
و حينما بدأتُ في تحصيل علم بناء المترجمات بشكلٍ ذاتيٍ وجدتُ أنني كنت أسير علي دربٍ صحيحٍ في برنامج محاكي الماتلاب. صحيحٌ أن طريقة بنائي له كانت بدائيةً جداً و سيئةً للغاية، إلا أنني استطعت إدراك بعض المفاهيم التي لم أكن قد درستها من قبل مطلقاً، مما عزز في نفسي الثقة في تفكيري و أن بإمكاني أن أنجح في هذا المجال بقوةٍ بإذن الله تعالي.

هناك تعليقان (2):

  1. كانت مادة المترجمات هي من المواد التي تأسفت أنها لم تكن من ضمن المنهج المعد لنا "قسم نظم الكمبيوتر وتقنية المعلومات"، لكن تم إعطاءها لقسم "علوم الكمبيوتر". لكن ذلك لم يمنعني من عمل مترجم، أو مفسر صغير بإستخدام QBasic به متغير واحد من النوع الحقيقي، ويستطيع حساب التعابير الرياضية مثل:
    (12 * x) * (3 + y)

    ردحذف
  2. هو مجالٌ شائقٌ جداً رغم اتساعه الشديد و صعوبته، و ربما يكون من أهم ميزاته بالنسبة لي أنني لم أدرسه في الجامعة فلم يستطيعوا جعلي أعامله كمادةٍ دراسية :)

    ردحذف