"أي لغة برمجة هي الأحسن لي؟" هذا السؤال دوما ما كنت أقرؤه سواء هنا على حسوب أو في مختلف المدونات والمواقع، وفي اعتقادي هو سؤال خاطئ وليس في محله، لماذا؟ لأن كل لغة برمجة لها مزايا وعيوب، وتناسب احتياجات مختلفة لذلك لا يمكن القول أن لغة برمجة معينة هي الأفضل أو الأسوأ من غيرها، بل يجب النظر إلى الهدف من البرمجة والمشروع المراد تنفيذه. هذه بعض العوامل التي يمكن أن تؤثر على اختيار لغة البرمجة في نظري وهي:
سهولة التعلم والفهم: بعض اللغات أكثر بساطة ووضوحا من غيرها، وتستخدم قواعد ومصطلحات مألوفة للمبرمجين.
قابلية التطوير والتحديث: بعض اللغات تسمح بإضافة ميزات جديدة أو تعديل الميزات القديمة بسهولة، وتتوافق مع التغيرات التكنولوجية المستمرة على سبيل المثال لغة جافاسكريبت تتميز بالمرونة في تبسيط الأكواد، وتسهل بناء المواقع التي تحتاج إلى مساحات تفاعلية بين الجمهور. كفاءة الأداء والسرعة: بعض اللغات تستخدم موارد أقل من غيرها، وتنفذ الأوامر بشكل أسرع وأدق، فلغة سي تستخدم في برمجة نظام التشغيل والبرامج المنخفضة المستوى، لأنها تتحكم في مكونات الحاسوب مباشرة. شيوع الاستخدام والدعم: بعض اللغات تستخدم بشكل كبير في السوق، وتوفر دعم فني وتوثيق وافي للمبرمجين كلغة PHP التي تستخدم في المواقع ديناميكية الحركة أي التي تتغير بشكل مستمر بسبب تفاعل المستخدمين، كما أنها تتميز بالسهولة في أثناء إنشاء الموقع وسهولة أيضا أثناء استخدامه. حاولت في هذه الأسطر الوجيزة ذكر أمثلة عن بعض اللغات التي بدأ البعض يعزف عنها، لجهلهم بقيمتها، شاركونا رأيكم في الموضوع ولماذا لا يجب علينا أن نقارن بين لغات البرمجة وتفضيل واحدة على حساب الأخرى؟ وكيف تختارون لغة البرمجة الخاصة بمشاريعكم؟
إذا بدأ المتعلم بدراسة نظرية الحوسبة computation theory للتعرف على أنماط الحوسبة بدءا من الأوتوماتا النهائية deterministic finite automata واللغات الصورية التي تستطيع هذه الآلة التعرف عليها ثم الإنتقال للpumping lemma ثم آلة تورينغ ومعرفة اللغات التي يتعرف عليها كل نموذج من النماذج السابقة، ومعرفة تلك التي يستطيع البت فيها، للتعرف على مفهوم البرمجة ومفهوم إمكانية التعرف formal language recognition ومفهوم إمكانية الحسم في وقت نهائي the problem of deciding in finite amount of time ، من ثم فهم أن جميع لغات البرمجة تعبر عن مناظير مختلفة لمفهوم عالمي متماثل فيما بينها هو مفهوم الحوسبة، ثم يدرس نظرية التعقيد الحوسبي computation complexity وهي معنية بدراسة الموارد التي يستهلكها الحاسب من زمن وذاكرة لأداء مشكلة ما , والتعرف على كلاسات التعقيد الزمني وكلاسات التعقيد التخزيني ، مع خلفية رياضية جيدة في discrete mathmatics وخلفية في المنطق الرياضي إن أراد التعمق والفهم التام للحوسبة وصلتها بالمنطق وصلتها بأنواع النحو المختلفة، بعدها لا يضره أن يبدأ بأي لغة شاء طالما لديه حدس جيد عما يجري من خلف الكواليس داخل الحاسوب، ثم يمكنه التعرف على نماذج البيانات المختلفة وبارديمات البرمجة بشقيها الكائني والدالي functional and object oriented paradigms ، في هذه الحالة حتى لو بدأ ببايثون يمكنه الإنتقال بسهولة للغة أصعب كالc دون أن يختل فهمه أو يشعر بتغيير كبير في منحنى تعلمه للبرمجة ، أرجو أن أكون قد فهمت مرادكم أخي الكريم .
التعليقات