لغة البرمجة الأساسية المختلطة
عودة للموسوعةBCPL (لغة البرمجة الأساسية المختلطة) هي لغة برمجة إجرائية، ومنظم وضرورية صممها مارتن ريتشاردز من جامعة كامبريدج في 1966.
التصميم
في الاصل صممت لكتابة مترجمات لغات أخرى، BCPL لم يعد استعمالها شائع. ومع ذلك، لا نزال نشعر بنفوذها حتى الآن جرد بانخفاض وتم عمل إصدار بقواعد لغة مختلفة ومسماه بدل من من BCPL، أصبح B، وكانت اللغة التي استندت عليها لغة البرمجة C. BCPL كان أول لغة برمجة استخدمت القوس المجعد، والأقواس المتعرجة بقت عبر تغييرات بناء القواعد، وأصبحت وسيلة شائعة تدل على بيانات كود مصدر برنامج. في الممارسة العملية، على لوحات المفاتيح المحدودة هذه الايام، غالبا ما تستخدم برامج المصدر تسلسل $ (و$) في مكان الرموز و{. وتعليقات السطر واحد '/ /' BCPL، والتي لم تؤخذ في C، وعادت إلى الظهور في سي++، وبعد ذلك في C99.
وكان BCPL ردا على الصعوبات التي سابقتها في لغة البرمجة المختلطة (CPL)، التي أنشئت أوائل الستينات. ريتشاردز أنشاء BCPL من خلال "إزالة مميزات للغة الكاملة التي تجعل من الصعب تجميعها". وكان تطبيق مترجم اللغة الأول، لـ IBM 7094 تحت نظام اقتسام للوقت متوافق (CTSS)، وخطت في حين كان ريتشاردز يزور مشروع MAC في MIT (]]معهد ماساتشوستس للتكنولوجيا[[) في ربيع عام 1967. وقد وصفت الغة لأول مرة في ورقة قدمت إلى المؤتمر الحاسوب المشهجرة في ربيع 1969.
اللغة نظيفة، متناسقة، وقوية، وسهلة الانتنطق. ثبت بالتالي حتى من الممكن كتابة مترجمات صغيرة وبسيطة لها، وكما هوالشائع يمكن تشغيل بعض المترجمين في 16 كيلوبايت. علاوة على ذلك، مترجم ريتشاردز، في حد ذاته خط بلغة BCPL، زوكان سهل الانتنطق.. وكان BCPL بالتالي خيارا شعبيا لإلباس حذاء النظام.
أحد الأسباب الرئيسية لقابلية المترجم للنقل يكمن في هيكلته. وقد انقسم إلى قسمين : الطرف الأمامي تقوم بتحليل المصدر وتولد رمزO للجهاز الافتراضي، والطرف الخلفي اخذ رمزO وترجمه إلى رمز للجهاز المستهدف. هناك فقط 1 /خمسة من رموز المترجم بحاجة إلى إعادة كتابة لدعم جهاز جديد، وهي مهمة تستغرق عادة ما بين 2 وخمسة أشهر. وأصبح هذا النهج ممارسة شائعة في وقت لاحق، على سبيل المثال، باسكال أوچاڤا، ولكن مترجم ريتشاردز BCPL كان الأول لتحديد جهاز افتراضي لهذا الغرض.
اللغة غير عادية في وجود نوع واحد فقط من البيانات : حدثة، عدد محدد من البتات، وعادة ما يتم اختيارها لتتحد مع حدثة آلة البناء وبالقدرة الكافية لتمثيل أي عنوان تخزين صالح. لآلات كثيرة من ذلك الوقت، كان نوع البيانات حدثة 16 ]]بت [[. وهذا الخيار أثبت لاحقا أنه معضلة كبيرة عندما كانت تستخدم BCPL على الأجهزة التي أصغر بند عنونة فيها لم يكن حدثة، ولكن بايت أوعلى أجهزة مع أحجام أكبر للحدثات : 32 بت و64 بت، التي سمحت لهم بإدارة مسافات عنوان كبيرة.
وتم تحديد تفسير أي قيمة من قبل المشغلين الذين اعتادوا على معالجة القيم. (على سبيل المثال، + تضيف قيمتين معا وتتعامل معهما بوصفهما أعداد سليمة ؛! بلا إتجاه من خلال القيمة، وعالجتها بطريقة فعالة على أنها مؤشر.) ومن أجل حتى يعمل هذا، لم تقدم التطبيقات أي فحص للنوع. التدوين الرقمي المجري Hungarian notation تم وضعه للمساعدة المبرمجين على تجنب أخطاء النوع غير المقصودة.
عدم التطابق بين توجيه الحدثة لـ BCPL وأجهزة توجيه البايت تم معالجتها بعدة طرق. أحداها كان توفير إجراءات مخطة قياسية للتعبئة وتفريغ الحدثات إلى سلاسل بايتات. مفي وقت لاحق، تم إضافة ميزتين إلى اللغة : اختيارلمشغل مجال البايت وأقحام مشغل مراوغة البايت (أشيرت بواسطة الرمز '%').
BCPL تتولى ربط مجموعة الوحدات compilation units المنفصلة الممتدة بطريقة فريدة من نوعها. لا توجد متغيرات للمستخدم معلن عنها شاملاً، بدلا من ذلك هناك متجة شامل، الذي يشبه "فراغ مشهجر" في فورتران Fortran. جميع البيانات مشهجرة بين مجموعة الوحدات المتنوعة تضم المدرجات والمؤشرات إلى المتجهات المخزنة في مكان معد لهذا الغرض في متجة شامل. وبالتالي ملفات الرأس (الملفات المضمنة خلال التجميع باستخدام التوجيه "GET") تصبح الوسيلة الرئيسية لمزامنة البيانات الكاملة بين مجموعة الوحدات، التي تحتوي على توجيهات " GLOBAL" التي تسرد قائمة بأسماء رمزية، جميع مزدوج مع العدد الذي يقترن مع اسم الحدثة اللقاءة عدديا في المتجه الكامل. فضلا عن المتغيرات، ويحتوي المتجه الكامل أيضا على إجراءات الربط الخارجية. وهذا ما يجعل التحميل الديناميكي لمجموعة الوحدات تحقيقه سهل جدا. بدلا من الاعتماد على محمل الربط للتطبيق الأساسي.أعطت BCPL للمبرمج السيطرة ْ من عملية الربط بفاعلية.
المتجه الكامل أيضا سهل من عملية استبدال أوزيادة الإجراءات للمخطة القياسية. برنامج يمكن ان يحفظ المؤشر من المتجه الكامل للروتين الأصلي واستبداله بمؤشر لنسخة بديلة. ولعل البديلة تقوم باستنادىء الأصلية كجزء من معالجتها. ويمكن حتى تستخدم كوسيلة مساعدة سريعة ومؤقتة لتسليم الأخطاء.
BCPL كما هومشاع بأنها اللغة التي تم كتابة البرنامج الأصلي hello world program بها. كان الأول MUD مكتوب أيضا بلغة BCPL.
وكان الكثير من أنظمة التشغيل مكتوب جزئيا أوكليا بلغة BCPL (على سبيل المثال، TRIPOS وأجزاء كبيرة من AmigaOS، بما في ذلك بدء عمليات Kickstart وأقدم إصدارات AmigaDOS) وكانت BCPL أيضا اللغة الأولية المستخدمة في بذرة مشروع زيروكس بارك ألتوXerox PARC Alto، وهوأول كمبيوتر شخصي حديث، بين المشاريع الأخرى، ونظام إعداد وثيقة برافوخط أيضاً بلغة BCPL.
بحلول عام 1970، وجدت تطبيقات لـ Honeywell 635 و645, وIBM 360, وTX-2, وCDC 6400, وUnivac 1108, وPDP-9, وKDFتسعة وAtlas 2. وكان هناك أيضا نسخة المنتجة للمايكروبي بي سي BBC Micro في منتصف الثمانينات من منتجات كمبيوتر ريتشاردز، بدأت الشركة بجون ريتشاردز، شقيق الدكتور مارتن ريتشاردز. [citation needed] مشروع يوم قيامة بي بي سي BBC Domesday Project الذي قدم استخدام اللغة أيضاً. تم أيضا عمل إصدارات BCPL لأجهزة الكمبيوترAmstrad CPC وAmstrad PCWفي عام 1986 بواسطة شركة برامج بيت أرنور الإنجليزية المحدودة.
في عام 1979 تمت تطبيقات BCPL لما لا يقل عن 25 بنية ؛ في عام 2001 كان يرى ان استخدامها قليل.
ويمكن تلخيص فلسفة BCPL بالاقتباس من كتاب BCPL، اللغة ومترجمها : فلسفة BCPL أنها ليست مستبدة كالمستبد الذي يعتقد أنه يعهد أفضل ويضع القانون على ما مسموح به وما هوغير مسموح به، بل على الأصح BCPL تعمل كخادم يقدم خدماته على أفضل من قدرته دون شكوى، حتى عندما يقابل هراء واضح. ويفترض دائما حتى المبرمج يعهد ما يعمله ولا تحاصره القيود البسيطة.
تصميم، وفلسفة، BCPL أثرت بشدة في B، التي أثرت بدورها في C.
وهناك شائعات بأن BCPL كانت مرشحة لـ " لبس حذاء لغة برمجة كامبردج"، على أي حال لم توجد CPL حتى توقفت BCPL عن التنمية، والاسم المختصر كان إعادة تفسير لكتاب BCPL.
أمثلة
هذه الأمثلة كاملة وقابلة للمقارنة وهي من توزيع BCPL لمارتن ريتشاردز.
طباعة المضاريب:
GET "libhdr" LET start() = VALOF { FOR i = 1 TOخمسة DO writef("fact(%n) = %i4*n", i, fact(i)) RESULTIS 0 AND fact(n) = n=0 -> 1, n*fact(n-1)
حلول العد لمسألة ن من الملكات:
GET "libhdr" GLOBAL { count:200; all:201 LET try(ld, row, rd) BE TEST row=all THEN count := count + 1 ELSE { LET poss = all & ~(ld | row | rd) UNTIL poss=0 DO { LET p = poss & -poss poss := poss - p try(ld+p << 1, row+p, rd+p >> 1) LET start() = VALOF { all := 1 FOR i = 1 TO 12 DO { count := 0 try(0, 0, 0) writef("Number of solutions to %i2-queens is %i5*n", i, count) all := 2*all + 1 RESULTIS 0
المراجع
- ^ The Mud Connector: Mud and RPG game index, mudlist and reviews: Introduction to MUDs نسخة محفوظة 08 نوفمبر 2017 على مسقط واي باك مشين.
- Martin Richards, The BCPL Reference Manual (Memorandum M-352, Project MAC, Cambridge, July, 1967)
- Martin Richards, BCPL - a tool for compiler writing and systems programming (Proceedings of the Spring Joint Computer Conference, Vol 34, pp 557–566, 1969)
- Martin Richards, Arthur Evans, Robert F. Mabee, The BCPL Reference Manual (MAC TR-141, Project MAC, Cambridge, 1974)
- Martin Richards, C. Whitby-Strevens, BCPL, the language and its compiler (Cambridge University Press, 1980) ISBN 0-521-28681-6
وصلات خارجية
- Martin Richards' BCPL distribution
- Martin Richards's BCPL Reference Manual by Dennis M. Ritchie also includes some fascinating commentary from him about BCPL's influence on C
- BCPL entry in the العربي بن مهيدي
- Nordier & Associates' ميناء of BCPL to إكس 86: http://www.nordier.com/software/bcpl.html
التصنيفات: تاريخ الحوسبة في المملكة المتحدة, لغات برمجة إجرائية, لغات برمجة مهيكلة, لغات برمجة أنشئت في 1967, قالب أرشيف الإنترنت بوصلات واي باك, جميع المقالات التي بها عبارات بحاجة لمصادر, مقالات ذات عبارات بحاجة لمصادر منذ أكتوبر 2009, وصلات إنترويكي بحاجة لمراجعة, صفحات تستخدم خاصية P244, بوابة عقد 1960/مقالات متعلقة, بوابة برمجة الحاسوب/مقالات متعلقة, جميع المقالات التي تستخدم شريط بوابات, الصفحات التي تستخدم وصلات ISBN السحرية