Showing posts with label برمجة. Show all posts
Showing posts with label برمجة. Show all posts

Thursday, July 13, 2017

التعامل مع ملفات تعريف الإرتباط (الكوكيز) بإستخدام جافاسكربت

هذه نسخة مُترجمة من الموضوع التالي: JavaScript: Working With Cookies

ما هي الكوكيز؟


السُؤال الصحيح هو "ما هي كوكيز الشبكة؟". كوكيز الشبكة هي قطعة صغيرة من البيانات النَصية اللتي تقوم بعض المواقع بتزويدها و
تخزينها مُوئقتا بِحاسُوب مُستخدم الموقع. الهَدفْ الاساسي من إستعمال الكوكيز (او ملفات تعريف الإرتباط) هو تزويد صفحات عديمة الحالة وجعل لها حالة. فمثلا,
إذا كان لدينا موقع يخدم أكثر من لُغة, بالإمكان إستخدام الكوكيز لجعل صَفحات الموقع تَتَذكر خِيار المُستخدم.


ملفات تعريف إرتباط الشبكة تتكون من ثلاثة مُكوِنات:

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



my_name = ibrahim


هذا ابسط ملف تعريف إرتباط من المُمكن إنشاءه. فلهُ الإسم "my_name" و لهُ القيمة "Ibrahim".



إنشاء ملف تعريف الإرتباط


عملية إنشاء ملفات تعريف الإرتباط بجافاسكربت سهلة جدا. الجُملة التالية تُستخدم لإنشاء ملف تعريف الإرتباط السابق.



document.cookie = "my_name = ibrahim";



عند إنشاء ملف تعريف الارتباط، فمن الأفضل تحديد موعد إنتهاء للملف. إذا لم يَتم تَحديد موعد إنتهاء الصلاحية،فإن الملف سوفَ ينتهي بِمُجرد إغلاق نافذة المتصفح.


document.cookie = "my_name = ibrahim; expires = Sat, 04 Feb 2017 19:43:41 UTC";

ومن المُمَارسات الجَيدة تَحديد موعِد الإنتهاء بإستعمال UTC (التوقيت العالمي) بِما أن زُوار الموقع على شبكة الإنترنت قد يكونون من مناطق زَمنية مُختلفة.

تَحديد وقت إنتهاء مُخصص

لجعل ملف تعريف الإرتباط ينتهي بعد وقت محدد، يمكننا استخدام الكائِنْ "Date" لعمل هذا.


//إنشاء كائن جديد من نوع Date

var date = new Date();

//نُريد ملف تعريف الإرتباط ان ينتهي بعد خمسة ايام

var days = 5

var currentTime = date.getTime()

/*

لاحظ ان الثاية تحتوي على 1000 ميلي ثانية

و الدقيقة تحتوي على 60 ثانية و

الساعة تحتوي على 60 دقيقة و اليوم يحوي 24 ساعة

5 days = 1000*60*24*5 = 432000000 ميلي ثانية

إذا اردنا مِن ملف تعريف الإرتباط ان ينتهي بعد ساعتين,

علينا تحديد الوقت الحالي ليكون (الوقت الحالي + 1000*60*120)

*/

date.setTime(currentTime + 1000*60*60*24*days);

document.cookie = "my_name = ibrahim; expires = "+date.toUTCString();





تغيير مُحتوى ملف تَعريف الإرتباط


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


//هذا ملف تعريف الإرتباط الجديد

document.cookie = "my_name = ibrahim; expires=Sat, 04 Feb 2017 19:43:41 GMT";



//هذا نفس الملف بالقيمة الجديمة

document.cookie = "my_name = ali; expires=Sat, 04 Feb 2017 19:43:41 GMT";



لِعَرض جميع ملفات تعريف الإرتباط لِموقع على شبكة الإنترنت، ببساطة نستخدم التالي:


allCookies = document.cookie;

console.log(allCookies);

ما سوفَ نَحصل عليه هو في الوَاقع سِلسلة نصية تُظهر كافة ملفات تعريف الارتباط المتاحة التي تَم إرسالها من قبل الموقع على شبكة. للحصول على قيمة الكعكة محددة، علينا أن نبني إجراء يستطيع تقسيم ملفات تعريف الإرتباط.



حَذف ملف تَعريف الإرتبط



