لغات البرمجة: العوامل التي يجب مراعاتها عند اختيارلغة البرمجة

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

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

  • Compiled, interpreted, or JIT-compiled

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

  • لغة برمجة منخفضة أو مرتفعة المستوى

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

  • نظام كتابة لغات البرمجة 

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

  • نموذج البرمجة 

 نموذج البرمجة هو منهجية أو طريقة برمجة تدعمها لغة البرمجة. فيما يلي ملخص لبعض النماذج الشائعة:

-تصريحي  Declarative
سوف تركز اللغة التصريحية بشكل أكبر على تحديد ما يفترض أن تحققه اللغة بدلاً من الوسائل التي من المفترض أن تحققها. يمكن استخدام مثل هذا النموذج لتجنب الآثار الجانبية غير المرغوب فيها الناتجة عن الاضطرار إلى كتابة الكود الخاص به.
-وظيفي  Functional
البرمجة الوظيفية هي مجموعة فرعية من البرمجة التصريحية التي تحاول التعبير عن المشاكل من حيث المعادلات والوظائف الرياضية. يذهب بعيدًا عن طريقه لتجنب مفاهيم الحالات والمتغيرات القابلة للتغيير الشائعة في اللغات الحتمية.
-نوعي  Generic
تركز البرمجة العامة على كتابة خوارزميات هيكلية من حيث الأنواع التي سيتم تحديدها عند استخدام الخوارزمية فعليًا ، مما يسمح ببعض التساهل مع المبرمجين الذين يرغبون في تجنب قواعد الكتابة الصارمة الصارمة. يمكن أن يكون نموذجًا قويًا جدًا إذا تم تنفيذه جيدًا.
-إلزامي  Imperative
تسمح اللغات الحتمية للمبرمجين بإعطاء الكمبيوتر قوائم مرتبة من التعليمات دون الحاجة بالضرورة إلى ذكر المهمة صراحةً. يمكن التفكير في أنها عكس البرمجة التصريحية.
-منظم  Structured
تهدف لغات البرمجة المهيكلة إلى توفير شكل من أشكال البنية الجديرة بالملاحظة للغة ، مثل التحكم البديهي في الترتيب الذي يتم تنفيذ العبارات به (إذا كان X ثم فعل Y بطريقة أخرى Z ، فافعل X بينما Y هو Z). تتجاهل هذه اللغات عمومًا "القفزات" ، مثل تلك التي توفرها تعليمة goto في C و C ++.
-إجرائية  Procedural
على الرغم من أنها تستخدم أحيانًا كمرادف للبرمجة الحتمية ، يمكن أن تشير لغة البرمجة الإجرائية أيضًا إلى لغة برمجة منظمة ضرورية تدعم مفهوم الإجراءات والروتينات الفرعية (المعروفة أيضًا باسم الوظائف في C أو C ++).

-الكائنية التوجه  Object-Oriented

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

  •  التوحيد  Standardization

هل للغة البرمجة معيار رسمي؟ قد يكون هذا مهمًا جدًا للتأكد من أن البرامج المكتوبة للعمل مع مترجم(compiler/interpreter) واحد ستعمل مع مترجم آخر. يتم توحيد بعض اللغات من قبل المعهد الوطني الأمريكي للمعايير (ANSI) ، وبعضها موحد من قبل المنظمة الدولية للتوحيد القياسي (ISO) ، وبعضها لديه معيار غير رسمي ولكن بحكم الواقع لا تحتفظ به أي منظمة معايير.