Site: گاهنوشت امین مصباحی
Source: https://mesbahi.net/fa/blog/1403/09/04/interview-kotlin-mikhail-zarechenskii
⚠️ Article content is partial (Telegram Instant View delivered in segments).

💬 ✏️ مصاحبه با معمار ارشد کاتلین در مورد آینده زبان و موقعیتش نسبت به جاوا
دیروز یه مصاحبه خوب خوندم با طراح ارشد کاتلین (میخائیل زارچنسکی) با محوریت اینکه زبان کاتلین تا کجا از جاوا فاصله خواهد گرفت؟! من جاوا کار یا کاتلینکار نیستم، ولی هم علاقه شخصی زیادی به چنین مباحثی دارم، هم شغلم ایجاب میکنه تا درک بهتری از کامپایلرها، زبانها، و دغدغههای لایههای پایینتر داشته باشم. لذا چون برام جالب بود ترجمه کردم و اینجا گذاشتم، شاید برای شما هم جالب باشه...
خلاصه صحبتش در مورد ارتباط کاتلین با جاوا و آیندهی این مسیره! چالشهاشون در توسعه کاتلین و حتی کاستیهاش! داستانهای thread و انتظارشون برای Loom. طبق آمارشون حدود ۴۰ درصد توسعهدهندهها از کاتلین برای بکند سمت سرور استفاده میکنن. اینکه چرا هنوز LSP ندادن تا ادیتورهایی مثل VS Code از LSP رسمی برای توسعه و دیباگ و تحلیل کد کاتلین استفاده کنن و...
مصاحبههای این چنینی کلن جالب و البته خیلی آموزنده هستن... خصوصا آدمایی در این سطح مثل:
Anders Hejlsberg (Delphi, C#, TypeScript)
Guido van Rossum (Python)
Linus Torvalds (Linux, git)
Robert Griesemer (Go, V8)
Andrew Kelley (zig)
شاید توی مسیر کاری ما توسعه زبان برنامهنویسی یا چیزی در اون حد لایهپایینی نباشه؛ ولی عموم مصاحبهها در مورد مسائلیه که آدمهایی در سطح ما باهاشون سر و کار دارن، و کلی یادگیری از جنس «نوع و زاویه نگاه و دغدغه» داره!
نظرتون چیه؟ 🤔😉
🖼️ Photo
دیروز یه مصاحبه خوب خوندم با طراح ارشد کاتلین Mikhail Zarechenskii (میخائیل زارچنسکی) با محوریت اینکه زبان کاتلین تا کجا از جاوا فاصله خواهد گرفت؟! من جاوا کار یا کاتلینکار نیستم، ولی هم علاقه شخصی زیادی به چنین مباحثی دارم، هم به عنوان معمار نرمافزار نیاز دارم تا درک بهتری از کامپایلرها، زبانها، و دغدغههای لایههای پایینتر داشته باشم. لذا چون برام جالب بود ترجمه کردم و اینجا میگذارم 🙂
عموم افراد کاتلین رو به عنوان زبانی که توسط JetBrains توسعه داده شده و برای توسعه اندروید به کار میره میشناسن. کاتلین در سال ۲۰۱۱ و تحت لایسنس آپاچی ۲.۰ به عنوان یه جایگزین برای جاوا روی JVM شروع به کار کرد. ولی بعدتر تونست به پلتفرمهای مختلفی مثل جاوااسکریپت، موبایل، اجرای نیتیو و وب اسمبلی گسترش پیدا کنه.
میخائیل زارچنسکی، طراح ارشد کاتلین، در مصاحبه با DevClass درباره رابطه با جاوا، و آینده کاتلین صحبت کرده.
میگه: “کاتلین به عنوان یه جایگزین برای جاوا ظاهر شد و اون موقع میخواستیم مشکلاتی مثل داستان nullability و check exceptions و invariant arrays و این جور چیزها رو حل کنیم.”
“تو این سالها کاتلین پیشرفت کرده؛ الان داستان مالتیپلتفرم رو داریم و میتونیم روی پلتفرمهای مختلف مثل iOS و اندروید کد بزنیم. کاتلین نوتبوک داریم، Compose داریم که یه فریمورک برای نوشتن UI با کاتلینه، و build.gradle.kts داریم که میشه باهاش اسکریپتهای گریدل رو با کاتلین نوشت. ولی هنوز JVM و جاوا خیلی خیلی برامون مهمن؛ در واقع حیاتی هستن. ما همچنان میخوایم با جاوا سازگار باشیم چون کاملاً میفهمیم که جاوا تا سالهای سال باهامون میمونه و نمیخوایم کاملاً جایگزینش بشیم. این نه ممکنه و نه هدف ماست.”
تو بعضی موارد، کاتلین منتظر ویژگیهای جدید جاوا یا JVM هست. به قول زارچنسکی: “خیلی دوست دارم جاوا پروژه Valhalla رو زودتر منتشر کنه چون همه کاربرای JVM ازش سود میبرن.”
پروژه Valhalla قراره value type ها و چیزای دیگه رو به JVM اضافه کنه.
زارچنسکی میگه: “پروژه Valhalla و value class ها خیلی خوب با کاتلین جور درمیان، چون خیلی از برنامهها با ریاضیات سروکار دارن.” این ممکنه به کاتلین اجازه بده operator overloading داشته باشه که “مجبور نباشی .plus بنویسی و بتونی مستقیم از + یا علامتهای استاندارد دیگه استفاده کنی. این یکی از نقاط قوت کاتلینه، پس مشتاقیم value type ها رو تو JVM ببینیم تا بتونیم این ویژگی رو اضافه کنیم و کاتلین رو حتی بیانگرتر کنیم.”
تیم کاتلین با کمیتههایی که جاوا رو توسعه میدن همکاری میکنن؟ زارچنسکی میگه: “بستگی به ویژگی داره. ما ارتباط داریم و چیزهایی مثل value class ها رو از نزدیک دنبال میکنیم چون اصولاً یه ویژگی JVM هست… باید طراحیمون رو تطبیق بدیم و از تصمیمات طراحی مطلع باشیم تا JVM بتونه value class ها رو برای کاتلین هم بهینه کنه.”
جاوا اخیراً virtual thread ها رو که بخشی از پروژه Loom است رو پیادهسازی کرده. این چه تأثیری روی coroutine های کاتلین که اونا هم برای برنامهنویسی همزمان استفاده میشن داره؟
زارچنسکی میگه: “هدفهاشون یکم متفاوته. پروژه Loom هنوز از Thread API استفاده میکنه – همون API ای که سالهاست با همه مزایا و معایبش داریم. تو کاتلین ما همزمانی ساختاریافته داریم، با رابطه والد-فرزندی بین coroutine ها. پس ارتباط بینشون، لغو کردنشون یا مدیریت خطا وقتی یکیشون exception میندازه راحتتره. اگه همزمانی ریزدانه میخوای و میخوای یه برنامه جدید بنویسی، شاید coroutine های کاتلین بهتر باشن.”
اضافه میکنه: “یکی از معایب coroutine های کاتلین اینه که اگه یه تابع suspend داری، عملا Thread API هنوز داره از thread فیزیکی استفاده میکنه! میخوایم پروژه Loom رو برای coroutine های کاتلین فعال کنیم، پس اگه مجبوری از thread استفاده کنی، میتونی از virtual thread استفاده کنی… اونوقت بهترینهای هر دو دنیا رو داری.”
گوگل، کاتلین رو به عنوان زبان اصلی توسعه اندروید پذیرفت و باعث تقویتش شد. این بیشترین کاربردش رو شکل میده؟
زارچنسکی میگه: “بیشترین استفاده هنوز تو اندرویده، ولی حدود ۴۰ تا ۴۵ درصد کاربرای کاتلین دارن برنامههای** سمت سرور** مینویسن. و میبینیم که داستان **مالتیپلتفرم **هم داره رشد میکنه.”