لِحذف ملفات تعريف الارتباط، علينا فقط تحديث تاريخ انتهاء الصلاحية إلى تاريخ قد مضى. ولكن قبل عمل هذا، علينا تَعيين قيمة المِفتاح "path". فبعض المُتصفحات لا تسمح بحذف ملف تعريف الإرتباط دُون تحديد هذا المفتاح.



//إنشاء ملف تعريف الإرتباط

document.cookie = "my_name = ibrahim; expires = Sat, 04 Feb 2030 19:43:41 UTC;path=/";

//حذف ملف تعريف الإرتباط

document.cookie = "my_name = ibrahim; expires = Sat, 04 Feb 2010 00:00:00 UTC;path=/";



Thursday, July 6, 2017

لغات البرمجة و تصنيفها بشكل مبسط


مُقدمة

تُوجد الكثير من لغات البرمجة حول العالم و لِكُل لُغة هدف معين تَخدُمه و مِنصَة تدعمُها. بِشكل عام , من الصعب تصنيف لغات البرمجة. ففي الكثير من الأحيان, نستطيع ان ننظُر الى لٌغة البرمجة من عدة نواحي و نستطيع تصنيفها في اكثر من مكان.في هذه الصفحة سوف ننظر الى التصنيفات الأساسية المُعتمدة لِلٌغات البرمجة.


تصنيف لُغات البرمجة مِن حيث التواصل مع الأجهزة الملموسة

يُقصد بِالأجهزة المَلمُوسة (او الأجهزة الطرفية) المُعالج و ذاكرة الوصول العشوائي او اي جهاز ملموس مِن المُمكن كِتابة تعليمات برمجية له. تحت هذا التصنيف, يوجد نوعين مِن لُغات البرمجة:

لغات برمجة عالية المستوى (High Level Programming Languages)

اللغات عالية المستوى هي لغات يستطيع البشر فهمها بشكل سهل. فهي قريبة الى مستوى اللغة الطبيعية اللتي يفهمها الإنسان. هذا النوع من اللغات لا تنظر بشكل مباشر الى الاجهزة الملموسة مثل الذاكرة او المعالج. يستطيع المبرمج كتابة الشيفرة البرمجية بدون القلق على ادارة الذاكرة او المعالج. مِن اشهر لُغات البرمجة الموجودة تحت هذا التصنيف هي لُغة جافا. بِشكل عام, الكثير مِن المُبرمجين يتعلمون هذا النوع مِن اللُغات.


لغات برمجة منخفضة المستوى (Low Level Programming Languages)

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



التصنيف العام

بعد معرفتنا للتصنيف الاول, هنالك نوع آخر من التصنيف. هذا التصنيف يسمى بالتصنيف العام. تحت هذا التصنيف, توجد ثلاثة اقسام:
  • لغات برمجة ذات مجال معين
  • نمط البرمجة
  • برمجة نصية

لغات برمجة ذات مجال معين (Domain-specific Programming Languages)

اللغات التي تحت هذا الصنف تم تصميمها لتخدم مجال معين. فمثلا, هناك لغات تستخدم لبرمجة الصوت. و هناك لغات تستخدم لأهداف تعليمية. و هنالك لغات تستخدم لبرامج الإنترنت. من اللغات اللتي تستخدم لبرمجة صفحات الإنترنت: جافاسكربت, اتش تي ام ال, سي اس اس.


نمط البرمجة (Programming Paradigm)

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

برمجة كائنية التوجه (Object Oriented)
يتم التعامل مع الشيفرة البرمجية على انها كائنات لها خصائص معينة و تقوم بإجرائات محددة. فمثلا, من الممكن ان يكون لدينا كائن اسمه "طالب". و كائن آخر اسمه "مدرس" من الخصائص التي لديه هي "الإسم" و "العمر" و "الدرجة" مثلا. و من الإجرائات التي يمكنه القيام بها هي "المذاكرة". و من الإجرائات التي يعملها المدرس هو "وضع الدرجة للطالب". من اللغات الموجودة تحت هذا الصنف: جافا, سي بلص بلص, بي اتش بي, اكشن سكربت.


برمجة اجرائية (Procedural)
البرمجة الإجرائية لا يوجد بها كائنات. كل ما تحتويه الشيفرة البرمجية هو اجرائات فقط . من اللغات الموجودة تحت هذا الصنف: لغة سي



برمجة نصية (Scripting Languages)

