06 - سلسلة تبسيط البرمجة - البرمجة وصرامة اللغة

السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم

في معرض سؤال على الدرس الثالث وهذا نصه :

"أنا فهمت لغات البرمجة هي مثل العربي واللغات الأجنبية الأخرى مثلاً

هل من الضروري المبرمج يكون حافظ وفاهم كل هاللغات أم أن هناك اختصاص بالبرمجة ؟؟؟"

أقول مجيباً :

إن الشخص هو الذي يختار اللغة التي تخص المجال الذي يريد أن يعمل به ثم يتعلمه

فمنهم من يتقن لغة ومنهم من يتقن لغتين ومنهم من يتقن لغات كثيرة

يعني مثل اللغات الحية

منهم من لا يعرف إلى العربية

ومنهم من يعرف الإنجليزية

ومن يسافر إلى فرنسا للدراسة يضطر لتعلم الفرنسية

ومن يذهب للصين للتجارة يتعلم الصينية

أما إن لم يكن المرء مضطرا فلن يتعلم لأنه ليس بحاجة

وسمعت مرة عن شخص كان يعمل في جروب سياحي من خلال احتكاكه بجنسيات مختلفة ولكون لديه موهبة تعلم اللغات استطاع أن يتواصل معهم من خلال 15 لغة مختلفة

والحقيقة أن الحاجة للغة هي التي تفرض تعلمها وأما إتقانها لا يكون بالحفظ وإنما بالمراس والتدرب وكثرة الاستخدام

يعني تكون مكتسبة مع الوقت

وعلى كل حال تعلم لغات البرمجة أسهل بمئة مرة من تعلم لغة حية ولو كانت بسيطة

فمثلا لغة مثل العربية تحوي عشرات الآلاف من الكلمات من خلال تركيب الأحرف المختلفة

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

الأحرف هي إنجليزية في كل لغات البرمجة

لا تقلقوا من مسألة اللغات فمن أتقن التفكير البرمجي فكل اللغات سهلة

فلو أن شخصا يتقن عدة لغات حية وكانت لديه موهبة الشعر يستطيع وقتها نظم قصائد بأي من تلك اللغات ومن كان يفهم تلك اللغات حينها سيلمس الحس الفني الشعري في تلك القصائد

البرمجة منطقها واحد ووجود عدة لغات تفرضها اختلاف الغايات فبرنامج للتصميم يختلف عن برنامج للحسابات

وموقع للفيديو يختلف عن موقع لسوق إلكتروني

وسكربت للماكس يختلف عن سكربت للإليستريتور

علما أن هناك لغات قد تغطي عدة مجالات

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

وكذلك من أراد برمجة روبوت طبي لا يكتبه بالفيجوال بيسيك بل بالسي أو الأسمبلي

إلا أن جوهر الفرق بين لغات البرمجة واللغات الحية هي أن لغات البرمجة تُبنى على الصرامة والدقة ولا تحتمل التأويل وأي تسلسل للتعابير البرمجية يجب أن يكون لها ترجمة وحيدة في لغة الآلة وذلك للحصول على المطلوب بدقة متناهية

ودعونا نضرب مثالا لتوضيح هذه النقطة

عندما يتم توظيف فراش (Office Boy) للشركة يقوم المدير بإعطاءه تعليمات توضح ما يحبه ويرغب به وكيف يجب أن يفهم كلامه

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

وأما قهوتي فهي سادة وثقيلة (ثلاثة ملاعق) وأريدها بالفنجان البني

ونلاحظ مع مرور الأيام أنه في الصباح عندما يأتي المدير فيستقبله الفراش فيقول له المدير "قهوة" كلمة واحدة فقط

والفعل المتوقع من الفراش أن يذهب للمطبخ ويعمل قهوة ويضع ثلاثة ملاعق ولايضع سكر ثم يسكبها في الفنجان البني ثم يحضرها للمدير

وهذا الفعل يجب أن يكون دائما وفي كل مرة يطلب المدير قهوة من خلال مناداته للفراش وقول كلمة "قهوة" فقط لا يزيد ولا ينقص

ونفس الأمر لو قال "شاي"

وقد يطلب المدير من الفراش أن ينادي له موظفا اسمه خالد بشكل متكرر، فيعلم أنه عندما يقول له المدير "خالد" فقط، يذهب وينادي خالد.

ولو كان هناك أكثر من خالد فيقوم المدير مسبقا بإضافة كلمة أخرى تحدد خالد آخر حتى لا يكون هناك لبس

كأن يقول له خالد المبيعات لأن خالد لوحدها كانت لخالد المحاسب وذلك لطلبه المتكرر

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

تخيلوا المدير ولأول مرة يقول للفراش "عصير" ثم يسكت حينها سيقف الفراش حائرا لأنه لا يعلم أي عصير يريد وهل يريده مركز أم عادي

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

وأما المبرمج فهو يبدع بإنشاء برنامجه من خلال استخدام التراكيب بتراتيب مختلفة لتؤدي عمل ما أو تنتج تطبيق ما يكون له فائدة أو هدف معين

تماما مثل الأدباء والشعراء والكتاب

فاللغة العربية أحرفها هي هي والكلمات هي هي

ويأتي دور الناظم ليشكل التراتيب المختلفة للكلمات لتشكيل تراكيب تعطي معاني مبدعة

ومع ذلك منذ القدماء وحتى الآن نجد هناك من ينظم ويبدع بأشياء لم يسبق أن وجد مثلها من قبل

حتى ألقاكم الحلقة المقبلة أستودعكم الله