أجهزة الكمبيوتر شبابيك إنترنت

لغة برمجة للحلول الهندسية. لغات البرمجة

مادة من ويكيبيديا

لغة برمجة- نظام تسجيل رسمي لتسجيل برامج الحاسوب. تحدد لغة البرمجة مجموعة من القواعد المعجمية والنحوية والدلالية التي تحدد مظهر البرنامج والإجراءات التي سينفذها المنفذ (كمبيوتر عادةً) تحت سيطرته.

في نفس الوقت ، في الأربعينيات من القرن الماضي ، ظهرت أجهزة الكمبيوتر الرقمية الكهربائية وتم تطوير لغة يمكن اعتبارها أول لغة برمجة كمبيوتر عالية المستوى - "Plankalkül" ، التي أنشأها المهندس الألماني K.Zuse في الفترة من 1945 إلى 1945 .

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

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

حد الكمال

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

توحيد لغات البرمجة

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

أنواع البيانات

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

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

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

هياكل البيانات

تسمح أنظمة الكتابة باللغات عالية المستوى بتعريف الأنواع المعقدة والمركبة ، ما يسمى بهياكل البيانات. عادة ، يتم تشكيل أنواع البيانات الهيكلية كمنتج ديكارتي لأنواع أساسية (ذرية) وأنواع مركبة محددة مسبقًا.

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

دلالات لغات البرمجة

هناك عدة طرق لتحديد دلالات لغات البرمجة.

الأنواع الأكثر انتشارًا من الأنواع الثلاثة التالية هي: التشغيلية ، الاشتقاقية (بديهية) والدلالة (الرياضية).

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

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

يتم إنشاء لغة البرمجة وفقًا لأحد النماذج الحسابية الأساسية ونموذج البرمجة.

على الرغم من حقيقة أن معظم اللغات تركز على نموذج الحساب الإلزامي المحدد بواسطة هندسة الكمبيوتر فون نيومان ، إلا أن هناك طرقًا أخرى. يمكننا أن نذكر اللغات بنموذج حسابي مكدس (Fort ، Factor ، PostScript ، إلخ) ، وكذلك وظيفي (Lisp، Haskell ،،، REFAL ، استنادًا إلى نموذج الحساب الذي قدمه عالم الرياضيات السوفيتي AA Markov Jr. ، إلخ) والبرمجة المنطقية (مقدمة).

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

طرق تطبيق اللغات

يمكن تنفيذ لغات البرمجة على أنها مجمعة ومترجمة ومضمنة.

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

إذا كان البرنامج مكتوبًا بلغة مفسرة ، فسيقوم المترجم الفوري بتنفيذ (يفسر) النص المصدر دون ترجمة أولية. في هذه الحالة ، يظل البرنامج باللغة الأصلية ولا يمكن تشغيله بدون مترجم. يمكن تسمية معالج الكمبيوتر ، في هذا الصدد ، بمترجم لرمز الجهاز.

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

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

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

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

ومع ذلك ، فإن البرامج المفسرة تكون أبطأ بشكل ملحوظ في التنفيذ من البرامج المترجمة ؛ علاوة على ذلك ، لا يمكن تنفيذها بدون برنامج مترجم.

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

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

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

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

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

لغات البرمجة عالية المستوى

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

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

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

الرموز المستخدمة

تم تصميم لغات البرمجة الحديثة لاستخدام ASCII ، أي مدى توفرها للجميع الرسمتعتبر أحرف ASCII شرطًا ضروريًا وكافيًا لتسجيل أي بنية لغة. المديرين أحرف ASCIIتُستخدم إلى حدٍ محدود: يُسمح فقط بحمل إرجاع CR وخط تغذية LF وعلامة التبويب HT الأفقية (أحيانًا أيضًا علامة تبويب رأسية VT والانتقال إلى الصفحة التالية FF).

استخدمت اللغات المبكرة ، التي يعود تاريخها إلى عصر الأحرف 6 بت ، مجموعة محدودة أكثر. على سبيل المثال ، تحتوي أبجدية Fortran على 49 حرفًا (بما في ذلك المسافة): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / (). ، $ ":

