8/07/2020

تعرف علاء علم برمجة الحاسوب computer programming


تعرف علاء علم برمجة الحاسوب computer programming


البرمجة بشكل عام 
تعرف بأنها عملية كتابة تعليمات وتوجيه أوامر لجهاز الحاسوب أو أي جهاز آخر مثل قارئات أقراص الدي في دي أو أجهزة استقبال الصوت والصورة في نظم الاتصالات الحديثة، لتوجيه هذا الجهاز وإعلامه بكيفية التعامل مع البيانات أو كيفية تنفيذ سلسلة من الأعمال المطلوبة تسمى خوارزمية.

تعريف برمجة الحاسوب
هي عملية كتابة، اختبار، تصحيح للأخطاء وتطوير للشيفرة المصدرية لبرنامج حاسوبي يقوم بها الإنسان، تهدف البرمجة إلى إنشاء برامج تقوم بتطبيق وتنفيذ خوارزميات لها سلوك معين بمعنى أن لها وظيفة محددة مسبقا ومتوقعة النتائج تتم هذه العملية باستخدام إحدى لغات البرمجة الهدف من البرمجة هو إنشاء برنامج حيث ينفذ عمليات محددة أو يظهر سلوك مطلوب محدد.

تاريخ برمجة الحاسوب
كانت الأجهزة القابلة للبرمجة موجودة على الأقل منذ عام 1206 ميلادي عندما كانت أوتوماتيكي الجزاري قابلة للبرمجة عبر الأوتاد والكامينات للعب مختلف الإيقاعات وأنماط الطبل ويمكن لجهاز jacquard loom سنة 1801 إنتاج موجات مختلفة عن طريق تغير برمجته - سلسلة من بطاقات اللوح مع ثقوب مثقوبة فيها

ومع ذلك يرجع تاريخ أول برنامج كمبيوتر إلى عام 1843 عندما قامت عالمة الرياضيات أدا لوفليس بنشر خوارزمية لحساب سلسلة من أرقام برنولي يهدف إلى تنفيذها بواسطة تشارلز باباج عن طريق محرك تحليلي.

في الثمانينات من القرن التاسع عشر اخترع هيرمان هوليريث مفهوم تخزين البيانات في شكل قابل للقراءة آليا في وقت لاحق سمحت لوحة التحكم ( لوحة التوصيل) التي تمت إضافتها إلى لوحة Type I Tabulator 1906 الخاصة به ببرمجة وظائف مختلفة 

وبحلول أواخر الأربعينيات من القرن الماضي تمت برمجة معدات تسجيل الوحدات مثل IBM 602 و IBM 604 بواسطة لوحات التحكم بطريقة مماثلة كما كانت هي أول أجهزة الكمبيوتر الإلكترونية.

كانت شفرة الآلة هي لغة البرامج المبكرة وهي مكتوبة في مجموعة التعليمات الخاصة بالجهاز المحدد وغالبًا ما تكون بترميز ثنائي سرعان ما تم تطوير لغات التجميع والتي تتيح للمبرمج تحديد التعليمات بتنسيق نصي (على سبيل المثال ADD X TOTAL) مع اختصارات لكل رمز تشغيل وأسماء ذات معنى لتحديد العناوين ومع ذلك نظرًا لأن لغة التجميع ليست أكثر من مجرد ترميز مختلف للغة الآلة فإن أي جهازين لهما مجموعات تعليمات مختلفة لهما أيضًا لغات تجميع مختلفة.

لغات البرمجة
تجدر الإشارة هنا إلى التذكير بمعنى كلمة لغة وهي طريقة الاتصال والتفاهم بين الأشخاص أو لنقل في حالة الحاسوب الطريقة التي يفهم بها الحاسوب طلب الإنسان لذلك نجد في حياتنا مجموعة مصطلحات وكلمات يختلف استخدامها حسب الحاجة لغات البرمجة المختلفة تتمتع بهذه الخاصية أيضا فهناك الكثير من اللغات البرمجية الموجودة وهذه اللغات تختلف من ناحية عملها وهدفها ولكن في النهاية كل هذه اللغات تترجم إلى لغة الآلة 0 و1.

لذلك يجب على المبرمج أن يكون ملما ببعض لغات البرمجة وأن يعرف ما هي اللغة المناسبة لتطبيق هذا البرنامج لغة البرمجة الوحيدة التي يفهمها الحاسوب ويستطيع أن يتعامل معها هي لغة الآلة -machine language-. 

  • مراحل تطور لغات البرمجة
