باسكال (لغة برمجة)
باسكال هي لغة برمجة إجرائية وأمرية ، صممها نيكلاوس ويرث كلغة صغيرة وفعالة تهدف إلى تشجيع ممارسات البرمجة الجيدة باستخدام البرمجة الهيكلية وهيكلة البيانات . سُميت على اسم عالم الرياضيات والفيلسوف والفيزيائي الفرنسي بليز باسكال .
طُوِّرت لغة باسكال على غرار لغة ALGOL 60. شارك ويرث في عملية تحسين اللغة ضمن جهود ALGOL X ، واقترح نسخةً باسم ALGOL W. لم يُقبل هذا الاقتراح، وتعثرت عملية ALGOL X. في عام 1968، قرر ويرث التخلي عن ALGOL X والتركيز على تطوير ALGOL W، وأصدرها باسم باسكال في عام 1970.
بالإضافة إلى المتغيرات العددية والمصفوفات في لغة ALGOL ، تُمكّن لغة باسكال من تعريف أنواع بيانات معقدة وبناء هياكل بيانات ديناميكية ومتكررة، مثل القوائم والأشجار والرسوم البيانية . تتميز باسكال بنظام كتابة قوي لجميع الكائنات، مما يعني أنه لا يمكن تحويل نوع بيانات إلى آخر أو تفسيره على هذا النحو دون تحويلات صريحة. على عكس لغة C (وكذلك معظم اللغات الأخرى في عائلة C )، تسمح باسكال بتعريفات الإجراءات المتداخلة إلى أي عمق، وتسمح بمعظم أنواع التعريفات والتصريحات داخل الإجراءات الفرعية (الإجراءات والدوال). وبالتالي، يكون البرنامج مشابهًا من الناحية التركيبية لإجراء أو دالة واحدة. يشبه هذا بنية الكتل في ALGOL 60، ولكنه يقتصر على الإجراءات والدوال فقط، دون عبارات كتل عشوائية.
حققت لغة باسكال نجاحًا باهرًا في سبعينيات القرن العشرين، لا سيما في سوق الحواسيب الصغيرة المزدهرة . كما توفرت مترجمات برمجية للعديد من الحواسيب الصغيرة مع ظهور هذا المجال في أواخر السبعينيات. وانتشر استخدامها كلغة تدريس في دورات البرمجة الجامعية في ثمانينيات القرن العشرين، كما استُخدمت في بيئات الإنتاج لكتابة البرامج التجارية خلال الفترة نفسها. إلا أنها تراجعت أمام لغة البرمجة سي في أواخر الثمانينيات وأوائل التسعينيات مع ازدياد شعبية أنظمة يونكس ، وخاصةً مع إصدار لغة سي++ .
طُوِّرت لغة برمجة مشتقة تُدعى أوبجكت باسكال، مصممة خصيصًا للبرمجة كائنية التوجه، عام ١٩٨٥. استخدمتها شركة أبل (لأجهزة ليزا وماكنتوش ) وشركة بورلاند في أواخر ثمانينيات القرن العشرين، ثم طُوِّرت لاحقًا إلى دلفي على منصة مايكروسوفت ويندوز . أدت التوسعات في مفاهيم باسكال إلى ظهور لغتي موديولا-٢ وأوبرون ، اللتين طوّرهما ويرث.
تاريخ
الجهود السابقة
يعود جزء كبير من تاريخ تصميم لغات البرمجة خلال ستينيات القرن العشرين إلى لغة ALGOL 60. طُوّرت ALGOL خلال خمسينيات القرن العشرين بهدف واضح هو القدرة على وصف الخوارزميات بوضوح . وقد تضمنت عددًا من ميزات البرمجة الهيكلية التي لا تزال شائعة في لغات البرمجة حتى يومنا هذا.
بعد فترة وجيزة من طرحها عام ١٩٦٢، بدأ ويرث العمل على أطروحته مع هيلموت ويبر حول لغة البرمجة أويلر . استندت أويلر إلى بنية لغة ALGOL والعديد من مفاهيمها، لكنها لم تكن مشتقة منها. كان هدفها الأساسي إضافة قوائم وأنواع ديناميكية، مما أتاح استخدامها في أدوار مشابهة للغة Lisp . نُشرت اللغة عام ١٩٦٥.
بحلول ذلك الوقت، تم تحديد عدد من المشاكل في لغة ALGOL، أبرزها غياب نظام موحد للسلاسل النصية . بدأ الفريق المكلف بصيانة اللغة عملية ALGOL X لتحديد التحسينات، داعيًا إلى تقديم مقترحات. قدم ويرث وتوني هوار مجموعة من التعديلات البسيطة لإضافة السلاسل النصية وتحسين بعض قواعد اللغة. ونظرًا لأن هذه التعديلات اعتُبرت طفيفة جدًا بحيث لا تستحق استخدامها كمعيار جديد للغة ALGOL، قام ويرث بكتابة مُترجم للغة، والذي أصبح يُعرف باسم ALGOL W.
اتجهت جهود ALGOL X لاحقًا نحو اختيار لغة أكثر تعقيدًا، وهي ALGOL 68. وقد أدى تعقيد هذه اللغة إلى صعوبة بالغة في إنتاج مترجمات عالية الأداء، ولم تُستخدم على نطاق واسع في الصناعة. وقد أتاح ذلك المجال للغات أحدث.
باسكال
تأثرت لغة باسكال بجهود مشروع ALGOL W، التي كان من أهدافها الواضحة تعليم البرمجة بطريقة منظمة وتطوير برمجيات الأنظمة. [ 5 ] استخدم جيل من الطلاب لغة باسكال كلغة تمهيدية في مقررات المرحلة الجامعية. وشملت الأهداف الأخرى توفير أداة موثوقة وفعالة لكتابة البرامج الكبيرة، [ 6 ] وسد الفجوة بين البرمجة العلمية والتجارية، كما هو ممثل في لغتي فورتران وكوبول اللتين كانتا منتشرتين آنذاك، من خلال لغة برمجة عامة الأغراض. [ 7 ]
كان من أوائل نجاحات لغة باسكال إطلاق جامعة كاليفورنيا في سان دييغو (UCSD) لنسخة UCSD Pascal ، وهي نسخة تعمل على نظام تشغيل مخصص قابل للنقل إلى منصات مختلفة. وكانت منصة Apple II من أهم هذه المنصات ، حيث شاع استخدامها باسم Apple Pascal . أدى ذلك إلى أن تصبح باسكال اللغة البرمجية عالية المستوى الرئيسية المستخدمة في تطوير Apple Lisa ، ولاحقًا Macintosh . وقد تُرجمت أجزاء من نظام تشغيل Macintosh الأصلي يدويًا إلى لغة التجميع Motorola 68000 من شفرة المصدر الخاصة بلغة باسكال . [ 8 ]
كُتب نظام التنضيد TeX، الذي ابتكره دونالد كنوث، بلغة WEB ، وهي نظام البرمجة الأصلي القائم على لغة باسكال ( PDP-10) من شركة Digital Equipment Corporation (DEC) . أما التطبيقات التجارية الناجحة، مثل Adobe Photoshop [ 9 ]، فقد كُتبت بلغة باسكال (Macintosh Programmer's Workshop Pascal)، بينما كُتبت تطبيقات أخرى، مثل Total Commander و Skype [ 10 ] و Macromedia Captivate، بلغة Delphi ( Object Pascal ). وقد استخدمت شركة Apollo Computer لغة باسكال كلغة برمجة لأنظمة تشغيلها بدءًا من عام 1980.
استُخدمت نسخ مختلفة من لغة باسكال في كل شيء بدءًا من المشاريع البحثية وصولًا إلى ألعاب الكمبيوتر والأنظمة المدمجة . وتوجد مُجمِّعات باسكال أحدث تُستخدم على نطاق واسع. [ 11 ]
اللهجات
استخدم نظام Pascal-P، وهو مُجمِّع نموذجي من تصميم ويرث يهدف إلى نشر اللغة، مجموعة فرعية من اللغة مصممة لتكون أصغر مجموعة فرعية قادرة على ترجمة نفسها. كانت الفكرة هي أن هذا يسمح بتشغيل المُجمِّع تلقائيًا، والذي سيتم توسيعه لاحقًا ليصبح لغة باسكال كاملة. تم تطبيق هذا على العديد من المُجمِّعات، ولكن كان هناك استثناء بارز وهو UCSD Pascal، الذي استند إلى Pascal-P2. حافظ هذا النظام على حالة المجموعة الفرعية من اللغة انطلاقًا من فكرة أن هذا سيعمل بشكل أفضل على المعالجات الدقيقة الجديدة (آنذاك) ذات الذاكرة المحدودة. كما حوّلت جامعة كاليفورنيا في سان دييغو (UCSD) مُفسِّر Pascal-P2 إلى "آلة بايت"، وذلك لأنه سيكون أكثر ملاءمة للمعالجات الدقيقة الموجهة نحو البايت.
شكّلت لغة باسكال من جامعة كاليفورنيا في سان دييغو (UCSD) أساسًا للعديد من الأنظمة، بما في ذلك نظام باسكال من آبل. لم تُبنَ لغة باسكال من بورلاند على قاعدة بيانات UCSD، ولكنها ظهرت خلال فترة ازدهار UCSD وتوافقت مع العديد من ميزاتها. هذا ما بدأ سلسلة لغات البرمجة التي انتهت بلغة باسكال من دلفي والمترجم مفتوح المصدر المتوافق معها FPC/ Lazarus .
تم نشر معيار ISO 7185 للغة باسكال عام 1983، وقد تم تطبيقه واستخدامه على نطاق واسع في الحواسيب المركزية والحواسيب الصغيرة وحواسيب IBM الشخصية والحواسيب المتوافقة معها، من 16 بت إلى 32 بت . أما لهجتا باسكال الأكثر استخدامًا في أواخر القرن العشرين وحتى اليوم فهما نسخة معيار ISO 7185 ونسختا دلفي/توربو باسكال (والتي تتوافق نسختا بورلاند منها بشكل كبير).
يمكن العثور على مصدر الكثير من المعلومات التاريخية المبكرة حول لغة باسكال في النشرات الإخبارية لمجموعة مستخدمي باسكال على الرابط التالي:
أوبجكت باسكال
أثناء العمل على جهاز ليزا، بدأ لاري تيسلر مراسلة ويرث حول فكرة إضافة امتدادات كائنية التوجه إلى لغة باسكال، لجعلها لغة برمجة متعددة الأنماط . أدى ذلك في البداية إلى ظهور لغة كلاسكال ، التي طُرحت عام ١٩٨٣. ومع تراجع برنامج ليزا واستبداله بجهاز ماكنتوش، تم إنشاء نسخة أخرى سُميت أوبجكت باسكال . طُرحت هذه النسخة على جهاز ماك عام ١٩٨٥ كجزء من إطار عمل تطبيقات ماك آب ، وأصبحت لغة التطوير الرئيسية لشركة آبل حتى أوائل التسعينيات.
أُضيفت ملحقات Object Pascal إلى Turbo Pascal مع إصدار النسخة 5.5 عام 1989. [ 12 ] على مر السنين، أصبحت Object Pascal أساس نظام Delphi لنظام Microsoft Windows ، والذي لا يزال يُستخدم لتطوير تطبيقات Windows، كما أنه قادر على ترجمة التعليمات البرمجية إلى أنظمة أخرى. أما Free Pascal فهو بديل مفتوح المصدر ومتعدد المنصات، مزود ببيئة تطوير متكاملة رسومية خاصة به تُسمى Lazarus .
التطبيقات
المجمّعون الأوائل
صُمم أول مُترجم للغة باسكال في زيورخ لعائلة الحواسيب المركزية من سلسلة CDC 6000. ويذكر نيكلاوس ويرث أن المحاولة الأولى لتنفيذه بلغة فورتران 66 عام 1969 باءت بالفشل بسبب قصور فورتران 66 في التعبير عن هياكل البيانات المعقدة. أما المحاولة الثانية، فقد نُفذت بلغة شبيهة بلغة سي (سكالوب من تطوير ماكس إنجيلي)، ثم تُرجمت يدويًا (بواسطة ر. شيلد) إلى باسكال نفسها لتسهيل عملية التشغيل . [ 13 ] وأصبح جاهزًا للعمل بحلول منتصف عام 1970. ومنذ ذلك الحين، أصبحت العديد من مُترجمات باسكال ذاتية الاستضافة ، أي أن المُترجم نفسه مكتوب بلغة باسكال، وعادةً ما يكون قادرًا على إعادة ترجمة نفسه عند إضافة ميزات جديدة إلى اللغة، أو عند نقله إلى بيئة جديدة. ويُعد مُترجم GNU باسكال استثناءً بارزًا، إذ كُتب بلغة سي.
أنجز ويلش وكوين في جامعة كوينز بلفاست (QUB) عام 1972 أول عملية نقل ناجحة لمترجم لغة باسكال (CDC Pascal) إلى حاسوب مركزي آخر. وكان الهدف هو سلسلة 1900 من شركة International Computers Limited (ICL) . وكان هذا المترجم بدوره هو الأصل لمترجم باسكال الخاص بالحاسوب المصغر Multum من شركة Information Computer Systems (ICS) . وقد طُوِّرت نسخة Multum - بهدف استخدام باسكال كلغة برمجة أنظمة - على يد فيندلاي وكابلز وكافوراس وديفيس، العاملين في قسم علوم الحاسوب بجامعة غلاسكو . ويُعتقد أن لغة باسكال Multum، التي اكتملت في صيف عام 1973، ربما كانت أول تطبيق لها يعمل بنظام 16 بت .
أنجز ويلش وزملاؤه في جامعة كوينز بلفاست عام 1977 مُترجمًا جديدًا كليًا. وقد وفّر هذا المُترجم ميزة تشخيصية للغة المصدر (تتضمن تحليل الأداء، والتتبع، وتفريغ البيانات بعد انتهاء العملية مع مراعاة أنواع البيانات)، وقد نفّذها فيندلاي ووات في جامعة غلاسكو. وفي عام 1980، نُقل هذا التنفيذ إلى سلسلة ICL 2900 بواسطة فريق من جامعتي ساوثهامبتون وغلاسكو. كما استند تنفيذ نموذج باسكال القياسي إلى هذا المُترجم، بعد أن قام ويلش وهاي في جامعة مانشستر عام 1984 بتعديله للتحقق بدقة من التوافق مع معيار BSI 6192/ISO 7185، ولتوليد شفرة لآلة مجردة محمولة.
تم بناء أول مترجم لغة باسكال في أمريكا الشمالية في جامعة إلينوي تحت إشراف دونالد ب. جيليس لجهاز PDP-11 ، وكان يُنتج شفرة الآلة الأصلية. وكانت مايكروسوفت تُوفر مترجمات باسكال لأجهزة IBM PC؛ انظر مايكروسوفت باسكال .
نظام باسكال-بي
لتسريع انتشار اللغة، تم إنشاء مجموعة أدوات لنقل المترجم في زيورخ، تضمنت مترجمًا يُولّد ما يُسمى برمز p لآلة المكدس الافتراضية ، أي رمزًا يُسهّل تفسيره بكفاءة معقولة، بالإضافة إلى مُفسّر لهذا الرمز - نظام باسكال-P. سُمّيت مترجمات نظام P بـ باسكال-P1، وباسكال-P2، وباسكال-P3، وباسكال-P4. كان باسكال-P1 هو الإصدار الأول، وباسكال-P4 هو الأخير الذي صدر من زيورخ. سُمّي الإصدار باسكال-P1 لاحقًا نظرًا لتعدد مصادر باسكال-P الموجودة. أُعيد تصميم المترجم لتحسين قابلية النقل ، وصدر باسم باسكال-P2. تم تحسين هذا الرمز لاحقًا ليصبح باسكال-P3، مع رمز وسيط متوافق مع الإصدارات السابقة من باسكال-P2، وباسكال-P4، الذي لم يكن متوافقًا مع الإصدارات السابقة.
لا يزال بالإمكان تشغيل مُترجم ومُفسِّر لغة باسكال-P4 وتجميعه على الأنظمة المتوافقة مع لغة باسكال الأصلية (كما هو الحال مع باسكال-P2). ومع ذلك، فهو لا يقبل سوى مجموعة فرعية من لغة باسكال.
يقبل Pascal-P5، الذي تم إنشاؤه خارج مجموعة زيورخ، لغة باسكال الكاملة ويتضمن توافقًا مع معيار ISO 7185.
Pascal-P6 هو امتداد لـ Pascal-P5 والذي يهدف، إلى جانب ميزات أخرى، إلى أن يكون مترجمًا لوحدات المعالجة المركزية المحددة، بما في ذلك AMD64.
انبثقت لغة UCSD Pascal من Pascal-P2، حيث استخدمها كينيث بولز لإنشاء نظام UCSD p-System التفسيري . وكانت إحدى أنظمة التشغيل الثلاثة المتاحة عند إطلاق جهاز IBM Personal Computer الأصلي . [ 14 ] استخدمت UCSD Pascal رمزًا وسيطًا يعتمد على قيم البايت، وبالتالي كانت من أوائل مترجمات البايت كود . صدرت Apple Pascal في عام 1979 لأنظمة Apple II و Apple III . وكانت تطبيقًا لـ UCSD Pascal أو مبنية عليها إلى حد كبير. أما Pascal-P1 إلى Pascal-P4 فلم تكن كذلك، بل كانت مبنية على طول الكلمة 60 بت في CDC 6600 .
أصدرت هيئة الطاقة الذرية الأسترالية برنامجًا مترجمًا يعتمد على برنامج Pascal-P4، والذي كان يُنشئ ملفات كائنات ثنائية أصلية، لجهاز الكمبيوتر المركزي IBM System / 370 ؛ وقد سُمي برنامج AAEC Pascal 8000 Compiler اختصارًا لاسم الهيئة. [ 15 ]
أوبجكت باسكال وتوربو باسكال
قامت شركة أبل كمبيوتر بإنشاء لغة ليزا باسكال الخاصة بها لورشة عمل ليزا في عام 1982، وقامت بنقل المترجم إلى أبل ماكنتوش و MPW في عام 1985. في عام 1985، قام لاري تيسلر ، بالتشاور مع نيكلاوس ويرث، بتعريف لغة أوبجكت باسكال وتم دمج هذه الامتدادات في كل من مترجمي ليزا باسكال وماك باسكال.
في ثمانينيات القرن العشرين، كتب أندرس هيلسبرغ مترجم لغة باسكال بلو ليبل لجهاز ناسكوم -2. وتم تسويق نسخة معاد تنفيذها من هذا المترجم لجهاز الكمبيوتر الشخصي من شركة IBM تحت اسمي كومباس باسكال وبولي باسكال قبل أن تستحوذ عليها شركة بورلاند وتعيد تسميتها إلى توربو باسكال .
حققت لغة Turbo Pascal شعبية هائلة بفضل استراتيجية التسعير التنافسية، وامتلاكها لواحدة من أوائل بيئات التطوير المتكاملة (IDEs) التي تعمل بملء الشاشة، وسرعة إنجازها الفائقة (ثوانٍ معدودة فقط للتجميع والربط والتشغيل). وقد كُتبت وحُسّنت بشكل كبير باستخدام لغة التجميع ، مما جعلها أصغر حجمًا وأسرع من معظم منافسيها.
في عام ١٩٨٦، قام أندرس بنقل برنامج Turbo Pascal إلى نظام ماكنتوش، ودمج امتدادات Object Pascal الخاصة بشركة Apple في Turbo Pascal. ثم أُضيفت هذه الامتدادات مرة أخرى إلى نسخة الحاسوب الشخصي من Turbo Pascal في الإصدار ٥.٥. في الوقت نفسه، قامت مايكروسوفت أيضًا بتطبيق مُصرّف Object Pascal. [ ١٦ ] [ ١٧ ] كان لـ Turbo Pascal ٥.٥ تأثير كبير على مجتمع Pascal، الذي بدأ بالتركيز بشكل أساسي على حاسوب IBM الشخصي في أواخر ثمانينيات القرن الماضي. استخدم العديد من هواة الحاسوب الشخصي هذا المنتج بحثًا عن بديل منظم للغة BASIC. كما بدأ المطورون المحترفون في اعتماده. في نفس الفترة تقريبًا، تم استيراد عدد من المفاهيم من لغة C لتمكين مبرمجي Pascal من استخدام واجهة برمجة التطبيقات (API) الخاصة بنظام Microsoft Windows والمبنية على لغة C مباشرةً. شملت هذه الامتدادات السلاسل النصية المنتهية بـ null ، وحساب المؤشرات ، ومؤشرات الدوال ، ومعامل عنوان، وتحويلات الأنواع غير الآمنة .
تُعدّ لغة Turbo Pascal وغيرها من اللغات المشتقة منها ذات البنية الوحدوية أو النمطية لغات برمجة نمطية . ومع ذلك، فهي لا توفر مفهوم الوحدة المتداخلة أو إمكانية استيراد وتصدير رموز محددة بشكل مؤهل.
متغيرات أخرى
يضيف Super Pascal تسميات غير رقمية، وعبارة إرجاع، وتعبيرات كأسماء للأنواع.
كانت لغة TMT Pascal أول مترجم متوافق مع Borland لأنظمة 32 بت المتوافقة مع وضع الحماية MS-DOS و OS/2 و Win32 . وهي توسع اللغة من خلال تحميل الدوال والمعاملات الزائدة .
طوّرت جامعات ويسكونسن-ماديسون ، وزيورخ ، وكارلسروه ، وفوبيرتال مُجمّعي Pascal-SC [ 18 ] [ 19 ] و Pascal-XSC [ 20 ] [ 21 ] [ 22 ] ( امتدادات للحوسبة العلمية )، بهدف برمجة العمليات الحسابية العددية. بدأ تطوير Pascal-SC عام 1978 بدعم مستوى ISO 7185 Pascal 0، ثم أُضيف دعم المستوى 2 لاحقًا. [ 23 ] استهدف Pascal-SC في الأصل معالج Z80 ، ولكن أُعيدت كتابته لاحقًا لنظام DOS ( x86 ) ومعالج 68000. نُقل Pascal-XSC في أوقات مختلفة إلى أنظمة تشغيل Unix (Linux، و SunOS ، و HP-UX ، وAIX ) وأنظمة تشغيل Microsoft/IBM (DOS مع EMX ، وOS/2، و Windows ). يعمل البرنامج عن طريق توليد شفرة مصدرية وسيطة بلغة C، والتي تُترجم بعد ذلك إلى ملف تنفيذي أصلي. وقد اعتمدت GNU Pascal بعض امتدادات لغة Pascal-SC .
صُممت لغة باسكال سول حوالي عام ١٩٨٣ من قِبل فريق فرنسي لتنفيذ نظام شبيه بنظام يونكس يُسمى سول. كانت لغة باسكال قياسية من المستوى الأول (مع حدود مصفوفة مُعاملة)، لكن تعريفها سمح باستخدام كلمات مفتاحية بديلة ومعرّفات مُحددة مسبقًا باللغة الفرنسية، وتضمنت اللغة بعض الإضافات لتسهيل برمجة النظام (مثل مُكافئ للدالة lseek). [ ٢٤ ] انتقل فريق سول لاحقًا إلى مشروع ChorusOS لتصميم نظام تشغيل مُوزع . [ ٢٥ ]
IP Pascal هو تطبيق للغة البرمجة باسكال باستخدام نظام التشغيل Micropolis DOS، ولكن سرعان ما تم نقله إلى نظام CP/M-80 الذي يعمل على معالج Z80. ثم تم نقله إلى أنواع أجهزة 80386 في عام 1994، وهو متوفر اليوم كتطبيقات لأنظمة التشغيل Windows XP وLinux. في عام 2008، تم تطوير النظام إلى مستوى جديد، وأُطلق على اللغة الناتجة اسم "Pascaline" (نسبةً إلى آلة حاسبة باسكال ). تتضمن هذه اللغة الكائنات، وعناصر التحكم في مساحات الأسماء ، والمصفوفات الديناميكية ، والعديد من الإضافات الأخرى، وتتميز عمومًا بنفس وظائف وحماية أنواع البيانات التي تتميز بها لغة C# . وهي التطبيق الوحيد المتوافق أيضًا مع تطبيق باسكال الأصلي، الموحد وفقًا لمعيار ISO 7185.
تراكيب اللغة
لغة باسكال، في شكلها الأصلي، هي لغة إجرائية بحتة ، وتتضمن مجموعة تقليدية من هياكل التحكم الشبيهة بلغة ALGOL، مع كلمات محجوزة مثل if` <td> then` elseو`<td while>` forو`<td>` و` <td>` و` <td >`، caseوالتي يمكن تطبيقها على عبارة واحدة أو كتلة من العبارات. كما تحتوي باسكال على بنيات هيكلية للبيانات غير موجودة في أنواع ALGOL 60 الأصلية ، مثل السجلات والمتغيرات والمؤشرات والتعدادات والمجموعات ومؤشرات الإجراءات. وقد استُمدت هذه البنيات جزئيًا من لغات Simula 67 و ALGOL 68 و ALGOL W الخاصة بنيكلاوس ويرث ، بالإضافة إلى اقتراحات من كار هوار .beginend
تبدأ برامج باسكال بالكلمة programالمفتاحية `<file>` مع قائمة بمؤشرات الملفات الخارجية كمعاملات [ 26 ] (غير مطلوب في Turbo Pascal وما شابه)؛ ثم يليها الكتلة الرئيسية محصورة بين الكلمتين المفتاحيتين `<file>` beginو` end<file>`. تفصل الفواصل المنقوطة بين العبارات ، وتنهي النقطة ( أي النقطة) البرنامج بأكمله (أو الوحدة ). يتم تجاهل حالة الأحرف في شفرة باسكال المصدرية.
إليكم مثال على الكود المصدري المستخدم لبرنامج "مرحباً بالعالم!" البسيط جداً :
برنامج HelloWorld ( الإخراج ) ؛ ابدأ WriteLn ( 'Hello, World!' ) {لا حاجة إلى فاصلة منقوطة بعد آخر عبارة في الكتلة - إضافة واحدة تضيف "عبارة فارغة" إلى البرنامج، والتي يتجاهلها المترجم.} نهاية .
أنواع البيانات
يُستخدم تعريف النوع في لغة باسكال لتحديد نطاق القيم التي يمكن لمتغير من ذلك النوع تخزينها. كما يُحدد مجموعة العمليات المسموح بإجرائها على متغيرات من ذلك النوع. الأنواع المُعرّفة مسبقًا هي:
| نوع البيانات | أنواع القيم التي يمكن للمتغير تخزينها |
|---|---|
| عدد صحيح | الأعداد الصحيحة (الكاملة) |
| حقيقي | الأرقام العشرية |
| منطقي | القيم: صحيح أو خطأ |
| شخصية | حرف واحد من مجموعة أحرف مرتبة |
| تعيين | ما يعادل مصفوفة من القيم المنطقية |
| مصفوفة | مجموعة قابلة للعد من أي من أنواع البيانات السابقة، أو من السجلات، أو من المصفوفات الأخرى |
| سِجِلّ | مجموعة من أي من أنواع البيانات السابقة أو من سجلات أخرى |
| خيط | يتم تعريف سلسلة أو "سلسلة" من الأحرف على أنها "مصفوفة مضغوطة من الأحرف" بفهرس بداية 1. ويمكن تعيين ثوابت السلسلة لهذه الأحرف ويمكن الوصول إلى الأحرف الفردية كعناصر في المصفوفة. |
يُحدد نطاق القيم المسموح بها للأنواع الأساسية (باستثناء القيم المنطقية) بواسطة التنفيذ. تتوفر دوال لبعض تحويلات البيانات. لتحويل نوع البيانات إلى نوع آخر real، integerتتوفر الدوال التالية: round(باستخدام التقريب إلى النصف بعيدًا عن الصفر ) و trunc(التقريب نحو الصفر).
يتمتع المبرمج بحرية تعريف أنواع البيانات الأخرى شائعة الاستخدام (مثل البايت، السلسلة النصية، إلخ) بدلالة الأنواع المعرفة مسبقًا باستخدام ميزة تعريف الأنواع في لغة باسكال، على سبيل المثال
نوع البايت = 0 .. 255 ؛ البايت المُوقّع = -128 .. 127 ؛ السلسلة = مصفوفة مضغوطة [ 1 .. 255 ] من الأحرف ؛
يتم تعريف الأنواع شائعة الاستخدام مثل byte و string بالفعل في العديد من التطبيقات.
عادةً ما يستخدم النظام كلمةً لتخزين البيانات. على سبيل المثال، byteقد يُخزَّن النوع في عدد صحيح آلي - ربما 32 بت - بدلاً من قيمة 8 بت . لا تحتوي لغة باسكال على عناصر لغوية تسمح بتعريف أنواع التخزين الأساسية بدقة أكبر. أُضيفت هذه الإمكانية في عدد من امتدادات باسكال واللغات اللاحقة، بينما وسّعت لغات أخرى، مثل مودولا-2 ، المجموعة المدمجة لتشمل معظم أنواع البيانات الآلية، مثل الأعداد الصحيحة 16 بت.
تُخبر الكلمة packedالمفتاحية المُصرّف باستخدام الطريقة الأكثر كفاءة لتخزين أنواع البيانات المهيكلة: المجموعات والمصفوفات والسجلات، بدلاً من استخدام كلمة واحدة لكل عنصر. قد يؤدي التجميع إلى إبطاء الوصول على الأجهزة التي لا تُتيح الوصول السهل إلى أجزاء الكلمة.
أنواع النطاقات الفرعية
يمكن أيضًا إنشاء نطاقات فرعية من أي نوع بيانات ترتيبي (أي نوع بسيط باستثناء الأعداد الحقيقية):
فار س : 1 .. 10 ؛ ذ : 'أ' .. 'ض' ;
أنواع المجموعات
على عكس لغات البرمجة الأخرى في ذلك الوقت، تدعم لغة باسكال نوع المجموعة: [ 27 ]
var Set1 : مجموعة من 1 .. 10 ; Set2 : مجموعة من 'a' .. 'z' ;
تُعدّ المجموعة مفهومًا أساسيًا في الرياضيات الحديثة، ويمكن استخدامها في العديد من الخوارزميات. تُعتبر هذه الميزة مفيدة، وقد تكون أسرع من بنية مماثلة في لغة لا تدعم المجموعات. على سبيل المثال، بالنسبة للعديد من مُترجمات لغة باسكال:
إذا كان i يقع ضمن النطاق [ 5 .. 10 ] فإن ...
ينفذ بشكل أسرع من:
إذا كان ( i > 4 ) و ( i < 11 ) فإن ...
يمكن أن تكون مجموعات القيم غير المتجاورة مفيدة بشكل خاص، من حيث الأداء وسهولة القراءة:
إذا كان i يقع ضمن النطاق [ 0 .. 3 ، 7 ، 9 ، 12 .. 15 ] ، فإن ...
في هذه الأمثلة، التي تتضمن مجموعات ضمن نطاقات صغيرة، يتحقق الأداء المحسن عادةً من خلال قيام المترجم بتمثيل متغيرات المجموعة كمتجهات ثنائية . ويمكن بعد ذلك تنفيذ عوامل المجموعة بكفاءة كعمليات على مستوى البتات في لغة الآلة.
أنواع السجلات
السجل هو بنية تتألف من أي عدد من العناصر الأعضاء التي تُسمى حقولًا . تُعرَّف الحقول بتحديد زوج من مُعرِّف ونوع بيانات مفصول بنقطتين رأسيتين؛ ويمكن إنشاء سجلات متداخلة. تُنهى قائمة الحقول بالكلمة endالمفتاحية `field`. يمكن الوصول إلى حقول متغير السجل لاحقًا بإضافة نقطة ( ..) بين اسم السجل ومُعرِّفات الحقول. [ 28 ] مثال على نوع سجل في لغة باسكال:
نوع السيارة = سجل العرض : عدد صحيح ؛ الطول : عدد صحيح نهاية ؛
قد يتضمن السجل أيضًا متغيرات ، وهي ثوابت مُعرَّفة بقائمة من تعريفات الحقول بين قوسين. case ... ofتُستخدم عبارة في نهاية السجل لتعريف الجزء المتغير ، الذي يحتوي على عدد المتغيرات من النوع المُحدد داخل العبارة. [ 29 ] مثال على نوع سجل متغير:
نوع الشكل = ( دائرة ، مربع ، مثلث ) ؛ الأبعاد = سجل الحالة الشكل : شكل الدائرة : ( القطر : حقيقي ) ؛ المربع : ( العرض : حقيقي ) ؛ المثلث : ( الضلع : حقيقي ؛ الزاوية 1 ، الزاوية 2 : 0 .. 360 ) نهاية ؛
تسمح السجلات المتغيرة بتداخل عدة حقول من السجل مع بعضها البعض لتوفير الذاكرة.
تعريفات الأنواع
يمكن تعريف الأنواع من أنواع أخرى باستخدام تعريفات الأنواع:
النوع x = عدد صحيح ؛ y = x ؛ ...
علاوة على ذلك، يمكن إنشاء أنواع معقدة من أنواع بسيطة:
نوع a = مصفوفة [ 1 .. 10 ] من الأعداد الصحيحة ؛ b = سجل x : عدد صحيح ؛ y : حرف {الفاصلة المنقوطة الإضافية غير مطلوبة بالضرورة} نهاية ؛ c = ملف من a ؛
علاوة على ذلك، يمكن إنشاء الأنواع المعقدة من أنواع معقدة أخرى بشكل متكرر:
const Jack = 11 ; Queen = 12 ; King = 13 ; Ace = 14 ;نوع القيمة = 2 .. الآس ؛ نوع البدلة = النادي ، الماس ، القلب ، البستوني ؛نوع البطاقة = سجل نوع البدلة : نوع البدلة ؛ القيمة : نوع القيمة ؛ نهاية ؛deckType = array [ 1 .. 52 ] of cardType ;الشخص = سجل اللقب : مصفوفة مضغوطة [ 1 .. 20 ] من الأحرف ؛ العمر : عدد صحيح ؛ نهاية ؛الجدول = سجل الأيدي : مصفوفة [ 1 .. 3 ] من نوع سطح السفينة ؛ اللاعبون : مصفوفة [ 1 .. 4 ] من الشخص ؛ نهاية ؛
نوع الملف
النوع أ = ملف من الأعداد الصحيحة ؛ ب = سجل س : عدد صحيح ؛ ص : حرف نهاية ؛ ج = ملف من ب ؛
كما هو موضح في المثال أعلاه، تتكون ملفات باسكال من سلاسل من المكونات. يحتوي كل ملف على متغير مخزن مؤقت يُرمز له بـ f^ . تقوم الإجراءات get (للقراءة) و put (للكتابة) بنقل متغير المخزن المؤقت إلى العنصر التالي. تم تعريف دالة القراءة بحيث تكون read(f, x) مماثلة لـ x := f^; get(f)؛ وتم تعريف دالة الكتابة بحيث تكون write(f, x) مماثلة لـ f^ := x; put(f)؛ النوع textمُعرّف مسبقًا كملف من نوع char. على الرغم من إمكانية استخدام متغير المخزن المؤقت لفحص الحرف التالي المراد استخدامه (التحقق من وجود رقم قبل قراءة عدد صحيح)، إلا أن هذا كان يؤدي إلى مشاكل خطيرة مع البرامج التفاعلية في التطبيقات المبكرة، ولكن تم حل هذه المشكلة لاحقًا باستخدام مفهوم "الإدخال/الإخراج الكسول"، الذي ينتظر حتى يتم الوصول فعليًا إلى متغير المخزن المؤقت للملف قبل تنفيذ عمليات الملف.
أنواع المؤشرات
يدعم باسكال المؤشرات :
نوع pNode = ^ Node ؛ Node = سجل a : عدد صحيح ؛ b : حرف ؛ c : pNode نهاية ؛ متغير NodePtr : pNode ؛ IntPtr : ^ عدد صحيح ؛
هنا، يُمثل المتغير NodePtr مؤشرًا إلى نوع البيانات Node ، وهو سجل. يُمكن تعريف مؤشرات إلى أنواع غير مُعرّفة بعد (في المثال أعلاه، pNode هو مؤشر إلى Node، ولكن Node غير مُعرّف بعد عند تعريف نوع المؤشر). هذا تعريف مُسبق ، وهو استثناء من القاعدة التي تنص على وجوب تعريف الأشياء قبل استخدامها.
لإنشاء سجل جديد وتعيين القيمة 10 والحرف A للحقلين a و b في السجل، ولتهيئة المؤشر c إلى المؤشر الفارغ ("NIL" في لغة باسكال)، ستكون العبارات كالتالي:
جديد ( NodePtr ) ؛ ... NodePtr ^ .a := 10 ؛ NodePtr ^.b : = 'A' ؛ NodePtr ^ .c := nil ؛ ...
ويمكن القيام بذلك أيضاً باستخدام withالعبارة التالية:
جديد ( NodePtr ) ؛ ... مع NodePtr ^ do begin a := 10 ؛ b := 'A' ؛ c := nil end ؛ ...في نطاق عبارة with ، يشير a و b إلى الحقول الفرعية لمؤشر السجل NodePtr وليس إلى السجل Node أو نوع المؤشر pNode.
يمكن إنشاء القوائم المرتبطة والمكدسات والطوابير عن طريق تضمين حقل من نوع المؤشر (c) في السجل.
على عكس العديد من اللغات التي تدعم المؤشرات، لا تسمح لغة باسكال إلا للمؤشرات بالإشارة إلى متغيرات مجهولة الهوية يتم إنشاؤها ديناميكيًا، ولا تسمح لها بالإشارة إلى متغيرات ثابتة أو محلية قياسية. كما يجب أن يكون للمؤشرات نوع مرتبط بها، ولا يتوافق المؤشر إلى نوع معين مع المؤشر إلى نوع آخر (على سبيل المثال، لا يتوافق المؤشر إلى حرف مع المؤشر إلى عدد صحيح). يساعد هذا في التخلص من مشكلات أمان النوع المتأصلة في تطبيقات المؤشرات الأخرى، وخاصة تلك المستخدمة في PL/I أو C. كما أنه يزيل بعض المخاطر الناجمة عن المؤشرات المعلقة ، ولكن القدرة على تحرير المساحة المشار إليها ديناميكيًا باستخدام دالة dispose (التي لها نفس تأثير دالة free الموجودة في مكتبة C ) تعني أن خطر المؤشرات المعلقة لم يُقضَ عليه تمامًا [ 30 ] كما هو الحال في لغات مثل جافا وسي شارب، التي توفر جمعًا تلقائيًا للبيانات المهملة (لكنها لا تقضي على مشكلة تسرب الذاكرة المرتبطة بها ).
يمكن رفع بعض هذه القيود في اللهجات الأحدث.
هياكل التحكم
باسكال هي لغة برمجة منظمة ، مما يعني أن تدفق التحكم منظم في عبارات قياسية ، وعادةً بدون أوامر " goto ".
بينما a <> b do WriteLn ( 'Waiting' ) ;إذا كانت قيمة a أكبر من قيمة b ، فاكتب سطرًا ( 'تم استيفاء الشرط' ) {لا يُسمح باستخدام فاصلة منقوطة قبل else} وإلا فاكتب سطرًا ( 'لم يتم استيفاء الشرط' ) ؛for i := 1 to 10 do {لا تستخدم الفاصلة المنقوطة هنا لأنها ستفصل العبارة التالية} WriteLn ( 'التكرار: ' , i ) ;كرر a := a + 1 حتى a = 10 ؛case i = 0 : اكتب ( 'صفر' ) ؛ 1 : اكتب ( 'واحد' ) ؛ 2 : اكتب ( 'اثنان' ) ؛ 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10 : اكتب ( '؟' ) نهاية ؛
الإجراءات والوظائف
تُقسّم لغة باسكال البرامج إلى إجراءات ووظائف. عموماً، يُستخدم الإجراء لآثاره الجانبية، بينما تُستخدم الوظيفة لقيمتها المُعادة.
طباعة البرنامج ( الإخراج ) ؛var i : عدد صحيح ;إجراء PrintAnInteger ( j : عدد صحيح ) ; ابدأ ... نهاية ;دالة ثلاثية ( س : عدد صحيح ) : عدد صحيح ؛ ابدأ ثلاثية := س * 3 نهاية ؛begin { main program } ... PrintAnInteger ( i ) ; PrintAnInteger ( triple ( i )) end .
يمكن تداخل الإجراءات والوظائف إلى أي عمق، وبنية "البرنامج" هي الكتلة الخارجية المنطقية.
بشكل افتراضي، يتم تمرير المعاملات بالقيمة. إذا سبقت كلمة "var" اسم المعامل، فسيتم تمريره بالمرجع.
يمكن لكل إجراء أو دالة أن تحتوي على تعريفاتها الخاصة من علامات الانتقال، والثوابت، والأنواع، والمتغيرات، والإجراءات والدوال الأخرى، ويجب أن تكون جميعها بهذا الترتيب. كان الهدف الأصلي من شرط الترتيب هذا هو السماح بالترجمة الفعالة في مرحلة واحدة . ومع ذلك، في بعض اللهجات (مثل دلفي )، تم تخفيف شرط الترتيب الصارم لأقسام التعريفات.
الفواصل المنقوطة كفواصل بين الجمل
استعارت لغة باسكال العديد من خصائص بناء الجملة من لغة ALGOL ، بما في ذلك استخدام الفاصلة المنقوطة كفاصل بين التعليمات. وهذا يختلف عن لغات أخرى، مثل PL/I و C ، التي تستخدم الفاصلة المنقوطة كفاصل بين التعليمات. لا حاجة إلى فاصلة منقوطة قبل الكلمة endالمفتاحية لتعريف نوع سجل، أو كتلة، أو عبارة case ؛ وقبل الكلمة untilالمفتاحية لعبارة repeat؛ وقبل الكلمة elseالمفتاحية لعبارة if .
لم يكن استخدام الفاصلة المنقوطة الإضافية مسموحًا به في الإصدارات الأولى من لغة باسكال. مع ذلك، فإن إضافة عبارات فارغة شبيهة بلغة ALGOL في التقرير المنقح لعام 1973 والتغييرات اللاحقة على اللغة في معيار ISO 7185:1983 تسمح الآن باستخدام الفواصل المنقوطة الاختيارية في معظم هذه الحالات. لا يزال استخدام الفاصلة المنقوطة غير مسموح به مباشرةً قبل الكلمة elseالمفتاحية في عبارة if ، لأنها elseتلي عبارة واحدة، وليست سلسلة عبارات. في عبارات if المتداخلة، لا يمكن استخدام الفاصلة المنقوطة لتجنب مشكلة else المعلقة (حيث لا تحتوي عبارة if الداخلية على else، بينما تحتوي عبارة if الخارجية عليها) عن طريق إنهاء عبارة if المتداخلة ظاهريًا بفاصلة منقوطة - فهذا يُنهي كلا عبارتي if. بدلًا من ذلك، يجب استخدام كتلة begin... صريحة . [ 31 ]end
موارد
المترجمون والمترجمون الفوريون
تتوفر العديد من مترجمات ومفسرات لغة باسكال للاستخدام العام:
- دلفي هو المنتج الرائد لشركة إمباركاديرو (بورلاند/كود جير سابقًا) لتطوير التطبيقات السريع (RAD). يستخدم لغة أوبجكت باسكال (التي أطلقت عليها بورلاند اسم "دلفي")، وهي لغة مشتقة من باسكال، لإنشاء تطبيقات لأنظمة ويندوز ، وماك أو إس ، وآي أو إس ، وأندرويد . تم إيقاف دعم .NET الذي كان متوفرًا في الإصدارات من دلفي 8 إلى 2005 و2006 و2007، واستُبدل بلغة جديدة (بريزم، التي أعيد تسميتها إلى أوكسيجين؛ انظر أدناه) وهي غير متوافقة تمامًا مع الإصدارات السابقة. في السنوات الأخيرة، أُضيف دعم يونيكود والأنواع العامة ( في الإصدارات 2009 و2010 ودلفي XE).
- فري باسكال هو مُصرّف متعدد المنصات مكتوب بلغة أوبجكت باسكال (ويستضيف نفسه بنفسه ). يهدف إلى توفير مُصرّف سهل الاستخدام وقوي، قادر على تجميع التطبيقات القديمة وتطوير تطبيقات جديدة. يُوزّع بموجب رخصة جنو العمومية العامة (GNU GPL)، بينما تخضع الحزم ومكتبة وقت التشغيل لرخصة جنو العمومية الصغرى المعدلة (GNU LGPL). بالإضافة إلى أوضاع التوافق مع توربو باسكال ، ودلفي، وماك باسكال، فإنه يمتلك أوضاع بناء جملة إجرائية وكائنية خاصة به مع دعم ميزات موسعة مثل تحميل المعاملات الزائد . يدعم العديد من المنصات وأنظمة التشغيل. كما تتضمن الإصدارات الحالية وضع ISO.
- Turbo51 هو مترجم لغة باسكال مجاني لعائلة Intel 8051 من المتحكمات الدقيقة، مع بناء جملة Turbo Pascal 7.
- أوكسيجين (المعروف سابقًا باسم كروم ) هو مُترجم لغة أوبجكت باسكال لمنصتي .NET ومونو . تم تطويره وبيعه بواسطة شركة ريم أوبجكتس سوفتوير ، كما تم بيعه لفترة من الزمن بواسطة شركة إمباركاديرو كمترجم خلفي لبرنامج بريزم.
- كان برنامج Kylix امتدادًا لبرنامج Delphi، مع دعم لنظام التشغيل Linux ومكتبة كائنات محسّنة. لم يعد البرنامج مدعومًا. يتوفر الآن كل من المُصرّف وبيئة التطوير المتكاملة للاستخدام غير التجاري.
- مُصرّف GNU Pascal (GPC) هو مُصرّف لغة باسكال ضمن مجموعة مُصرّفات GNU (GCC). كُتب المُصرّف بلغة C، بينما كُتبت مكتبة وقت التشغيل بلغة باسكال في الغالب. يُوزّع المُصرّف بموجب رخصة جنو العمومية ، ويعمل على العديد من المنصات وأنظمة التشغيل. يدعم لغات معيار ANSI/ISO، ويدعم جزئيًا لهجة Turbo Pascal. من أبرز أوجه القصور فيه غياب نوع سلسلة نصية (short) متوافق تمامًا مع Turbo Pascal. كما أن دعم Borland Delphi ومتغيرات لغات أخرى محدود للغاية. مع ذلك، يتوفر بعض الدعم لـ Mac-pascal.
- تم إنشاء برنامج Virtual Pascal بواسطة فيتالي ميريانوف عام 1995 كمترجم أصلي لنظام التشغيل OS/2 متوافق مع صيغة Borland Pascal. ثم طُوّر تجاريًا بواسطة شركة fPrint، مع إضافة دعم لنظام التشغيل Win32، وفي عام 2000 أصبح برنامجًا مجانيًا. واليوم، يُمكنه الترجمة لأنظمة التشغيل Win32 وOS/2 وLinux، وهو متوافق إلى حد كبير مع Borland Pascal وDelphi. توقف تطويره في 4 أبريل 2005.
- يُعد مُترجم Pascal-P4 أساسًا للعديد من مُترجمات Pascal المُنفذة بلغة Pascal. وهو يُنفذ مجموعة فرعية من لغة Pascal الكاملة.
- مُترجم Pascal-P5 هو نسخة معدلة من Pascal-P4 وفقًا لمعيار ISO 7185 (باسكال الكامل).
- يُعد مُترجم Pascal-P6 نسخة موسعة من Pascal، وهو عبارة عن تكييف لـ Pascal-P5 وفقًا لمواصفات لغة Pascaline.
- برنامج Smart Mobile Studio هو مترجم من لغة باسكال إلى لغة HTML5 / جافا سكريبت .
- كان برنامج Turbo Pascal هو برنامج الترجمة البرمجية الأكثر شيوعًا للغة باسكال على أجهزة الكمبيوتر الشخصية خلال ثمانينيات القرن الماضي وبداية تسعينياته، وذلك بفضل إمكانياته القوية وسرعة ترجمته الفائقة. تميز Turbo Pascal بصغر حجمه وقدرته على الترجمة والتشغيل والتصحيح من الذاكرة مباشرةً دون الحاجة إلى الوصول إلى القرص الصلب. كانت محركات الأقراص المرنة البطيئة شائعة الاستخدام بين المبرمجين آنذاك، مما زاد من ميزة سرعة Turbo Pascal. تتوفر حاليًا إصدارات أقدم من Turbo Pascal (حتى الإصدار 5.5) للتنزيل مجانًا من موقع Borland.
- تُطبّق IP Pascal لغة "Pascaline" (نسبةً إلى آلة حاسبة باسكال )، وهي نسخة مُوسّعة للغاية من باسكال، متوافقة مع باسكال الأصلية وفقًا لمعيار ISO 7185. تتميز هذه اللغة بوحدات نمطية مع تحكم في مساحة الأسماء، بما في ذلك وحدات المهام المتوازية مع الإشارات، والكائنات، والمصفوفات الديناميكية بأي أبعاد يتم تخصيصها أثناء التشغيل، والتحميل الزائد، والتجاوزات، والعديد من الإضافات الأخرى. تحتوي IP Pascal على مكتبة نقل مُدمجة مُصممة خصيصًا للغة باسكال. على سبيل المثال، يُمكن إعادة تجميع تطبيق إخراج نصي قياسي من باسكال الأصلية (من سبعينيات القرن الماضي) ليعمل في نافذة، بل وإضافة عناصر رسومية إليه.
- تم إنشاء Pascal-XT بواسطة شركة Siemens لأنظمة التشغيل الرئيسية الخاصة بها BS2000 و SINIX .
- PocketStudio هو مُجمِّع برمجي فرعي من لغة باسكال وأداة لتطوير التطبيقات السريع (RAD) لأنظمة التشغيل Palm OS ومعالجات MC68xxx، مع بعض الإضافات الخاصة به للمساعدة في التفاعل مع واجهة برمجة تطبيقات Palm OS . وهو يُشبه برنامجي Delphi وLazarus، حيث يتميز بمصمم نماذج مرئي، ومُدقِّق كائنات، ومحرر شفرة مصدرية .
- MIDletPascal – مترجم لغة باسكال وبيئة تطوير متكاملة (IDE) تقوم بإنشاء بايت كود جافا صغير وسريع مصمم خصيصًا لإنشاء برامج للهواتف المحمولة.
- Vector Pascal هي لغة لمجموعات تعليمات SIMD مثل MMX و AMD 3d Now ، وتدعم جميع معالجات Intel و AMD، ومحرك المشاعر الخاص بجهاز PlayStation 2 من سوني .
- تتيح لغة مورفيك باسكال تطوير تطبيقات الويب المكتوبة بالكامل بلغة أوبجكت باسكال (سواء من جانب الخادم أو المتصفح).
- WDSibyl – بيئة تطوير مرئية ومترجم باسكال لأنظمة التشغيل Win32 و OS/2.
- PP Compiler، وهو برنامج تجميعي لنظام التشغيل Palm OS يعمل مباشرة على الكمبيوتر المحمول.
- يُعد مُترجم لغة باسكال CDC 6000 هو الشفرة المصدرية لأول مُترجم لغة باسكال (CDC 6000).
- باسكال-إس [ 32 ]
- AmigaPascal هو برنامج مجاني لتجميع لغة باسكال لأنظمة Amiga .
- VSI Pascal for OpenVMS (المعروف سابقًا باسم HP Pascal for OpenVMS، وCompaq Pascal، وDEC Pascal، وVAX Pascal، وكان يُعرف في الأصل باسم VAX-11 Pascal [ 33 ] ) هو مُصرّف لغة باسكال يعمل على أنظمة OpenVMS . [ 34 ] كما كان مدعومًا أيضًا في Tru64 . [ 35 ] [ 36 ] يتوافق VSI Pascal for OpenVMS مع معيار ISO/IEC 7185:1990 Pascal، بالإضافة إلى بعض ميزات معيار ISO/IEC 10206:1990 Extended Pascal، ويتضمن أيضًا امتداداته الخاصة. [ 34 ] تم تنفيذ واجهة المُصرّف باستخدام BLISS . [ 37 ]
- كان Stony Brook Pascal+ عبارة عن مترجم محسن 16 بت (لاحقًا 32 بت) لنظامي التشغيل DOS و OS/2، وتم تسويقه كبديل مباشر لـ Turbo Pascal، ولكنه كان ينتج رمزًا يتم تنفيذه بسرعة مضاعفة على الأقل.
بيئات التطوير المتكاملة
- Dev-Pascal هو بيئة تطوير متكاملة (IDE) بلغة باسكال تم تصميمها باستخدام Borland Delphi وتدعم Free Pascal و GNU Pascal كواجهات خلفية.
- لازاروس هو بيئة تطوير متكاملة مرئية مجانية متعددة المنصات تشبه دلفي، تُستخدم لتطوير التطبيقات بسرعة . يعتمد لازاروس على لغة فري باسكال ، وهو متوفر للعديد من المنصات بما في ذلك لينكس ، وفري بي إس دي ، وماك أو إس، ومايكروسوفت ويندوز .
- النار (macOS) والماء (Windows) لبرنامج Oxygene and the Elements Compiler
المكتبات
- مكتبة WOL لإنشاء تطبيقات واجهة المستخدم الرسومية باستخدام مُترجم Free Pascal.
المعايير
ISO/IEC 7185:1990 باسكال
في عام 1983، تم توحيد اللغة في المعيار الدولي IEC/ISO 7185 [ 38 ] والعديد من المعايير المحلية الخاصة بكل دولة، بما في ذلك المعيار الأمريكي ANSI/IEEE770X3.97-1983، والمعيار ISO 7185:1983. واختلف هذان المعياران فقط في أن معيار ISO تضمن امتدادًا من "المستوى 1" للمصفوفات المتوافقة (وهي مصفوفة لا تُعرف حدودها إلا عند التشغيل)، بينما لم يسمح معيار ANSI بهذا الامتداد للغة الأصلية (إصدار ويرث). وفي عام 1989، نُقّح معيار ISO 7185 (ISO 7185:1990) لتصحيح العديد من الأخطاء والغموض التي وُجدت في الوثيقة الأصلية.
ذُكر أن معيار ISO 7185 هو توضيح للغة ويرث لعام 1974 كما هو مُفصّل في دليل المستخدم والتقرير [جنسن وويرث]، ولكنه تميز أيضًا بإضافة "معاملات المصفوفة المتوافقة" كمستوى 1 إلى المعيار، حيث يُمثل المستوى 0 لغة باسكال بدون مصفوفات متوافقة. أُضيفت هذه الميزة بناءً على طلب سي. إيه. آر. هوار ، وبموافقة نيكلاوس ويرث. كان السبب الرئيسي هو رغبة هوار في إنشاء نسخة باسكال من مكتبة الخوارزميات العددية (NAG) ، التي كُتبت في الأصل بلغة فورتران، ووجد أنه من غير الممكن القيام بذلك بدون إضافة تسمح بمعاملات مصفوفة ذات أحجام مُختلفة. وقد حفّزت اعتبارات مُشابهة تضمين معيار ISO 7185 إمكانية تحديد أنواع معاملات الإجراءات والوظائف.
أشار نيكلاوس ويرث نفسه إلى لغة عام 1974 باسم "المعيار"، على سبيل المثال، لتمييزها عن الميزات الخاصة بالجهاز لمترجم CDC 6000. وقد تم توثيق هذه اللغة في تقرير باسكال ، [ 39 ] وهو الجزء الثاني من "دليل مستخدم باسكال وتقريره".
في الحواسيب الكبيرة (الحواسيب المركزية والحواسيب الصغيرة) التي طُورت عليها لغة باسكال، كانت المعايير تُتبع عمومًا. أما في حواسيب IBM الشخصية ، فلم تكن كذلك. على حواسيب IBM الشخصية، تحظى معايير بورلاند، Turbo Pascal وDelphi، بأكبر عدد من المستخدمين. لذا، من المهم عادةً معرفة ما إذا كان تطبيق معين يُطابق لغة باسكال الأصلية، أم لهجة من لهجات بورلاند المُشتقة منها.
بدأت إصدارات لغة البرمجة الخاصة بأجهزة IBM PC بالاختلاف مع ظهور لغة باسكال من جامعة كاليفورنيا في سان دييغو، وهي نسخة تفسيرية تضمنت العديد من الإضافات إلى اللغة، إلى جانب بعض الحذف والتغييرات. ولا تزال العديد من خصائص لغة جامعة كاليفورنيا في سان دييغو موجودة حتى اليوم، بما في ذلك في لهجة بورلاند.
ISO/IEC 10206:1990 موسّع باسكال
في عام 1990، تم إنشاء معيار موسّع للغة باسكال تحت مسمى ISO/IEC 10206، [ 40 ] وهو مطابق في محتواه التقني [ 41 ] لمعيار IEEE/ANSI 770X3.160-1989 [ 42 ] . اعتبارًا من عام 2019، من المخطط دعم لغة باسكال الموسّعة في مُصرّف FreePascal . [ 43 ]
تتمثل الميزة الرئيسية للغة Extended Pascal في نمطيتها وقابليتها للترجمة المنفصلة. يمكن فصل ملفات شفرة المصدر لتطبيقات Extended Pascal إلى "ملف برنامج" واحد وعدة "ملفات وحدات". يحتوي كل ملف وحدة على تعريفات خاصة به للأنواع والثوابت والمتغيرات والإجراءات/الدوال، ويمكن للمبرمجين تغيير ترتيب مناطق "تعريف الكيانات" هذه. كما توجد مناطق تعريف خاصة بكل وحدة تُسمى مناطق "التهيئة" مع عبارة `initialization` to begin do ...، ومناطق "الإنهاء" مع عبارة `finalization` to end do ...، والتي تُستخدم لإدارة الحالة الأولية وتخصيص الذاكرة للكيانات داخل الوحدة. من خلال إدراج import ...عبارات `initialization` بين مناطق تعريف وإعلان الوحدة/البرنامج، يمكن للوحدات مشاركة كياناتها مع وحدات (وبرامج) أخرى.
وتشمل الميزات الرئيسية الأخرى ربط المتغيرات، ومجموعات من الأنواع المتشابهة (المخططات)، ومرافق السلسلة الشاملة، ودعم نوع الأرقام المركبة، otherwiseوالكلمة الرئيسية لتدفق الفرع الافتراضي في caseالعبارة، وتقييم الدائرة القصيرة المنطقية.
الاختلافات
صدرت نسخة نيكلاوس ويرث من لغة باسكال، التي طُوّرت في زيورخ، خارج المعهد الفدرالي السويسري للتكنولوجيا في زيورخ (ETH) في شكلين أساسيين: شفرة المصدر لمترجم CDC 6000، ومجموعة أدوات نقل تُسمى نظام باسكال-بي. وقد أغفل مترجم باسكال-بي العديد من ميزات اللغة الكاملة التي لم تكن ضرورية لتشغيل المترجم. على سبيل المثال، تم حذف الإجراءات والدوال المستخدمة كمعاملات، وسجلات المتغيرات غير المُميّزة، والتعبئة، والتخلص، والانتقالات بين الإجراءات، وغيرها من ميزات المترجم الكامل.
استندت لغة باسكال UCSD ، تحت إشراف البروفيسور كينيث بولز ، إلى حزمة Pascal-P2، وبالتالي تشاركت العديد من قيود لغة باسكال-P. لاحقًا، اعتُمدت باسكال UCSD باسم Apple Pascal، واستمر تطويرها عبر عدة إصدارات. مع أن باسكال UCSD وسّعت نطاق باسكال الفرعية في حزمة Pascal-P بإضافة بنيات باسكال القياسية، إلا أنها لم تكن تثبيتًا قياسيًا كاملًا لباسكال.
في أوائل التسعينيات، طوّر آلان بيرنز وجيف ديفيز لغة باسكال-إف سي، وهي امتداد للغة بي إل/أو (من كتاب نيكلاوس " الخوارزميات + هياكل البيانات = البرامج "). أُضيفت عدة بنيات لاستخدام باسكال-إف سي كأداة تعليمية للبرمجة المتزامنة (مثل الإشارات، والمراقبين، والقنوات، والاستدعاء عن بُعد، والموارد). ولإثبات التزامن، كان بالإمكان تنفيذ مُخرجات المُصرّف (نوع من كود بي ) على آلة افتراضية. لم تقتصر هذه الآلة الافتراضية على محاكاة بيئة عادية - عادلة - فحسب، بل استطاعت أيضًا محاكاة الظروف القصوى (الوضع غير العادل).
مترجمات باسكال الشبيهة ببورلاند
كُتبت لغة Turbo Pascal من Borland ، التي كتبها أندرس هيلسبرغ ، بلغة التجميع بشكل مستقل عن مُجمّعات UCSD وزيورخ. ومع ذلك، فقد اعتمدت على الكثير من نفس المجموعة الفرعية والامتدادات التي اعتمدها مُجمّع UCSD. ولعلّ هذا يعود إلى أن نظام UCSD كان نظام Pascal الأكثر شيوعًا ومناسبًا لتطوير التطبيقات على أنظمة المعالجات الدقيقة ذات الموارد المحدودة المتوفرة آنذاك.
أصبحت النسخة الثالثة من Turbo Pascal المغلفة بالبلاستيك والإصدارات اللاحقة، بما في ذلك Object Pascal من Borland و Delphi والإصدارات غير المتوافقة تقريبًا من Borland، شائعة بين المبرمجين بما في ذلك مؤلفي البرامج المجانية، لذلك تحتوي مكتبة SWAG لرمز Pascal على كمية كبيرة من التعليمات البرمجية المكتوبة مع وضع إصدارات مثل Delphi في الاعتبار.
منتجات البرمجيات ( المترجمات ، وبيئات التطوير المتكاملة/ التطوير السريع للتطبيقات ) في هذه الفئة:
- Turbo Pascal – "TURBO.EXE" حتى الإصدار 7، و Turbo Pascal لنظام التشغيل Windows ("TPW") و Turbo Pascal لنظام التشغيل Macintosh .
- بيئة لغة باسكال النقية وباسكال عالية السرعة 2 باسكال لأجهزة الكمبيوتر من سلسلة أتاري إس تي .
- بورلاند باسكال 7 - نسخة احترافية من سلسلة توربو باسكال التي استهدفت كلاً من نظام التشغيل DOS ونظام التشغيل ويندوز.
- Object Pascal – امتداد للغة Pascal تم تطويره في شركة Apple Computer بواسطة فريق بقيادة لاري تيسلر بالتشاور مع نيكلاوس ويرث ، مخترع لغة Pascal؛ تمت إضافة ميزاته إلى Turbo Pascal من Borland لنظام Macintosh وفي عام 1989 لـ Turbo Pascal 5.5 لنظام DOS.
- دلفي – لغة أوبجكت باسكال هي أساساً لغتها الأساسية.
- مترجم Free Pascal (FPC) - اعتمد Free Pascal اللهجة القياسية لمبرمجي Borland Pascal، Borland Turbo Pascal، ولاحقًا Delphi.
- PascalABC.NET – جيل جديد من لغة برمجة باسكال يتضمن مترجمًا وبيئة تطوير متكاملة.
- بورلاند كيليكس هو مُترجم وبيئة تطوير متكاملة (IDE) كانت تُباع سابقًا من قِبل شركة بورلاند، ولكن تم إيقاف إنتاجها لاحقًا. وهو إصدار لينكس من بيئة تطوير البرمجيات بورلاند دلفي و C++Builder .
- Lazarus - وهو مشابه لـ Kylix في الوظيفة، هو بيئة تطوير متكاملة مرئية مجانية متعددة المنصات لتطبيقات التطوير السريع باستخدام مترجم Free Pascal، والذي يدعم لهجات Object Pascal بدرجات متفاوتة.
- Virtual Pascal – VP2/1 هو مُصرّف لغة باسكال 32 بت متوافق تمامًا مع Borland Pascal و Borland Delphi، ويعمل على نظامي التشغيل OS/2 و Windows 32 (مع إصدار Linux قيد التطوير). [ 44 ]
- سيبيل عبارة عن بيئة تطوير متكاملة (IDE) ومترجم مفتوح المصدر يشبه لغة دلفي؛ وتشمل تطبيقاته ما يلي:
- WDSibyl [ 45 ] لأنظمة التشغيل Microsoft Windows و OS/2 ، وهي بيئة تجارية متوافقة مع Borland Pascal تم إصدارها بواسطة شركة تسمى Speedsoft والتي تم تطويرها لاحقًا إلى بيئة تطوير تطبيقات سريعة (RAD) تشبه Delphi تسمى Sybil ثم تم طرحها كمصدر مفتوح بموجب رخصة GPL عندما أغلقت تلك الشركة؛
- Open Sybil، وهو مشروع مستمر، أداة مفتوحة المصدر لنظام التشغيل OS/2 و eCS، كانت في الأصل تعتمد على مصادر Speedsoft's WDsybl Sibyl Portable Component Classes (SPCC) و Sibyl Visual Development Tool (SVDE)، ولكن جوهرها الآن هو IBM System Object Model (SOM) و WPS و OpenDoc . [ 46 ]
قائمة المعايير ذات الصلة
- ISO 8651-2:1988 أنظمة معالجة المعلومات – رسومات الحاسوب – روابط لغة نظام النواة الرسومية (GKS) – الجزء 2: باسكال
استقبال
أثارت لغة باسكال مجموعة واسعة من ردود الفعل في مجتمع الحوسبة، سواء كانت نقدية أو إيجابية.
الانتقادات المبكرة
تعرض تعريف ويرث الأولي للغة لانتقادات واسعة. وعلى وجه الخصوص، علّق نيكو هابرمان في كتابه "تعليقات نقدية على لغة البرمجة باسكال" (1973) بأن العديد من بنياتها كانت غير مُعرّفة بشكل جيد، لا سيما فيما يتعلق بأنواع البيانات ، والنطاقات ، والهياكل ، وعبارة goto . [ 47 ] وفي وقت لاحق، أوضح برايان كيرنيغان ، الذي ساهم في نشر لغة C ، انتقاداته لباسكال في عام 1981 في مقالته "لماذا باسكال ليست لغة البرمجة المفضلة لدي". [ 48 ] تمثلت المشكلة الأبرز التي وصفها كيرنيغان في أن أحجام المصفوفات وأطوال السلاسل النصية كانت جزءًا من النوع، مما جعل من المستحيل كتابة دالة تقبل مصفوفات متغيرة الطول أو حتى سلاسل نصية كمعاملات. هذا الأمر جعل من غير العملي كتابة مكتبة فرز، على سبيل المثال. كما انتقد كيرنيغان الترتيب غير المتوقع لتقييم التعبيرات المنطقية، وضعف دعم المكتبات، والافتقار إلى المتغيرات الثابتة ، وأثار عددًا من المشكلات الأخرى الأقل أهمية. كما ذكر أن اللغة لا توفر أي بنى بسيطة "للتحايل" (أي تجاهل القيود والحدود عن قصد). وأشارت شكاوى أخرى من مصادر عامة [ 30 ] [ 49 ] إلى أن نطاق التصريحات لم يكن محددًا بوضوح في تعريف اللغة الأصلي، مما أدى أحيانًا إلى عواقب وخيمة عند استخدام التصريحات المسبقة لتعريف أنواع المؤشرات، أو عندما أدت تصريحات السجلات إلى استدعاءات متكررة متبادلة ، أو عندما يكون المعرف مستخدمًا أو غير مستخدم في قائمة تعداد. ومن الصعوبات الأخرى، كما هو الحال في لغة ALGOL 60 ، أن اللغة لا تسمح للإجراءات أو الدوال التي تُمرر كمعاملات بتحديد النوع المتوقع لمعاملاتها مسبقًا.
ازدادت شعبيتها في سبعينيات وثمانينيات القرن العشرين
في العقدين التاليين لعام 1975، اكتسبت لغة باسكال اهتمامًا متزايدًا وأصبحت لغة برمجة رئيسية لمنصات مهمة (بما في ذلك Apple II و Apple III و Apple Lisa وأنظمة Commodore وأجهزة Z-80 و IBM PC) بفضل توفر UCSD Pascal و Turbo Pascal. [ 50 ]
على الرغم من الانتقادات الأولية، استمرت لغة باسكال في التطور، ومعظم ملاحظات كيرنيغان لا تنطبق على إصدارات اللغة التي تم تحسينها لتناسب تطوير المنتجات التجارية، مثل Turbo Pascal من بورلاند . وكما توقع كيرنيغان في مقاله، كانت معظم الإضافات التي عالجت هذه المشكلات غير متوافقة بين المترجمات. مع ذلك، منذ أوائل التسعينيات، يبدو أن معظم أنواع اللغة قد انحصرت في فئتين: ISO و Borland-like. تعالج Extended Pascal العديد من هذه الانتقادات المبكرة، فهي تدعم السلاسل النصية ذات الأطوال المتغيرة، وتهيئة المتغيرات، والترجمة المنفصلة، ومعاملات Boolean المختصرة ، وعبارات default( otherwise) لحالات case. [ 51 ]
تم حل بعض المشاكل الناجمة عن الاختلافات في تطبيقات لغة باسكال جزئيًا لاحقًا بظهور لغة فري باسكال، التي تدعم العديد من اللهجات مع توجيهات الوضع. [ 52 ]
ملحوظات
- ↑ في عدد من مجلة الإلكترونيات عام 1978، أوضح ويرث سبب تسميته للغة باسم بليز باسكال: "في الواقع، أنا لست قادراً على فهم فلسفته بشكل كامل ولا على تقدير سموه الديني. ومع ذلك، كان باسكال (ربما أحد) أوائل من اخترعوا وبنوا جهازاً نصنفه الآن على أنه حاسوب رقمي." [ 4 ]
انظر أيضاً
مراجع
- ↑ "حول "مندوبي" مايكروسوفت"أُرشف من الأصل بتاريخ ٢٧ يونيو ٢٠١٢.
لقد درسنا لغة دلفي
أوبجكت باسكال
بعناية فائقة، وقمنا ببناء نموذج أولي عملي لمراجع الدوال المقيدة لفهم تفاعلها مع لغة برمجة جافا وواجهات برمجة التطبيقات الخاصة بها... وخلصنا إلى أن مراجع الدوال المقيدة غير ضرورية وتضر باللغة. وقد اتُخذ هذاالقرار بالتشاور مع شركة بورلاند إنترناشونال، التي لديها خبرة سابقة في استخدام مراجع الدوال المقيدة في دلفي
أوبجكت باسكال
.
- ↑ بحث TechMetrix (1999). "تاريخ جافا" (ملف PDF) . تقرير خوادم تطبيقات جافا . مؤرشف من الأصل (ملف PDF) بتاريخ 29-12-2010 . تم الاطلاع عليه بتاريخ 16-10-2009 .
استمر المشروع تحت اسم "green"، واستندت اللغة إلى نموذج قديم من
لغة باسكال بجامعة كاليفورنيا في سان دييغو
، مما يتيح إمكانية توليد كود تفسيري.
- ↑ "حوار مع جيمس جوسلينج - قائمة انتظار ACM" . مؤرشف من الأصل بتاريخ 16 يوليو 2015. تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
- ↑ ويرث، نيكلاوس (21 ديسمبر 1978). أندرسون، كيمب (محرر). "تحية لباسكال، المخترع" (ملف PDF) . تعليقات القراء. إلكترونيات . دان ماكميلان. ص 6. ISSN 0013-5070 . مؤرشف (ملف PDF) من الأصل بتاريخ 20 مايو 2024. تم الاطلاع عليه بتاريخ 13 أغسطس 2024 .
- ↑ ويرث، نيكلاوس (2000). "تطوير لغات البرمجة الإجرائية: مساهمات شخصية ووجهات نظر" . لغات البرمجة المعيارية . سلسلة محاضرات في علوم الحاسوب. المجلد 1897. الصفحات 1-10 . doi : 10.1007/10722581_1 . ISBN 978-3-540-67958-5.
- ↑ ويرث، ن. (1971). "لغة البرمجة باسكال". أكتا إنفورماتيكا . 1 (1): 35-63 . doi : 10.1007/BF00264291 . hdl : 20.500.11850/68712 .
- ↑ ويرث، ن. (يناير 1996). "ذكريات حول تطوير لغة باسكال". تاريخ لغات البرمجة - الجزء الثاني . ص 97-120 . doi : 10.1145/234286.1057812 . ISBN 0-201-89502-1.
- ↑ هيرتزفيلد، آندي. " الفولكلور المجري.org مؤرشف في 18 نوفمبر 2015 في Wayback Machine : قصص ماكنتوش. تم الاسترجاع في 6 مارس 2012.
- ↑ https://www.computerhistory.org/atchm/adobe-photoshop-source-code/ مؤرشف بتاريخ 7 مايو 2014 في أرشيف الإنترنت (Wayback Machine) ، شفرة مصدر برنامج أدوبي فوتوشوب
- ↑ "عرض تطبيق RAD Studio" . 2021-10-29.
- ↑ tiobe.com مؤرشف بتاريخ 15-03-2012 في Wayback Machine ، فهرس مجتمع البرمجة لشهر يناير 2011.
- ↑ "برنامج عتيق: Turbo Pascal الإصدار 5.5" . مؤرشف من الأصل بتاريخ 24-11-2010 . تم الاطلاع عليه بتاريخ 17-05-2018 .
- ↑ الحواسيب والحوسبة: منظور شخصي. مؤرشف بتاريخ 10 مايو 2017 في أرشيف الإنترنت (Wayback Machine) بواسطة نيكلاوس ويرث
- ↑ cbi.umn.edu ، "مقابلة مع جون براكيت ودوغ روس"، ص 15، معهد تشارلز باباج، 2004
- ↑ تقرير فرع العلوم والتكنولوجيا النووية، قسم الأبحاث، مؤسسة أبحاث هيئة الطاقة الذرية الأسترالية، لوكاس هايتس (ملف PDF) . الوكالة الدولية للطاقة الذرية (تقرير). 1977. ص 22.
- ↑ جون أوديل، انهيار لغات باسكال الموجهة للكائنات، بايت، يوليو 1989.
- ↑ م. إ. تروفيموف، نهاية باسكال؟، بايت، مارس 1990، ص 36.
- ↑ رال، إل بي (1987). "مقدمة إلى لغة الحوسبة العلمية باسكال-إس سي". الحواسيب . 14 : 53-69 . doi : 10.1016/0898-1221(87)90181-7 .
- ^ بي (1986/08/29). "Cadmus jetzt mit Kulisch-Arithmetik - Uni Karlsruhe gibt Pascal-Compiler nach München" [ يأتي Cadmus الآن مع حساب Kulisch - تقوم جامعة كارلسروه بتسليم مترجم Pascal إلى ميونيخ ] . كومبيوتر ووش (في المانيا). ميونيخ – كارلسروه، ألمانيا: IDG Business Media GmbH . مؤرشفة من الأصلي بتاريخ 2016-05-30 . تم الاسترجاع 2016/05/30 .
- ↑ "Pascal-XSC: Pascal for Extended Scientific Computing" . مؤرشف من الأصل بتاريخ 2014-01-05.
- ↑ "برنامج XSC" . مؤرشف من الأصل في 1 نوفمبر 2015. تم الاطلاع عليه في 11 أغسطس 2015 .
- ^ "جامعة فوبرتال: Wissenschaftliches Rechnen / Softwaretechnologie" . مؤرشفة من الأصلي في 6 نوفمبر 2015 . تم الاسترجاع 11 أغسطس 2015 .
- ^ بامبرجر، لوثار. دافنبورت، جيمس ه.؛ فيشر، هانز كريستوف. كوك، جان؛ شوماخر، غونتر؛ أولريش كريستيان. واليس، بيتر ج.ل. الشتاء، ديك T.؛ وولف فون جودينبيرج، يورغن (1990). واليس، بيتر JL (محرر). تحسين برمجة النقطة العائمة ( الطبعة الأولى). باث، المملكة المتحدة: شركة جون وايلي وأولاده المحدودة ISBN 0-471-92437-7.
- ↑ ميشيل جين، "نظام التشغيل SOL"، في مؤتمر Usenix الصيفي لعام 1983، تورنتو، أونتاريو، (يوليو 1983)، الصفحات 75-78
- ↑ "نظرة عامة على أنظمة التشغيل الموزعة CHORUS" (ملف PDF) . أنظمة Chorus . 1991. مؤرشف من الأصل (ملف PDF) في 7 فبراير 2015 - عبر cs.berkeley.edu.
- ↑ باسكال ISO 7185:1990 مؤرشف بتاريخ 17-06-2012 في Wayback Machine 6.10
- ↑ ماندل، ستيفن ل. (1987). برمجة باسكال اليوم . شركة ويست للنشر. ISBN 978-0-314-33935-5.
- ↑ جينسن وويرث 1991 ، ص 65-69.
- ↑ جينسن وويرث 1991 ، ص 69-73.
- 1 2 J. Welsh, WJ Sneeringer, and CAR Hoare, "Ambiguities and Insecurities in Pascal", Software: Practice and Experience 7 , pp. 685–696 (1977)
- ↑ باسكال ، نيل ديل، وشيب ويمز، "الشيء المعلق الآخر"، ص 160-161. مؤرشف بتاريخ 18 مارس 2017 في أرشيف الإنترنت (Wayback Machine).
- ↑ "Pascal-S: A Subset and Its Implementation", N. Wirth in Pascal – The Language and Its Implementation, by DW Barron, Wiley 1979.
- ↑ "دليل مستخدم VAX-11 Pascal V1.0" (PDF) .
- 1 2 "وصف منتج برنامج VSI Pascal لنظام OpenVMS" (ملف PDF) . VSI. 2017. مؤرشف من النسخة الأصلية (PDF) بتاريخ 18 أبريل 2021. تم الاطلاع عليه بتاريخ 7 فبراير 2022 .
- ↑ "مقابلة مع مهندس معمارية باسكال - كومباك باسكال" . مؤرشف من الأصل بتاريخ 19-10-2021 . تم الاطلاع عليه بتاريخ 28-05-2022 .
- ↑ "وصف منتج برنامج Compaq Pascal الإصدار 5.8 لنظام Tru64 UNIX" . مؤرشف من الأصل بتاريخ 25 يوليو 2020. تم الاطلاع عليه بتاريخ 28 مايو 2022 .
- ↑ مقابلة جون ريغان من شركة VSI حول GEM مقابل LLVM لأنظمة X86/64 . شركة eCube Systems . ١٢ مارس ٢٠١٩. مؤرشف من الأصل بتاريخ ١٢ أغسطس ٢٠٢٠. تاريخ الاطلاع: ٧ فبراير ٢٠٢٢ .
- ↑ ISO/IEC 7185:1990 باسكال (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 27 يناير 2016. تم الاطلاع عليه بتاريخ 16 سبتمبر 2014 .
- ↑ ويرث، نيكلاوس (يوليو 1973). لغة البرمجة باسكال (تقرير منقح) . المعهد الفدرالي السويسري للتكنولوجيا في زيورخ. doi : 10.3929/ethz-a-000814158 .
- ↑ باسكال الموسعة: ISO/IEC 10206:1990 . مؤرشف من الأصل بتاريخ 27-03-2016 . تم الاطلاع عليه بتاريخ 16 سبتمبر 2014 .
- ↑ "معايير اللغة: باسكال، وباسكال الموسعة، وفورتان" . مؤرشف من الأصل بتاريخ 14 يوليو 2014. تم الاطلاع عليه بتاريخ 16 سبتمبر 2014 .
- ↑ معيار IEEE/ANSI للغة البرمجة Extended Pascal . 1990. doi : 10.1109/IEEESTD.1990.101061 . ISBN 978-0-7381-4247-0.
- ↑ "Extended Pascal - Free Pascal wiki" . wiki.freepascal.org .
- ↑ "Virtual Pascal for OS/2" . مؤرشف من الأصل في 30 أغسطس 2011. تم الاطلاع عليه في 3 أبريل 2016 .
- ↑ فولفغانغ (15 أكتوبر 2020). "WDSibyl: بيئة تطوير مرئية" . WDSibyl.org . مؤرشف من الأصل بتاريخ 12 فبراير 2020. تم الاطلاع عليه بتاريخ 20 أبريل 2020 .
- ↑ "netlabs.org – مشروع: Open Sibyl" . مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 3 أبريل 2016 .
- ↑ هابرمان، أ.ن. (1973). "تعليقات نقدية على لغة البرمجة باسكال" . مجلة أكتا إنفورماتيكا . 3 (1): 47-57 . doi : 10.1007/bf00288652 . ISSN 0001-5903 . ( النص الكامل للتقرير الفني )
- ↑ برايان دبليو. كيرنيغان (1981). "لماذا لا تُعدّ لغة باسكال لغة البرمجة المفضلة لدي" . مؤرشف بتاريخ 28 أبريل 2009 في أرشيف الإنترنت (Wayback Machine).
- ↑ ليكارم، أ.؛ ديجاردان، ب. (1975). "مزيد من التعليقات على لغة البرمجة باسكال". أكتا إنفورماتيكا . 4 (3): 231-243 . doi : 10.1007/BF00288728 .
- ↑ كريسبو، دييغو. "باسكال: اللغة التي كادت أن تسيطر على العالم، الجزء الأول" . www.deusinmachina.net . تاريخ الاطلاع: 4 يناير 2025 .
- ↑ "باسكال الموسع" . مؤرشف من الأصل بتاريخ 18-10-2015 . تم الاطلاع عليه بتاريخ 17-10-2015 .
- ↑ كريسبو، دييغو. "باسكال: اللغة التي كادت أن تسيطر على العالم، الجزء الثاني" . www.deusinmachina.net . تاريخ الاطلاع: 4 يناير 2025 .
للمزيد من القراءة
- ويرث، نيكلاوس (1971). "لغة البرمجة باسكال". أكتا إنفورماتيكا . 1 : 35-63 . doi : 10.1007/BF00264291 .
- دال، أولي-يوهان ؛ ديجكسترا، إدسكار دبليو ؛ هوار، سي إيه آر (1972). "ملاحظات حول هيكلة البيانات". في هوار، سي إيه آر (محرر). البرمجة الهيكلية . مطبعة أكاديمية . ص 83-174 . ISBN 0-12-200550-3.
- هوار، سي. إيه. آر.؛ ويرث، نيكلاوس (1973). "تعريف بديهي للغة البرمجة باسكال". أكتا إنفورماتيكا . 2 : 335-355 . doi : 10.1007/BF00289504 . hdl : 20.500.11850/68663 .
- ويرث، نيكلاوس (1975). الخوارزميات + هياكل البيانات = البرامج . برنتيس هول . ISBN 0-13-022418-9.
- ويرث، نيكلاوس (يونيو 1975). "تقييم لغة البرمجة باسكال" . مجلة ACM SIGPLAN Notices . 10 (6): 23-30 . doi : 10.1145/390016.808421 .
- غروغونو، بيتر (1980). البرمجة بلغة باسكال ( طبعة منقحة). أديسون-ويسلي . ISBN 0-201-02775-5.
- واسرمان، أنتوني آي. (1980). دليل تعليمي - تصميم لغات البرمجة . مطبعة جمعية مهندسي الكهرباء والإلكترونيات . رقم ISBN 0-818-60312-7.
- بارون، د. و. (1981). باسكال - اللغة وتطبيقها . جون وايلي . ISBN 0-471-27835-1.
- فورسيث، ريتشارد س. (1982). باسكال في العمل واللعب . تشابمان وهول . ISBN 0-412-23370-3.
- جنسن، كاثلين. ويرث، نيكلاوس (1991). باسكال – دليل المستخدم والتقرير (الطبعة الرابعة ). سبرينغر-فيرلاغ . رقم ISBN 0-387-97649-3أُرشف من المصدر الأصلي بتاريخ 14 مارس 2005. تم الاطلاع عليه بتاريخ 1 ديسمبر 2017 .
- ويرث، نيكلاوس (مارس 1993). "ذكريات حول تطوير لغة باسكال" . نشرة ACM SIGPLAN . 28 (3): 333-342 . doi : 10.1145/155360.155378 .
- بروي، مانفريد ؛ دينرت، إرنست (2002). "باسكال وخلفاؤها" . في: ويرث، نيكلاوس (محرر). رواد البرمجيات: مساهمات في هندسة البرمجيات . سبرينغر-فيرلاغ. ISBN 3-540-43081-4.
- باسكال (لغة برمجة)
- لغات البرمجة الأكاديمية
- لغات برمجة الأنظمة
- لغات البرمجة التعليمية
- لغات البرمجة عالية المستوى
- لغات البرمجة التي تم ابتكارها عام 1970
- لغات البرمجة ذات معيار ISO
- برامج عام 1970
- لغات البرمجة المترجمة