استثناء ملحوظ هو لغة APL ، التي تستخدم الكثير من الأحرف الخاصة.

استخدام أحرف غير ASCII (مثل أحرف KOI8-R أو أحرف Unicode) يعتمد على التنفيذ: في بعض الأحيان يُسمح بها فقط في التعليقات وثوابت الأحرف / السلسلة ، وأحيانًا لا يُسمح بها إلا في المعرفات. في اتحاد الجمهوريات الاشتراكية السوفياتية ، كانت هناك لغات تمت كتابة جميع الكلمات الرئيسية فيها بأحرف روسية ، لكن هذه اللغات لم تكتسب شعبية كبيرة (باستثناء لغة البرمجة المضمنة 1C: Enterprise).

إن توسيع مجموعة الأحرف مقيد بحقيقة أن العديد من مشاريع تطوير البرمجيات دولية. سيكون من الصعب جدًا العمل مع رمز حيث يتم كتابة أسماء بعض المتغيرات بالأحرف الروسية ، والبعض الآخر باللغة العربية ، والبعض الآخر بالحروف الصينية. في نفس الوقت ، للعمل مع البيانات النصية ، فإن لغات البرمجة للجيل الجديد (Delphi 2006 ،، Java) تدعم Unicode.

فئات لغات البرمجة

لغات البرمجة السليمة رياضيا

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

حتى منتصف الستينيات ، كان الكمبيوتر الشخصي باهظ الثمن ، وهو جهاز يستخدم حصريًا لمهام خاصة ولا يؤدي سوى مهمة واحدة في كل مرة.

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

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

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

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

ما هي لغات البرمجة؟

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

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

ما هي لغات البرمجة؟

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

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

لغات البرمجة مقسمة إلى مجموعتين

هناك لغات ذات مستوى منخفض ولغات على مستوى عالٍ.

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

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

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

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

حسنًا ، هنا نأتي ، يمكننا أن نقول للشيء الرئيسي. الآن سوف نخبرك ما هي لغات البرمجة.

ما هي لغات البرمجة الموجودة

فورتران

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

الغول

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

كوبول

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

لثغة

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

يتكون برنامج Lisp من سلاسل من التعبيرات ، أي النماذج. نتيجة البرنامج هو حساب هذه التعبيرات ، المكتوبة في شكل قائمة - أحد الهياكل الرئيسية لهذا النوع من اللغة. المعنى الرئيسي لبرنامج Lisp هو "الحياة" في الفضاء الرمزي.

أساسي

تم تطوير لغة البرمجة BASIC من قبل المبرمجين في كلية دارتموث في الولايات المتحدة في منتصف الستينيات. استندت اللغة جزئيًا إلى لغة فورتران 2 وجزئيًا على ألغول - 60 ؛ كما تم إجراء إضافات تجعلها أكثر ملاءمة للعمل في وضع مشاركة الوقت ، وبعد عدة سنوات أصبحت أيضًا ملائمة لمعالجة النصوص وحساب المصفوفة. تم تنفيذ هذا النوع من لغات البرمجة في الأصل على الحاسب الرئيسي GE-265 ، والذي يدعم عددًا كبيرًا من المحطات. في وقت ظهورها ، على عكس الاعتقاد السائد ، كانت لغة مجمعة.

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

فورت

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

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

باسكال

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

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

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

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

تعتبر لغة البرمجة C الأكثر شيوعًا والمستخدمة بين المبرمجين. ينشأ هذا النوع من لغات البرمجة من لغتين ، وهما BCPL و B. Martin Richards في عام 1967 أنشأ BCPL كلغة مخصصة لكتابة برامج النظام والمجمعين. سنخبرك ما هو أدناه. استخدم Ken Thompson DEC PDP-7 على جهاز الكمبيوتر الخاص به في عام 1970 لإنشاء إصدارات سابقة من UNIX. في كلتا اللغتين الأولى والثانية ، لم يتم فصل المتغيرات إلى أنواع - كل قيمة بيانات تحتوي على كلمة واحدة في الذاكرة.

