بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
حينما ياتى المستخدم ويستعمل تطبيق ما للمبيعات او المخازن مثلا فانه يكتسب خبرة
ومن خلال استخدامه لهذا التطبيق يكون صورة ما تشتمل عيوب او مزايا او كليهما معا
وحين يستخدم تطبيق اخر لنفس الغرض .... يكون صورة ما عن هذا التطبيق
ولكن !!!
تبدا المقارنة بين التطبيق الاول والثانى
وكلما استخدم المزيد من التطبيقات .... كلما ظهرت مقارنات اكثر واكثر
هنا المستخدم يحكم على التطبيق من وجهة نظره بناءا على
1 - طريقة استخدامه للتطبيق ( الاسلوب)
2 - مايتوقعه من التطبيق (المزايا)
3 - مايزعجه من التطبيق (العيوب)
ولكن مهما كان المستخدم جيدا فهو يظل
1 - واحد من المستخدمين (هناك غيره)
2 - المزايا التى يتوقعها ليست كل شىء (قد يكون هناك مزايا اهم)
3 - العيوب التى تضايقه ليست هى اخطر شىء (هناك عيوب اخطر منها )
كلما ازداد عدد المستخدمين الذين يستهدفهم التطبيق
و كلما تنوعت اساليب استخدام التطبيق والمزايا المتوقعة والعيوب الغير مرغوب فيها
كلما اصبح من الصعب ارضاء الجميع لتنوع الرغبات وتنوع الاهداف واختلاف الاشخاص
ماذا لو كان هذا المستخدم ليس مستخدم عادى
ماذا لو كان هذا المستخدم هو فى الاساس مطور او مبرمج
ماذا لو كان التطبيق ليس مجرد تطبيق
وانما (لغة برمجة) و (بيئة تطوير)
هنا يزداد التحدى ويصل الى درجة عالية جدا من التعقيد
مطلوب منك حين تاتى لتصميم لغة برمجة + بيئة تطوير ان تفكر جيدا قبل ان تاخذ اى قرار
ملاحظة علامة (+) هنا المستخدمة للدمج بين لغة البرمجة وبيئة التطوير
لا اقصد بها (+) كـ ( واو ) فى اللغة العربية بمعنى الاثنين معا
وانما اقصد (+) كـ ( OR ) فى الدوائر المنطقية بمعنى هذا او ذاك او الاثنين معا حتى يكون الناتج True
المهم ضع هذه النقطة الان جانبا لننتقل الى نقطة اخرى لكن يبقى فى الذاكرة ان
التحدى الاول : نوعية المستخدم الذى نخاطبه
قبل ان تدخل مجال وتطرح شىء فيه ... عليك ان تبحث اولا عما تريد ان تطرحه فقد يكون موجود
كما انه من خلال دراستنا لبعض لغات البرمجة الشهيرة مثل Java و C و ++C و VBو Python و Ruby و php و #C على سبيل المثال لا الحصر
نكتشف شىء خطير
1 - هذه اللغات ليست صغيرة فى السن ... وانما اخذت وقت طويل حتى تصبح مشهورة
2 - لغة Java ظهرت عام 1995 بينما البايثون ظهرت عام 1991 ولكن الغالبية منا استعملت جافا اولا
3 - نمط البرمجة الشهير الان الذى هو OOP هناك لغات سبقت و قدمته فى الماضى ولم تنتشر رغم انتشار النمط بعد ذلك
4 - هناك من يعشق ال Java كلغة برمجة لكن يكون مطرا لاستخدام ال ++C ليجد الاداء Performance الضرورى فى بعض الحالات مثل 3D Games
5 - هناك من يستعمل ال ++C لعمل تطبيقات فى شهور بينما ينجزها مطور ال VB فى وقت قصير ويحصل على نتيجة ترضى المستخدم ايضا
6 - هناك من يستعمل Python ويفضلها عن VB لان البايثون Free-Open Source وكذلك Multiplatform و ذات سهولة وانتاجية عالية ايضا
7 - هناك من لا يزال يستعمل VB لانه تعلمها وتؤدى الغرض بالنسبة له وهناك الكثير من المصادر المتوفرة لها
ملاحظة : اقصد ب VB هنا ال Visual Basic 6
8 - هناك الكثير من لغات البرمجة التى لم تحقق الانتشار رغم انها ذات انتاجية وملامح قوية
فى الواقع هناك الكثير من الملاحظات التى لا يتسع الوقت لذكرها لان فلنضع فى الذاكرة التالى
1 - لغات البرمجة تحتاج الى وقت حتى تنتشر ... ويقل هذا الوقت كلما كان خلف اللغة شركة رائدة (راجع ملاحظة 1 و 2 )
2 - نمط البرمجة رغم اهميته الا انه بمثابة الموضة التى تحتاج وقت حتى تتغير وهو عامل مهم لنجاح اللغة ولكن ليس كافيا (راجع نقطة 3 و 4)
3 - متطلبات التطبيق وخصوصا الاداء Performance قد تكون مانع من استخدام اللغة فى الكثير من التطبيقات (راجع نقطة 4 )
ملاحظة هناك عوامل اخرى غير الاداء مثل الاستقرار والمرونة وغيرها من العوامل فهذا مجرد مثال
4 - هناك اخطاء شائعة فى اختيار لغة البرمجة المناسبة للتطبيق المناسب وعليك ان تضع خطة لنوعية التطبيقات والمطورين المستهدفين (نقطة 5 و 6 )
5 - من اهم نقاط انتشار واستعمال اللغة توفر المصادر المناسبة لتعلمها وسهولة هذه المصادر لاستقطاب المطورين الجدد (راجع نقطة 7 و 8 )
الان اعتقد ان اتضع لنا التحدى الثانى
التحدى الثانى : لغتك ليست الوحيدة على الساحة هناك الكثير من النافسين ولهم نقاط قوة وضعف وعليك ان تدرسها جيدا قبل المنافسة
طبعا هناك الكثير من التحديات الاخرى ... مثل
1 - الدعم المالى .... هل هناك شركة تدعم اللغة .... ام مطورين متبرعين بوقتهم !!!
2 - التسويق الالكترونى ... هل هناك فريق يسوق اللغة بشكل يومى عبر الانترنت
3 - الدعم الفنى .... هل هناك من يقدم حل سريع لمن يتعرض لمشكلة اثناء الاستخدام
والقائمة الطويلة
لكن مثل هذه التحديات يمكن ان تلخصها مها فى (بيئة النجاح)
حيث انها عوامل ضرورية لتحقيق الهدف ان يتوفر
الوقت - المال - التسويق - الدعم
لذلك نلخص هذه النقاط فى
التحديث الثالث : توفير بيئة مثالثية لتحقيق الهدف (بناء اللغة) ثم الحافظ عليه (تطويرها وتسويقها)
والان
تحديات ثم تحديات ثم ماذا ؟؟
علينا ان نفهم التحديات علينا ان نستعد لها
ويكون الاستعداد كالتالى
1 - تنمية المواهب
2 - العلم والدراسة
3 - التطبيق والخبرة
4 - روح فريق العمل (لا يهم ان تكون قائد فذلك تكليف ومسئولية كبيرة ... المهم ان تكون فعال ومفيد للفريق )
5 - التضحية ( هناك من يجب ان يضحى بوقته .... هناك من يجب ان يدعم بالمال ايضا )
6 - المكافاة المنتظرة ( اجعل هدفك رضا الله اولا لتستعيد الامة امجادها .... ايضا عليك ان تثبت ذاتك وتطور نفسك ومؤكد ستستفيد )
والملاحظة الاخيرة
ليست المشكلة فى لغة البرمجة فقط .... فلدينا قصور فى معظم جوانب هذه الصناعة تقريبا
لذلك ليس من الضرورى ان نضع الاهداف الضخمة فقط نصب عيننا فى هذه الفترة
يمكن ان نسعى بقدر استطاعتنا ومع الوقت ستجد المواهب تنمو وروح فريق العمل نكتسبها وبالتالى يتطور مجتمعنا ككل
لان التاخر والتقدم ليس مسئولية شخص واحد .... بس مسئوليتنا جميعا
كانت هذه مجرد مداخلة فى المنتدى ... اتمنى ان اكون افدتكم ولو بالقليل
فإن اصبت بالحمد لله رب العالمين اولا واخيرا
وإن اخطأت فى شىء فارجو المعذرة والتصحيح لتعم الفائدة على الجميع
والله الموفق