في البداية عمل المبرمجون على تحليل شيفرة الحاسوب –machine code- والتعامل معها بشكلها الجامد وغير المفهوم وهو (0,1) ولكن هذه العملية معقدة جدا ويصعب التعامل معها لعدم فهمها الواضح للبشر ولغموضها ،لذلك تم ابتكار لغات راقية تعمل كوسيط بين لغة الإنسان ولغة الآلة وهي لغة التجميع أسمبلي Assembly،ثم تطورت للغات عالية المستوى مثل لغة السي ولغة البيسيك،ثم يتم تشغيل البرامج المكتوبة بهذه اللغات عن طريق أحد البرامج المتخصصة مثل المترجم والمصرف هذه البرامج تعمل على ترجمة أسطر لغة البرمجة إلى لغة الحاسوب مما يسهل على الحاسوب تنفيذ هذه الأوامر وإخراج نتائج التنفيذ الواضحة.

بعض لغات البرمجة
  1. لغة تجميع.
  2. لغة سي.
  3. لغة سي++.
  4. لغةباسكال. 
  5. لغة ليسب.
  6. لغة فيجوال بيسك. 
  7. لغة فيجوال بيزك دوت نت. 
  8. لغة سي شارب. 
  9. لغة جيم. 
  10. لغة بايثون.
  11. لغة دلفي.
  12. لغة بيرل. 
  13. لغة جافا. 
  14. لغة بي إتشبي. 
  15. لغة روبي. 
  16. لغة سيتل. 
  17. لغة لوا. 
  18. لغة Go.
  19. لغة فورتران. 
  20. لغة ماتلاب.
  21. لغة سي شارب. 
  22. لغة HTML.
  23. لغة إيه إس بي دوت نت.
  24. لغة بيسك. 
  25. لغة كوتلن.
  26. لغة جافا سكريبت.
  27. لغة إس كيو إيل (SQL)

البرمجة الحديثة
لكل نهج في عملية تطوير البرامج، يجب على البرنامج النهائي أن يحقق خصائص جوهرية، مثل:

  • الاعتمادية: 
وهي كم عدد المرات التي تكون فيها نتائج البرنامج صحيحة يعتمد هذا على الدقة النظرية للخوارزميات، وتقليل أخطاء البرمجة إلى الحد الأدنى مثل الأخطاء في إدارة الموارد (على سبيل المثال تجاوزات في مساحات التخزين المؤقة ) والأخطاء المنطقية (مثل القسمة على الصفر ).
  • المتانة: 
مدى توقع البرنامج للمشاكل بسبب الأخطاء(errors) (وليس الأخطاء(bugs)) يتضمن ذلك مواقف مثل البيانات غير الصحيحة أو غير المناسبة أو التالفة وعدم توفر الموارد اللازمة مثل الذاكرة وخدمات نظام التشغيل واتصالات الشبكة وخطأ المستخدم وانقطاع الطاقة غير المتوقع.

  • الصلاحية (بيئة العمل الخاصة بالبرنامج): 
السهولة التي يمكن بها استخدام البرنامج للغرض المقصود منه أو حتى في بعض الحالات لأغراض غير متوقعة يتضمن ذلك مجموعة واسعة من العناصر النصية والرسوماتية وفي بعض الأحيان للأجهزة التي تعمل على تحسين وضوح حدس التماسك واكتمال واجهة مستخدم البرنامج.

  • القابلية للنقل: 
مجموعة أجهزة الكمبيوتر وأنظمة التشغيل الأساسية التي يمكنها تجميع / تفسير الشفرة المصدرية للبرنامج وتشغيلها
 يعتمد هذا على الاختلافات في تسهيلات البرمجة التي توفرها الأنظمة الأساسية المختلفة بما في ذلك موارد الأجهزة ونظام التشغيل والسلوك المتوقع للجهاز ونظام التشغيل وتوافر مترجمين خاصين بالمنصة (وأحيانًا المكتبات) للغة الكود المصدري.

  • القابلية للصيانة: 
سهولة تعديل البرنامج بواسطة مطوريه الحاليين أو المستقبليين من أجل إجراء تحسينات أو تخصيصات أو إصلاح الأخطاء وثغرات الأمان أو تكييفها مع بيئات جديدة الممارسات الجيدة  أثناء التطوير الأولي تحدث فرقًا في هذا الصدد قد لا تكون هذه الجودة واضحة بشكل مباشر للمستخدم النهائي ولكنها قد تؤثر بشكل كبير على مصير البرنامج على المدى الطويل.

  • الفعالية/الأداء: 
قياس موارد النظام التي يستهلكها البرنامج (وقت المعالج مساحة الذاكرة الأجهزة البطيئة مثل الأقراص عرض النطاق الترددي للشبكة وحتى تفاعل المستخدم إلى حد ما): كلما كان ذلك اقل كان ذلك أفضل يتضمن ذلك أيضًا إدارة الموارد بعناية على سبيل المثال تنظيف الملفات المؤقتة والتخلص من تسرب الذاكرة.

  • القدرة على قراءة الشيفرة المصدرية:
