لغة البرمجة programming language

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • لغة البرمجة programming language

    لغات برمجه 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 أو «الوب» اختصاراً، وقد انعكس ذلك مباشرةً على تطوّر لغات البرمجة. لذلك ظهرت بدءاً من النصف الأول من هذه الحقبة لغات البرمجة المرئية visual programming languages، وهي لغات منتشرة أصلاً لكنها طُعّمت بمزايا التعامل مع الواجهات الرسومية والاستجابة إلى الأحداث التي يقوم بها المستخدم ولذلك يمكن تسميتها باللغات الموجّهة بالأحداث event-driven languages مثل: لغة visual basic - لغة visual C - لغة delphi - لغة visual C++ .

    ولعلّ أهم ما يميز هذه الحقبة ظهور لغة 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, Smetsers et 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

    مفسّرة

    تجريب نماذج مختلفة عن نموذج فون
يعمل...
X