لغات البرمجة
لغات برمجه
Programming language - Langage de programmation
لغات البرمجة
لغة البرمجة programming language هي لغة مؤلفة من مجموعة من المحارف والقواعد الناظمة لها في رموز وكلمات وتعليمات للتعبير عن الخوارزمية بهدف تنفيذها على الحاسوب. تتضمن هذه القواعد آليات التصريح عن المتحولات variables في الأنماط المختلفة مثل: نمط الأعداد الصحيحة integers - نمط الأعداد الحقيقة أو الكسرية real - المحارف characters وسلاسل المحارف strings - الجداول arrays والمصفوفات matrices - التسجيلات records - الملفات files - المؤشرات pointers، وأوامر التحكم التي تسمح بمعالجة هذه المتحولات مثل: تعليمة الإسناد (=,=:) والتعليمات الشرطية if then else, switch, case, go to، والتعليمات الحلقية while, do, until, for وتعليمات القراءة والكتابة من/على الشاشة أو من/على الملفات read, write, scanf, printf, input وتعليمات الحجز في الذاكرة new, malloc, free، والعمليات الأساسية مثل: العمليات الحسابية (+, -, ×, /,<<,>>,div, mod ) والبوليانية (=>, =<>,< ,> ,=<) والمحرفية chr, ascii, ord.
لمحة تاريخية
ظهر في النصف الثاني من القرن العشرين العديد من لغات البرمجة. في البداية كان على المبرمجين كتابة برامجهم بلغة الآلة machine language، وهي لغة مرمّزة بالبتات الإثنانية binary (0, 1) يمكن للحاسوب فهمها وبرمجتها من دون اللجوء إلى أي عملية تحويل أو تصريف compilation أو تفسير interpretation. تمثّل البتات الإثنانية فيها رموز العمليات ومواقع الذاكرة وقيم المتحولات، ولكن من العسير جداً كتابة البرامج فيها. ظهر بعد ذلك لغات التجميع assembly languages التي سمحت للمبرمج بالتعبير عن العمليات برموز محرفية (مثل: ADD للتعبير عن الجمع، وSUB للتعبير عن الطرح). على الرغم من أن البرمجة بلغات التجميع أبسط بكثير من لغة الآلة إلاّ أنها بقيت بعيدة عن اللغات الطبيعية التي يسهل على الإنسان التعامل معها على نحوٍ أفضل، كما أن كل لغة تجميع ترتبط ارتباطاً وثيقاً بنوع المعالج الصغري microprocessor الذي يميز العتاد المادي لأي حاسوب. وهكذا ظهرت لغات البرمجة عالية المستوى (وتُسمى أيضاً لغات الجيل الثالث) أقرب إلى اللغات الطبيعية ومستقلة عن العتاد المادي للحاسوب. كانت أولى هذه اللغات هي لغة FORTRAN (FORmula TRANslation) التي ظهرت في عام 1956 وكانت موجهة نحو البرمجة العلمية والرياضية، ومازال العديد من المكتبات البرمجية الرياضية مكتوباً بها حتى اليوم، لكنها كانت صعبة الاستخدام في المجالات الأخرى كالبرمجة الإدارية. ثم ظهرت لغة (COBOL) COmmon Business-Oriented Language في عام 1960 وكانت كلماتها وقواعدها قريبة من اللغة الإنكليزية ومناسبة جداً للتطبيقات الإدارية، وقد استخدمت استخداماً واسعاً ومُثّل التاريخ فيها بخانتين فقط. وكان ذلك من أهم ما سبب بما سُمي بمشكلة العام 2000. ظهرت بعد ذلك لغة BASIC (Beginner’s All-purpose Symbolic Instruction Code) وانتشرت انتشاراً واسعاً في المدارس والأعمال والمنازل (مع انتشار الحواسيب الشخصية) بسبب بساطتها الشديدة وسهولة تعلّمها. وظهرت في فترة السبعينيات لغة C الشهيرة ذات المرونة الكبيرة التي تتركز تطبيقاتها في برمجة نظم التشغيل operating systems والمصرّفات compilers وبرمجيات التحكم بالمنظومات الصناعية، بسبب كونها لغة عالية المستوى تتضمن فاعلية لغة التجميع. كما ظهرت أيضاً لغة PASCAL التي اشتهرت بكونها لغة تعليمية مهيكلة دقيقة التنميط.
تميزت حقبة الثمانينيات بظهور لغات البرمجة الغرضية التوجهobject-oriented programming languages واللغات الكتلية modular languages التي عكست تطور مفاهيم هندسة البرمجيات software engineering. كانت البداية الفعلية للغات البرمجة الغرضية التوجه مع لغة 80 smalltalk، ثم ترسخت أكثر مع لغة ADA التي طورتها وزارة الدفاع الأمريكية، ثم حققت انتشارها الواسع مع لغة ++C التي دعمت لغة C الواسعة الانتشار أصلاً بمفاهيم البرمجة غرضية التوجه. أمّا في اللغات الكتلية فإن خير من يمثّلها هي لغة MODULA-2 التي هي بمنزلة تطوير للغة Pascal المهيكلة، كما يمكن عدّ لغة ADA من أهم هذه اللغات.
شهدت حقبة التسعينيات تطورين بارزين هما: الوسائط المتعددة والفائقة multimedia and hypermedia وشبكة الإنترنت العالمية وخدمتها الأساسية الشبكة العنكبوتية العالمية <world wide web
ولعلّ أهم ما يميز هذه الحقبة ظهور لغة Java [ر] التي تحوي دعماً خاصاً لكي تنفذ من خلال الوب. وهي لغة كائنية المنحى تشبه كثيراً لغة ++C وإن كانت تختلف عنها بأمور جوهرية أهمها عدم تقبل تعليمات لغة C. يولّد تصريف لغة جافا برامج تنفيذية صغيرة يسهل تحميلها عبر الإنترنت. كما ظهر أيضاً العديد من لغات البرمجة المرتبطة ارتباطاً وثيقاً بالإنترنت: مثل اللغات الخطاطية Javascript, JScript, VBScript المستخدمة في إعطاء صفحات الوب إمكانات ديناميكية وتخاطبية مع المستخدم من خلال دمجها مع لغات التأشير[ر] markup languages المستخدمة أصلاً لتصميم هذه الصفحات (كلغتي HTML EXML) - ولغات برمجة أخرى تفيد في الربط بين صفحات الوب وقواعد المعطيات databases الموجودة على المخدّمات servers مثل لغة PERL ولغة ASP.
تنبغي الإشارة أيضاً إلى أنه قد ظهر أيضاً في النصف الثاني من القرن العشرين العديد من اللغات العالية المستوى الخاصة التي تملك ميزات مناسبة لتطبيقات محدّدة. هناك من الأمثلة على هذه اللغات: لغة APT (Automatically Programmed Tools) المستخدمة في التحكم الرقمي بالآلات الصناعية، ولغة GPSS (General Purpose Simulation System) المستخدمة في بناء نماذج المحاكاة، ولغة LISP (LISt Processing) المناسبة لمعالجة الرموز والقوائم والمستخدمة في تطبيقات الذكاء الصنعي[ر] artificial intelligence، ولغة PROLOG (PROgrammation LOGique) المحاكية للجمل المنطقية من الدرجة الأولى والمستخدمة في تطبيقات معالجة اللغات الطبيعية natural language processing.
ظهرت أيضاً ما سُميت لغات بالجيل الرابع 4 th generation languages، وهي لغات أكثر قرباً إلى اللغات الطبيعية وموجهة نحو الاستفسار والبحث في قواعد المعطيات مثل لغة الطلبات المهيكلة structured query language (SQL) وFOCUS و dBase.
مكونات لغة البرمجة:
على الرغم من اختلاف لغات البرمجة فيما بينها إلا أنها جميعاً تعمل وفق مبدأ رئيسي واحد، فالبرنامج الحاسوبي المكتوب بلغة برمجة ما، يتألف من سلسلة من الأوامر والتعليمات التي يجب على الآلة أن تنفذها. تنفذ الآلة المعلومات بترتيب قراءتها لها من الملف (أي من الأعلى إلى الأسفل) إلى أن تصل إلى تعليمات تفرّع branching instructions توجهها نحو تنفيذ مجموعة تعليمات من دون مجموعة أخرى. ويستمر تنفيذ التعليمات بهذا الشكل حتى بلوغ نهاية البرنامج.
1ـ مفهوم المتحول variable:
في معظم لغات البرمجة تُستخدم المتحولات. يعبّر المتحول عن مكان تخزين المعطيات في الذاكرة، ويقوم المبرمج بإعطائه اسماً، ويمكنه أن يضع فيه المحتوى المناسب. على سبيل المثال يمكن أن يُسمى متحول ما بـ xy ويوضع فيه العدد 8.
2ـ نمط المعطيات data type:
في بعض لغات البرمجة، يمكن أن يدل متحول ما على أي نمط من المعطيات (أي يمكن أن يخزن فيه عدد صحيح أو محرف)، تُسمى مثل هذه اللغات لغات غير منَمَّطة non typed languages. توجد لغات أكثر تطوراً مثل (C أو جافا) وهي لغات منمّطةtyped languages، أي إن لكل متحول فيها نمط خاص للمعطيات التي يمكن أن يحتويها، وفي لحظة التصريح عن تسمية متحول ما، يجب أن يُبيَّن نمط المعطيات الذي يجب أن يحتويه هذا المتحول. ويرتبط نمط المتحول بعدد الثمانيّات التي يجب أن يحجزها المترجم للمتحول -وهو عدد الثمانيّات التي ستُرَمَّز المعطيات ضمنها- وبطريقة ترميزها.
3ـ بنى المعطياتdata structures:
توفّر معظم لغات البرمجة طرائق لتجميع المعطيات في بنى أكثر تعقيداً، فيجري تعريف نمط جديد غير موجود في أصل اللغة باستخدام مفاهيم المصفوفات، والقوائم، والمكدسات والملفات، ويُعطى اسماً جديداً.
كما تسمح اللغات غرضية التوجه object oriented languages بتعريف بنى معطيات جديدة تسمى أغراضاً objects لها بنية داخلية خاصة وسلوك خاص.
4ـ النحو syntax:
تحتاج لغات البرمجة إلى قواعد نحوية، إذ لا يمكن أن تُكتب الأوامر للحاسوب كيفما اتفق. وهكذا تعرّف اللغة عبارات أساسيةelementary statements تستخدم كلمات مفتاحية وبنى نحوية خاصة.
وتختلف اللغات بعضها عن بعض بطرق تجميع هذه العبارات الأساسية، وهكذا يمكن كتابة برامج تشمل أنواعاً مختلفة من المدخلات، كما تستطيع أن تنفذ عدة أشكال من تدفق التحكم (التفرّع branching، الحلقات loops، الرجوع إلى الوراء backtracking).
تصنيف لغات البرمجة
يمكن تصنيف لغات البرمجة وفق عدة معايير مختلفة مثل: طريقة التصميم والبرمجة - الحقبة الزمنية - سهولة التعلّم - طبيعة التطبيقات المناسبة - قدرتها التعبيرية - وغيرها. قد يكون من الأنسب تصنيف هذه اللغات بحسب المعيار الأول على النحو الآتي:
آـ اللغات الإجرائية
تتميز هذه اللغات بطريقة التصميم البرمجي من الأعلى إلى الأسفل حيث تجري تجزئة المسألة المطلوبة إلى مسائل جزئية، ثم تجزئة المسائل الجزئية إلى مسائل أصغر، وهكذا حتى الوصول إلى مسائل يمكن برمجتها مباشرةً بوساطة إجراءات procedures أو توابع functions. ويكون إجراء المسألة الجزئية في مستوى ما تجميعاً لإجراءات المسائل التي يتألف منها، ويصبح بالتالي البرنامج تجميعاً لكل المسائل الجزئية إضافةً إلى سيناريو استدعاء هذه الإجراءات عند الحاجة. تتضمّن معظم هذه اللغات أنماط المعطيات الأساسية وأوامر التحكم الأساسية. ويوضح الجدول (1) المعلومات الأساسية عن أهمّ لغات البرمجة الإجرائية.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
ABC | Unix, Macintosh, MS-DOS | مفسّرة | مفسّرات اللغات الطبيعية وقواعد البيانات | Geurts & Meertens, 1975-82 |
Alef | Plan 9 | مصرّفة | تطوير تطبيقات الشبكة | P. Winterbottom et al. Bell Labs (Lucent), 1995 |
Algol | DOS, Mainframe | مصرّفة | علمية وصناعية عمومية | J. Backus and P. Naur, 1958-60. |
Basic | DOS | مفسّرة | عمومية وتعليمية | John Kemeny & Thomas Kurtz, Dartmouth, 1963-64 |
BCPL | Unix, Amiga, MS-DOS | مصرّفة إلى رماز خاص | تطوير التطبيقات الصغيرة وخصوصاً لنظم التشغيل | Martin Richards, Cambridge University, 1966-67 |
Bliss | PDP, DECsystem, VAX | مفسّرة | تطوير تطبيقات لنظم التشغيل | Wulf, Russell et al. DEC, 1970 |
C | Unix, PC, Macintosh, mainframe | مصرّفة | عمومية وجيدة في نظم التشغيل والمترجمات | Ritchie & Thompson, 1972-73; Kernighan & Ritchie, 1978 |
CLU | Unix | مصرّفة | عمومية وجيدة خصوصاً في تصميم لغات البرمجة | B. Liskov et al. 1974-77 |
CMS-2 | معظم البيئات | مصرّفة | تطبيقات الزمن الحقيقي المضمّنة للبحرية الأمريكية | Rand Corporation, US Navy, 1974 |
Cobol | Unix, DOS, Windows | مصرّفة | عمومية وجيدة في الأتمتة الإدارية وفي مجال الأعمال كالمصارف والمصانع | US DOD GPO, 1960; CODASYL Committee, 1960. |
Coral 66 | VAX, VMS | مصرّفة | تطبيقات الزمن الحقيقي | Royal Signals & Radar Establishment, Malvern UK, 1964-66 |
cT | Unix, Windows, Macintosh | مصرّفة | تطبيقات الإحياء animation وبناء الواجهات التخاطبية متعددة الوسائط multimedia | Andersen, Sherwood et al. Carnegie-Mellon, 1990-94 |
Fortran, | Unix, Dos, VAX | مصرّفة | التطبيقات العلمية والرياضية وحسابات الفاصلة العائمة | John Backus, IBM, 1954-57 |
Jovial | DOS, Mainframe | مصرّفة | تطوير التطبيقات الكبيرة في هندسة البرمجيات ونظم الزمن الحقيقي | Jules Schwartz et al. SDC, 1959-60 |
ICI | Unix, DOS, Windows, Macintosh | مفسّرة | تطوير التطبيقات | Tim Long, 1992
|
Icon | UNIX, DOS, OS/2, VMS, Windows, Macintosh | مفسّرة | معالجة المعطيات وسلاسل المحارف | R.E. Griswold, 1977 |
InterCall | DOS, Unix; Mainframe | مصرّفة | عمومية | D.R. Woods and J.M. Lyons, 1972 |
Limbo | Inferno, Unix, Windows, Plan9 | مصرّفة إلى رماز ثماني | تطوير التطبيقات والنظم المحمولة embedded systems | Doward, Winterbottom, & Pike, Lucent Technologies, 1996 |
Modula-2 | Unix, PC, VMS | مصرّفة | عمومية وجيدة في تعلّم البرمجة وصيانة تطبيقات هندسة البرمجيات | Niklaus Wirth, 1980 |
Pascal | Unix, PC, Macintosh | مصرّفة | عمومية وجيدة خصوصاً في تعلّم البرمجة | Niklaus Wirth, 1968-71 |
PL/1, PLC | mainframe, WindowsNT, OS/2, Unix | مصرّفة | عمومية | George Radin, IBM, 1964 |
SETL | DOS, Unix, Macintosh | مصرّفة | تطبيقات المجموعات | Jacob T. Schwartz, 1969; Courant Institute, 1970 |
Terse | DOS, Windows | مصرّفة | تطبيقات المعالجة الصغرية Intel x86 | Jim Neil, 1987 |
Turing | Windows, Macintosh, Unix | مصرّفة | تعليمية | R.C. Holt et al. Univ. of Toronto, 1987 |
الجدول (1): أهمّ لغات البرمجة الإجرائية
ب ـ لغات البرمجة الرياضية ولغات المحاكاة
هي لغات مختصة بالحسابات العلمية والرياضية والهندسية وطرق نمذجة ومحاكاة النظم، ولذلك فهي تحوي غالباً مجموعة صغيرة نسبياً من ميزات لغات البرمجة التقليدية، ومجموعة كبيرة من التعليمات والأدوات الرياضية اللازمة لزيادة فاعلية هذه التطبيقات. يحوي الجدول (2) المعلومات الأساسية عن أهمّ لغات البرمجة الرياضية ولغات المحاكاة.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
APL | معظم البيئات | مفسّرة | الحسابات الرياضية ومعالجة المصفوفات | Iverson et al. IBM, 1960s |
CSP | DOS | مفسّرة | وصف ومحاكاة الحسابات التفرعية | C.A.R. Hoare, 1978 |
Formac | معظم البيئات | مصرّفة | الحسابات العلمية والهندسية | Jean Sammet et al. IBM, 1964. |
GPSS | Mainframe | مصرّفة | نمذجة النظم ومحاكاة الأحداث المتقطعة ونمذجة إجراءات الواقع الحقيقي | G. Gordon, IBM, 1961 |
Magma | Unix, PC | مفسّرة | برمجة رياضية عالية المستوى | J. Cannon, et al. 1993 |
Mathematica | Windows, Macintosh, Unix | مفسّرة | التطبيقات الرياضية الرمزية والبيانية الأكاديمية والصناعية | Stephen Wolfram, 1987 |
Reduce | معظم البيئات | مفسّرة | الجبر والرياضيات الرموزية | Anthony Hearn, RAND Corp, 1963 |
S | Unix, PC | مفسّرة | الإحصاء والنمذجة الرقمية وتحليل المعطيات والمحاكاة | R.A. Becker et al. 1977-84 |
SLAM | Unix, mainframe, Windows | مفسّرة | نمذجة النظم المتقطعة ومحاكاة جدولة الخدمات والتصنيع واللوجستية العسكرية وبنيان الحواسيب والأرتال. | A.A.B. Pritsker et al. 1976-77 |
SmiScript | معظم البيئات | مفسّرة | نمذجة الأحداث المتقطعة والمستمرة | H. Markowitz et al. Rand Corporation, 1962 |
VHDL | Unix | مفسّرة | الدارات الرقمية المتكاملة | M.R. Shahdad et al. 1985; IEEE Standard 1076, 1987 |
Yorick | Unix, Linux, Macintosh,, Windows | مفسّرة | تحليل المعطيات والبيانيات | Lawrence Livermore National Laboratory, 1994 |
الجدول (2): أهمّ لغات البرمجة الرياضية ولغات المحاكاة
ج ـ لغات البرمجة غرضية التوجه
تتميز هذه اللغات بطريقة التصميم البرمجي من الأسفل إلى الأعلى، حيث يجري أولاً تعريف الفئات classes التي تُستخدم في توليد الأغراض objects، ثم يجري بناء البرنامج كسيناريو لتبادل الأغراض فيما بينها الرسائل التي تؤدي إلى تحريض الطرائق methods التي تنفّذها، بغض النظر عن كيفية بنائها في الأغراض. تتضمن هذه اللغات المفاهيم التالية: مبدأ الكبسلة Encapsulation أو تجميع المعطيات مع الطرق التي تعمل عليها انتساخ instantiation الأغراض عن الفئات - وراثة inheritance الخصائص والطرق - مبدأ إعادة الاستخدام reusability - إخفاء المعطيات data hiding - مفاهيم التحميل الزائد وإعادة التعريف والتجريد، ويحوي الجدول (3) المعلومات الأساسية عن أهمّ اللغات الكائنية المنحى.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
Ada | Unix, Windows, DOS | مصرّفة | هندسة البرمجيات والبرامج الضخمة | Jean Ichibah et al. 1980-1983 |
BETA | معظم البيئات | مصرّفة | تطوير التطبيقات البرمجية | Madsen et al. Aarhus Univesity, 1983 |
C++ | PC, Unix | مصرّفة | علمية وصناعية عمومية | Bjarne Stoustrup, AT&T Bell Labs, 1982-85 |
Cecil | Unix, Linux | مصرّفة | تطوير التطبيقات البرمجية الكبيرة | Craig Chambers, 1992 |
Claire | PC, Unix, Macintosh | مصرّفة | بحوث اللغات والبرمجة الخاصة | F. Laburthe, Y. Casuau, ENS Paris, 1995 |
Dyaln | Unix, Macintosh, Windows | مفسّرة | تطوير التطبيقات وبرمجة النظم | Apple Computer, 1992 |
Dyance | معظم البيئات | مصرّفة | تطوير التطبيقات العمومية | B. McBride, Algorithms Corporation, 1993-96 |
Eiffel | معظم البيئات | مصرّفة إلى رماز ثماني | عمومية | Bertrand Meyers, 1986-92 |
Java | معظم البيئات | مصرّفة إلى رماز ثماني | عمومية | Gosling et al. Sun Microsystems, 1994-95 |
Leda | Unix, Windows 95/NT | مصرّفة | عمومية | T.A. Budd, Oregon State University, 1988 |
Modula-3 | Unix, Linux, WindowsNT | مصرّفة | هندسة البرمجيات وتعليم علوم المعلوماتية | Luca Cardelli et al. Olivetti and DEC, 1988 |
Oberon | Unix, Linux, PC, Macintosh | مصرّفة | تعليم علوم المعلوماتية | Wirth and Gutknecht, ETH Zurich, 1985-88 |
Objective-C | NeXT, OpenStep
| مصرّفة | عمومية | Brad J. Cox, 1984-85 |
Obliq | معظم البيئات | مفسّرة | الحسابات متعدّدة السريد | Luca Cardelli, DEC, 1993 |
Pike | Windows, Unix | مفسّرة | تطوير تطبيقات الشبكة | Fredrik Hübinette1996 |
Python | Windows | مفسّرة | عمومية | G. van Rossum, 1991 |
Ruby | Internet | مفسّرة | تطبيقات الإنترنت | Y. Matsumoto and others, 1993-95 |
Sather | معظم البيئات | مصرّفة | هندسة البرمجيات | S.M. Omohundro, C-C Lim, et al. UC Berkeley, 1990 |
Self | Unix, Linux, Macintosh | مصرّفة | البيانيات والتشبيك وخدمات الدخل/خرج | David Ungar & Randall Smith, 1986 |
Simula67 | معظم البيئات | مصرّفة | محاكاة الأحداث المتقطعة | Ole Dahl and Kristen Nygaard, NCC Olso, 1964-67 |
Sina | معظم البيئات | مفسّرة | التطبيقات الأكاديمية | A. Tripathi et al. 1989 |
Smalltalk | Unix | مصرّفة إلى رماز وسيط | تطوير التطبيقات | Alan Kay and Xerox Software Concepts Group, 1972 |
Telescript | Macintosh, Windows, Unix | مصرّفة | الواجهات البيانية وتطبيقات تبادل الرسائل ونظم الحوسبة الموزعة | General Magic, Inc, 1995 |
Theta | معظم البيئات | مصرّفة | هندسة البرمجيات | Barbara Liskov et al. MIT, 1994 |
UFO | Windows, Macintosh, Unix | مفسّرة | البرمجة التفرعية الضمنية | J. Sargeant et al. 1996 |
الجدول (3): أهمّ لغات البرمجة الكائنية المنحى
د ـ اللغات الوظيفية
هي لغات برمجة تُستخدم للتعبير عن البرامج بوصفها مجموعة متتالية من الوظائف واستدعاءات الوظائف. وتعتمد عموماً التصميم الوظيفي الذي يوصّف العلاقات بين الأجزاء العاملة وتفاصيل مكوناتها المنطقية وطريقة عملها بعضها مع بعض. يحوي الجدول (4) المعلومات الأساسية عن أهمّ اللغات الوظيفية.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
Concurrent Clean | معظم البيئات | مصرّفة | تطوير التطبيقات التفرعية والموزعة | Nِcker, Plasmeijer, Smetserset al. 1984-91 |
Curry | معظم البيئات | مفسّرة | تعليم المنطق والبرمجة الوظيفية واختبار التضييق والتجميع وعدم الحتمية | Michael Hanus,RWTH Aachen, Germany, 1997 |
Erlang | Windows, Unix | مصرّفة | تطوير التطبيقات البرمجية وخصوصاً نظم الزمن الحقيقي الضخمة | J. Armstrong and R. Virding, Ellemtel System Laboratories, 1990 |
Escher | معظم البيئات | مصرّفة | البحث العلمي والتعليم الأكاديمي | J.W. Lloyd, University of Bristol, 1995 |
FP | Unix | مفسّرة | البحث حول نموذج فون نيومان | John Backus, 1977 |
Haskell | معظم البيئات | مفسّرة | عمومية | Hughes, Wadler, Peterson et al. 1990 |
Hope | MS-DOS, Unix, Macintosh | مصرّفة | نمذجة النظم ومحاكاة الأحداث المتقطعة ونمذجة إجراءات الواقع الحقيقي | Burstall 1978, Perry, Kewley et al. 1985 |
Lisp | معظم البيئات | مفسّرة | الذكاء الصنعي | McCarthy et al. 1956-1961 |
Logo | Windows, Macintosh, Unix | مفسّرة | تعليم البرمجة وحل المسائل للأطفال | Papert et al. MIT, 1967 |
Miranda | Unix, Linux | مفسّرة | تطوير التطبيقات وتعليم البمجة الوظيفية | David Turner, University of Kent, 1985 |
ML | Unix, PC | مفسّرة | التحليل الصوري وبرهنة الصحة | Standard ML, Milner & Tofte, 1990 |
NAIL | معظم البيئات | مفسّرة | تطوير التطبيقات | M. A. Jenkins et al. 1981-86 |
REBOL | Internet | مفسّرة | تطوير التطبيقات وخدمات الشبكة | C. Sassenrath, 1997 |
SISAL | Unix, PC, Macintosh,, Cray | مفسّرة | المعالجة التفرعية وتحسين أداء المترجمات وتعليم البرمجة التفرعية | John Feo et al. Lawrence Livermore National Laboratory, 1990 |
الجدول (4): أهمّ اللغات الوظيفية
هـ ـ لغات البرمجة المتعددة والبرمجة التفرعية
أدى تطوّر عتاد الحواسيب، باتجاه تعدّد المعالجات وضرورة توزع المعطيات والعمليات عليها بين هذه المعالجات (وهذا ما يُسمى فعلياً بالمعالجة التفرعية parallel processing)، إلى ظهور لغات برمجة تسمح بهذا التوزيع على مستوى البرمجة وليس على مستوى العتاد بسبب صعوبة التعامل المباشر معه. ترتبط هذه اللغات ارتباطاً وثيقاً بنظم التشغيل التي تستطيع التعامل مع العتاد التفرعي. ويحتوي الجدول (5) المعلومات الأساسية عن أهمّ لغات البرمجة المتعدّدة والبرمجة التفرعية.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
C* | Connection Machine CM2 & CM5 | مصرّفة | تطوير التطبيقات على الحواسيب التفرعية | Thinking Machines Corp, 1987 |
Cilk | Unix, Linux, Windows NT | مصرّفة | بحوث البرمجة التفرعية والمترجمات التفرعية | Joerg, Leisers, et al. MIT, 1995 |
Concurrent Pascal | mini-computer, mainframe | مصرّفة | نظم التشغيل | P. Brinch Hansen, 1974 |
Esterel | Unix | مصرّفة | نمذجة وتوصيف النظم التفاعلية المتزامنة ودراسة الحسابات التفرعية تنفيذ العتاد الرقمي | G. Berry, L. Cosserat, et al. CMA France, 1983 |
Lucid | Unix | مفسّرة | تجريب نماذج مختلفة عن نموذج فون نيومان | Ashcroft and Wadge, 1976-77 |
NESL | Unix | مصرّفة | التطبيقات المحمولة على عتاد حاسوبي تفرعي مختلف | Guy Blelloch, Carnegie-Mellon, 1992-93 |
occam | معظم البيئات | مصرّفة | البرمجة التفرعية | David May et al 1982, 1987 |
Ocra | Windows, Macintosh, Unix | مصرّفة | التطبيقات على عتاد متنوع للبرمجة المتعدّدة | Bal, Kaashoek, Tannenbaum et al. 1985-90 |
Oz | Windows, Unix | مصرّفة | بحوث تصميم اللغات والذكاء الصنعي والنظم المتزاحمة | G. Smolka with Schulte, Henz, Muller, Wurtz et al. DFKI, 1994-97 |
Pict | Unix | مصرّفة | الحسابات التفرعية حسب نموذج PI | B.C. Pierce, D.N. Turner, 1993 |
ZPL | Windows, Unix | مصرّفة | الحسابات العلمية | Snyder et al. University of Washington, 1993 |
الجدول (5): أهمّ لغات البرمجة المتعدّدة والبرمجة التفرعية
وـ اللغات المنطقية
هي لغات مبنية على طرق الاستنباط المعروفة في المنطق وتقنيات برهنة حلول المسائل، وغالباً ما تنطلق من مجموعة حقائق وآلية استنباط للوصول إلى الأهداف المحدّدة مسبقاً. تنتشر هذه اللغات في تطبيقات الذكاء الصنعي والأنظمة الخبيرة. يحوي الجدول (6) المعلومات الأساسية عن أهمّ اللغات المنطقية.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
Goedel | Unix | مفسّرة | البحث العلمي وتعليم البرمجة المنطقية وتحويل وتوليد البرامج | P.M. Hill & J.W. Lloyd, 1994 |
LIFE | Unix | مفسّرة | وصف ومحاكاة الحسابات التفرعية | Hassan Ait-Kaci, MCC Texas, 1993 |
Mercury | Unix, Windows, Linux | مصرّفة إلى رماز C | البرمجة المنطقية | University of Melbourne, 1993 |
OPS5 | Unix | مفسّرة | بحوث الذكاء الصنعي والنظم الخبيرة | Charles Forgy et al. 1977 |
Prolog | معظم البيئات الحديثة | مفسّرة | تطبيقات الذكاء الصنعي والنظم الخبيرة | D.H. Warren 1977, R. Kowalski 1979, |
الجدول (6): أهمّ لغات البرمجة المنطقية
ز ـ اللغات الخطاطية
هي لغات مبسّطة ومختصرة، معظمها مفسّر، تقوم عموماً بأعمال خاصة صغيرة ومحدودة، وقد تكون مرتبطة بتطبيقات معينة أو تُستخدم لزيادة إمكانات بعض اللغات التقليدية. تنتشر عموماً في نظم التشغيل والشبكات (وخصوصاً الإنترنت) وقواعد البيانات. يحوي الجدول (7) المعلومات الأساسية عن أهمّ لغات معالجة النصوص.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
Applescript | Macintosh | مصرّفة إلى رماز وسيط جاهز للتنفيذ | التحكم بالبرامج وعمليات الشبكة وواجهات المستخدم | Apple Computer, 1993 |
Euphoria | DOS, Windows, OS/2 | مفسّرة | تطوير التطبيقات العامة وبرمجة الألعاب | R. Craig, Rapid Deployment Software, 1993 |
CFML | Internet | مفسّرة | تصميم الصفحات الديناميكية على الوب وربطها مع قواعد المعطيات | J.J. Allaire, 1995 |
Csh | Unix | مفسّرة | لغة أوامر تخاطبية للتحكم بإدارة نظام التشغيل | - |
HyperTalk | Macintosh | مفسّرة | تجميع المعلومات تخاطبياً وديناميكياً | Atkinson and Winkler, Apple Computer, 1987 |
JavaScript | Internet | مفسّرة | تصميم الصفحات الديناميكية على الوب وربطها مع قواعد المعطيات | Netscape Communications Corp, 1994 |
Lua | Unix | مفسّرة | التضمين في تطبيقات أخرى | W. Celes, R. Ierusalimschy, L.H. de Figueiredo, 1994 |
Mawl | Windows, Macintosh, Unix | مصرّفة إلى رماز C++ | الخدمات التفاعلية المباشرة | D.A. Ladd, J.C. Ramming, T. Ball, 1995 |
Perl | Unix, VMS, Windows | مفسّرة | معالجة المعطيات والتطبيقات السريعة | Larry Wall, 1986 |
Pilot | IBM | مفسّرة | بناء نصوص نظم التعليم بمعونة الحاسوب | IBM, 1962 |
PHP | Unix, Linux, Windows | مفسّرة | التطوير السريع على مخدّمات الوب | R. Lerdorf, 1995 |
Rexx | IBM | مفسّرة | تطوير التطبيقات وتكاملها وتمديدها | M. Cowlishaw, IBM, 1979 - 1985 |
sh | Unix, Linux | مفسّرة | برمجة أوامر نظم التشغيل | Steve Bourne, 1971 |
TCL | Unix, Windows, Macintosh | مفسّرة | تطبيقات الواجهات الرسومية العمومية | John Ousterhout et al. UC Berkeley, 1990 |
الجدول (7): أهمّ اللغات الخطاطية
ح ـ اللغات الماكروية (أو اللغات المتضمنة في التطبيقات)
أدّى تطور التطبيقات الحاسوبية، من مجرد برامج صغيرة تقوم بأعمال محدودة إلى برمجيات محزومة packages، إلى ظهور لغات برمجة تعمل حصراً مع هذه الحزم للقيام بأعمال إضافية لا تستطيع لغات البرمجة التقليدية أن توفرها. ويوضح الجدول (8) بعض المعلومات الإضافية عن أهمّ اللغات الماكروية.
اسم اللغة | بيئة العمل | الشرح | المصمّم |
AutoLisp | التطبيق AutoCAD | إحدى لهجات لغة Lisp تقدم إمكانات إضافية للتعامل مع الكائنات الرسومية في ملفات التطبيق AutoCAD وللتخاطب مع المستخدم من خلال واجهته. | Autodesk, late 1980s |
CorelScript | تطبيقات Corel | تشبه لغة Visual Basic وتضيف ماكروات إلى تطبيقات Corel. | Corel Corporation, 1994 |
Elisp | محرّر النصوص GNU Emacs | إحدى لهجات لغة Lisp تقدم إمكانات إضافية للتعامل مع سلاسل المحارف ومعالجة النصوص في Emacs في بيئة نظام Unix. | Richard Stallman, GNU Project, 1985 |
Lingo | تطبيقات MacroMedia | لغة إجرائية موجهة بالأحداث تحوي بعض ميزات البرمجة كائنية المنحى، وتشبه قواعدها اللغة الإنكليزية. | Macromedia Inc 1991-96 |
LotusScript | البرنامج المكتبي Lotus | إحدى لهجات Basic تحوي بعض ميزات البرمجة كائنية المنحى. | Lotus Development Corp, 1995 |
PerfectScript | تطبيقات WordPerfect, QuattroPro | إحدى لهجات Basic وتحوي بعض القواعد وأوامر التحكم المستوحاة من لغة C. | Novell Corporation, 1995 |
TeX | محرّر النصوص TeX | لغة وصفية مفسّرة لتنسيق الوثائق تحوي بعض ميزات اللغات الإجرائية، وتعرّف ماكروات تسمح للمستخدم ببناء وثائق جديدة محسّنة ومخصصة. | Donald Knuth, 1978, 1982 |
VBScript | صفحات الوب الديناميكية | لغة مفسّرة وإجرائية وهي لغة جزئية من لغة Visual Basic تعمل بأداء أفضل مع متصفحات ومخدّمات Microsoft. | Microsoft Corporation, 1995 |
WordBasic | محرّر النصوص Word | إحدى لهجات Basic تعرّف ماكروات لتحسين معالجة وثائق المحرّر Word الشهير. | Microsoft Corporation, 1992 |
الجدول (8): أهمّ اللغات الماكروية
ط ـ لغات معالجة النصوص
هي لغات خاصة بمعالجة وتنسيق النصوص (وسلاسل المحارف)، تعتمد عموماً تقنيات مطابقة النماذج pattern matching والتعابير المنتظمة regular expressions. يحوي الجدول (9) المعلومات الأساسية عن أهمها.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
Awk | Unix | مفسّرة | معالجة سلاسل المحارف | Aho, Kernighan, & Weinberger, 1976-77 |
Mumps (M) | Unix, VMS, DOS, Windows | مفسّرة | تطوير نظم المعلومات الإدارية التفاعلية | Octo Barnett M.D. et al. Mass. General Hospital, 1969 |
RGP | IBM | مصرّفة | توليد التقارير في نظم المعلومات الإدارية | IBM, 1965 |
Snobol | Mainframe | مفسّرة | معالجة ومطابقة سلاسل المحارف | Griswold and Faber, Bell Labs, 1962 |
Teco | معظم البيئات | مفسّرة | تحرير النصوص | Digital Equipment Corp, 1980 |
الجدول (9): أهمّ لغات معالجة النصوص
ي ـ اللغات المبنية على المكدسات
تعتمد هذه اللغات بنية معطيات واحدة هي المكدّس stack وتتضمن تعليماتها عمليات معالجة المكدسات والحسابات والقفز المشروط وغيرها، وتتميز بسرعة التنفيذ، وتوسيع إمكانات بعض اللغات مثل لغة C. يحوي الجدول (10) المعلومات الأساسية عن أهمّ اللغات المبنية على المكدسات.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
Befunge | PC | مفسّرة | الحسابات على شبكات الإحداثيات | Chris Pressey, 1993 |
Forth | معظم البيئات | مفسّرة | التطبيقات الصغيرة جداً | Charles H. Moore, 1969-1971 |
PostScript | معظم البيئات | مفسّرة | المعالجة الطباعية | John Warnock et al. Adobe Systems, 1982 |
Until | Unix, MS-DOS | مفسّرة | خدمات نظم التشغيل | N.E. Smith, 1991 |
الجدول (10): أهمّ اللغات المبنية على المكدسات
ك ـ اللغات المرئية أو البيانية
تتميز هذه اللغات بالواجهات الخاصة بالتعابير والدلالات التصريحية، وتتألف عموماً من خلايا، تقوم كل خلية بتنفيذ تابع مكوّن من مجموعة تعليمات حسابية وبيانية. يمكن لها أن تعمل إلى الأمام وإلى الخلف وتدعم الاستجابة إلى الأحداث غير المتزامنة. ويوضح الجدول (11) المعلومات الأساسية عن أهمّ اللغات البيانية.
اسم اللغة | بيئة العمل | نوع الترجمة | التطبيقات المناسبة | المصمّمون وتاريخ التصميم الأولي |
Forms/3 | Unix | مفسّرة | البحث العلمي الأكاديمي | Burnett and Ambler, 1991 |
Sparcl | Macintosh | مفسّرة | برمجة أكاديمية مساعدة في البرمجة الاستكشافية | L. Spratt, U. of Kansas, 1993 |
الجدول (11): أهمّ اللغات البيانية
ل ـ لغات معالجة قواعد البيانات (لغات الجيل الرابع)
توفّر هذه اللغات إمكانات كبيرة لاسترجاع التسجيلات (أو أجزاء منها) المخزنة في قواعد البيانات والتي تحقق شروطاً معينة وإجرائية الحسابات عليها. تُعدُّ لغة SQL من أشهر هذه اللغات التي تقدّم قواعد صورية وتوابع غنية تستطيع توظيف العمليات البوليانية والحسابية والإحصائية وغيرها، بغية الاسترجاع الفعّال للمعلومات. التعليمة الأساسية فيها هي:
Select [Field Fa, Fb, . Fn]
From [Database Da, Db, . Dm]
Where (Fi = SVi )and .and (Fj=SV)j
حيث تقوم هذه التعليمة باختيار مجموعة حقول من تسجيلات موجودة في بعض الجداول المخزنة في قاعدة معطيات أو أكثر وتحقق شروطاً معينة. فمثلاً لإجراء الطلب الآتي: «قائمة بأسماء طالبات الصف الثاني في مدرسة النجاح» تُكتب التعليمة الآتية:
Select St1stName, St2ndName
From Students
Where (School= Success ) and (Sex= Female ) and (Class= 2nd)
تُوجد لغات أخرى من نوع «الطلب باستخدام مثال» (QBE) Query-By-Example تقدّم واجهة فارغة يقوم المستخدم بملئها بالشروط المطلوبة. من أهمّ تطبيقات هذه اللغات محركات البحث search engines عن المعلومات في الإنترنت.
عمّار خيربك، غيداء ربداوي
الموضوعات ذات الصلة: |
الإنترنت ـ التأشير (لغات ـ) ـ جافا (لغة ـ) ـ الذاكرة في الحاسوب ـ الذكاء الصنعي ـ قواعد المعطيات.
مراجع للاستزادة: |
ـ أحمد بسيوني، الكمبيوتر البرمجة والأداء (مكتبة ابن سينا، مصر 1997).
ـ شريف الشافعي، المرجع الكامل في البرمجة التفاعلية (دار الكتب العلمية، مصر 1998).
- ROBERT W. SEBESTA, Concepts of Programming Languages, (Addison Wesley; 6 edition 2003).
- BENJAMIN C. PIERCE, Types and Programming Languages (The MIT Press 2002).
- DANIEL P. FRIEDMAN, MITCHELL WAND & CHRISTOPHER T. HAYNES, Essentials of Programming Languages (The MIT Press; 2nd edition 2001).
- KENNETH C. LOUDEN, Programming Languages (Course Technology; 2nd edition 2002).
- التصنيف : التقنيات (التكنولوجية) - النوع : تقانة - المجلد : المجلد السابع عشر، طبعة 2007، دمشق - رقم الصفحة ضمن المجلد : 58 مشاركة :