تم تطبيق لغة البرمجة C لأول مرة في عام 1972 على جهاز كمبيوتر DEC PDP-11. لكنه تمكن من الحصول على شعبيته وشهرته نظام التشغيليونيكس. جميع أنظمة التشغيل الرئيسية اليوم مكتوبة بلغة C أو C ++. أصبحت لغة البرمجة C متاحة على عدد كبير من أجهزة الكمبيوتر بعد عدة عقود. وبالمناسبة ، من الجدير بالذكر أنه مستقل تمامًا عن الأجهزة.

أصبحت لغة C لغة برمجة تقليدية في أواخر السبعينيات. هذا النوع من اللغة مزود بأدوات غنية تجعل من الممكن كتابة برامج مرنة تُستخدم في جميع أنواع أجهزة الكمبيوتر الحديثة.

مقدمة

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

الآن دعنا نتحدث عن ما هو المترجم والمترجم الفوري؟

مترجم ومترجم

لا يكفي تطوير لغة ملائمة لكتابة البرنامج. يجب أن يكون لكل لغة مترجم برنامج خاص- مترجم.

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

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

لذلك ، يمكننا أن نستنتج من هذا أن التفسير عبارة عن برنامج مخصص للترجمة سطرًا بسطر والبرنامج المصدر.

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

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

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

1. اللغات العالمية الأولى

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

2. المجمع

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

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

3. فورتران

في عام 1954 ، في أحشاء شركة IBM ، قامت مجموعة من المطورين بقيادة John Backus بإنشاء لغة برمجة Fortran.

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

في Fortran ، يصف البناء التالي "for loop up to label 10 عندما يتغير الفهرس من 1 إلى 100": DO 10 I = 1،100 إذا استبدلت الفاصلة بنقطة هنا ، تحصل على عامل التعيين: DO10I = 1.100 It يقال إن مثل هذا الخطأ تسبب في انفجار الصاروخ أثناء وقت البدء!

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

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

4. كوبول

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

في عام 1964 ، أنشأت شركة IBM لغة PL / 1 ، والتي كان من المفترض أن تحل محل Cobol و Fortran في معظم التطبيقات. تمتلك اللغة ثراءً استثنائيًا في التركيبات النحوية. قدم معالجة الاستثناء ودعم التزامن لأول مرة. وتجدر الإشارة إلى أن البنية النحوية للغة كانت معقدة للغاية. تم بالفعل استخدام المسافات كفواصل نحوية ، لكن لم يتم حجز الكلمات الرئيسية. على وجه الخصوص ، السطر التالي هو عامل PL / 1 عادي تمامًا: IF ELSE = THEN THEN THEN ؛ ELSE ELSE

بسبب هذه الميزات ، كان تطوير مترجم لـ PL / 1 صعبًا للغاية. لم تصبح اللغة شائعة خارج عالم IBM.

6. أساسي

في عام 1963 ، تم إنشاء لغة البرمجة الأساسية (رمز التعليمات الرمزية لجميع الأغراض للمبتدئين) في كلية دارتموث. تم تصور اللغة في المقام الأول كأداة تعليمية وكأول لغة برمجة تعليمية. كان من المفترض أن يكون من السهل تفسيره وتجميعه. يجب أن أقول إن لغة BASIC أصبحت حقًا لغة يتعلم فيها الناس البرمجة (على الأقل كانت قبل بضع سنوات ؛ والآن يلعب باسكال هذا الدور). تم إنشاء العديد من تطبيقات BASIC القوية التي تدعم مفاهيم البرمجة الأكثر حداثة (المثال الأبرز هو Microsoft Visual Basic).

7. ألغول

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

8. مزيد من التطويرلغات البرمجة

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

سأقدم معلومات حول اللغات اللاحقة في شكل أوصاف للعائلات اللغوية. سيسمح لك هذا بتتبع العلاقة بين اللغات الفردية بشكل أفضل.

