الأحد، 17 نوفمبر، 2013

ما هي أفضل لغة برمجة ؟

علي موقع Arabia I/O كان هناك تساؤلٌ يقول فيه صاحبه: "ما هي أفضل لغة لبرمجة تطبيقات سطح المكتب ؟"، فكتبتُ إجابةً مُختصَرةً علي سؤاله تصلح للإجابة عن كل الأسئلة التي من عينة: "ما هي أفضل لغة برمجة لفعل كذا و كذا ؟"، أو حتي للإجابة علي السؤال الأعم و الأشمل: "ما هي أفضل لغة برمجة ؟".

و كان ردي كما يلي (مع تصرُّف بسيط للغاية):

إجابة هذا السؤال تختلف كثيراً من مبرمجٍ إلي آخر،  تبعاً للعوامل التالية:
  • هل هناك نظام تشغيل معين تستهدفه بتطبيقاتك، أم أنك ترغب في عمل برنامج متعدد المنصات ؟، و إن كنتَ تستهدف نظاماً معيناً فما هو ذلك النظام ؟ و ما هي لغة البرمجة التي تقوم الشركة المنتجة للنظام بالترويج لها و دعم مكتباتها القياسية بقوة و تقوم بإعطائها القدرة علي استغلال كل إمكانيات نظام التشغيل في الواجهة أو الإمكانيات الخفية ؟، و إن كنت ترغب في عمل برنامج متعدد المنصات فما هي اللغات التي تدعم أكبر عددٍ ممكن من المنصات المشهورة، و يكون دعمها لتلك الأنظمة مستقراً و يتم تحديثه باستمرار ؟، 
  • هل هناك طريقة مُفضلة لك في شكل البرنامج الناتج: يعني هل ترغب في أن يكون علي هيئة كود مُدار managed code أم علي هيئة كود أصلي native code ؟، أم أن الأمر لا يشكل هذه الأهمية بالنسبة لك ؟، فإن كنت تفضل شكلاً معيناً فما هي اللغات التي تشتهر بذلك الشكل و تكون برامجها عالية الكفاءة فيه ؟، و إن كانت بعض برامجك سيتم توزيعها علي شكلٍ معين و البقية علي شكلٍ آخر: فما هي لغات البرمجة التي تدعم الشكلين و تعطيك قوةً في كلتا الحالتين ؟، 
  • ما هي اللغات التي لها مكتبات قوية متخصصة في المجال الذي ترغب في عمل برامج له ؟، و أي اللغات منهن لها مكتبات مجانية أو حرة المصدر بحيث تكون أخف في الميزانية ؟،
  • ما هي قناعاتك الذاتية في الأمور التي تختلف فيها لغات البرمجة من حيث التصميم، يعني مثلاً هل تحب التنويع الثابت static typing أم التنويع المتغير dynamic typing ؟، و هل تحب وجود الخصائص منخفضة المستوي -كالمؤشرات pointers- في كل كود تكتبه أم تحب أن تعمل بعيداً في المستوي الأعلي ؟ ... إلي آخر أمثال هذه الأسئلة التي تجعلك تميل إلي لغات معينة و تنفر من أخريات، 
  • ما هي اللغات التي تتوافر لها بيئات برمجةٍ متكاملة IDEs تساعدك علي سرعة إنتاج مهامك البرمجية و التركيز علي الخوارزمات و الأكواد ؟، 
  • لو كنتَ ستجعل مشروعك الذي تعمل عليه مفتوح المصدر: فما هي اللغات التي لها الشهرة الأكبر في مجال تخصصك ؟، حيث أن الشهرة و الانتشار سيعطيان إمكانيةً أكبر لمشروعك أن ينضم إليك فيه آخرون يجيدون تلك اللغات المشهورة، 
  • هل تميل إلي اللغات المفتوحة المصدر open source (سواءٌ أكانت مفتوحة المصدر من ناحية مُفسِّرها interpreter و/أو مُترجمها compiler أو مكتبتها القياسية) ؟.  
باختصار: من المُحال أن تُحدد أن لغة برمجة معينة هي الأفضل إلا إذا حددتَ أصولاً معينة تحكم علي أساسها علي اللغات المختلفات، مع الانتباه إلي أنه من الممكن أن يشترك مبرمجان أو أكثر في ذات الأصول الفكرية ثم يختلفون في تطبيقها علي أرض الواقع، و من ثم يختار كل واحد منهم لغةً مختلفةً عما اختاره الآخرون؛ 
ففي النهاية فإن الأمر كله اجتهادٌ بشريٌ صُرف، و بالتالي فإنه لك كل الحق في أن تظن أنك تمتلك الإجابة الصحيحة علي مثل هذا التساؤل، و تقول ذلك بكل حرية و أريحية ما دمتَ تستند إلي أدلةٍ و براهين تجدها مُقنعة، و لكن يجب أن تخضع للقاعدة الأصولية التي تصلح للتطبيق علي كل العلوم التي ليس فيها خطأٌ مُطلَق أو صوابٌ مُطلَق: "رأيي صوابٌ يحتمل الخطأ، و رأي الآخرين خطأٌ يحتمل الصواب".

ليست هناك تعليقات:

إرسال تعليق