تعرف على لغة البرمجة كوتلن، منافسة الجافا الحديثة

Kotlin و من منا لم يسمع عن هذا الدخيل الجديد الذي يهدد عرش Java , كيف لا و قد تم تطويرها من قبل شركة معروفة في تطوير أدوات المبرمجين هي JetBrains وذلك في سنة 2011 , و لم تلبث هذه اللغة حتى حازت على الاهتمام من مواقع وصفحات تكنولوجيا المعلومات ، و أنا منهم بصراحة رغم أن اشتغالي في البرمجة بعيد عن تطوير تطبيقات أندرويد . لكن ما جعلني أهتم بهذه اللغة و أبحث فيها قليلا هو خبر اعتمدها من قبل شركة Google كلغة رسمية لتطوير تطبيقات الأندرويد , هذا الخبر الذي كان كالصاعقة حينها على محبي Java ، لكن سرعان منقشع الغبار ، في الحقيقة لم يكن الأمر بذلك السوء ، فالواقع أن Java تستمر و تعتمد Kotlin أيضا دونما أي تعارض أو إقصاء ، أعتقد ألان أن أغلب القراء الكرام قد أصيبوا بالحيرة و ما الجديد في كل هذا ، نعم الجديد الذي سأحول أن اقدمه هذا اليوم هو : ليس الخبر بل هو تعريف بلغة 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.kt
fun String.XYZ(): String {
// … make the XYZ and return it
}
نموذج البيانات (Data classes) : كما ذكرت سابقا فإن Kotlin أعدت مجموعة من النماذج الجاهز والتي تساهم في تسريع عملية البرمجة واهم هذه النماذج , هو نموذج البيانات والذي من خلاله ستتمكن من إعداد نموذج متكامل من خصائص وتوليفات خاصة بتعديل القيمة وجلبها دون الحاجة لكتابة كل ذلك.


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

شكرا على متابعتك ، و إلى موضوع قادم بإذن الله .

تعرف أكثر على الثغرة الخطيرة المتداولة في معالجات Intel

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


تفاصيل الخبر :

و يتوقع من هذا التحديث المعتمد به إصلاح العلة أن يقلص أداء المعالج من 5 إلى 30 % على نظام لينكس حسب إصدار المعالج , وإلى غاية 50% على نظام Windows طبعا وتتفاوت النسب أيضا فبعض التوقعات لا تتجاوز 30% في انخفاض الأداء , و قد قال بريان كرزانيتش الرئيس التنفيذي لشركة Intel في مقابلة مع شبكة (سي.إن.بي.سي) مساء يوم الأربعاء أن :

”الهواتف وأجهزة الكمبيوتر، كل شيء سيصيبه بعض التأثير ولكن سيختلف الأمر من منتج لآخر“.


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


وفي مقابلة مع رويترز، قال "دانيال جروس" أحد الباحثين بجامعة "جراز" للتكنولوجيا والذين اكتشفوا الثغرة (ميلتداون) إنها ”على الأرجح إحدى أسوأ ثغرات وحدات التشغيل المركزية المتكشفة على الإطلاق“.
وقال جروس إن (ميلتداون) مشكلة أكثر خطورة على المدى القصير ولكن يمكن معالجتها تماما من خلال برامج الإصلاح , وأضاف أن الثغرة (سبتكر)، وهي الأوسع نطاقا والتي تؤثر على كافة الأجهزة الكمبيوترية تقريبا، يجد المتسللون صعوبة أكبر في استغلالها لكن يصعب إصلاحها أيضا وسوف تمثل مشكلة أكبر على المدى البعيد.


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

لسوء الحظ، فإن التفاصيل المتعلقة بالثغرة الأمنية نادرة نسبيا في الوقت الراهن ، حيث تفيد التقارير بأن المعلومات تخضع للحظر، ومن المفترض أن تبقيها شركة Intel سرية لمنع أن يتم استغلالها من قبل القراصنة . هذا و تأتي هذه الأنباء لصالح شركة AMD حيث ارتفعت قيمة أسهمها بنحو 8.8% مقابل انخفاض قيمة أسهم شركة Intel بأكثر من 4% بأمريكا .

تعرف على أكثر الأوامر التي تستخدمها على Terminal



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

history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10

الآن سيظهر لك أكثر 10 أوامر استخداما لديك بالترتيب و على جانبها ستجد عدد المرات التي استخدمتها فيها بالنسبة إلي كان الأمر الأول في القائمة هو sudo بعدد استخدامات هو 275 السبب لهذا هو أن الأمر الذي قمنا بإدخاله يقوم بأخذ العنصر الأول في الأمر فقط عن طريق خاصية '{print $2}' في الأمر awk و وهو أمر يستخدم لفلترة النصوص و يتعدى ذالك بكونه لغة برمجة و كنا قد تحدثنا عن أمر مشابه له في الأمر cut لقص واستخراج جزء من النص , و بما أن أمر sudo يكون في أول أي أمر نريد تطبيقه و الوصول عبره لصلاحيات Root فلن أستغرب إن كان في المرتبة الأولى.


ثم يليه في المرتبة الثانية yaourt وهو مستودع خارجي لتوزيعة Arch Linux بعدد استخدامات 108 و في المرتبة 3 الأمر echo بعدد 88 يبدو أني كنت أقوم بالكثير من التجارب به و هذا غريب لي أيضا ! ، نعم فبعض الأوامر التي لم تتوقع أن تجدها ستجدها في ترتيب عالي ، و المرتبة الرابعة كانت من نصيب man بعدد 85 مرة نعم من الطبيعي أن يكون هذا أمر من أكثر الأوامر استخداما لأي أحد يحب التعرف أكثر على سطر الأوامر و لكي تحسن تجربتك معه لا تنسى متابعة هذا الموضوع إجعل صفحات man أكثر سهولة للقراءة و الفهم عن طريق هاته الخاصية .


و يمكننا عبر التعديل على أحد العناصر من الأمر جعله يعرض معلومات أكثر أو مختلفة فيمكننا عرض ترتيب أوامر أكثر عن طريق التعديل على قيمة "-10" من أمر head وجعلها "-20" أي أكثر 20 أمر تستخدمه على سطر أوامر وهكذا .

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