إن أساس أجهزة الكمبيوتر وبرامجها هي لغات برمجة، وهي سطور غريبة المظهر من التعليمات البرمجية التي من المحتمل أن تجعل رأسك يؤلمك بمجرد النظر إليها. لكن ما هي لغات البرمجة وكيف تعمل؟
ما هي لغات البرمجة؟
باختصار، لغة البرمجة هي الطريقة التي “يتحدث” بها مبرمج الكمبيوتر إلى الجهاز. إذا كنت تعرف كيفية “التحدث” بإحدى هذه اللغات -ويوجد المئات منها- يمكنك إنشاء برنامج يمكنه أداء المهام.
يمكن أن تتراوح هذه اللغات من البسيط للغاية، مثل البرنامج النصي الذي ينقل ملفاً من مكان إلى آخر، إلى شديد التعقيد، مثل تقديم عالم ثلاثي الأبعاد في لعبة فيديو.
لغات البرمجة هي السبب في قيامنا بأشياء معقدة باستخدام أجهزة الكمبيوتر. في جوهرها، لا تزال أجهزة الكمبيوتر تعمل على نظام ثنائي -يُطلق عليه أيضاً لغة الآلة- وهو نظام تحدد فيه الأصفار والواحد ما يفعله الكمبيوتر وكيف يفعل ذلك.
إذا كان لا يزال يتعين علينا استخدام النظام الثنائي للبرمجة، فسيستغرق الأمر وقتاً طويلاً لإنشاء نص بسيط. من المحتمل ألا يتم إنشاء البرامج المتقدمة أبداً لأن الحصول على كل الواحدات والأصفار في نصها البرمجي سيتطلب جيشاً من الناس.
لغات البرمجة، على الرغم من صعوبة تعلمها واستخدامها، هي في جوهرها أجهزة موفرة للعمالة.
مستويات اللغة:
بشكل تقريبي، تنقسم لغات البرمجة إلى فئتين: لغات منخفضة المستوى وعالية المستوى. يطلق على اللغات منخفضة المستوى ذلك لأنها “قريبة” من الآلة، ويمكنها التحدث إليها مباشرة. يتضمن ذلك لغة الآلة ولغات التجميع، وهي لغات برمجة تمت إزالتها قليلاً من النظام الثنائي.
اللغات عالية المستوى هي خطوة فوق اللغات منخفضة المستوى. إنها أبعد ما تكون عن الآلة، ولكن يمكن للبشر قراءتها (مقروءة). تعني كلمة “مقروءة” في هذه الحالة أنه إذا كنت تعرف اللغة المعنية، يمكنك إلقاء نظرة على بضعة أسطر من التعليمات البرمجية ومعرفة ما يحدث.
والعكس صحيح: يمكنك كتابة الأوامر التي سيتم تنفيذها بعد ذلك بواسطة الجهاز.
تفسير التعليمات:
عند كتابة أوامر بلغة عالية المستوى، فأنت لا تخبر الجهاز بما يجب فعله. بدلاً من ذلك، أنت تتحدث إلى ما يسمى بالمترجم الفوري، وهو برنامج يعد جزءاً من اللغة التي تحول الأمر إلى ثنائي.
أنت تخبر المترجم الفوري بما تريد، وهو بدوره يخبر الكمبيوتر بما قلته، ولكن بلغة الآلة.
يقوم المترجم الفوري بسد الفجوة بينك وبين الآلة، ولكل لغة مترجم مختلفة. لغات التجميع Assembly غريبة بعض الشيء حيث تحتاج أوامرها أيضاً إلى أن يتم تفسيرها، لكنها تستخدم ما يسمى المُجمِّع Assembler بدلاً من المترجم الفوري Interpreter لأن أوامرها أقرب إلى لغة الآلة “الخالصة” وبالتالي لا تحتاج إلى ترجمة كاملة.
المترجم Interpreter هو جزء صغير من التكنولوجيا: يجب التحدث إليه بطريقة معينة حتى يقوم بعمله المتمثل في إخبار الكمبيوتر بكيفية تحريك الأصفار والأرقام الموجودة حوله.
بدلاً من قول “اجعل المربع الأزرق ينتقل إلى أعلى اليمين” مثلاً، يتعين علينا إدخال سطر من التعليمات البرمجية يفهمها المترجم الفوري Interpreter، والذي يختلف باختلاف لغة البرمجة. ثم يأخذ المترجم هذا الإدخال ويخبر الكمبيوتر بما يجب القيام به.
نظراً لصعوبة فهم اللغة الطبيعية على أجهزة الكمبيوتر والمترجمين الفوريين Interpreters وهو أمر قد يتغير لاحقاً، فإننا نستخدم لغات البرمجة، وهي اللغات التي يمكن للمترجمين الفوريين والبشر فهمها على حدٍ سواء.
كيف تعمل لغات البرمجة؟
لم يتم اختيار كلمة “لغة” عن طريق الصدفة: تماماً كما هو الحال في اللغات البشرية، فإن لغات البرمجة لها قواعد وضوابط داخلية.
سيكون للغة البرمجة صيغة، مجموعة من القواعد المتعلقة بترتيب الكلمات واستخدام الكلمات، تماماً كما هو الحال في لغة البشر.
على سبيل المثال، في اللغة العربية يمكنك قول أحمد أعطى حسام كتاباً. في هذه الجملة، تعرف بالضبط من أعطى من وماذا؛ غيّر الكلمات من حولك وستحصل على جملة مختلفة: أعطى أحمد كتاباً لحسام. لا يزال هذا منطقياً، ولكن إذا قلت كتاباً قدمه حسام أحمد لدينا مشكلة هنا.
لغات البرمجة ليست مختلفة: يجب أن تذهب البتات الصحيحة إلى الأماكن الصحيحة للجملة، التي تسمى عادةً سطر لفهمها. كل ما في الأمر أن لغات البرمجة تستخدم طرقاً مختلفة للتعبير عن نفسها.
صنع أمر برمجي:
العديد من لغات البرمجة تستخدم الأفعال، على سبيل المثال. في Python، التي تُعتبر عموماً واحدة من أسهل اللغات للتعلم، يمكنك إخبارها بطباعة سطر من النص.
print(“Hello, world”)
في هذه الحالة، ستظهر الكلمات Hello, world على الشاشة. بطبيعة الحال، يمكن أن تصبح الأوامر أكثر تعقيداً من ذلك؛ تحتوي معظم اللغات على مجموعة ضخمة من الأفعال التي يمكن استخدامها لأداء جميع أنواع الإجراءات.
بالطبع، ليس كل شيء يبدو منطقياً في لمحة: معظم الأكواد التي ستصادفها تحتوي على قدر هائل من الرموز وعلامات الترقيم التي لن تستخدمها في الحديث اليومي. ومع ذلك، بمجرد أن تحاول فهمها قليلاً، سيصبحون أقل غرابة مما تعتقد.
في لغة البشر، يمكننا استخدام كلمات مختلفة للإشارة إلى أشياء مختلفة. في اللغة العربية، على سبيل المثال، نشير إلى الأشخاص بكلمة “هي” أو “هو”.
إذا قمت بتبديلها، فسوف تنهار الجملة. لا تختلف لغات البرمجة كثيراً: تشير الأقواس إلى فئات مختلفة من الإجراءات. بدّلها وسرعان ما تنهار الجملة.
وبطبيعة الحال، يمكن أن تتغير هذه الأشياء أيضاً عبر اللغات: تقوم الأقواس في Python بعمل شيء مختلف تماماً عما يحدث في Lisp، والذي يختلف مرة أخرى عن C.
تماماً كما هو الحال في اللغات البشرية، يمكن أن يتغير الاستخدام والمعنى، مما يجعل بعض اللغات أفضل في أشياء معينة من غيرها.
ما هي لغة البرمجة التي يجب أن تتعلمها؟
إذن ما هي اللغة الأفضل لبدء التعلم؟ هناك الكثير من الجدل بين محبي اللغات المختلفة حول ما يمكن وما لا تستطيع كل لغة فعله وما هو الأفضل. لكن النتيجة هي أن اللغة الأفضل تعتمد حقاً على المبرمج. تماماً كما هو الحال مع اللغات البشرية، يتأثر رأيك بأنماط تفكيرك وما هو منطقي بالنسبة لك.