9. لغات تشبه باسكال

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

كانت السمة السلبية للغة هي عدم وجود وسائل لتقسيم البرنامج إلى وحدات. كان ويرث مدركًا لذلك وطور لغة Modula-2 (1978) ، حيث أصبحت فكرة الوحدة أحد المفاهيم الأساسية للغة. في عام 1988 ، تم تقديم Modula-3 مع إضافة ميزات موجهة للكائنات. أوبيرون وأوبيرون 2 هما استمرار منطقي لباسكال ومودولا. تتميز بالحركة نحو اتجاه الكائن والمكون.

10. C-like اللغات

في عام 1972 ، تم إنشاء لغة البرمجة C بواسطة Kernighan و Ritchie ، وقد تم إنشاؤها كلغة لتطوير نظام التشغيل UNIX. غالبًا ما يُشار إلى C باسم "المُجمِّع المحمول" ، مما يعني أنه يسمح لك بمعالجة البيانات تقريبًا بأكبر قدر ممكن من الكفاءة في لغة التجميع ، مع توفير بنيات تحكم منظمة وعمليات تجريد عالية المستوى (الهياكل والمصفوفات). وبهذا لا تزال شعبيتها الهائلة مرتبطة. وهذا هو بالضبط كعب أخيل. المترجم C ضعيف جدًا في التحكم في النوع ، لذلك من السهل جدًا كتابة برنامج خارجي صحيح تمامًا ، ولكنه خاطئ منطقيًا.

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

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

في 1999-2000 ، أنشأت Microsoft لغة C #. إنه مشابه تمامًا لـ Java (وقد تم تصميمه كبديل للأخير) ، ولكن له أيضًا ميزات مميزة. يركز بشكل أساسي على تطوير تطبيقات الإنترنت متعددة المكونات.

11. اللغات Ada و Ada 95

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

12. لغات معالجة البيانات

جميع اللغات المذكورة أعلاه هي لغات عامة الغرض بمعنى أنها ليست مستهدفة أو مُحسَّنة لاستخدام أي هياكل بيانات محددة أو للاستخدام في أي مناطق محددة. تم تطوير عدد كبير من اللغات ، تستهدف تطبيقات محددة إلى حد ما. فيما يلي لمحة موجزة عن هذه اللغات.

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

14. Snobol و Icon

في عام 1962 ، ظهرت لغة Snobol (وفي عام 1974 الرمز التالي لها) ، المخصصة لمعالجة السلاسل. بناء جملة Icon يشبه C و Pascal في نفس الوقت. يكمن الاختلاف في وجود وظائف مضمنة قوية للعمل مع السلاسل والدلالات الخاصة المرتبطة بهذه الوظائف. النظير الحديث لـ Icon و Snobol هو Perl ، وهي لغة معالجة نصوص وسلسلة أضافت بعض الميزات الموجهة للكائنات. تعتبر لغة عملية للغاية لكنها تفتقر إلى الأناقة.

15. SETL

في عام 1969 ، تم إنشاء لغة SETL - لغة لوصف العمليات على مجموعات. هيكل البيانات الرئيسي في اللغة عبارة عن مجموعة ، والعمليات تشبه العمليات الحسابية في المجموعات. مفيد عند كتابة البرامج التي تتعامل مع كائنات مجردة معقدة.

16. اللثغة واللغات المماثلة

في عام 1958 ، ظهرت لغة Lisp - لغة لمعالجة القوائم. انتشر بشكل كبير في أنظمة الذكاء الاصطناعي. أحفاد عدة: Planner (1967) ، Scheme (1975) ، Common Lisp (1984). لقد تم توريث العديد من ملامحه. اللغات الحديثةالبرمجة الوظيفية.

17. لغات البرمجة

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

18. جافا سكريبت

