لغة برمجة - ويكيبيديا
لغات البرمجة | |
---|---|
منخفضة المستوى | |
لغة الآلة • لغة التجميع | |
عالية المستوى | |
البرمجة الإجرائيَّة | البرمجة بالكائنات |
صنف فرعي من | |
---|---|
جزء من | |
الاستعمال | |
ممثلة بـ | |
مظهر لـ | |
مخطَّط كيان للصنف | |
له جزء أو أجزاء |
لغة البرمجة (بالإنجليزية: Programming language)، هي مجموعة من الأوامر، تكتب وفق قواعد تُحَدَّد بواسطة لغة البرمجة، ومن ثُمَّ تمر هذه الأوامر بعدة مراحل إلى أن تنفذ على جهاز الحاسوب.[1][2][3]
تقسم لغات البرمجة بناء على قربها من اللغات الإنسانية إلى:
- لغة عالية المستوى (قريبة من اللغة التي يفهمها البشر مثل: سي شارب، بايثون، جافا، سي++.
- لغة منخفضة المستوى (قريبة من لغة الآلة) مثل: لغة التجميع.
وتقسم أحياناً بناء على الأغراض المرغوبة من اللغة المستخدمة. هناك لغات صُممت لكي تعمل على أجهزة معينة، مثل أن تقوم شركة ما بإنتاج جهاز حاسوب أو معالج مركزي (وحدة معالجة مركزية)، وتوفر له دليل استعمال يحتوي على الأوامر التي تنفذ عليه، وهناك لغات أخرى أكثر عمومية تعمل بشكل مستقل عن نوع الآلة، أي أنها تعمل ضمن آلة افتراضية، مثل لغة جافا.
تعريف البرمجة
[عدل]من الممكن تعريف البرمجة بأنها عملية كتابة تعليمات وأوامر لجهاز الحاسوب أو أي جهاز آخر، لتوجيهه وإعلامه بكيفية التعامل مع البيانات أو كيفية تنفيذ سلسلة من الأعمال المطلوبة.
تتبع عملية البرمجة قواعد خاصة باللغة التي اختارها المبرمج.
كل لغة لها خصائصها التي تميزها عن الأخرى وتجعلها مناسبة بدرجات متفاوتة لكل نوع من أنواع البرامج والمهمة المطلوبة من هذا البرنامج.
كما أن للغات البرمجة أيضاً خصائص مشتركة وحدود مشتركة بحكم أن كل هذه اللغات صممت للتعامل مع الحاسوب.
وتتطور لغات البرمجة (البرمجيات) بتطور الحاسوب (عتاد الحاسوب). فعندما ابتكر الحاسوب الإلكتروني في الأربعينيات والخمسينيات من القرن الماضي (بعد أجهزة الحساب الكهربائية في العشرينات)- وكان الكمبيوتر يعمل بأعداد كبيرة من الصمامات الإلكترونية - كانت لغة البرمجة معقدة هي الأخرى، وكانت عبارة عن سلسلة من الأعداد وتكتب على شكل أكواد برمجية طويلة هذه الاعداد هي الرقمين الصفر 0 والواحد 1 وهذه اللغة تدعى اللغة الثنائية أو لغة الآلة، وكان ذلك صعبا على المبرمجين. ولكن بابتكار الترانزيستور صغر حجم الحاسوب كثيرا وزادت إمكانياته، واستطاع المختصون والمبرمجون في نفس الوقت أن يبتكروا لغات برمجة أسهل للاستخدام، وأصبحت لغات البرمجة مفهومة إلى حد بعيد للمختصين. ولا يزال التطوير والتسهيل قائماً.
خصائص لغات البرمجة
[عدل]لغة البرمجة هي بالأساس طريقة تسهل للمبرمج كتابة برنامجه في هيئة تعليمات وأوامر يفهمها الحاسوب بغرض تنفيذ العمل المطلوب. ومن المعروف ان الحاسوب يحول اللغة المكتوبة بها البرمجة إلى سلسلة من 0 و 1، ويبدأ على أساسها عمله. ولكتابة الأوامر، توفر لغة البرمجة المختارة مجموعة من الأمور الأساسية للاستناد إليها أثناء عملية تكوين البرنامج ومجموعة من القواعد التي تمكن من التعامل مع معلومات وتنظيمها بغرض أداء العمل المطلوب.
تتمثل هذه الأسس والقواعد بصفة عامة في:
- المعلومات وتخزينها
- الأوامر وتنظيم سيرها
- التصميم الخاص
المعلومات وتخزينها
[عدل]يتم تخزين المعلومات في الأجهزة الرقمية الحالية في هيئة أرقام طبقا لنظام العد الثنائي (أي المعتمد على 0 و 1).
و بصفة عامة فان المعالجات الحديثة لا تقوم بالتعامل مع البت الواحد بل مع مجموعات من البتات يمكن أن تضم :
- 8 بت = 1 بايت وهي أصغر وحدة تخزين معلومات في الحواسيب الحديثة.
- 16، 32، 64، 128، 256، أو 512 بت.
وباستعمال 8 بت مثلا، يمكن تشكيل 256 قيمة مختلفة، ويمكن أن تكون هذه القيمة بين 0 و 255 وتمثل وظيفة لغة البرمجة استغلال وحدة أو مجموعة من الوحدات (رموزا) لتخزين معلومات من الحياة الواقعية مثل الأسماء أو القياسات أو أرقام الحسابات البنكية.
الأوامر وتنظيم سيرها
[عدل]يقوم المبرمج باجراء عمليات على وحدات المعلومات مثل تخزينها وقراءتها ومقارنتها، كما يمكن إجراء عمليات حسابية عليها أيضا، وتتبع العمليات القواعد المحددة للغة. و للغة البرمجة دور آخر وهو التحكم في تنظيم إجراء العمليات، حيث توجه تنفيذ خطواتها بنفس تتابع كتابتها من طرف المبرمج.
تمكن اللغة أيضاً من إجراء عملية اختيار وتفرع، وذلك بإدخال شرط منطقي يقوم الحاسوب على أساسه باختيار اتجاه الاستمرار في أداء العمل: فلنفترض أن البرنامج الذي يريد المبرمج صنعه يقوم بقسمة عددين يختارهما المستخدم، وإظهار النتيجة على الشاشة، ومن المعروف أن القسمة على صفر لا تجوز، وبناء علي ذلك فلا بد أن يحدد المبرمج في برنامجه هذا الاختيار : فاذا كان القاسم مخالفا للصفر، فإن البرنامج يسيـّر الحاسوب فيقوم بإجراء العملية ويعطي النتيجة. أما إذا كان القاسم صفراً فإن البرنامج لا يقوم بإجراء العملية وإنما ينبه إلى أن المستخدم حاول القسمة على صفر. و يمكن تنظيم الأوامر بصفة أخرى، حيث يقع تنفيذ أمر أو مجموعة من الأوامر بصفة متكررة حلقية (Loop) و يمكن تقسيم الأوامر أيضاً إلى وحدات فرعية تقوم كل وحدة بإنجاز عمل محدد، والهدف هو تقسيم العمل إلى أجزاء يسهل العمل عليها كل على حدة في هيئة دورات حلقية (Loops).
التصميم الخاص
[عدل]تتمتع كل لغة بتصميم خاص من حيث التعامل مع المعطيات، ومن حيث الطرق والتسهيلات التي توفرها اللغة للتعامل مع مشكلة معينة.
يمكن تصنيف لغات البرمجة من حيث طريقة بناء البرامج إلى لغات إجرائية مثل (بيسيك، فورتران) وهي لغات تسلسلية، أساس بنائها هو الإجراءات المطلوب تطبيقها على المعطيات والمتحولات. ولغات شيئية مثل (سي، جافا، دلفي) وهي لغات لا تسلسلية، تقوم على أساس العناصر والمتحولات المستخدمة ضمن البرنامج المطلوب تحويلها، من خلال تطبيق مجموعة معينة من الإجراءات عليها.
التاريخ
[عدل]التطورات المبكرة
[عدل]تمت برمجة أجهزة الكمبيوتر المبكرة جدًا، مثل Colossus، دون مساعدة برنامج مخزن، وذلك عن طريق تعديل دوائرها أو وضع بنوك الضوابط المادية.
وبعد ذلك بقليل، أصبح من الممكن كتابة البرامج بلغة الآلة، حيث يكتب المبرمج كل تعليمات في شكل رقمي يمكن للجهاز تنفيذه مباشرة. على سبيل المثال، قد تتكون تعليمات إضافة القيمة في موقعين للذاكرة من 3 أرقام: "رمز التشغيل" الذي يحدد عملية "الإضافة"، وموقعين للذاكرة. تتم قراءة البرامج، في شكل عشري أو ثنائي، من البطاقات المثقوبة أو الشريط الورقي أو الشريط المغناطيسي أو يتم تبديلها على المفاتيح الموجودة على اللوحة الأمامية للكمبيوتر. سُميت لغات الآلة فيما بعد باسم لغات برمجة الجيل الأول (1GL).
وكانت الخطوة التالية هي تطوير ما يسمى لغات برمجة الجيل الثاني (2GL) أو لغات التجميع، والتي كانت لا تزال مرتبطة بشكل وثيق ببنية مجموعة التعليمات لجهاز كمبيوتر معين. وقد ساعدت هذه في جعل البرنامج أكثر قابلية للقراءة من قبل الإنسان وخففت على المبرمج حسابات العناوين المملة والمعرضة للخطأ.
تمت كتابة أولى لغات البرمجة عالية المستوى، أو لغات برمجة الجيل الثالث (3GL)، في الخمسينيات من القرن العشرين. كانت لغة البرمجة عالية المستوى المبكرة التي تم تصميمها للكمبيوتر هي Plankalkül، والتي تم تطويرها للغة الألمانية Z3 بواسطة Konrad Zuse بين عامي 1943 و1945. ومع ذلك، لم يتم تنفيذها حتى عامي 1998 و2000.[4]
كانت الشفرة القصيرة لجون ماوكلي، التي تم اقتراحها في عام 1949، واحدة من أولى اللغات عالية المستوى التي تم تطويرها للكمبيوتر الإلكتروني على الإطلاق.[5] على عكس كود الآلة، تمثل عبارات الكود القصير تعبيرات رياضية في شكل مفهوم. ومع ذلك، كان لا بد من ترجمة البرنامج إلى كود الآلة في كل مرة يتم تشغيله، مما يجعل العملية أبطأ بكثير من تشغيل كود الآلة المعادل.
في جامعة مانشستر، قام أليك جليني بتطوير Autocode في أوائل الخمسينيات من القرن الماضي. باعتبارها لغة برمجة، فإنها تستخدم مترجمًا لتحويل اللغة تلقائيًا إلى كود الآلة. تم تطوير أول كود ومترجم في عام 1952 للكمبيوتر مارك 1 في جامعة مانشستر ويعتبر أول لغة برمجة عالية المستوى مجمعة.[6][7]
أمثلة
[عدل]لغات البرمجة للحاسوب متدنية المستوى :
- لغة الآلة (Machine Language).
- لغة التجميع (Assembly Language).
أمثلة لبعض لغات البرمجة للحاسوب عالية المستوى:
- سي
- سي بلس بلس (سي++)
- سي شارب (سي#)
- جافا
- ليسب
- برولوغ
- بايثون
- فورتران
- روبي
- أدا
- دلفي
- بيسك
- كوبول
- باسكال
- إس كيو إل
- بي إتش بي
- جافا سكربت
- جيم
- لغة لوغو Logo
- أطلس أوتوكود
- لغة دارت
- كوتلن
انظر أيضًا
[عدل]- مقارنة بين لغات البرمجة
- برمجة
- علم الحاسوب والخطوط العامة لعلم الحاسوب
- لغة مخصصة النطاق
- لغات البرمجة غير الاعتيادية
- قوائم لغات البرمجة
- برمجة منطقية
- البرمجة المتعلمة (ذاتية التعلم)
- برمجة وصفية
- لغة نمذجة
- نظرية لغات البرمجة
- شبه رماز
- برمجة انعكاسية
- لغة إخطاطية
- هندسة البرمجيات
المراجع
[عدل]- ^ "معلومات عن لغة برمجة على موقع psh.techlib.cz". psh.techlib.cz. مؤرشف من الأصل في 2019-12-10.
- ^ "معلومات عن لغة برمجة على موقع britannica.com". britannica.com. مؤرشف من الأصل في 2019-05-20.
- ^ "معلومات عن لغة برمجة على موقع bigenc.ru". bigenc.ru. مؤرشف من الأصل في 2020-02-05.
- ^ Rojas, Raúl, et al. (2000). "Plankalkül: The First High-Level Programming Language and its Implementation". Institut für Informatik, Freie Universität Berlin, Technical Report B-3/2000. (full text) نسخة محفوظة 18 October 2014 على موقع واي باك مشين.
- ^ Sebesta, W.S Concepts of Programming languages. 2006; M6 14:18 pp.44. (ردمك 0-321-33025-0)
- ^ Knuth، Donald E.؛ Pardo، Luis Trabb. "Early development of programming languages". Encyclopedia of Computer Science and Technology. ج. 7: 419–493.
- ^ Peter J. Bentley (2012). Digitized: The Science of Computers and how it Shapes Our World. Oxford University Press. ص. 87. ISBN:9780199693795. مؤرشف من الأصل في 2016-08-29.