ما هي أفضل لغة برمجة يجب أن أتعلمها

نشر issam 2020-08-06 في دروس ونصائح تقنية

ما هي أفضل لغة برمجة يجب أن أتعلمها

أقدّم لك في هذا المقال حصيلة خبرة طويلة في البرمجة لتساعدك في البدء بالتعلم في مجال البرمجة

هذا هو السؤال الذي حيّر العلماء، واختلفت عليه الفلاسفة منذ قدم العصور، ما هي أفضل لغة برمجة يجب أن أتعلمها؟

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

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

وهنا يحضرني السؤال الهام: ما هو الهدف؟

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

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

 

أولاً: برمجة المواقع الالكترونية والخدمات السحابية:

اللغة المفضلة: python

  • وهنا يجب أن أذكر الـ Frontend (التصميم والواجهات) حيث يعتمد على لغات الترميز html, css ولغة البرمجة javascript

تنقسم المواقع الالكترونية إلى ثلاث أقسام: المشاريع الصغيرة - المشاريع المتوسطة - المشاريع الكبيرة

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

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

عيوبها: ليست آمنة مقارنة باللغات الأخرى، سقفها محدود بالمشاريع الصغيرة إلى المتوسطة

سؤال:

ولكن فيسبوك تم بناؤه بلغة php

جواب:

نعم ولكن فريق فيسبوك كبير ومحترف، وأصلاّ منذ ثلاث أو أربع سنوات أنشأوا لغة برمجة خاصة بهم سموها HHVM وهي الآن اللغة المستخدمة في الفيس بوك

 

المشاريع المتوسطة:

إذا كنت ترغب بالعمل في مجال برمجة وتصميم المواقع فإنك لن تقتصر على المشاريع الصغيرة وستحتاج للغات برمجة تستطيع أن توسع مدى قدراتك، وهنا لديك عدة خيارات أذكر منها ruby on rails, python, php

تستطيع هذه اللغات أن تقوم ببناء مشاريع متوسطة بكل احترافيّة وجميعها سهلة التعلّم ولكن كونك تقرأ هذا المقال باللغة العربيّة فإن الطلب قليل على ruby on rails في سوق العمل في الشرق الأوسط وبعض دول آسيا (لم ازرهم كلّهم فقلت بعض) (حسناً لم أزر إلّا دولة واحدة هل تريد أن تتعلم مني البرمجة أم السياحة؟) والأفضل هنا أن تتعلم لغة البرمجة python حيث أنها دون منازع أحد أفضل لغات البرمجة في العالم بسبب ميزاتها وهي:

سهولتها، سرعتها، أمانها، قدرتها على التوسع دون سقف، قدرتها على عمل كل المشاريع صغيرة متوسطة وكبيرة

عيوبها: مجتمعها لا يقارن بمجتمع ال php حيث أن مجتمع ال php هو الأكبر على الإطلاق وهذه سمة جيدة وسيئة في نفس الوقت في لغة  php

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

المشاريع الكبيرة 

وهنا دون منافس أنصحك بتعلم java ولأكون أكثر وضوحاً java spring

حيث أن هذه اللغة مع إطار العمل هي المفضلة لدى البنوك، والشركات العالمية، بسبب مستوى الأمان الهائل فيها، وعلى الرغم من أن python تستطيع تقديم نفس الأداء بل ربما أفضل إلى أن سوق العمل ليس منطقيّاً دائماً فالشركات الكبرى تفضل java spring لبناء مشاريعها

 

ثانياً: تطبيقات الجوال

اللغة المفضلة: dart ,  java, swift

وهنا أتحدث عن تطبيقات وليس ألعاب الجوال حيث سأتحدث عن الألعاب لاحقاً

معظم تطبيقات الجوال تحتاج لما يسمى Api وهو المكان الذي يقدم المعلومات والبيانات للتطبيق عبر الانترنت، وينطبق على ال api ما ينطبق على تصميم المواقع في القسم السابق، حيث أن ال api هو في النهاية موقع الكتروني او خدمة سحابية

أما عن التطبيقات نفسها فهناك ثلاث خيارات

hybrid apps

 لا انصحك لا بتعلمها ولا بالعمل بها جميعها تكتب بلغة javascript مثل cordova, react native, ionic

native apps

وهي التطبيقات المبنية بنفس لغة برمجة الجهاز ولغاتها هي

java or Kolten  بالنسبة لـ   android

swift or objective-c  بالنسبة لـ iOS

وهي بلا منازع الأفضل، والأقوى والأسرع

 عيوبها: تحتاج لبناء تطبيقين (واحد لكل منصة) مما يزيد الكلفة على العميل

Flutter

وهي إطار عمل لبناء تطبيقات جوال لكل المنصات من مكان واحد بدون الحاجة لبناء تطبيقين مكتوبة بلغةDart  ويجب أن أشرح هنا لماذا وضعت flutter في تصنيف لوحدها، إن جميع الجوالات تقوم بتحويل التطبيقات الى لغة c أو لغة c++ عند معالجتها ولكن هذه اللغات طبعا لغات ليست سهلة ويصعب كثيراً بناء تطبيقات بها، وبناء عليه تقوم بعض المكتبات بتحويل الأكواد من لغات برمجة مختلفة إلى لغة c++ وتقدم لك حلاً لمشكلة التطبيقين، بحيث تقوم ببرمجة وتصميم تطبيق واحد لكلا المنصتين وعلى الرغم من وجود الكثير من المنافسين لـ flutter الى أنها الوحيدة التي أثبتت جدارتها حتى الآن كونها مدعومة من العملاقة غوغل والتي تمتلك بالأصل نظام التشغيل android

