صعوبة تبنّي لغات برمجة جديدة

السلام عليكم ورحمة اللهlanguages

في الفترة اﻷخيرة أصبحت لغات البرمجة واﻷدوات المحيطة بها في غاية التعقيد، وأصبح عدد المكتبات لكل لغة برمجة مستخدمة في زيادة كبيرة. لذلك اصبح من الصعب جداً كتابة لغة برمجة من الصفر وتطوير محرر خاص بها، وكتابة مكتبات تغطي كافة اﻹحتياجات البرمجية اليوم. واصبح من الصعب ايضاً إقناع المبرمجين باستخدامها.

نأخذ الخمسة عشر عام الأخيرة كمثال (من عام 2000 إلى عام 2015) فلانجد أن هناك لغات جديدة بدأت من الصفر في هذه الفترة وتبناها سوق البرمجة بصورة كبيرة. ماعدا عدة لغات ولها أسبابها. من هذه اللغات C# وفيجوال بيسك .net. والسبب أن هاتين اللغتين جائتا كبديل للفيجوال بيسك الذي كان له قاعدة كبيرة جداً من المستخدمين. فقامت ميكروسوفت بتحويل تلك القاعدة من المبرمجين إلى لغتي سي شارب وفيجوال بيسك .net

أيضاً هناك حالة أخرى وهي لغة   Swift اللغة البديلة للغة Objective C حيث قامت شركة أبل بإصدارها في عام 2014. قامت شركة أبل بتبني استخدام لغة البرمجة Swift لإنتاج برامج لمنصتها المشهورة iOS كبديل للغة Obective C لذلك نجد أن هذه اللغة الجديدة في تقدم في قائمة Tiobe المشهورة، ولغة Objective C في تقهقر بعد أن كانت أكثر لغة برمجة صعوداً في عامي 2011 و 2012

التجربة الثالثة  – والتي لم تنجح إلى اﻵن- هي لغة Go والتي اصدرتها قوقل كبديل للغتي C و C++ لكن بما أن هاتين اللغتين ليستا من إنتاج شركة قوقل فليس لها طريقة أن تقوم بإيقافهما، لذلك لم تنجح إلى اﻵن ولم يتبناها المجتمع بصورة كبيرة مثل لغات C# و Swift والدليل أنه لا وجود للغة Go إلى اﻵن في دليل Tiobe

التجربة الرابعة – والتي لم تنجح إلى اﻵن أيضاً- هي لغة البرمجة Ceylon التي قامت بتطويرها شركة رد هات كبديل للغة جافا، مع العلم أنها تستخدم منصة جافا نفسها حتى تعمل البرامج المكتوبة بها. لكن بما أن شركة رد هات هي أيضاً لا تملك جافا فلا نتوقع أن ينصرف مبرمجي جافا بسهولة إلى تلك اللغة الجديدة مهما كانت فيها من ميزات.

التجربة الخامسة، كانت من نصيب الفيسبوك بعد أن اشتقت لغة Hack من لغة البرمجة PHP. كان هذا في عام 2014 لكن لم نجد له أثر في السوق بعد ولم تُعتبر تهديد للغة PHP التي لا تملكها فيسبوك

كبديل لإنتاج لغات برمجة جديدة يمكن تحسين وتطوير اللغات الحالية، مثلاً لغة جافا كل فترة يصدر منها إصدار جديد به خصائص جديدة . بهذه الطريقة تكون الجهة الراعية للغة البرمجة حافظت على الكود القديم وفي نفس الوقت احدثت ميزات جديدة تتميز بها لغات برمجة أخرى.

وكبديل آخر هو تطوير مكتبات وframeworks لتسهيل عملية برمجية أو لإستحداث طريقة جديدة لإنجاز البرامج بطريقة أسرع، مثل برامج الويب، فكل فترة نسمع عن framework جديد.

