الهدف من الموضوع ، هو إيجاد فكرة عبقرية أو غبية لاستبدال لغة JavaScript بلغة أفضل . مثال :
- لغة الهونولولو ، ونسميها HonololoWE .
- لغة C#WE ، ويعني الاستفادة من مواصفات لغة #C في مجال Syntax تحديداً ، لتحل بديلاً لـ JavaScript .
- لغة JavaWE ، وتعني الاستفادة من مواصفات لغة Java وبعض الحزم البرمجية المهمة من JavaSE و حزم برمجية جديدة ، لتصبح على هذا النحو :
- لغة مطابقة للغة جافا تماماً من ناحية Syntax
- Collections : ويعني أن اللغة ، سيأتي معها حزمة برمجية لدعم معظم أنواع هياكل البيانات .
- Java.Lang : دعم التزامن ( هو مدعوم في اللغة نفسها ) ، الدوال الرياضية ، النصوص ، RegEx .. وغيرها من الأساسيات .
- Graphics2D : الرسوميات ومعالجة الصور ( ليس مجرد الحصول على بيانات canvas ، بل وتوفير فئات على مستوى أعلى مثل ConvolveOpو Kernel.
- WebGL: الألعاب وبرامج النمذجة والتصميم الثلاثي البعد مثل Blender .
- Multimidia: معالجة الفيديو و الأصوات ,
- أمور أخرى أساسية مثل : التشفير - xml - والكثير ..
- EventListener : فئة جديدة لاستقبال الأحداث ومعالجتها ( الأحداث التي تطلقها XML Elements ، الموجودة في ذاكرة المتصفح ( شجرة dom ، بمختلف أنواعها ) ) .
- DomInpector : دعم CSS Selectors وبعض الدوال المساعدة ، لتصبح مطابقة لجزء من مكتبة jQuery .
- HtmlHelper : فئة مساعدة للتحويل تقوم باستخراج و تحويل عناصر HTML إلى ما يقابلها من Data Objects ، مثل : تحويل عناصر Table إلى مصفوفة ديناميكة ثنائية البعد ، وهكذا ..
- Ajax : دعم الأجاكس ..
- JSON : تحويل من كائنات JavaWE إلى JSON و العكس .
لماذا لا نستخدم Servlet ، Flash ، أو حتى Java Applet ؟
هذه تخلط بين العرض View و بين منطق البرنامج . لدينا HTML 5 ، ولا حاجة لنا باستحداث شيء جديد ، نحن نريد HTML 5 ، ولكن نريد لغة برمجية بديلة للـغة JavaScript .
هل Oracle Java JDK مناسب ؟
لغة جافا ، مبنية على مواصفات ، ويمكن أن نستفيد من OpenJDK لعمل implementation . ويمكن أن يقوم بكل متصفح بعمل Implementation له . أما JavaWE ، فستضيف فئات قليلة لتعمل بشكل جيد كبديل للغة جافاسكربت و تبقى مسألة Compiler و JVM و حقوق Oracle فيها ، وعندها يمكن تغيير أسلوب طريقة ترجمة وتنفيذ تطبيقات JavaWE ، كما فعلت Google مع Andriod وكما فعلت Microsoft مع #J ، ولا يعني أن نأتي بلغة جافا بكل مافيها من عيوب الآن ، ونقول : استخدموها بدلاً من JavaScript .
ماهي المشكلة مع لغة JavaScript ؟
بغض النظر عن سرعة التنفيذ ، اللغة ستصبح سيئة جداً مع تطبيقات ضخمة ( تطبيقات تتعدى مليون سطر ) ، وهذا يبدو أحد الدوافع التي جعلت Google تطوّر GWT حسب ما أظن .
p
المشكلة مع JavaScript في Syntax السيء جداً ، لدرجة أنك لو فتحت أي كتاب فمن النادر أن تجد كتاب يشرح ويتعمق في البرمجة الكائنية ، في " إخفاء المعلومات Info Hiding " - " الوراثة " - " تعدد الواجهات polymorphism " .. الخ ،
لماذا ؟
لأن هذه هي طبيعة 90% من مبرمجي JavaScript للأسف ، من النادر أن تجد شخص يهتم بهذا ، لأن اللغة عندما ظهرت ، لم يفكر مطوّروها بأن تستخدم لكتابة نظام تشغيل على الويب (جزئية Client ) ، أو معالج صور متقدم مثل Photoshop .. وكما قال الأخ مهدي حجازي .. هم تفاجؤوا عندما وجدوا أن JavaScript في المقدمة .. فبدأ حينها شغل " الترقيع " .
أيضاً اللغة ليست Strict في التحويل من متغير لآخر ، فانت أمام keys & values نصية .. ليس إلا . وهذا سيضيف علينا حمل حتى مع استخدام أفضل محرر IDE وسيضيف على JavaScript Engine حمل التعرف على كل نوع أثناء التشغيل .. الخ .
لغات مثل Pyhon مع أنها " لغات ديناميكية " ، إلا أنها توفر الحد الأدني ( إن لم يكن الأفضل ) من المقروئية ..
لغات مثل VB.net على بشاعة Syntax ، إلا أنها تقدم حد أدنى من المقروئية .. وهي مسألة أذاواق في النهاية ..
أما JavaScript ، فهي حالة شاذة .
لكن JavaScript تدعم ما تريد :
- تدعم البرمجة الكائنية .
- يمكن أن تكتب أي Pattern تريد .
- يمكن أن تكتب ما يقابل Collections و STL .
- يمكن أن تتعامل مع Canvas في HTML 5 .
- الخ ..
؟
نعرف هذا ، ولكن المشكلة ستظهر عندما نتحوّل من تطوير مواقع إلى تطوير تطبيقات ويب . لا يعني كون اللغة قادرة على هذا ، أنها هي المناسبة .. كما قال الزميل " مهدي حجازي " .
أيضاً عندما نتحدث عن نقص Frameworks ، فنحن نتحدث عن التي تخدمنا في البرمجة مثل Collections و Graphics2D ، وليس JQuery ، فهذه لها هدف مختلف ، تركز على dom و effects .
اختبر نفسك ؟
افرض أننا أما 6 لغات برمجية ، بنفس السرعة والأداء ، وأنها كلها قادرة على التكامل مع HTML و تطوير تطبيقات الويب في جزئية Client Side ( فرض جدلي فقط ) :
- JavaScript
- #C
- ++C
- Java
- VB.Net
- Python
- Delphi
وطلبنا منك أن تختار لغة من تلك اللغات ، لتطوير معالج صور بمستوى Photoshop ( لنفرض أنك مبدع في برمجة الرسوميات ) ، أو لتطوير معالج نصوص مثل Microsoft Word Processor تماماً .
فأي لغة ستختار ؟ ولماذا ؟
ماهو ترتيب لغة JavaScript بين تلك اللغات في هذا المجال ؟
أجب عن هذا السؤال .. بعد أن تكون صادقاً مع نفسك ،
في الغالب لن تختار JavaScript ، وعندها يجب أن تكتب موضوع تعترف بروعة فكرة JavaWE العبقرية ،
أو أن تختار لغة JavaScript ، وعندها يجب أن تكتب رد تذكر هذا ، وتقوم بالهجوم على فكرة JavaWE الغبية .
لايوجد خيار ثالث :-) .
اقتباسالان كل المؤسسات تبني تطبيقاتها web application وهنا نقطة هامة جدا جدا
أخي X-File ، يبدو أنك فهمت الموضوع خطاً حسب ما أتوقع ..
نحن نريد Web Applications ، ولكن المشكلة في لغة جافاسكربت ، برأيي أنها لاتنفع مع تطبيقات ضخمة بسبب " عجينة الكود " التي ستظهر .
* أعتذر من الأخوة إن أغضبتهم صفة " محترفي برنامج الرسام " ، كنت أقصد .. الدخلاء على البرمجة ، الذين يقضون معظم وقتهم في موقع لجمع السكربتات .. سكربت الساعة . .سكرب شريط التمرير .. وكانت مجرد دعابة ثقيلة .. وليس محاولة استنقاص :-) ..
motamayez كتب:من الاخر انت خائف
شوف ، هذا رد تكتبه في مدونتك لـ : صبي لم يبلغ الحلم بعد .. يعني يجب أن تتعلم قبل أن تبلغ سن الأربعين ، كيف تتخلص من الردود الصبيانية التي عرفك الجميع من خلالها .
خوف إيش ؟ وش دخّل الخوف بالموضوع ؟ مش فاهم ..
==
إضافة :
نسيت أن أقول أني مش محترف JavaScript :-) .. هذا قلته في كل مكان من المنتدى ، ولا يجب أن أقوله في كل موضوع :-) ..
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri


