سنوبول
تعريفًا بالموضوع، سنوبول (اللغة الرمزية لمعالجة النصوص String Oriented Symbolic Language) هو اسم لمجموعة من لغات برمجة الحاسوب التي ظهرت بين عامي 1962 و1967 في مختبرات بيل في إيه تي أند تي على يد ديفيد جي. فاربر ورالف إي. جريسولد وإيفان إي. بولونسكي توجتها ـسنوبول 4. كانت سنوبول واحدة من لغات معالجة النصوص التي ظهرت بين الخمسينيات والستينيات التي كان من ضمنها كوميت COMIT وتراك TRAC. وتعرض الأقسام التالية جوانب أخرى من الموضوع.
من جانب آخر، قام أحد مصممي سنوبول 4 بتصميم لغات لتخلف سنوبول 4 سماها إس إل5 وأيكون Icon –التي جمعت بين خاصية التعقب في مطابقة الأنماط من سنوبول 4 والهيكلة القياسية من اللغات الخوارزمية – كما تفردت ببعض المزايا الخاصة.
وفي هذا السياق، تصنف سنوبول 4 ضمن اللغات التي تستعمل قواعدها صيغة باكوس نور –التي تكافئ قواعد اللغات الحرة context-free grammars وتتفوق على التعابير النمطية. تعتبر «التعابير النمطية» في الإصدارات الحالية من لغتي أوك وبيرك امتدادا للتعابير النمطية بالمعنى التقليدي، ولكن التعابير النمطية على عكس أنماط سنوبول4 ليست تكرارية وهو ما يمنح انماط سنوبول 4 ميزة حسابية. إلا أن التعابير النمطية بلغة بيرل أصبحت تكرارية منذ الإصدار 5.1 (الذي صدر في ديسمبر 2007).
ومن ناحية أخرى، كانت سنوبول 4 تدرس في الكثير من كبرى الجامعات الأمريكية في أواخر الستينيات وأوائل السبعينيات وانتشر استخدامها في السبعينيات والثمانينيات في العلوم الإنسانية كلغة لمعالجة النصوص.
من جانب آخر، ولكنها تراجعت في السنوات الأخيرة أمام اللغات الأحدث مثل أوك AWK وبيرل التي جعلت معالجة النصوص بواسطة التعابير النمطية أكثر رواجا.
وفي السياق ذاته، تتميز سنوبول 4 عن أغلب لغات البرمجة بوجود الأنماط patterns كنوع بيانات من الدرجة الأولى (نوع بيانات يمكن معالجة محتواه بكل الطرق الممكنة لأنواع البيانات الأخرى) ووجود معاملات operators لربطها والاختيار بينها. يمكن التعامل مع السلاسل النصية التي تنشأ أثناء التنفيذ كبرامج ويمكن تنفيذها كذلك.
قراءات إضافية
من جهة ثانية، Gimpel, James F. Algorithms in SNOBOL4. New York: Wiley, 1976 (ISBN 0-471-30213-9); republished Salida, CO: Catspaw, 1986 (ISBN 0-939793-00-8).
وعلى صعيد آخر، Emmer, Mark B. SNOBOL4+: The SNOBOL4 Language for the Personal Computer User. Englewood Cliffs, NJ: Prentice Hall, 1985 (ISBN 0-13-815119-9).
من جهة ثانية، Griswold, Ralph E., J. F. Poage, and I. P. Polonsky. The SNOBOL4 Programming Language. Englewood Cliffs, NJ: Prentice Hall, 1968 (ISBN 0-13-815373-6).
وفي هذا السياق، Hockey, Susan M. Snobol Programming for the Humanities. New York: Clarendon Press; Oxford: Oxford University Press, 1985 (ISBN 0-19-824676-5).
وفي هذا الصدد، Griswold, Ralph E. String and List Processing in SNOBOL4: Techniques and Applications. Englewood Cliffs, NJ: Prentice Hall, 1975 (ISBN 0-13-853010-6).
من جانب آخر، Griswold, Ralph E. The Macro Implementation of SNOBOL4. San Francisco, CA: W. H. Freeman and Company, 1972 (ISBN 0-7167-0447-1).
A sample program in SNOBOL
وفي السياق ذاته، Charles Hall Collection on the SNOBOL Programming Language. Charles Babbage Institute, University of Minnesota, Minneapolis.
علاوةً على ذلك، Oral history interview with Ralph E. Griswold—Griswold discusses development of SNOBOL Charles Babbage Institute, University of Minnesota, Minneapolis.
التسمية
إضافةً إلى ذلك، وهذا بين أننا نحتاج لاسم آخر فجلسنا وتحدثنا وشربنا القهوة وبعد وقت طويل قال أحدهم – غالبا رالف – "فرصنا في إيجاد اسم معدومة we don’t have a Snowball chance in hell of finding a name” فصحنا جميعا "وجدناها سنوبول" ثم بدأنا في التفكير فيما يمكن أن تشير إليه.
إضافةً إلى ذلك، بعض التفاسير للفظ سنوبول “SNOBOL” ‘String Oriented Symbolic Language’ أو (على طريقة إنسيالسم) ‘StriNg Oriented symBOLic Language’.
ومن ناحية أخرى، كانت الأمور مستقرة حتى بدأت في إرسال أحد دفعات المهام لتجميع النظام كالعادة على بطاقة مهامي – التي كانت تسمى قياسيا بعملي واسمي - Sexi Farber فنظرت إحدى الفتيات إليها وقالت «هذا ما تظنه أنت» بطريقة مضحكة.
وفي هذا السياق، حسب كلام ديف فاربر، فقد «قرر هو وجريزولد وبولونسكي تسميتها Symbolic EXpression Interpreter SEXI»
سنوبول وبايثون
وعلى صعيد آخر، بعد أن وجد بعض مستعملي لغة بايثون أن استخدام التعابير النمطية مقيد تم عمل إضافة لبايثون تسمح باستخدام مطابقة النمط من سنوبول في برامج بايثون. الإضافة اسمها سنوبي SnoPy وكتبها دون روزنبرج.
- انظر كذلك
- آيكون
- ينيكون
- المراجع
التطبيقات
وعلى صعيد آخر، أضاف تطبيق سبيتبول كذلك عددا من المزايا - رغم عدم استخدام مصطلحات البرمجة المهيكلة التقليدية – التي يمكن استخدامها لتقديم الكثير من الإمكانيات التي تعتبر من إمكانيات «البرمجة المهيكلة»، أبرزها البنية المتداخلة if/then/else. أصبحت هذه المزايا من وقتها متوفرة في أغلب تطبيقات سنوبول4 الأخيرة. بعد أن ظل سبيتبول منتجا تجاريا لأعوام أصبح أخيرا مجانيا في أبريل 2009 ويخضع لرخصة جنو العمومية.
وفي هذا الصدد، استعمل محرر الملفات بنظام ميتشيجان الطرفي لغة معالجة أنماط مستمدة من سنوبول4.
وفي السياق ذاته، التطبيق النموذجي كان على بي دي بي – 10 PDP-10، واستعمل لدراسة المصرفات والقواعد الشكلية والذكاء الاصطناعي خاصة الترجمة الآلية والفهم الآلي للغات طبيعية. كان التطبيق الأصلي على آي بي إم 7090 IBM 7090 في مختبرات بيل. صممت سنوبول4 في الأساس بهدف سهولة الانتقال، التطبيق الأول بدأ على آي بي إم 7094 ثم اكتمل على آي بي إم 360 عام 1967. تنقلت اللغة باستمرار بين الكثير من المنصات.
كذلك، هناك الكثير من التطبيقات المتوفرة، ماكرو سنوبول4 هو تطبيق مفتوح المصدر كتبه فيل بودن يلغة السي وهو قادر على العمل على أي منصة على وجه التقريب، وهو متاح على http://www.snobol4.org/. شركة كاتسبو Catspaw, Inc. تقدم تطبيق تجاري للغة سنوبول4 يعمل مع الكثير من المنصات مثل الدوس وماكنتوش وصن وآر إس\6000 وغيرها على http://www.snobol4.org/. أحد الإصدارات القديمة سنوبول4+ متوفر الآن مجانا من كاتسبو. سنوبول4 منيسوتا سنوبول4 Minnesota SNOBOL4 الذي كتبه فيكتورز بيرستيس هو تطبيق الحاسوب الشخصي الأقرب للإصدار الذي كان مستعملا على حاسب آي بي إم المركزي IBM mainframe (ويدعم حتى أمر FORMAT المستوحى من فورتران) وهو متاح مجانا كذلك على http://www.berstis.com/snobol4.htm.
من جهة ثانية، برغم أن سنوبول نفسها تفتقر لمزايا البرمجة المهيكلة يوجد أحد إصداراتها الذي يحتوي على هذه المزايا وهو سنوستورم Snostorm وظهر في كلية لندن الجامعية (UCL) بين 1982 و1984 وإصدار آخر كتبه أندرو كوينيج اسمه سنوكون Snocone.
وفي هذا السياق، تطبق اللغة عادة كمفسر نظرا لصعوبة تطبيق بعض مزاياها عالية المستوى، ولكن هناك مصرف وهو مصرف سبيتبول وبه كل إمكانيات المفسر على وجه التقريب.
ومن ناحية أخرى، يأتي مصرف جنات للغة أيدا مع حزمة (GNAT.Spitbol) التي تطبق كل قواعد معالجة السلاسل في سبيتبول، ويمكن مناداتها بداخل أي برنامج أيدا.
تطورها
ومن ناحية أخرى، مع ازدياد نجاح سنوبول3 استمر مؤلفوها في تلقي طلبات متزايدة لتطويرها وشكاوي كذلك من عدم توافق وعيوب الإصدارات التي لم يقوموا بكتابتها، ولمعالجة هذا وللاستفادة من الحواسيب الجديدة التي ظهرت في الستينيات قرروا عمل سنوبول4 بإضافة الكثير من أنواع البيانات والمزايا ولكن باستخدام آلة افتراضية لتسهيل انتقالها من حاسوب إلى آخر، ظل مترجم سنوبول4 مكتوبا بلغة التجميع، ولكنهم استعملوا مزايا الماكرو في المجمع لتعريف أوامر الآلة الافتراضية للغة تطبيق سنوبول SNOBOL Implementation Language (SIL) وأدى هذا إلى تحسن كبير في قابلية اللغة للانتقال فقد جعل انتقال الآلة الافتراضية التي تستضيف المترجم سهلا عن طريق إعادة بناء أوامرها الافتراضية على أي جهاز عليه مجمع ماكرو أو لغة برمجة عالية المستوى.
إضافةً إلى ذلك، قام أصحاب لغة سنوبل الأصلية بعملها كآداة للتعامل مع السلاسل كثيرة الحدود، كتبوها بلغة التجميع لتعمل على آي بي إم 7090. كانت قواعدها بسيطة، وبها نوع بيانات واحد – السلاسل – ولا تحتوي على دوال أو تعريفات وتحكمها بالخطأ محدود جدا، ولكن على الرغم من بساطتها و«خصوصيتها» فقد بدأت تنتشر إلى مجموعات أخرى، لذلك قرر مؤلفوها تطويرها وتنسيقها، فأعادوا كتابتها وأضافوا بعض الدوال – قياسية أو من تعريف المستعمل – وأصدروها تحت اسم سنوبول3، كان هناك سنوبول2 ولكنها كانت مرحلة وسطية قصيرة العمر لم تدعم دوال المستعمل ولم يتم إصدارها أبدا. لاقت سنوبول3 نجاحا كبيرا وأعيدت كتابتها لحواسيب أخرى غير آي بي إم 7090 على يد مبرمجين آخرين مما أدى إلى وجود عدد من الإصدارات الغير متوافقة.
المزايا
ومن جهة أخرى، قدم إصدار سنوبول4 عددا من أنواع البيانات الجاهزة مثل الأعداد الصحيحة والأعداد الحقيقية محدودة الدقة والسلاسل والأنماط والمصفوفات Arrays والجداول (المصفوفات المرتبطة associative arrays)، كما أن سنوبول4 مكنت المستعمل من تعريف أنواع بيانات ودوال جديدة. كانت إمكانية تعريف أنواع بيانات خاصة بالمبرمج خاصية متقدمة في هذا وقتها، كانت مشابهة لخاصية السجلات records التي ظهرت أولا في كوبول أخيرا في باسكال (لغة برمجة)).
علاوةً على ذلك، كل سطور أوامر Command line سنوبول بهذه الصياغة Label1 Subject Pattern = Object :(Goto Label2)، كل الخانات الخمس اختيارية. بشكل عام يتم مطابقة subject بـالنمط pattern وإذا وجدت خانة object كان يتم استبدال الأجزاء التي تمت مطابقتها بـobject طبقا لقواعد معينة للاستبدال، goto يمكن أن يكون أمر تفرع فوري أو مشروط بنجاح أو فشل عملية مطابقة النمط.
علاوةً على ذلك، يمكن أن تؤدي أنماط سنوبول المعقدة ما يعتبر آداؤه غير عملي أو مستحيل عن طريق التعابير النمطية الأقل تعقيدا المستعملة في أغلب لغات مطابقة الأنماط الأخرى. تأتي بعض هذه القوة مما يسمى بإضافات سبيتبول “SBITBOL extensions” (التي تستعمل من وقتها في كل تطبيقات لغة سنوبول4 الأصلية) رغم أنه يمكن الوصول لنفس الآداء بدونها. بعض هذه القوة مصدرها الآثار الجانبية التي يمكن أن إحداثها أثناء عملية مطابقة النمط ومن ضمنها الاحتفاظ بالكثير من النتائج المؤقتة للمطابقة وإمكانية تنفيذ أي دالة من تعريف المبرمج لتقوم بأي معالجة مطلوبة وإمكانية التأثير في اتجاه عملية المطابقة الجارية أو حتى تغيير النمط نفسه أثناء العملية. يمكن حفظ الأنماط كأي نوع بيانات من الدرجة الأولى ويمكن ربطها واستخدامها بداخل أنماط أخرى واستخدامها بناء تعابير شديدة التعقيد، فيمكن مثلا كتابة نمط سنوبول4 لمطابقة «اسم كامل وعنوان بريدي دولي» وهو ما يستحيل على وجه التقريب باستخدام التعابير النمطية.
وفي هذا الصدد، يمكن ان يكون نمط سنوبول شديد البساطة أو بالغ التعقيد، فالنمط البسيط يمكن ان يكون عبارة عن سلسلة نصية ("ABCD") أما المعقد فيمكن أن يكون منظومة ضخمة تصف مثلا قواعد لغة برمجة بأكملها. يمكن كتابة مفسر لغة interpreter بسنوبول على وجه التقريب بالكامل باستخدام التعبير الذي يمثله بصيغة باكوس نور مع بعض التغييرات، ويمكن ألا يزيد كود مجمع ماكرو ومفسر لعتاد نظري تماما عن بضع مئات من السطور وإضافة أمر جديد بسطر واحد.
وفي هذا السياق، تنافس سنوبول لغة إيه بي إل APL في تميزها في الصياغة وأسلوب البرمجة فكلاهما يختلف جذريا عن لغات البرمجة الإجرائية procedural languages «القياسية» مثل بيسيك وفورتران وسي (لغة برمجة) – سي.
وعلى صعيد آخر، تحتفظ سنوبول بالسلاسل في الكوم heap الذي يخضع لعملية جمع القمامة.
إضافةً إلى ذلك، سنوبول4 هي المثال الرابع والأخير في سلسلة من لغات البرمجة المختصة لمعالجة النصوص.
من جهة ثانية، تستعمل عملية مطابقة النمط في سنوبول4 خوارزمية التعقب التي تشابه تلك المستعملة في لغة البرمجة المنطقية برولوغ – التي تستعمل بنية مشابهة للنمط من خلال دي سي جي. تجعل هذه الخوارزمية استخدام سنوبول كلغة برمجة منطقية أسهل من أغلب اللغات الأخرى.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