تم إنشاء اللغة بواسطة Netscape Communications كلغة لوصف السلوك المعقد لصفحات الويب. كان يُطلق عليه في الأصل اسم LiveScript ، وقد تم تغيير الاسم لأسباب تسويقية. يتم تفسيره بواسطة المتصفح عند عرض صفحة الويب. بناء الجملة مشابه لـ Java و (عن بعد) لـ C / C ++. لديه القدرة على استخدام وظائف الكائن المضمنة في المتصفح ، ولكنها ليست لغة موجهة للكائنات حقًا.

19. VBScript

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

20. بيرل

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

21. بايثون

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

22. اللغات الشيئية

النهج الكينوني ، الذي حل محل المنهج المنظم ، لم يظهر لأول مرة في C ++ ، كما يعتقد البعض. هناك مجموعة كاملة من اللغات الصرفة الموجهة للكائنات والتي بدونها لن يكتمل استطلاعنا.

23. سيمولا

كانت اللغة الأولى الموجهة للكائنات هي Simula (1967). كانت هذه اللغة مخصصة لنمذجة كائنات وعمليات مختلفة ، وظهرت فيها ميزات موجهة للكائنات بدقة لوصف خصائص كائنات النموذج.

24. سمالتالك

جلبت لغة Smalltalk ، التي تم إنشاؤها في عام 1972 ، شعبية البرمجة الشيئية. كانت اللغة مخصصة لتصميم واجهات رسومية معقدة وكانت أول لغة موجهة حقًا. في ذلك ، الفئات والكائنات هي بنيات البرمجة الوحيدة. عيوب Smalltalk الكبيرة هي متطلبات الذاكرة الكبيرة وضعف أداء البرامج الناتجة. هذا يرجع إلى سوء تنفيذ الميزات الموجهة للكائنات. تعود شعبية لغات C ++ و Ada 95 تحديدًا إلى حقيقة أن توجيه الكائن يتم تنفيذه دون تدهور كبير في الأداء.

25. ايفل

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

26. لغات البرمجة الموازية

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

27. لغة أوكام

تم إنشاء لغة أوكام في عام 1982 وهي مخصصة لبرمجة أجهزة الإرسال - أنظمة متعددة المعالجات لمعالجة البيانات الموزعة. يصف تفاعل العمليات المتوازية في شكل قنوات - طرق نقل المعلومات من عملية إلى أخرى. لاحظ خصوصية بناء جملة لغة Шccam - حيث تكون الأوامر المتسلسلة والمتوازية لتنفيذ المشغلين متساوية ، ويجب الإشارة إليها صراحة الكلمات الدالة PAR و SEQ.

28. ليندا نموذج الحوسبة المتوازية

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

29- اللغات غير الحتمية

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

30. اللغات الوظيفية

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

من بين اللغات ذات الدلالات النشطة ، نذكر ML واثنين من لهجاتها الحديثة - Standard ML (SML) و CaML. هذا الأخير لديه سليل وجوه المنحى - الهدف CaML (O'CaML).

من بين اللغات ذات الدلالات الكسولة ، هناك لغتان أكثر شيوعًا: هاسكل ولهجة أبسط لهجة.

لمزيد من المعلومات حول اللغات الوظيفية ، انظر هنا:

31. لغات البرمجة المنطقية

يتم التعبير عن البرامج بلغات البرمجة المنطقية على أنها صيغ للمنطق الرياضي ، ويحاول المترجم استخلاص النتائج منها.

أصل معظم لغات البرمجة المنطقية هي لغة برولوج (1971). لديها عدد من الأحفاد - Parlog (1983 ، تركز على الحوسبة المتوازية) ، Delta Prolog ، إلخ. البرمجة المنطقية ، مثل البرمجة الوظيفية ، هي مجال منفصل من البرمجة ، وأكثر من ذلك تفاصيلنحيل القارئ إلى الأدبيات المتخصصة.

32. بدلا من الاستنتاج

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

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

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

تهدف هذه المقالة إلى أن تكون ردًا على أولئك الذين يصرخون "لغة X يجب أن تموت". آمل أن تكون الإجابة كافية ومقنعة تمامًا. آمل أيضًا أن يكون للمقال ، بالإضافة إلى قيمته الجدلية والمعرفية.