RubyRussia 2019. نيكيتا شيلنيكوف عن الآثار الجبرية

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

صورة

قل لي ماذا تفعل وكيف يرتبط مع روبي؟

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

أخبرني بتقريرك عن التأثيرات الجبرية ، ما الفوائد التي يقدمها للمطورين

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

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

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

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

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

هل يرتبط هذا بطريقة أو بأخرى بالإثبات الرياضي لصحة الكود؟

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

ما هو شعورك حيال الأنواع ولغات البرمجة المطبوعة بشكل ثابت؟

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

هناك شائعات بأنه سيكون هناك أنواع في روبي 3. ماذا تقول في هذا؟

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

هل تبحث عن بناء جملة جديد تخطط لتنفيذه فيما يتعلق برمز روبي؟

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

ماذا تريد أن ترى في روبي ، كيف ترى تطوره؟

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

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

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

نراكم في RubyRussia!

أذكر أن المؤتمر هو بالفعل هذا السبت ، التسجيل لا يزال مفتوحا.

لن يكون هناك تقارير فقط ، ولكن أيضًا مواقف لأفضل الشركات:

المنظم - إيفرون
الشريك العام - توبتال
الشريك الذهبي - Gett
شركاء الفضة - Valarm ، JetBrains ، Bookmate و Cashwagon
الشريك البرونزي - InSales

Source: https://habr.com/ru/post/ar469007/


All Articles