Kotlin و من منا لم يسمع عن هذا الدخيل الجديد الذي يهدد عرش Java , كيف لا و قد تم تطويرها من قبل شركة معروفة في تطوير أدوات المبرمجين هي JetBrains وذلك في سنة 2011 , و لم تلبث هذه اللغة حتى حازت على الاهتمام من مواقع وصفحات تكنولوجيا المعلومات ، و أنا منهم بصراحة رغم أن اشتغالي في البرمجة بعيد عن تطوير تطبيقات أندرويد . لكن ما جعلني أهتم بهذه اللغة و أبحث فيها قليلا هو خبر اعتمدها من قبل شركة Google كلغة رسمية لتطوير تطبيقات الأندرويد , هذا الخبر الذي كان كالصاعقة حينها على محبي Java ، لكن سرعان منقشع الغبار ، في الحقيقة لم يكن الأمر بذلك السوء ، فالواقع أن Java تستمر و تعتمد Kotlin أيضا دونما أي تعارض أو إقصاء ، أعتقد ألان أن أغلب القراء الكرام قد أصيبوا بالحيرة و ما الجديد في كل هذا ، نعم الجديد الذي سأحول أن اقدمه هذا اليوم هو : ليس الخبر بل هو تعريف بلغة Kotlin و بالتسهيلات التي تحملها معها لك كمبرمج ، فتابع معي .
المهم هنا هو أنا Java و Kotlin يعملان على نفس بيئة العمل (JVM). هذا ليس كل ما في الأمر إنما يمكن أن يعمل كلاهما مع الآخر بشكل جيد . فقد اختبر البعض برمجيات تعمل على جافا مع إضافة أجزاء برمجية مكتوبة بلقة كوتلين و أيضا العكس , دون حصول اي مشاكل في البرنامج إلا نادرا. وهذا يعني انه يمكنك عدم الاستغناء الكلي عن برمجياتك القديمة في جافا خاصة الكبيرة منها إنما إعادة بناء وتطوير إضافات عليها في لغة كوتلين, طبعا هذا اختياري .
لكن لماذا لغة جديدة ؟, السبب هو أن التطور السريع في عالم البرمجيات يعني دائما أن عمر اللغات الافتراضي قصير نسبيا فما تقدمه اللغة اليوم على انه حديث ويساهم في تطوير برمجيات افضل و بشكل أسرع , سيصبح بعد سنوات قليلة قديم و يسبب عبئ كبير على المبرمجين الذين يسعون دائما لتطوير برمجيات اكثر تفوقا وبسرعة اكبر وجهد اقل .
إقرا أيضا :
بالطبع يجب أن أذكر أولاً أن Kotlin ليست هنا لتحل محل Java ليس بشكل رسمي ، فالدعم مستمر و أي كود يكتب Java سيعمل مع Kotlin والعكس صحيح , لكن اللبيب يفهم بالإشارة ، فا Google ضاقت ذرعا من دعوات أوراكل التي لا تنتهي . أيضا و كما نعلم عمر لغة الجافا 23 عاماً، أنشأتها أوراكل Oracle لتكون متوافقة مع ما سبقها، مما يعني أنه على كل نسخة جديدة أن تدعم ميزات موجودة في النسخ التي سبقتها. ولذلك مع كل تحديث يصبح من الأصعب تضمين ميزات جديدة، ونتيجة لهذا التراكم فإن كاتبت كود يقوم بمهمة بسيطة يمكن أن يتحول إلى حوار فلسفي مع IDE، "طبعا هذا من باب المزاح"، و على النقيد من ذلك فاللغات الحديث نسبيا مثل Python مثلا تقوم بإقصاء الأجزاء السابقة من الكود لحل هذه المعضلة بحيث أن الكود القديم المكتوب بي Python2.7 لن يعمل على الإصدار Python3.6 و مع كل إصدار تحسين جديد وحلول جديدة لتوفير الوقت، طبعا لهذا عيوبه أيضا، لكن هذا ليس بموضوعنا اليوم .
مع التأكيد بأن كلا اللغتين يعملان على نفس بيئة العمل وكلاهما ينتجان نفس الكود تقريبا عند عملية الترجمة ( Java bytecode) لذا لا يبدو أن Kotlin اسرع , و لكن يمكن القول أن Kotlin اعدت بعض البرمجيات الخاصة لتسريع عملية البرمجة بالإضافة لبنائها بشكل جيد , فهذا يعني ان البرمجيات المبنية على كوتلين تفادت الكثير من الأخطاء البرمجية والتي تؤثر على كفاءة وأداء البرامج خاصة (Data classes) .
دعونا نتعمق اكثر في هذه المشاكل التي تم حلها مع Kotlin، والتي كانت تواجه برمجيات جافا حيث تسبب التوقف الفجائي للبرامج (crushes). أولا تم تفادي مشكلة (null references) والتي كانت تعاني منها العديد من برمجيات جافا. كما أن آليات البرمجة حديثة , كيف ذلك؟ :
توليفة برمجية هي parameter لتوليفة أخرى : إن سبق لك التعامل مع لغة JavaScript فلا بد انك شاهدت أو استعملت التوليفات البرمجية (functions) كقيمة مرجعية (parameter) لتوليفة أخرى. هذا ممكن في جافا ولكن بطريقة طويلة وكود أكثر . وكما ذكرنا سابقا فإن Java في إصدارها الجديد , أضافت بعض المميزات مثل lambdas ولكنها للأسف لا تعمل في برمجة اندرويد حتى الآن وباستخدامك برمجة كوتلين يمكنك الاستفادة من هذه المميزات بسهولة.
توليفات إضافية : قد تحتاج احيانا لإضافة توليفة لنموذج (class) دون الحاجة لتوريثه. مثلا انت ترغب في إضافة توليفة جديدة على نموذج (String) لنسميها مثلا XYZ انظر كم هو سهل إضافتها في كوتلين وفي اي مكان في داخل الكود الخاص بك يمكنك إضافة
كود كوتلين :
نموذج البيانات (Data classes) : كما ذكرت سابقا فإن Kotlin أعدت مجموعة من النماذج الجاهز والتي تساهم في تسريع عملية البرمجة واهم هذه النماذج , هو نموذج البيانات والذي من خلاله ستتمكن من إعداد نموذج متكامل من خصائص وتوليفات خاصة بتعديل القيمة وجلبها دون الحاجة لكتابة كل ذلك.
شكرا على متابعتك ، و إلى موضوع قادم بإذن الله .
ملاحظة : التعريف عام ، فهو لا يتطلب منك أي خبرة في لغة محددة أو مجال محدد ، إنما هي مفاهيم عامة في البرمجة تمكننا من التعرف أكثر على هذه اللغة .
تعريف باللغتين :
فلنبدأ مع لغة Java : في البداية لغة الجافا هي اللغة المستخدمة في تصميم وكتابة التطبيقات والألعاب أيضا ، أما لغة Kotlin فهي لغة برمجة مفتوحة المصدر من تطوير نفس الشركة التي تتعاون معها Google في تطوير منصة Android Studio وهي شركة JetBrains وهي متوافقة بشكل كامل مع حزمة تطوير جافا JDK ، وتتيح كتابة الشيفرة البرمجية بعدد أقل من الأسطر وبشكل أسرع وأكثر فعالية مقارنة مع لغة java , سنتعرف على هذه المميزات أكثر في الفقرة القادمة .المهم هنا هو أنا Java و Kotlin يعملان على نفس بيئة العمل (JVM). هذا ليس كل ما في الأمر إنما يمكن أن يعمل كلاهما مع الآخر بشكل جيد . فقد اختبر البعض برمجيات تعمل على جافا مع إضافة أجزاء برمجية مكتوبة بلقة كوتلين و أيضا العكس , دون حصول اي مشاكل في البرنامج إلا نادرا. وهذا يعني انه يمكنك عدم الاستغناء الكلي عن برمجياتك القديمة في جافا خاصة الكبيرة منها إنما إعادة بناء وتطوير إضافات عليها في لغة كوتلين, طبعا هذا اختياري .
لكن لماذا لغة جديدة ؟, السبب هو أن التطور السريع في عالم البرمجيات يعني دائما أن عمر اللغات الافتراضي قصير نسبيا فما تقدمه اللغة اليوم على انه حديث ويساهم في تطوير برمجيات افضل و بشكل أسرع , سيصبح بعد سنوات قليلة قديم و يسبب عبئ كبير على المبرمجين الذين يسعون دائما لتطوير برمجيات اكثر تفوقا وبسرعة اكبر وجهد اقل .
إقرا أيضا :
بالطبع يجب أن أذكر أولاً أن Kotlin ليست هنا لتحل محل Java ليس بشكل رسمي ، فالدعم مستمر و أي كود يكتب Java سيعمل مع Kotlin والعكس صحيح , لكن اللبيب يفهم بالإشارة ، فا Google ضاقت ذرعا من دعوات أوراكل التي لا تنتهي . أيضا و كما نعلم عمر لغة الجافا 23 عاماً، أنشأتها أوراكل Oracle لتكون متوافقة مع ما سبقها، مما يعني أنه على كل نسخة جديدة أن تدعم ميزات موجودة في النسخ التي سبقتها. ولذلك مع كل تحديث يصبح من الأصعب تضمين ميزات جديدة، ونتيجة لهذا التراكم فإن كاتبت كود يقوم بمهمة بسيطة يمكن أن يتحول إلى حوار فلسفي مع IDE، "طبعا هذا من باب المزاح"، و على النقيد من ذلك فاللغات الحديث نسبيا مثل Python مثلا تقوم بإقصاء الأجزاء السابقة من الكود لحل هذه المعضلة بحيث أن الكود القديم المكتوب بي Python2.7 لن يعمل على الإصدار Python3.6 و مع كل إصدار تحسين جديد وحلول جديدة لتوفير الوقت، طبعا لهذا عيوبه أيضا، لكن هذا ليس بموضوعنا اليوم .
مقارنة بين Java و Kotlin في مجموعة من النقاط :
و الآن لنقم بمقارنة بين Java و ما تحمله Kotlin من الجديد : أولا يبدو أن احد اكثر الأسباب التي يتداولها مبرمجوا لغة Kotlin هو أن لغة Kotlin تحتاج لكود أقل في تطوير البرمجيات , كما أنها قدمت بعض الأكواد الجاهزة والمبنية بشكل جيد لتسهيل البرمجة وإعداد برامج اكثر كفاءة. هذا بالإضافة لان لغة Kotlin أسهل بكثير لتعلمها من لغة Java لكن من جهة أخرى كل من هو متمكن في لغة جافا يمكنه وخلال فترة قصيرة جدا تعلم لغة كوتلين . فالأساس هنا هو الخوارزميات و المبادئ و المفاهيم البرمجية العامة، فالبرمجة طريقة تفكير و ليست لغة أخرى تتقنها .مع التأكيد بأن كلا اللغتين يعملان على نفس بيئة العمل وكلاهما ينتجان نفس الكود تقريبا عند عملية الترجمة ( Java bytecode) لذا لا يبدو أن Kotlin اسرع , و لكن يمكن القول أن Kotlin اعدت بعض البرمجيات الخاصة لتسريع عملية البرمجة بالإضافة لبنائها بشكل جيد , فهذا يعني ان البرمجيات المبنية على كوتلين تفادت الكثير من الأخطاء البرمجية والتي تؤثر على كفاءة وأداء البرامج خاصة (Data classes) .
دعونا نتعمق اكثر في هذه المشاكل التي تم حلها مع Kotlin، والتي كانت تواجه برمجيات جافا حيث تسبب التوقف الفجائي للبرامج (crushes). أولا تم تفادي مشكلة (null references) والتي كانت تعاني منها العديد من برمجيات جافا. كما أن آليات البرمجة حديثة , كيف ذلك؟ :
توليفة برمجية هي parameter لتوليفة أخرى : إن سبق لك التعامل مع لغة JavaScript فلا بد انك شاهدت أو استعملت التوليفات البرمجية (functions) كقيمة مرجعية (parameter) لتوليفة أخرى. هذا ممكن في جافا ولكن بطريقة طويلة وكود أكثر . وكما ذكرنا سابقا فإن Java في إصدارها الجديد , أضافت بعض المميزات مثل lambdas ولكنها للأسف لا تعمل في برمجة اندرويد حتى الآن وباستخدامك برمجة كوتلين يمكنك الاستفادة من هذه المميزات بسهولة.
توليفات إضافية : قد تحتاج احيانا لإضافة توليفة لنموذج (class) دون الحاجة لتوريثه. مثلا انت ترغب في إضافة توليفة جديدة على نموذج (String) لنسميها مثلا XYZ انظر كم هو سهل إضافتها في كوتلين وفي اي مكان في داخل الكود الخاص بك يمكنك إضافة
كود كوتلين :
StringExtensions.ktfun String.XYZ(): String {// … make the XYZ and return it}
خلاصة : يمكننا القول بأن لغة Kotlin جيدة جدا في أختصار الوقت أثناء البرمجة ، فهي تقدم العديد من التسهيلات التي ما كنا لنحلم بها كمبرمجين على Java ، كما أن هذه اللغة لم تأتي لتزيح Java كليا و بمرة واحدة، وهذا كان ليكون خطء فادحا من Google لو حصل ، بل هي متوافقة معها و يمكن كتابة Code خاصتها مع Java و استعماله بكل يسر فالبيئة واحدة ، و أعتقد من باب النصح أن لهذه اللغة مستقبلا مهما في هذا المجال ، لهذا قد تكون إضافة مفيدة جدا لمهاراتك لو كنت من مبرمجي Java.
شكرا على متابعتك ، و إلى موضوع قادم بإذن الله .
الإبتساماتإخفاء