اللغات اللتي تحت هاذا الصنف لا يتم عمل تجميع لها. فقط يتم تشغيلها كما هي بواسطة محركات . من اللغات الموجودة تحت هذا الصنف: جافاسكربت, بي اتش بي, اكشن سكربت.


Thursday, May 11, 2017

تخصص هندسة البرمجيات, الفرق بينه و بين تخصصات الكمبيوتر الأخرى


مقدمة

كثير من الناس في هذه الايام تسمع بتخصص هندسة البرمجيات (Software Engineering) ولكن لا تعرف الفرق بينه و بين اي تخصص آخر يتعلق بالحاسوب مثل تخصص علوم الكمبيوتر (Computer Science) او هندسة الكمبيوتر (Computer Engineering). إذا, ما هو تخصص هندسة البرمجيات؟ و ما هي المناهج اللتي يقومون بدراستها؟ كل هذا و اكثر سوف نتعرف عليه هنا.
المواضيع اللتي سوفَ اتحدث عنها:


تعريف التخصص

هو تخصص يهتم بدراسة بناء البرامج الحاسوبية من الصفر و حتى النشر بطريقة منظمة و غير عشوائية. هندسة البرمجيات ليس فقط مجرد كتابة تعليمات برمجية. بل هي عملية تهتم بتوصيل منتج الى عميل معين بأقل كلفة و في اسرع وقت ممكن. من اجل عمل هذه الاهداف، يدرس من يختار تخصص هندسة البرمجيات عدة مواد تهتم بدراسة دورة حياة المُنتج البرمجي (Software Product Life Cycle).

مراحل دورة حياة المُنتج البرمجي

بشكل عام، هذه الدورة تتألف من خمس مراحل:
  • مرحلة تجميع المتطلبات.
  • مرحلة التصميم.
  • مرحلة التنفيذ.
  • مرحلة الإختبار.
  • مرحلة الصيانة.
لِكل مرحلة مِن مراحل الدورة توجد مُخرجات و مُدخلات و جميع المراحل مُتصلة بِبعضها البعض. ترتيب هذه المراحل يعتمد بِشكل مُباشر على نوع نموذج دورة حياة النظام البرمجي (Software Process Model). بِشكل عام, توجد  ثلاثة نماذج, نموذج الشلال (Waterfall Model), النموذج الحلزوني (Spiral Model)  ومنهجيات آجَايل (Agile​ Methodologies).



وصف مراحل دورة حياة المُنتج البرمجي في نموذج الشلال

في هذا القسم, سوف نتعرف على تفاصيل كُل مرحلة مِن مراحل بِناء المُنتج البرمجي و ما هي مُدخلات و مُخرجات كُل مرحلة في نموذج الشلال. هذا النموذج يُعتبر واحد مِن الأنظِمة الكلاسيكية و اللتي كانت تُستخدم بِشكل كبير.

مرحلة تجميع المُتطلبات (Requirements)

هذه المرحلة تُعتبر حجر الأساس لجميع المراحل. حيثُ انه اي خطأ بهذه المرحلة سوف يكون له تأثير مُكلف جداً و قد يكون إصلاحه صعب. في هذه المرحلة يقوم مُهندس البرمجيات بِتجميع مُتطلبات العميل عبر عِدة طرق. من هذه الطرق هي عمل مُقابلات مع العميل و عصف الذهن و عمل إستطلاعات. ايضاً في هذه المرحلة يقوم مُهندس البرمجيات بِكتابة ما يُسمى بِ "وثيقة مُتطلبات البرنامج (Software Requirements Document)". هذه الوثيقة تحتوي على جميع مُتطلبات العميل و مصدرها و هل تم التَأكُد مِن صحتها ام لا. يتِمُ ايضاً بِهذه المرحلة عمل ما يُسمى ب "مُخطط حالة الإستخدام (Use Case Diagram)" و مُخطط التَسَلسُل (Sequence Diagram)". يُستخدم المخطط الأول لتوفير صورة عامة حول حالات الإستخدام اللتي مِن المُمكِن ان يقوم المُستخدم بإستخدام المُنتج البرمجي فيها. المُخطط الثاني يُستخدم لِتوضيح جميع الأحداث اللتي مِن المُمكِن ان تحصل في حالة حُصول إحدى حالات الإستخدام. لِكُل حالة إستخدام يوجد مُخطط تسلسُل.

Use Case Diagram
مثال على مُخطط حالة الإستخدام


