هل تعلم أنه طبقا لموسوعة ويكيبيديا يوجد في العالم ما يعادل 700 لغة برمجة؟ وطبقا لموقع جيتهاب (GitHub) الشهير فان المبرمجين يتعاونون في مشاريع تمت كتابتها ب 370 لغة برمجة مختلفة. الشاهد من هذه الاحصائيات هو أن هناك العديد والكثير من لغات البرمجة، ففي بادئ الأمر يبدو من المستحيل اختيار احدى هذه اللغات للتعلم أو للقيام بالمشاريع بدون البحث المتواصل للعديد من الأيام، ولذلك نعرض في هذا المقال دليل شامل لكيفية اختيار لغة برمجة مناسبة لك.
مقال مرتبط: ما هو جيتهاب Github ؟ دليل المبتدئين لاستخدام موقع غيتهاب
ربما كثرة الاختيارات تسبب لك حيرة وارتباكا، وهذا مفهوم، ولكن على النقيض إذا نظرت للأمر من جانب أخر فستجد أن كثرة الاختيارات تفتح لك أبوابا وفرصا أكثر للاختيار الدقيق والمناسب لأهدافك العملية، فهذا التنوع لا نجده في وظائف أخرى، ففي البرمجة يوجد حرية كبيرة للتعلم. والمميز أيضا أن كل هذه اللغات لا تختلف عن بعضها البعض في الكثير، فالفروق تكون غالبا في طريقة الكتابة، ولكن المفاهيم البرمجية ثابتة في كل اللغات، مثلها مثل الرياضيات والمنطق: لا يوجد فرق بين الحساب والمنطق باللغة العربية أو بالإنجليزية، فكلاهما في نهاية الأمر حساب ومنطق، ولكن بطرق تعبير مختلفة.
في بادئ الأمر، يجب عليك أن تعي أن من الأخطاء الشائعة التي يقع بها المبرمجون المبتدؤون هو تعلم أكثر من لغة في نفس الوقت، خصوصا في البداية، وهذا خطأ كبير وشائع ويجب عليك تجنبه. يجب عليك تعلم لغة واحدة فقط في البداية للأسباب الاتية:
1. تداخل المعلومات: بما ان طريقة كتابة النصوص في كل لغة برمجة مختلفة عن الأخرى، تعلم أكثر من لغة في نفس الوقت خصوصا في البداية يعد أمرا جالبا للتشتت والارتباك، حيث يمكنك بكل سهولة أن تمزج بين لغتين بدون أن تعي بذلك، وكلما تعلمت لغة واقتربت من احترافها ستجد نفسك مرتبكا بسبب خلطك لبعض المفاهيم التي تتعلمها من لغات أخرى.
2. العمق أهم من السعة: الأهم من تستوعب أكثر من لغة برمجة في نفس الوقت هو أن تتعلم لغة واحدة وتتقنها وتحترف بها لتزيد من فرص عملك بها وتطوير المشاريع المتقدمة، فكما يقال: "Depth not breadth”.
3. تعلم لغات خاطئة وليست ذو صلة: في البداية، يمكنك أن تتعلم أكثر من لغة وأنت تظن أن كلهم يؤدون نفس الغرض ولكن بسبب قلة الخبرة من الوارد أن بعض هذه اللغات تكون تؤدي وظائف أخرى غير التي أنت تريدها، وهذا يعتبر مضيعة كبيرة للوقت والطاقة والمجهود، ولذلك يجب أن تختار لغة واحدة وبعناية شديدة.
من الأخطاء الشائعة أيضا التي تواجه الكثير من مبتدأي البرمجة هو الاعتقاد بأن هناك لغة "أفضل" من لغة أخرى بشكل مطلق، وهذه معلومة خاطئة، حيث إنه لا يوجد لغة أفضل من لغة، فكل لغة تفعل شيء ما بشكل دقيق جدا وبطريقتها الخاصة. بالطبع يمكنك المقارنة بشكل تقني للغاية في تفاصيل ونقاط معينة، ولكن هذا أمر يتطلب خبرة وعلم كبير لن تمتلكه في البدايات، كما أن هذه المقارنات تكون صحيحة فقط عند مناقشة مهام ووظائف بعينها، ليست اللغة كاملة. الملخص هو أنه لا يوجد لغة أفضل من لغة بشكل مطلق، ولكن لكل لغة ببعض الخصائص التي تعطيها مميزات وعيوب.
الدراسة الأكاديمية لعلوم البرمجة تشتمل دراسة لعلوم الحاسب، حيث إنهما يرتبطان ببعضهما البعض ارتباطا وثيقا، فأن تدرس البرمجة تحت مظلة علوم الحاسب مثل أن تدرس علوم الحركة الميكانيكية لنيوتن تحت مظلة الفيزياء. ولذلك، تبتدئ دراسة البرمجة في الجامعات المرموقة بدراسة أساسيات علوم الحاسب والرياضيات أولا، متمثلة في علوم التفاضل والتكامل، الجبر الخطي، والجبر المتقطع، مكملة بذلك ما بدأته المرحلة الثانوية من علم حساب المثلثات والجبر والهندسة. لتعلم أساسيات علوم الحاسوب، يمكنك مشاهدة دورة علوم الحاسوب التي لا تحتاج الى أي خبرة مسبقة.
بعد تجنبك لهذين الخطأين الشائعين ودراستك لأساسيات علوم الحاسب الأساسية، نعرض لك الأن مجموعة من المعايير التي يجب عليك التمعن فيها قبل أن تختار لغة برمجة مناسبة لك، ووجب التنويه أن هذه المعايير قد تم وضعها بالترتيب من حيث الأهمية:
أهم معيار يمكنك الاعتماد عليه لاختيار لغة برمجة تناسبك هو أن تعرف أولا ماهي الوظيفة البرمجية التي تريد بناءها وما هو نوع التطبيق: هل تريد أن تتعلم تطوير المواقع؟ أم برامج الهواتف الذكية؟ أم برامج سطح المكتب؟ أم الألعاب الالكترونية؟ أم تحليل البيانات والذكاء الاصطناعي؟ فكل هذه مجالات مختلفة يوجد لها اللغات الخاصة بها التي تميزها.
تطوير المواقع:
يتخصص هذا المجال في تصميم صفحات الويب، سواء كانت صفحة واحدة أو صفحات متعددة، وينقسم هذا المجال الى ثلاث مجالات فرعية:
Front-end web development: هذا المجال مختص بتصميم وتطوير واجهة المستخدم على الموقع والذي يتفاعل معه، مثل الصور والأزرار والقوائم، وهو مسئول أيضا عن الألوان والخطوط والتأثيرات، وللدخول في هذا المجال يجب عليك تعلم لغة HTML و CSS و JavaScript
Back-end web development: هذا المجال مختص بتطوير الجانب الخفي من الموقع الذي لا يراه المستخدم مثل عمليات تسجيل الحسابات وجلب البيانات من قواعد البيانات، وللدخول في هذا المجال يمكنك تعلم احدى هذه اللغات: PHP، Python، Ruby، Java، أو بعض المكتبات من جافاسكريبت مثل Node.JS بالإضافة الى لغة للتعامل مع البيانات مثل SQL أو مكتبة .Net من لغة C#
Full-stack web development: هذا مزيج من ال front-end وال back-end، فالمبرمج من هذا النوع يمكنه بناء موقعا الكترونيا متكاملا من الألف للياء بداية من أكواد الصفحة الظاهرة للمستخدم من HTML و CSS، مرورا بديناميكية الموقع عن طريق JavaScript، نهاية بأوامر الخادم وقواعد البيانات عن طريق مثلا PHP و MySql
مقال مرتبط: ما الفرق بين Front End و Back End في تطوير الويب ؟
تطوير برامج الهواتف الذكية:
يتخصص هذا المجال في تصميم وتطوير برامج الهاتف لكل من نظام Android وiOS، ويعد سوق أندرويد الأكثر انتشارا يليه iOS، فيوجد ملايين التطبيقات الهاتفية على متاجر التطبيقات، حيث من النادر التخيل أن يوجد موقعا الكترونيا بدون أن يكون له نسخة على الهاتف. مثل برمجة المواقع، برمجة تطبيقات الهاتف أيضا تحتاج الى جانب تصميمي وجانب منطقي، ففي الجانب التصميمي في برامج الأندرويد تحتاج الى لغة التوصيف XML وهي تشبه HTML ووظيفتها هو تصميم الشكل الظاهري للتطبيق، وبالنسبة للجانب المنطقي تحتاج الى لغة Java أو Kotlin، ولكن شهرة Java أكبر بكثير حيث إن Kotlin مازالت لغة جديدة ويتم تطويرها. أما بالنسبة لنظام iOS، فيمكنك استخدام لغة Swift أو لغة C# باستخدام منصة Xamarin مثلا. أما إذا أردت تعلم لغة واحدة لكتابة برامج تعمل على النظامين، فيمكنك تعلم لغة البرمجة Dart والبيئة التي تدعمها Flutter.
مقال مرتبط: ما هو فلاتر Flutter ؟ تعرف على اطار عمل المستقبل
تطوير برامج سطح المكتب:
يتخصص هذا المجال في برمجة وتطوير برامج سطح المكتب مثل برنامج ال Microsoft Word وال Photoshop وغيرهم، ولبناء هذا النوع من البرامج يمكنك استخدام جافا وعائلة ال C الثلاث (C وC++ وC#) وبايثون وVisual Basic
تطوير الألعاب:
يتخصص هذا المجال في تطوير ألعاب الفيديو من الشخصيات وحركاتهم الى القصة والحبكة والمنطق. لتطوير الألعاب تحتاج الى لغة برمجة وبيئة عمل، ومن أشهر بيئات العمل Unity وUnreal، ومن مميزات بيئة العمل Unity هو استيعابه لشتى أنظمة التشغيل من أندرويد وiOS مرورا بال ps وال xbox، وهو يدعم لغات برمجة مثل JavaScript وC#، بينما يدعم Unreal لغة البرمجة C++، وهو أكثر تطورا وصعوبة من Unity، فلا ينصح به للمبتدئين.
تحليل البيانات والذكاء الاصطناعي:
في مجال تحليل البيانات، للتواصل مع قواعد البيانات يجب عليك تعلم SQL، ولتنظيف وتحليل هذه البيانات ومن ثم اظهارها في أشكال مثل الرسوم البيانية والمخططات الدائرية فأنت تبحث عن لغة Python أو لغة R، كما يمكنك أيضا تعلم لغة Julia أو Scala ولكنهم أقل شهرة من بايثون وR
أما بالنسبة للذكاء الاصطناعي، فبالطبع تأتي في المرتبة الأولى Python، ولكن إذا أردت خيارات أخرى فيمكنك تعلم Java أو LISP أو R أو C++ أو Julia أو Prolog أو Haskell
يمكنك اختيار لغة برمجة للتعلم بناء على مدى شهرتها وسط المجتمع البرمجي، وإذا أردت هذا أن يكون المعيار الذي تختار بناء عليه فيمكنك قراءة هذا المقال عن أشهر 10 لغات برمجة في 2022. في بيان سنوي يتم نشره على موقع GitHub عن بعض البيانات السنوية تتعلق بالمجتمع البرمجي، يوجد بيانات عن أكثر اللغات استخداما في ذلك العام كما يبين الرسم البياني معدل ازدياد أو انخفاض هذا الاستخدام، مما يمكنك اعتباره مقياسا للشهرة. توضح الصورة التالية شهرة JavaScript وPython وانتشارهما الشديد مؤخرا.
يمكنك اختيار لغة برمجة بناء على مستوى السهولة والصعوبة، فربما أنت لست مبتدئا وتريد تجربة جديدة وتبحث عن تحدي يزيد من خبراتك، أما إذا كنت مبتدئا ففي الأغلب أنت تبحث عن لغة سهلة لتبدأ بها رحلتك في عالم البرمجة. يمكن القول بأن أسهل 5 لغات برمجية في 2022 هم Python وC وRuby وJava وJavaScript، أما أصعب اللغات فهم C++ وProlog وLISP وHaskell وMalbolge، ونتحدث عن الأسباب التي تجعل كل لغة سواء سهلة أم صعبة.
Python: تستخدم صيغة بسيطة تحاكي اللغة الطبيعية للتحدث بالإنجليزية، مما يجعل قراءتها وفهمها أسهل من التعليمات البرمجية الأخرى. إنها أيضًا مفتوحة المصدر ولديها مجتمع كبير ونشط يساهم في كتابة مجموعة المكتبات الخاصة بها، مما يوفر مصدرًا رائعًا للمتعلمين الجدد ويجعل من تعلم البايثون مهمة سهلة للجميع.
C: بخلاف التعليمات البرمجية الأخرى التي تحتوي على ما يزيد عن 50-60 كلمة مفتاحية، تستخدم لغة C فقط 32 كلمة مفتاحية، مما يجعلها لغة بسيطة. نظرًا لأنها موجودة منذ فترة طويلة، فأي مشكلة تريد حلها سيكون لها أيضًا حلول عبر الإنترنت، مما يجعل من السهل التحقق من عملك ومقارنته.
Ruby: مثل Python و C، تمتلك Ruby بنية بسيطة، مما يجعلها واحدة من أسهل لغات البرمجة للتعلم. على الرغم من أن اللغة رائعة للمبتدئين في التعلم، إلا أنها قد تصبح أكثر صعوبة عندما تحاول تنفيذ أوامر معقدة أكثر. قد تكون Ruby سهلة التعلم، ولكنها صعبة الاتقان.
Java: هي لغة منظمة بشكل جيد كائنية التوجه (Object-Oriented)، مما يوفر إطارًا صلبًا يجعلها لغة سهلة التعلم للمبتدئين. باعتبارها لغة برمجة واسعة الانتشار، تمتلك Java الكثير من الموارد للمتعلمين الجدد.
JavaScript: هي لغة عالية المستوى (High-level language) يمكن تعلمها واختبارها بسهولة مباشرة في متصفح الويب الخاص بك باستخدام Inspect Element، فيمكنك تغيير أجزاء صغيرة من التعليمات البرمجية لاختبار كيف ستتغير عناصر الصفحة التي تتصفحها ووظائفها.
C++: امتداد للغة البرمجة العامة C، C ++ تستخدم غالبًا لتطوير تطبيقات متقدمة وعالية الأداء. إنها أكثر تعقيدًا من نظيرها C لأنها تحتوي على نظام أكثر تعقيدًا، فإنها تعرض تحكما عالي في البرامج ولكن هذا يأتي على حساب تحمل المسئولية، كما أن اللغة المستخدمة في الكتابة ليست بديهية مثل اللغات الأخرى، فمثلا بدلا من أن تكتب print أو printf، تحتاج الى تكتب cout في لغة C++ لكي تطبع رسالة على الشاشة.
Prolog: تعتبر لغة عالية المستوى، وتم إنشاؤها لأول مرة لتستخدم في تطبيقات الذكاء الاصطناعي وغالبًا ما تستخدم في البرمجة المنطقية. ما يجعل لغة Prolog صعبة التعلم هي أنها تتطلب منطقًا شبه مثالي مقارنة بلغات البرمجة الأخرى التي تسمح بالأخطاء.
LISP: هي في الواقع عائلة من لغات البرمجة نشأت في عام 1958 وهي اختصار لـ "معالجة القائمة" (List Processing). إنها ثاني أقدم لغة برمجة عالية المستوى وتشتهر بأبحاث الذكاء الاصطناعي. تستخدم LISP الكثير من الأقواس، مما يجعلها لغة صعبة للكتابة.
Haskell: تمت كتابة لغة البرمجة المتقدمة هذه بشكل تنميطي ساكن (statically-typed)، وهي وظيفية بحتة. تستخدم لغات البرمجة الوظيفية (Functional Programming) وظائف نقية ولا تعدل المتغيرات؛ يركزون على النتائج ولا يستخدمون الحلقات. الفرق الرئيسي بين التنميط الساكن والتنميط الديناميكي هو أن التنميط الساكن يركز على أن المتغيرات يجب أن يكون لها نوع في وقت الكتابة (Compile time)، بينما في التنميط الديناميكي يعرف نوع المتغيرات في وقت التشغيل (Run-time)
Malbolage: تم تطوير Malbolge في عام 1998، وهي لغة برمجة مقصورة على فئة معينة، مما يعني أنها مصممة لتكون صعبة لاختبار حدود تصميم كود الكمبيوتر.
إذا كنت ستبدأ رحلتك في تعلم البرمجة بلغة سهلة – وهذا ما ننصح به لكي لا يصيبك الإحباط ولتعلم المفاهيم البرمجية كاملة – ننصح بتعلم لغة بايثون عن طريق ومشاهدة هذه الدورة عن تطوير التطبيقات ببايثون.
اختيار لغة برمجة للتعلم أمر شديد الصعوبة والتعقيد نظرا لوجود العديد من العوامل المؤثرة في عملية الاختيار والتنوع الشديد بين شتى اللغات البرمجية، فعرضنا في هذا المقال بعض الأخطاء الذي يجب عليك تجنبها في بداية رحلتك للتعلم، كما وضحنا أهم العوامل المؤثرة في عملية اختيار اللغة المناسبة وشرحنا كافة التفاصيل التي قد تساعدك في الاختيار. في النهاية، نذكرك بأنه لا يوجد لغة برمجة واحدة يمكنها فعل كل شيء ولا يوجد واحدة أفضل من أخرى، بل كل لغة يميزها بعض الخصائص وتقوم بوظائف معينة.
نتمنى لك اختيار صائب ورحلة تعلم موفقة!