البرمجة هي عملية إعداد خطة أو طريقة لمعالجة المسألة بأستخدام المكونات المادية للحاسوب والحصول علي النتائج المرجوة، وتحول الخطة إلي برنامج يكتب وفقا لقواعد تحددها لغة البرمجة، التي هي وسيلة الاتصال بين الإنسان والحاسوب.
البرنامج: program:
البرنامج هو مجموعة من التعليمات المرتبطة فيما بينها وفق تسلسل منطقي ينفذها الحاسوب لأداء مهمة محددة وواضحة. ويكتب البرنامج بإحدي لغات برمجة الحاسوب وللبرنامج خصائص عديدة .
لغات البرمجة: programming language
تسمح لغة البرمجة للإنسان أن يملي علي الحاسوب حل المسألة علي شكل تعليمات يفهمها ويقوم بتنفيذها. ويمكن تصنيفها في عدة فئات هي: لغة الالة واللغة التجميعية واللغات العليا ولغات الجيل الرابع واللغات المرئية. وقد تطورت اللغات وفقا لهذا التسلسل الذي يعكس اقترابها التدريجي شيئا فشيئا من اللغات الإنسانية. الجيل الاول: البيزيك والدوس dos:
الجيل الثاني: البيزيك والويندوز:
الجيل الثالث: البيزيك ودوت نت:
واعتقد ان هذا هو السبب الذي دفع ميكروسوف الي اصدار اللغه الجديده سي شارب C#, التي تعتبر توأما الفيجوال بيزيك الا انها تستخدم قواعد C++في كتابه الاوامر, ما يشكل لمبرمجي C++ اغراء تصعب مقاومته للانتقال اليه, كما انضمت لغه j# الي عائله دوت نت عام 2003, لتشكل اغراء لمبرمجي الجافا تصعب مقاومته !
ولكن مهما كانت سهوله C# و j#, فان VB تصرعهما في هذا المضمار, فهي اقرب ما تكون الي اللغه الانجيليزيه العاديه ولا تحتوي علي الرموز الكثيره الممله التي تملا سي شارب والجي شارب مثل. ++, ==, //... الي اخر هذه الرموز التي تشغل احتمالات الخطا عند كتابه الكود اعلي, وتجعل البرنامج اصعب فهما واقل الفا عند قراءته.
أنواع لغات البرمجة:
تصنف لغات برمجيات الحاسوب في فئتين هما: اللغات الدنيا واللغات العليا.
اللغات الدنيا Low –Level Languages
يوجد نوعين من هذه اللغات هما: لغة الآلة ولغة التجميع ونشرحهما أدناه.
لغة الآلة: Machine language:
وهي اللغة الوحيدة التي يفهمها الحاسوب مباشرة دون وسيط، وتعليمات هذه اللغة هي مجموعة من الأرقا الثنائية إما ( 1، 0 ) ظهرت هذه اللغة مع بداية ظهور الحاسوب وكان المرمجون بلغة الآلة يحتاجون إلى معرفة مكونات الحاسوب وإمكانياته، مما أدى إلى فهم صعوبة تلك اللغة وخاصة ان لكل حاسوب لغة آلة خاصة به، فلا يمكن نقل البرنامج من حاسوب معين إى حاسوب آخر فاقتصر استخدامها على الشركات الصانعة للحواسيب.
ولغة الآلة هي اللغة التي يستخدمها الحاسب للاتصال بين وحداته الداخلية المختلفة، وتمتاز هذه اللغة بأنها لاتحتاج لإلي ترجمة. فهي نفس اللغة التي صمتت بها الدوائر الإلكترونية التي تقوم بتنفيذ العمليات داخل وحدة التشغيل المركزية، لقد كان البرنامج المكتوب بهذه اللغة عبارة عن سلسلة طويلة من الأرقام المتكونة من الصفر والواحد وهذا يتطلب وقتاًوجهداً كبيرين، بالإضافة إلى الأخطاء التي يمكن الوقوع فيها ومثال عليها 551151، وهي اللغة الوحيدة التي يفهمها الحاسوب مباشرة دون وسيط. تتألف تعليمات لغة الآلة من سلاسل من الأصفار والواحد (0،1). استخدمت هذه اللغة مع بداية ظهور الحاسوب، لغة الآلة هى لغة الحاسب وتتكون من النظام الثنائى (1.0) وهذا يتضمن و يكون احتمال الخطا فيها كبير جدا.
لغة التجميع: Assembly Language:
هي مرحلة متقدمة من لغة الآلة واسهل نسبيا منها، صممت للتغلب على صعوبة استخدام لغة الآلة، تم استبدال الأرقام الثنائية برمز وهو عبارة عن حرفين أو ثلاثة أحرف، تحتاج هذه اللغة لبرنامج مترجم لترجمتها للغة الآلة التي يفهمها الحاسوب، من أبرز عيوبها هو ارتباطها بالآلة، فكل آلة لها لغة تجميع خاصة بها، ويقصد بالآلة هنا تحديد المعالج Processor أو المعالج الدقيق Microprocessor.
لتجنب كتابة برنامج بلغة الآلة وضعت بعض الرموز لتدل على مختصرات لغوية او اعداد عشرية فمثلا:
للاضافة نرمز (ADD)
للطرح نرمز (SUB)
للضرب نرمز (MUL)
لغة التجميع تشبه لغة الآلة ولكنها تمتاز عنها بسهولة الترميز بالحروف الأبجدية، وسهولة إكتشاف إلاخطاء، وتعديل البرامج نسبيا، وتحتاج هذه البرامج إلي ترجمة حتي يتم تحويلها إلي لغة الآلة، ويسمى البرنامج الذى يقوم بهذه الوظيفة بالمترجم المتدني (Assembler) ومثال عليها sub10، ويطلق عليها اسم اللغة الرمزية وهي مرحلة متقدمة من لغة الآلة وأسهل منها نسبيا. وقامت الشركات الصانعة للحواسيب بتصميمها للتغلب علي صعوبة استخدام لغة الآلة. وتم استبدال الأرقام الثنائية برموز، ريتألف الرمز من حرفين أو ثلاثة حروف يسهل علي المبرمج تذكرها وكتابتها ويطلق علي هذه الرموزMnemonic. وتختلف الرموز المستخدمة بأختلاف طراز لغة التجميع والشركة المنتجة للحاسوب.
اللغات العليا:High Level language
يطلق علي لغة الآلة ولغة التجميع اللغات الدنيا نظرا لقربها من التصميم الداخلي للحاسوب، ولتجنب مساوئ اللغات الدنيا صممت لغات برمجة أكثر تطورا وأقرب إلي اللغة الإنسانية ودعيت لغات البرمجة العليا، فقد سميت بها الاسم لبعدها عن لغة الآلة، ولا يتطلب من المبرمجين المعرفة بالتفاصيل الدقيقة لجهاز الحاسوب، ولكن يتطلب منه لالمام اعام باسلوب عمل الحاسوب ومنطقه، أما امعرفة التفصيلية فتكون لجوانب المشكلات والمسائل الخاصة بالتطبيقات