امثلة عن المنافسين

 Xamarinسيئة جدا ولا أنصحك بها نهائياً

 react nativeتعمل بلغة javascript وهي لغة ضعيفة جدا ومليئة بالمشاكل ولأنها لا تصلح لأن تكون لغة برمجة خاصة بتطبيقات الجوالات قامت غوغل بإنشاء لغة جديدة اسمها dart لبناء flutter

عيوب flutter

ما زال الدعم الفني لها ضعيف كونها جديدة نسبيّاً على الساحة، ولكن كون عملاق التكنلوجيا غوغل تدعمها فهي سريعة التطور وسريعة النمو.

ملاحظة:

في عالم البرمجة هناك نوعين من لغات البرمجة، لغات البرمجة مفتوحة المصدر، ولغات البرمجة مغلقة المصدر، ولآن المبرمجين شبه مجتمعين على كراهية اللغات مغلقة المصدر فإنني لم أذكر لغة البرمجة القوية c# والتي تستطيع باستخدام إطار العمل الخاص بها  ASP.net   بناء مشاريع صغيرة وكبيرة أيضاً، ولكن كون اللغة مغلقة المصدر وخاصة فقط بمايكروسوفت فهي لغة غير مفضلة من قبل المبرمجين باستثناء الجامعات في الدول الفقيرة والتي ما زالت تدرّس مناهج قديمة مبنية تماماً على c# دون الاكتراث إلى أن العالم يتطور واستخدام c# أصبح محدوداً جداً وله الكثير من العيوب ذكرت منها أنه مغلق المصدر، وأذكر أيضاً بطئها، والبقاء تحت رحمة مايكروسوفت بتطويرها، واجبارك على استخدام سيرفرات ويندوز لرفعها اون لاين وطبعا لا داعي لذكر الفرق بين سيرفرات لينكس وسيرفرات ويندوز حيث أن 90% من سيرفرات العالم كلها لينكس.

 

ثالثاً: برمجة الألعاب

اللغة المفضلة: c#, c++

وهنا تعمدت وضع الملاحظة السابقة لكي أقول أنه في عالم الألعاب فإن لغة البرمجة c# و c++ هي الأفضل والأقوى دون منازع، ولا يخفى على أحد سيطرة نظام التشغيل windows على سوق الألعاب العالمي، ولهذا السبب فإنه من الطبيعي أن لغة البرمجة الخاصة ب Microsoft   هي افضل لغة برمجة للألعاب، وحتى بالنسبة لألعاب الجوال فإن برامج برمجة وتصميم الألعاب مثل unreal engine, unity  أصبحت تدعم تصدير الألعاب للموبايل وعلى الرغم من وجود بدائل برمجيّة أخرى لبرمجة الألعاب إلى أن c# تتربع العرش في هذا المجال.

 

رابعاً: الذكاء الصنعي وتعلّم الآلة

اللغة المفضلة: python

وهنا لديك خيارين python, java وكلاهما ممتازين ولكن google فضلت python و عن نفسي أيضا أفضل python وأنصحك بها في حال أردت الدخول في عالم الذكاء الصنعي وتعلّم الآلة فهي اللغة المتربعة على العرش في هذا المجال.

 

خامساً: تطبيقات سطح المكتب

اللغة المفضلة: java

وهي البرامج التي يتم تنصيبها على النظام وتعمل مع أو بدون انترنت، وتختلف عن البرامج السحابية بأنها لا تحتاج الانترنت لتعمل بشكلها الصحيح، مثل برنامج  Micorosft office ، أو الفوتوشوب.. الخ

وهنا يعتمد الأمر على نظام التشغيل الذي تستهدفه، فلكل نظام تشغيل لغة البرمجة الخاصة وأنظمة التشغيل الموجودة في العالم هي

windows  لغة برمجة تطبيقات سطح المكتب فيه هي c#, c++, c

macOs  لغة برمجة تطبيقات سطح المكتب فيه هي swift, obective c

linux لغات برمجة تطبيقات سطح المكتب فيه هيc, c++, shell

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

 

سادساًMCU programming

اللغة المفضلة: c

وتعني برمجة microcontroller unit وهي الأجزاء الحاسوبية الصغيرة التي تستخدم في بناء الآلات والحواسيب الكبيرة ولغة البرمجة المفضلة لها هي اللغات المنخفضة المستوى مثل C وكلما كانت اللغة منخفضة المستوى أكثر كان أفضل.

 

سؤال:

ما الذي تقصده باللغات منخفضة المستوى؟ هل يوجد طبقات اجتماعية في البرمجة أيضاً؟

جواب:

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

والسبب في أنني لم أقترح أي لغات منخفضة المستوى هو أنك مبتدئ أولاً وثانياً لا حاجة لاختراع العجلة والكتابة من المستوى المنخفض، حيث أنك لن تقوم بالبدء ببرمجة سيارة ذاتية القيادة لتحتاج صلاحيات عميقة في الآلة لا يمكن الوصول لها بلغات البرمجة عالية المستوى

 

استنتاج

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

ولا حاجة لتعلم أكثر من لغة برمجة في نفس المجال الذي ذكرت، إلا إذا دعت الضرورة ذلك، حيث أن التركيز على لغة واحدة أفضل بكثير من التشتت في عد محاور وتذكر ما قاله بروس لي: أنا لا أخشى من رجل يتقن ألف ركلة، ولكن أخشى من شخص تدرّب على نفس الركلة ألف مرة

ولا تسألني ما الذي يفعله بروس لي في مقال عن البرمجة فحتى أنا لا أعلم..