نظام ساوثهامبتون بيسك

كان نظام ساوثهامبتون بيسك ( SOBS ) لهجة من لغة برمجة بيسك تم تطويرها واستخدامها على أجهزة الكمبيوتر من سلسلة ICT 1900 في أواخر الستينيات وأوائل السبعينيات؛ تم تنفيذه كمترجم بيسك تزايدي تحت نظام التشغيل MINIMOP في جامعة ساوثهامبتون [ 1 ] وتم تشغيله أيضًا تحت MAXIMOP .

كان يتم تشغيله من محطة طرفية من نوع Teletype ، على الرغم من أنه كان من الممكن أيضًا استخدام محطات طرفية من نوع CRT.

خصائص اللغة

على غرار العديد من التطبيقات المبكرة للغة BASIC، كان برنامج SOBS يتطلب ترقيم الأسطر ، وذلك لتمكين المستخدم من إضافة أسطر جديدة إلى البرنامج في المكان المطلوب، وأيضًا كأهداف لعبارات GOTO`and` GOSUB. RENUMBERكما توفرت خاصية لإعادة ترقيم أجزاء من الكود، افتراضيًا بزيادات قدرها 10، لتوفير مساحة أكبر في منتصف البرنامج.

باستثناء أرقام الأسطر، تم تمثيل جميع القيم العددية داخليًا كأرقام عشرية .

البيانات

كانت اللغة تحتوي على عدد قليل نسبياً من التعليمات البرمجية مقارنة بلغات البرمجة الحديثة:

إفادةغاية
DATAالبيانات المخزنة READلإدخالها في متغيرات أثناء التشغيل
DIM var(size)...تحديد أبعاد المصفوفة. تم دعم المصفوفات أحادية وثنائية وثلاثية الأبعاد.
ENDأوقف تنفيذ البرنامج.
FOR var=start TO end [STEP incr]نفّذ مجموعة من العبارات بشكل متكرر لقيم مختلفة للمتغير var
GOSUB lineاستدعاء روتين فرعي عند رقم سطر معين؛ سيعود التدفق إلى العبارة التالية عند RETURNتنفيذ a.
GOTO lineالتفرع غير المشروط إلى رقم سطر معين.
IF expr THEN line [ELSE line]التفرع المشروط. لا يمكن لأجزاء " THENو" ELSEإلا أن تعطي أرقام الأسطر التي يجب الانتقال إليها.
INPUT varاطلب من المستخدم إدخال البيانات
LET var=exprقم بتعيين قيمة لمتغير. على عكس العديد من اللهجات الحديثة للغة BASIC، LETلم تكن كلمة اختيارية.
NEXT varقم بتنفيذ التكرار التالي للحلقة FOR.
PRINTإخراج إلى جهاز التلكس
READ var...اقرأ البيانات من DATAالعبارات إلى المتغيرات
REMاختصارًا لكلمة REM"آرك"، يسمح هذا بوضع تعليق على سطر
RESTORE [line]أعد ضبط READالمؤشر لإعادة القراءةDATA
RETURNالعودة إلى السطر التالي لـ GOSUB.

لاحظ على وجه الخصوص عدم وجود WHILEعبارة مشابهة؛ FORفقد كانت بنية التكرار الوحيدة المتاحة للمبرمجين.

المتغيرات

