لغة برمجة عالية المستوى
لغة البرمجة عالية المستوى هي لغة برمجة تتميز بتجريد قوي لتفاصيل الحاسوب . وعلى عكس لغات البرمجة منخفضة المستوى ، قد تستخدم عناصر اللغة الطبيعية ، وتكون أسهل استخدامًا، أو قد تُؤتمت (أو حتى تُخفي تمامًا) جوانب مهمة من أنظمة الحوسبة (مثل إدارة الذاكرة )، مما يجعل عملية تطوير البرامج أبسط وأكثر وضوحًا من استخدام لغة منخفضة المستوى. ويُحدد مستوى التجريد مدى "عالية المستوى" للغة البرمجة. [ 1 ]
يشير مصطلح "اللغات عالية المستوى" إلى مستوى من التجريد عن تفاصيل مكونات المعالج المادية المتأصلة في لغة الآلة ولغة التجميع . فبدلاً من التعامل مع المسجلات وعناوين الذاكرة ومكدسات الاستدعاء، تتعامل هذه اللغات مع المتغيرات والمصفوفات والكائنات والتعبيرات الحسابية والمنطقية والدوال والحلقات والخيوط والأقفال وغيرها من مفاهيم علوم الحاسوب المجردة ، بهدف تسهيل صحة الكود وسهولة صيانته . وعلى عكس لغات التجميع منخفضة المستوى، فإن اللغات عالية المستوى لا تحتوي إلا على عدد قليل من عناصر اللغة، إن وجدت، التي تُترجم مباشرةً إلى رموز العمليات الأصلية للجهاز . وقد تُوفر أيضًا ميزات أخرى، مثل معالجة السلاسل النصية، وميزات البرمجة كائنية التوجه ، وإدخال/إخراج الملفات. تسمح اللغة عالية المستوى بكتابة كود مصدر منفصل عن تفاصيل الجهاز. أي، على عكس اللغات منخفضة المستوى كلغة التجميع ولغة الآلة، قد ينتج عن كتابة كود بلغة عالية المستوى عمليات نقل بيانات دون علم المبرمج. ويُعهد ببعض التحكم في التعليمات المراد تنفيذها إلى المُترجم.
تاريخ
في العقود الأولى للحوسبة الإلكترونية، كانت البرامج تُكتب عادةً بلغة الآلة أو لغة التجميع ، والتي كانت تعكس بدقة مجموعة تعليمات جهاز معين. تطورت لغات البرمجة عالية المستوى كوسيلة للتعبير عن الخوارزميات بأشكال أقرب إلى الرياضيات، أو قواعد العمل، أو الإجراءات التي يسهل على الإنسان قراءتها، بينما يقوم المترجم أو المفسر بترجمة البرنامج إلى تعليمات قابلة للتنفيذ آليًا. في خمسينيات وستينيات القرن العشرين، شاع استخدام مصطلح "البرمجة التلقائية" للغات عالية المستوى التي تعتمد على المترجمات؛ ومن الأمثلة على ذلك أنظمة البرمجة التلقائية المبكرة، بالإضافة إلى لغات مثل فورتران وكوبول . [ 2 ]
تُعتبر لغة Plankalkül ، التي طورها كونراد تسوزه في أربعينيات القرن العشرين، أقدم لغة برمجة عالية المستوى مصممة للحاسوب . [ 3 ] وقد تضمنت ميزات متقدمة مثل البيانات المهيكلة، والتخصيص، والتنفيذ المشروط، والتكرار، والبرامج الفرعية، إلا أنها لم تُنفذ خلال حياة تسوزه. ولأن تسوزه عمل في ألمانيا خلال الحرب وبعدها، فقد ظل عمله معزولًا إلى حد كبير عن التيار الرئيسي لتطوير اللغات، على الرغم من أنه أثر على لغة Superplan التي طورها هاينز روتشاوزر ، وبدرجة أقل، على الأعمال المبكرة المرتبطة بلغة ALGOL . [ 4 ]
كانت لغة فورتران أول لغة برمجة عالية المستوى تحظى بانتشار واسع في التطبيقات العملية ، وقد طُوّرت في شركة آي بي إم في خمسينيات القرن العشرين تحت إشراف جون باكوس . [ 5 ] استهدفت فورتران الحوسبة العلمية والرقمية، مما مكّن المبرمجين من كتابة المعادلات الجبرية والحلقات دون الحاجة إلى إدارة كل تعليمة من تعليمات الآلة يدويًا. وقد ساهم نجاحها في إثبات أن لغات البرمجة عالية المستوى المُترجمة قادرة على إنتاج برامج فعّالة مع تقليل جهد البرمجة بشكل كبير. [ 6 ]
ظهرت عدة لغات برمجة مؤثرة أخرى في نفس الفترة تقريبًا. فقد قدمت لغة ليسب ، التي ابتكرها جون مكارثي ، معالجة القوائم الرمزية، وجعلت أفكار حساب لامدا أساسية في تصميم لغات البرمجة العملية. [ 7 ] صُممت لغة كوبول لمعالجة بيانات الأعمال، وارتبطت ببنية نحوية شبيهة باللغة الإنجليزية، والسجلات، والتطبيقات التجارية الموجهة نحو الملفات. [ 8 ] أثرت عائلة لغات ألغول ، وخاصة ألغول 60 ، على تصميم اللغات اللاحقة من خلال بنية الكتل، والإجراءات المتداخلة، والاستدعاء الذاتي، والنطاق المعجمي، والتمييز بين الاستدعاء بالقيمة والاستدعاء بالاسم، واستخدام صيغة باكوس-ناور لتعريف البنية النحوية رسميًا. [ 9 ]
خلال ستينيات وسبعينيات القرن العشرين، تنوعت لغات البرمجة عالية المستوى إلى أنماط برمجة متميزة. فقد سهّلت لغة BASIC البرمجة التفاعلية في بيئات المشاركة الزمنية والبيئات التعليمية، بينما ركزت لغة Pascal على البرمجة الهيكلية والتعليم. وجمعت لغة C بين هياكل التحكم عالية المستوى والوصول منخفض المستوى نسبيًا إلى الذاكرة والمكونات المادية، مما جعلها مؤثرة في أنظمة التشغيل وبرامج النظام . وقدمت لغة Simula نموذج الفئة والكائن الذي أصبح أساسيًا في البرمجة كائنية التوجه ، وطورت لغة Smalltalk لاحقًا البرمجة كائنية التوجه حول تمرير الرسائل وبيئة برمجة تفاعلية للغاية. [ 10 ] [ 11 ]
بحلول ثمانينيات وتسعينيات القرن العشرين، عكست تطورات لغات البرمجة عالية المستوى بشكل متزايد هندسة البرمجيات واسعة النطاق، والحوسبة الرسومية، ونمو الإنترنت. صُممت لغة آدا للأنظمة الكبيرة طويلة الأمد، لا سيما في مجال الدفاع والأنظمة المدمجة. وسعت لغة سي++ لغة سي بإضافة الفئات وآليات التجريد الأخرى، مما أتاح البرمجة الكائنية والبرمجة العامة مع الحفاظ على قدرات برمجة الأنظمة. [ 12 ] ركزت لغات البرمجة النصية ولغات التطبيقات السريعة، مثل بيرل وبايثون وروبي وبي إتش بي، على إنتاجية المبرمجين وكتابة النصوص أو الويب أو التطبيقات. عززت جافا تنفيذ التعليمات البرمجية الوسيطة المحمولة من خلال آلة جافا الافتراضية ، بينما أصبحت جافا سكريبت لغة البرمجة النصية عالية المستوى القياسية لمتصفحات الويب . [ 13 ] [ 14 ] [ 15 ]
في القرن الحادي والعشرين، ركزت لغات البرمجة عالية المستوى الحديثة غالبًا على تجريد أكثر أمانًا، والتزامن، وقواعد البيانات الضخمة، والتوافق مع المنصات الحالية. طُوّرت لغة C# جنبًا إلى جنب مع منصة .NET ، ودمجت لغتا Scala و F# البرمجة الكائنية والوظيفية، بينما استهدفت لغة Kotlin التوافق مع Java مع إضافة بنية نحوية مختصرة وميزات أمان من القيم الفارغة. [ 16 ] صُممت لغة Go لبنية نحوية بسيطة، وتجميع سريع، ودعم مدمج للتزامن. [ 17 ] ركزت لغة Rust على أمان الذاكرة وأمان الخيوط دون الحاجة إلى جامع قمامة، بينما طُرحت لغة Swift كلغة حديثة لتطوير برامج منصة Apple. [ 18 ] [ 19 ] وسّعت لغة TypeScript لغة JavaScript بإضافة الكتابة الثابتة لتطبيقات JavaScript واسعة النطاق. [ 20 ]
عقوبة التجريد
توفر لغات البرمجة عالية المستوى ميزات تُوحّد المهام الشائعة، وتُتيح تصحيح الأخطاء بشكلٍ مُفصّل، وتحافظ على استقلالية البنية. في المقابل، تتطلب لغات البرمجة منخفضة المستوى من المبرمج العمل على مستوى أدنى من التجريد، وهو ما يُعدّ أكثر صعوبةً في الغالب، ولكنه يُتيح تحسينات غير ممكنة مع لغات البرمجة عالية المستوى. يُعدّ هذا العبء التجريدي لاستخدام لغة برمجة عالية المستوى بدلاً من لغة برمجة منخفضة المستوى أمرًا واقعيًا، ولكن عمليًا، نادرًا ما تُحسّن التحسينات منخفضة المستوى الأداء على مستوى تجربة المستخدم . [ 21 ] [ 22 ] [ 23 ] ومع ذلك، قد يتطلب الكود الذي يحتاج إلى التشغيل بسرعة وكفاءة استخدام لغة برمجة منخفضة المستوى، حتى لو كانت لغة برمجة عالية المستوى ستجعل كتابة الكود وصيانته أسهل. في كثير من الحالات، تُكتب الأجزاء الحيوية من البرنامج، المكتوبة في الغالب بلغة برمجة عالية المستوى، بلغة التجميع لتلبية قيود التوقيت أو الذاكرة الصارمة. يمكن لمترجم مصمم جيدًا للغة عالية المستوى أن ينتج شيفرة برمجية تضاهي في كفاءتها الشيفرة المكتوبة يدويًا بلغة التجميع، بل إن التجريدات عالية المستوى تسمح أحيانًا بإجراء تحسينات تتجاوز أداء لغة التجميع المكتوبة يدويًا. [ 24 ] ولأن اللغة عالية المستوى مصممة بشكل مستقل عن بنية نظام حاسوبي محدد ، فإن البرنامج المكتوب بهذه اللغة يمكن تشغيله على أي بيئة حاسوبية باستخدام مترجم أو مفسر متوافق.
على عكس لغات البرمجة منخفضة المستوى المرتبطة ارتباطًا وثيقًا بمعالجات الأجهزة، يمكن تطوير لغات البرمجة عالية المستوى، كما يمكن أن تنشأ لغات جديدة من لغات أخرى بهدف دمج أكثر البنى شيوعًا مع ميزات محسّنة. على سبيل المثال، تحافظ لغة سكالا على التوافق مع الإصدارات السابقة من جافا . فالكود المكتوب بلغة جافا يظل قابلاً للاستخدام حتى لو انتقل المطور إلى سكالا. هذا يُسهّل عملية الانتقال ويُطيل عمر قاعدة الكود . في المقابل، نادرًا ما تستمر برامج البرمجة منخفضة المستوى في العمل بعد انتهاء عمر النظام الذي صُممت من أجله.
المعنى النسبي
مصطلحا "عالي المستوى" و "منخفض المستوى" نسبيان بطبيعتهما، ويمكن مقارنة اللغات ببعضها البعض باعتبارها أعلى أو أدنى مستوى. أحيانًا تُعتبر لغة C إما عالية المستوى أو منخفضة المستوى حسب وجهة النظر. على أي حال، يتفق معظم الخبراء على أن لغة C أعلى مستوى من لغة التجميع وأدنى مستوى من معظم اللغات الأخرى.
تدعم لغة C بنيات مثل تقييم التعبيرات، والدوال المُعاملة والدوال التكرارية، وأنواع البيانات والهياكل التي لا تدعمها لغة التجميع أو المعالج بشكل مباشر، إلا أن C توفر ميزات منخفضة المستوى مثل الزيادة التلقائية وحسابات المؤشرات. مع ذلك، تفتقر C إلى العديد من المفاهيم المجردة عالية المستوى الشائعة في لغات أخرى، مثل جمع البيانات المهملة ونوع السلسلة النصية المدمج. في مقدمة كتاب "لغة برمجة C" (الطبعة الثانية) لبريان كيرنيغان ودينيس ريتشي ، وُصفت C بأنها "ليست لغة عالية المستوى جدًا". [ 25 ]
لغة التجميع هي لغة برمجة ذات مستوى أعلى من لغة الآلة، ولكنها لا تزال مرتبطة ارتباطًا وثيقًا بمعالج الجهاز. ومع ذلك، قد توفر لغة التجميع بعض الميزات ذات المستوى الأعلى مثل وحدات الماكرو ، والتعبيرات المحدودة نسبيًا، والثوابت، والمتغيرات، والإجراءات، وهياكل البيانات .
تُعتبر لغة الآلة على مستوى تجريد أعلى قليلاً من الشفرة الدقيقة أو العمليات الدقيقة المستخدمة داخليًا في العديد من المعالجات. [ 26 ]
أوضاع التنفيذ
يمكن معالجة الشفرة المصدرية للغة عالية المستوى بطرق مختلفة، مثل:
- مُجمّع
- يقوم المترجم بتحويل الشفرة المصدرية إلى شفرة أخرى. في بعض الحالات، يُولّد المترجم شفرة آلة أصلية يُفسّرها المعالج؛ ومع ذلك، فإن العديد من نماذج التنفيذ اليوم تتضمن توليد تمثيل وسيط (أي شفرة بايت ) يتم تفسيره لاحقًا في البرمجيات أو تحويله إلى شفرة أصلية في وقت التشغيل (عبر الترجمة الفورية ).
- أحيانًا يتم تحسين الأجهزة لتلبية متطلبات وقت التشغيل للغات برمجة محددة. على سبيل المثال، كانت أنظمة Burroughs الكبيرة أجهزة مستهدفة للغة ALGOL 60. [ 27 ]
- تم تحويله
- يمكن ترجمة الشفرة إلى شفرة مصدرية بلغة أخرى (عادةً ما تكون منخفضة المستوى) يتوفر لها مترجم أو مفسر. تُعدّ جافا سكريبت ولغة C من اللغات الشائعة التي تستخدم هذه المترجمات. على سبيل المثال، يمكن اعتبار شفرة C وC++ مُولّدة من شفرة إيفل عند استخدام بيئة التطوير المتكاملة EiffelStudio . في لغة إيفل، تُسمى عملية الترجمة "الترجمة العكسية " أو "المُترجم" ، ويُشار إلى مترجم إيفل باسم "المترجم العكسي" أو " المترجم من المصدر إلى المصدر" .
- تم تفسير البرمجيات
- يقوم مترجم البرامج بتنفيذ الإجراءات المشفرة في التعليمات البرمجية المصدرية دون توليد تعليمات برمجية أصلية للآلة.
- تم تفسير الأجهزة
- على الرغم من ندرة حدوث ذلك، إلا أن المعالج ذو بنية الحاسوب للغة عالية المستوى يمكنه معالجة لغة عالية المستوى دون الحاجة إلى خطوة ترجمة مبرمجة. [ 28 ]
لاحظ أن اللغة لا تُفسَّر أو تُجمَّع بشكل قاطع. بل إن نموذج التنفيذ يتضمن مُجمِّعًا أو مُفسِّرًا، وقد تُستخدم اللغة نفسها مع نماذج تنفيذ مختلفة. على سبيل المثال، تم تفسير لغتي ALGOL 60 و Fortran على الرغم من أنهما كانتا تُجمَّعان في الغالب. وبالمثل، تُظهر لغة Java صعوبة تطبيق هذه التصنيفات على اللغات، بدلاً من تطبيقاتها. تُجمَّع Java إلى رمز وسيط، والذي يُنفَّذ بعد ذلك إما عن طريق التفسير في آلة Java الافتراضية (JVM) أو عن طريق التجميع الفوري (JIT).
انظر أيضاً
مراجع
- ↑ "HThreads - RD Glossary" . مؤرشف من الأصل في 26 أغسطس 2007.
- ↑ لندن، كيث (1968). مقدمة في الحواسيب . فابر آند فابر.
- ↑ روخاس، راؤول؛ هاشاجن، أولف (2000). بلانكالكول: أول لغة برمجة عالية المستوى وتطبيقها (تقرير). جامعة برلين الحرة. مؤرشف من الأصل في 18 أكتوبر 2014. تم الاطلاع عليه في 25 مايو 2026 .
{{cite report}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط ) - ↑ روخاس، راؤول (2000). "إرث كونراد تسوزه: بنية Z1 وZ3". في روخاس، راؤول (محرر). الحواسيب الأولى: التاريخ والبنى . مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 978-0-262-18197-6.
- ↑ "البرمجيات واللغات: فورتران" . متحف تاريخ الحاسوب . تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ "لغات البرمجة" . موسوعة بريتانيكا . تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ مكارثي، جون (1960). "الدوال التكرارية للتعبيرات الرمزية وحسابها بواسطة الآلة، الجزء الأول". اتصالات رابطة آلات الحوسبة . 3 (4): 184-195 . doi : 10.1145/367177.367199 .
- ↑ ساميت، جان إي. (1978). "التاريخ المبكر للغة كوبول". إشعارات ACM SIGPLAN . 13 (8): 121-161 . doi : 10.1145/960118.808378 .
- ^ باكوس، جيه دبليو؛ باور، فلوريدا؛ جرين، ج. كاتز، C .؛ مكارثي، J .؛ نور، ص. بيرليس، AJ؛ روتيسهاوزر، H .؛ ساملسون، ك. فوكوا، ب. ويجستين، JH. فان فيجنجاردن، أ؛ وودجر، م. (1963). “تقرير منقح عن اللغة الخوارزمية ALGOL 60”. اتصالات ACM . 6 (1): 1– 17. دوى : 10.1145/366193.366201 .
- ↑ دال، أولي-يوهان؛ نيغارد، كريستين (1978). "تطوير لغات سيمولا". تاريخ لغات البرمجة . ACM. ص 439-480 . doi : 10.1145/800025.1198392 .
- ↑ كاي، آلان سي. (1993). "التاريخ المبكر لسمول توك". إشعارات ACM SIGPLAN . 28 (3): 69-95 . doi : 10.1145/155360.155364 .
- ↑ ستروستروب، بيارن (1993). "تاريخ لغة C++: 1979-1991". تاريخ لغات البرمجة II . رابطة آلات الحوسبة (ACM). الصفحات 699-769 . doi : 10.1145/154766.155375 .
- ↑ "التاريخ والترخيص" . وثائق بايثون . تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ "مواصفات لغة جافا" (ملف PDF) . أوراكل . تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ "جافا سكريبت" . وثائق MDN على الويب . موزيلا . تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ "إصدار Kotlin 1.0: لغة عملية لـ JVM و Android" . JetBrains. 15 فبراير 2016. تم الاطلاع عليه بتاريخ 25 مايو 2016 .
- ↑ "الأسئلة الشائعة" . لغة البرمجة Go . تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ "لغة برمجة Rust" . تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ "لغة برمجة سويفت" . تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ "الإعلان عن TypeScript 1.0" . مايكروسوفت. 2 أبريل 2014. تم الاطلاع عليه بتاريخ 25 مايو 2026 .
- ↑ بانكاج سورانا (2006). التجميع الفائق لمفاهيم اللغة المجردة (أطروحة). جامعة نورث وسترن. ISBN 978-0-542-74444-0تم الاطلاع عليه بتاريخ 17 مارس 2008 .
- ↑ كوكيتايف، أرجين. "معيار عقوبة تجريد البيانات (DAP) للكائنات الصغيرة في جافا" . اتجاهات تطوير التطبيقات . مؤرشف من الأصل في 11 يناير 2009. تم الاسترجاع في 17 مارس 2008 .
- ↑ شاتزيجورجيو؛ ستيفانيدس (2002). "تقييم أداء وقوة لغات البرمجة الكائنية مقابل لغات البرمجة الإجرائية". في: بليبرجر؛ ستروميير (محرران). وقائع المؤتمر الدولي السابع حول تقنيات البرمجيات الموثوقة - آدا-أوروبا 2002. سبرينغر. ص 367.
- ↑ مانويل كارو؛ خوسيه ف. موراليس؛ هينك ل. مولر؛ ج. بويبلا؛ م. هيرمينجيلدو (2006). "لغات عالية المستوى للأجهزة الصغيرة: دراسة حالة" (ملف PDF) . وقائع المؤتمر الدولي لعام 2006 حول المترجمات، والهندسة المعمارية، والتوليف للأنظمة المدمجة . ACM.
- ↑ كيرنيغان، برايان دبليو؛ ريتشي، دينيس إم. (1988). لغة البرمجة سي: الطبعة الثانية . برنتيس هول. ISBN 9780131103627أُرشف من المصدر الأصلي بتاريخ 25 أكتوبر 2022. تم الاطلاع عليه بتاريخ 25 أكتوبر 2022 .
{{cite book}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط ) - ↑ هايد، راندال. (2010). فن لغة التجميع ( الطبعة الثانية). سان فرانسيسكو: دار نشر نو ستارش. ISBN 978-1-59327-301-9. OCLC 635507601 .
- ↑ تشو، ياوهان (1975). "مفاهيم بنية الحاسوب للغات البرمجة عالية المستوى". بنية الحاسوب للغات البرمجة عالية المستوى . إلسيفير. ص 1-14 . doi : 10.1016/b978-0-12-174150-1.50007-0 . ISBN 978-0-12-174150-1.
- ↑ حاسوب لغة برمجة عالية المستوى من شركة تكساس إنسترومنتس (SYMBOL)
- مختبر أبحاث الحاسوب في شركة تكساس إنسترومنتس (1972). SYMBOL: بنية حاسوبية بلغة عالية المستوى (ملف PDF) (تقرير فني). شركة تكساس إنسترومنتس. TI-SYMBOL-TR-1972 . تاريخ الاطلاع: 4 مايو 2026 .
- آر. إيه. كوالسكي؛ فريق البحث في شركة تكساس إنسترومنتس (1973). حاسوب SYMBOL: آلة لغة تجريبية عالية المستوى . المؤتمر الوطني للحاسوب التابع لـ AFIPS. مطبعة AFIPS. AFIPS-1973-SYMBOL . تاريخ الاسترجاع: 4 مايو 2026 .
{{cite conference}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط ) - مجموعة مشروع SYMBOL التابعة لشركة Texas Instruments (1974). "التنفيذ المباشر للغات البرمجة عالية المستوى في بنية SYMBOL" . مجلة اتصالات ACM . 17 (8). رابطة آلات الحوسبة: 453-460 . CACM-SYMBOL-1974 . تاريخ الاسترجاع: 4 مايو 2026 .
- قسم الأنظمة المتقدمة في شركة تكساس إنسترومنتس (1971). نظرة عامة على نظام SYMBOL (ملف PDF) (تقرير فني). شركة تكساس إنسترومنتس. TI-SYMBOL-OVERVIEW-1971 . تاريخ الاطلاع: 4 مايو 2026 .
- "فهرس وثائق حاسوب SYMBOL من شركة تكساس إنسترومنتس" . Bitsavers . تم الاطلاع عليه بتاريخ 4 مايو 2026 .
روابط خارجية
- https://c2.com/cgi/wiki?HighLevelLanguage – مقالة ويكي ويكي ويب حول لغات البرمجة عالية المستوى
- لغات البرمجة عالية المستوى
- تصنيف لغات البرمجة
