تعلّم البرمجة بلغة كوتلن (2): برمجة وخوارزميات الحاسب

تعلّم البرمجة بلغة كوتلن (2): برمجة وخوارزميات الحاسب
أستمع الى المقال

برمجة الحاسب:

برمجة الحاسب، هي عملية كتابة مجموعة من التعليمات والأوامر (الشيفرات البرمجية)، والتي يمكن لأجهزة الحاسب فهمها، لجعلها تقوم بمهام مختلفة. قد يكون الهدف من كتابة هذه التعليمات، هو إنشاء صفحة ويب أو تطبيق جوال أو لعبة كاملة أو جعل الحاسب يحل معادلة رياضية… الخ. تتطلب برمجة الحاسب مهارات فنية وتفكيرًا إبداعيًا. البعض يسميها علم والبعض يسميها فن.

كتابة التعليمات التي يمكن لأجهزة الحاسب فهمها:

كيف يمكنك كتابة هذه التعليمات؟ فكر في أجهزة الحاسب كشخص غبي جدًا لا يمكنه فهم أي شيء. إذا أردت من هذا الشخص أن يتصل بصديقك “فلان” عبر الجوال، عليك أن تعطيه التعليمات بهذه الطريقة:

  1. خذ الجوال.
  2. مرر يدك على الشاشة لإلغاء قفل شاشة الجوال.
  3. إذا كان الرقم السري مطلوب أدخل الرقم، وإلا اذهب إلى الخطوة التي تليها.
  4. اذهب إلى برنامج جهات الاتصال في الجوال.
  5. ادخل الاسم “فلان” في مربع البحث في برنامج جهات الاتصال.
  6. اضغط على اسم “فلان” لعرض معلومات الاتصال.
  7. اضغط على زر الاتصال.

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

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

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

نستخدم لغات البرمجة، لتنفيذ خوارزمية معينة. فمثلًا، إذا كان هناك خوارزمية عبارة عن خطوات تؤدي مهمة ما أو لحل مشكلة ما، يمكننا عبر إحدى لغات البرمجة عالية المستوى – مثل لغة كوتلن – توجيه تعليمات للحاسب لتنفيذ هذه الخوارزمية.

أنواع لغات البرمجة:

يمكن تقسيم لغات البرمجة إلى قسمين حسب قربها أو بعدها عن لغة الآلة.

لغات منخفضة المستوى:

هي لغة الآلة التي تتكون من الأرقام الثنائية وأيضا اللغات القريبة منها مثل لغة التجميع أسيمبلي Assembly. وإن كانت أسيمبلي تحتوي على بعض الكلمات الإنجليزية، ولكنها تبقى لغة معقدة جدا وأقرب للآلة منها للغات البشرية.

لغات عالية المستوى:

هذه هي اللغات التي تستخدم رموز وكلمات باللغة الإنجليزية، لذا تكون سهلة التعلم وسريعة الإنتاج أكثر بكثير من اللغات منخفضة المستوى. كمثال لهذه اللغات لدينا: جافا و#C وبايثون وكوتلن.

ولكن هل فعلا تفهم أجهزة الحاسب لغات البرمجة مثل لغة كوتلن، والتي سنكتبها باللغة الإنجليزية؟ 

لا، أجهزة الحاسب لا تفهم اللغات البشرية مثل: الإنجليزية والعربية وغيرها. ولكنها تفهم لغة الآلة (Machine Code) وهي عبارة عن شيفرات تتكون من سلاسل من الصفر والواحد (1,0). يتم استخدام قيمتي الصفر والواحد، لتبيين أن الحاسب لا يفهم إلا قيمتين متعاكستين: تيار كهربي مار (يُمثل بالرقم واحد) أو لا يوجد تيار مار (يُمثل بالرقم صفر).

إذاً، لجعل الحاسب يفهم تعليماتنا المكتوبة بلغة كوتلن، نحتاج لـ محول برمجي والتسمية الأشهر له هي المترجم وبالإنجليزية يسمى compiler، يترجم هذه التعليمات إلى لغة الآلة.

ويأتي هذا المترجم compiler مرفقا مع العديد مع بيئات التطوير IDE، والتي هي عبارة عن برامج نستخدمها في كتابة شيفرات تطبيقاتنا وتساعدنا أيضا في اكتشاف الأخطاء التي قمنا بها أثناء كتابة الشيفرات بكل سهولة.

من ضمن هذه البرامج الرائعة، برنامج IntelliJ IDEA، وهو البرنامج الذي سنستخدمه في هذه السلسلة من دروس تعلم كوتلن. وكما يظهر في الصورة التالية، أن برنامج IntelliJ IDEA، يحتوي على مترجم خاص بلغة كوتلن.

صورة من برنامج IntelliJ IDEA والذي يحتوي مترجم compiler خاص بلغة كوتلن.

جعل أجهزة الحاسب تؤدي المهام:

فهمنا من الفقرة السابقة، بأننا نستخدم لغات البرمجة لجعل أجهزة الحاسب تؤدي المهام التي نطلبها منها. ولكن أي لغات البرمجة يجب أن نختار من بين المئات منها؟ حسنا، هذا يتوقف على إجابة السؤال عن: ما هي المهام التي سنجعل الحاسب يقوم بها؟ 

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

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

الخوارزميات:

الكثير من الأشياء التي نقوم بها يوميًا تشبه الخوارزميات. لنفترض أنك تريد طهي وجبة المعكرونة. للقيام بذلك بنجاح، هناك مجموعة معينة من الخطوات التي يجب عليك اتباعها بترتيب معين كما في الصورة التالية:

مصدر الصورة موقع: gcfglobal.org
  • أولاً، ستحتاج إلى غلي قدر من الماء. 
  • بمجرد أن يغلي الماء، يمكنك إضافة المعكرونة وطهيها لفترة محددة من الوقت مع التحريك من حين لآخر. 
  • بعد أن تنضج، تقوم بتصفية الماء من القدر، لتصبح وجبة المعكرونة جاهزة للتقديم بعد إضافة الصلصة.

هذه العملية برمتها هي في واقع الأمر خوارزمية. لأنك اتبعت هذه الخطوات بترتيب معين، فقد وصلت إلى النتيجة المرجوة: طبق معكرونة لذيذ.

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

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

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

مصدر الصورة موقع: gcfglobal.org

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

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

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

هل أعجبك المحتوى وتريد المزيد منه يصل إلى صندوق بريدك الإلكتروني بشكلٍ دوري؟
انضم إلى قائمة من يقدّرون محتوى إكسڤار واشترك بنشرتنا البريدية.