مرحلة التصميم (Design)

بعد مرحلة تجميع المُتطلبات, تبدأ المرحلة التالية مِن دورة حياة المُنتج البرمجي الا وهي مرحلة التصميم. في هذه المرحلة, يتِمُ إستخدام وثيقة مُتطلبات المُنتج البرمجي لِتَصميم البرنامج. ايضاً في هذه المرحلة يُقسمْ البرنامج الى عِدة كُتل مُصغرة تُسمى ب "انظِمة مُصغرة (Sub-Systems)". كُل كُتلة يتم تَصغِيرها إلى وَحَدات اصغر تُسمى بالصُفوف او الفُصول (Classes). عِند تجميع الصفوف مع بعضها البعض, سوف نحصل على ما يُسمى بِ "مُخطط الصف (Class Diagram)". و عِند تجميع البرامج المُصغرة سوف نحصل على ما يُسمى بِ "مُخطط الرُزمة (Package Diagram)". ايضاً في هذه المرحلة يتِم تحديد الخوارزميات (Algorithms) و لغة البرمجة اللتي سوف يتم إستخدامها في مرحلة كِتابة التعليمات البرمجية. مٌخرجات هذه المرحلة سوف تكون وثيقة تصميم البرنامج (Software Design Document).

مِثال على مُخطط الرزمة و نرى اسماء الصفوف داخل كُل رُزمة


مرحلة التنفيذ (Implementation)

هذه المرحلة تُعتبر مِن اسهل مراحل دورة حياة المُنتج البرمجي. في هذه المرحلة يبدأ الفريق المسؤول عن المُنتج البرمجي في عملية كِتابة التعليمات البرمجية. يتِم إستخدام وثيقة تصميم البرنامج و وثيقة مُتطلبات البرنامج كمرجع لِهذه المرحلة. المُخرج النهائي لِهذه المرحلة هو المُنتج البرمجي.

في مرحلة التنفيذ, يتِم كتابة التعليمات البرمجية


مرحلة الإختبار (Testing)

في هذه المرحلة, يتم إختبار البرنامج مِن اجل التأكُد مِن صِحة مُخرجاته. مِن اجل هذه العملية, يقُوم مُهندس البرمجيات بِكِتابة خُطة إختبار المُنتج البرمجي (Test Plan). هذه الخُطة تحتوي على طريقة إختبار البرنامج و كيفية تشغيل حالات الإختبار (Test Cases). ايضاً هذه الخطة تحتوي على نتيجة تشغيل كُل حالة إختبار على البرنامج و نِسبة نجاح الإختبارات.


مرحلة الصيانة (Maintenance)

بعد الإنتهاء مِن إختبار البرنامج و تنصيبه في بيئة التشغيل, تبدأ اطول مرحلة مِن مراحل دورة حياة المُنتج البرمجي, الا وهي مرحلة الصيانة. في هذه المرحلة يتمُ عمل إصلاحات دورية للبرنامج في حال وجود أخطاء برمجية (Bugs) بعد التثبيت. ايضاً في هذه المرحلة يتِم توفير الدعم و المُساعدة للأشخاص اللذين سوفَ يقومون بِإستِخدام المُنتج البرمجي.

تحديثات نظام التشغيل تعتبر واحدة من مراحل حياة النظام البرمجي



مناهج تخصص هندسة البرمجيات بِجامعة الملك فهد للبترول و المعادن

بما انني درست تخصص هندسة البرمجيات بِجامعة الملك فهد للبترول و المعادن, سوف اقوم بِوضع شرح مُبسط لِكُل منهج اساسي مِن مناهج تخصص هندسة البرمجيات بجامعة الملك فهد للبترول و المعادن. عِلماً بأنه تُوجد بعض المناهج اللتي لم اذكرها هنا.

SWE 205: Introduction to Software Engineering

هذا المنهج هو مقدمة لِجميع مراحل دورة حياة المُنتج البرمجي. سوف يتم التحدث فيه عن كُل مرحلة بِشكل مُبسط و ما يحصل بها. ايضا سوف يتعلم الطالب عن ما يُسمى بِ نماذج دورات حياة النظام البرمجي (Software Process Model). هذه النماذج تُعتبر حجر الأساس في العمليات اللتي يقوم بِها مٌهندس البرمجيات. بِشكل عام, سوف يتم التحدث عن ثلاثة انواع, نموذج الشلال (Waterfall Model), النموذج الحلزوني (Spiral Model)  ومنهجيات آجَايل (Agile Methodologies).


