Full BASIC
Full BASIC, sometimes known as Standard BASIC or ANSI BASIC, is an international standard defining a dialect of the BASIC programming language. It was developed by the American National Standards Institute (ANSI) X3.60 group in partnership with the European ECMA. It describes an advanced version of BASIC with many features including structured programming, matrix math, input/output for file handling, and many other options.
ANSI's BASIC standardization was a two-stage process. The first, carried out as Minimal BASIC starting in 1974, was an effort to clearly define and standardize the original Dartmouth BASIC language so it could be correctly implemented on different platforms. After its release in late 1977, attention turned to Full BASIC which would be based on the more powerful Structured BASIC being developed at Dartmouth College. The complexity of the system and the many additions promoted by members of the standards committee led to the effort bogging down and the first draft standard was not ready until 1986, four years late.
The standard was ratified on 26 June 1986 as ECMA-116,[1] in January 1987 as ANSI X3.113-1987, in 1991 as ISO/IEC 10279:1991 and last reviewed and confirmed in 2024. It was completely ignored; the microcomputer revolution had occurred while the specification was being argued over, and by the early-1980s Microsoft BASIC running on tens of millions of home computers had already come and gone. Watching the process drag on, the Dartmouth participants left to produce True BASIC based on parts of the standard, but this saw little use. De facto standards like Microsoft's dominated the market and formed the basis for newer languages like Microsoft Visual Basic which incorporated similar concepts.
History
Minimal BASIC
جمع إطلاق لغة دارتموث بيسك عام 1964 بين عدد من المفاهيم الناشئة في مجال الحوسبة، بما في ذلك المشاركة الزمنية والتفاعل المباشر مع المستخدم، والذي كان يُعرف آنذاك باسم "واجهة المحادثة". استخدمت شركة جنرال إلكتريك ، التي زودت دارتموث بجهاز الحاسوب المركزي GE 235 الذي تعمل عليه، نسخةً معدلةً من نظام دارتموث لإنشاء مركز خدمات تطور لاحقًا إلى خدمة جيني عبر الإنترنت . وسرعان ما قدمت العديد من الشركات الأخرى، ومن أبرزها شركتا تايمشير وكومبيوسيرف ، خدمات بيسك مستضافة خاصة بها، مُقتديةً بنموذج دارتموث. [ 2 ] [ 3 ]
في عام 1968، طرحت شركة هيوليت-باكارد (HP) سلسلة الحواسيب الصغيرة HP 2000 ، التي قدمت نفس ميزات أنظمة الحواسيب المركزية السابقة في نظام يُركّب في رفوف، ويمكن تهيئته بالكامل مقابل حوالي 100,000 دولار أمريكي ( ما يعادل 925,837 دولارًا أمريكيًا في عام 2025 ). [ 4 ] تميزت لغة البرمجة HP Time-Shared BASIC الخاصة بها بعدة اختلافات عن لغة دارتموث، [ 5 ] وسرعان ما قلدتها شركات أخرى مصنعة للحواسيب الصغيرة مثل داتا جنرال . وكانت شركة ديجيتال إكويبمنت (DEC) من الشركات التي قاومت هذا التوجه، حيث لم تُصدر لغة BASIC من تصميمها الخاص حتى عام 1972. وكانت هذه النسخة، BASIC-PLUS، مختلفة عن كلٍ من لهجتي HP ودارتموث. وبحلول أوائل سبعينيات القرن العشرين، كان هناك ثلاث لهجات رئيسية وعشرات الاختلافات الطفيفة مستخدمة في السوق.
في يناير 1974، تشكلت مجموعة جديدة تحت مظلة المعهد الوطني الأمريكي للمعايير (ANSI) لوضع معيار موحد للغة BASIC. [ 6 ] وشكّل فريق دارتموث جزءًا أساسيًا من هذه المجموعة. كان فريق دارتموث يعمل على نسخة موسعة من لغة BASIC تُعرف باسم Structured BASIC (SBASIC)، والتي أصبحت أساسًا لمعيار ANSI. في ذلك الوقت، لم تكن سوى عدد قليل من اللهجات الأخرى تدعم ميزاتها الجديدة العديدة. قرر الفريق أن التوصل إلى معيار كامل قائم على SBASIC سيستغرق بعض الوقت، لذا قُسّم مشروع ANSI BASIC إلى مرحلتين رئيسيتين. الأولى، Minimal BASIC ، ستُنتج معيارًا يتضمن فقط الميزات الأساسية المطلوبة لأي تطبيق. حتى الميزات التي دعمها فريق دارتموث لفترة طويلة، مثل حساب المصفوفات، سيتم استبعادها. صدرت مسودة معيار Minimal BASIC في يناير 1976، والمسودة النهائية في يوليو 1977، وتم التصديق عليها في ديسمبر من العام نفسه. صرح آرثر لورمان ، الفيزيائي من كلية دارتموث، والذي كان من مؤيدي لغة BASIC وعضوًا في مجموعة ANSI، لاحقًا بما يلي:
"تم قضاء السنوات القليلة الأولى من X3J2 (والتي قد يقول البعض، بالنظر إلى الماضي، إنها "مُهدرة") في توحيد ما يُعتبر لغة دارتموث الأساسية الأصلية لعام 1964... كانت لغة مينيمال بيسك أشبه بلعبة منها بلغة حقيقية." [ 7 ]
المستوى الأساسي الكامل
ثم حوّل الفريق اهتمامه إلى لغة البرمجة بيسك الكاملة. في ذلك الوقت، كانت ثورة الحواسيب الصغيرة في أوجها، ودخلت ملايين الأجهزة التي تعمل بنظام مايكروسوفت بيسك أو نظام بيسك مشابه إلى السوق. [ أ ] على الرغم من ذلك، لم يكن أي من المشاركين من موردي أو بائعي الحواسيب الصغيرة. بل ظل المشاركون من موردي الحواسيب المركزية مثل آي بي إم ، وكونترول داتا ، وجنرال إلكتريك ، وموردي الحواسيب الصغيرة مثل ديجيتال إكويبمنت كوربوريشن (DEC)، وداتا جنرال ، ووانغ لابوراتوريز ، وشركات ضخمة أخرى مثل ثري إم ، وأمريكان إكسبريس ، وكوداك . [ ٩ ]
سرعان ما اصطدمت هذه الجهود بتأثير النظام الثاني، حيث بدأ كل عضو بإضافة قائمة خاصة به من الميزات "الضرورية". أراد البعض أن تستمر اللغة في تقليد استهدافها للاستخدامات التعليمية على الأجهزة الصغيرة، ورغبوا في لغة بسيطة ذات دعم أساسي للملفات وميزات مشابهة. بينما كان آخرون من مستخدمي الحواسيب المركزية ، ورغبوا في دعم البرامج المعيارية القابلة للتحميل وميزات برمجة موسعة أخرى لمنافسة لغات مثل كوبول أو فورتران، مع توفير معالجة أفضل للسلاسل النصية . أما المجموعة الثالثة، فكانت مهتمة بشكل أساسي بتطبيقات الأعمال، لا سيما المستخدمين الأوروبيين حيث أصبحت لغة بيسك لغة أعمال رئيسية، وطالبوا بأن يتضمن النظام معالجة ملفات شاملة وعمليات حسابية عشرية لا تعاني من مشاكل التقريب. [ 10 ]
انتقد جون جي. كيميني وتوماس إي. كورتز ، المصممان الأصليان للغة BASIC وعضوا مجموعة ANSI، هذه العملية. في مقال نُشر عام 1982، كتب كورتز عن كيفية تحول حتى المشكلات الصغيرة ظاهريًا إلى خلافات كبيرة. واستخدم مثالًا على ذلك OPTION BASE: عندما أُضيفت المصفوفات لأول مرة إلى BASIC، كانت تبدأ من الفهرس 1، مما DIM A(3)جعل المصفوفة تحتوي على ثلاثة خانات: 1 و2 و3. في بعض الحالات، يكون الفهرس 0 أكثر طبيعية، لذا OPTION BASE 0أُضيف في الإصدارات اللاحقة من كود دارتموث بحيث يحتوي التعريف نفسه على أربع خانات، من 0 إلى 3. خلال مرحلة Minimal، دار نقاش مستمر حول القيمة الأساسية الافتراضية، وتم اختيار 0 في النهاية. بعد خمس سنوات، خلال جهود Full، تقرر أن المصفوفات يمكنها تحديد أي حد أدنى باستخدام صيغة جديدة. DIM YEAR(1970 TO 1990)أدى ذلك إلى إلغاء الحاجة إلى ، OPTION BASE 0وتم اتخاذ قرار بتغيير القيمة الافتراضية إلى 1 مرة أخرى. [ 11 ]
في البداية، كان فريق X3.60 يستهدف صيف عام 1982 لإصدار النسخة الأولى للمراجعة الفنية، والتي كان من المقرر إرسالها إلى لجنة ANSI X3 في الخريف. خلال هذه الفترة، كان من المقرر إرسال المعيار المقترح، وتلقي تعليقات الجمهور. وكان من المقرر إعادة المسودة النهائية إلى X3 في عام 1983 للتصديق عليها في ذلك العام. [ 12 ] لكن هذا كان متفائلاً للغاية. لم تُصدر المسودة الأولى حتى يناير 1985 [ 1 ] ، والمسودة النهائية في عام 1986 للتصديق عليها في يناير 1987. [ 13 ] خلال هذه الفترة، نما المعيار بشكل كبير لدرجة أنه تم تقسيمه في النهاية إلى وحدة أساسية وخمس وحدات إضافية اختيارية، والتي تضمنت معالجة الملفات المعقدة، ودعم الحوسبة في الوقت الحقيقي، والحسابات العشرية الثابتة، وأوامر التحرير الاختيارية، وحتى وحدة رسومات مستقلة عن النظام الأساسي. [ 14 ]
تعرضت النتيجة لانتقادات خلال فترة التعليق العام. لاحظ أحد المراجعين أنها أصبحت ضخمة لدرجة أن "اللغة الناتجة تضاهي أي لغة برمجة حالية من حيث التعقيد"، وأن "الامتثال للمعيار بأكمله سيُقارن بأضخم مشاريع المترجمات التي تم تنفيذها على الإطلاق". [ 15 ] ويستمر النص في وصف، على سبيل المثال، كيف أن هناك ما لا يقل عن خمس طرق مختلفة لوصف روتين فرعي، وثلاث طرق لتحديد الحد الأقصى لطول السلسلة النصية، وطريقتين لتعريف المصفوفة. [ 16 ] وبالإشارة إلى مسألة حدود المصفوفة، يُشار إلى أن اللجنة وافقت على أن الحل المُعتمد "غير مقبول" ووضعت خططًا لإصلاحه "لاحقًا". [ 17 ]
لا يوجد دليل على أن أيًا من المشاركين قد قام فعليًا ببناء نسخة متوافقة بعد إصدار المعيار، وسرعان ما اختفى أي ذكر للجهود المبذولة في هذا الصدد. منذ عام 1987، اقتصرت الإشارات إلى المعيار على وجوده وأن لغة True BASIC تضمنت بعضًا من ميزاته. بالإضافة إلى ذلك، ومع تشغيل ملايين الحواسيب الصغيرة بنسخة ما من معيار مايكروسوفت الفعلي بحلول ذلك الوقت، اعتُبر معيار ANSI الجديد حلاً غير قياسي. [ 18 ] كان جزء كبير من نجاح BASIC الأصلي على منصات الحواسيب الصغيرة يكمن في أنها سمحت بكتابة البرامج من شفرة المصدر المطبوعة ، ولكن بحلول منتصف الثمانينيات، استُبدلت هذه الميزة بتطبيقات جاهزة للاستخدام ، وتضاءلت الحاجة إلى BASIC كنظام توزيع. [ 19 ] أما على صعيد الأنظمة الكبيرة، فقد حلت لغة باسكال تدريجيًا محل الاستخدام الأصلي كلغة تعليمية ، حيث أصبحت المشكلات الخارجية التي سعت BASIC إلى معالجتها، مثل التفاعل والتحرير عبر الإنترنت، متاحة الآن في معظم الأنظمة. [ 20 ]
أساسيات حقيقية
كانت عملية وضع المعايير بطيئة للغاية لدرجة أن مؤلف كتاب Structured BASIC نفسه تخلى عنها في نهاية المطاف. طُلب من ستيفن جارلاند إعداد سلسلة من اختبارات مجلس الكليات لطلاب المدارس الثانوية، فكتبها بلغة باسكال . أثار هذا الأمر جدلاً إلى حد ما، نظرًا لأن العديد من أجهزة الكمبيوتر واسعة الانتشار، مثل كومودور 64 و TRS-80، لم تكن تدعم لغة باسكال بشكل كامل. انتقد لورمان هذا الجهد، مقترحًا دورةً أكثر شموليةً تناسب عددًا أكبر من الطلاب. [ 21 ]
اتضح لمشاركي دارتموث في مجموعة ANSI أن هذا الجهد لا أمل في إنجازه خلال فترة زمنية معقولة. فانسحبوا من المشروع وأسسوا شركة جديدة لطرح نسختهم من اللغة في السوق تحت اسم True BASIC . جمعت True BASIC العديد من ميزات المعيار الأساسي، لكنها أدخلت أيضًا عددًا من التغييرات الخاصة بها. وكان من أبرزها أن ترقيم الأسطر أصبح اختياريًا. لم تلقَ اللغة استحسانًا، إذ أعربت العديد من المراجعات عن نفس المخاوف بشأن تضخم الميزات التي أُثيرت حول معيار Full BASIC. وصفها جيري بورنيل بـ"الجنون" [ 22 ] ، بينما رفضها جون دفوراك ووصفها بـ"المؤسفة" و"المحكوم عليها بالفشل" [ 23 ].
وصف
تحرير البرامج
على غرار الإصدارات السابقة من لغة BASIC، صُممت لغة Full BASIC للعمل في بيئة محرر الأسطر ، ولذلك تستخدم أرقام الأسطر للإشارة إلى أسطر فردية أو نطاقات من الأسطر المراد تحريرها أو حذفها. تتراوح أرقام الأسطر من 1 إلى 50000، على عكس لغة Minimal التي تتراوح أرقامها من 0 إلى 9999. هذا يعني أن البرامج الصحيحة في Minimal التي تستخدم السطر 0 غير صالحة في Full BASIC. يبلغ طول الأسطر المنطقية 132 حرفًا على الأقل. ويمكن تمديد الأسطر المنطقية عبر عدة أسطر فعلية باستخدام "حرف الاستمرار"، وهو علامة العطف (&). لسوء الحظ، تم اختيار علامة العطف (&) أيضًا كعامل ربط السلاسل النصية، مما زاد من تعقيد المحلل اللغوي. [ 24 ]
تضمنت أوامر التحرير الإضافية أوامر ` RENUMBERf` و`f` DELETE، والتي كانت شائعة في ذلك الوقت في لغات برمجة الحواسيب الصغيرة الحديثة. وكان من المفاهيم الجديدة أمر `f` EXTRACT، الذي ينسخ نطاقًا من الأسطر إلى ملف جديد ويحذفها من البرنامج الأصلي، مما يسمح باستخراجها إلى برنامج فرعي. [ 25 ] ويمكن استدعاء هذه البرامج الفرعية باستخدام CHAINالأمر `f`. CHAINكما يمكن أن يتضمن الأمر `f` خيارًا WITHمتبوعًا بقائمة من المعاملات، وفي هذه الحالة كان من المتوقع أن يُرجع قيمة في متغير يحمل نفس اسم البرنامج (انظر "البنية"، أدناه). [ 26 ]
الوظائف الأساسية
بقيت العديد من الكلمات المفتاحية الشائعة الاستخدام في لغة Minimal أو غيرها من اللهجات؛ على سبيل المثال PRINT، و و INPUT. أُجريت تغييرات طفيفة عديدة على هذه الأوامر. فعلى سبيل المثال، يمكن كتابة الكلمات المفتاحية في وضع التحرير بأحرف كبيرة أو صغيرة، أو أي مزيج منهما. وكما كان الحال سابقًا، كانت تُعرض عادةً بأحرف كبيرة، بينما أصبح من المتعارف عليه استخدام نمط Snake Case لأسماء المتغيرات متعددة الأحرف. [ 27 ]DATAREAD
أدخلت لغة دارتموث بيسك REMعبارةً للتعليقات المضمنة، وقد حظيت هذه العبارة بدعمٍ عالمي في اللهجات الأخرى. كما أضافت العديد من اللهجات صيغةً مختصرة، غالباً باستخدام علامة الاقتباس المفردة، 'كما هو الحال في مايكروسوفت بيسك. أما في لغة فول، فقد اختاروا علامة التعجب !لهذا الغرض، [ 28 ] على الرغم من أنه لا يبدو أن هناك سبباً لعدم استخدام علامة الاقتباس المفردة، إذ لا تُستخدم في غير ذلك - فالسلاسل النصية لا تسمح باستخدام علامات الاقتباس المفردة كعلامات فاصلة، على سبيل المثال. [ 29 ] وكان التغيير الأكثر إثارةً للجدل هو أن LETالكلمة المفتاحية أصبحت الآن إلزاميةً لجميع عمليات الإسناد لتسهيل عملية التحليل، بينما LETكانت اختياريةً في جميع اللهجات الأخرى. وشمل ذلك لغة مينيمال، لذا فإن أي كود مينيمال يستخدم هذا الاختصار كان غير متوافق مع لغة فول. [ 30 ]
إضافةً إلى المجموعة الصغيرة نسبيًا المكونة من 23 كلمة مفتاحية و11 دالة من معيار Minimal، أضاف معيار Full عشرات الكلمات المفتاحية الخاصة به، ليصل المجموع إلى 176 كلمة مفتاحية (تُعرّف 161 مفهومًا منفصلًا)، و38 دالة رياضية، و14 دالة نصية إذا ما أُضيفت جميع الامتدادات. [ 31 ] وتشغل قائمة بسيطة بالكلمات المفتاحية، مُرتبة في ثلاثة أعمدة، صفحتين في وثيقة المعايير. [ 32 ]
بناء
كان الاختلاف الرئيسي بين لغة البرمجة الكاملة (Full) ولغة البرمجة المصغرة (Minimal) هو إضافة بنيات البرمجة الهيكلية الموجهة نحو الكتل. في لغة Minimal، ومعظم مترجمات لغة BASIC، يتكون البرنامج منطقيًا من أسطر برمجية مستقلة، ويمكن بدء التنفيذ من أي نقطة عن طريق GOTOكتابة رقم السطر. الاستثناء الوحيد لهذه القاعدة هو FOR...NEXTحلقة التكرار، حيث تُعتبر جميع الأسطر من FOR إلى NEXT منطقيًا كتلة برمجية واحدة. يؤدي التفرع داخل أو خارج كتلة FOR إلى سلوك غير متوقع، يعتمد عادةً على التنفيذ، ولكنه عمومًا ما يكون نوعًا من الأخطاء مثل "NEXT WITHOUT FOR". [ 33 ]
باختصار، لا يُسمح بالتفرع إلى كتلة FOR...NEXT، ولا يُسمح بالتفرع منها دون استخدام هذه EXITالعبارة. كان من المفترض أن تتحقق التطبيقات من هذه العبارات وتمنعها، على سبيل المثال، إيجاد الحالات التي يُسمح فيها بالتفرع GOTOإلى حلقة تكرارية. يُعد التحقق من هذا النوع من التعليمات البرمجية صعبًا في المفسر الذي يفحص البرنامج عادةً سطرًا بسطر؛ إذ يتطلب التحقق من التفرعات إلى كتلة من تعليمات برمجية أخرى في البرنامج عادةً تحليل البرنامج بأكمله كما يفعل المترجم. [ 16 ]
في الإصدار الكامل، تم توسيع العديد من الكلمات المفتاحية الموجودة، وإضافة كلمات أخرى، لتوفير هياكل كتل إضافية. ومن أبرزها خاصية تعدد الأسطر IF...THEN...ELSE...END IF، التي سمحت بتشغيل عدة أسطر من التعليمات البرمجية إذا تحقق الشرط أو فشل. SELECT...CASE...CASE ELSE...END SELECTأُضيفت خاصية إنشاء أشجار القرار، [ 34 ] والتي كان يتم تنفيذها سابقًا باستخدام ON...GOTOأو عدة IFs لاختيار سطر للتشغيل. FOR...NEXTبقيت الحلقات كما هي في الإصدار الأدنى، ولكن DO...LOOPأُضيفت حلقة جديدة مع نوعين: علوي DO WHILE...LOOPوسفلي تم اختبارهما DO...LOOP UNTIL.... يمكن الآن الخروج من جميع الحلقات بأمان باستخدام أوامر EXIT FORو EXIT DO. [ 35 ]
إضافةً إلى هذه التغييرات في بنية الكتل، أضافت لغة Full كلمات مفتاحية لتعريف الإجراءات والدوال وكتل البرامج. أصبحت البرامج تُفتح الآن بالكلمة PROGRAMالمفتاحية الاختيارية متبوعةً باسم البرنامج، وتنتهي، كما في السابق، بـ END. يمكن إنشاء الإجراءات الروتينية باستخدام SUB...END SUBواستدعاؤها باستخدام CALL name. تُنشأ الدوال متعددة الأسطر باستخدام FUNCTION...END FUNCTIONولا تُحدد نوع القيمة المُعادة لأن ذلك كان جزءًا من الاسم - تنتهي أسماء الدوال النصية بعلامة الدولار. تُحدد القيمة المُعادة بتعيين متغير يحمل نفس اسم الدالة، على سبيل المثال، دالة باسم "DOIT" تحتوي على سطر مثل LET DOIT=1. يمكن للدوال استدعاء دوال أخرى واستدعاء نفسها، مما يعني أن اللغة كانت ذاتية التكرار بطبيعتها . [ 36 ] احتفظت Full أيضًا بالأسلوب السابق لتعريف الدوال في سطر واحد باستخدام الكلمة DEFالمفتاحية ، لكنها أزالت شرط أن يبدأ اسم الدالة بـ "FN". على سبيل المثال، DEF AVERAGE(X,Y)=(X+Y)/2. [ 37 ]
في لغات BASIC السابقة، لم يكن مفهوم النطاق موجودًا ، وكانت جميع المتغيرات عامة . هذا غير كافٍ لبناء برامج معيارية كبيرة، حيث قد يُكتب جزء من الكود باستخدام أسماء متغيرات شائعة، Iوقد يؤدي ذلك إلى تغيير قيمة هذا المتغير. ولأن المتغير عام، فإنه يحتفظ بالقيمة المُعدّلة عند عودته إلى الكود الأصلي. أحد المفاهيم الأساسية للبرمجة الهيكلية هو المتغير المحلي ، الذي يحتفظ بقيمته بشكل منفصل عن المتغيرات الأخرى التي تحمل الاسم نفسه في مواقع أخرى من البرنامج المركب. ولأن BASIC لم يكن يحتوي على مفهوم النطاق، اعتمدت العديد من البرامج على السلوك العام واستخدمت المتغيرات لتمرير المعلومات من وإلى الإجراءات الفرعية. للسماح بكلا المفهومين في اللغة الجديدة، أضافت Full BASIC الكلمة EXTERNALالمفتاحية التي يمكن إضافتها إلى دالة أو إجراء فرعي، وجعلت أي متغيرات داخلها محلية. [ 38 ] ولأن برامج BASIC كانت تضع الإجراءات الفرعية عادةً في نهاية الكود المصدري للبرنامج، DECLAREفقد أُضيفت الكلمة المفتاحية لتوفير التصريحات المسبقة . [ 39 ]
أنواع البيانات والمتغيرات
أدخلت لغة BASIC الكاملة أسماء متغيرات طويلة، متحررةً بذلك من الأسماء المكونة من حرف واحد أو مزيج من حرف ورقم كما كان شائعًا في السابق. وحددت الحد الأقصى الجديد بـ 31 حرفًا. ومن عيوب هذا التغيير، وإن كانت طفيفة، ضرورة وجود مسافات بين الكلمات المفتاحية، بينما كانت معظم الإصدارات السابقة تسمح بحذف هذه المسافات. ويعود ذلك إلى أنه في حالة الأسماء المكونة من حرف واحد، FORS=1TOAيمكن تفسير سطر مثل "FORS" على أنه "FORS"، وهو اسم لا يمكن أن يكون متغيرًا في لغة BASIC المكونة من حرفين. في لغة BASIC الكاملة، يجب كتابة هذا السطر يدويًا FOR S=1 TO Aلأن "FORS" اسم متغير صحيح. [ 40 ] وكما كان الحال في إصدارات BASIC السابقة، كانت أنواع البيانات في لغة BASIC الكاملة تُحدد بواسطة لواحق في اسم المتغير. وقد تجنبت لغة BASIC الدنيا هذه المشكلة باقتصارها على المتغيرات الرقمية، بينما شملت لغة BASIC الكاملة السلاسل النصية أيضًا، والتي يُشار إليها باستخدام علامة الدولار، على سبيل المثال A$. [ 27 ]
تطلّب نظام BASIC الكامل إجراء العمليات الحسابية العشرية لتنفيذ نظام الفاصلة العائمة افتراضيًا . ولأن هذا لم يكن مدعومًا عالميًا في الأجهزة، وخاصةً في الحواسيب الصغيرة والمعالجات الدقيقة، فقد أُضيف إليه OPTION ARITHMETIC NATIVEخيار يشير إلى ضرورة إجراء العمليات الحسابية باستخدام تنفيذ الفاصلة العائمة الافتراضي للنظام، أيًا كان. ويمكن العودة إلى وضع BCD باستخدام الأمر `bcd` OPTION ARITHMETIC DECIMAL. هذا بالإضافة إلى خيار العمليات الحسابية ذات الفاصلة الثابتة، إن وُجد. أما المتغيرات العددية والنصية، فكانت تعمل كما في أنظمة BASIC الأخرى. [ 41 ]
أُضيفت ميزة جديدة هي امتداد العمليات الحسابية ذات الفاصلة الثابتة، الذي يسمح بتحديد دقة المتغيرات. يتم تفعيل هذه الميزة باستخدام الأمر OPTIONAL ARITHMETIC FIXED[ b ] متبوعًا بعلامة النجمة ومحدد التنسيق، فعلى سبيل المثال، OPTION ARITHMETIC FIXED*8.2يُعيّن هذا الأمر جميع المتغيرات العددية بدقة 8 أرقام ومنزلتين عشريتين. يجب وضع هذا التصريح قبل أي كود رياضي في بقية البرنامج. [ 43 ] علاوة على ذلك، يمكن تعريف أي متغير على حدة باستخدام أمر مشابه DECLARE NUMERIC*8.2 A, B. [ 44 ]
كانت معظم لغات BASIC تدعم إنشاء متغيرات المصفوفات باستخدام الكلمة DIMالمفتاحية `var`، على سبيل المثال، DIM A(5), B(2,2)تُعرّف مصفوفتين، أحادية البعد A وثنائية البعد (مصفوفة) B. في لغة BASIC الكاملة، كان الحد الأدنى لأي مصفوفة عادةً 1، لذا في هذه الحالة، يحتوي المتغير A على خمسة "خانات"، مرقمة من 1 إلى 5. استخدام ` OPTION BASE 0var` أعلاه سيضيف خانة أخرى عند الفهرس 0. [ 45 ] أضافت لغة BASIC الكاملة أيضًا نظامًا جديدًا لتحديد الحدين الأدنى والأعلى مباشرةً باستخدام الكلمة TOالمفتاحية `var`، على سبيل المثال، DIM A(100 TO 200)مما يُنشئ مصفوفة أحادية البعد ذات 101 خانة. [ 45 ] ولزيادة التعقيد، DECLARE NUMERICيمكن أيضًا استخدام `var` لإنشاء مصفوفات؛ يمكن إنشاء نفس أبعاد المثال الأخير باستخدام `var` DECLARE NUMERIC A(100 TO 200). [ 16 ]
الرياضيات والمنطق والمصفوفات
تضمنت قائمة عوامل التشغيل الرياضية المدعومة جميع العوامل من Minimal، +و -، *و، /و ^. [ 46 ] تُعيد الدالة الجديدة MODباقي قسمة عدد صحيح. تم توسيع قائمة عوامل التشغيل المنطقية، ANDحيث ORتم NOTحذفها من Minimal ثم إضافتها مرة أخرى، كما تمت إضافة الصيغ البديلة لعوامل المقارنة =<، =>و ><. [ 31 ]
بقيت قائمة الدوال الأساسية المدمجة مشابهة للإصدارات السابقة من لغة BASIC، بما في ذلك أمثلة شائعة مثل SQR`or` ABS. وتم توسيع دوال حساب المثلثات لتشمل ASIN` ACOSor` و` ATNor` و` COTor` و` CSCor` و` SECor`. أعادت الدالة الجديدة ANGLEالزاوية بين نقطة الأصل ونقطة معينة (X,Y). كانت لغة BASIC تحسب الزوايا عادةً بالراديان، ولكنها OPTION ANGLE DEGREESكانت تحول جميع المعاملات والمخرجات إلى درجات، وكان النظام يعرض PIالدالة المستخدمة في هذه التحويلات وفي أماكن أخرى. [ 47 ]
أدخلت لغة دارتموث بيسك عمليات المصفوفات في وقت مبكر نسبيًا من تطورها، وكانت هذه العمليات جزءًا من إصدار Full. تُعيد هذه العمليات تعريف الدوال الرياضية الموجودة، بحيث يُمكن ضرب مصفوفتين باستخدام `f` MAT A=A*Bأو ضرب محتويات مصفوفة في عدد قياسي إذا لم يكن المعامل B مصفوفة. كما يُضيف النظام عدة دوال خاصة بالمصفوفات فقط، منها ZER`o` و` INVert` و` DETerminate`. يتطلب إضافة عمليات المصفوفات أيضًا تعديل الكلمات المفتاحية الموجودة مثل PRINT`f` و`erminate` INPUT، والتي تُخرج أو تُدخل عناصر متعددة حسب الحاجة لملء مُعامل المصفوفة. [ 48 ]
يمكن إعادة تحديد أبعاد المصفوفات كجزء من عملية حسابية MAT INPUTعن طريق تحديد الحدود الجديدة، مثل MAT INPUT A(3.3). يجب أن يكون العدد الإجمالي للعناصر في الأبعاد الجديدة مساويًا أو أصغر من العدد الأصلي DIM، لذا في هذا المثال، إذا كان التعريف الأصلي هو DIM A(2,2)، فإن الإدخال سيؤدي إلى حدوث خطأ. [ 49 ]
الأوتار
لم تتضمن الإصدارات الأولى من لغة دارتموث بيسك متغيرات أو عمليات معالجة السلاسل النصية، وكانت السلاسل النصية الوحيدة في البرنامج عبارة عن ثوابت PRINT "HELLO, WORLD!". أضاف الإصدار الرابع، الصادر عام ١٩٦٨، متغيرات السلاسل النصية ودالة واحدة لمعالجتها، CHANGEوهي الدالة التي تحوّل السلاسل النصية من وإلى مصفوفة تحتوي على قيم ASCII للأحرف. على سبيل المثال، CHANGE "HELLO, WORLD!" TO Aتُنتج الدالة مصفوفة من القيم في المصفوفة A، حيث A(0) تساوي ٧٢، وهي القيمة العشرية لحرف "H" في نظام ASCII. جعل هذا الأمر معالجة السلاسل النصية صعبة نوعًا ما، فعلى سبيل المثال، لاستخراج كلمة "HELLO" من عبارة "HELLO, WORLD!"، كان على المستخدم القيام بما يلي:
10 A$ = "مرحباً أيها العالم!" 20 DIM A ( 25 ), B ( 5 ) 30 CONG A$ TO A 40 FOR I = 1 TO 5 50 B ( I ) = A ( I ) 60 NEXT I 70 CONG B TO B$أضافت العديد من لهجات لغة BASIC طرقها الخاصة لإجراء عمليات معالجة سلاسل نصية أكثر فائدة لتجنب هذا التعقيد. بالنسبة للغة Full BASIC، اختارت اللجنة صيغة معدلة من المفهوم الذي قدمته HP، وهو "تقطيع السلاسل النصية". يتعامل هذا المفهوم مع السلسلة النصية كمصفوفة من الأحرف، ويمكن الوصول إليها باستخدام مواصفات شبيهة بالمصفوفات تُعرف باسم "التقطيع" . لاستخراج "HELLO" من "HELLO, WORLD" في Full، يُستخدم الأمر ` slice` B$=A$(1:5). يشبه هذا المفهوم مفهوم `slice` CHANGE، لكن هذه الطريقة تُنتج نتائج عبارة عن سلاسل نصية، وليست قيمًا رقمية، وبالتالي يمكن PRINT B$استخراج "HELLO" من السلسلة النصية. أحد الاختلافات المهمة بين منهج Full والأساليب السابقة مثل HP هو استخدام صيغة مختلفة للتقطيع، بينما استخدمت الأنظمة السابقة صيغة المصفوفات. على سبيل المثال، في HP، السطر المكافئ هو `slice` B$=A$(1,5). نظرًا لأن هذه هي نفس صيغة الوصول إلى المصفوفات، فإن HP (وما شابهها) لم تسمح عمومًا بمصفوفات السلاسل النصية، [ 50 ] بينما سُمح بذلك في Full. [ 51 ]
ينبغي مقارنة هذا النهج بالحل الذي اختارته شركة DEC، وهو استخدام الدوال التي تُعيد سلاسل نصية جديدة . LEFT$وقد اعتمدت مايكروسوفت هذا الحل عند كتابة لغة BASIC الخاصة بها على جهاز PDP-10 . قد يكون التحويل بين هذين النوعين عرضةً للأخطاء، ولتنفيذ ما يُعادل ، ستستخدم Full . [ 37 ]MID$RIGHT$RIGHT$(n)DEF Right$(A$, n) = A$(Len(A$)-n+l)
المدخلات/المخرجات
كان الإدخال/الإخراج مجالًا آخرًا للتركيز في لغة Full BASIC . أما لغة Minimal BASIC، فكانت تقتصر على أوامر INPUTالإدخال PRINTوالإخراج، بالإضافة إلى إمكانية تضمين البيانات مباشرةً في الكود باستخدام DATAعبارات `include` و` READinclude`. وقد أضافت معظم اللهجات العملية عبارات ` OPENinclude` و`include` CLOSEلإنشاء "قناة" تُستخدم للإشارة إلى ذلك الملف أو الجهاز تحديدًا.
INPUTأُضيفت الآن كلمة اختيارية PROMPT، متبوعة بسلسلة نصية، ثم نقطتين رأسيتين، ثم متغيرات الإدخال، على سبيل المثال . [ 52 ] في ذلك الوقت، تضمنت جميع لغات BASIC تقريبًا ميزة مماثلة بدون الكلمة ، وباستخدام فاصلة منقوطة بدلًا من النقطتين الرأسيتين، على سبيل المثال، في MS BASIC، سيكون السطر نفسه كالتالي . علاوة على ذلك، أضافت Full أيضًا الكلمتين المفتاحيتين الجديدتين و : ، اللتين ستستمران في التنفيذ بعد 30 ثانية حتى لو لم يُدخل المستخدم أي شيء، وستضعان الوقت الذي استغرقه، والذي قد يكون 30 ثانية، في المتغير T. بالنسبة للأنظمة التي تفتقر إلى ساعة (وهو أمر شائع في ذلك الوقت)، ستُرجع T دائمًا القيمة -1. [ 53 ]INPUT PROMPT "What is your age? " : APROMPTINPUT "What is your age? "; ATIMEOUTELAPSEDINPUT TIMEOUT 30, ELAPSED T, PROMPT "What is your age? ": A
PRINTتم توسيع وظيفة ing بشكل مماثل بإضافة USINGالعبارة الاختيارية، التي كانت قد ظهرت بالفعل في عدد من التطبيقات. USINGعادةً ما كانت هذه العبارة متبوعة بسلسلة تنسيق تستخدم علامات الأرقام والنجوم وعلامات النسبة المئوية لتمييز المنازل العشرية. يمكن وضع سلسلة التنسيق في متغير نصي ثم الرجوع إليها، أو يمكن الرجوع إلى سطر منفصل اختياري يحتوي على هذه العبارة برقم السطر. [ 54 ] [ ج ] أضافت Full أيضًا أوامر جديدة لضبط منطقة الطباعة، و . [ 55 ] يمكن إرجاع القيم الحالية لهذه الإعدادات المختلفة (وغيرها) باستخدام . على سبيل المثال، سيؤدي استخدام متبوعًا بـ إلى ضبط J على 30. [ 56 ]IMAGE :SET MARGINSET ZONEWIDTHASKSET MARGIN 10ASK MARGIN J
يدعم المعيار الجديد عمليات الملفات بشكل كامل باستخدام OPEN`and` CLOSEورقم القناة مسبوقًا بعلامة عددية، على سبيل المثال، `.` OPEN #3: NAME "afile". يمكن بعد ذلك كتابة البيانات باستخدام INPUT`and` PRINTأو READ`and` WRITE. [ 57 ] تضمنت أوامر معالجة الملفات الإضافية ERASE`and` و`and` REWRITE، وجميع هذه الأوامر لها خيارات وأوضاع متعددة. يعود جزء كبير من ذلك إلى الأنواع المختلفة من الأجهزة المادية التي كانت لا تزال شائعة في أواخر السبعينيات، فالشريط المغناطيسي ، على سبيل المثال، لا يمكن الوصول إليه إلا بشكل تسلسلي، لذلك قدم المعيار الجديد خيارات لـ SEQUENTIAL`or` STREAMأو `and`، إلخ. تغطي قائمة الخيارات وتفاعلاتها وقيودها صفحات عديدة في المعيار. [ 58 ] على سبيل المثال، من الممكن PRINTكتابة ملف من DISPLAYالنوع `.`، ولكن ليس INTERNALمن النوع `.`، الذي يتطلب WRITE`.`. [ 59 ]
معالجة الاستثناءات وتصحيح الأخطاء
كما هو الحال في العديد من لغات BASIC في ذلك الوقت، أضافت Full TRACE ONالأمر الذي يطبع أرقام الأسطر أثناء تنفيذ البرنامج. كما يمكنها إعادة توجيه طباعة أرقام الأسطر إلى جهاز أو ملف آخر باستخدام TRACE ON TO #3، حيث يمثل #3 قناة مفتوحة مسبقًا. وأضافت أيضًا العبارة DEBUG ONذات الصلة BREAK، والتي تتسبب الأخيرة في حدوث استثناء إذا تم تفعيل وضع التصحيح مسبقًا. كان وضع التصحيح محصورًا ببرنامج معين، بحيث يمكن تفعيله في برنامج وإيقافه في برنامج فرعي، على سبيل المثال. [ 60 ]
بالإضافة إلى ذلك، أضافت Full معالجات استثناءات حقيقية، بناءً على WHEN EXCEPTION...END WHENالكتلة. هناك طريقتان لاستخدام ذلك: إذا بدأت كتلة التعليمات البرمجية WHEN EXCEPTION INبالتعليمات البرمجية التالية، فسيتم تنفيذها ككتلة، وأي استثناء داخلها سيؤدي إلى انتقالها إلى القسم USE، الذي يعمل بشكل مشابه لـ ELSE. يمكن أيضًا استخدامها عن طريق تعريف كتلة فرعية منفصلة باستخدام HANDLER nameوالتي سيتم استدعاؤها بالاسم باستخدام WHEN EXCEPTION USE name. [ 61 ] يمكن للتعليمات البرمجية اختبار الاستثناء الذي حدث باستخدام المتغيرات الوصفية EXTYPEأو EXTEXT$، وكلاهما لا يحتاج إلى ASK. RETRYيخرج معالج الأخطاء من معالج الأخطاء ويعود إلى سطر الخطأ، بينما CONTINUEيمكن استخدام داخل التعليمات البرمجية الرئيسية لتجاهل الأخطاء حتى داخل WHENالكتل. [ 62 ]
الرسومات
في نفس الفترة التي كان يُصمَّم فيها برنامج Full، كان هناك جهدٌ موازٍ جارٍ لتعريف نظام نواة الرسومات (GKS). وقد قُدِّم هذا النظام كأحد الوحدات الاختيارية في Full. أضاف هذا النظام عشرات الكلمات المفتاحية الخاصة، مثل ` LINE STYLEget` و` WINDOWget`، بصيغة لا تتطابق مع صيغة الوحدات الأخرى في المعيار. على سبيل المثال، CLIPكان الأمر `get` يُفعِّل قصّ العناصر إلى نافذة العرض الحالية بحيث لا تكون العناصر المرسومة خارج حدودها مرئية؛ وكان هذا الأمر يأخذ قيمة نصية بدلاً من قيمة منطقية CLIP "On". [ 63 ] كما أُضيفت عدة أوامر شائعة لتعديل الصور، مثل SHIFT`get` SCALEو`get` ROTATEو` SHEARget`. [ 64 ]
بما أن الصور غالبًا ما تُبنى من عناصر مشتركة، أضاف فول PICTUREبنية الكتلة الجديدة، والتي تشبه إلى حد كبير بنية الصورة الأصلية SUBوتُستدعى باستخدام DRAWبدلاً من CALL. [ 65 ] الفرق هو أنه يمكن تعديل مخرجات كتلة الصورة باستخدام WITH. على سبيل المثال، إذا تم تعريف PICTURE CIRCLEبحيث ينتج دائرة نصف قطرها واحد، فيمكن رسم دائرة أصغر ونقلها إلى الجانب باستخدام DRAW CIRCLE WITH SHIFT(2) * SCALE(.4). [ 65 ]
في الوقت الحالى
أضافت وحدة الوقت الحقيقي في Full مفهوم "الأقسام المتوازية" عبر الكلمة PARACTالمفتاحية. بدت هذه الأقسام كإجراءات فرعية (وصور توضيحية)، ولكنها احتوت على عدد من الكلمات المفتاحية الإضافية التي تتحكم في استدعائها. على سبيل المثال، يمكن تعريف كود يستجيب لرسالة معينة EVENT، ثم تشغيله عن طريق إصدار أمر MESSAGEآخر في الكود. يمكن للرسائل استدعاء معالجات متعددة باستخدام SHAREDمفهوم المنافذ. [ 66 ]
سمح النظام أيضًا بربط هذه الكتل والكائنات بشفرة خارجية تُنشئ هذه الرسائل. على سبيل المثال، يمكن كتابة شفرة تنتظر جهازًا يُنشئ مخرجات نصية دوريًا، ثم يتم استدعاء المعالج المناسب تلقائيًا عند توفر نص جديد. ولأن البيانات الفعلية من هذه الأجهزة غالبًا ما تكون متعددة الأجزاء، وليست بسيطة كسلسلة نصية أو رقم، فقد أضافت مكتبة الوقت الحقيقي إمكانية تعريف STRUCTUREs التي يمكن قراءتها أو كتابتها كوحدة ذرية. [ 67 ] ثم تُقرأ هذه البيانات وتُكتب باستخدام الأوامر IN FROMو OUT TO، [ 68 ] أو إذا كانت البيانات ، فيُستخدم الأمر و SHAREDالمشابهان . [ 69 ]GET FROMPUT TO
على الرغم من إمكانية نمذجة العديد من البرامج التي تعمل في الوقت الحقيقي كنظام يستجيب ببساطة للأحداث الخارجية، فمن الشائع أيضًا أن يقوم البرنامج نفسه بنشر هذه الأحداث بشكل دوري. ولتحقيق ذلك، أضاف فول STARTالأمر والوظيفة المرتبطة به WAIT، والتي من شأنها إيقاف التنفيذ مؤقتًا لفترة زمنية محددة DELAY(عدد من الثواني) أو TIME(وقت محدد من اليوم) أو حتى EVENTيتم رصد حدث ما. [ 70 ]
ECMA مقابل ANSI
لم يتم تطوير معايير ECMA وANSI بشكل مشترك، بل بشكل متوازٍ، مع وجود تداخل في عضوية اللجان. في المقابل، لم يقم فريق عمل ISO الخاص بلغة BASIC بتطوير معيار خاص به، بل خطط لاعتماد معيار ECMA أو ANSI. [ 71 ]
بصرف النظر عن معيار ANSI، قامت لجنة ECMA المسؤولة عن معيار BASIC بتقسيمه إلى قسمين: ECMA BASIC-1 وECMA BASIC-2. تضمن BASIC-1 بعضًا من نظام معالجة الملفات ولكنه افتقر إلى معالجة الاستثناءات، بينما أضاف BASIC-2 مجموعة كاملة من أوامر الملفات، والحسابات العشرية الثابتة، ونظام معالجة الاستثناءات. [ 1 ] بالإضافة إلى ذلك، في BASIC-1، كانت جميع الكلمات المفتاحية الأساسية PRINTكلمات محجوزة مما سهّل عمل المحلل اللغوي، بينما في BASIC-2 اتبعت نمط ANSI ويمكن استخدامها ضمن الإجراءات الفرعية والدوال التي ينشئها المستخدم. [ 1 ]
كان فريق عمل المنظمة الدولية للمقاييس (ISO) قد خطط في البداية لاستخدام معيار ECMA. ولكن في مواجهة مشكلة وجود معيارين مرشحين مختلفين، وُجِّه الفريق في سبتمبر 1987 إلى وضع معيار دولي موحد يجمع بينهما. وقد تحقق ذلك من خلال تحديد أن الامتثال لأي من المعيارين يُعدّ بمثابة امتثال لمعيار ISO. [ 71 ]
ملحوظات
مراجع
الاقتباسات
- 1 2 3 4 ECMA 1986 ، ص. i.
- ↑ ماكراكين، هاري (29 أبريل 2014). "خمسون عامًا من لغة البرمجة BASIC، التي جعلت أجهزة الكمبيوتر شخصية" . مجلة تايم .
- ↑ "آي بي إم في مواجهة العالم: هكذا هي الأمور" . مجلة كمبيوتر وورلد . 5 ديسمبر 1973.
- ↑ ليبسون، ستيف (2017). "إتش بي: شركة الحواسيب عن طريق الصدفة، ولكن عن قصد" . HP9825.COM .
- ↑ "وصف معالج هيوليت-باكارد 2100، 1972" (ملف PDF) . تم الاطلاع عليه بتاريخ 18 أغسطس 2020 .
- ↑ ECMA 1978 ، ص. iii.
- ↑ لورمان 1984 ، ص 173.
- ↑ لورمان 1984 ، ص 152.
- ↑ المعيار 1987 ، الصفحات i، ii.
- ↑ كورتز 1982 ، ص 182، 186.
- ↑ كورتز 1982 ، ص 214.
- ↑ كورتز 1982 ، ص 188.
- ↑ المعيار 1987 ، ص. i.
- ↑ كورتز 1982 ، ص 190.
- ↑ غونثيروث 1983 ، ص 51.
- 1 2 3 Guntheroth 1983 ، ص 52.
- ↑ غونثيروث 1983 ، ص 53.
- ↑ "وجهات نظر" . مجلة الكمبيوتر الشخصي . 29 سبتمبر 1987. ص 15.
- ↑ بيليس، ماري (26 يناير 2019). "تاريخ لغة البرمجة BASIC" .
- ↑ ماكجريجور، جيه جيه؛ وات، إيه إتش (أكتوبر 1981). "هل قواعد باسكال جيدة؟: مقارنة بين باسكال وبيسك كلغات لتعليم برمجة الحاسوب للمبتدئين" . مجلة الرياضيات . 65 (433): 171-182 . doi : 10.2307/3617129 . JSTOR 3617129. S2CID 64737920 .
- ↑ مايس 1982 ، ص 29.
- ↑ بورنيل 1985 ، ص 366.
- ↑ دفوراك 1984 ، ص 88.
- ↑ غونثيروث 1983 ، ص 54.
- ↑ المعيار 1987 ، ص 272.
- ↑ المعيار 1987 ، ص 106.
- 1 2 المعيار 1987 ، ص. 31.
- ↑ المعيار 1987 ، ص 29.
- ↑ المعيار 1987 ، ص 50.
- ↑ كورتز 1982 ، ص 196.
- 1 2 Guntheroth 1983 ، ص 55.
- ↑ المعيار 1987 ، الصفحات 17-19.
- ↑ "التالي بدون For" . مؤتمر مايكروسوفت بيلد . 13 سبتمبر 2021.
- ↑ المعيار 1987 ، ص 87.
- ↑ المعيار 1987 ، ص 84.
- ↑ المعيار 1987 ، الصفحات 94، 95.
- 1 2 المعيار 1987 ، ص. 94.
- ↑ المعيار 1987 ، الصفحات 94-100.
- ↑ المعيار 1987 ، ص 105.
- ↑ كورتز 1982 ، ص 192.
- ↑ المعيار 1987 ، ص 49.
- ↑ المعيار 1987 ، ص 263.
- ↑ المعيار 1987 ، ص 262.
- ↑ المعيار 1987 ، ص 265.
- 1 2 المعيار 1987 ، ص. 66.
- ↑ المعيار 1987 ، ص 37.
- ↑ غونثيروث 1983 ، ص 49.
- ↑ غونثيروث 1983 ، ص 70.
- ↑ غونثيروث 1983 ، ص 71.
- ↑ برانون، تشارلز (أبريل 1981). "مصفوفات السلاسل النصية في لغة أتاري بيسك". مجلة كومبيوت!، صفحة 103.
- ↑ المعيار 1987 ، ص 74.
- ↑ المعيار 1987 ، ص 111.
- ↑ المعيار 1987 ، الصفحات 111، 112.
- ↑ المعيار 1987 ، ص 123.
- ↑ المعيار 1987 ، ص 164.
- ↑ المعيار 1987 ، ص 151.
- ↑ المعيار 1987 ، ص 142.
- ↑ المعيار 1987 ، الصفحات 141-154.
- ↑ المعيار 1987 ، ص 144.
- ↑ المعيار 1987 ، ص 195.
- ↑ المعيار 1987 ، الصفحات 187-188.
- ↑ المعيار 1987 ، ص 188.
- ↑ المعيار 1987 ، ص 199.
- ↑ المعيار 1987 ، ص 230.
- 1 2 المعيار 1987 ، ص. 229.
- ↑ المعيار 1987 ، ص 239.
- ↑ المعيار 1987 ، الصفحات 239-240.
- ↑ المعيار 1987 ، ص 248.
- ↑ المعيار 1987 ، ص 250.
- ↑ المعيار 1987 ، ص 244.
- 1 2 كورتز 1994 ، ص. 478.
فهرس
- لغات برمجة ANSI: لغة BASIC الكاملة . ANSI. يناير 1987.
- المعيار ECMA-116: BASIC (ملف PDF) . ECMA. يونيو 1986. مؤرشف من الأصل (ملف PDF) بتاريخ 14-10-2011.
- لغة BASIC الأساسية (ملف PDF) . ECMA. يناير 1978.
- دفوراك، جون (19 نوفمبر 1984). "محزن ولكنه حقيقي أساسي" . إنفوورلد . المجلد 6، العدد 47. ص 88.
- غونثيروث، كورت (يوليو 1983). "معيار ANSI BASIC الجديد" . إشعارات SIGPLAN . 18 (7): 50-59 . doi : 10.1145/988216.988221 . S2CID 31236801 .
- كيميني، جون؛ كورتز، توماس (1984). "ترسيخ لغة بيسك". في ديتليا، ستيف (محرر). ديجيتال ديلي . وركمان. ISBN 9780894805912.
- كورتز، توماس (يونيو 1982). "في الطريق إلى لغة بيسك القياسية" (ملف PDF) . بايت . المجلد 7، العدد 6. الصفحات 182-218 . مؤرشف من النسخة الأصلية (ملف PDF) في 4 مايو 2016.
- لورمان، آرثر (مايو 1984). "البرمجة الهيكلية في لغة بيسك؛ الجزء 1" . الحوسبة الإبداعية . المجلد 10، العدد 5. الصفحات 152-156 .
- مايس، سكوت (6 سبتمبر 1982). "مجلس الكليات يطور دورة AP قائمة على لغة باسكال" . إنفوورلد . المجلد 4، العدد 25. ص 29.
- بورنيل، جيري (سبتمبر 1985). "أجهزة الكمبيوتر الشخصية ، والملحقات، والبرامج، والأفراد" . بايت . المجلد 10، العدد 9. الصفحات 366-373 . تاريخ الاسترجاع: 20 مارس 2016 .
- تود، مايك (19 سبتمبر 1988). "لغة ذات قوة محتملة تقصر عن تحقيق أهدافها" . إنفوورلد . المجلد 10، العدد 38. الصفحات 78-80 . الرقم الدولي الموحد للدوريات 0199-6649 .
- كورتز، توماس إي. (1994). "مشهد معايير لغات البرمجة، بعد عشر سنوات من الورقة 8: بيسك". معايير وواجهات الحاسوب . 16 ( 5-6 ). إلسيفير: 477-480 . doi : 10.1016/0920-5489(94)90028-0 .
- " الريادة". TechTrends . 33. Springer Nature : 3. مارس 1988. doi : 10.1007/BF02771221 . ISSN 8756-3894 .
للمزيد من القراءة
- كيميني، جون؛ كورتز، توماس (1987). برمجة BASIC المهيكلة . وايلي. ISBN 9780471810872.
روابط خارجية
- لغة BASIC العشرية - تطبيق كامل نسبياً للغة BASIC الكاملة ووحدات الرسومات الخاصة بها
- لغة البرمجة الأساسية
- معايير المعهد الوطني الأمريكي للمعايير
- معايير إيكما
