Uploaded avatar of iHiD

حوار مع Ryan Potts

@iHiD
منذ أكثر من 7 سنوات

حوار مع Ryan Potts يناقش فيه هو وJeremy Walker لغة Delphi، والأشياء التي تعلّمها من كونه مساهمًا في Exercism، وتجاربه في البرمجة في صناعات لا تزال «بلا اتصال بالإنترنت».

مرحبًا Ryan. شكرًا لتخصيصك الوقت للحديث معي. أنت مشرف مسار Delphi على Exercism. كيف بدأت مع Delphi؟

أعمل في شركة أسّسها والدي، وهي تطوّر البرمجيات منذ الثمانينيات، بدايةً من Microsoft Pascal ثم باستخدام Turbo Pascal من Borland لاحقًا. التحقت بالعمل في الشركة عام 1996، وكانت حينها تتلقى طلبات لإنتاج برمجيات تعمل على Windows بدلًا من DOS. ومن حسن الحظ أن Borland كانت قد أصدرت حديثًا Delphi 1. وكان ذلك مناسبًا لنا تمامًا، إذ أمكننا الاستمرار في استخدام معظم الوحدات التي طُوّرت على مر السنين. ولم نعد مضطرين إلى البدء من جديد بـ VB أو VC لدعم Windows.

وما زلت تستخدم Delphi يوميًا حتى الآن؟

نعم، فالمكان الذي أعمل فيه ينتج آلات لاختبارات البحث والتطوير والاختبارات ذات الدفعات الصغيرة في صناعة السيارات؛ لاختبار الإطارات ومقاعد السيارات ونافخات الوسائد الهوائية، وكذلك اختبارات التصادم. وتُستخدم كل الأنظمة المنتَجة لدى عدة شركات تصنيع سيارات حول العالم وكذلك لدى مورّديها.

البرمجيات التي أعمل عليها تُستخدم للتحكم في هذه الأنواع المختلفة من الآلات. أطوّر واجهة المستخدم، وأحدّد تسلسلات الاختبار للأجزاء الآلية من الاختبارات، وأدمج مختلف نقاط الإدخال والإخراج، التماثلية والرقمية. ويجب أن تكون سهلة الاستخدام قدر الإمكان حتى يشعر شخص بتدريب محدود بالراحة التامة في استخدامها.

لا يتطلب العمل الذي أقوم به أي برمجة ويب على الإطلاق. كل ما أفعله يكون بـ Delphi على Windows. وأحيانًا أضطر إلى إعداد «أمر مخصص» صغير بلغة C++ ثم أرفعه إلى لوحة معالج جمع البيانات، وهي حاسوب متوازٍ يوجد في منفذ PCI داخل الحاسوب؛ وله معالجه وذاكرته ونظام تشغيله الخاص.

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

أجل، أتاح لي انخراطي في Exercism أن أطل قليلًا على كيف تعيش «النصف الآخر» في صناعة الحاسوب. وقد تعلّمت الكثير عن التطوير المبني على الاختبارات (TDD)، والتعامل مع GitHub، والعمل على مشروع مفتوح المصدر. وكثير مما تعلّمته حسّن جودة العمل الذي أقوم به في وظيفتي.

يسرّني سماع ذلك كثيرًا. من أكثر ما أحبه في Exercism تلك الروح التي تعرّفك بكيف يعيش «النصف الآخر»، فتدرك كل نقاطك العمياء وتتعلّم أشياء لم تكن تعلم بوجودها أصلًا. وأتصور أن كونك مشرفًا على مسار قد عزّز هذا التعلّم أكثر؟

بالتأكيد. أصبحت أكتب اختبارات أكثر مما كنت أفعل. وهو ليس دائمًا تطويرًا مبنيًا على الاختبارات بالمعنى الدقيق؛ فأحيانًا تأتي الاختبارات في المرتبة الثانية بدلًا من الأولى. لكنه أثّر في طريقة بناء الكود عندي، إذ أزلت الاعتماديات غير الضرورية لتسهيل الاختبار.

أقضي وقتًا طويلًا في مراجعة المشكلات وطلبات السحب في مستودع problem-specifications، وهو المكان الذي نعرّف فيه تمارين Exercism بطريقة مستقلة عن اللغة. وقد تعلّمت الكثير من النقاشات. فأحيانًا يبدو التغيير المقترح بسيطًا على السطح، لكن الحوار الذي يليه يكشف عن مشكلات. وقد صرت أكثر صبرًا، وتعلّمت البحث عن زوايا أخرى محتملة للمشكلات التقنية في العمل.

وتعلّمت أيضًا المزيد عن الإرشاد، ولا سيما أهمية معرفة «لماذا» الكامنة وراء الأمر لا مجرد «كيف». أعمل مع عدد قليل من المبرمجين الآخرين. ورغم أنني أصغر من معظمهم سنًا، فقد بقيت في الشركة مدة أطول منهم، وكثيرًا ما أستطيع الإشارة إلى أسلوب أكثر كفاءة لتسلسل تشغيل آلة ما، أو شرح سبب الحاجة إلى تنفيذ شيء بطريقة معينة.