SWE 215: Software Requirements Engineering

بعد تعَلُم اساسيات دورة حياة المُنتج البرمجي, سوف يتعلم الطالب في هذا المنهج على تفاصيل المرحلة الأُولى مِن الدورة. في هذا المنهج سوف تتعلم عن طُرق تجميع و إستخراج و تَتَبُع مُتطلبات العميل و كيفية كتابة وثيقة مُتطلبات المُنتج البرمجي (Software Requirements Document). ايضا سوف تتعلم التعامل مع التغيرات الغير مُوتوقعة في مُتطلبات العميل.


SWE 312: User Interface Design

هذا المنهج يعتبر منهج غير اساسي لكنه يعتبر مُهم. في هذا المنهج سوف يتعلم الطالِب عن انواع واجهات المستخدم المُختلفة (User Interface) و كيف يتعامل المُستخدم معها. كما نعلم كُل تطبيق برمجي له واجهة مُستخدم مُختلفة. فمثلاً, نجد ان للهواتف النقالة طريقة مُختلفة في إبراز واجهة المُستخدم عن تطبيقات سطح المكتب. ايضاً سوف تتعلم عن طُرق إنشاء واجهة مُستخدم سهلة الإستخدام. و بالنهاية, سوف تتعلم عن طُرق إنشاء دليل لكيفية تعامل المُستخدم مع المُنتج البرمجي.


SWE 216: Software Design and Architecture

هدف هذا المنهج هو تَعَلُم الطُرق المُختلِفة المُستخدمة في تصميم البرنامج. ايضاً سوف يتعلم الطالب في هذا المنهج الأهداف المُختلفة للتصميم. فعلى سبيل المِثال, قد يكون هدف التصميم هو زيادة امان النظام. او قد يكون هدف التصميم هو جعل عملية الصيانة اسهل. في نهاية هذا المنهج, سوف تتعلم كيفية كِتابة وثيقة تصميم البرنامج (Software Design Document).


SWE 326: Software Testing and Quality Assurance

في هذا المنهج يقوم الطالب بِتعلُم الطُرق المُختلفة المُستخدمة في إختبار البرنامج. ايضاً في هذا المنهج يتِم تدريس الطالب عن مفهوم جودة البرنامج و مقاييس الجودة اللتي يتِم إستخدامها لِتقييم المُنتج البرمجي. بالنهاية, سوفَ يقوم الطالب بِكِتابة خُطة إختبار البرنامج و يقوم بِتَنفيذها على مشروع برمجي صغير.


SWE 363: Web Engineering and Development

إن هذا المنهج يُعتبر مُقدمة لِتِقنيات الشبكة و كيفية عمل الإنترنت بشكل عام. سوفَ يتِم التحدث عن تطبيقات الشبكة و لُغات البرمجة المُستخدمة في عمل صفحات الشبكة مثل إتش تي إم إل (HTML) و جافاسكربت (JavaScript) و سي إس إس (CSS). ايضاً سوفَ يتِم التحدث عن الفرق بين العميل (Client) و الخادم (Server) بشكل مُختصر.


SWE 387: Software Project Management

هذا المنهج هو مُقَدِمة لِمفاهيم إدارة المشاريع و الطرق المُستخدمة في إدارة المشاريع البرمجية. بشكل عام, سوفَ يتِم التحدث عن المواضيع التالية, ادارة الموارد البشرية (Human Resources Management), تخطيط المشروع (Project Planning), مُراقبة المِيزانية (Budget Control) و كيفية تحليل المخاطر (Risk Analysis). سوفَ يتِم دراسة هذه المواضيع مِن منظور مُهندس البرمجيات.



هندسة البرمجيات و سوق العمل

