السلام عليكم
في عالم يعجّ بلغات البرمجة… وأكثر منها المكتبات وأطر العمل، يحاول كل فريق ترويج منتجه المفضل بعرض مميزاته الفريدة التي لا تتوفر في غيره من المنتجات… وهذا أحد أهم الأمور لنجاح تسويق أي منتج.
وبناء على ذلك، فإنه لا بد من تحديد مميزات لغة الأسس التي تجعلها تتفرد عن غيرها وتجعلها جاذبة المبرمجين لتعلمها واستخدامها.
ومن خلال قراءتي لصفحات الموقع وصلت إلى أن الميزات الفريدة في هذه اللغة هي المذكورة على الصفحة الرئيسية:
١- “قابلة للتوسيع من قبل المستخدم نفسه بشكل ديناميكي يسمح بتوسيع اللغة لتغطية كافة احتياجات المبرمج دون الحاجة للغات متعددة”.
٢- “قابلة للامتداد عموديا للجمع بين الصفات منخفضة المستوى كتلك التي تتمتع بيها ++C والصفات مرتفعة المستوى كتلك التي تتمتع بيها لغات كبايثون وتايب سكريبت وغيرهما”.
٣- “تجمع بين مرونة اللغات الديناميكية وكفاءة اللغات المجمّعة (compiled languages)”.
٤- “قابلة للتوسع أفقيا لتغطية كافة مجالات البرمجة كتطبيقات الويب وسطح المكتب وبرمجة الأنظمة المضمنة والذكاء الاصطناعي والتعامل مع قواعد البيانات وغيرها”.
٥- “يمكن شمول توسعات اللغة في البرنامج مباشرة من مصدرها دون الحاجة لإعادة بناء المترجم أو تغيير إعداداته ودون العودة لفريق تطوير الأسس”
وإذا أردنا اختصار كل هذا بثلاث كلمات فإننا نقول: التوسع + السرعة + السهولة
ومن المعروف أن هذه الأمور لا تجتمع في لغة واحدة، لأنه كلما تحسن جانب من هذه الجوانب الثلاثة تأثرت الجوانب الأخرى، ولهذا السبب ما زالت اللغات القديمة تُستخدم حتى الآن، ولم تستطع اللغات الحديثة مجاراتها في الأداء وحسن الاستفادة من الموارد.
ومن الأمثلة الحديثة على ذلك هو JS عندما أصبحت مسؤولة عن تنفيذ برمجيات أصيلة لـwasm تتطلب سرعة في الأداء تخلت عن أجزاء منها عندما كتب asm.js رغم الجهود الهائلة التي بذلت لتحسين مفسرات JS.
فالسؤال الآن:
ماذا يُتوقع من لغة الأسس؟
هل يتوقع منها أن تعطينا أداء متفاوتا بحسب استخدامنا للميزات؟… فإذا استخدمنا (مثلاً) أسلوب لغة السي فإننا سنحصل على أداء قريب من لغة السي وإذا استخدمنا ميزات أحدث فإننا سنفقد سرعة الأداء تدريجياً كما يحصل في JS (مع تفوقها عليها لأن JS ليس لها مترجم إلى لغة الآلة، ولكن تتفوق JS بمفسراتها التي تحظى باهتمام بالغ من كبرى الشركات لأنها اللغة الوحيدة التي تفهمها متصفحات الويب).
للعلم: اطلعت على هذا الموضوع https://community.alusus.org/t/mqarnt-adae-alass-me-sy-wbaythwn-wjafaskrybt/
ولكن هدفي من السؤال ليس هو الاستفسار عن الوضع الحالي الذي وصلت إليه، وإنما أريد معرفة أهدافها والخطة التي تسير عليها وأين ستكون بعد نضجها؟
فإذا كانت هناك حالات معينة ستتفوق فيها اللغة فلا بد من بيانها بوضوح للتركيز عليها عند نشرها والتسويق لها
وإذا كان استخدام ميزات معينة يتوقع أن يقلل أداءها فأقترح أن يتم بيان ذلك منذ البداية وكتابته في التوثيق حتى يكون المطور على علم
فالذي يريد أداء عاليا وحفاظاً على الموارد ليس كالذي يريد السهولة والتمتع بأحدث الميزات
والفارق ليس صغيراً أبداً…
فالبرمجيات في التسعينات وما قبلها كانت اقتصادية لدرجة أن نظام التشغيل ويندوز ٩٥ كان يعمل على ذاكرة عشوائية بحجم 8 ميغابايت وكنت تستطيع تشغيل لعبة ثلاثية الأبعاد أيضاً… بينما لو أتينا الآن بمئة ضعف من حجم تلك الذاكرة لن تكفي لتشغيل نظام التشغيل وفتح صفحة فارغة في برنامج محرر النصوص.
ومثل ذلك في استهلاك مساحة القرص الصلب وسرعة المعالج.
أعلم أن هناك عوامل متعددة لهذا الفرق الشاسع ولكن لو ثبتنا العوامل الأخرى ولم نغير شيئاً سوى لغة البرمجة ومكتباتها لبقي هناك اختلاف كبير في استهلاك الموارد.
أعلم أن هذا الموضوع بحاجة لاختبارات وتجارب كثيرة للمقارنة والتحسين… ولكن من طرف المطورين… كيف ينظرون إلى الأمر مبدئياً أثناء تصميم اللغة؟