تطور لغات البرمجة
بحث عن لغات البرمجة وأنواعها
للدكتورة الفاضلة: شاهيناز محمود
للطالبة : أحلام محمد الغامدي
قسم/تقنيات تعليم
المستوى الرابع
جامعة الباحة
لغة برمجة:
لغة البرمجة هي لغة يتم كتابة البرامج بها ليقوم جهاز الحاسوب بتنفيذها. تقسم لغات البرمجة للحاسوب لعدة أجيال أو أنواع، بناء على قربها من اللغات الإنسانية. وتقسم أحيانا بناء على الأغراض لهذه اللغة.
× تعريف البرمجة:
من الممكن تعريف البرمجة بأنها عملية كتابة تعليمات وأوامر لجهاز الحاسوب أو أي جهاز آخر، لتوجيهه وإعلامه بكيفية التعامل مع البيانات. و تكون عملية البرمجة متبعة لقواعد محددة باللغة التي اختارها المبرمج. و كل لغة لها خصائصها التي تميزها عن الأخرى و تجعلها مناسبة بدرجات متفاوتة لكل نوع من أنواع البرامج. كما أن للغات البرمجة أيضا خصائص مشتركة و حدود مشتركة بحكم أن كل هذه اللغات مجعولة للتعامل مع الحاسوب.
× خصائص لغات البرمجة:
لغة البرمجة هي بالأساس طريقة تسهل للمبرمج كيفية إعطاء أوامر للحاسوب لكي يقوم بالعمل المطلوب منه. و للقيام بإعطاء الأوامر توفر لغة البرمجة المختارة مجموعة من اللبنات الأساسية للاستناد عليها خلال عملية بناء البرنامج و مجموعة من القواعد التي تمكن من التعامل مع معلومات و تنظيم هذه الأسس التي توفرها اللغة لتتكامل و تقوم بعمل مفيد. تتمثل هذه الأسس و القواعد بصفة عامة من:
- المعلومات و تخزينها
- الأوامر و تنظيم سيرها
- التصميم الخاص
المعلومات و تخزينها:
ان المعلومات في الأجهزة الرقمية الحالية يتم تخزينها على أرقام على نظام العد الثنائي و بصفة عامة فان المعالجات الحديثة لا تقوم بالتعامل مع البت الواحد بل مع مجموعات من البتات يمكن أن تضم :
8 بت = بايت وهي أصغر وحدة تخزين معلومات في الحواسيب الحديثة
16, 32, 64, أو 128 بت
و باستعمال 8 بت مثلا, يمكن تشكيل 256 قيمة مختلفة, و يمكن أن تكون هذه القيمة بين 0 و 255 و تمثل وظيفة لغة البرمجة استغلال وحدة أو مجموعة من الوحدات لتخزين معلومات من الحياة الواقعية مثل الأسماء أو القياسات أو أرقام الحسابات البنكية
الأوامر و تنظيم سيرها:
يقوم المبرمج بإجراء عمليات على وحدات المعلومات مثل تخزينها و قراءتها و مقارنتها و إجراء عمليات حسابية عليها أيضا, وتتبع العمليات القواعد المحددة للغة. و للغة البرمجة دور آخر و هو التحكم في تنظيم إجراء العمليات, حيث تحرص على إجرائها بنفس تنظيم كتابتها من طرف المبرمج و تمكن اللغة أيضاً من اجراء عملية اختيار و تفرع, فلنفترض أن البرنامج الذي يريد المبرمج صنعه يقوم بقسمة عددين يختارهما المستعمل, و اظهار النتيجة على الشاشة, و من المعروف أن القسمة على صفر لا تجوز, و هنا يقوم البرنامج بالاختيار : فاذا كان القاسم مخالفا لصفر فان البرنامج يقوم باجراء العملية و يعطي النتيجة, أما اذا كان القاسم صفراً فان البرنامج لا يقوم باجراء العملية و انما ينبه إلى أن المستعمل حاول القسمة على صفر. و يمكن تنظيم الأوامر بصفة أخرى, حيث يقع تنفيذ أمر أو مجموعة من الأوامر بصفة متكررة (Loop) و يمكن تقسيم الأوامر أيضاً إلى وحدات فرعية تقوم كل وحدة بانجاز عمل محدد, و الهدف هو تقسيم العمل إلى أجزاء يسهل العمل عليها كل على حدة (Loops)
التصميم الخاص:
تتمتع كل لغة بتصميم خاص يختلف عن طريقة كل لغة في التعامل مع المعطيات, و عن طبيعة الطرق و التسهيلات التي توفرها اللغة للتعامل مع مشكلة معينة.
يمكن تصنيف لغات البرمجة من حيث طريقة بناء البرامج إلى لغات إجرائية ,Basic) (Fortran وهي لغات تسلسلية، أساس بناؤها هو الإجراءات المطلوب تطبيقها على الأشياء والمتحولات. ولغات شيئية (C, Java, Delphi) وهي لا تسلسلية، وتقوم على أساس العناصر والمتحولات المستخدمة ضمن البرنامج المطلوب تحويرها، من خلال تطبيق مجموعة معينة من الإجراءات عليها.
لغات البرمجة:
1ـ لغة الآلة :
وتسمى *اللغة الثنائية* حيث إنها تتكون من سلسلة من 0 و 1، وهي اللغة الوحيد التي يفهمها الحاسب الآلي، حيث تحول جميع اللغات إلى لغة الآلة، حتى تتمكن معدات الحاسب الآلي من التفاهم معها، ولأنها تتكون من صفر وواحد، لذا فقد تميزت هذه اللغة بالصعوبة نظراً لما تتطلبه من حفظ ودقة في كتابة سلسلة طويلة من صفر وواحد بترتيب معين، مما ينتج عنه أخطاء كثيرة من الترميز، ويجب أن يحدد المبرمج كل شي، فكل خطوة يجب أن ينفذها البرنامج يجب أن ترمز، لذا فالمبرمج يجب أن يكون على علم بتركيب الحاسب الداخلي، والعنا وين الرقمية لمواقع التخزين، سواء للبيانات أو التعليمات، كما أن لكل جهاز لغة آلة تختلف عن الجهاز الآخر بحسب النوع والتركيب مما يعني أنه يجب كتابة البرنامج بشكل ككامل مره أخرى عن الرغبة في تنفيذه على جهاز آخر، ونتيجة لهذه الصعوبات فقد ظهرت طرق أخرى لتمثيل الترميز الثنائي، كالنظام الثماني OCTAL والستة عشري HEX-ADECIMAL بدلا من 1، 0 فالنظام الستة عشرين يتكون من ستة عشر رمزاُ هي : 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 A.B,C,D,E,F .
مما يساعد على سهولة قراءة التعليمات المكتوبة وحفظها بهذه اللغة، فبدلا من كتابة 16 رقماً في سلسلة يمكن الاستعاضة عنها بأربعة رموز من رموز النظام التشغيل الستة عشري .
2ـ لغة التجميع :
ظهرت لغة التجميع بوصفها أو لغة ترميز، تستخدم الرموز SYMBOLIC CODE للتعبير عن تعليمات لغة الآلة، وذلك لمواجهة صعوبة الترميز بلغة الآلة، ولغة التجميع لغة قريبة من لغة الآلة التي يفهمها الحاسب الآلي، وتسمى هذه اللغات بلغات المستوى البسيط .
ويتم استعمال مختصرات ورموز يسهل حفظها وكتابتها لكل تعليمة من تعليمات لغة الآلة، ولغة التجميع كما في لغة الآلة مصممة للعمل على حاسب معين، مما يوفر قدرة أكبر على استغلال موارد الحاسب الآلي ووحدة المعالجة المركزية بشكل أفضل، ويقوم البرنامج المسمى المجمع ASSEMBLER بترجمة البرنامج المكتوب بلغة المجمع إلى لغة الآلة .
3 ـ اللغات العليا :
سميت بهذا الاسم لأنه أصبح بإمكان المبرمج كتابة البرنامج دون معرفة تفاصيل كيفية قيام الحاسب بهذه العمليات، كمواقع التخزين وتفاصيل الجهاز الدقيقة، وتعبيرات لغات المستوى العالي هي تعبيرات شبيهة إلى درجة كبيرة باللغة الطبيعية التي يستخدمها الإنسان في حياته للتواصل، والتخاطب مع الآخرين .
ومن مميزات اللغات العليا التي تميزها من لغات المستوى البسيط، بالإضافة إلى ما سبق، أن هذه اللغات غير مرتبطة بجهاز معين . أي يمكننا تنفيذ البرنامج المكتوب بلغة من لغات المستوى العالي، كالفورتران أو الكوبول أو البيسك على أكثر من جهاز، كما يمكن استخدام أكثر من لغة ترجمة على حاسب معين . كذلك، فإن اكتشاف الأخطاء وتصحيحها أصبح أكثر سهولة بسبب سهولة قراءة البرامج وتتبعها وفهمها .
تسمى اللغات كالكوبول والفورتران والبيسك باللغات العليا الموجهة نحو إجراءات الحل ، PROCEDURE - ORIENTED LANGUAGES ، وهي اللغات التي يعطي فيها المبرمج التعليمات خطوة خطوة .
ويمر البرنامج المكتوب بلغات المستوى العالي بثلاث مراح قبل أن يكون جاهزاً للتنفيذ .
1.الترجمة TRANSLATION : تحويل البرنامج المكتوب بلغة المستوى العالي إلى لغة الآلة .
2ـ الربط LINKING : ربط الروتينات المكتبية الكائنة بالمكتبة، والتعليمات الضرورية بالبرنامج .
3ـ التحميل LOADING : يقوم البرنامج بتحميل شفرة الهدف والروتينات المكتبية، والتعليمات على الذاكرة الرئيسة بغرض التنفيذ .
وكانت اللغات تصنف حسب قوتها إلى لغات أعمال، أو لغة علمية أو لغات مبتدئين ـ وفي وقتنا الحاضر ـ فإن معظم اللغات يمكن استخدامها بكفاءة في تطبيق أنواع التطبيقات كافة.
1/ اللغات الشيئية
لغة سي (C++) ++
++C هي لغة برمجة للإستخدامات العامة، تعبتر لغة السي++ لغة برمجة كائنية.
طور بيارن ستروستروب (Bjarne Stroustrup), و الذي كان يعمل فى مختبرات بيل, لغة السي++ في الثمانينات كتحسين للغة السي، تشمل السي++ جميع مزايا السي بالأضافة الى مزايا البرمجة الكائنية، تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج،وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
و مثلها مثل لغة السى, فان السى++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. و تكتب معظم أجزاء أنظمة التشغيل و برامج مساعدة أنظمة التشغيل باستخدام السى++ و منها نظام جنو لينكس.
و يتجنب الكثير من المبرمجين لغة السى++ و السى نظرا لشهرتهما كلغات برمجة معقدة. و قد أدى ذلك الى استخدام الكثيرين للغات مثل فيجوال بيسك و ديلفي ثم جافا و سي شارب و الأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السى++ و بدا فى وقت معين أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السى++ مع هجرة عدد كبير من مبرمجى السى++ الى جافا و سى شارب , الا أنه سرعان ما أدرك المبرمجون أن السى++ هى السبيل الوحيد لانتاج برامج تجارية قوية و سريعة و تؤدى المطلوب منها بكفاءة و بأقل عدد من الأخطاء.
- تدعم السى++ السى بشكل كامل(نظريا أو هذا ما تقوله الشركات المنتجة للمترجمات) و عمليا يمكن لمعظم برامج السى أن تترجم بواسطة مترجمات سى++ و لهذا تسمى هذه المترجمات بمترجمات سى/سى++. - الا أن الأمر لا يخلو من بعض المشاكل غير المتوقعه, مثلا قد يحدث أن تسمى متغيرا باسم new و هى كلمة محجوزه فى سى++ و ليست محجوزة فى سى.
الاضافة الأهم التى أتت بها السى++ عن السى هى بالطبع اليرمجه عن طريق الكائنات. حيث تعتمد السى على البرمجة الاجرائية و التى كانت كافية فى وقتها. الا أن بظهور أنظمة التشغيل ذات الواجهة الرسومية انتقل معظم المبرمجين الى البرمجة بالكائنات . الا أن السى مازالت تستخدم فى برمجة الويندوز.
و هذا بالاضافة الى بضعة اضافات أخرى مثل :
- مكتبات جديدة لأداء مهام الادخال و الاخراج تعتمد على الكائنات.
- كلمة iniline التى تضمن الاجراء الفرعى فى الأساسى بدلا من استدعائه.
- استخدام الاشاره // لتضمين الملاحظات بطول سطر واحد.
اسباب صعوبتها:
ربما تعود أسباب صعوبة لغتى السى و السى++ لأسباب تاريخية أكثر منها واقعية و هو ما يردده المبرمجين المعتادين على استخدام السى++ و هذا يعود بنا الى أصل لغة السى و هى لغة السى بى ال CPL و التى اشتهرت بشدة تعقيدها مما تسبب فى ابتعاد المبرمجين عنها فتم تطويرها و تبسيطها الى لغة سميت BCPL و لم تلقى الكثير من النجاح و لكنها تطوت الى لغة البى B و عندما أرادو تطويرها سموها سى( و هذا هو أصل تسمية السى) , و بالطبع ورثت السى++ خصائص لغة سى. الا أنه لا يمكن انكار أن مفاهيم مثل المؤشرات pointers , و الاشارات هى مفاهيم مربكة للمبرمج المبتدىء , بالضافة الى مفاهيم التوارث Inheritance و تعدد الشكل polymorphism و القوالب Templates التى تربك حتى المبرمجين المحترفين. و كذلك لا تقدم سى++ الحماية الكافية للمبرمج كى لا يقع فى أخطاء التشغيل التى قد تتسبب فى توقف الحاسوب عن العمل. كيف؟
فى لغة الفيجوال بيسك مثلا عندما تحدد مصفوفة بحجم 20 عنصرا مثلا كلأتى :
Dim A(20) As Integer
ثم تحاول معالجة العنصر رقم 21 مثلا فسوف يبادرك محرك الفيجوال بيسك برسالة خطأ و يتوقف برنامجك. أما فى السى++ فاذا عرفت مصفوفة بنفس الحجم : int a[20] // integer a from 0-19 not from 0-20 و عندما تحاول الوصول الى العنصر رقم عشرين مثلا تكون قد تعديت حدود المصفوفة الى جزء من الذاكرة ربما تكون مخصصة لبرنامج أخر أو معلومات حساسة لنظام التشغيل. و المشكلة الأخرى التى تربك الكثيرون أن أول عنصر بالمصفوفة هو 0 و ليس 1 و حجمها 20 أى أن العنصر الأخير هو 19 و ليس 20 مثل البيسك.
أمثلة:
مثال !Hello, World بالسي++
#include <iostream.h>
int main()
{
cout << "Hello, world!\n";
}
التطور المستقبلي:
سي++ يواصل التطوّر لتلبية المتطلبات المستقبلية. نسخة جديدة من سي++
القياسية حاليا هي قيد التطوير، لقبة سي++0اكس، يشّار بأنّه يتوقع أن يكون
إصدارها قبل 2010. يشير العمل الحالي بأنّ سي++ سيواصل الإستفادة من
طبيعته متعددة المثال. [Boost.org] مجموعة تعمل للإستفادة إلى أبعد الحدود
من سي++ في شكله الحالي. هم يتوسّعون كثيرا في سي++ من حيث الوظيفية
والقدرات وينصحون أيضا سي++ لجنة معايير التي فيها تعمل الميزّات حسنا
والتي تحتاج التحسين.
سي شارب
سي شارب (C#)أحد لغات بيئة الدوت نت لتطوير البرامج من أنتاج شركة ميكروسوفت يرمز اليها بالرمز c# وتنطق "سي شارب"، وهي إحدى اللغات التي انتجتها شركة مايكروسوفت وذلك خروجا من ورطة الجافا والقضية الشهيرة التي رفعتها عليها شركة صن , تم الاعلان عنها في اواسط العام 2000 تزامنا مع الاعلان عن بيئة الدوت نت. تتميز سي شارب بأنها أحد لغات البرمجة الشيئيه وتجمع صفات السي واللبيزك المرئي حيث انها تستخدم القواعد الخاصه بالسي وسرعة التطوير كما في البيزك المرئي لغة السي شارب موجهه الى مبرمجي الفيجول سي ومبرمجي السي على انها امتداد لهذه اللغات.
استفادت لغة السي شارب الى حد كبير من جهود مطوري الجافا وتشاركها في كل مزاياها ومبادئ التصميم وتفوقها في بعض الاجزاء . لغة السي شارب كباقي لغات الدوت نت والجافا تنتج برامج لاتعتمد على بيئه معينه مثل برامج موجهه للينكس او ويندوز او موبيل . هي لغة كائنية بالمعني الحقيقي للكلمة حيث كل شيء في تركيب اللغة هو عبارة عن كائن تم تعريفة مسبقا , لذلك لا تسمح هذة اللغة بالكتابة الحرة اي ان ابسط التراكيب البرمجية يجيب ان تكون داخل احدي الكائنات. منذ الوهلة الاولي لظهور السي شارب كان من الواضح انها اتت لتعزز موقف شركة مايكروسوفت فيمنتجها الدوت نت وذلك لانها افضل لغة تتعامل مع الدوت نت و تستفيد من قدراتها كاملة. و قد أصدر في أواخر العام 2005 الإصدار الثاني من اللغة C#2 ..
دلفي
دلفي لغة برمجة من انتاج شركة بورلاند هذه اللغة مبنية على لغة باسكال الكائنية حيث تعتبر لغة دلفي تطوير للغة باسكال القديمة، تعتبر دلفي لغة شائعة ومنتشرة حاليا، تعتبر دلفي لغة مرئية وهي من اللغات العالية الإنتاجية. وتعتبر في مصاف اللغات القوية والسهلة معا.
يقال أنها تجمع بين سهولة لغة فيجوال بيسك وقوة لغة سي++, تم انشاء هذه اللغه في سنة 1996 وقد سميت دلفي رجوعا إلى كلمة اغريقية قديمة تعني عرافة.
هناك نسختان من هذه اللغة، النسخه الاولى خاصة بنظام التشغيل ويندوز و هي ديلفي و الثانية خاصة بنظام التشغيل لينكس و تحمل الاسم كايليكس وقد تم إصدار دلفي للعمل تحت منصة .نت بالنسختين دلفي8.نت و دلفي9.نت.
جافا
الجافا (Java) هي لغة برمجة شيئية طورها أساساً جيمس كوسلنك وجامعيون في شركة صن ميكروسيستيمز.
صممت اللغة أساساً لتستبدل لغة السي++ ++C رغم تشابه سياق جملها مع الأوبجكتف سي Objective C. تتمير لغة الجافا بأخذها لمزايا وقوة السي++ ++C وتجنبها لعيوبها، كذلك تتميز الجافا بنظافة وقوة جملها وتراكيبها وتغليفها للكائنات وكذلك أمكانية عمل برامجها على منصات تشغيل و نظم تشغيل مختلفة.
سميت لغة الجافا من قهوة الجافا (الجاوة) التي تزرع في جزيرة جاوا، رغم تسمية اللغة في البداية أوك (بلوط) (من شجر البلوط الذي كان موجودً خارج نافذة كوسلنك).
ملاحظة: يجب عدم الخلط بين الجافا والجافا سكريبت فرغم تشابة اللغتين في السياق والتراكيب الا أنهما لغتان مختلفتان ولهما أهداف
الاهداف الاساسية من انشاء جافا هي:-
- كائنية التوجه
- الاستقلال عن نظام التشغيل
- توفر امكانيات و مكتبات للتشبيك
- امكانية تنفيذ البرامج من حواسيب بعيدة بشكل آمن
2/ اللغات التقليدية
البيسك
لغة البيسك هي لغة متعددة الأغراض للمبرمجين المبتدئين واسمها اختصار لذلك Basic(Beginners All Puprposes Symbolic Instruction Code). تم تطويرها سنة 1964 م وكانت تستند بشكل كبير على لغة الفورتران.
أكثر ما تميزت به لغة البيسك هو سهولتها ويدين معظم المبرمجين ببداياتهم إلى لغة بيسك. اشتهرت بيسك بأنها لغة مُفسرَة وليست مترجمة ويعتقد الكثيرون أنها بدأت مفسرة ولم تتم كتابة مترجمات لها إلا حديثا وذلك خطأ شائع لأن لغة بيسك بدأت أساسا كلغة مترجمة.
و قد تطورت لغة بيسك كثيرا منذ بدايتها الى اليوم و بعد أن كانت لغة للمبتدئين و كتابة البرامج القصيرة أصبحت لغة احترافية يمكن استخدامها لكتابة برامج تجارية معقدة و عالية المستوى.
و يعود السبب الأساسى لانتشار بيسك الكبير الى اعتمادها كلغة الحواسيب المنزلية التى ازدهرت فى الثمانينات. أما سبب تطورها و اعتمادها كلغة احترافية فيعود بالأساس الى مايكروسوفت و مترجمها كويك بيسك Quick Basic الذى أدخل البيسك فى مرحلة جديدة. و تطورت البيسك بعد ذلك و كانت حجر الزاوية لمترجم Visual Basic الذى يعد الأن من أكثر الطرق شعبية لكتابة برامج ويندوز.( الا أنه ليس أفضله).
سي
السي هي لغة برمجة, مقننة و عالمية, وقع تصميمها و تطويرها في أوائل السبعينيات من طرف كن تومسون, براين كرنيغان, و دنيس رتشي. و قد صممت في الأصل ليقع استعمالها كأدات لتطوير و العمل تحت نظام التشغيل UNIX, ثم لقيت انتشارا واسعا منذ ذلك الحين و تواصل الى اليوم و يظهر ذلك من خلال شعبيته لدى أغلب مبرمجي الحاسوب و من خلال استعمالاته العديدة و المتنوعة. و لغة السي هي لغة انبنت عليها عديد اللغات و الهجات الحديثة مثل ال سي بلس بلس و الجافا
تم تصميم السي في مختبرات بيل ما بين 1969 و 1972, وقد تم تسميته بالسي لأن جزأ كبيرا منه قد اقتبس عن لغة البي (B) و عندما تطورت السي الى درجة أصبحت فيها بالقوة الكافية لتحويل نواة UNIX من الأسمبلي الى السي
وفي سنة 1978 قام كرنيغان (Brian Kernighan) و رتشي (Dennis Ritchie) بنشر الكتاب المشهور The C Programming Language و ذلك لتحديد خصائص اللغة, و يعرف هذا الكتاب في الأوساط المختصة ب K&R. الا أن تقنين اللغة و تبنيها بصفة رسمية من طرف الANSI و الISO الا في الثمانينات و كنتيجة لذلك ظهرت الطبعة الثانية للكتاب بعنوان The C Programming Language, Second Edition, أو K&R2 وهو المرجع الرئسئ للغة الى حد الأن ISBN 0-13-110362-8 . و بتقنين اللغة تمت اضافة أجزاء و تنقيح أخرى لتفادي السلبيات التي ظهرت في السابق ولتهيئة أداة أفضل و أقوى بالنسبة للمبرمج
و لولا ظهور لغة السي و تجربتها التي فاقت الثلاثين سنة لما كان ممكنا ظهور اللغات الحديثة و الشيئية مثل السي بلس بلس أو على الأقل لما أصبحت كما تعرف عليه اليوم.
باسكال
باسكال لغة برمجة تعتمد على الأوامر. و هي معروفة بوضوحها و قوتها و سهولة إنشاء البرامج عن طريقها. و هو ما يجعل من باسكال اللغة البرمجية الأكثر استعمالا في التدريس حتى وقت قريب.
و بالإضافة إلى سهولتها و قوتها، تمتاز لغة باسكال بعدة قواسم مشتركة مع لغة الـسي.غير أن باسكال كان قد صمم في البداية لأسباب تعليمية بحتة و كان مقتصرا على خاصيّات محدودة جدا (فعلى سبيل المثال لم يكون هناك وجود لسلاسل الأحرف)؛ و بالإضافة لكل ذلك فإن كل النسخ المستعملة لباسكال خارج العالم التعليمي هي نسخ معدلة مثل توربو باسكال، دلفي، أوبجكت باسكال...
و في المقابل، فإنه من المعروف أن باسكال فد مكّن من تصميم برامج شهيرة مثل TeX و جزء من أوائل أنظمة التشغيل الخاصة بـماكينتوش. و قد تم اقتباس هذه اللغة في لغات أخرى مثل أدا، مودولا-2 ثم مودولا-3,أوبيرون...
قد تم اختراع لغة باسكال (التي اتخذت اسمها من عالم الرياضيات الفرنسي (بليز باسكال) عن طريق نيكولاس ويرذ خلال السبعينيات من القرن العشرين. و قد تم تصميمها لتفيد في تعليم البرمجة بطريقة سهلة و لكن صحيحة، في محاولة لمجابهة تعقيدات ألغول 68. و هذه اللغة من بين اللغات التي ساعدت على تعليم البرمجة المنظمة. و باعتبار أنه من غير المنصوح به استعمال الـ goto أو القفز داخل البرنامج فإن باسكال يعتمد على الشروط (if, case...) و التكرارات (while, for, repeat...) و التي تمتلك كل واحدة منها مدخلا و مخرجا حتى يتم تسهيل التحكم، مما يؤدي إلى برنامج أكثر سرعة و تنظيما.
و تعد هذه اللغة كذلك صارمة في ما يخص تعريف المتغيرات، بمعنى أن كل متغير يجب أن يعرف بنزع عند التجميع. و في المقابل فإن عدم تأقلمه لتمكين التنقل من النوع حرف إلى النوع سلسلة حروف يعد من نقاط ضعفه.
و قد تمكنت لغة باسكال من التغلغل بشكل كبير في الميدان التعليمي و مجال الأبحاث (الجامعات)، و بصفة أقل في الميدان الصناعي.
و قد تم نشر ملفات المجمع P4 المصدرية في الجامعات، بسعر مخفض جدا. و هذا المجمع ينشئ الـ P-Code، و هو كود لجهاز افتراضي. و لذلك يمكن القول أن البرامج "الباسكالية" كانت سهلة النقل على الأجهزة.
و كان لمجمع UCSD Pascal (UCSD = University of California at San Diego)، نجاح كبير خاصة على الأجهزة من نوع Apple II و التي كانت شديدة الإنتشار.
و لكن "التوربو" كان من عمل شركة بورلاند الحديثة، و التي أنشأت سنة 1983 و التي قامت بتسويق المجمع توربو باسكال بسعر غاية في التخفيض (49 $ حينها مقابل 500 $ سعر مجمع باسكال من شركة مايكروسوفت و الذي لم يكن يمتلك محررا مدمجا حتى(
التوربو باسكال
قام بكتابة توربو باسكال أنديرس هيلزبيرغ (و قد كان اسمه قبل TP، كومباس باسكال ثم بولي باسكال). و قد كان ينشئ لغة الآلة ((x86 تحت DOS) و بسرعة نظرا لخفته (12 ك.ب.) و اعتماده شبه التام على الرام و لم يعد ينشئ بالتالي الـ P-Code. و قد كان مرفقا مع بيئة متكاملة (محرر نصوص و مساعدة عن بعد). و ما فتئ الباسكال يشهد التحسين تلو الآخر ففي عام 1987 ظهرت النسخة 4 التي احتوت على بيئة برمجة مدمجة متكاملة و في عام 1989 ظهرت النسخة 5.5 التي امتازت بدمجها لمفهوم الشيء (Object)، و في عام 1990، مكنت النسخة 6 من برمجة نوافذ (تحت صندوق الأوامر (DOS ثم في عام 1993، ظهرت آخر نسخة، و هي النسخة السابعة لنظام تشغيل دوس و لنظام ويندوز. و قد أصدرت شركة بورلاند سنة 1995 لغة دلفي للتأقلم مع البرمجة المرئية التي أطلقتها مايكروسوفت مع فيجوال ستوديو و كان الدلفي مجمعا حقيقيا ينشئ لغة الآلة. و في سنة 2001 أطلقت شركة بورلاند كيليكس، و هو المرادف لدلفي الخاص بمنظومة لينوكس.
الكوبول
لغة الكوبول COBOL) اختصار Common Business-Oriented Language أي اللغة الشائعة الاستخدام في النواحي التجارية) لغة برمجية تخدم النواحي التجارية وخاصة مجال البنوك وغيره. وهي لغة توثيقه تتكون من أربعة أقسام هم:
القسم البيئي أو التعريف (Enveironmental Division) وهو القسم الذي يتم تعريف اسم البرنامج به واسم المبرمج والغرض من البرنامج والجهة صاحبة هذا البرنامج.
قسم الإدخال والإخراج (Input Output Division)
قسم البيانات (Data Division)
قسم الإجراءات (Procedures)
فورتران
فورتران (FORTRAN) هي لغه مفاهيمها بسيطه استخدمت لاغراض المحاسبه وكما استخدمت لاغراض تعليميه ولكن تكمن صعوبتها في تحديد الخطأ عند حدوثه حيث من يستوجب عليك تتبع الكود من اوله مما يزيد الامر صعوبه.
أسمبلي
لغة أسمبلي (بالإنجليزية: (Assembly languageهي الصيغة السهلة القراءة للبشر المقابلة للغة الآلة التي تشكل الأوامر التي ينفذها حاسوب بتصميم ما. فلغة الآلة عبارة عن تتابع من البتات (bits) تمثل عملية حاسوبية أو امر للحاسوب، تصبح أسهل للقراءة عندما تستبدل برموز تعبر عنها.
حاسوب بوحدة معالجة مركزية تتبع تصميم اجهزة x86/IA-32 يقبل الأمر الآتي (بلغة الآلة):
10110000 01100001
اما للمبرمجين ، فانه من الاسهل تذكر وفهم الصيغة المقابلة لهذا الأمر المكتوبة بلغة اسمبلي وهي :
mov al, 0x61
والتي تجعل الحاسوب ينقل قيمة 61 بالنظام الست عشري للعد (91 باللنظام العشري) الى خانة وحدة تخزين في وحدة المعالجة المركزية اسمها al. فـ mov هي اختصار لكلمة move التي تعني "حرّك" او "انقل" ، ومجموعة من المدخلات تتبع الأمر مفصولة عن بعضها بفاصلة(,) ، هي مثال على الشكل الشائع لأوامر لغة اسمبلي.
3/اللغات الوضيفية
ليسب
ليسب (Lisp) هي لغة برمجة وظيفية (Functional Programming Language) وهي اختصار لمصطلح معالجة القوائم (LISt Processing) وتقوم على حساب لامبدأ (Lambda-Calculus). وهي من أهم لغات الذكاء الإصطناعي، وتستخدم كذلك في تطبيقات أخرى تتطلب توليد تلقائي للبرامج (Code Generation). وقد اخترعها جون مكارثي عام 1958 أثناء تواجده في معهد ماساتشوستس للتكنولوجيا، وبذلك تعد ثاني أقدم لغة برمجة عالية المستوى (بعد فورتران).
لهجات ليسب:
- كومون ليسب Common Lisp
- سكيم Scheme ، والذي طورها جيري ساسمان و هال ايبلسون في معهد تكنولوجيا -- - - ماساتشوستس. وهي أنقى اللهجات إلتصاقا بحساب لامبدا، وتوزع مجانا عملاً بمبادئ جنو لحقوق الملكية.
- أوتو ليسب AutoLisp ، التي تستخدم داخل برنامج أوتوكاد AutoCAD للتصميم الهندسي بمساعدة الحاسب (Computer-Aided Design - CAD).
برولوغ
البرولوغ (Prolog) هي لغة برمجة منطقية (logic programming) . الأسم مأخوذ من الفرنسية programmation en logique (برمجة المنطق)، تم أختراع اللغة بواسطة ألين كولميرايور حوالي العام 1972. كانت محاولة لجعل لغة البرمجة قادرة على أستخدام عبارات منطقية بدل أن تكون تعليمات محددة تلقن الى الحاسوب. صممت اللغة أساساً لتستخدام في عمل برامج معالجة اللغات الطبيعية.
تستخدم لغة البرولوغ في العديد من برامج الذكاء الإصطناعي (artificial intelligence) و برامج معالجة اللغات الطبيعبة. عبارات وقواعد اللغة تعبتر بسيطة جداً وواضحة (يتم كتابة البرنامج بالكامل بأستخدام الحقائق و القواعد). العديد من الباحثين الذين يقودون تطبيقات حديثة للبرلوغ التي جاءت نتيجة أستخدام نسخات مختلفة من البرلوغ كنواة في مشاريع أنظمة حاسوب الجيل الخامس fifth generation computer systems) أختصاراً( FGCS
الحقائق Facts
تختلف طريقة البرمجة في برلوغ عن اللغات التقليدية. في برلوغ يتم كتابة الحقائق (Facts) والقواعد (Rules) في قاعدة بيانات، ثم يتم كتابة أستفسارت queries من قاعدة البيانات. الحقية عبارة عن سند (predicate) (الوحدة الأساسية للبرلوغ). يتكون السند من رأس (head) وعدد من الوسائط (arguments).
مثال:
cat(tom).
في هذا المثال نقول بباسطة أن هناك توم 'tom' وهو قط 'cat'،بتعبير أدق 'cat' هو رأس (head) السند و 'tom' هو وسيطة (argument). هنا عدد من الأستفسارات التي يمكن سؤالها بناء على هذه الحقيقة:
هل توم قط (is tom a cat)؟
?- cat(tom).
yes.
ببساطة هنا نسأل إذا توم قط ويجيبنا برلوغ بنعم (yes).
ماهي الأشياء التي هي قط (what things are cats)؟
?- cat(X).
X = tom;
yes
القواعد Rules
أن النوع الثاني من العبارت في برلوغ هي القواعد:
father(X,Y) :- parent(X,Y),male(X).
أنواع المعلومات Data types
لاتحتوي لغة البرلوغ على أنواع معلومات (Data types) تقليدية كلغات البرمجة التقليدية الأخرى. ولكن على عناصر تركيبية (lexical elements) .
الذرات Atoms
يعرف النص الثابت في برلوغ بمعنى الذرات Atoms. الذرة عبارة عن سلسة من الحروف،الأرقام و رمز شرطة-السفلية (_) (underscores) على أن يبدأ النص بحرف أنجليزي صغير (lower-case). عادة، عادة اذا كان هناك رمز ليس بحرف أو رقم فأنه يوضع بين (علامة التنصيص الأحادية) (مثال '+' يعتبر ذرة، في حين + يعتبر معامل
الأرقام
معظم نسخ البرلوغ لاتميز بين الأعداد الصحيحة و الأعداد الحقيقية.
المتغيرات Variables
يعبر المتغيرات Variables عن نص يتكون من الحروف،الأرقام و رمز شرطة-السفلية (_) على أن يبدأ النص بحرف أنجليزي كبير (upper-case). عللى عكس اللغات القولية (imperative programming languages) في بيئة البرلوغ المتغير ليس مكان في الذاكرة (مستوعب) يمكن تخزين االقيم فيه. تصرف المتغيرات يتبع النمط لأيجاد القيمة.
بايثون
بايثون لغة برمجة حديثة بسيطة، واضحة، سريعة , تستخدم اسلوب البرمجه الكائنيه (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كـ لغة تفسيريه , بايثون مصممة اصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى, غالباً ما يُنصح المبتدؤن في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً .
نشأت بايثون في مركز CWI )مركز العلوم والحاسب الألي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها أسم مونتي بايثون
(Monty Python)
تتميز بايثون بمجتمعها النشط , كما ان لها الكثير من المكتبات البرمجيه ذات الاغراض الخاصه و التي برمجها اشخاص من مجتمع هذه اللغه , مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب . و يمكن لبايثون التعامل مع العديد من انواع قواعد البيانات مثل MySQL و غيرها .
تطبيقات كُتبت بإستخدام البايثون:
Blender - برنامج مفتوح المصدر لإنشاء الرسومات ثلاثية الابعاد
DrPython - بيئة تطوير متكامله مفتوحة المصدر من اجل لغة بايثون
MySmartCI - مفسر اوامر مفتوح المصدر قابل للتوسيع
أمثلة:
مثال Hello World!
print "Hello World!"
مثال لاستخراج المضروب Factorial :
num = 1
x = raw_input('Insert the number please ')
x = int(x)
if x > 69:
print 'Math Error !'
else:
while x > 1:
num *= x
x = x-1
print num
× المراجع:
- منتديات تونيزيـا سات / منتدى لغات البرمجة
- كتب عدي الجميلي : لغات البرمجة اساس الاحتراف بقسم البرمجة القياسية Ajax - XML - CSS - JavaScript -php وغيرهم في منتديات داماس
لغات البرمجة وتطورها
إعداد / حمده الخثعمي
تعريف البرمجة
من الممكن تعريف البرمجة بأنها عملية كتابة تعليمات وأوامر لجهاز الحاسوب أو أي جهاز آخر، لتوجيهه وإعلامه بكيفية التعامل مع البيانات أو كيفية تنفيذ سلسلة من الأعمال المطلوبة.و تتبع عملية البرمجة قواعد خاصة باللغة التي اختارها المبرمج.
و كل لغة لها خصائصها التي تميزها عن الأخرى وتجعلها مناسبة بدرجات متفاوتة لكل نوع من أنواع البرامج والمهمة المطلوبة من هذا البرنامج.
كما أن للغات البرمجة أيضاً خصائص مشتركة وحدود مشتركة بحكم أن كل هذه اللغات صممت للتعامل مع الحاسوب.
وتتطور لغات البرمجة (السوفتوير Software) بتطور الحاسوب (الهاردوير Hardware). فعندما ابتكر الحاسوب الإلكتروني في الأربعينيات والخمسينيات من القرن الماضي (بعد أجهزة الحساب الكهربائية في العشرينات)- وكان الكمبيوتر يعمل بأعداد كبيرة من الصمامات الإلكترونية - كانت لغة البرمجة معقدة هي الأخرى، حتي أنها كانت عبارة عن سلسلة من الأعداد لا يدخلها إلا الصفر 0 والواحد 1، وكان ذلك صعبا على المبرمجين. ولكن بابتكار الترانزيستور صغر حجم الحاسوب كثيرا وزادت إمكانياته، واستطاع المختصون في نفس الوقت أن يبتكروا لغات أسهل للاستخدام، وأصبحت لغات البرمجة مفهومة إلى حد بعيد للمختصين. ولا يزال التطوير والتسهيل دائرا.
تعريف لغات البرمجة
لغة البرمجة هي عبارة عن مجموعة من الأوامر، تكتب وفق مجموعة من القواعد تحدد بواسطة لغة البرمجة، ومن ثم تمر هذه الأوامر بعدة مراحل إلى ان تنفذ على جهاز الحاسوب.
تقسم لغات البرمجة بناء على قربها من اللغات الإنسانية إلى لغة عالية المستوى (قريبة من اللغة التي يفهمها البشر) مثل سي C، جافا Java، ولغة منخفضة المستوى (كلغة الأسيمبلي Assembly وهي قريبة من لغة الآلة).
وتقسم أحيانا بناء على الأغراض المرغوبة من اللغة المستخدمة. هناك لغات صُممت لكي تعمل على أجهزة معينة، مثل ان تقوم شركة ما بإنتاج جهاز حاسوب أو معالج مركزي (CPU)، وتوفر له دليل استعمال يحتوي على الأوامر التي تنفذ عليه، وهناك لغات أخرى أكثر عمومية تعمل بشكل مستقل عن نوع الآلة، أي انها تعمل ضمن آلة افتراضية Virtual Machine، مثل لغة الجافا Java.
خصائص لغات البرمجة
لغة البرمجة هي بالأساس طريقة تسهل للمبرمج كتابة برنامجه في هيئة تعليمات وأوامر يفهما الحاسوب بغرض تنفيذ العمل المطلوب. ومن المعروف ان الحاسوب يحول اللغة المكتوبة بها البرمجة إلى سلسلة من 0 و 1، ويبدأ على أساسها عمله. ولكتابة الأوامر توفر لغة البرمجة المختارة مجموعة من اللبنات الأساسية للاستناد عليها خلال عملية تكوين البرنامج ومجموعة من القواعد التي تمكن من التعامل مع معلومات وتنظيمها بغرض أداء العمل المطلوب.
تتمثل هذه الأسس والقواعد بصفة عامة في:
1-المعلومات وتخزينها
تم تخزين المعلومات في الأجهزة الرقمية الحالية في هيئة أرقام طبقا لنظام العد الثنائي (أي المعتمد على 0 و 1). و بصفة عامة فان المعالجات الحديثة لا تقوم بالتعامل مع البت الواحد بل مع مجموعات من البتات يمكن أن تضم :
-8 بت = 1 بايت وهي أصغر وحدة تخزين معلومات في الحواسيب الحديثة.
-16, 32, 64, 128، 256 ,أو 512 بت.
و باستعمال 8 بت مثلا, يمكن تشكيل 256 قيمة مختلفة, ويمكن أن تكون هذه القيمة بين 0 و 255 و تمثل وظيفة لغة البرمجة استغلال وحدة أو مجموعة من الوحدات (رموزا) لتخزين معلومات من الحياة الواقعية مثل الأسماء أو القياسات أو أرقام الحسابات البنكية.
2-الأوامر وتنظيم سيرها
يقوم المبرمج باجراء عمليات على وحدات المعلومات مثل تخزينها وقراءتها ومقارنتها، كما يمكن إجراء عمليات حسابية عليها أيضا, وتتبع العمليات القواعد المحددة للغة. و للغة البرمجة دور آخر وهو التحكم في تنظيم إجراء العمليات، حيث توجه تنفيذ خطواتها بنفس تتابع كتابتها من طرف المبرمج،
و تمكن اللغة أيضاً من إجراء عملية اختيار وتفرع، وذلك بإدخال شرط منطقي يقوم الحاسوب على أساسه باختيار اتجاه الاستمرار في أداء العمل : فلنفترض أن البرنامج الذي يريد المبرمج صنعه يقوم بقسمة عددين يختارهما المستخدم، وإظهار النتيجة على الشاشة, ومن المعروف أن القسمة على صفر لا تجوز، وبناء علي ذلك فلا بد أن يحدد المبرمج في برنامجه هذا الاختيار : فاذا كان القاسم مخالفا للصفر، فإن البرنامج يسيـّر الحاسوب فيقوم بإجراء العملية ويعطي النتيجة. أما إذا كان القاسم صفراً فان البرنامج لا يقوم باجراء العملية وإنما ينبه إلى أن المستخدم حاول القسمة على صفر. و يمكن تنظيم الأوامر بصفة أخرى، حيث يقع تنفيذ أمر أو مجموعة من الأوامر بصفة متكررة حلقية (Loop)، و يمكن تقسيم الأوامر أيضاً إلى وحدات فرعية تقوم كل وحدة بانجاز عمل محدد, والهدف هو تقسيم العمل إلى أجزاء يسهل العمل عليها كل على حدة في هيئة دورات حلقية (Loops).
3-التصميم الخاص
تتمتع كل لغة بتصميم خاص من حيث التعامل مع المعطيات، ومن حيث الطرق والتسهيلات التي توفرها اللغة للتعامل مع مشكلة معينة.
يمكن تصنيف لغات البرمجة من حيث طريقة بناء البرامج إلى لغات إجرائية (Basic, Fortran) وهي لغات تسلسلية، أساس بناؤها هو الإجراءات المطلوب تطبيقها على المعطيات والمتحولات. ولغات شيئية (C, Java, Delphi) وهي لاتسلسلية، وتقوم على أساس العناصر والمتحولات المستخدمة ضمن البرنامج المطلوب تحويلها، من خلال تطبيق مجموعة معينة من الإجراءات عليها.
لغات متدنية المستوى(قريبة من الحاسوب)
لغة الآلةMachine Language
لغة الآلة (بالإنجليزية: Machine Language) هي اللغة البرمجية الوحيدة التي يفهمها وينفدها الحاسوب مباشرة.وهي من لغات البرمجة المتدنية المستوى.
وجميع لغات البرمجة عالية المستوى مثل ++ Cأو فيجول بيسك الخ عند تنفيد البرنامج المكتوب بها تحول إلى لغة الآلة حتى يتم تنفيدها.
تعليمات اللغة:
لكل نوع من أنواع المعالجات لغة آلة أو طاقم تعليمات خاصة به . ويتم كتابة تعليمات وإيعارات لغة الآلة على هيئة أرقام بنظام العدد الثننائي ليتم تنفيدها مباشرة ..أو بنظام العدد الثماني ثم تحول إلى النظام الثنائي لتنفذ.
توجد لكل عملية حسابية أو منطقية تكتب بلغة الآلة شفرة (code) خاص بها ..ويتم كتابة عناوين الذاكرة الحقيقية في البرامج المكتوبة بلغة الآلة .
أسمبلي Assembly
في علوم الحاسوب، لغة التجميع (بالإنكليزية: Assembly language) هي الصيغة السهلة القراءة للبشر المقابلة للغة الآلة التي تشكل الأوامر التي ينفذها حاسوب بتصميم ما. فلغة الآلة عبارة عن تتابع من البتات (bits) تمثل عملية حاسوبية أو أمر للحاسوب، تصبح أسهل للقراءة عندما تستبدل برموز تعبر عنها.
ولكل معالج لغة تجميع خاصة به كما أن له "لغة آلة Machine Language" خاصة به. وتحتاج لغة التجميع ما يسمى "المجمـِّع" (بالإنكليزية: Assembler) وهو الذي يقوم بتحويل لغة التجميع التي يستطيع البشر قراءتها والتعديل فيها إلى لغة الآلة التي يستطيع المعالج تنفيذها. وتستخدم هذه اللغة الآن من قبل البشر وذلك لبرمجة أجزاء من نظم التشغيل أو للتاكد من سرعة وكفاءة تنفيذ بعض البرامج التي يحتاج فيها الكفاءة كبرامج المحاكاة والألعاب.
و تتكون اسطر برامج التجميع من ثلاثة أجزاء:
-العلامة (Label) وهو ما يتم به الإشارة لسطر ما في سطور أخرى.
-الأمر (Instruction) وهو يكون مناظر في الغالب لأمر في المعالج وهو ما سيقوم المعالج بتنفيذه عند الوصول لهذا السطر أثناء تنفيذ البرنامج.
-المعامل (Operand) وهو المتغير الذي سيتم تطبيق الأمر عليه.
تنقسم الأوامر إلى أربعة حقول :
-الاسم
-المعامل
-العملية
-التعليق
أمثلة الأوامر:
كود PHP:
START: MOV CX,5 ;initialize counter
-في المثال حقل الاسم هو START:
-العملية والمعامل MOV CX,5
-التعليق ;initialize counter
اللغات عالية المستوى
فورترانFortran
فورتران (بالإنجليزية: Fortran) هي لغة برمجة و اختصار لكلمتين في الإنجليزية معناها ترجمة المعادلات (FORmula TRANslation)في عام 1954 خرج جون باكوس John Backus مع مجموعة من شركة IBM بلغة الفورتران وكانت أولي لغات البرمجة ذوات المستوى العالي وتستخدم أساسا في التحليلات العددية وفي الحوسبة العلمية.وتتميز هذه اللغة بالبساطة والإيجاز ولقد ظهرت العديد من صور تلك اللغة آخرها Fortran 2003. تحتوي آخر إصدارات للغة الفورتران علي مجموعة من الأوامر التي تفسر نفسها بنفسها مثل أقرأ READ وأكتب WRITE وإذهب إلي GO TO وتوقف STOP وتنفذ برامج الفورتران تبعا لتسلسل الجمل بها. ولكن تكمن صعوبتها في تحديد الخطأ عند حدوثه حيث من يستوجب عليك تتبع الكود من اوله مما يزيد الامر صعوبة.
-مثال على اللغة:
كود PHP:
program average
! Read in some numbers and take the average
! As written, if there are no data points, an average of zero is returned
! While this may not be desired behavior, it keeps this example simple
implicit none
real, dimension(:), allocatable :: points
integer :: number_of_points
real :: average_points=0., positive_average=0., negative_average=0.
write (*,*) "Input number of points to average:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "Enter the points to average:"
read (*,*) points
! Take the average by summing points and dividing by number_of_points
if (number_of_points > 0) average_points = sum(points) / number_of_points
! Now form average over positive and negative points only
if (count(points > 0.) > 0) then
positive_average = sum(points, points > 0.) / count(points > 0.)
end if
if (count(points < 0.) > 0) then
negative_average = sum(points, points < 0.) / count(points < 0.)
end if
deallocate (points)
! Print result to terminal
write (*,'(a,g12.4)') 'Average = ', average_points
write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
write (*,'(a,g12.4)') 'Average of negative points = ', negative_average
end program average
ليسبLisp
ليسب (بالإنجليزية: LISP أو Lisp) لغة تعد إحدى لغات برمجة الكمبيوتر ذات التاريخ العريق، فقد تم وضع مواصفاتها عام 1958 وبذلك تحل بعد فورتران Fortran التي طورت قبلها بسنة، كثاني لغة عالية المستوى High-level Programming Language.
وضعت ليسب كلغة ترميز رياضية عملية وفق تعريف تفاضل لامبدا وتكاملها لألونزو تشرش Alonzo Church's Lambda Calculus، لكنه سرعان ما فضل استخدامها في أبحاث الذكاء الاصطناعي Artificial Intelligence، وبتصدرها كإحدى أقدم اللغات، قدمت ليسب مبادئ عديدة في علوم الحاسب Computer Science كبنى البيانات الشجرية Tree Data Structures والبرمجة كائنية التوجه Object-oriented Programming.
تشير ليسب إلى المصطلح LISt Processing language، القوائم المتصلة (بالإنجليزية: Linked Lists )إحدى بنى البيانات الأساسية للغة، بل إن كود المصدر للغة مكون من قوائم، وكنتيجة لذلك، تعامل برامج ليسب كود المصدر كبنية بيانات Data Structure ما يعطي شأنا لنظام الماكرو Macro الذي يسمح للمبرمجين بإنشاء صيغ جديدة أو لغة مدمجة مختصة المجال في ليسب Domain-specific Programming Language.
التبادل بين الكود والبيانات يعطي للغة ليسب صيغة تعرف فورية Instantly Recognizable Syntax، فبرامج ليسب مكتوبة بشكل التعبير الرمزي S-expression (ترمز S إلى Symbol) أو كقوائم محاطة بأقواس، فعند استدعاء دالة Function "f" لها الوسائط Arguments x وy وz، تكتب تلك الدالة كالتالي:
كود PHP:
(f x y z)
--تاريخ ليسب:
قام باختراع ليسب الأمريكي جون مككارثي John McCarthy عام 1958 في معهد ماساتشوستس للتقنية Massachusetts Institute of Technology MIT. مككارثي نشر تصميمه على الورق في مجلة Communications of the ACM بعنوان "الدوال المتعددة للتعابير الرمزية وحسابها بالآلة "الجزء الأول" Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I (علما أنه لم ينشر الجزء الثاني مطلقا)، أظهر أنه بواسطة بعض المعاملات البسيطة Simple Operators وإجراء ترميز للدوال Notation for Functions، يمكن بناء لغة تطابق فكرة الشمولية لتورنغ Turing-complete لكن من أجل الخوارزميات.
أول من قام بتنفيذ هذا التصميم كان ستيف رسل Steve Russell على جهاز IBM 704، بينما ظهر أول مترجم Compiler ليسب كامل كان على يدي تيم هارت Tim Hart ومايك ليفن Mike Levin في معهد MIT عام 1962، اللغة التي قاما ببنائها أقرب للغة المنتشرة حاليا من التي صممها مككارثي.
--بعض إصدارات ليسب:
-LISP 1.5.
-Standard LISP.
-Common LISP: إحدى الإصدارات الأكثر انتشارا.
-Scheme: إحدى الإصدارات الأكثر انتشارا، من تطوير غاي إل. ستيل وجيرالد جاي سسمان.
-Arc.
-Clojure.
-Autolisp: إصدارة ليسب المستخدمة في برنامج AutoCAD.
--أنواع البيانات في ليسب:
تعد لغة ليسب لغة تعبيرية التوجه Expression-oriented Language. وبخلاف أغلب اللغات، لا فارق بين التعبيرات Expressions والجمل Statements، فالكود يكتب جميعه كتعبيرات.
لعل ما يميز صيغة كود ليسب الأقواس المستخدمة في الإحاطة بين التعبيرات، وقد سبق ذكر المصطلح S-expression الذي يعطي لصيغة ليسب استخدام الرموز.
قائمة ليسب LISP List تكتب بين قوسين بداخلهما تسرد العناصر مفصولة بمسافة بيضاء، مثلا:
كود PHP:
(1 2 foo)
هذه قائمة بها عناصر تسمى ذرات Atoms، وهي العددين 1 و2 وfoo، العنصر foo نوع من البيانات في ليسب يدعى "رمز Symbol"، يتم التعرف على نوع العنصر دون الحاجة للإعلان عنه. القائمة الخالية () تعتبر ذرة خاصة nil حيث يمكن اعتبارها ذرة إضافة لكونها قائمة.
التعبيرات في ليسب تكتب كقوائم باستخدام صيغة الرموز أولا Prefix Notation، العنصر الأول هو اسم النموذج Form (مثلا: دالة Function، معامل حسابي Operator، ماكرو Macro، أو معامل خاص Special Operator وسيأتي شرحه)، بينما بقية العناصر تعد وسائط Arguments. على سبيل المثال، الدالة list تعيد وسائطها كقائمة، والتعبير التالي:
كود PHP:
(list '1 '2 foo)
يمثل هذه القائمة (1 2 foo). علامات التنصيص التي تسبق الوسائط تعد إحدى المعاملات الخاصة Special Operators، تمنع علامات التنصيص الوسائط من إجراء الحساب عليها (ليس ذلك ضروريا مع الأعداد طالما أن العدد 1 هو 1 على سبيل المثال)، بينما الوسائط التي تخلو من تلك المعاملات فيتم تنفيذها بشكل دوري Recursively قبل الانتهاء من التعبير، المثال التالي:
كود PHP:
(list 1 2 (list 3 4))
يمثل هذه القائمة (1 2 (3 4))، لاحظ أن الوسيط الثالث هو قائمة، فالقوائم يمكن أن تتداخل كما سبق ذكره.
وبالمثل تعامل المعاملات الحسابية، ففي التعبير التالي:
كود PHP:
(+ 1 2 3 4)
سيتم حساب القائمة وإعادة الناتج 10. يمكن توضيح المعادلة نفسها بصيغة "الرموز بالداخل Infix Notation" فتكون "1+2+3+4". المعاملات الحسابية في ليسب من نوع n-ary أي قابلة لاستقبال أي عدد n من الوسائط.
-الذرات Atoms:
في تصميم ليسب الأصلي، كان هناك نوعان أساسيان فقط من أنواع البيانات: الذرات Atoms والقوائم Lists. كانت القائمة سلسلة من العناصر، حيث يعتبر كل عنصر ذرة أو قائمة أخرى متداخلة، والذرة قد تكون عددا Number أو رمزا Symbol، أما الرمز فقد كان عنصرا مميزا مكونا من سلسلة من الأحرف والأرقام، وكان يستخدم كاسم متغير أو عنصر بيانات في معالجة الرموز، على سبيل المثال، القائمة (FOO (BAR 1) 2) تحتوي على ثلاث عناصر، الرمز FOO، القائمة (BAR 1) والعدد 2.
الفارق الجوهري بين الذرة والقائمة كان في ثبات الذرة وتميزها، بينما كانت القائمة عنصرا منفصلا يمكن لها أن تتغير باستقلال عن القوائم الأخرى ويمكن لها أن تتميز عن القوائم الأخرى بواسطة معاملات المقارنة.
-الكونسس (الخلايا) والقوائم Conses and Lists:
القائمة في ليسب تكون فردية الارتباط، كل خلية فيها تدعى كونس أو زوج Pair كما في صيغة سكيم Scheme، وتتكون من مؤشرين، car وcdr ويماثلان حقلي data وnext المعروفان في موضوع القوائم المتصلة Linked List.
من بين البنى المتعددة للبيانات التي يمكن إنشاؤها بواسطة الخلايا هناك القائمة التامة Proper List، هذه القائمة قد تكون قائمة خالية (مجازا، تحتوي الرمز الخاص nil)، أو قد تكون خلية يؤشر الجزء car إلى وحدة بيانات (وقد تكون بنية أخرى كأن تكون قائمة)، أما الجزء cdr يؤشر إلى قائمة تامة أخرى.
فيما لو وجدت خلية معطاة بمقدمة قائمة متصلة، فالجزء car بها يحدد العنصر الأول من القائمة، والجزء cdr يؤشر إلى باقي القائمة، لهذا فإن دوال car وcdr تسمى أيضا first وrest عند الحديث عن خلايا في بنية القوائم المتصلة (بدلا من البنى الأخرى كالشجرة tree مثلا). إذا القائمة في ليسب لا تعتبر وحدة أساس، كحال أي نسخة Instance من صنف Class في لغة كجافا أو سي++، المتغير الذي يشير إلى قائمة معطاة هو ببساطة مؤشر إلى الخلية الأولى لتلك القائمة.
ولأن استخدام الخلايا والقوائم شائع بكثرة في أنظمة ليسب، فهناك اعتقاد خاطئ شائع بأنها البنية الوحيدة للبيانات في ليسب، لكن بالواقع، هناك بنى أخرى أبسط تكوينا كالمتجهات Vectors (المصفوفات Arrays)، الجداول المتشابكة Hash Tables، البنى Structures وهكذا.
--مثال: (اللغة المكتوبة هي Common Lisb)
كود PHP:
(print "Hello world")
سي C
سي هي لغة برمجة، مقننة وعالمية، صممها وطوّرها في أوائل السبعينيات كن تومسون، براين كرنيغان، ودينيس رتشي. و قد صممت في الأصل لتستعمل في تطوير والعمل تحت نظام التشغيل يونكس، ثم لقيت انتشارا واسعا منذ ذلك الحين وتواصل إلى اليوم ويظهر ذلك من خلال شعبيته لدى أغلب مبرمجي الحاسوب ومن خلال استعمالاته العديدة والمتنوعة. و لغة السي هي لغة بنيت عليها عديد من اللغات الحديثة مثل ال سي بلس بلس والجافا.
--تاريخها:
تم تصميم السي في مختبرات بيل ما بين 1969 و 1972، وقد تم تسميته بالسي لأن جزأ كبيرا منه قد اقتبس عن لغة البي (B) و عندما تطورت السي إلى درجة أصبحت فيها بالقوة الكافية لتحويل نواة يونكس من الأسمبلي إلى السي
وفي سنة 1978 قام كرنيغان (Brian Kernighan) ورتشي (Dennis Ritchie) بنشر الكتاب المشهور The C Programming Language وذلك لتحديد خصائص اللغة, ويعرف هذا الكتاب في الأوساط المختصة ب K&R. إلا أن تقنين اللغة وتبنيها بصفة رسمية من طرف الANSI والISO تم في الثمانينات وكنتيجة لذلك ظهرت الطبعة الثانية للكتاب بعنوان The C Programming Language, Second Edition, أو K&R2 وهو المرجع الرئسئ للغة إلى حد الآن ISBN 0-13-110362-8. و بتقنين اللغة تمت إضافة أجزاء وتنقيح أخرى لتفادي السلبيات التي ظهرت في السابق ولتهيئة أداة أفضل وأقوى بالنسبة للمبرمج
و لولا ظهور لغة السي وتجربتها التي فاقت الثلاثين سنة لما كان ممكنا ظهور اللغات الحديثة والشيئية مثل السي بلس بلس أو على الأقل لما أصبحت كما تعرف عليه اليوم أسس تطويرها كل من شركة مايكروسوفت وشركة اي بي ام معاً ولذالت الاساسيات العامه لأسلوب كتابتها يستخدم للآن وفي العديد من اللغات المتطورة والمنشأة من خلالها حتي اخر لغات السي وهي لغة السي شارب والتي تعتبر احدث التطويرات للغة السي ويوجد اصدارات عديده منها بدأ من سنة 2001 حتي اصدار 2010.
--مثال:
كود PHP:
#include <stdio.h>
void main()
{
printf("Hello, world!\n");
return 0;
}
سي++ ++c
سي++ (تنطق: سي بلس بلس) (بالإنجليزية: ++C) هي لغة برمجة للاستخدامات العامة، تعتبر لغة السي++ لغة برمجة كائنية. والتي يعتبرها الكثيرون اللغة الأفضل لتصميم التطبيقات ذات الواجهة الكبيرة وللتعامل مع البنية الصلبة للحاسب. ولغة السي بلس بلس ++C من لغات البرمجة العالية المستوى وفي نفس الوقت قريبة من لغة التجميع ذات المستوى المحدود، كما أنها تعد لغة برمجة إجرائية (يمكن كتابة برنامج يحتوي على إجراءات وتوابع فقط) كما تعد لغة غرضية التوجه (البرنامج المكتوب عبارة عن أصناف وتستخدم الخواص المتاحة من كبسلة وتعددية الأشكال والوراثة والتركيب).
--تاريخها:
طوّر بيارن ستروستروب (Bjarne Stroustrup) خلال عمله في مختبرات بيل لغة سي++ في الثمانينات كتحسين للغة سي. تشمل سي++ جميع مزايا السي بالإضافة إلى مزايا البرمجة الكائنية. تسهّل لغة سي++ الأسلوب المُهيكل والمنهجي لعملية تصميم البرامج، وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
كما هو الحال مع لغة السي، فإن سي++ لغة متعددة الاستخدامات، إلا أنها مناسبة لبرامج أنظمة التشغيل. وتكتب معظم أجزاء أنظمة التشغيل وبرامج مساعدة أنظمة التشغيل باستخدام سي++ ومنها نظام جنو/لينكس.
و يتجنب الكثير من المبرمجين لغتي سي وسي++ نظراً لشهرتهما كلغات برمجة معقدة. وقد أدى ذلك إلى استخدام الكثيرين للغات مثل فيجوال بيسك ودلفي ثم جافا وسي شارب. الأخيرتين هما مجرد تسهيل (وليس تطوير) للغة سي++، وبدا في وقت معين أن لغات مثل جافا سوف تستولي على سوق البرمجيات التجارية من سي++ مع هجرة عدد كبير من مبرمجي السي++ إلى جافا وسي شارب، إلا أنه سرعان ما أدرك المبرمجون أن السي++ هي السبيل الوحيد لإنتاج برامج تجارية قوية وسريعة وتؤدي المطلوب منها بكفاءة وبأقل عدد من الأخطاء.
--بين السي والسي++:
وفقاً لمواصفات سي++، فإنها تدعم لغة سي بشكل كامل (دعم رجعي). وعملياً يمكن لمعظم برامج السي أن تترجم بواسطة مترجمات سي++ ولهذا تسمى هذه المترجمات بمترجمات سي/سي++. إلا أن الأمر لا يخلو من بعض المشاكل غير المتوقعة، مثلاً قد يحدث أن تسمى متغيراً باسم new وهى كلمة محجوزه في سي++ وليست محجوزة في سي.
--الجديد في سي++:
الإضافة الأهم التي أتت بها السي++ عن السي هي البرمجة عن طريق الكائنات. حيث تعتمد السي على البرمجة الإجرائية والتي كانت كافية في وقتها. إلا أن ظهور أنظمة التشغيل ذات الواجهة الرسومية نقل العديد من المبرمجين إلى البرمجة بالكائنات. بالرغم من ذلك فإن السي ما زالت تُستخدم في برمجة الويندوز واليونكس. أبرز هذه الإضافات هي:
-الصفوف والكائنات.
-التحميل الزائد للعمليات: ويعتبرها الكثير أهم إضافة في سي++، لأنها جعلت من سي++ لغة قابلة للتوسع. هناك أكثر من 30 عملية يمكن التحميل الزائد عليها.
-القوالب.
-التعددية الشكلية.
-الوراثة: وهي إمكانية تطوير صنف جديد يرث جميع خصائص صنف آخر. في هذه الحالة يسمى الصنف بالصنف المشتق.
-استخدام الرمز // لتضمين الملاحظات بطول سطر واحد والتي يتم تجاهلها من قِبل المترجم عند القيام بعملية الترجمة.
--سبب صعوبتها:
ربما تعود أسباب صعوبة لغتي السي والسي++ لأسباب تاريخية أكثر منها واقعية وهو ما يردده المبرمجين المعتادين على استخدام السي++ وهذا يعود بنا إلى أصل لغة السي وهي لغة السي بي ال CPL والتي اشتهرت بشدة تعقيدها مما تسبب في ابتعاد المبرمجين عنها فتم تطويرها وتبسيطها إلى لغة سميت BCPL ولم تلقى الكثير من النجاح ولكنها تطورت إلى لغة البى B وعندما أرادو تطويرها سموها سي(وهذا هو أصل تسمية السي)، وبالطبع ورثت السي++ خصائص لغة سي. إلا أنه لا يمكن إنكار أن مفاهيم مثل المؤشرات pointers، والإشارات هي مفاهيم مربكة للمبرمج المبتدئ، بالإضافة إلى مفاهيم التوارث Inheritance وتعدد الشكل polymorphism والقوالب Templates التي تربك حتى المبرمجين المحترفين. وكذلك لا تقدم سي++ الحماية الكافية للمبرمج كي لا يقع في أخطاء التشغيل التي قد تتسبب في توقف الحاسوب عن العمل. كيف؟
في لغة الفيجوال بيسك مثلا عندما تحدد مصفوفة بحجم 20 عنصرا مثلا كالأتي :
كود PHP:
Dim A(20) As Integer
ثم تحاول معالجة العنصر رقم 21 مثلا فسوف يبادرك محرك الفيجوال بيسك برسالة خطأ ويتوقف برنامجك. أما في السي++ فاذا عرفت مصفوفة بنفس الحجم : int a[20] // integer a from 0-19 not from 0-20 و عندما تحاول الوصول إلى العنصر رقم واحد وعشرين مثلا تكون قد تعديت حدود المصفوفة إلى جزء من الذاكرة ربما تكون مخصصة لبرنامج أخر أو معلومات حساسة لنظام التشغيل وهذا يؤدي إلى إعطائك قيم خاطئة. و المشكلة الأخرى التي تربك الكثيرين أن أول عنصر بالمصفوفة هو 0 وليس 1 وحجمها 20 أى أن العنصر الأخير هو 19 وليس 20 مثل البيسك.
--مثال اللغة:
كود PHP:
# include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
بيسيكBasic
لغة البيسيك (BASIC) هي لغة متعددة الأغراض للمبرمجين المبتدئين واسمها اختصار لـ "Beginners All Purposes Symbolic Instruction Code". تم تطويرها سنة 1964 م وكانت تستند بشكل كبير على لغة الفورتران.
أكثر ما تميزت به لغة البيسيك هو سهولتها ويدين معظم المبرمجين ببداياتهم إلى لغة بيسيك. اشتهرت بيسك بأنها لغة مُفسرَة وليست مترجمة ويعتقد الكثيرون أنها بدأت مفسرة ولم تتم كتابة مترجمات لها إلا حديثا وذلك خطأ شائع لأن لغة بيسيك بدأت أساسا كلغة مترجمة.
و قد تطورت لغة بيسيك كثيرا منذ بدايتها إلى اليوم وبعد أن كانت لغة للمبتدئين وكتابة البرامج القصيرة أصبحت لغة احترافية يمكن استخدامها لكتابة برامج تجارية معقدة وعالية المستوى.
و يعود السبب الأساسى لانتشار بيسيك الكبير إلى اعتمادها كلغة الحواسيب المنزلية التي ازدهرت في الثمانينات. أما سبب تطورها واعتمادها كلغة احترافية فيعود بالأساس إلى مايكروسوفت ومترجمها كويك بيسيك QuickBASIC الذى أدخل البيسيك في مرحلة جديدة. وتطورت البيسيك بعد ذلك وكانت حجر الزاوية لمترجم Visual Basic الذى يعد الآن من أكثر الطرق شعبية لكتابة برامج ويندوز.(الا أنه ليس أفضلها).
--مثال:
كود PHP:
10 PRINT "Hello World"
20 END
فيجوال بيسكVisul Basic
فيجوال بيسك (بالإنجليزية: Visual BASIC) (ترجمتها الأساسيات المرئية).هي بيئة تطوير ولغة برمجة من مايكروسوفت تستند إلى لغة البيسك الشهيرة. وهي تصنف ضمن لغات البرمجة الشيئية. منذ أن بدأت مايكروسوفت في اصدار الفيجوال بيسك وهي تلاقى نجاحا باهرا وشعبية لا بأس بها بين المبرمجين نظرا لسهولتها الشديدة في مقابل التعقيد الشديد الذي يواجهه أى مبرمج يسعى لبرمجة ويندوز باستخدام السي أو السي++. عموما تناسب الفيجوال بيسك تطبيقات قواعد بيانات والتطبيقات المخصصة للشركات الصغيرة وبرامج الحسابات وهي مريحة وسهلة وتؤدى الغرض بالإضافة إلى أنها تسمح للمبرمج بالتركيز على حل المشكلة فغالباً ما لا يواجه صعوبات فنية أثناء كتابة برنامج بالفيجوال بيسك. و لكن بقى أن نذكر أن برامج الفيجوال بيسك لا تتم ترجمتها كاملة إلى لغة الآلة مثل السي++ أو الدلفي وإنما تترجم إلى كود وسطى يتصل مع مكتبة ربط تسمى ب"Run Time library" واسمها MSVBM??.dll مع استبدال علامات الاستفهام برقم الإصدار.
لغة البرمجة فيجوال بيسك هي لغة ذات تصميم مرئي واجهة رسومية بعكس بعض اللغات مثل الاسمبلي ذات الشاشة السوداء. حيث تحتوي هذه اللغة على العديد من الاوامر بداخلها ولغة سهلة التطبيق تم تطوير هذه النسخة من البرنامج عن النسخة القديمة basic والتي تعمل تحت بيئة dos إلى هذه النسخة التي تعمل تحت بيئة وندوز. تعتمد اللغة في تطوير تطبيقاتها على الكائنات فهي تشبه العديد من لغات البرمجة الحديثة من حيث اعتمادها على الديناميكية والأحداث. تعني الديناميكية في هذه اللغة القدرة على استدعاء اي اقتران أو اجراء اعتمادا على الحدث. الحدث هو اي عملية يقوم بها مستخدم التطبيق على التطبيق مثل الضغط بزر الفارة أو الضغط على أحد ازرار لوحة المفاتيح أو حتى تحميل نموذج.فيجوال بيسك أداة قوية وفعالة لتطوير تطبيقات متوافقة مع بيئة ويندوز. توفر لك بيئة تطوير متكاملة سهلة الاستخدام لإنشاء الحلول سواءً أكانت شخصية أم تجارية في وقت قياسي عن طريق فلسفة البرمجة المرئية. حيث تصمم الشاشات ونوافذ برنامجك عن طريق نقرات وتحريكات خفيفة بالفأرة كأنك ترسم مربعات ودوائر باستخدام برامج الرسم وغيرها.
--تاريخ الفيجوال بيسك:أنتجت شركة مايكروسوفت أول إصدار من لغة البيسك عام 1970م، وسمي Basic والاسم يعتبر اختصاراً لكلمة لغة البرمجة العامة التسلسلية للمبتدئين (Beginner’s All-Purpose Symbolic Instruction Code)، وتوالت الإصدارات فظهر الإصدارات GW-BASIC, QuickBasic and QBasic، وكلهم يعملون في بيئة Dos، ومع انتشار بيئة ويندوز ظهرت فيجوال بيسك التي احتوت على كثير من أوامر QBASIC وأضيفت العديد من الوظائف التي جعلت من البرمجة بفيجوال بيسك يسرة وسهلة. هناك الآلاف من المواقع التعليمية للفيجوال بيسك ومنها Visual Basic Tutorials
في عام 2000 قامت مايكروسوفت بإنتاج النسخة المطورة VISUAL BASIC.NET والتي تعتمد على البرمجة الشيئيةmezzo.
--مميزات الفيجوال بيسك:
-لغة سهلة وسريعة لإنشاء تطبيقات ويندوز.
-تدعم البرمجة الشيئية إلا أن ذلك ليس بشكل كامل.
-تجربة برامج الفيجوال بيسك سهلة وسريعة لاعتمادها على مكتبة الربط خلال وقت التشغيل.
-تعتبر لغة الفيجوال بيسك لغة كائنية المنحنى.
-سهلة التعلم والفهم.
-سهولة اكتشاف الأخطاء فيها.
-اعتماده على HMI وذلك مما جعله سهل الاستعمال والفهم.
-عند كتابة اوامر صحيحة يقوم بإعطائك أمثلة ليؤكد لك على صحة كتابة الكود.
--عيوب الفيجوال بيسك:
-عدم مجانية برامجها ،أي أنك تحتاج غالبا للدفع للحصول على ملفات مفتوحة المصدر.
-لا يتم ترجمتها بشكل كامل إلى لغة الآلة.
-لا تدعم كافة أشكال البرمجة الشيئية.
-المترجم نفسه به بعض الشوائب والتي تظهر في البرنامج المكتوب حتى في حالة خلو البرنامج المصدر من الأخطاء.
-عيوب البرنامج من إمكانية تجميل برنامج حيث يحتوي على مربعات وازارير بدائية ولكي تحصل على الشكل المطلوب لا بد من skin خارجي وادوات خارجية.
-تعتبر من أسوأ اللغات لمحدوديتها.
-السهولة فيها تأكل القوة - عكس نضيرتها الدلفي التي تأتي بسهولة أسهل من الفيجوال بيسك وقوة السي++.
--فيجوال بيسك ليس كما كان:
تتعتمد على اللغة القديمة BASIC، وقد تجنب تعلمها بسبب حدودها التي تقصر إمكانياتها كسائر لغات البرمجة. لكن مع الإصدارات الحديثة من Visual Basic فإن الأمر اختلف! فالآن أصبحت إمكانيات اللغة بلا حدود. وقابلية التطوير لا نهائية أي أنه أصبح ذو نهاية مفتوحة. فعن طريق الإضافات Add-Ins وأدوات التحكم الخارجية ActiveX Control ومكونات COM بصفة عامة، تستطيع إنجاز كل ما استطعت إنجازه باللغات المختلفة. فلإضافة مكون COM جديد لا يتطلب الأمر منك سوى تحديد اسم وملف المكون ومن ثم استخدامه مباشرة! حقيقة لقد أصبحت أكثر تطوراً.
--إصدارات فيجوال بيسك:
-الإصدار الأول من Visual Basic كان محدود للغاية. ولم يكن موجه لتطوير التطبيقات الحقيقة لبيئة Windows. مع انه كان سهل الاستخدام ذو واجهة رسومية ولغة برمجة مرئية إلى انه كان يعتبر كلعبة مسلية للمبرمجين.
-فيجوال بيسك 2:
الإصدار الثاني من Visual Basic لم يظهر أي جديد باستثناء إضافة القليل من الخصائص ودعم أفضل لبيئة التطوير المتكاملة IDE. لكن في تلك الفترة، ظهر مولود جديد وهو النظام Access 1.0 لقواعد البيانات العلائقية وكان كل تركيز شركة Microsoft هو الدمج بينهما.
-فيجوال بيسك 3:
يعتبر الإصدار الثالث هو بداية طريق النجومية أو الشهرة لـ Visual Basic! حيث قدم دعم لقواعد البيانات وأصبح ذو نهاية مفتوحة بفضل الإضافات التي كنت تستطيع دمجها مثل VBX والتي تطورت فيما بعد إلى OCX. ظهرت الكثير من التحسينات في بيئة التطوير المتكاملة IDE وهاجر مئات إن لم يكن آلاف المبرمجين إلى Visual Basic. وبدأت تلك اللغة كمنافس ضعيف لتطوير البرامج الحقيقية أو التجارية لأنه كان ما زال ينقصها المزيد.
-فيجوال بيسك 4:
كان الهدف الأساسي من الإصدار الرابع هو مرحلة انتقالية إلى Windows 95 أو إن صح التعبير، القابلية لتطوير تطبيقات من نوع 32 bit. وكان أول إصدار من إصدارات Visual Basic تولد شيفرة للعمل تحت معالجات من نوع 32Bit. ليس هذا فقط! بل أضاف الإصدار الرابع إمكانية لإنشاء مكتبات من نوع ActiveX DLL والتي زادت في شهرة Visual Basic حتى أصبحت اللغة معترفة كلغة برمجة لإنشاء تطبيقات حقيقية حيث أضاف الميزة التي انتظرها المبرمجون وهي البرمجة الكائنية التوجه OOP لكنها كانت محدودة بسبب استطاعتك بإنشاء الفئات Class فقط دون أي إمكانية إضافية كتعدد الواجهات Polymorphism أو الوراثة Inheritance.
-فيجوال بيسك 5:
الإصدار الخامس كان بمثابة الإعلان الرسمي في أن لغة Visual Basic هي لغة برمجة لتطوير التطبيقات الحقيقية والتجارية. حيث أضاف العديد من أنواع المشاريع كـ ActiveX Controls و ActiveX Documents وغيرها.. وإضافة مزايا عديدة للتحكم بشيفرة ملف الـ EXE الذي يخيرك من تحويل الشيفرة المصدرية إلى P-Code أو Native-Code. بالإضافة إلى التحسن الحقيقي لبيئة التطوير المتكاملة IDE والدعم الإضافي لقواعد البيانات.
-فيجوال بيسك 6:
الإصدار السادس لا يختلف عن الإصدار الخامس كثيرا لكن هناك العديد من التحسينات وعلاج للأخطاء التي كانت موجودة في الإصدار الخامس. من أهم الإضافات في الإصدار السادس هي الزيادة في أدوات قواعد البيانات والمبنية على ADO. كذلك تحسن واضح في أدوات التحكم. وهناك العديد من التطوير في لغة البرمجة كدعم أنواع البيانات المعرفة من قبل المستخدم UDT والزيادة في الدوال Functions. وإضافة المزيد من الويزارد Wizards ودعم لتطبيقات الإنترنت Internet. والكثير والكثير من التحسينات.
-فيجوال بيسك.نت:
تم إنتاج هذا الإصدار مع تغيير جذري عما سبقه من الإصدارات ولقد صدر في ظل هذه التقنية أربعة إصدارات إلى الآن
-فيجوال بيسك.نت 2003
-فيجوال بيسك.نت 2005
-فيجوال بيسك.نت 2008
-فيجوال بيسك.نت 2010
--حلول الانترنت:
فيجوال بيسك يوفر لك العديد من الحلول والخاصة بالإنترنت. فيمكنك من إنشاء أدوات تحكم ActiveX Controls يتم تنفيذها في صفحة الويب. أو تصميم تطبيقات متقدمة كـ ActiveX Documents للعمل على متصفح Internet Explorer. المزيد أيضا، Visual Basic يوفر لك بيئة تطوير خاصة لتطوير تطبيقات الإنترنت سواءً كانت للعميل Client كتطوير تطبيقات من نوع DHTML Applications أو للخادم Server كتطوير تطبيقات ASP Applications.
المرجع / مركز بوابة العرب التعليمي
http://edu.arabsgate.com/showthread.php?t=584290
من الممكن تعريف البرمجة بأنها عملية كتابة تعليمات وأوامر لجهاز الحاسوب أو أي جهاز آخر، لتوجيهه وإعلامه بكيفية التعامل مع البيانات أو كيفية تنفيذ سلسلة من الأعمال المطلوبة.و تتبع عملية البرمجة قواعد خاصة باللغة التي اختارها المبرمج.
و كل لغة لها خصائصها التي تميزها عن الأخرى وتجعلها مناسبة بدرجات متفاوتة لكل نوع من أنواع البرامج والمهمة المطلوبة من هذا البرنامج.
كما أن للغات البرمجة أيضاً خصائص مشتركة وحدود مشتركة بحكم أن كل هذه اللغات صممت للتعامل مع الحاسوب.
وتتطور لغات البرمجة (السوفتوير Software) بتطور الحاسوب (الهاردوير Hardware). فعندما ابتكر الحاسوب الإلكتروني في الأربعينيات والخمسينيات من القرن الماضي (بعد أجهزة الحساب الكهربائية في العشرينات)- وكان الكمبيوتر يعمل بأعداد كبيرة من الصمامات الإلكترونية - كانت لغة البرمجة معقدة هي الأخرى، حتي أنها كانت عبارة عن سلسلة من الأعداد لا يدخلها إلا الصفر 0 والواحد 1، وكان ذلك صعبا على المبرمجين. ولكن بابتكار الترانزيستور صغر حجم الحاسوب كثيرا وزادت إمكانياته، واستطاع المختصون في نفس الوقت أن يبتكروا لغات أسهل للاستخدام، وأصبحت لغات البرمجة مفهومة إلى حد بعيد للمختصين. ولا يزال التطوير والتسهيل دائرا.
تعريف لغات البرمجة
لغة البرمجة هي عبارة عن مجموعة من الأوامر، تكتب وفق مجموعة من القواعد تحدد بواسطة لغة البرمجة، ومن ثم تمر هذه الأوامر بعدة مراحل إلى ان تنفذ على جهاز الحاسوب.
تقسم لغات البرمجة بناء على قربها من اللغات الإنسانية إلى لغة عالية المستوى (قريبة من اللغة التي يفهمها البشر) مثل سي C، جافا Java، ولغة منخفضة المستوى (كلغة الأسيمبلي Assembly وهي قريبة من لغة الآلة).
وتقسم أحيانا بناء على الأغراض المرغوبة من اللغة المستخدمة. هناك لغات صُممت لكي تعمل على أجهزة معينة، مثل ان تقوم شركة ما بإنتاج جهاز حاسوب أو معالج مركزي (CPU)، وتوفر له دليل استعمال يحتوي على الأوامر التي تنفذ عليه، وهناك لغات أخرى أكثر عمومية تعمل بشكل مستقل عن نوع الآلة، أي انها تعمل ضمن آلة افتراضية Virtual Machine، مثل لغة الجافا Java.
خصائص لغات البرمجة
لغة البرمجة هي بالأساس طريقة تسهل للمبرمج كتابة برنامجه في هيئة تعليمات وأوامر يفهما الحاسوب بغرض تنفيذ العمل المطلوب. ومن المعروف ان الحاسوب يحول اللغة المكتوبة بها البرمجة إلى سلسلة من 0 و 1، ويبدأ على أساسها عمله. ولكتابة الأوامر توفر لغة البرمجة المختارة مجموعة من اللبنات الأساسية للاستناد عليها خلال عملية تكوين البرنامج ومجموعة من القواعد التي تمكن من التعامل مع معلومات وتنظيمها بغرض أداء العمل المطلوب.
تتمثل هذه الأسس والقواعد بصفة عامة في:
1-المعلومات وتخزينها
تم تخزين المعلومات في الأجهزة الرقمية الحالية في هيئة أرقام طبقا لنظام العد الثنائي (أي المعتمد على 0 و 1). و بصفة عامة فان المعالجات الحديثة لا تقوم بالتعامل مع البت الواحد بل مع مجموعات من البتات يمكن أن تضم :
-8 بت = 1 بايت وهي أصغر وحدة تخزين معلومات في الحواسيب الحديثة.
-16, 32, 64, 128، 256 ,أو 512 بت.
و باستعمال 8 بت مثلا, يمكن تشكيل 256 قيمة مختلفة, ويمكن أن تكون هذه القيمة بين 0 و 255 و تمثل وظيفة لغة البرمجة استغلال وحدة أو مجموعة من الوحدات (رموزا) لتخزين معلومات من الحياة الواقعية مثل الأسماء أو القياسات أو أرقام الحسابات البنكية.
2-الأوامر وتنظيم سيرها
يقوم المبرمج باجراء عمليات على وحدات المعلومات مثل تخزينها وقراءتها ومقارنتها، كما يمكن إجراء عمليات حسابية عليها أيضا, وتتبع العمليات القواعد المحددة للغة. و للغة البرمجة دور آخر وهو التحكم في تنظيم إجراء العمليات، حيث توجه تنفيذ خطواتها بنفس تتابع كتابتها من طرف المبرمج،
و تمكن اللغة أيضاً من إجراء عملية اختيار وتفرع، وذلك بإدخال شرط منطقي يقوم الحاسوب على أساسه باختيار اتجاه الاستمرار في أداء العمل : فلنفترض أن البرنامج الذي يريد المبرمج صنعه يقوم بقسمة عددين يختارهما المستخدم، وإظهار النتيجة على الشاشة, ومن المعروف أن القسمة على صفر لا تجوز، وبناء علي ذلك فلا بد أن يحدد المبرمج في برنامجه هذا الاختيار : فاذا كان القاسم مخالفا للصفر، فإن البرنامج يسيـّر الحاسوب فيقوم بإجراء العملية ويعطي النتيجة. أما إذا كان القاسم صفراً فان البرنامج لا يقوم باجراء العملية وإنما ينبه إلى أن المستخدم حاول القسمة على صفر. و يمكن تنظيم الأوامر بصفة أخرى، حيث يقع تنفيذ أمر أو مجموعة من الأوامر بصفة متكررة حلقية (Loop)، و يمكن تقسيم الأوامر أيضاً إلى وحدات فرعية تقوم كل وحدة بانجاز عمل محدد, والهدف هو تقسيم العمل إلى أجزاء يسهل العمل عليها كل على حدة في هيئة دورات حلقية (Loops).
3-التصميم الخاص
تتمتع كل لغة بتصميم خاص من حيث التعامل مع المعطيات، ومن حيث الطرق والتسهيلات التي توفرها اللغة للتعامل مع مشكلة معينة.
يمكن تصنيف لغات البرمجة من حيث طريقة بناء البرامج إلى لغات إجرائية (Basic, Fortran) وهي لغات تسلسلية، أساس بناؤها هو الإجراءات المطلوب تطبيقها على المعطيات والمتحولات. ولغات شيئية (C, Java, Delphi) وهي لاتسلسلية، وتقوم على أساس العناصر والمتحولات المستخدمة ضمن البرنامج المطلوب تحويلها، من خلال تطبيق مجموعة معينة من الإجراءات عليها.
لغات متدنية المستوى(قريبة من الحاسوب)
لغة الآلةMachine Language
لغة الآلة (بالإنجليزية: Machine Language) هي اللغة البرمجية الوحيدة التي يفهمها وينفدها الحاسوب مباشرة.وهي من لغات البرمجة المتدنية المستوى.
وجميع لغات البرمجة عالية المستوى مثل ++ Cأو فيجول بيسك الخ عند تنفيد البرنامج المكتوب بها تحول إلى لغة الآلة حتى يتم تنفيدها.
تعليمات اللغة:
لكل نوع من أنواع المعالجات لغة آلة أو طاقم تعليمات خاصة به . ويتم كتابة تعليمات وإيعارات لغة الآلة على هيئة أرقام بنظام العدد الثننائي ليتم تنفيدها مباشرة ..أو بنظام العدد الثماني ثم تحول إلى النظام الثنائي لتنفذ.
توجد لكل عملية حسابية أو منطقية تكتب بلغة الآلة شفرة (code) خاص بها ..ويتم كتابة عناوين الذاكرة الحقيقية في البرامج المكتوبة بلغة الآلة .
أسمبلي Assembly
في علوم الحاسوب، لغة التجميع (بالإنكليزية: Assembly language) هي الصيغة السهلة القراءة للبشر المقابلة للغة الآلة التي تشكل الأوامر التي ينفذها حاسوب بتصميم ما. فلغة الآلة عبارة عن تتابع من البتات (bits) تمثل عملية حاسوبية أو أمر للحاسوب، تصبح أسهل للقراءة عندما تستبدل برموز تعبر عنها.
ولكل معالج لغة تجميع خاصة به كما أن له "لغة آلة Machine Language" خاصة به. وتحتاج لغة التجميع ما يسمى "المجمـِّع" (بالإنكليزية: Assembler) وهو الذي يقوم بتحويل لغة التجميع التي يستطيع البشر قراءتها والتعديل فيها إلى لغة الآلة التي يستطيع المعالج تنفيذها. وتستخدم هذه اللغة الآن من قبل البشر وذلك لبرمجة أجزاء من نظم التشغيل أو للتاكد من سرعة وكفاءة تنفيذ بعض البرامج التي يحتاج فيها الكفاءة كبرامج المحاكاة والألعاب.
و تتكون اسطر برامج التجميع من ثلاثة أجزاء:
-العلامة (Label) وهو ما يتم به الإشارة لسطر ما في سطور أخرى.
-الأمر (Instruction) وهو يكون مناظر في الغالب لأمر في المعالج وهو ما سيقوم المعالج بتنفيذه عند الوصول لهذا السطر أثناء تنفيذ البرنامج.
-المعامل (Operand) وهو المتغير الذي سيتم تطبيق الأمر عليه.
تنقسم الأوامر إلى أربعة حقول :
-الاسم
-المعامل
-العملية
-التعليق
أمثلة الأوامر:
كود PHP:
START: MOV CX,5 ;initialize counter
-في المثال حقل الاسم هو START:
-العملية والمعامل MOV CX,5
-التعليق ;initialize counter
اللغات عالية المستوى
فورترانFortran
فورتران (بالإنجليزية: Fortran) هي لغة برمجة و اختصار لكلمتين في الإنجليزية معناها ترجمة المعادلات (FORmula TRANslation)في عام 1954 خرج جون باكوس John Backus مع مجموعة من شركة IBM بلغة الفورتران وكانت أولي لغات البرمجة ذوات المستوى العالي وتستخدم أساسا في التحليلات العددية وفي الحوسبة العلمية.وتتميز هذه اللغة بالبساطة والإيجاز ولقد ظهرت العديد من صور تلك اللغة آخرها Fortran 2003. تحتوي آخر إصدارات للغة الفورتران علي مجموعة من الأوامر التي تفسر نفسها بنفسها مثل أقرأ READ وأكتب WRITE وإذهب إلي GO TO وتوقف STOP وتنفذ برامج الفورتران تبعا لتسلسل الجمل بها. ولكن تكمن صعوبتها في تحديد الخطأ عند حدوثه حيث من يستوجب عليك تتبع الكود من اوله مما يزيد الامر صعوبة.
-مثال على اللغة:
كود PHP:
program average
! Read in some numbers and take the average
! As written, if there are no data points, an average of zero is returned
! While this may not be desired behavior, it keeps this example simple
implicit none
real, dimension(:), allocatable :: points
integer :: number_of_points
real :: average_points=0., positive_average=0., negative_average=0.
write (*,*) "Input number of points to average:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "Enter the points to average:"
read (*,*) points
! Take the average by summing points and dividing by number_of_points
if (number_of_points > 0) average_points = sum(points) / number_of_points
! Now form average over positive and negative points only
if (count(points > 0.) > 0) then
positive_average = sum(points, points > 0.) / count(points > 0.)
end if
if (count(points < 0.) > 0) then
negative_average = sum(points, points < 0.) / count(points < 0.)
end if
deallocate (points)
! Print result to terminal
write (*,'(a,g12.4)') 'Average = ', average_points
write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
write (*,'(a,g12.4)') 'Average of negative points = ', negative_average
end program average
ليسبLisp
ليسب (بالإنجليزية: LISP أو Lisp) لغة تعد إحدى لغات برمجة الكمبيوتر ذات التاريخ العريق، فقد تم وضع مواصفاتها عام 1958 وبذلك تحل بعد فورتران Fortran التي طورت قبلها بسنة، كثاني لغة عالية المستوى High-level Programming Language.
وضعت ليسب كلغة ترميز رياضية عملية وفق تعريف تفاضل لامبدا وتكاملها لألونزو تشرش Alonzo Church's Lambda Calculus، لكنه سرعان ما فضل استخدامها في أبحاث الذكاء الاصطناعي Artificial Intelligence، وبتصدرها كإحدى أقدم اللغات، قدمت ليسب مبادئ عديدة في علوم الحاسب Computer Science كبنى البيانات الشجرية Tree Data Structures والبرمجة كائنية التوجه Object-oriented Programming.
تشير ليسب إلى المصطلح LISt Processing language، القوائم المتصلة (بالإنجليزية: Linked Lists )إحدى بنى البيانات الأساسية للغة، بل إن كود المصدر للغة مكون من قوائم، وكنتيجة لذلك، تعامل برامج ليسب كود المصدر كبنية بيانات Data Structure ما يعطي شأنا لنظام الماكرو Macro الذي يسمح للمبرمجين بإنشاء صيغ جديدة أو لغة مدمجة مختصة المجال في ليسب Domain-specific Programming Language.
التبادل بين الكود والبيانات يعطي للغة ليسب صيغة تعرف فورية Instantly Recognizable Syntax، فبرامج ليسب مكتوبة بشكل التعبير الرمزي S-expression (ترمز S إلى Symbol) أو كقوائم محاطة بأقواس، فعند استدعاء دالة Function "f" لها الوسائط Arguments x وy وz، تكتب تلك الدالة كالتالي:
كود PHP:
(f x y z)
--تاريخ ليسب:
قام باختراع ليسب الأمريكي جون مككارثي John McCarthy عام 1958 في معهد ماساتشوستس للتقنية Massachusetts Institute of Technology MIT. مككارثي نشر تصميمه على الورق في مجلة Communications of the ACM بعنوان "الدوال المتعددة للتعابير الرمزية وحسابها بالآلة "الجزء الأول" Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I (علما أنه لم ينشر الجزء الثاني مطلقا)، أظهر أنه بواسطة بعض المعاملات البسيطة Simple Operators وإجراء ترميز للدوال Notation for Functions، يمكن بناء لغة تطابق فكرة الشمولية لتورنغ Turing-complete لكن من أجل الخوارزميات.
أول من قام بتنفيذ هذا التصميم كان ستيف رسل Steve Russell على جهاز IBM 704، بينما ظهر أول مترجم Compiler ليسب كامل كان على يدي تيم هارت Tim Hart ومايك ليفن Mike Levin في معهد MIT عام 1962، اللغة التي قاما ببنائها أقرب للغة المنتشرة حاليا من التي صممها مككارثي.
--بعض إصدارات ليسب:
-LISP 1.5.
-Standard LISP.
-Common LISP: إحدى الإصدارات الأكثر انتشارا.
-Scheme: إحدى الإصدارات الأكثر انتشارا، من تطوير غاي إل. ستيل وجيرالد جاي سسمان.
-Arc.
-Clojure.
-Autolisp: إصدارة ليسب المستخدمة في برنامج AutoCAD.
--أنواع البيانات في ليسب:
تعد لغة ليسب لغة تعبيرية التوجه Expression-oriented Language. وبخلاف أغلب اللغات، لا فارق بين التعبيرات Expressions والجمل Statements، فالكود يكتب جميعه كتعبيرات.
لعل ما يميز صيغة كود ليسب الأقواس المستخدمة في الإحاطة بين التعبيرات، وقد سبق ذكر المصطلح S-expression الذي يعطي لصيغة ليسب استخدام الرموز.
قائمة ليسب LISP List تكتب بين قوسين بداخلهما تسرد العناصر مفصولة بمسافة بيضاء، مثلا:
كود PHP:
(1 2 foo)
هذه قائمة بها عناصر تسمى ذرات Atoms، وهي العددين 1 و2 وfoo، العنصر foo نوع من البيانات في ليسب يدعى "رمز Symbol"، يتم التعرف على نوع العنصر دون الحاجة للإعلان عنه. القائمة الخالية () تعتبر ذرة خاصة nil حيث يمكن اعتبارها ذرة إضافة لكونها قائمة.
التعبيرات في ليسب تكتب كقوائم باستخدام صيغة الرموز أولا Prefix Notation، العنصر الأول هو اسم النموذج Form (مثلا: دالة Function، معامل حسابي Operator، ماكرو Macro، أو معامل خاص Special Operator وسيأتي شرحه)، بينما بقية العناصر تعد وسائط Arguments. على سبيل المثال، الدالة list تعيد وسائطها كقائمة، والتعبير التالي:
كود PHP:
(list '1 '2 foo)
يمثل هذه القائمة (1 2 foo). علامات التنصيص التي تسبق الوسائط تعد إحدى المعاملات الخاصة Special Operators، تمنع علامات التنصيص الوسائط من إجراء الحساب عليها (ليس ذلك ضروريا مع الأعداد طالما أن العدد 1 هو 1 على سبيل المثال)، بينما الوسائط التي تخلو من تلك المعاملات فيتم تنفيذها بشكل دوري Recursively قبل الانتهاء من التعبير، المثال التالي:
كود PHP:
(list 1 2 (list 3 4))
يمثل هذه القائمة (1 2 (3 4))، لاحظ أن الوسيط الثالث هو قائمة، فالقوائم يمكن أن تتداخل كما سبق ذكره.
وبالمثل تعامل المعاملات الحسابية، ففي التعبير التالي:
كود PHP:
(+ 1 2 3 4)
سيتم حساب القائمة وإعادة الناتج 10. يمكن توضيح المعادلة نفسها بصيغة "الرموز بالداخل Infix Notation" فتكون "1+2+3+4". المعاملات الحسابية في ليسب من نوع n-ary أي قابلة لاستقبال أي عدد n من الوسائط.
-الذرات Atoms:
في تصميم ليسب الأصلي، كان هناك نوعان أساسيان فقط من أنواع البيانات: الذرات Atoms والقوائم Lists. كانت القائمة سلسلة من العناصر، حيث يعتبر كل عنصر ذرة أو قائمة أخرى متداخلة، والذرة قد تكون عددا Number أو رمزا Symbol، أما الرمز فقد كان عنصرا مميزا مكونا من سلسلة من الأحرف والأرقام، وكان يستخدم كاسم متغير أو عنصر بيانات في معالجة الرموز، على سبيل المثال، القائمة (FOO (BAR 1) 2) تحتوي على ثلاث عناصر، الرمز FOO، القائمة (BAR 1) والعدد 2.
الفارق الجوهري بين الذرة والقائمة كان في ثبات الذرة وتميزها، بينما كانت القائمة عنصرا منفصلا يمكن لها أن تتغير باستقلال عن القوائم الأخرى ويمكن لها أن تتميز عن القوائم الأخرى بواسطة معاملات المقارنة.
-الكونسس (الخلايا) والقوائم Conses and Lists:
القائمة في ليسب تكون فردية الارتباط، كل خلية فيها تدعى كونس أو زوج Pair كما في صيغة سكيم Scheme، وتتكون من مؤشرين، car وcdr ويماثلان حقلي data وnext المعروفان في موضوع القوائم المتصلة Linked List.
من بين البنى المتعددة للبيانات التي يمكن إنشاؤها بواسطة الخلايا هناك القائمة التامة Proper List، هذه القائمة قد تكون قائمة خالية (مجازا، تحتوي الرمز الخاص nil)، أو قد تكون خلية يؤشر الجزء car إلى وحدة بيانات (وقد تكون بنية أخرى كأن تكون قائمة)، أما الجزء cdr يؤشر إلى قائمة تامة أخرى.
فيما لو وجدت خلية معطاة بمقدمة قائمة متصلة، فالجزء car بها يحدد العنصر الأول من القائمة، والجزء cdr يؤشر إلى باقي القائمة، لهذا فإن دوال car وcdr تسمى أيضا first وrest عند الحديث عن خلايا في بنية القوائم المتصلة (بدلا من البنى الأخرى كالشجرة tree مثلا). إذا القائمة في ليسب لا تعتبر وحدة أساس، كحال أي نسخة Instance من صنف Class في لغة كجافا أو سي++، المتغير الذي يشير إلى قائمة معطاة هو ببساطة مؤشر إلى الخلية الأولى لتلك القائمة.
ولأن استخدام الخلايا والقوائم شائع بكثرة في أنظمة ليسب، فهناك اعتقاد خاطئ شائع بأنها البنية الوحيدة للبيانات في ليسب، لكن بالواقع، هناك بنى أخرى أبسط تكوينا كالمتجهات Vectors (المصفوفات Arrays)، الجداول المتشابكة Hash Tables، البنى Structures وهكذا.
--مثال: (اللغة المكتوبة هي Common Lisb)
كود PHP:
(print "Hello world")
سي C
سي هي لغة برمجة، مقننة وعالمية، صممها وطوّرها في أوائل السبعينيات كن تومسون، براين كرنيغان، ودينيس رتشي. و قد صممت في الأصل لتستعمل في تطوير والعمل تحت نظام التشغيل يونكس، ثم لقيت انتشارا واسعا منذ ذلك الحين وتواصل إلى اليوم ويظهر ذلك من خلال شعبيته لدى أغلب مبرمجي الحاسوب ومن خلال استعمالاته العديدة والمتنوعة. و لغة السي هي لغة بنيت عليها عديد من اللغات الحديثة مثل ال سي بلس بلس والجافا.
--تاريخها:
تم تصميم السي في مختبرات بيل ما بين 1969 و 1972، وقد تم تسميته بالسي لأن جزأ كبيرا منه قد اقتبس عن لغة البي (B) و عندما تطورت السي إلى درجة أصبحت فيها بالقوة الكافية لتحويل نواة يونكس من الأسمبلي إلى السي
وفي سنة 1978 قام كرنيغان (Brian Kernighan) ورتشي (Dennis Ritchie) بنشر الكتاب المشهور The C Programming Language وذلك لتحديد خصائص اللغة, ويعرف هذا الكتاب في الأوساط المختصة ب K&R. إلا أن تقنين اللغة وتبنيها بصفة رسمية من طرف الANSI والISO تم في الثمانينات وكنتيجة لذلك ظهرت الطبعة الثانية للكتاب بعنوان The C Programming Language, Second Edition, أو K&R2 وهو المرجع الرئسئ للغة إلى حد الآن ISBN 0-13-110362-8. و بتقنين اللغة تمت إضافة أجزاء وتنقيح أخرى لتفادي السلبيات التي ظهرت في السابق ولتهيئة أداة أفضل وأقوى بالنسبة للمبرمج
و لولا ظهور لغة السي وتجربتها التي فاقت الثلاثين سنة لما كان ممكنا ظهور اللغات الحديثة والشيئية مثل السي بلس بلس أو على الأقل لما أصبحت كما تعرف عليه اليوم أسس تطويرها كل من شركة مايكروسوفت وشركة اي بي ام معاً ولذالت الاساسيات العامه لأسلوب كتابتها يستخدم للآن وفي العديد من اللغات المتطورة والمنشأة من خلالها حتي اخر لغات السي وهي لغة السي شارب والتي تعتبر احدث التطويرات للغة السي ويوجد اصدارات عديده منها بدأ من سنة 2001 حتي اصدار 2010.
--مثال:
كود PHP:
#include <stdio.h>
void main()
{
printf("Hello, world!\n");
return 0;
}
سي++ ++c
سي++ (تنطق: سي بلس بلس) (بالإنجليزية: ++C) هي لغة برمجة للاستخدامات العامة، تعتبر لغة السي++ لغة برمجة كائنية. والتي يعتبرها الكثيرون اللغة الأفضل لتصميم التطبيقات ذات الواجهة الكبيرة وللتعامل مع البنية الصلبة للحاسب. ولغة السي بلس بلس ++C من لغات البرمجة العالية المستوى وفي نفس الوقت قريبة من لغة التجميع ذات المستوى المحدود، كما أنها تعد لغة برمجة إجرائية (يمكن كتابة برنامج يحتوي على إجراءات وتوابع فقط) كما تعد لغة غرضية التوجه (البرنامج المكتوب عبارة عن أصناف وتستخدم الخواص المتاحة من كبسلة وتعددية الأشكال والوراثة والتركيب).
--تاريخها:
طوّر بيارن ستروستروب (Bjarne Stroustrup) خلال عمله في مختبرات بيل لغة سي++ في الثمانينات كتحسين للغة سي. تشمل سي++ جميع مزايا السي بالإضافة إلى مزايا البرمجة الكائنية. تسهّل لغة سي++ الأسلوب المُهيكل والمنهجي لعملية تصميم البرامج، وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
كما هو الحال مع لغة السي، فإن سي++ لغة متعددة الاستخدامات، إلا أنها مناسبة لبرامج أنظمة التشغيل. وتكتب معظم أجزاء أنظمة التشغيل وبرامج مساعدة أنظمة التشغيل باستخدام سي++ ومنها نظام جنو/لينكس.
و يتجنب الكثير من المبرمجين لغتي سي وسي++ نظراً لشهرتهما كلغات برمجة معقدة. وقد أدى ذلك إلى استخدام الكثيرين للغات مثل فيجوال بيسك ودلفي ثم جافا وسي شارب. الأخيرتين هما مجرد تسهيل (وليس تطوير) للغة سي++، وبدا في وقت معين أن لغات مثل جافا سوف تستولي على سوق البرمجيات التجارية من سي++ مع هجرة عدد كبير من مبرمجي السي++ إلى جافا وسي شارب، إلا أنه سرعان ما أدرك المبرمجون أن السي++ هي السبيل الوحيد لإنتاج برامج تجارية قوية وسريعة وتؤدي المطلوب منها بكفاءة وبأقل عدد من الأخطاء.
--بين السي والسي++:
وفقاً لمواصفات سي++، فإنها تدعم لغة سي بشكل كامل (دعم رجعي). وعملياً يمكن لمعظم برامج السي أن تترجم بواسطة مترجمات سي++ ولهذا تسمى هذه المترجمات بمترجمات سي/سي++. إلا أن الأمر لا يخلو من بعض المشاكل غير المتوقعة، مثلاً قد يحدث أن تسمى متغيراً باسم new وهى كلمة محجوزه في سي++ وليست محجوزة في سي.
--الجديد في سي++:
الإضافة الأهم التي أتت بها السي++ عن السي هي البرمجة عن طريق الكائنات. حيث تعتمد السي على البرمجة الإجرائية والتي كانت كافية في وقتها. إلا أن ظهور أنظمة التشغيل ذات الواجهة الرسومية نقل العديد من المبرمجين إلى البرمجة بالكائنات. بالرغم من ذلك فإن السي ما زالت تُستخدم في برمجة الويندوز واليونكس. أبرز هذه الإضافات هي:
-الصفوف والكائنات.
-التحميل الزائد للعمليات: ويعتبرها الكثير أهم إضافة في سي++، لأنها جعلت من سي++ لغة قابلة للتوسع. هناك أكثر من 30 عملية يمكن التحميل الزائد عليها.
-القوالب.
-التعددية الشكلية.
-الوراثة: وهي إمكانية تطوير صنف جديد يرث جميع خصائص صنف آخر. في هذه الحالة يسمى الصنف بالصنف المشتق.
-استخدام الرمز // لتضمين الملاحظات بطول سطر واحد والتي يتم تجاهلها من قِبل المترجم عند القيام بعملية الترجمة.
--سبب صعوبتها:
ربما تعود أسباب صعوبة لغتي السي والسي++ لأسباب تاريخية أكثر منها واقعية وهو ما يردده المبرمجين المعتادين على استخدام السي++ وهذا يعود بنا إلى أصل لغة السي وهي لغة السي بي ال CPL والتي اشتهرت بشدة تعقيدها مما تسبب في ابتعاد المبرمجين عنها فتم تطويرها وتبسيطها إلى لغة سميت BCPL ولم تلقى الكثير من النجاح ولكنها تطورت إلى لغة البى B وعندما أرادو تطويرها سموها سي(وهذا هو أصل تسمية السي)، وبالطبع ورثت السي++ خصائص لغة سي. إلا أنه لا يمكن إنكار أن مفاهيم مثل المؤشرات pointers، والإشارات هي مفاهيم مربكة للمبرمج المبتدئ، بالإضافة إلى مفاهيم التوارث Inheritance وتعدد الشكل polymorphism والقوالب Templates التي تربك حتى المبرمجين المحترفين. وكذلك لا تقدم سي++ الحماية الكافية للمبرمج كي لا يقع في أخطاء التشغيل التي قد تتسبب في توقف الحاسوب عن العمل. كيف؟
في لغة الفيجوال بيسك مثلا عندما تحدد مصفوفة بحجم 20 عنصرا مثلا كالأتي :
كود PHP:
Dim A(20) As Integer
ثم تحاول معالجة العنصر رقم 21 مثلا فسوف يبادرك محرك الفيجوال بيسك برسالة خطأ ويتوقف برنامجك. أما في السي++ فاذا عرفت مصفوفة بنفس الحجم : int a[20] // integer a from 0-19 not from 0-20 و عندما تحاول الوصول إلى العنصر رقم واحد وعشرين مثلا تكون قد تعديت حدود المصفوفة إلى جزء من الذاكرة ربما تكون مخصصة لبرنامج أخر أو معلومات حساسة لنظام التشغيل وهذا يؤدي إلى إعطائك قيم خاطئة. و المشكلة الأخرى التي تربك الكثيرين أن أول عنصر بالمصفوفة هو 0 وليس 1 وحجمها 20 أى أن العنصر الأخير هو 19 وليس 20 مثل البيسك.
--مثال اللغة:
كود PHP:
# include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
بيسيكBasic
لغة البيسيك (BASIC) هي لغة متعددة الأغراض للمبرمجين المبتدئين واسمها اختصار لـ "Beginners All Purposes Symbolic Instruction Code". تم تطويرها سنة 1964 م وكانت تستند بشكل كبير على لغة الفورتران.
أكثر ما تميزت به لغة البيسيك هو سهولتها ويدين معظم المبرمجين ببداياتهم إلى لغة بيسيك. اشتهرت بيسك بأنها لغة مُفسرَة وليست مترجمة ويعتقد الكثيرون أنها بدأت مفسرة ولم تتم كتابة مترجمات لها إلا حديثا وذلك خطأ شائع لأن لغة بيسيك بدأت أساسا كلغة مترجمة.
و قد تطورت لغة بيسيك كثيرا منذ بدايتها إلى اليوم وبعد أن كانت لغة للمبتدئين وكتابة البرامج القصيرة أصبحت لغة احترافية يمكن استخدامها لكتابة برامج تجارية معقدة وعالية المستوى.
و يعود السبب الأساسى لانتشار بيسيك الكبير إلى اعتمادها كلغة الحواسيب المنزلية التي ازدهرت في الثمانينات. أما سبب تطورها واعتمادها كلغة احترافية فيعود بالأساس إلى مايكروسوفت ومترجمها كويك بيسيك QuickBASIC الذى أدخل البيسيك في مرحلة جديدة. وتطورت البيسيك بعد ذلك وكانت حجر الزاوية لمترجم Visual Basic الذى يعد الآن من أكثر الطرق شعبية لكتابة برامج ويندوز.(الا أنه ليس أفضلها).
--مثال:
كود PHP:
10 PRINT "Hello World"
20 END
فيجوال بيسكVisul Basic
فيجوال بيسك (بالإنجليزية: Visual BASIC) (ترجمتها الأساسيات المرئية).هي بيئة تطوير ولغة برمجة من مايكروسوفت تستند إلى لغة البيسك الشهيرة. وهي تصنف ضمن لغات البرمجة الشيئية. منذ أن بدأت مايكروسوفت في اصدار الفيجوال بيسك وهي تلاقى نجاحا باهرا وشعبية لا بأس بها بين المبرمجين نظرا لسهولتها الشديدة في مقابل التعقيد الشديد الذي يواجهه أى مبرمج يسعى لبرمجة ويندوز باستخدام السي أو السي++. عموما تناسب الفيجوال بيسك تطبيقات قواعد بيانات والتطبيقات المخصصة للشركات الصغيرة وبرامج الحسابات وهي مريحة وسهلة وتؤدى الغرض بالإضافة إلى أنها تسمح للمبرمج بالتركيز على حل المشكلة فغالباً ما لا يواجه صعوبات فنية أثناء كتابة برنامج بالفيجوال بيسك. و لكن بقى أن نذكر أن برامج الفيجوال بيسك لا تتم ترجمتها كاملة إلى لغة الآلة مثل السي++ أو الدلفي وإنما تترجم إلى كود وسطى يتصل مع مكتبة ربط تسمى ب"Run Time library" واسمها MSVBM??.dll مع استبدال علامات الاستفهام برقم الإصدار.
لغة البرمجة فيجوال بيسك هي لغة ذات تصميم مرئي واجهة رسومية بعكس بعض اللغات مثل الاسمبلي ذات الشاشة السوداء. حيث تحتوي هذه اللغة على العديد من الاوامر بداخلها ولغة سهلة التطبيق تم تطوير هذه النسخة من البرنامج عن النسخة القديمة basic والتي تعمل تحت بيئة dos إلى هذه النسخة التي تعمل تحت بيئة وندوز. تعتمد اللغة في تطوير تطبيقاتها على الكائنات فهي تشبه العديد من لغات البرمجة الحديثة من حيث اعتمادها على الديناميكية والأحداث. تعني الديناميكية في هذه اللغة القدرة على استدعاء اي اقتران أو اجراء اعتمادا على الحدث. الحدث هو اي عملية يقوم بها مستخدم التطبيق على التطبيق مثل الضغط بزر الفارة أو الضغط على أحد ازرار لوحة المفاتيح أو حتى تحميل نموذج.فيجوال بيسك أداة قوية وفعالة لتطوير تطبيقات متوافقة مع بيئة ويندوز. توفر لك بيئة تطوير متكاملة سهلة الاستخدام لإنشاء الحلول سواءً أكانت شخصية أم تجارية في وقت قياسي عن طريق فلسفة البرمجة المرئية. حيث تصمم الشاشات ونوافذ برنامجك عن طريق نقرات وتحريكات خفيفة بالفأرة كأنك ترسم مربعات ودوائر باستخدام برامج الرسم وغيرها.
--تاريخ الفيجوال بيسك:أنتجت شركة مايكروسوفت أول إصدار من لغة البيسك عام 1970م، وسمي Basic والاسم يعتبر اختصاراً لكلمة لغة البرمجة العامة التسلسلية للمبتدئين (Beginner’s All-Purpose Symbolic Instruction Code)، وتوالت الإصدارات فظهر الإصدارات GW-BASIC, QuickBasic and QBasic، وكلهم يعملون في بيئة Dos، ومع انتشار بيئة ويندوز ظهرت فيجوال بيسك التي احتوت على كثير من أوامر QBASIC وأضيفت العديد من الوظائف التي جعلت من البرمجة بفيجوال بيسك يسرة وسهلة. هناك الآلاف من المواقع التعليمية للفيجوال بيسك ومنها Visual Basic Tutorials
في عام 2000 قامت مايكروسوفت بإنتاج النسخة المطورة VISUAL BASIC.NET والتي تعتمد على البرمجة الشيئيةmezzo.
--مميزات الفيجوال بيسك:
-لغة سهلة وسريعة لإنشاء تطبيقات ويندوز.
-تدعم البرمجة الشيئية إلا أن ذلك ليس بشكل كامل.
-تجربة برامج الفيجوال بيسك سهلة وسريعة لاعتمادها على مكتبة الربط خلال وقت التشغيل.
-تعتبر لغة الفيجوال بيسك لغة كائنية المنحنى.
-سهلة التعلم والفهم.
-سهولة اكتشاف الأخطاء فيها.
-اعتماده على HMI وذلك مما جعله سهل الاستعمال والفهم.
-عند كتابة اوامر صحيحة يقوم بإعطائك أمثلة ليؤكد لك على صحة كتابة الكود.
--عيوب الفيجوال بيسك:
-عدم مجانية برامجها ،أي أنك تحتاج غالبا للدفع للحصول على ملفات مفتوحة المصدر.
-لا يتم ترجمتها بشكل كامل إلى لغة الآلة.
-لا تدعم كافة أشكال البرمجة الشيئية.
-المترجم نفسه به بعض الشوائب والتي تظهر في البرنامج المكتوب حتى في حالة خلو البرنامج المصدر من الأخطاء.
-عيوب البرنامج من إمكانية تجميل برنامج حيث يحتوي على مربعات وازارير بدائية ولكي تحصل على الشكل المطلوب لا بد من skin خارجي وادوات خارجية.
-تعتبر من أسوأ اللغات لمحدوديتها.
-السهولة فيها تأكل القوة - عكس نضيرتها الدلفي التي تأتي بسهولة أسهل من الفيجوال بيسك وقوة السي++.
--فيجوال بيسك ليس كما كان:
تتعتمد على اللغة القديمة BASIC، وقد تجنب تعلمها بسبب حدودها التي تقصر إمكانياتها كسائر لغات البرمجة. لكن مع الإصدارات الحديثة من Visual Basic فإن الأمر اختلف! فالآن أصبحت إمكانيات اللغة بلا حدود. وقابلية التطوير لا نهائية أي أنه أصبح ذو نهاية مفتوحة. فعن طريق الإضافات Add-Ins وأدوات التحكم الخارجية ActiveX Control ومكونات COM بصفة عامة، تستطيع إنجاز كل ما استطعت إنجازه باللغات المختلفة. فلإضافة مكون COM جديد لا يتطلب الأمر منك سوى تحديد اسم وملف المكون ومن ثم استخدامه مباشرة! حقيقة لقد أصبحت أكثر تطوراً.
--إصدارات فيجوال بيسك:
-الإصدار الأول من Visual Basic كان محدود للغاية. ولم يكن موجه لتطوير التطبيقات الحقيقة لبيئة Windows. مع انه كان سهل الاستخدام ذو واجهة رسومية ولغة برمجة مرئية إلى انه كان يعتبر كلعبة مسلية للمبرمجين.
-فيجوال بيسك 2:
الإصدار الثاني من Visual Basic لم يظهر أي جديد باستثناء إضافة القليل من الخصائص ودعم أفضل لبيئة التطوير المتكاملة IDE. لكن في تلك الفترة، ظهر مولود جديد وهو النظام Access 1.0 لقواعد البيانات العلائقية وكان كل تركيز شركة Microsoft هو الدمج بينهما.
-فيجوال بيسك 3:
يعتبر الإصدار الثالث هو بداية طريق النجومية أو الشهرة لـ Visual Basic! حيث قدم دعم لقواعد البيانات وأصبح ذو نهاية مفتوحة بفضل الإضافات التي كنت تستطيع دمجها مثل VBX والتي تطورت فيما بعد إلى OCX. ظهرت الكثير من التحسينات في بيئة التطوير المتكاملة IDE وهاجر مئات إن لم يكن آلاف المبرمجين إلى Visual Basic. وبدأت تلك اللغة كمنافس ضعيف لتطوير البرامج الحقيقية أو التجارية لأنه كان ما زال ينقصها المزيد.
-فيجوال بيسك 4:
كان الهدف الأساسي من الإصدار الرابع هو مرحلة انتقالية إلى Windows 95 أو إن صح التعبير، القابلية لتطوير تطبيقات من نوع 32 bit. وكان أول إصدار من إصدارات Visual Basic تولد شيفرة للعمل تحت معالجات من نوع 32Bit. ليس هذا فقط! بل أضاف الإصدار الرابع إمكانية لإنشاء مكتبات من نوع ActiveX DLL والتي زادت في شهرة Visual Basic حتى أصبحت اللغة معترفة كلغة برمجة لإنشاء تطبيقات حقيقية حيث أضاف الميزة التي انتظرها المبرمجون وهي البرمجة الكائنية التوجه OOP لكنها كانت محدودة بسبب استطاعتك بإنشاء الفئات Class فقط دون أي إمكانية إضافية كتعدد الواجهات Polymorphism أو الوراثة Inheritance.
-فيجوال بيسك 5:
الإصدار الخامس كان بمثابة الإعلان الرسمي في أن لغة Visual Basic هي لغة برمجة لتطوير التطبيقات الحقيقية والتجارية. حيث أضاف العديد من أنواع المشاريع كـ ActiveX Controls و ActiveX Documents وغيرها.. وإضافة مزايا عديدة للتحكم بشيفرة ملف الـ EXE الذي يخيرك من تحويل الشيفرة المصدرية إلى P-Code أو Native-Code. بالإضافة إلى التحسن الحقيقي لبيئة التطوير المتكاملة IDE والدعم الإضافي لقواعد البيانات.
-فيجوال بيسك 6:
الإصدار السادس لا يختلف عن الإصدار الخامس كثيرا لكن هناك العديد من التحسينات وعلاج للأخطاء التي كانت موجودة في الإصدار الخامس. من أهم الإضافات في الإصدار السادس هي الزيادة في أدوات قواعد البيانات والمبنية على ADO. كذلك تحسن واضح في أدوات التحكم. وهناك العديد من التطوير في لغة البرمجة كدعم أنواع البيانات المعرفة من قبل المستخدم UDT والزيادة في الدوال Functions. وإضافة المزيد من الويزارد Wizards ودعم لتطبيقات الإنترنت Internet. والكثير والكثير من التحسينات.
-فيجوال بيسك.نت:
تم إنتاج هذا الإصدار مع تغيير جذري عما سبقه من الإصدارات ولقد صدر في ظل هذه التقنية أربعة إصدارات إلى الآن
-فيجوال بيسك.نت 2003
-فيجوال بيسك.نت 2005
-فيجوال بيسك.نت 2008
-فيجوال بيسك.نت 2010
--حلول الانترنت:
فيجوال بيسك يوفر لك العديد من الحلول والخاصة بالإنترنت. فيمكنك من إنشاء أدوات تحكم ActiveX Controls يتم تنفيذها في صفحة الويب. أو تصميم تطبيقات متقدمة كـ ActiveX Documents للعمل على متصفح Internet Explorer. المزيد أيضا، Visual Basic يوفر لك بيئة تطوير خاصة لتطوير تطبيقات الإنترنت سواءً كانت للعميل Client كتطوير تطبيقات من نوع DHTML Applications أو للخادم Server كتطوير تطبيقات ASP Applications.
المرجع / مركز بوابة العرب التعليمي
http://edu.arabsgate.com/showthread.php?t=584290