مِن المُمكن ان يعمل خريج هندسة البرمجيات في عِدة مجالات. بِشكل عام, الخريج الحديث إما يعمل كمٌبرمج (Programmer) او يعمل كمُهندس إختبار (Test Engineer). مُهندس الإختبار هو الشخص اللذي يقوم بإنشاء و تشغيل الإختبارات على البرنامج. ايضا تُوجد اعمال أُخرى لِخرجي هذا التخصص. فعلا سبيل المِثال, من المُمكن ان يعمل خريج هذا التخصص كمُهندس مُتطلبات (Requirements Engineer) او مُهندس مِعمارية البرنامج(Software Architecture Engineer). غير هذه الوظائف, تُوجد مُسميات أُخرى لِعدة مناصِب من المُمكن ان يتوظف خريج هندسة البرمجيات فيها و منها:
  • مُطور تطبيقات أندرويد (Android Developer).
  • مُطور تطبيقات آيفون (IPhone Developer).
  • مُطور تطبيقات ويندوز (Windows Developer).
  • مُطور تطبيقات الشبكة (Web Developer).
  • رئيس فريق التطوير (Team Lead).
  • مُصمم مواقع إلكترونية (Web Designer).
  • مطور العاب (Game Developer).
  • مُصمم العاب (Game Designer).
  • مسؤول موقع إلكتروني (Webmaster).
  •  مدير قاعدة بيانات (Database Administrator).


الخاتمة

كما نرى, تخصص هندسة البرمجيات يختلف بشكل عام عن تخصص عُلوم الكمبيوتر و هندسة الكمبيوتر. كثير مِن الناس تُفكر بأن مُهندس البرمجيات يعمل فقط على كتابة البرامج و نشرها لكن بالواقع تُوجد عملية طويلة خلف البرنامج. شيء آخر مِن المُمكن قوله عن مُهندس البرمجيات هو انه  لابُد مِن ان يدرس مُعظم مواد عُلوم الكمبيوتر. فلِهذا السبب نستطيع القول بأن كُل مُهندس برمجيات هو عالم كُمبيوتر و ليس كُل عالم كُمبيوتر مُهندس برمجيات.

Saturday, April 22, 2017

اسئلة و اجوبة حول تعلم البرمجة


مُقدمة

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


ماذا نقصد بلُغة برمجة؟

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


ماذا نقصد ب "منصة برمجية"؟

المنصة هي البنية التحتية التي من الممكن استخدامها لتشغيل التعليمات البرمجية. بشكل عام, المنصة البرمجية هي التي تجعل الحاسب الآلي يعمل بالشكل المطلوب. المنصة قد تكون برمجية (مثل منصة جافا) او قد تكون برمجية مع اجهزة خارجية ملموسة بنفس الوقت (مثل انظمة التشغيل). من الممكن ايضا اعتبار مُتصفح الإنترنت منصة بما انه يستطيع تشغيل التعليمات البرمجية.


ما هي لغات البرمجة الموجودة حاليا و ما هي المنصات التي يمكن البرمجة لها؟

هناك العديد من لغات البرمجة الموجودة و من الصعب احصائها كلها. ايضا من الصعب تحديد المنصات اللتي تدعمها كل لغة برمجة. قبل الإجابة على هذا السؤال, يجب علينا معرفة انواع لغات البرمجة. و معرفة انواع لغات البرمجة ليس بالأمر السهل اذا كانت هذه البداية لك بعالم البرمجة. يمكنك الذهاب الى هذا الرابط لتتعلم حول تصنيف لغات البرمجة بشكل مبسط. سوف اقوم فقط بذكر لغات البرمجة المعروفة مع المنصات الأساسية اللتي تدعمها فقط. الجدول التالي يبين المنصات مع لغات البرمجة.
لغة البرمجةالإسم بالإنجليزية المنصات المدعومة
لغة برمجة جافا Java Programming Language متعدد (منها اندرويد, ويندوز, لينيكس)
لغة بي اتش بي PHP Language ويندوز, الأنظمة اللتي تشبه يونيكس
لغة سي بلص بلص C++ Language متعددة (وينوز, لينيكس)
لغة جافاسكربت JavaScript Language متصفحات الإنترنت
اتش تي ام ال HTML متصفحات الإنترنت
سي اس اس CSS متصفحات الإنترنت


ما هي اول لغة برمجة يجب ان اتعلمها؟

لا توجد اجابة محددة لهذا السؤال. اول لغة برمجة تعاملت معها كانت اتش تي ام ال. لكن اول لغة برمجة تعلمها كانت لغة جافا. بالنسبة للغات التي تستخدم لبرمجة صفحات الإنترنت, لا انصح البداية بها. انصح بتعلم لغة ذات مستوى رفيع مثل لغة جافا او لغة سي. فبِتعلمك لهذه اللغات, سوف تتعلم اساسيات علوم الكمبيوتر.