في علم الحاسوب، القدرة على القراءة تشير إلى مدى السهولة التي يحتاجها قارئ بشري لفهم هدف، التحكم في تدفق، وعملية الشيفرة المصدرية تؤثر على جوانب الجودة المذكورة في الأعلى، بما في ذلك القابلية للنقل، الصلاحية، والأهم القابلية للصيانة

  • التعقيد الخوارزمي:
يهتم المجال الأكاديمي والممارسة الهندسية لبرمجة الكمبيوتر إلى حد كبير باكتشاف وتنفيذ الخوارزميات الأكثر كفاءة لفئة معينة من المشكلات.

لهذا الغرض يتم تصنيف الخوارزميات في أوامر باستخدام ما يسمى Big O notation والذي يعبر عن استخدام الموارد مثل وقت التنفيذ أو استهلاك الذاكرة من حيث حجم المدخلات المبرمجين الخبراء على دراية بمجموعة متنوعة من الخوارزميات الراسخة والتعقيدات الخاصة بكل منها ويستخدمون هذه المعرفة لاختيار الخوارزميات الأكثر ملاءمة للظروف مثال علا ذالك خوارزميات الشطرنج
  • خوارزميات الشطرنج
كانت "برمجة كمبيوتر للعب الشطرنج" في سنة 1950 عبارة عن ورقة تحمل خوارزمية "minimax" والتي هي جزء من تاريخ الخوارزميات المعقدة.
دورة "IBM Deep Blue" (شطرنج الحواسيب) هي جزء من البرنامج التعليمي لشعبة علوم الحاسوب بجامعة ستانفورد.

  • المنهجيات:
الخطوة الأولى في معظم عمليات تطوير البرمجيات الرسمية هي تحليل المتطلبات يليه اختبار لتحديد نمذجة القيمة والتنفيذ وإزالة الأعطال (تصحيح الأخطاء(Debugging)) هناك الكثير من الأساليب المختلفة لكل مهمة من هذه المهام أحد الأساليب الشائعة لتحليل المتطلبات هو استخدام تحليل الحالة يستخدم العديد من المبرمجين أشكالًا لتطوير برامج Agile حيث يتم دمج المراحل المختلفة لتطوير البرامج الرسمية معًا في دورات قصيرة تستغرق عدة أسابيع بدلاً من سنوات هناك العديد من الطرق لعملية تطوير البرمجيات.


  • قياس استخدام اللغة:
من الصعب جدًا تحديد أكثر لغات البرمجة الحديثة شيوعًا تتضمن طرق قياس شعبية لغة البرمجة ما يلي: 
  1. حساب عدد إعلانات الوظائف التي تذكر اللغة.
  2. عدد الكتب المباعة والدورات التعليمية التي تدرس اللغة (هذا يبالغ في تقدير أهمية اللغات الأحدث) 
  3. تقديرات عدد الخطوط الحالية من الشفرة المكتوبة باللغة (هذا يقلل من عدد مستخدمي لغات العمل مثل COBOL).

  • التنقيح:
تعد عملية تصحيح الأخطاء مهمة للغاية في عملية تطوير البرامج حيث أن وجود عيوب في أحد البرامج قد يكون له عواقب وخيمة على مستخدميه. تكون بعض اللغات أكثر عرضة لبعض أنواع الأخطاء لأن مواصفاتها لا تتطلب من المترجمين(compilers) أن يقوموا بالتحقق على قدر اللغات الأخرى. يمكن أن يساعد استخدام أداة تحليل الشفرة الثابتة في اكتشاف بعض المشكلات المحتملة. عادةً ما تكون الخطوة الأولى في تصحيح الأخطاء هي محاولة إعادة إنشاء المشكلة. قد تكون هذه مهمة غير تافهة على سبيل المثال مع العمليات المتوازية أو بعض الأخطاء البرمجية غير المعتادة. أيضًا يمكن أن تجعل بيئة المستخدم ومحفوظات الاستخدام من الصعب إعادة إنتاج المشكلة.

مبرمجون الحاسوب
مبرمجون الحاسوب هم الذين يكتبون برامج الحاسوب ولهم وضائفخاصه وتشمل ما يأتي. 
  • وظائف مبرجون الحاسوب:
  1. كتابة الشفرة.
  2. التصريف.
  3. التنقيح.
  4. التوثيق.
  5. الصيانة. 
  6. فحص البرمجيات.
  7. هندسة البنى البرمجية الضخمة. 

يقدم موقع قوود توينز Good Twins شروحات تعليمية للمشاكل التي يقع فيها المستخدم بالاضافة الى دورات مجانية مصورة لتسهيل وتسريع الفهم والتعلم في الكثير من المجالات ومنها Good, Twins seo , adsense, الربح من الانترنت