كانت أسماء المتغيرات للقيم العددية إما حرفًا واحدًا، أو حرفًا واحدًا متبوعًا برقم واحد، مما يسمح بوجود 286 متغيرًا منفصلًا إجمالًا. وكانت السلاسل النصية مدعومة؛ وكانت أسماء متغيراتها تخضع لنفس القيد ولكن متبوعة £برمز الجنيه الإسترليني (#).

الوظائف

تم توفير عدد محدود من الدوال العددية، وكلها تأخذ مُعاملًا عدديًا واحدًا:

وظيفةوظيفة(x{\displaystyle x}) تم إرجاعها
SINالخطيئةx{\displaystyle \sin x}
COSكوسx{\displaystyle \cos x}
ATNدالة الظل العكسيx{\displaystyle \arctan x}
SQRx{\displaystyle {\sqrt {x}}}
LOGسجلx{\displaystyle \log x}
EXPهـx{\displaystyle e^{x}}
INTأكبر عدد صحيح لا يزيد عنx{\displaystyle x}
SGN-1 أو 0 أو 1، اعتمادًا على ما إذاx{\displaystyle x}كان أقل من أو يساوي أو أكبر من الصفر
ABS-x{\displaystyle -x}لوx{\displaystyle x}كانت النتيجة سلبية، وإلاx{\displaystyle x}

كان دعم السلاسل النصية محدودًا، حيث اقتصر على دالة واحدة فقط، LENتُعيد طول السلسلة النصية المُدخلة. وكانت السلاسل الفرعية مدعومة باستخدام الأقواس المربعة، لذا A£[2,3]يُشير الرمز `--` إلى السلسلة الفرعية من الحرف الثاني إلى الحرف الثالث شاملًا الحرف الثاني.

10 LET A £ = "FOO" 20 PRINT A £ [ 2 , 3 ]

سوف يطبعOO

كان هذا التركيب مدعومًا أيضًا على الجانب الأيسر من عملية الإسناد، لذلك

10. ليكن A £ = "FOO" 20. ليكن A £ [ 2 , 2 ] = "BAR" 30. اطبع A £

سوف يطبعFBARO

المصفوفات

كان الدعم للتعامل مع مصفوفات البيانات قويًا نسبيًا، حيث كانت MATالعبارات قادرة على قراءة مصفوفة كاملة من DATAالعبارات، وإجراء عمليات مصفوفة مفيدة مثل جمع المصفوفات وطرح المصفوفات وضرب المصفوفات وإيجاد المصفوفة العكسية لمصفوفة مربعة .

مثال:

10 DIM A ( 3 , 3 ) 20 MAT READ A 30 DATA 1 , 1 , 2 , 1 , 0 , 2 , 0 , 2 , 1 40 DIM B ( 3 , 3 ) 50 MAT READ B 60 DATA 0 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 0 70 DIM C ( 3 , 3 ), D ( 3 , 3 ) 80 MAT C = A * B 90 MAT D = INV ( C ) 100 MAT PRINT D ,
Aيُقرأ من DATAالعبارة الأولى(112102021){\displaystyle {\begin{pmatrix}1&1&2\\1&0&2\\0&2&1\end{pmatrix}}}
Bيُقرأ من DATAالبيان الثاني(001010100){\displaystyle {\begin{pmatrix}0&0&1\\0&1&0\\1&0&0\end{pmatrix}}}
Cيتم حسابها عن طريق الضرب AوB(211201120){\displaystyle {\begin{pmatrix}2&1&1\\2&0&1\\1&2&0\end{pmatrix}}}
Dيتم حسابها كمعكوس لـC(2211-104-3-2){\displaystyle {\begin{pmatrix}2&2&1\\1&-1&0\\4&-3&-2\end{pmatrix}}}

سيكون الناتج 2 2 1 1 -1 0 4 -3 -2

تصحيح الأخطاء

كانت إمكانيات تصحيح الأخطاء في SOBS بدائية، ومقتصرة في الغالب على TRACEالعبارة. TRACE ONوكان من شأنها أن تجعل المفسر يطبع رقم كل سطر أثناء تنفيذه.

مراجع

  1. ريس، إم جيه؛ أوبنهايمر، إيه دبليو (21 يناير 1977). "SOBS - نظام BASIC تدريجي" . البرمجيات: الممارسة والخبرة . 7 (5). وايلي إنترساينس: 631-643 . doi : 10.1002/spe.4380070508 . S2CID 33989728. تاريخ الاسترجاع: 18 مايو 2009 . {{cite journal}}: CS1 maint: deprecated archiveal service ( link )