وإلى جانب Exercism، أنت أيضًا Delphi MVP، وهذا رائع حقًا! كيف حدث ذلك؟ وهل هناك مجتمع قوي لـ Delphi أنت جزء منه؟

خلال المراحل الأولى من إنشاء مسار Delphi، تواصلت مع السيد Jim McKeeth في Embarcadero لمعرفة ما إذا كان بإمكاننا الحصول على ترخيص مفتوح المصدر لـ Delphi. وهذا يسمح لنا باستخدام Delphi لتطوير تمارين جديدة ويتيح للناس المساهمة عبر طلبات السحب. وقد دعاني Jim للانضمام إلى برنامج Embarcadero MVP خلال مراسلاتنا.

Delphi Praxis مجتمع على الإنترنت أعرفه جيدًا. وهناك حركة كبيرة على Google+، لكنه في طريقه إلى الزوال، لذا علينا البحث في مكان آخر.

هل بنيت أي تطبيقات مفتوحة المصدر بـ Delphi يمكن للآخرين الاطلاع عليها؟

أجل! مثبّت واجهة سطر الأوامر من Exercism لنظام Windows مفتوح المصدر ومكتوب بالكامل بـ Delphi. وهو يحدد تلقائيًا الإصدار الصحيح (32/64 بت) من واجهة سطر الأوامر الخاصة بـ Exercism التي يحتاجها الطالب، ثم ينزّل واجهة سطر الأوامر ويفك ضغطها ويضعها في المكان الصحيح. وقد نُزّل المثبّت 15,000 مرة، وهذا شيء أفتخر به كثيرًا!

هذا إنجاز رائع! بصفتك شخصًا لا يقوم بالكثير من برمجة الإنترنت (إن كان يقوم بها أصلًا)، ما التحديات التي واجهتك أثناء إنشاء المثبّت بـ Delphi؟

كُتب المثبّت في البداية بلغة C#. وكان قديمًا، فقررت أن أرى إن كان بإمكاني تحسينه. لم أكن قد جرّبت شيئًا كهذا من قبل، لكنني كنت أعلم أن Delphi يمتلك الأدوات اللازمة لإنجاز المهمة. بدأت بدراسة كود C# الأصلي لأفهم تسلسل الأحداث الذي كان يجري خلف الكواليس، ثم حاولت إنجاز المهام نفسها بـ Delphi. ووجدت كودًا نموذجيًا على موقع التوثيق الخاص بـ Embarcadero ساعدني في فهم كيفية ربط المكوّنات المتاحة معًا بشكل صحيح لإنشاء عميل REST. واكتشفت أيضًا أداة مساعدة مفيدة تأتي مع Delphi تُسمى REST Debugger. وقد أتاحت لي إدخال مختلف استدعاءات HTTP اللازمة لنجاح المثبّت واختبارها. وبمجرد أن تعمل، ينشئ المُنقِّح نسخًا من المكوّنات المطلوبة لألصقها في الكود.

بالنسبة لشخص يريد التعمق أكثر في Exercism، وربما يأمل أن يصبح مشرفًا، هل يمكنك أن تخبرنا عن رحلتك؟

أنا عضو في مجموعة MeetUp محلية تُسمى Akron Code Club. نلتقي نحو مرة كل شهر، وعادةً ما نتفرّق إلى ثنائيات ونعمل على كاتا برمجية اقتُرحت على المجموعة. وفي لقاء أغسطس 2016 بدأنا نعمل على تمارين تقدّمها Exercism. وبينما كنت أستخدم Exercism وبعض مواقع التعليم الأخرى، فكّرت في أنه سيكون جميلًا لو قدّمت مزيد من مواقع البرمجة على الإنترنت Delphi أو Pascal كخيار. وبعد أن تجوّلت في موقع Exercism ومستودعات Exercism على GitHub، اكتشفت أن Exercism تهتم دائمًا بإضافة مسارات لغات جديدة. ولم أكن متأكدًا تمامًا من أفضل طريقة للتواصل مع Katrina. أظنني استخدمت Gitter للتواصل معها في أغسطس 2016 مقترحًا إضافة Delphi. وقد تلقّيت ردًا اعتذاريًا بعد نحو شهرين، وحينها أدركت أنها لا تستخدم Gitter. على أي حال، سألت إن كنت ما زلت مهتمًا بالعمل على إضافة مسار Delphi Pascal، وأنها ستبدأ بإجراءات ذلك إن كنت كذلك.

الآن هناك مستودع يمكنك استخدامه لطلب مسار لغة جديد، ويمكنك دائمًا فتح مشكلات في مستودع exercism/exercism للتواصل مع مشرفي المشروع.

رائع. شكرًا لك على الحديث معي، وعلى كل عملك في Exercism!

بكل سرور! كان هذا ممتعًا. أستمتع بالمشاركة وبفعل ما أستطيع من أجل Exercism. التعلّم بالممارسة!

30 يناير، 2019 · هل وجدته مفيدًا؟