أهم أداة برمجية خلال السنوات الماضية

أتنقل بين مكة المكرمة و مدينة جدة بشكل متكرر و كبير أسبوعيا، الطريق يأخذ عادة قرابة ثلاثة ساعات ذهابا و إيابا إلى مكة، هذا التنقل المتكرر متعب و مزعج، لكنه من زاوية أخرى فرصة ذهبية لتسرح بخيالك و تفكر في أشياء عجيبة. في آخر رحلة طرأ في بالي سؤال .. ماهي اهم أداة برمجية خلال السنوات الماضية كان لها أثر كبير من في زيادة إنتاجيتي؟
استحضرت وقتها عدة أدوات، أولها كانت بيئات البرمجة المتكاملة من شركة JetBrains. بدأت استخدام منتجات هذه الشركات منذ 4 سنوات تقريبا، ولازالت جزء أساسي من يومي. إذا ألقيت نظرة على جهاز كمبيوتري في هذه اللحظة ستجد على الأقل إثنين من برامج هذه الشركة يعملون في الخلفية (PyCharm و RubyMine). لكن بعد إعادة التفكير، لم أقتنع أن هذه هي أهم أداة بدأت استخدامها خلال السنوات الماضية. أدوات هذه الشركة مجرد IDEs بجودة عالية، صحيح أنها سهلت كثير من الأمور المتعلقة بالبرمجة، لكنها لم تغير بشكل جذري طريقة عملي.

أيضاً خطر على بالي أن أرشح نظام الكتابة LaTex كأفضل أداة. فخلال العشرة سنوات الماضي كان LaTex رفيقي في رحلتي الاكاديمية، وكثير من ذكريات المرحلة السابقة كان لـ LaTex دور فيها من قريب او بعيد، لكن بعد تفكير لم أقتنع كثيرا أنها تستحق لقب أفضل أداة 🙂 هي مرتبطة فقط بحياتي كأكاديمي خلال السنوات الماضية .. لكنها لم تؤثر بأي شكل على أدواري الثانية في الحياة .. وبالأخص على دوري كمبرمج.

من الادوات الاخرى التي فكرت فيها:

  • Pandoc: الأداة العظيمة لتحويل الوثائق من نوع إلى نوع آخر.
  • Tensorflow: مكتبة برمجية خاصة بتعلم الآلة (Machine Learning) من شركة قوقل.
  • Python: لغة البرمجة التي كان لها الحضور الأكبر في كل مشاريعي السابقة و الحالية، منذ أكثر من 12 سنة.
  • ReactJS: مكتبة الجافا سكربت التي غيرت بشكل جذري طريقة تنفيذي لمشاريع الويب (وأختها React Native التي غيرت طريقة تنفيذ تطبيقات المحمول)
  • Scikit-Learn: أحد أهم المكتبات البرمجية لتعلم الآلة (Machine Learning).

لم أقتنع أن أي من هذه الأدوات يستحق أن يتوج على عرش “أفضل أداة برمجية” 🙂
بقيت أداة وحيدة، كلما تذكرتها تمنيت لو أقبل رأس صاحب فكرتها Fernando Pérez الذي قدم لنا تحفة فنية برمجية استحق عليها جائزة Advancement of Free Software Award في 2012م.

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

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

عالِم الذكاء الإصطناعي Peter Norvig يقوم من فترة لأخرى بمشاركة بعض دفاتر Jupyter الخاصة به على موقعه الشخصي، حيث وضع قائمة بالدفاتر وكل دفتر عبارة عن حل أو شرح لمشكلة مثيرة للإهتمام باستخدام النصوص و الأكواد البرمجية. على سبيل المثال، قبل عدة سنوات انتشر في الإنترنت لغز عقلي منطقي أطلق عليه “لغز يوم ميلاد شيرلي (Cheryl’s Birthday Puzzle)” فقام Peter Norvig بشرح اللغز و قدم الكود الذي يحله .. خطوة بخطوة.

مثال آخر مثير للإهتمام هو كتاب Probabilistic Programming and Bayesian Methods for Hackers الذي تمت كتابته بالكامل باستخدام دفاتر Jupyter. ويمكنك رؤية أمثلة أخرى كثيرة و تنزيلها و تجربتها على جهازك على صفحة Jupyter Notebook Gallery التي تسمح بمشاركة الدفاتر وتصفحها على الويب مباشرة.

أداة Jupyter Notebook واحدة من الأشياء التي تحتاج أن تجربها بنفسك و تقضي معها بعض الوقت حتى تكتشف قدراتها و فائدتها.

لهذه الأسباب أعتقد أني سأُتَوج أداة Jupyter كأفضل أداة برمجية زادت من إنتاجيتي خلال السنوات الماضية. مبروك Jupyter 🙂

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *