لغة البرمجة (بالإنجليزية:Programming language)، هي مجموعة من الأوامر، تكتب وفق قواعد تُحَدَّد بواسطةلغة البرمجة، ومن ثُمَّ تمر هذه الأوامر بعدة مراحل إلى أن تنفذ على جهاز الحاسوب.[1][2][3]
وتقسم أحياناً بناء على الأغراض المرغوبة من اللغة المستخدمة. هناك لغات صُممت لكي تعمل على أجهزة معينة، مثل أن تقوم شركة ما بإنتاججهاز حاسوب أومعالج مركزي (وحدة معالجة مركزية)، وتوفر له دليل استعمال يحتوي على الأوامر التي تنفذ عليه، وهناك لغات أخرى أكثر عمومية تعمل بشكل مستقل عن نوع الآلة، أي أنها تعمل ضمنآلة افتراضية، مثل لغةجافا.
من الممكن تعريفالبرمجة بأنها عملية كتابة تعليمات وأوامر لجهازالحاسوب أو أي جهاز آخر، لتوجيهه وإعلامه بكيفية التعامل مع البيانات أو كيفية تنفيذ سلسلة من الأعمال المطلوبة.
تتبععملية البرمجة قواعد خاصة باللغة التي اختارها المبرمج.
كل لغة لها خصائصها التي تميزها عن الأخرى وتجعلها مناسبة بدرجات متفاوتة لكل نوع من أنواع البرامج والمهمة المطلوبة من هذا البرنامج.
كما أن للغات البرمجة أيضاً خصائص مشتركة وحدود مشتركة بحكم أن كل هذه اللغات صممت للتعامل معالحاسوب.
وتتطور لغات البرمجة (البرمجيات) بتطور الحاسوب (عتاد الحاسوب). فعندما ابتكرالحاسوب الإلكتروني في الأربعينيات والخمسينيات من القرن الماضي (بعد أجهزة الحساب الكهربائية في العشرينات) وكانالكمبيوتر يعمل بأعداد كبيرة منالصمامات الإلكترونية - كانت لغة البرمجة معقدة هي الأخرى، وكانت عبارة عن سلسلة من الأعداد وتكتب على شكل أكواد برمجية طويلة هذه الاعداد هي الرقمين الصفر 0 والواحد 1 وهذه اللغة تدعى اللغة الثنائية أو لغة الآلة، وكان ذلك صعبا على المبرمجين. ولكن بابتكارالترانزيستور صغر حجمالحاسوب كثيرا وزادت إمكانياته، واستطاع المختصون والمبرمجون في نفس الوقت أن يبتكروا لغات برمجة أسهل للاستخدام، وأصبحت لغات البرمجة مفهومة إلى حد بعيد للمختصين. ولا يزال التطوير والتسهيل قائماً.
لغة البرمجة هي بالأساس طريقة تسهل للمبرمج كتابة برنامجه على شكل تعليمات وأوامر يفهمهاالحاسوب، بغرض تنفيذ العمل المطلوب. ومن المعروف ان الحاسوب يحول اللغة المكتوبة بها البرمجة إلى سلسلة من 0 و 1، ويبدأ على أساسها عمله.ولكتابة الأوامر، توفر لغة البرمجة المختارة مجموعة من الأمور الأساسية للاستناد إليها أثناء عملية تكوين البرنامج ومجموعة من القواعد التي تمكن من التعامل معمعلومات وتنظيمها بغرض أداء العمل المطلوب.
وباستعمال 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]
^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 على موقعواي باك مشين.