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

نتحدث في هذا الجزء مع
ألكساندر بودكالوزين وميخائيل موتسيانكو . خارج البرنامج - تعليق
إيليا سيرجي . Scala plugin ، أول أحداث Scala في روسيا ، تاركًا في Kotlin و Native باللغتين ، وكسوف غروب الشمس وأكثر من ذلك بكثير تحت القص.
كيف وصل الاسكندر إلى سكالا ، وذهب إلى Kotlin والتدريس
من عام 2008 إلى عام 2017 ، قام ألكسندر بودكاليوزين بتطوير المكون الإضافي JetBrains Scala في IDEA كقائد للفريق. غادر لاحقًا إلى Kotlin Tooling أولاً إلى Kotlin / Native ، ثم إلى Kotlin ككل.ألكساندر : المهمة كبيرة ، كل شيء مرتبك بعد قيود السنوات. بالمناسبة ، لم تبدأ الحركة في عام 2010 ، ولكن قبل ثلاث سنوات. في عام 2007 ، جئت للتو للعمل في JetBrains وكنت محظوظًا مع MPS ... هل تعرف ما هي MPS؟
فاديم : سمعت أنها لغة تعبيرية ومرئية.
ألكساندر : MPS قبل الموعد المحدد. هذا هو
نظام البرمجة الوصفية - البرمجة التوليفية على الفور مع IDE. حصلت على وظيفة في شركة MPS ، لكنهم عثروا بالفعل على شخص هناك. لذلك كنت محظوظًا - لقد أُرسلت لكتابة ملحق Scala.
بدأ JetBrains في كتابة مكون إضافي ، لكنه أسقطه لأنه كان رائعًا. كان يتمتع بشعبية وطلب الدعم. ذهب جميع المشاركين في البرنامج المساعد سكالا للعمل على البرنامج المساعد Groovy. لم يشارك أحد في سكالا ورثت هذا الميراث.
انضممت إلى الشركة في بداية عام 2008. لم أكن أعرف شيئًا ، بدأت أحفر محللًا ، وأصلح أحد الأخطاء ، والثاني ، والثالث - استمر هذا إلى الأبد. ونتيجة لذلك ، جلس وأعد كتابته. لذلك ذهب ببطء لتطوير.
عملت
ايليا سيرجي على البرنامج المساعد قبلي. لقد وجدت له وعملت معه على البرنامج المساعد. من المضحك أنني كنت عالم رياضيات ، وإيليا كنت مبرمجًا. لكنه أراد أن يكون عالم رياضيات ، وأردت أن أكون مبرمجًا. أحببت البرمجة ، وكنت على استعداد للقيام بذلك ولم أفهم لماذا لم يعجبه إيليا. ولم يفهمني نتيجة لذلك ، وضعت الحياة كل شيء في مكانه.
غادر ايليا JetBrains ويشارك في علوم الكمبيوتر في إسبانيا ، وهو أستاذ تقريبًا. لقد وصل مؤخرًا ، وأطلع على كيفية البحث عن سباقات تلقائية - هذا نوع من العلوم. لا يزال في بعض المنافسة جلس وكتب 10 آلاف سطر على سكالا. قال أن كل شيء رائع ، كل شيء يعمل. كان لا يزال يستقل أيام سكالا الأولى ، كما يبدو في عام 2009.
بعد النظر في سيرة إيليا ، شعرت أنه من المهم توضيح التفاصيل من المصدر الأصلي.كان التقرير الذي ذكره ألكساندر حول التحليل الثابت لإيجاد ظروف السباق في تطبيقات Java. في عام 2018 ، نفذنا العمل مع Facebook. تم كتابة تقرير ومقالين آخرين عليه. صحيح ، هناك كل رمز على OCaml. المسابقة هي مسابقة ICFP Programming التي استضافتها هذا العام . كتبت أيضًا جميع الشفرات تقريبًا للمسابقة في Scala باستخدام Scala.js.
يمكنني استخدام Scala حصريًا كمستخدم. باستخدام IntelliJ IDEA و Scala plugin ، تمت كتابة العديد من النماذج الأولية لمشاريعي البحثية: توليف البرامج باستخدام مؤشرات TyGus / suslik ، واختبار الخوارزميات الهندسية . في الجامعة ، أقوم بتدريس مقرر متعدد مؤشرات الترابط ، حيث Scala هي اللغة الرئيسية.
ايليا سيرجي ، أستاذ ، جامعة سنغافورة الوطنية .
ألكساندر : بدأت في ركوب أيام Scala في عام 2011 منذ ثلاث سنوات نكتب المترجم الثاني لـ Scala ، في الواقع. يستغرق سنوات ، وهذا طبيعي. كان كل شيء يعمل ببطء وسيء بالنسبة لنا ، ولكن في الوقت نفسه كان هناك شيء على الأقل. من وجهة نظر المحررين ، لم يكن هناك شيء أفضل على أي حال. لا أتذكر ما إذا كان Eclipse قد بدأ الدعم في ذلك الوقت. نعم ، يبدو أنهم دعموه بالتوازي.
فاديم : تحدثت مع رومان تيموشيف وأخبرني عن عمر 13 عامًا ، كيف بدأ في الكتابة وعقد اجتماعات في موسكو. وفقا لروايته ، ثم استخدم الجميع الكسوف. كان مقبولا تماما ، كان مدعوما رسميا.
ألكساندر : نعم كان كذلك. في عام 2011 ، كان Eclipse سيئًا للغاية ، ووصل في عام 2013 إلى سرعة مثلنا في 2011. على عكس Eclipse ، نكتب الواجهة الأمامية الخاصة بنا ، لذلك كان تسليط الضوء على الخطأ مختلفًا عن المترجم. هذا غير مريح وهذه مشكلة أساسية. لم يتم تسليط الضوء على بعض الأخطاء ، ولكن العكس في المحول البرمجي. يستخدم الكسوف رمز المترجم.
يعد استخدام رمز المترجم فكرة سيئة لأن كل شيء سوف يعمل ببطء. في Kotlin ، يكون مشابهًا عند استخدام رمز برنامج التحويل البرمجي. الوضع ليس سيئًا كما كان الحال في سكالا - لقد فكروا قليلاً في IDE ، لكن ما زال من غير السهل تقديم أداء جيد من وجهة نظر IDE.
في عام 2011 ، تم عقد
Scalathon (
صور ) في فيلادلفيا. هذا هو المؤتمر الأول الذي تمت دعوتنا إليه ، لكن كان من الغريب أننا ذهبنا إلى هناك. اتصلوا بـ JetBrains إذا كنا نرغب في حضور الحدث. قبل ذلك ، لم يتصلوا بأي مكان مع Scala ، وعندما بدأنا في فعل شيء ما ، لاحظوا ذلك. كان لدى المستخدمين ، مثل مبرمجي سكالا ، أنف غولكين - حوالي 100 شخص طوال المؤتمر. في Scalathon ، قابلت
بيل فينرز .
فاديم : الاسم مألوف ، لكنني لا أتذكر من هو.
ألكساندر : مؤلف شيئين: Scalatest والكتاب الرئيسي
البرمجة في Scala . هذا كتاب مكتوب مع مارتن أوديرسكي - كتابنا المقدس!
فاديم : لم أقرأ.
ألكساندر : هذا لا يهم. في مكاني هذا الكتاب الذي وقّع عليه بيل فينرز ومارتن أوديرسكي. أعطوه لي في أحد أيام Scala خلال 12 أو 13 عامًا. في حفل عشاء لجميع المشاركين ، تم منح الأشخاص الذين ساهموا في المجتمع. فجأة اتصلوا بي وتلقيت كتابًا لمساهمي.
بدأت أيام Scala بالزيارة منذ عام 2011. في البداية ، احتُجزوا مرة واحدة في السنة في أوروبا أو في أمريكا ، وفي وقت لاحق مرتين. في العام الماضي حضرت مؤتمراً واحداً ، لكنني لم أذهب إلى المؤتمر الثاني. في العام الماضي قدمت تقريراً عن مقارنة Kotlin / Native و Scala Native. لم يعتقد أحد في فريق Kotlin أن التقرير سيتم قبوله ، لكن تم أخذه. ربما احتراما أو لأسباب أخرى. حضر التقرير عدد قليل من المستمعين. لا يهتم مبرمجو Scala بكل شيء يحتوي على كلمة "Kotlin". لذلك كان ولا يزال كذلك.
فاديم : أعتقد أن كلمة "الأصلية" لعبت دوراً.
ألكساندر : لا ، في أيام Scala ، تجمع جميع تقارير Scala Native دائمًا غرفًا كاملة ، على سبيل المثال ، أداء ل Denis Shabalin. ولكن في الوقت نفسه ، فإن التكنولوجيا بعيدة عن الإنتاج. إنها ليست مقدرة للوصول إلى هناك لمدة 10 سنوات أخرى ، على الأقل.
فاديم : لماذا تعتقد ذلك؟ لقد فوجئت ، ولكن هناك
ريتشارد ويلينج الذي
يكتب كتابًا عن سكالا الأصلية - يوجد بالفعل الكثير من المواد.
يذهب إلى البودكاست ويتحدث عن كيفية استخدامه في الإنتاج. لديه مجال حيث يوجد الكثير من البيانات. انه مسرور جدا مع الأم في هذه الظروف.
ألكساندر : انظر تقريري حول
المقارنة بين سكالا ناتيف وكوتلين / ناتيف ، حيث أوضح وجهة نظري. في وقت الأداء ، عمل شخص واحد على Scala Native. لذلك ، لا يمكن الحديث عن أي منتج. إذا كنا نتحدث عن شخص واحد تطبيق التكنولوجيا في مكان ما - ربما. انها ليست فقط السائدة ، سيكون هناك عدد قليل من المستخدمين.
لدى Kotlin / Native تطبيق معين - مشاركة الكود بين iOS و Android. فقط هذا يخلق مصلحة معينة. لا يمتلك Scala Native هذا ولا يوجد شيء يمكن التشبث به. يمكن استخدام Scala Native لإجراء العمليات الحسابية عندما تضطر إلى الجمع بين كود Scala والحسابات السريعة مثل Tensorflow. لكن Scala Native لا يعني أنه بين Scala و Native يمكنك استدعاء بعضهم البعض بأمان أو تلاشي الكود الشائع.
في Kotlin ، نرتفع لكتابة وتجميع الرمز نفسه. هذا جحيم من العمل بمعنى التصميم أنك لا تستخدم POSIX ، ولكن نوعًا ما من مكتبة الطبقات البينية التي تعمل بشكل جيد على قدم المساواة في JVM وبدونها. إذا لم يكن لديك مكتبة من هذا القبيل ، فهذه هي المهمة. سيكون الرمز مختلفًا في هذا المكان ، وإذا كان مختلفًا ، فكيف يمكن الحفاظ عليه؟ كيفية نشر المكتبات التي تحتاج إلى تجميع نقاط النهاية المختلفة ونشرها ، وهناك أيضا نظام بناء ، التبعيات؟ إذا قمت بحفر ، ثم الأسئلة - الهاوية. لا يستطيع شخص واحد يقوم بتطوير برنامج Scala Native الإجابة على كل شيء. التطبيق عبارة عن قصة منفصلة ، ويمكنك رؤية تقريري حول هذا الموضوع.
فاديم : حسنًا ، دعنا نعود. في عام 2011 ، ذهبت إلى أيام Scala ، وقبل عام 2016 ، هل كنت لا تزال تستخدم المكون الإضافي لـ Scala؟
الكسندر : حتى عام 2017.
فاديم : ثم سحبت إلى كوتلين. ماذا حدث
ألكساندر : من وجهة نظر ، لم أفعل كل ما بوسعي. يمكنك الاستمرار في تطوير المكوّن الإضافي لـ Scala - الكثير من الرقائق ، هناك شيء يجب الانتهاء منه. ولكن ، من وجهة نظر العمل ، فإنه ناجح كمشروع. يستخدم 80٪ من مبرمجي Scala برنامج IntelliJ IDEA. كم تعرف عن المنتجات التي استحوذت على 80 ٪ من السوق؟ هناك القليل منهم.
ماذا تفعل بعد ذلك؟ أريد أهدافًا جديدة وآفاقًا جديدة ، وضمن البرنامج الإضافي لـ Scala ، كان هذا مستحيلًا. تقوم JetBrains بتطوير لغة البرمجة الخاصة بها وتشك في Scala. من المستحيل العثور على مكان لـ Scala في الشركة ، لذلك إما أغادر أو أعمل هنا وبعد ذلك. في المؤسسة أي ، أو أي شيء آخر. كان علي اتخاذ قرار صعب.
إلى حد ما ، كنت أستعد. أولاً - أدركت أنه إذا تركت الفريق ، فإن
كوليا تروبين سيكون في مكاني. إنه يقود الفريق الآن. كنت أستعد ، وأعدته بطريقة غريبة ، فهمت أنه يمكن أن يقف في مكاني. الثاني - وزعت ببطء جميع النظم الفرعية ، ورفض لهم. لم تعد هناك حاجة لبرمجة لهم.
كان تفريغ كل هذا إصابة في اليد وجراحة و 2 أشهر إجازة مرضية. بعد الخروج ، ذهبت إلى المدير العام مكسيم شافيروف. لقد جاء وقال: "أعطني شيئًا آخر". كان هناك مثل هذا الزناد ، كان هناك شيء ما يستعد للوعي ليكون قادرًا على القيام بذلك ، وقد تم تحديد هذين الشهرين. واقترح ماكس. قلت "أي شيء سوى Kotlin." أرى ، أنا من عالم Scala ، وعالم Scala يكره Kotlin.
فاديم : الأمر لا يكرهني ، إنه من غير الممتع ظهور مثل هذا المنتج. هذا هو كعب سكالا. في الوقت نفسه ، يكون التسويق نشطًا ، ويتم التقاط السوق - هؤلاء الأشخاص الذين يمكنهم الذهاب إلى الجانب المشرق من Scala.
من ناحية أخرى ، هل هذا جيد؟ إذا كنت تتخيل وجود فجوة في المعرفة تحتاج إلى إتقانها من أجل الكتابة بشكل فعال في Scala أو Haskell ، فبالنسبة لمطوري Java ، فإن الأمر ضخم للغاية. هنا Kotlin هي نقطة إعادة شحن ، يمكنك الوصول إليها بأمان والجلوس عليها والمضي قدمًا فيها.
ألكساندر : هذا ليس صحيحًا تمامًا. عندما لم يكن هناك Kotlin ، جاء الناس إلى سكالا الذين لم يكونوا راضين عن جافا - كان هناك شيء مفقود ، والكثير من الغليان. استغرق Scala مكان ما يسمى أفضل جافا. تهدف Kotlin حصريًا إلى هذا التخصص.
مع Kotlin و Android وكل ما حدث ، والآن متعدد المنصات ، هذا كل شيء. لم يتم تثبيت Kotlin على جهاز Android واحد ، على مكان واحد ، وذهب أبعد من ذلك.
فاديم : أعتقد أنه جيد - لقد حرك Oracle. الآن ، على الأقل بعض JEPs العادية ذهبوا لجعل جافا تتطور.
ألكساندر : أعتقد أن السبب ليس Kotlin - هذه نتيجة طبيعية. قبل عامين من إعلان غوغل عن Kotlin ، كان لا يكاد يذكر. عندما قررت الانتقال ، أعطاني ماكس شافيروف قائمة للاختيار. على الرغم من أنني قلت "ليس فقط Kotlin" ، فإن خيار الدعم Kotlin / Native في IDEA كان في هذه القائمة. نتيجة لذلك ، قررت من القائمة بأكملها محاولة الانتقال إلى Kotlin. في اليوم التالي لتولي مسؤولية Kotlin / Native ، قال
Andrei Breslav إن Google I / O التالية ستعلن أن Kotlin هي لغة Android معتمدة رسميًا.
إليكم الفكرة: "أبله". اعتقدت أنني كنت أفعل شيئًا من أجل لغة هامشية مشروطة. كان من الواضح أنه كان من الصعب التغلب على مكانة جافا الأفضل. مع إصدار Java 8 مع lambdas ، أصبح هذا أكثر صعوبة. Scala على ما يرام مع هذا ، فهي ليست قوية مع lambdas وليس مع ما هو أفضل من Java. إنه عشوائي - لقد جاء أشخاص عشوائيًا إلى سكالا على أساس أنهم يحتاجون إلى جافا أفضل.
بعد جافا 8 ، تباطأ تدفق هؤلاء الناس. لن يذهبوا إلى سكالا وكوتلين - لقد حصلوا على لامدا. هذا يكفي لتبدأ ، والأفضل لم يعد مهتما. جلست وفكرت وأدركت أن المقياس مختلف الآن.
في رأسي ، انتقلت إلى فريق على نطاق ليس أكبر بكثير من المكون الإضافي لـ Scala. في ذلك الوقت ، كان هناك 100 ألف مستخدم ، وكان لدى Kotlin 40 ألف مستخدم. مقياس مختلف تماما. أدركت أنه أمر ممتع ، وأنهم لم يخبروني مقدمًا. قررت الذهاب إلى Kotlin لأنه كان من المثير للاهتمام محاولة وليس من أجل أهداف طموحة وطموحة.
بشكل عام ، سكالا أجمل في البرمجة. عندما تبدأ في كتابة Kotlin بعد 9 سنوات من البرمجة في Scala ، ينتهي بك الأمر بدون أيدي. هناك بعض الحزن في هذا.
ماذا أفعل لو كنت CTO؟ بالنسبة لبعض مهام Kotlin البسيطة ، سيكون من الأسهل بالنسبة لي تشكيل فريق. سيكون أرخص أو أكثر كفاءة. كان بإمكاني تجنيد مبرمجي Scala أرخص ، لكنني كنت سأحصل على نتيجة أسوأ ، لأنهم سيفعلون شيئًا فظيعًا في Scala. حتى لو كان الأمر صعباً في سوق العمل ، فسأبدأ في توظيف مبرمجي Java - سيكون تدريب Kotlin أسهل كثيرًا. هذا من وجهة نظر بدء مشروع جديد ، إذا لم يكن هناك أي أشياء تكنولوجية خطيرة.
بالنسبة للقطاع المصرفي ، على سبيل المثال ، هناك أسباب لاستخدام Scala. Kotlin لا يمكن حلها. نفس metaprogramming في سكالا هو أكثر ملاءمة.
إذا كنت تفكر مليا في هذا الموضوع ، يمكنك إنشاء أشياء بنية أساسية رائعة على Scala ، لكن هذا مستحيل في Kotlin. هناك نفس معالجات التعليقات التوضيحية. يوما ما سيكون ذلك ممكنا ، ولكن فقط في منظور عدة سنوات.
فاديم : لماذا تعتقد أن سكالا جيدة للبنوك؟
ألكساندر : هناك الكثير من المفردات التي لا تتعلق بلغة البرمجة. هذا هو النظام حيث توجد كائنات نوع المستخدم. يتطلب الكثير من الازدواجية ، بدءًا من قاعدة البيانات وينتهي بكل شيء. لتغيير شيء ما بشكل فعال ، تحتاج إلى دعم جيد metaprogramming. هناك حاجة إليها في كل مكان ، ولكن من الضروري التمسك بحذر ، وإلا يمكنك أن تتعثر.
في العام 11 ، تم استدعائي للجامعة الأكاديمية. كنت كسولًا جدًا في تدريس الدورة بأكملها ، ووافقت مع
Sveta Isakova ، التي تعمل الآن محامية مطورة في Kotlin. اتفقنا على إدارة الدورة التدريبية إلى النصف ، ولكن كان حول سكالا. ربما أرادت معرفة المزيد عن سكالا.
فاديم : هل
احتلت الجامعة المرتبة الأولى في ذلك الوقت؟
ألكساندر : نعم ، مع القضاء في 5-6 بالطبع. كانت السنوات الأولى من المسابقة صغيرة. لكن المنافسة على المكان ازدادت عندما أتت JetBrains و Yandex و Transas برعاية ودعوة للتدريب الداخلي وهدف زيادة عدد الموظفين لأنفسهم.
لقد بدا الأمر رائعًا: الأموال الخاصة والمبادرة الخاصة تحت غطاء الدولة وغطاء Alferov. أعطى بلانش كاملة - تفعل كما يحلو لك! اتضح أنه رائع ، لأن الدورات التدريبية ذات صلة. لقد جندوا أشخاصًا كانوا في طليعة المتسابقين ، وفهموا ما كان يحدث في هذه الصناعة في الوقت الحالي ، وليس قبل 10 سنوات لم يكن من الواضح أين. إذا تحدثنا عن جامعات عادية ، ألا وهي "الرياضيات / mehmat" ، فإن باسكال لا يمر هناك - هذا لا علاقة له بالحياة الحقيقية.
كانت هذه جامعة أكاديمية قوية. أدرك الناس أنه عندما وصلوا إلى هناك ، سوف يطيرون بسرعة كبيرة في هذه الصناعة. خريجي الجامعات بكل سرور المعينين في ياندكس و JetBrains. هذه هي خطوة مهنية جيدة ، وكانت المنافسة 10 طلاب في المكان. لقد درست هناك لمدة 5 سنوات. في السنة الثانية ، لم تتحدث Sveta معي عن Scala ، وقد اتصلت بالعديد من المساعدين ، ولا سيما Sveta لـ Kotlin. نتيجة لذلك ، قمنا بإعادة تسمية لغات JVM.
في مرحلة ما ، حصلت على دعم Clojure ، وفهمت هذه اللغة قليلاً. وفقًا للطلاب ، لم يفهموا ما الذي كان يقوم به كلوجور ، وما نوع الهراء الذي حدث. يتحدثون عن اللغات العادية - سكالا وكوتلين ، وفجأة ، قللوا لغة كلوجور. أنا فقط لم يكن خبيرا. كانت هذه هي القصة.
حول أول ScalaSPB / ScalaDev
ألكساندر : ثم ظهرت أحداث مثل أيام سكالا في سان بطرسبرغ.
مرت أول ScalaDev ، وبالنسبة
للحدث الثاني ، اتصل منظمو أيام Scala الأصلية بسانت بطرسبرغ وطلبوا إعادة تسميتهم.
فاديم : ما السنة هذه؟
ألكساندر : نعم ، كل شيء موجود - 11-13. وقدم هذا الحدث من قبل رجال من فيلق سانت بطرسبرغ الإلكتروني. يبدو أنهم كتبوا تطبيق Raiffeisenbank. حتى أنهم كتبوا تطبيقًا للهاتف المحمول في سكالا ، لكن الآن لا أحد يكتب بهذه الطريقة - الناس مجانين.
فاديم : تحدث أحد ضيوف
البودكاست -
ماتفي مالكوف - عن سكالا وأندرويد قبل عامين. قال إن كل شيء على ما يرام معهم ، ويستخدمونه. مكسبهم الرئيسي هو كلا من الخلفية سكالا والتطبيقات.
لقد كتبت إليه مؤخرًا بطلب التحدث في المؤتمر ، لأنك لن تجد أي شخص عن الهواتف المحمولة. اتضح أنه ترك الشركة وكان آخر شيء فعله هو إنشاء CI لتجميع وحدة Kotlin من ذلك المشروع في Scala بحيث يتدحرج الشباب إليها تدريجياً.
ألكساندر : قبل عامين ، لم يكن هناك شيء واضح حول كوتلين. من الناحية النظرية ، يمكن أن تأخذ جوجل سكالا ، لكنها لم تفعل.
أجرينا في أول أيام سكالا وحتى تجمعنا. بتعبير أدق ، ليس في الأول ، ولكن في الثاني ، الذي عقد في JetBrains. ثم قام سفيتا إيساكوفا بأداء مقدمة في Kotlin.
كان الأمر مضحكا - اعتبر جميع مطوري سكالا أن Kotlin هو العدو الأول. كان رد فعل هول سلبًا للغاية ، وألقى أسئلة: "لماذا لا يتم هذا ، لماذا لا يتم ، لماذا لا؟" كان زاحف ، نوعا من القرصنة.
بعد Sveta ، كنت ثاني شخص يقول شيئًا عن Kotlin في مؤتمر Scala - حول Kotlin / Native. لقد أظهرت تجربتي أن هذا لا طائل من ورائه. لست من أجل التقرير ، كنت مهتمًا برؤية Scala Native. كيف يتم ترتيبها في الداخل ، وبدء البرامج ، ونفرح بشيء ما. حتى في ذلك الوقت ، كنت سعيدًا لأن الحجم الثنائي لـ Scala Native كان أصغر من حجم Kotlin. أعتقد أن Kotlin / Native لديها أقل الآن ، لأن 10 أشخاص يعملون على ذلك.
فاديم : حسنًا ، أنت بالتأكيد تخنق
دينيس شعبالين .
ألكساندر : هذا مستحيل ، إنها تقنية معقدة للغاية. لدينا 10 أشخاص ، وهذا لا يكفي. و 10 أشخاص رائعين ، حقًا رائعون جدًا ، جرب هؤلاء أكثر. دينيس نفسه رائع ، لكن ماذا يمكن أن يكون وحيدا؟
قصة المجتمع مثيرة جداً للاهتمام ، وكذلك قصة سكالا بأكملها. أراد الكثير من الناس إنشاء نوع من الإطار ، على الأرجح لا يحتاجه أحد ، للإعلان والانسحاب. تشكلت العديد من النجوم الغريبة ، والبعض الآخر ساعد EPFL. أحد المتطلبات هو عمل خريج من طالب دراسات عليا. على سبيل المثال ، Scalameta هو عمل
Zhenya Burmako . في عملية العمل ، يقوم طلاب الدراسات العليا بزيادة السعر كمبرمج ، وبعد التخرج يجدون عملاً رائعًا. الوظيفة الأولى براتب أكثر من الأشخاص الذين يعملون لمدة 10 سنوات. لأنهم مشهورون ، فقد تحدثوا عن مجموعة من المؤتمرات ونسجوا.
هنا شيء آخر. أنت تنظر ، في كوتلين: هنا سنفعل ذلك ، ها هو ، وفي سكالا هو نفسه تمامًا. هنا لذيذ ، في Kotlin الخلفية IR. ولكن بما أن كل شيء في سكالا يدفع المجتمع ، كل شيء في فوضى كاملة. لا يوجد تصميم مركزي. ما يحدث سوف ينجح في مسعاه. الرجل أراد أن يحرق شيئا ، اتضح. مارتن أحب ذلك ، وذهب موافقة للجماهير. وفي Kotlin ، بشكل أكثر وضوحا ومهنيا ، هذا ما تعنيه الصناعة.
حول الكسوف وجيسون زوغ
ألكساندر : في عام 13 ، ذهبنا إلى المؤتمر. الجميع في المترجم المبرمج في الكسوف. وقفنا والناس الذين استخدموا IDEA اقترب منا. كانوا سعداء ، شكر. لدينا 10 ٪ من السوق ، والباقي على Eclipse. جميع المجمعين يجلسون على ذلك. لقد تخطينا لفترة طويلة ، فجأة نقنعهم باستخدامه. ولكن في مرحلة ما كان هناك تحول.
في السنة 11 أو 12 ، كان لدينا مساهم ،
جايسون Zaugg . في عالم المصادر المفتوحة ، هذا ليس غريبًا ، لكن نادراً ما يظهر الأشخاص الذين يستثمرون الكثير من الوقت والكود كثيرًا. جاء جايسون ، وكسب الكثير من المال ، وكان هو نفسه يعمل في أحد البنوك. نحن حتى منحنا الحق في ارتكابها. لم يكن عليه حتى إظهار المراجعة للنشر. جلسوا فقط ، مشفرة ، ناقشوا بعض الأشياء معًا. بناءً على الواجهة الأمامية لدينا ، اكتشف كيف يعمل سكالا. انتهى كل شيء مع الحصول على وظيفة جيسون كمترجم سكالا. من المحزن أننا لم نرتب ذلك لأنفسنا. أعتقد أن هذه هي الإستراتيجية الخاطئة. إذا كان الشخص يعمل من أجلك مجانًا - فيجب أن يتم الترتيب له بنفسه ، وإلا فسيذهب إلى مترجم Scala. لم يكن هناك أكثر من هذا.
جيسون شخص رائع ومساهم رائع. كان من محبي IDEA. والحقيقة هي أن البرنامج المساعد سكالا معلقة على رمز المترجم. الرمز معقد - حقن التبعية (DI) ، والذي ، في جوهره ، هو نمط كعكة. عند فتح أي ملف ، تحتاج إلى تحليل المترجم بأكمله. بسبب DI ، هناك كل شيء في السياق ، وكل شيء موجود مع استدلال الكتابة ، وتحتاج إلى عرض النوع في كل مكان - كل شيء متشابك. استغرق تحليل ملف واحد 5 دقائق. حتى في تكوين برنامج التحويل البرمجي كمشروع ، لا يزال bootstrap يأتي. يجب أن يعتمد على نفسه ، وهذا ما يسمى bootstrap. مثل هذه المشاريع كان من الصعب اقامة.
قضيت أنا وجيسون الكثير من الوقت في التكيف. لجعل مشاريع bootstrap ممكنة ، برنامج في المترجم ، بحيث يمكنك على الأقل كتابة التعليمات البرمجية في هذه الملفات المعقدة. في البداية ، كان كل شيء أحمر ، وقضيت الكثير من الوقت لتحويل كل شيء إلى اللون الأخضر. لقد أجرينا اختبارًا تحقق من أن الواجهة الأمامية للمترجم باللون الأخضر أو تحتوي على أخطاء قليلة. وبالتالي ، تحول فريق المترجم بالكامل إلى IDEA.
فاديم تشيليسوف : في تلك اللحظة ، بدأ التدفق من اكليبس؟
ألكساندر : هناك عدة أسباب للخارج. أولاً ، أصدرت IDEA إصدار مجتمع. هذا يعني أنه يمكنك وضع المكون الإضافي Scala على الإصدار المجاني من المستخدم. كنا المصدر المفتوح منذ البداية ، وعندما بدأنا ، كانت الملكية ، مع المصادر المفتوحة. ولكن تم تثبيته على IDE المدفوعة. لهذا ، كتبوا دعم Eclipse ، لأنهم يحتاجون إلى أداة قياسية يمكن استخدامها مجانًا. لذلك ، أصبحنا أيضًا أحرارًا.
والثاني - الكسوف كمنصة بدأت في الموت مرة أخرى في '14. لم يمت ، إنه أمر سخيف ، ولكن التمويل توقف فجأة. بدأت Eclipse Foundation في جمع أموال أقل ومن غير الواضح كيفية تطوير النظام الأساسي في مثل هذه الظروف.
السبب الثالث هو أنهم لم يتمكنوا من إنشاء IDE سريع.
لقد عمل
مترجم العروض التقديمية ببطء ، وإذا تحدثنا عن نوع ما من الوظائف - إنها بشكل عام tryndets ، فمن الصعب للغاية القيام بإعادة بيع المباني. في المحول البرمجي ، من وجهة نظر التحسين ، يتم بناء الأشجار أحادي الاتجاه ، لا يمكنك أن تأخذ أحد الوالدين. للعثور على العقدة الأصل ، تحتاج إلى أخذ ملف من الأعلى ، والذهاب إليهم والبحث - ضجة فظيعة.
السبب الرابع هو أنها تعمل مع العرض في برنامج التحويل البرمجي. هذه هي الشجرة التي يتم الحصول عليها بعد الانفصال. المحرر مكتوب في البيان الأمامي ، وفي المحول البرمجي للعرض التقديمي ، من غير الواضح نوع الكود. ليس من الواضح كيفية التعامل مع هذا وتنظيم إعادة بيع المساكن. كيفية استخراج هذا البيان الأمامي ، وليس كل هذا هراء مجنون؟ وفقا لذلك ، ظهرت الميزات ببطء.
في الوقت نفسه ، كانت الواجهة الأمامية لنا بائسة ولم تنجح بشكل جيد. ولكن لكي يكون على الأقل هكذا ، كان عليه أن يفعل أشياء فظيعة. ذات مرة ، تتطلب طريقة
{i <- 0 to 10} println(i)
دعمًا لـ 80٪ من اللغة. نظرًا لأنه يتم فصله ، ولديك تحويل ضمني
CanBuildFrom
Range - 1 to 10
، على طول المسار تحويل ضمني
map
، فإن المعلمات الضمنية هي
CanBuildFrom
. علاوة على ذلك ، لا يزال هناك تسلسل هرمي مجنون للمجموعات و lambdas ، وبعض lambda مجهولة أخرى مع معلمة غير معروفة - القصدير كاملة. بمجرد عمل هذا المثال ، تحتاج إلى فهم أنه يعمل بنسبة 80٪ من الواجهة الأمامية. لذلك ، حتى الواجهة الأمامية الضعيفة تعني أننا دعمنا قدرًا لا يصدق من وظائف Scala.
الآن IDEA كتب العديد من محولات اللغة. إنهم غريبون ، لكنهم مختلفون ، وعندما بدأ كل شيء ، لم يتذكر أحد. في عام 2009 ، ذهبت إلى مؤتمر وهناك شعرت بالصدمة - لماذا لا أقوم بالتحويل من Java إلى Scala؟ لقد ناقشنا أنك سوف تتعب من الفواصل المنقوطة لإزالة وتوسيع أنواع - عليك أن تتحرك بطريقة أو بأخرى. جلست وكتبت ألف سطر في المساء - محول بسيط من لغة إلى أخرى.
لكنني ذهبت أبعد من ذلك ووجدت كيف أجعل من السهل العثور على هذه الميزة. عندما أقوم بنسخ إلى كود Java ، أتوقع إدراج فواصل منقوطة وإزالتها الآن. هذه هي حالتي المفضلة عند إنشاء ميزة مثالية للاكتشاف. في حين أنك لا تحتاج إليها ، أنت لا تعرف عنها. بمجرد الحاجة إليها ، يمكنك الحصول عليها على الفور. انها مثل أسلوب أبل - بسيطة ومباشرة. وفقًا لذلك ، منذ ذلك الوقت ، تمت كتابة العديد من المحولات بواسطة JetBrains ، وتتمثل ميزة الإعلان في أنها يتم تقديمها في الإدراج. لكن نعم ، لقد توصلت إليها ، هذا فخر لي.
حول المجمعين
ميخائيل موتسيانكو ، أحد المطورين الحاليين لمكوّن Scala في JetBrains ، متصل بالتسجيل. في هذا العدد من البودكاست ، ناقش ميخائيل وزميله أندريه كوزلوف البرنامج المساعد بمزيد من التفاصيل.ألكساندر : أنا أصطاد قصص سكالا هنا. ميشا ، قل لي كيف بدا لك؟
مايكل : لقد ظهرت في الأصل في Kotlin. قام أندريه بريسلاف بأحد أوائل التدريب الداخلي - وهو طالب. حصلت على مشروع توليد كودل Kotlinovsky DSL لمكتبة واجهة المستخدم التي تعمل بنظام Android. وهي تسمى الآن
أنكو . ثم بحثت عن أي مواضيع للحصول على دبلوم ، وأرسلني إلى ساشا. كدبلوم ، قمت بعمل مترجم فوري لشجرة Scalameta.
ألكساندر : بالضبط ، هذا هو الموضوع الذي حصلت عليه ميشا في شكل دبلوم - دعم البرمجة الوصفية. فعلت ميشا هذا لفترة طويلة. هل قمنا بشيء ما في النهاية؟
مايكل : نعم ، لقد نجحت. صحيح ، ثم توبيخ Scalameta. سيكون لدى Scala 3 شيء مشابه ، ولكن مع واجهة برمجة تطبيقات موحدة أكثر.
ألكساندر : لا أعرف أي شيء على الإطلاق عن دوتي.
فاديم : لقد رأيت للتو اليوم أن Miles Sabin تخبطت شفرة الكود حيث تهاجر بشكل عديم الشكل إلى Dotty باستخدام وحدات ماكرو جديدة ، ويبدو أنه قد ظهر. طبع هاجر.
ميخائيل : نعم ، على وجه الخصوص ، هو واحد من هؤلاء الأشخاص الذين يقدمون تعليمات حول كيفية عمل الآلة الكاتبة في Scala ، بحيث يعمل Shapeless خارج الصندوق ، دون عكازات. ينحني بشكل أساسي إلى المترجم.
ألكساندر : هيا! هل تمزح قل لي ، هل ينحرف سكالز؟
مايكل : حسنًا ، بطريقة أو بأخرى ليس من الواضح من يكتب سكالز الآن. مايلز لا يقف وراءه.
فاديم : الآن يعتني المجتمع بأسره برعاية دوتي. الأميال تبدو أكثر عديمة الشكل. للمرة الألف ، تغيرت هذه الآثار ، إلى جانب مناقشة
كيفية القيام بفصول الكتابة من
لوكا جاكوبوفيتش .
ألكساندر : عن المجتمع. في بداية العام السابع عشر ، قرر مركز سكالا جمع المؤثرين على المجتمع من أجل
مجموعة العمل . لطالما تمت مشاهدة JetBrains من بعيد وبحرص شديد. لا سمح الله أن نجعل البرمجة في IntelliJ IDEA خطيرة. عندما أصبح من الصعب إنكار أنه لا يزال يتعين عليك البرمجة في المعهد ، فقد تم قبولنا. لقد دعوني إلى بعض النقاش ، لكنني أصبت يدي ولم تأتي. ثم غادر سكالا ولم يظهر قط في مجموعة العمل.
لطالما سخرت مني أن الناس قالوا: "لماذا نحتاج إلى توثيق تفاصيل المترجم ، ألا يوجد مترجم ثانٍ؟" كان هذا مضحكا لأن البرنامج المساعد Scala كان دائما هذا المترجم البديل الثاني. لا يزال هناك Typelevel ، بالطبع ، لكنه شوكة.
تأثرنا كثيرا بتطوير سكالا. عندما ظهر Jason Zaugg في المترجم ، كان رائعًا. بدأ يخبرنا: "لقد فعلنا ذلك ، ادعمنا". هناك اتصال. عندما ينظر المترجمون إلى أسفل ولا يستخدمون ، فإنهم لا يخبروننا بأي شيء. كان ذلك قبل جيسون.
مايكل : الآن
أرتدي بشكل دوري
Guillaume Martres ، الذي رأى Tasty و
Fengyun Liu - رأى وحدات ماكرو.
لتلخيص
فاديم : ألكساندر ، شكراً جزيلاً ، دعنا نلخص. لقد تحدثت إلى رجل أمس. وقال إنه في سكالا كان يحب المفهوم الضمني الوحيد ، والذي تم تعليق العديد من الميزات عليه. الآن ، في Dotty ، توصلوا إلى نفس طرق التمديد الصريحة ، ومن الواضح أن جميع الآثار المترتبة على usecase قد تم الإعلان عنها بكلمات دقيقة. تجسس على Kotlin و Swift ، على الأرجح. كيف تشعر حيال هذا؟ وبشكل عام لسكالا 3؟
ألكساندر : في عام 2018 كان آخر أيام سكالا التي قمت بزيارتها. على ذلك ،
تحدث مارتن Odersky عن حقيقة أن سكالا لديها الكثير من مفاهيم اللغة ، وكوتلين لديه ثلاث مرات أكثر ، C # لديه أكثر من ذلك. ولكن في نفس الوقت ، قدرات Scala أكثر شمولاً.
كنا نظن أنها كانت باردة ، لكنها ليست كذلك. لقد تأثرت ، أدركت أن مارتن يدرك أننا بحاجة إلى التحرك. الشيء الوحيد الذي يقلق هو أن سكالا يجب أن تصبح نوعًا من اللغة المتخصصة. الاحتمالات لا حدود لها من اللغة إنشاء هذا مكانة جدا. هذا هو خط المشترك الرقمي (DSL) الذي تعرفه كيف تفعل ، والأمر رائع. إن مطاردة Kotlin للحصول على أفضل Java أمر صعب وأصعب كل عام. الشيء الرئيسي هو عدم فقدان مكانه الخاص بك. إذا أضافوا كل هذه الوظيفة ولم يفقدوا مكانهم ، فسيكون ذلك رائعًا. ولكن إذا كانت الأميال تدير كل شيء ، فقد تنجح. نعم يا ميشا؟
في الأجزاء التالية من التحقيق حول أصل حركة سكالا ، ننتظر إجراء مقابلة مع فلاديمير أوسبنسكي ورومان إليزاروف ونيكولاي تاتارينوف. إذا كنت ترغب في إضافة جوانب جديدة إلى تاريخ حركة Scala أو مشاركة تجربتك في الاستخدام ، فقم بتقديم التقارير . إغلاق دعوة لتقديم الأوراق بعد 10 أيام.