لماذا لا تحتوى لغة جو على Generics ؟
فى الحقيقية، تحتوى لغة جو على generic types وهم: slice[] و map و chan هذه الـ buit-in types فى الحقيقية هم عامَّيْن (generics) كما ترى فى هذا الكود .
الذى أهمله مصممى لغة جو، هو إنشاء custom generic constructs. هذا القرار لم يكن هاماً ﻷن اللغة صُمِّمَت فى الأساس لكتابة بنية الشبكات فى جوجل. لذلك البساطة وسرعة تحويل الكود إلى ملف تنفيذى (compilation speed) كانوا العوامل المهمه فى اللغة.
بدأوا بالفعل فى التفكير فى إضافة الـ generic programming capabilities وغالباً ستُضاف هذه الخاصية فى اصدار لغة جو ما بعد الـ Go 1.15+ أو ما يُسمى بـ Go 2
حالياً هناك بدائل مخترعه للتغلب على عدم وجود الـ generics تم استخدام الـ dynamic interface{} مثل sync/Map و sync/Pool و Emirpasic/gods ولكن هذه الحلول البديله لا ترقى للمستوى المطلوب.
فى رأيي الخاص، أرى أنه من الأفضل أن يأخذوا وقتهم فى التفكير العميق فى فكرة الـ generics بدون أى تسرع فى رفض أو قبول وجود الـ generics فى لغة جو. التركيز على وجود أشياء قليلة فى اللغة (minimalism) شئ مهم جداً. أتمنى أن يخرجوا لنا بطريقة ذكية لتطبيق الـ generics فى لغة جو (Go).
انتهينا من الإجابة عن سؤال عدم وجود الـ generics فى لغة جو الشهيرة. إن أردت متابعة الموضوعات الجديدة انضم لقناتي على تيليجرام من هنا .