نظرية لغات البرمجة

نظرية لغات البرمجة هي فرع من علوم الحاسوب يُعنى بتصميم وتنفيذ وتحليل وتوصيف وتصنيف اللغات الرسمية المعروفة بلغات البرمجة . وترتبط نظرية لغات البرمجة ارتباطًا وثيقًا بمجالات أخرى، بما في ذلك اللغويات والرياضيات وهندسة البرمجيات .
تاريخ
من بعض النواحي، يسبق تاريخ نظرية لغات البرمجة حتى ظهور لغات البرمجة نفسها. يُعتبر حساب لامدا ، الذي طوره ألونسو تشيرش وستيفن كول كلين في ثلاثينيات القرن العشرين، من وجهة نظر البعض، أول لغة برمجة في العالم، على الرغم من أنه كان يهدف إلى نمذجة العمليات الحسابية وليس وسيلةً للمبرمجين لوصف الخوارزميات لنظام حاسوبي. وقد وُصفت العديد من لغات البرمجة الوظيفية الحديثة بأنها تُقدم "طبقةً رقيقة" فوق حساب لامدا، [ 2 ] ويمكن وصف العديد منها بسهولة باستخدامه.
كانت لغة البرمجة Plankalkül أول لغة برمجة تُخترع ، وقد صممها كونراد تسوزه في أربعينيات القرن العشرين، لكنها لم تُعرف للعامة حتى عام 1972، ولم تُطبّق حتى عام 1998. أما أول لغة برمجة عالية المستوى معروفة وناجحة على نطاق واسع فكانت FORTRAN (اختصارًا لـ Formula Translation)، والتي طوّرها فريق من باحثي شركة IBM بقيادة جون باكوس بين عامي 1954 و1957 . أدى نجاح FORTRAN إلى تشكيل لجنة من العلماء لتطوير لغة حاسوب "عالمية"، وكانت نتيجة جهودهم لغة ALGOL 58. وفي سياق منفصل، طوّر جون مكارثي من معهد ماساتشوستس للتكنولوجيا (MIT) لغة Lisp ، وهي أول لغة برمجة أكاديمية الأصل تحقق نجاحًا. ومع نجاح هذه الجهود الأولية، أصبحت لغات البرمجة موضوعًا بحثيًا نشطًا في ستينيات القرن العشرين وما بعدها.
الجدول الزمني
بعض الأحداث الرئيسية الأخرى في تاريخ نظرية لغات البرمجة منذ ذلك الحين:
- خمسينيات القرن العشرين
- قام نعوم تشومسكي بتطوير التسلسل الهرمي لتشومسكي في مجال اللغويات، وهو اكتشاف أثر بشكل مباشر على نظرية لغات البرمجة وفروع أخرى من علوم الحاسوب.
- الستينيات
- في عام 1962، تم تطوير لغة Simula بواسطة Ole-Johan Dahl و Kristen Nygaard ؛ وتعتبر على نطاق واسع أول مثال على لغة برمجة كائنية التوجه ؛ كما قدمت Simula مفهوم الروتينات الفرعية .
- في عام 1964، كان بيتر لاندين أول من أدرك إمكانية استخدام حساب لامدا لتشرش لنمذجة لغات البرمجة. وقد قدم آلة SECD التي "تفسر" تعابير لامدا.
- في عام 1965، قدم لاندين عامل J ، وهو في الأساس شكل من أشكال الاستمرار .
- في عام 1966، قدم لاندين لغة البرمجة الحاسوبية المجردة ISWIM في مقالته "لغات البرمجة الـ 700 التالية" . وكان لها تأثير كبير في تصميم اللغات التي أدت إلى ظهور لغة هاسكل .
- في عام 1966، قدم كورادو بوم لغة CUCH (كاري-تشيرش). [ 3 ]
- في عام 1967، نشر كريستوفر ستراشي مجموعته المؤثرة من ملاحظات المحاضرات بعنوان " المفاهيم الأساسية في لغات البرمجة" ، والتي قدمت مصطلحات R-values و L-values و تعدد الأشكال البارامتري و تعدد الأشكال المخصص .
- في عام 1969، نشر ج. روجر هيندلي كتاب "مخطط النوع الرئيسي للكائن في المنطق التوافقي" ، والذي تم تعميمه لاحقًا في خوارزمية استدلال النوع هيندلي-ميلنر .
- في عام 1969، قدم توني هوار منطق هوار ، وهو شكل من أشكال الدلالات البديهية .
- في عام 1969، لاحظ ويليام ألفين هوارد أن نظام البرهان "عالي المستوى" ، والذي يُشار إليه بالاستنتاج الطبيعي ، يمكن تفسيره مباشرةً في نسخته الحدسية على أنه شكل مُنمذج من نموذج الحساب المعروف باسم حساب لامدا . وقد عُرف هذا باسم تناظر كاري-هوارد .
- سبعينيات القرن العشرين
- في عام 1970، نشر دانا سكوت لأول مرة عمله حول الدلالات الدلالية .
- في عام 1972، تم تطوير البرمجة المنطقية ولغة برولوج ، مما سمح بالتعبير عن برامج الكمبيوتر كمنطق رياضي.
- قام فريق من العلماء في مركز أبحاث زيروكس بارك بقيادة آلان كاي بتطوير لغة سمول توك ، وهي لغة كائنية التوجه معروفة على نطاق واسع ببيئة التطوير المبتكرة الخاصة بها.
- في عام 1974، اكتشف جون سي. رينولدز النظام F. وكان قد تم اكتشافه بالفعل في عام 1971 من قبل عالم المنطق الرياضي جان إيف جيرارد .
- منذ عام 1975، قام جيرالد جاي سوسمان وجاي ستيل بتطوير لغة Scheme ، وهي لهجة من لغة Lisp تتضمن نطاقًا معجميًا ، ومساحة اسم موحدة، وعناصر من نموذج الممثل بما في ذلك الاستمراريات من الدرجة الأولى .
- انتقد باكوس، في محاضرة جائزة تورينج لعام 1977 ، الوضع الحالي للغات الصناعية واقترح فئة جديدة من لغات البرمجة تُعرف الآن باسم لغات البرمجة على مستوى الوظائف .
- في عام 1977، قدم جوردون بلوتكين كتاب "برمجة الدوال القابلة للحساب" ، وهي لغة وظيفية مجردة ذات أنواع محددة.
- في عام 1978، قدم روبن ميلنر خوارزمية استدلال نظام الأنواع هيندلي-ميلنر للغة ML . وقد تم تطبيق نظرية الأنواع كعلم على لغات البرمجة، وأدى هذا التطبيق إلى تطورات كبيرة في نظرية الأنواع على مر السنين.
- ثمانينيات القرن العشرين
- في عام 1981، نشر جوردون بلوتكين بحثه حول الدلالات التشغيلية المهيكلة .
- في عام 1988، نشر جيل كان بحثه حول الدلالات الطبيعية .
- وقد ظهرت حسابات العمليات ، مثل حساب الأنظمة المتصلة لروبن ميلنر ، ونموذج العمليات المتسلسلة المتصلة لكار هوار ، بالإضافة إلى نماذج مماثلة للتزامن مثل نموذج الفاعل لكارل هيويت .
- في عام 1985، أثار إصدار لغة ميراندا اهتمامًا أكاديميًا بلغات البرمجة الوظيفية البحتة ذات التقييم الكسول . وشُكّلت لجنة لوضع معيار مفتوح، مما أدى إلى إصدار معيار هاسكل 1.0 في عام 1990.
- ابتكر برتراند ماير منهجية التصميم التعاقدي وأدمجها في لغة إيفل .
- التسعينيات
- قام كل من غريغور كيتشاليس وجيم دي ريفيير ودانيال جي. بوبرو بنشر كتاب " فن بروتوكول الكائن الميتا" .
- قدم كل من يوجينيو موجي وفيليب وادلر استخدام المونادات لهيكلة البرامج المكتوبة بلغات البرمجة الوظيفية .
التخصصات الفرعية والمجالات ذات الصلة
توجد عدة مجالات دراسية تندرج ضمن نظرية لغات البرمجة، أو تؤثر فيها تأثيراً عميقاً؛ ويتداخل الكثير منها بشكل كبير. إضافةً إلى ذلك، تستفيد نظرية لغات البرمجة من فروع أخرى عديدة في الرياضيات ، بما في ذلك نظرية الحوسبة ، ونظرية الفئات ، ونظرية المجموعات .
الدلالات الرسمية
الدلالات الرسمية هي المواصفات الرسمية لسلوك برامج الحاسوب ولغات البرمجة. ثلاثة مناهج شائعة لوصف دلالات أو "معنى" برنامج الحاسوب هي: الدلالات الدلالية ، والدلالات التشغيلية ، والدلالات البديهية .
نظرية الأنواع
نظرية الأنواع هي دراسة أنظمة الأنواع ؛ وهي "طريقة نحوية قابلة للتطبيق لإثبات غياب سلوكيات برمجية معينة عن طريق تصنيف العبارات وفقًا لأنواع القيم التي تحسبها". [ 4 ] تتميز العديد من لغات البرمجة بخصائص أنظمة الأنواع الخاصة بها.
تحليل البرامج وتحويلها
تحليل البرامج هو المشكلة العامة المتمثلة في فحص برنامج ما وتحديد خصائصه الرئيسية (مثل غياب أنواع معينة من أخطاء البرنامج ). أما تحويل البرامج فهو عملية تحويل برنامج من شكل (لغة) إلى شكل آخر.
تحليل لغات البرمجة المقارنة
يسعى تحليل لغات البرمجة المقارن إلى تصنيف اللغات إلى أنواع مختلفة بناءً على خصائصها؛ وغالبًا ما تُعرف الفئات الواسعة من اللغات باسم نماذج البرمجة .
البرمجة العامة والبرمجة الوصفية
البرمجة الميتا هي توليد برامج من الدرجة العليا والتي، عند تنفيذها، تنتج برامج (ربما بلغة مختلفة، أو في مجموعة فرعية من اللغة الأصلية) كنتيجة لذلك.
لغات خاصة بالمجال
اللغات الخاصة بالمجال هي تلك التي تم تصميمها لحل المشكلات بكفاءة في مجال معين، أو جزء منه.
بناء المترجم
نظرية المترجمات هي نظرية كتابة المترجمات (أو بشكل أعم، برامج الترجمة )؛ وهي برامج تترجم برنامجًا مكتوبًا بلغة برمجة إلى لغة أخرى. وتنقسم مهام المترجم تقليديًا إلى تحليل بناء الجملة ( المسح والتحليل النحوي )، والتحليل الدلالي (تحديد وظيفة البرنامج)، والتحسين (تحسين أداء البرنامج وفقًا لمقياس معين؛ عادةً سرعة التنفيذ)، وتوليد الكود (توليد وإخراج برنامج مكافئ بلغة برمجة مستهدفة؛ غالبًا ما تكون بنية مجموعة تعليمات وحدة المعالجة المركزية ).
أنظمة وقت التشغيل
تشير أنظمة وقت التشغيل إلى تطوير بيئات وقت تشغيل لغة البرمجة ومكوناتها، بما في ذلك الآلات الافتراضية وجمع البيانات المهملة وواجهات الوظائف الخارجية .
المجلات والمنشورات والمؤتمرات
تُعد المؤتمرات المنصة الرئيسية لعرض الأبحاث في لغات البرمجة. ومن أبرز المؤتمرات المعروفة: ندوة مبادئ لغات البرمجة (POPL)، وتصميم لغات البرمجة وتنفيذها (PLDI)، والمؤتمر الدولي للبرمجة الوظيفية (ICFP)، والمؤتمر الدولي للبرمجة الكائنية والأنظمة واللغات والتطبيقات ( OOPSLA )، والمؤتمر الدولي للدعم المعماري للغات البرمجة وأنظمة التشغيل (ASPLOS).
تشمل المجلات البارزة التي تنشر أبحاث PLT كلاً من ACM Transactions on Programming Languages and Systems (TOPLAS) و Journal of Functional Programming (JFP) و Journal of Functional and Logic Programming و Higher-Order and Symbolic Computation .
انظر أيضاً
مراجع
- ↑ أبيلسون، هارولد ؛ سوسمان، جيرالد جاي ؛ سوسمان، جولي (1996). بنية وتفسير برامج الحاسوب ( الطبعة الثانية). كامبريدج، ماساتشوستس: مطبعة معهد ماساتشوستس للتكنولوجيا . ISBN 0-262-01153-0. OCLC 34576857 .
- ↑ "نماذج الحوسبة" . wiki.c2.com . 3 ديسمبر 2014. مؤرشف من الأصل في 30 نوفمبر 2020.
- ^ سي. بوم و دبليو جروس (1996). مقدمة إلى CUCH. في ER Caianiello (محرر)، نظرية الأوتوماتا ، ص. 35-64.
- ↑ بنجامين سي. بيرس. 2002. الأنواع ولغات البرمجة . مطبعة معهد ماساتشوستس للتكنولوجيا، كامبريدج، ماساتشوستس، الولايات المتحدة الأمريكية.
للمزيد من القراءة
- عبادي، مارتن وكارديلي ، لوكا . نظرية الأشياء . سبرينغر-فيرلاغ.
- مايكل جيه سي جوردون . نظرية لغات البرمجة وتطبيقها . برنتيس هول.
- غونتر، كارل وميتشل، جون سي . (محرران). الجوانب النظرية للغات البرمجة الموجهة للكائنات: الأنواع، والدلالات، وتصميم اللغة . مطبعة معهد ماساتشوستس للتكنولوجيا.
- هاربر، روبرت . الأسس العملية للغات البرمجة . نسخة مسودة.
- كنوت، دونالد إي. (2003). أوراق مختارة حول لغات الحاسوب . ستانفورد، كاليفورنيا: مركز دراسة اللغة والمعلومات.
- ميتشل، جون سي. أسس لغات البرمجة .
- ميتشل، جون سي. مقدمة في نظرية لغات البرمجة .
- أوهيرن، بيتر دبليو. وتينينت، روبرت دي. (1997). لغات شبيهة بلغة ALGOL . التقدم في علوم الحاسوب النظرية. بيركهاوزر، بوسطن.
- بيرس، بنجامين سي. (2002). الأنواع ولغات البرمجة . مطبعة معهد ماساتشوستس للتكنولوجيا.
- بيرس، بنجامين سي. مواضيع متقدمة في أنواع ولغات البرمجة .
- بيرس، بنجامين سي وآخرون (2010). أسس البرمجيات .
روابط خارجية
- Lambda the Ultimate ، مدونة مجتمعية للنقاش المهني ومستودع للوثائق المتعلقة بنظرية لغات البرمجة.
- الأعمال العظيمة في لغات البرمجة . جمعها بنيامين سي. بيرس ( جامعة بنسلفانيا ).
- أوراق بحثية كلاسيكية في لغات البرمجة والمنطق . جمعها كارل كراري ( جامعة كارنيجي ميلون ).
- أبحاث لغات البرمجة . دليل من إعداد مارك ليون.
- حساب التفاضل والتكامل لامدا: الماضي والحاضر، بقلم دانا س. سكوت، بمناسبة احتفال جمعية آلات الحوسبة بالذكرى المئوية لتورينغ.
- التحديات الكبرى في لغات البرمجة . جلسة نقاش في مؤتمر POPL 2009.
- نظرية لغات البرمجة