الطريقة الثالثة هي إضافة ميزات جديدة لأدوات التطوير والمحرر، أو يمكن إستحداث أداة تطوير جديدة لنفس لغة البرمجة، لتسهيل كتابة وقراءة وتطوير البرامج والبرمجة بطريقة صحيحة.

26 thoughts on “صعوبة تبنّي لغات برمجة جديدة

  1. لغة Go اضعف من لغة باسكال الاصدار 1 أو 2 و كل ما يطرح من ميزات عبارة عن مساوئ.
    أما البقية فالبعض قد يحتاج للوقت أو الدعاية، مثلا روبي و بايثون لاقت شهرة لابأس بها بسبب الدعاية بالرغم أو بسبب سهولة الاستخدام

  2. نسيت أمر لغة بايثون، لكن حسب ويكيبيديا فقد كان أول ظهور لها عام 1991، لذلك فهي قبل الفترة التي أتحدث عنها (خمسة عشر عام)
    في الحقيقة لغة Go كان هدفها مهم، وهي أنها أحدث لغة برمجة طبيعية native بعد السي والسي ++، وأنها موجهة لتستغل تعدد أنوية المعالجات. لكن بما أن قوقل فشلت بها فهذا يعني صعوبة دخول لغات برمجة جديدة على سوق البرمجيات.

  3. لغة D لديها نفس الهدف لغة Go ايضا و تمتلك ميزات رهيبة امام بقية اللغات حتى امام لغة سي، لكن كما قلت عدم وجود راعي يجعلها تفشل.
    و للملاحظة الكل عرف بلغة Go رغم تخلفها و لا يعرف D بسبب وجود الداعم كشركة كبيرة.

  4. بصراحة اصبح عالم البرمجة اكثر حمقا، اقرب إلى عالم الموضة و التسريحات و الفن، لم يعد الافضل هو الاكثر رواجا بل من هو الداعم أو ماهي الشركة الخلابة التي تستخدمها، لذلك ترى الشباب يقفزون من لغة او بيئة إلى لغة اخرى راكضين وراء ما تفعله الشركات الكبيرة ناسين اعتبارات اخرى تعتمدها الشركة نفسها و هي اعتبارات بيروقراطية اكثر منها تقنية.

  5. نعم صحيح، والدليل أننا نستخدم لغة جافا بكثرة لتبني مجال الاتصالات لها، وهي ليست لغة كاملة ولا حتى أقرب للكمال، لكن يوجد دعم واسع لها

  6. أعتقد أي مشكلة في تبني لغة جديدة هي وجود المكتبات التي توفر مميزات لها، مثلاً روبي لم تشهر إلا من خلال إطار عمل Rais، ورغم شهرة بايثون منذ فترة طويلة تحت منصة لينكس وكانت تستخدم بشكل كبير من قبل مديري النظم في بيئة لينكس، لكن وجود إطار عمل django جعلها لغة مميزة لتطوير برمجيات الويب.

    لغة سي# لولا توفر الكم الكبير والرئع من المكتبات الجاهزة لها مع إطار عمل دوت نت لأصبح مصيرها مثل لغة Go، خاصة بعد نقمة كثير من مبرمجي فيجوال بيسيك السابقين.

  7. مرحباً بك أخ محمد نسمان
    قوقل كانت يمكن أن نتشر لغة Go إذا استخدمتها في منصة أندرويد بدلاً من استخدام جافا الذي جرها في قضايا مع أوراكل، لكن اعتقد أن لغة Go لم تكن جاهزة في ذلك الحين وأرادت قوقل أن تستخدم لغة برمجة لها قاعدة كبيرة من المستخدين

  8. جوجل صممت لغة Go من الأساس لتطوير برامج للخادمات، وليست لغة للأغراض العامة مثل جافا ودلفي وسي#.

    ورعم المميزات التي بها مثل الدعم الممتاز لتعدد المهام والمعالجات، عدم وجود إطار عمل للويب مثلاً سوف يجعل إستخدامها مخصص لبرامج low level أكثر من الإستخدام الأخر، وهذا بحد ذاته سوف يجعل إستخدامها قليل ومخصص.

  9. أنا فهمت أنها بديل للغة سي، ولغة سي مستخدمة في برمجة الموبايل مثل سمبيان وأبونتو موبايل. ايضاً تعدد المهام وتعدد أنوية المعالجات هي سمة جديدة في إتجاه مستقبل الموبايلات.

  10. استخدام لغة بمكان غير المخصص لها يجعلها سيئة بالرغم من مزاياها، لاحظ الجافاسكربت لايوجد فيها كلاسات لكن يتم انشاء تطبيقات كبيرة عليها.
    ايضا ال go بدأت غوغل باستخدامها للويب و هي غير مخصصة للويب من الاصل.

  11. جوجل تعتمد على لغة سي في برمجة محرك البحث والعديد من الخدمات، أعتقد ما تقصده هنا هو استخدام لغة جو كبديل للسي في برمجة الخدمات التي توفرها والتي كلها معتمدة على العمل من خلال خوادمها، لكن حسب معلوماتي لم تكن لغة كبديل للغة السي في برمجة الموبايل.

    سمبيان اعتماده من الاساس على السي كان احد اسباب فشله لأنه لم يجذب مطورين كثيرين له، بالنسبة لأبونتو فهو نسخة من لينكس ومكتوب بسي، لذلك يتم تطويره بنفس الكيفية.

    أندرويد يمكن الكتابة له برامج بلغة السي لكن من خلال NDK وليس من خلال DavikVM التي توفر API من خلال لغة الجافا

  12. برامج الدلفي وسي++ المبنية على NDK هي ال Native، برامج الجافا هي Native platform applications، اي على مستوى Dalvik،

    أي دلفي وسي++ native على مستوى منخفظ اكثر والبرامج تترجم على حسب المعالج وليس على مستوى Dalvik VK، لذلك برامج الجافا تعمل مباشرة على كل معالجات التي تتبني نظام اندرويد، بينما دلفي يعمل فقط على معالجات ARM 32 فقط، ولا يدعم اجهزة الاندرويد المبنية على معالجات انتل.

  13. >فقط على معالجات ARM 32 فقط، ولا يدعم اجهزة الاندرويد المبنية على معالجات انتل.
    إذاً في هذه الحالة تتفوق جافا التي تعتمد على الـ VM على اللغات الـ Native
    لدي جهاز RaspberyPi وهو يستخدم معالج ARM32 استطعت تشغيل برنامج مكتوب بواسطة فري باسكال، لكن بصعوبة، حيث استخدمت CodeTyphone لأول مرة، وهي بيئة معقدة، ولم تنجح ترجمة البرنامج الذي يتعامل مع قاعدة بيانات (أي يستخدم مكتبة خارجية) أما جافا فأي برنامج ويب عمل فيها مباشرة بدون أي تعديل. حتى البرامج التي بها GUI للجافا فقد عملت مباشرة

  14. فقط على حساب الذاكرة، ليس هُناك أي نقص في السرعة. السرعة يكون سببها قاعدة البيانات.
    لكن ذاكرة الراسبري باي هي فقط 500 ميقا، عمل فيها Tomcat7 و MySQL وبرنامج جافا ويب الذي أعطيتك رابط له من قبل.
    كان لدينا مشروع كبير عملنا به كان نصفه بلغة جافا والنصف اﻵخر بلغة دلفي، حيث أن كل مبرمج عمل بلغة البرمجة التي يعرفها. كانت نتائج دلفي كارثية من حيث بطيء تصميم برامج الويب عن طريق Intraweb في الحقيقة هي أسواء مكتبة لبرمجة الويب مرت بي، كان نجاح جافا وسرعته وخفته شيء ملاحظ في المشروع، كذلك سرعة التعديلات ورفعها في المخدم دون أن يتأثر المستخدمون الذين يعملون في ذلك الوقت شيء ملاحظ كذلك. وكان يصل عدد المستخدمين في نفس الوقت إلى أكثر من مائة مستخدم ، أما إنتراويب فكانت لا تسمح بأكثر من مائة اتصال.
    بسبب هذا المشروع أصبح مدير الشركة الذي كُنا نعمل معه في هذا المشروع يقترح لغة جافا لأي مشروع جديد، علماً بأنه مبرمج دلفي قديم.

    تُستخدم جافا في المواقع التي تتميز بالزيارات الكبيرة مثل موقع تويتر و Linkedin، راجع هذا الرابط:
    http://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites

  15. لا اعتبر ذلك اختبار مقارنة حقيقي، نفس الاختبار قم به بنفس اللغة بين مبرمجين ستجد احداهما كارثية، واحد بطيء جدا و الثاني ربما سريع جدا.
    الجافا تبقى بطيئة مقارنة مع اللغات التي تولد لغة الآلة، اما عن الذاكرة فهو مرتبط ب GC

  16. مثال
    بالنسبة للسرعة، هنالك مكتبات للتعامل مع قواعد البيانات، في الدلفي بما ان الوضع بيروقراطية و للتوافق مع القديم كل المكتبات كتب بهيكل خاص يتوافق مع القواعد فيما بينها
    لذلك قمت بكتابة المكتبة للتعامل مع قاعدة البيانات بيدي، اكتشفت انها اسرع بكثير بفرق هائل عما جاء مع الدلفي.
    لم تختلف اللغة بل اختلفت الهيكلية فقط و المبرمج نفسه.
    ال Interweb سقطت من عيني من اول مرة رأيتها، انت فعليا قارنت مكتبات مع مكتبات و ليس لغة مع لغة.

  17. نعم صحيح، قارنت مكتبات. كان من الممكن عمل شيء مشابه في دلفي وذلك ببناء برنامج مشابه لـ Apache Tomcatفهي أكثر application server ناجح وهو سبب نجاح برامج ويب جافا وبرامج خدمات الويب Web services فهو container رائع جداً. لكن الجافا ساهمت في نجاحه، فهو مكتوب بلغة جافا نفسها، وهو يعمل في عدد كبير من أنظمة التشغيل. إذا تم عمل واحد مشابه بلغة دلفي فلا يمكن أن يصل لكل إمكاناته، مثلاً سوف تكون هُناك دائماً مشكلة المنصة التي تُريد إنتاج برامج ويب لها. اعتبار أن الوندوز هو نظام التشغيل الوحيد اصبح شيء من الماضي لذلك دلفي في طريقها أن تكون من الماضي أيضاً.

  18. انا مع أخ زاهر في نقاشه.

    عندما تريد المقارنة يجب أن تضع كل النقاط مع بعض، للأسف قارنت بين اسوء مكتبة في دلفي وهو Intraweb مع مكتبات وأطر عمل متخصصة في الويب

    Intraweb منه اسمع مخصص منذ البداية لبرامج الأنترانت، ايضا هوا يستخدم statefull approch عكس المكتبات المخصصة لبرامج الويب التي تكون Stateless لذلك فهو منذ البداية محدود بعدد معين من المستخدمين.

    عملت عليه قبل سنوات على أحد المشاريع وبسبب كثرة المشاكل في النسخة المضمنة مع دلفي اشترينا النسخة الكاملة وكان بها بعض التصليحات لكن بعد فترة توقف العمل به وتم الإنتقال الى UniGui وكان في مرحلة البيتا وكان افضل منه بمراحل كثير رغم انه لم تصدر النسخة الاولى منه.

    ايضا Intraweb سي جدا بخصوص توليد كود html، فلا يولد كود يدعم المعيار المعتمدة وبه عدة مشاكل مع دعم المتصفحات.

  19. انا بصراحة لا انصح بإستخدام دلفي لتطوير برمجيات للويب، استخدمت UniGui لإنه كان مقتصر على عدد معين من المستخدمين (لا يزيد عن 100 وقد يصلو الى 200)، اي انه لن اصل لاي مشاكل في التوسعة في المستقبل (Scalability).

    بالنسبة للجافا وإستخدام الذاكرة فهو امر معروف وحتى تقارن جرب ان تستخدم كتابة ISAPI بدلفي او جرب Servelt بجافا وشوف فرق السرعة واستخدام الذاكرة.

    كمثال بسيط، انظر للمقارنة هنا:

    https://robertocschneiders.wordpress.com/2013/01/09/datasnap-analysis-based-on-speed-stability-tests-part-2/

    الاسرع والاقل استهلاك للذاكرة مكتبة mORMOT مقارنة بالجافا فهي استهلكت 6 ميجا من الذاكرة مقارنة ب 1400 ميجا لمكتبات الجافا بعد 100 الف طلب.

  20. لدي مخدمات سعتها فقط 2 قيقابايت، وتعمل فيها جافا وTomcat لأشهر دون أي مشكلة في الذاكرة تخدم آلاف الطلبات في اليوم.
    في الحقيقة الذاكرة لن تصبح مشكلة اليوم بقدر مشكلة أدوات التطوير التي تحتاج لمن يدعمها خصوصاً الجامعات. اﻵن معظم الجامعات تُدرس جافا، لذلك من السهولة الحصول على مبرمج جافا، لكن بالنسبة لدلفي معظم المبرمجين لدينا في السودان الذين يستخدمون دلفي شارف عمرهم على 40 عام. ومعظمهم ترك البرمجة.
    إذا راجعت رابط أدوات التطوير المستخدمة في أعلى 15 مواقع في العالم سوف تجد جافا بكثرة هُناك بينما لا توجد دلفي بالمرة:
    http://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites

  21. يمكن أن ننظر لموضوع استهلاك الذاكرة بناحية أكثر عملية وليس علمية.
    تخيل أن لديك مخدمين اﻷول به ذاكرة 4 قيقا مخصص لبرامج ويب مكتوب بالجافا، والثاني به 4 قيقا مخصص لبرنامج ويب مكتوب بالدلفي
    في المخدم الأول استهلكت جافا 1 قيقا من الذاكرة (مع أن هذا عملياً لا يحدث حسب خبرتي العملية مع جافا، غالباً تصل فقط إلى 300 أو 400 ميقابايت)
    في المخدم الثاني استهلكت برامج دلفي ويب 10 ميقابايت فقط
    بالنسبة للزبون أو مدير النظام فهو ينظر أن برنامج جافا استهلك مخدم كامل، ودلفي استهلك مخدم كامل أيضاً، أي أن باقي الذاكرة الذي لم يستخدم لم ولن تتم اﻹستفادة منه ليس له أي أثر إيجابي

    هذه صورة لإستخدام الذاكرة في tomcat لإحدى المخدمات التي أعمل عليها، وقد تلقى حوالي مليون طلب في العشر أيام اﻷخيرة، والذاكرة المستخدمة هي فقط 43 ميقابايت:
    Tomcat

  22. السلام علیکم ..
    بالنسبة لالسر‌‌عة و الذاکرة في جافا فالامر يتعلق اکثر بطريقة کتابة الکود: , .. (patterns programming (singleton, factory
    هناک کتاب مشهور یتطرق إلی هذا عنوانه : effective java

    هناک من قال انه بالإمکان إستعمال الجافاسکریبت للتطبیقات الکبیرة ، نعم لکن ذلک ما زال فی بدایته و لو إطلعت علێ ecmascript 6 ستلا‌‌حظ ان الجافاسکریبت اصبحت اقرب إلی الجافا.

    أظن أن صعوبة تبنّي لغات برمجة جديدة تتجلی في دراسة و فهم الفراموورک المرافقة لهذه اللغات اکثر من دراستها بنفسها.

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s