لماذا يوجد الكثير من لغات البرمجة؟

يوجد أكثر من 250 لغة برمجة. يستخدم بعضها على نطاق واسع في عالم الأعمال ، مثل C ++ و Java و JavaScript و Ruby و Python. البعض الآخر الأكاديمية في المقام الأول ، مثل Lisp. لا يزال ، والبعض الآخر غامضة وباطنية. قد تسأل ، "لماذا توجد العديد من لغات البرمجة؟"

هذا يشبه إلى حد كبير السؤال: "لماذا توجد العديد من مجالات الرياضيات؟ لدينا الجبر ، لماذا نحتاج إلى هندسة وحساب التفاضل وميكانيكا الموائع؟" كل لغة برمجة تهدف إلى حل مشكلة معينة. قد تتمكن أكثر من لغة من حل المشكلة نفسها ، لكن كل واحدة منها ستتعامل معها بطريقة مختلفة.

فيما يلي بعض الاختلافات الرئيسية في لغات البرمجة.

وضوح وسهولة الصيانة

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

في المقابل ، Perl هي لغة تسمح للمبرمج بكتابة نفس البرنامج بعدة طرق مختلفة ، لكن قد لا يكون الغرض من البرنامج واضحًا على الفور لقارئ آخر. قد يكون هذا البرنامج مناسبًا للكتابة ، لكن يصعب على شخص آخر فهمه وتعديله.

أداء

يتم تفسير بعض اللغات ، ويتم تجميع بعض. يجب معالجة البرنامج المترجم بواسطة معالج مسبق ومترجم ورابط قبل تنفيذه بواسطة الكمبيوتر. يقوم هذا البرنامج الوسيط المتخصص بإجراء تحليل معجمي ، وترجمة البرنامج إلى لغة الآلة. قد يؤدي أيضًا إلى تحسين الإرشادات الناتجة ، والبحث عن طرق ذكية لجعل البرنامج يعمل بشكل أسرع.

أداء البرامج المترجمة عادةً أفضل من البرامج التي يتم تفسيرها. على سبيل المثال ، C و C ++ و Objective-C هي لغات يتم تجميعها عادةً لرمز الجهاز سريع للغاية. غالبًا ما تتم كتابة ألعاب الفيديو وبرامج النظام بهذه اللغات ، للضغط على كل جزء من الأداء خارج وحدة المعالجة المركزية.

من ناحية أخرى ، يتم تشغيل برامج الترجمة الشفوية بواسطة برنامج يسمى مترجم ، والذي ينفذ تعليمات البرنامج دون تجميعها أولاً لرمز الجهاز. على الرغم من أن المترجم يوزع البرنامج أحيانًا على لغة متوسطة ، مما ينتج عنه بعض التحسين ، فإن الأداء لا يكون أبداً بنفس سرعة رمز الآلة المترجمة.

ومن المزايا الرئيسية للغات التي يتم تفسيرها إمكانية تطويرها التفاعلي. نظرًا لأن البرنامج بأكمله لا يحتاج إلى التحويل البرمجي قبل تنفيذه ، يمكن تشغيل الرمز بشكل تفاعلي. أنت على دراية بذلك إذا كنت قد استخدمت سطر أوامر نظام التشغيل من قبل: فأنت تدخل أمرًا وترى النتائج. تسمى هذه الواجهة بـ REPL أو "read-eval-print-loop." يسمح لك REPL بتنفيذ الأوامر (أو مجموعات الأوامر) بشكل فردي ، وعرض النتائج. تعد Lisp و Perl و Python و NodeJS و Ruby و JavaScript أمثلة على اللغات التي يمكن تفسيرها والتي يمكن تشغيلها في REPL.

واجهات الأوامر التفاعلية ، مثل Windows Command Prompt و bash ، تعتبر أيضًا لغات مترجمة. تسمى البرامج الموجودة في "اللغات" هذه الملفات الدفعية أو البرامج النصية shell.

حالات استخدام محددة

غالبًا ما تكون اللغات جيدة في كتابة أنواع معينة من البرامج. على سبيل المثال ، تم تصميم NodeJS لكتابة تطبيقات مترابطة المفرد للويب. يسمح ملف الإدخال / الإخراج غير المحجوب للبرامج بمواصلة التشغيل ("غير محظور") أثناء انتظار نقل البيانات المطلوبة.

مثال آخر هو لغة البرمجة R ، والتي تتخصص في التحليل الإحصائي. تستفيد البرامج المكتوبة في R من الاختبارات والنماذج التحليلية المضمّنة ، والأدوات اللازمة لمعالجة كميات هائلة من البيانات بكفاءة.

سهولة النماذج

تسمح بعض اللغات بالنماذج الأولية السريعة: يمكن للمبرمج "مجرد بدء الكتابة" ، وبناء مكون على المكون حتى يتم تكوين البرنامج بالكامل.

على سبيل المثال ، تم كتابة موقع Reddit في الأصل باللغة Lisp. بعد إطلاق موقع Reddit ، تمت إعادة كتابة الموقع بالكامل في Python لأسباب عديدة ، تقنية ولوجستية. على الرغم من أن إعادة بناء كل الكود كان مهمة كبرى ، إلا أن أصحاب الموقع لم يعربوا عن أسفهم. في منشور نشر عام 2005 ، لاحظوا أن Lisp سمحت لهم بإنشاء شيء دون معرفة ما سيصبح بالضبط.

المكتبات المتاحة

عادة ، عند بدء مشروع برمجة جديد ، لا تريد إعادة اختراع العجلة. بمعنى ، لا تريد كتابة وظائف للمهام الشائعة مثل حساب الجذر التربيعي ، أو العثور على التواجد الأول للحرف في سلسلة. لهذا السبب ، توفر كل لغة برمجة تقريبًا مجموعة من المكتبات القياسية للوظائف الشائعة. قد يفضل المبرمجون لغة بسبب المكتبات التي يوفرها.

على سبيل المثال ، توفر المكتبات القياسية C وظائف عالية الأداء للعديد من عمليات النظام منخفضة المستوى. يوفر Perl العديد من المكتبات القوية ، بالإضافة إلى مستودع CPAN للوحدات النمطية التي يمكن تنزيلها واستخدامها في البرنامج. يوفر Python مجموعة واسعة من الوظائف والوحدات المدمجة لكل شيء تقريبًا تحت أشعة الشمس. تستفيد Clojure ، وهي لغة تشبه لغة Lisp تعمل على JVM ، من قدرتها على تشغيل التعليمات البرمجية من المكتبات الحالية الواسعة لكائنات وأساليب Java.

الأمان

ليست كل اللغات مناسبة لكتابة رمز آمن. لغة البرمجة C ، على سبيل المثال ، تشتهر بوجود ميزات (أو عدم وجودها) والتي يمكن أن تؤدي إلى نقاط الضعف المدمرة مثل إلغاء مؤشر المؤشر فارغة. تحاول لغات أخرى معالجة هذه المخاوف بقواعد أكثر صرامة.

على سبيل المثال ، تفرض بعض اللغات قيودًا على العمليات التي يمكن تنفيذها على أنواع مختلفة من البيانات. تسمى أحيانًا أقسى هذه اللغات "مكتوبة بشدة" ، ويمكنها أن تقدم راحة البال للمبرمجين الذين يولون الأولوية للأمن والاستقرار في تطوير البرمجيات. من أمثلة اللغات المكتوبة بشدة: Rust و Nim و Ocaml و Haskell.

قد تضع اللغات أيضًا قيودًا على "قابلية التحويل" ، وهي قدرة كائن البيانات على تغيير الحالة. بدلاً من الكائنات التي يتم الكتابة فوق قيمها ، تفضل هذه اللغات كائنات "غير قابلة للتغيير": قيم في الذاكرة لا يمكن تغييرها دون استثناء صريح. جذبت الكائنات غير القابلة للتغيير اهتمامًا لأن وحدات المعالجة المركزية متعددة النوى أصبحت منتشرة على نطاق واسع بسبب ميلها إلى تعزيز "أمان الخيط". في برنامج آمن لمؤشر الترابط ، قد يعمل أكثر من معالج واحد على مجموعة واحدة من البيانات مع تقليل مخاطر الخطأ إلى حد كبير. تشمل اللغات التي تعطي الأولوية للأشياء غير القابلة للتغيير الصدأ والكلوجور.

دعم المجتمع

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

التعبير

عند كتابة البرنامج ، فإن أفكار المبرمج وقدراته على حل المشكلات "تتحدث" من خلال تلك اللغة. نتيجة لذلك ، يميل المبرمجون إلى تفضيل اللغات التي يعبرون فيها عن أنفسهم. ولكن ما الذي يجعل اللغة والمبرمجين يعملان جيدًا معًا أمر صعب التحديد. في النهاية ، فإن الطريقة الوحيدة لمعرفة اللغة التي تشعر بالراحة بها هي استخدام لغات مختلفة لمشاريع مختلفة ومقارنتها بنفسك.