نسخة من مقابلتي مع مؤلف روبي


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

بصفتك مؤسس اللغة ، تحصل على الكثير من الاقتراحات والأفكار. ما أكثر ما يسأل عنه؟

غالبًا ما يسأل الناس ، "أستخدم لغة X. لماذا لا تضيف وظيفة من X إلى Ruby؟" في معظم الحالات ، أجيب بأن هذا غير ممكن. لدينا تصميمات لغوية مختلفة وسياسات لغوية مختلفة. لا يمكننا فقط أخذ بعض الوظائف من X والإضافة إلى Ruby. لكن في بعض الأحيان ما زلنا نستعير أفكارًا جيدة من لغات أخرى مثل Python أو JS أو Elixir.

تضيف اللغات الديناميكية الآن القدرة على تحديد الأنواع بشكل صريح. لقد ظهر هذا بالفعل في Python و PHP و JavaScript (TypeScript). ما رأيك في هذا ، كيف ستعمل مع الأنواع في الإصدار الثالث من تطوير روبي؟

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

في نفس الوقت ، يعد إعلان النوع الصريح معلومات زائدة عن الحاجة. في حالة روبي ، يمكن للغة نفسها الاهتمام بالأنواع وسوف تعمل الكود الخاص بنا فقط. نريد فوائد التحقق من النوع ، لكننا لا نريد تكرار المواصفات اليدوية الخاصة بهم. بصفتنا مجتمع لغة روبي ، نسعى جاهدين لتزويد المطورين بجميع الميزات. سنستخدم ملفًا بأنواع مستقلة عن برنامج Ruby الخاص بنا. وبالتالي ، لن يحتوي برنامج روبي على معلومات النوع.

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

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

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

تعجبني هذه الفكرة وأتطلع إلى الإصدارات المستقبلية من Ruby لمعرفة مدى جودة هذا النهج. من الرائع أنك تختبر اللغة. ما هو المستقبل الذي تراه لروبي ، في أي اتجاه تقوم بتطوير اللغة؟

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

نحب نحن المطورين تسمية الأشياء بأسماء مختلفة. "هذه سيارة رياضية" ، وهذه "سيارة عائلية". JavaScript هي لغة تطوير ويب. C هي لغة نظام منخفضة المستوى. ماذا تحب استدعاء روبي ، ضعه؟

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

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

لا تقترض الكثير من لغات البرمجة النصية الأخرى. ستكون لغة البرمجة الخاصة بك هي أفضل لغة للأغراض العامة. سيصبح التركيز الكبير على البرمجة النصية نوعًا من البدائية في المستقبل.

أثناء تطور لغة روبي ، أجريت الكثير من التغييرات ، وأجريت الكثير من التجارب. بعضها كان ناجحًا ، والبعض الآخر لم ينجح. ما الذي تعتبره أعظم نجاح لك في تطوير اللغة ، ما الذي يعجبك أكثر؟

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

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

في لغات أخرى ، مثل Swift ، إذا تم تحديد دالة أخرى كوسيطة أخيرة للدالة ، فإن وظيفة الوسيط هذه يمكن أن تتصرف مثل كتلة في Ruby. هناك اقتراح لهذا السكر النحوي حتى لجافا سكريبت. انا فخور جدا به

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

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

قابلية التغيير معقدة ويمكن أن تؤدي بسهولة إلى الأخطاء. لكن الأسئلة التقنية كافية! نحن بشر مخلوقات اجتماعية ، وسيكون من المثير للاهتمام أن نتعلم عن حياتك ، كيف تنظم العمل؟

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

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

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

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

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

هل هناك أي شيء في الثقافة واللغة اليابانية أثر على إنشاء روبي؟

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

والسؤال الأخير الخبيث. غالبًا ما يتخيل الناس أنفسهم في مكان الآخرين ، ويفكرون في ما سيفعلونه ، وكيف يتصرفون. هل هناك شيء في موقع مؤلف لغة البرمجة الشعبية غير واضح من الخارج؟

إن إنشاء لغة برمجة ليست مهمة فنية صعبة للغاية. يمكن للعديد من الطلاب الذين يحضرون دورات في تطوير لغات البرمجة في الجامعة أن يصنعوا لغتهم الخاصة ولا يوجد شيء معقد بشكل ممنوع. الصعوبة هي أن اللغة هي طريقة للتعبير عن الأفكار. ينطبق هذا على كل من لغات البرمجة واللغات الطبيعية: الروسية والإنجليزية واليابانية. لغات البرمجة مثل Ruby أو Python أو JavaScript - تساعد عقولنا على صياغة الأفكار. هذه هي المهمة الرئيسية للغات البرمجة. تقدم لغة البرمجة الجيدة نهجًا لصياغة الأفكار. بالنسبة لروبي ، فإن هذا النهج هو "إنتاجية التطوير ومتعة كتابة التعليمات البرمجية". بالنسبة للغات الأخرى ، يمكن أن تكون "البساطة" أو "الكفاءة" أو أي شيء آخر. كل لغة لها نهجها الخاص. وإذا أعجبك ،ما يقدمه روبي لصياغة الأفكار هو لغتك.

All Articles