Mengikuti jejak gerakan Scala Rusia. Bagian 2

Pada bagian terakhir dari penyelidikan, Roman Timushev menyarankan saya untuk menghubungi Vlad, yang saya lakukan. Vlad mengklarifikasi apa yang menarik minat saya, deline dan setuju untuk menulis beberapa paragraf. Pagi berikutnya saya melihat pemberitahuan di Facebook. Adalah Vlad yang menemukan saksi baru - Alexander Podkhalyuzin . Dari 2008 hingga 2017, ia bekerja sebagai pemimpin tim pada plugin Scala di IDEA dan secara pribadi melihat seluruh perkembangan gerakan Scala, tetapi terutama bukan bagian Rusia.

"Diklik" di kepala saya - rencana berubah, ini adalah utas baru dalam penyelidikan. Mereka menandai waktu dan merekam wawancara selama satu jam dengan Alexander. Ada begitu banyak informasi sehingga tidak ada pilihan untuk meletakkannya di mana pun kecuali bagian yang terpisah. Karena itu, saya memperingatkan Anda - ada banyak teks di depan.



Di bagian ini kita berbicara dengan Alexander Podkhaluzin dan Mikhail Mutsyanko . Di luar program - komentar oleh Ilya Sergey . Plugin Scala, acara Scala pertama di Rusia, berangkat dari Kotlin, Asli dalam kedua bahasa, matahari terbenam Eclipse dan banyak lagi yang lainnya.

Bagaimana Alexander sampai di Scala, pergi ke Kotlin dan mengajar


Dari 2008 hingga 2017, Alexander Podkhalyuzin mengembangkan plugin JetBrains Scala di IDEA sebagai pemimpin tim. Kemudian dia pergi ke Kotlin Tooling pertama untuk Kotlin / Asli, kemudian ke Kotlin secara keseluruhan.

Alexander : Tugasnya besar, semuanya bingung setelah batasan tahun. Omong-omong, gerakan ini dimulai bukan pada 2010, tetapi tiga tahun sebelumnya. Pada tahun 2007, saya baru saja mulai bekerja di JetBrains dan saya beruntung dengan MPS ... Apakah Anda tahu apa itu MPS?

Vadim : Saya mendengar bahwa itu adalah bahasa deklaratif dan visual.

Alexander : MPS lebih maju. Ini adalah Sistem Pemrograman Meta - pemrograman generatif segera dengan IDE. Saya mendapat pekerjaan di perusahaan di MPS, tetapi mereka sudah menemukan seseorang di sana. Jadi saya beruntung - saya dikirim untuk menulis plugin Scala.

JetBrains mulai menulis sebuah plugin, tetapi menjatuhkannya karena itu Groovy. Dia populer dan menuntut dukungan. Semua orang yang terlibat dengan plugin Scala mulai bekerja pada plugin Groovy. Tidak ada yang terlibat dalam Scala dan saya mewarisi warisan semacam itu.

Saya bergabung dengan perusahaan pada awal 2008. Saya tidak tahu apa-apa, saya mulai menggali parser, memperbaiki satu bug, kedua, ketiga - ini berlangsung selamanya. Akibatnya, dia duduk dan menulis ulang. Jadi perlahan berkembang.

Ilya Sergey mengerjakan plugin sebelum saya. Saya menemukannya dan bekerja dengannya di plugin. Sangat lucu bahwa saya adalah seorang ahli matematika, dan Ilya adalah seorang programmer. Tetapi dia ingin menjadi ahli matematika, dan saya ingin menjadi seorang programmer. Saya suka pemrograman, saya siap melakukannya dan tidak mengerti mengapa Ilya tidak menyukainya. Dan dia tidak mengerti saya. Sebagai hasilnya, hidup menempatkan segala sesuatu pada tempatnya.

Ilya meninggalkan JetBrains dan terlibat dalam Ilmu Komputer di Spanyol, hampir seorang profesor. Dia baru saja tiba, diberitahu bagaimana mencari balapan otomatis - ini adalah semacam ilmu pengetahuan. Masih di beberapa kompetisi ia duduk dan menulis 10 ribu baris di Scala. Dia mengatakan bahwa semuanya super, semuanya berfungsi. Dia masih mengendarai Scala Days pertama, tampaknya pada tahun 2009.

Setelah melihat biografi Ilya, saya merasa penting untuk memperjelas detail dari sumber aslinya.

Laporan yang disebutkan Alexander adalah tentang analisis statis untuk menemukan kondisi balapan di aplikasi Java. Pada 2018, kami melakukan kerja sama dengan Facebook. Sebuah laporan dan dua artikel lagi ditulis di sana. Benar, ada semua kode di OCaml. Kompetisi ini adalah Kontes Pemrograman ICFP yang saya adakan tahun ini . Saya juga menulis hampir semua kode untuk kontes di Scala menggunakan Scala.js.

Saya menggunakan Scala secara eksklusif sebagai pengguna. Dengan bantuan IntelliJ IDEA dan plugin Scala banyak prototipe untuk proyek penelitian saya ditulis: sintesis program dengan pointer TyGus / suslik , pengujian algoritma geometris . Di universitas, saya mengajar kursus multithreading, di mana Scala adalah bahasa utama.

Ilya Sergey , Profesor, Universitas Nasional Singapura .

Alexander : Saya mulai mengendarai Scala Days pada 2011. Sudah tiga tahun kami menulis compiler frontend Scala kedua. Butuh bertahun-tahun, itu normal. Semuanya bekerja dengan lambat dan buruk bagi kami, tetapi pada saat yang sama setidaknya ada sesuatu. Dari sudut pandang editor, tidak ada yang lebih baik. Saya tidak ingat apakah Eclipse mulai mendukung pada saat itu. Ya, tampaknya mereka mendukungnya secara paralel.

Vadim : Saya berbicara dengan Roman Timushev dan dia memberi tahu saya sekitar 13 tahun, bagaimana dia mulai menulis dan mengadakan pertemuan di Moskow. Menurut versinya, maka semua orang menggunakan Eclipse. Itu cukup bisa ditoleransi, secara resmi didukung.

Alexander : Ya, benar. Pada 2011, Eclipse sangat buruk, dan pada 2013 mencapai kecepatan seperti kita di 2011. Tidak seperti Eclipse, kami menulis front-end kami sendiri, sehingga penyorotan kesalahan berbeda dari kompiler. Ini tidak nyaman dan ini adalah masalah utama. Beberapa kesalahan tidak disorot, tetapi sebaliknya di kompiler. Eclipse menggunakan kode kompiler.

Menggunakan kode kompiler adalah ide yang buruk karena semuanya akan bekerja lambat. Di Kotlin, itu sama ketika menggunakan kode kompiler. Situasinya tidak seburuk di Scala - mereka berpikir sedikit tentang IDE, tetapi tidak mudah untuk memberikan kinerja yang baik dari sudut pandang IDE.

Pada 2011, Scalathon ( foto ) diadakan di Philadelphia. Ini adalah konferensi pertama yang kami undang, tetapi anehnya kami pergi ke sana. Mereka menghubungi JetBrains jika kami ingin menghadiri acara tersebut. Sebelum itu, mereka tidak menelepon ke mana pun dengan Scala, dan ketika kami mulai melakukan sesuatu, mereka memperhatikan. Pengguna, seperti programmer Scala, memiliki hidung gulkin - sekitar 100 orang sepanjang konferensi. Di Scalathon, saya bertemu dengan Bill Venners .

Vadim : Nama itu familier, tetapi saya tidak ingat siapa itu.

Alexander : Penulis dua hal: Scalatest dan buku utama Programming in Scala . Ini adalah buku yang ditulis dengan Martin Odersky - Alkitab kita!

Vadim : Saya tidak membaca.

Alexander : Tidak masalah. Di tempat saya adalah buku bertanda tangan ini oleh Bill Venners dan Martin Odersky. Mereka memberikannya kepada saya pada salah satu Hari Scala dalam 12 atau 13 tahun. Pada pesta makan malam untuk semua peserta, orang-orang yang berkontribusi pada komunitas diberikan penghargaan. Tiba-tiba mereka memanggil saya dan saya menerima buku untuk kontribusi saya.

Scala Days juga mulai dikunjungi sejak 2011. Awalnya mereka diadakan setahun sekali di Eropa atau di Amerika, dan kemudian dua kali. Tahun lalu saya menghadiri satu konferensi, tetapi tidak pergi ke yang kedua. Tahun lalu saya menyerahkan laporan tentang membandingkan Kotlin / Asli dan Scala Asli. Tidak ada seorang pun di tim Kotlin yang percaya bahwa laporan itu akan diterima, tetapi sudah diambil. Mungkin karena rasa hormat atau karena alasan lain. Laporan ini dihadiri oleh beberapa pendengar. Scala-programmer tidak tertarik pada semua yang mengandung kata "Kotlin". Begitulah dulu dan sampai sekarang.

Vadim : Saya pikir kata "Asli" berperan.

Alexander : Tidak, pada Scala Days semua laporan tentang Scala Native selalu mengumpulkan kamar penuh, misalnya, pertunjukan oleh Denis Shabalin. Tetapi pada saat yang sama, teknologinya masih jauh dari produksi. Dia tidak ditakdirkan untuk sampai di sana selama 10 tahun, setidaknya.

Vadim : Kenapa menurutmu begitu? Saya terkejut, tetapi ada Richard Whaling yang menulis buku tentang Scala Native - sudah ada banyak materi. Dia pergi ke podcast dan berbicara tentang bagaimana dia menggunakannya dalam produksi. Dia memiliki lingkungan di mana ada banyak data. Dia sangat senang dengan penduduk asli dalam kondisi ini.

Alexander : Lihat laporan saya tentang perbandingan Scala Native dan Kotlin / Native , di mana saya menjelaskan sudut pandang saya. Pada saat pertunjukan, satu orang bekerja di Scala Native. Karena itu, tidak boleh ada pembicaraan tentang produk apa pun. Jika kita berbicara tentang satu orang yang menerapkan teknologi di suatu tempat - mungkin. Hanya saja tidak mainstream, akan ada beberapa pengguna.

Kotlin / Native memiliki aplikasi khusus - berbagi kode antara iOS dan Android. Ini hanya menciptakan minat tertentu. Scala Native tidak memiliki ini dan tidak ada yang menempel. Scala Native dapat digunakan untuk perhitungan ketika Anda harus menggabungkan kode Scala dan perhitungan cepat seperti Tensorflow. Tetapi Scala Native tidak berarti bahwa antara Scala dan Native Anda dapat saling memanggil dengan aman atau menemukan kode umum.

Di Kotlin, kami melonjak untuk menulis dan menyusun kode yang sama. Ini adalah pekerjaan besar dalam arti desain yang Anda tidak menggunakan POSIX, tetapi semacam perpustakaan interlayer yang bekerja sama baiknya di JVM dan tanpa itu. Jika Anda tidak memiliki perpustakaan seperti itu, hanya itu, kran. Kode akan berbeda di tempat ini, dan jika berbeda, lalu bagaimana cara mempertahankannya? Bagaimana cara menyebarkan perpustakaan di mana titik akhir yang berbeda perlu dikompilasi, disebarkan, ada juga sistem build, dependensi? Jika Anda menggali, maka pertanyaan - jurang. Satu orang yang mengembangkan Scala Native tidak dapat menjawab semua. Aplikasi adalah cerita yang terpisah, dan tentang ini Anda dapat melihat laporan saya.

Vadim : Baiklah, ayo kembali. Pada 2011, Anda pergi ke Scala Days, dan sebelum 2016, apakah Anda masih menggunakan plugin Scala?

Alexander : Sampai 2017.

Vadim : Lalu kamu masuk ke Kotlin. Apa yang terjadi

Alexander : Dari sudut pandang tertentu, saya tidak melakukan semua yang saya bisa. Anda dapat terus mengembangkan plugin Scala - banyak chip, ada sesuatu yang harus diselesaikan. Tapi, dari sudut pandang bisnis, itu berhasil sebagai proyek. 80% programmer Scala menggunakan IntelliJ IDEA. Seberapa banyak Anda tahu tentang produk yang telah merebut 80% pasar? Ada beberapa dari mereka.

Apa yang harus dilakukan selanjutnya? Saya ingin tujuan baru, cakrawala baru, dan dalam plugin Scala ini tidak mungkin. JetBrains mengembangkan bahasa pemrogramannya sendiri dan skeptis tentang Scala. Tidak mungkin menemukan tempat untuk Scala di perusahaan, jadi saya bisa pergi atau bekerja di sini dan sesudahnya. Dalam perusahaan apa pun, atau sesuatu yang lain. Saya harus membuat keputusan yang sulit.

Hingga taraf tertentu, saya bersiap-siap. Pertama - saya menyadari bahwa jika saya meninggalkan tim, maka Kolya Tropin akan menggantikan saya. Dia sekarang memimpin tim. Saya sedang mempersiapkan, dan saya mempersiapkannya dengan cara yang aneh, saya mengerti bahwa dia dapat berdiri di tempat saya. Yang kedua - perlahan mendistribusikan semua subsistem, menolaknya. Saya tidak perlu lagi memprogram mereka.

Pendewaan dari semua ini adalah cedera tangan, pembedahan dan 2 bulan cuti sakit. Setelah keluar, saya pergi ke Direktur Jenderal Maxim Shafirov. Dia datang dan berkata: "Beri aku sesuatu yang lain." Ada pemicu seperti itu, ada sesuatu yang secara tidak sadar mempersiapkan diri untuk dapat melakukan ini, dan dua bulan ini diizinkan untuk diputuskan. Dan Max menyarankan. Saya mengatakan "apa pun kecuali Kotlin." Begitu, saya dari dunia Scala, dan dunia Scala membenci Kotlin.

Vadim : Bukannya aku membencinya, hanya saja tidak menyenangkan bahwa produk seperti itu telah muncul. Ini adalah rintisan Scala. Pada saat yang sama, pemasaran aktif, pasar ditangkap - orang-orang yang bisa pergi ke sisi positif Scala.

Di sisi lain, apakah itu bagus? Jika Anda membayangkan kesenjangan dalam pengetahuan yang perlu Anda kuasai agar dapat menulis secara efektif di Scala atau Haskell, maka bagi pengembang Java itu raksasa. Di sini Kotlin adalah titik transshipment, yang dapat Anda jangkau, duduki dan bergerak dengan aman.

Alexander : Ini tidak sepenuhnya benar. Ketika tidak ada Kotlin, orang-orang datang ke Scala yang tidak senang dengan Jawa - ada sesuatu yang hilang, banyak lempeng ketel. Scala menggantikan apa yang disebut Java Lebih Baik. Kotlin bertujuan secara eksklusif di ceruk ini.

Dengan Kotlin, Android, dan semua yang terjadi, dan sekarang multi-platform, itu saja. Kotlin tidak terpaku pada satu Android, pada satu niche, dan melangkah lebih jauh.

Vadim : Saya pikir itu bagus - Oracle telah bergerak. Sekarang, setidaknya beberapa JEP normal telah pergi untuk membuat Java berevolusi.

Alexander : Saya pikir alasannya bukan Kotlin - ini adalah konsekuensi normal. 2 tahun sebelum Google mengumumkan Kotlin, itu diabaikan. Ketika saya memutuskan untuk pindah, Max Shafirov memberi saya daftar pilihan. Meskipun saya mengatakan "bukan Kotlin", opsi dukungan Kotlin / Asli di IDEA ada di daftar ini. Akibatnya, dari seluruh daftar saya memutuskan untuk mencoba pindah ke Kotlin. Sehari setelah saya mengambil alih tanggung jawab untuk Kotlin / Asli, Andrei Breslav mengatakan bahwa Google I / O berikutnya akan mengumumkan bahwa Kotlin adalah bahasa Android yang didukung secara resmi.

Inilah pemikirannya: "Goofy." Saya pikir saya sedang melakukan sesuatu untuk bahasa marginal bersyarat. Jelas bahwa ceruk Better Java sulit ditaklukkan. Dengan dirilisnya Java 8 dengan lambdas, ini menjadi semakin sulit. Scala baik-baik saja dengan ini, tidak kuat dengan lambdas dan tidak dengan apa yang lebih baik dari Jawa. Secara acak - acak orang datang ke Scala dengan pengertian bahwa mereka membutuhkan Java yang lebih baik.

Setelah Jawa 8, aliran orang-orang ini melambat. Mereka tidak akan pergi ke Scala dan Kotlin - mereka mendapat lambdas. Ini sudah cukup untuk memulai, dan yang terbaik tidak lagi tertarik. Saya duduk, berpikir dan menyadari bahwa skalanya sekarang berbeda.

Di kepala saya, saya beralih ke tim dalam skala yang tidak jauh lebih besar daripada di plugin Scala. Saat itu, ada 100 ribu pengguna, dan Kotlin punya 40 ribu. Skala yang sama sekali berbeda. Saya menyadari bahwa itu menyenangkan, bahwa mereka tidak memberi tahu saya sebelumnya. Saya memutuskan untuk pergi ke Kotlin karena itu menarik untuk dicoba, dan bukan demi tujuan yang ambisius dan ambisius.

Secara umum, Scala lebih baik untuk diprogram. Ketika Anda mulai menulis Kotlin setelah 9 tahun pemrograman di Scala, Anda berakhir tanpa tangan. Ada beberapa kesedihan dalam hal ini.

Apa yang akan saya lakukan jika saya CTO? Untuk beberapa tugas Kotlin sederhana, akan lebih mudah bagi saya untuk membentuk sebuah tim. Akan lebih murah atau lebih efisien. Saya bisa merekrut programmer Scala lebih murah, tetapi saya akan mendapatkan hasil yang lebih buruk, karena mereka akan melakukan sesuatu yang mengerikan di Scala ini. Meskipun sulit di pasar tenaga kerja, saya akan mulai merekrut programmer Java - Kotlin akan lebih mudah untuk melatih mereka. Ini dari sudut pandang memulai proyek baru, jika tidak ada hal teknologi yang serius.

Untuk industri perbankan, misalnya, ada alasan untuk menggunakan Scala. Kotlin tidak bisa menyelesaikannya. Pemrograman yang sama di Scala jauh lebih nyaman.

Jika Anda berpikir keras tentang topik ini, Anda dapat membuat infrastruktur keren di Scala, tetapi tidak mungkin di Kotlin. Ada prosesor anotasi yang sama. Suatu hari nanti akan mungkin, tetapi hanya dalam perspektif beberapa tahun.

Vadim : Mengapa menurut Anda Scala baik untuk bank?

Alexander : Ada banyak boilerplate yang tidak terkait dengan bahasa pemrograman. Ini adalah sistem di mana ada objek tipe pengguna. Ini membutuhkan banyak duplikasi, mulai dari database dan diakhiri dengan semuanya. Untuk mengubah sesuatu secara efektif, Anda memerlukan dukungan pemrograman yang baik. Ini diperlukan di mana-mana, tetapi perlu untuk tetap dengan hati-hati, jika tidak Anda bisa macet.

Pada tahun 11, saya dipanggil ke Universitas Akademik. Saya terlalu malas untuk mengajar seluruh kursus, dan saya setuju dengan Sveta Isakova , yang sekarang menjadi pengacara pengembang Kotlin. Kami sepakat untuk menjalankan kursus menjadi dua, tapi itu tentang Scala. Dia mungkin ingin belajar lebih banyak tentang Scala.

Vadim : Apakah universitas teratas saat itu?

Alexander : Ya, dengan hakim pada kursus 5-6. Tahun-tahun pertama kompetisi itu kecil. Tetapi persaingan untuk tempat itu meningkat ketika JetBrains, Yandex, dan Transas datang dengan sponsor, undangan untuk magang dan tujuan menumbuhkan staf untuk diri mereka sendiri.

Ternyata keren: uang pribadi dan inisiatif pribadi di bawah kedok negara dan kedok Alferov. Dia memberikan blanche carte penuh - lakukan seperti yang Anda inginkan! Ternyata bagus, karena kursusnya relevan. Mereka merekrut orang-orang yang berada di ujung tombak, mengerti apa yang terjadi di industri saat ini, dan tidak 10 tahun yang lalu tidak jelas di mana. Jika kita berbicara tentang universitas biasa, ala "mathmech / mehmat", maka Pascal tidak lulus di sana - ini tidak ada hubungannya dengan kehidupan nyata.

Ini adalah universitas akademik yang kuat. Orang-orang mengerti bahwa ketika mereka tiba di sana, mereka akan terbang dengan sangat cepat ke dalam industri. Lulusan universitas dengan senang hati direkrut di Yandex dan JetBrains. Ini adalah langkah karir yang baik, dan kompetisi adalah 10 siswa di tempat. Saya mengajar di sana selama 5 tahun. Pada tahun kedua, Sveta tidak berbicara dengan saya tentang Scala, dan saya memanggil berbagai asisten, khususnya, Sveta untuk Kotlin. Sebagai hasilnya, kami berganti nama menjadi bahasa-JVM.

Pada titik tertentu, saya mendapat dukungan dari Clojure, dan saya sedikit mengerti bahasa ini. Menurut siswa, mereka tidak mengerti apa yang sedang dilakukan Clojure, omong kosong macam apa itu. Mereka berbicara tentang bahasa normal - Scala dan Kotlin, dan, tiba-tiba, menghina Clojure. Saya hanya bukan seorang ahli. Itulah ceritanya.

Tentang ScalaSPB / ScalaDev pertama


Alexander : Lalu peristiwa-peristiwa seperti Scala Days muncul di St. Petersburg. ScalaDev pertama berlalu , dan untuk acara kedua, penyelenggara Hari Scala asli menghubungi St. Petersburg dan meminta namanya diganti.

Vadim : Tahun berapa ini?

Alexander : Ya, semuanya ada di sana - 11-13. Acara ini dibuat oleh orang-orang dari e-legion outsourcing St. Petersburg. Tampaknya mereka menulis aplikasi Raiffeisenbank. Mereka bahkan menulis aplikasi seluler di Scala, tetapi sekarang tidak ada yang menulis seperti itu - orang-orang gila.

Vadim : Salah satu tamu podcast - Matvey Malkov - berbicara tentang Scala dan Android dua tahun lalu. Dia mengatakan bahwa semuanya baik-baik saja dengan mereka, dan mereka menggunakannya. Keuntungan utama mereka adalah backend Scala dan aplikasi.

Baru-baru ini saya menulis kepadanya dengan permintaan untuk berbicara di konferensi, karena Anda tidak akan menemukan siapa pun tentang ponsel. Ternyata dia meninggalkan perusahaan dan hal terakhir yang dia lakukan adalah memasang CI perakitan modul Kotlin dari proyek itu di Scala sehingga orang-orang itu secara bertahap berguling ke sana.

Alexander : Dua tahun lalu tidak ada yang jelas tentang Kotlin. Secara teoritis, Google bisa mengambil Scala, tetapi tidak.

Kami tampil di Hari Scala pertama dan bahkan mengumpulkan orang. Lebih tepatnya, bukan pada yang pertama, tetapi pada yang kedua, yang diadakan di JetBrains. Kemudian Sveta Isakova tampil dengan intro di Kotlin.

Itu lucu - semua pengembang Scala menganggap Kotlin sebagai musuh nomor satu. Hall bereaksi sangat negatif, mengajukan pertanyaan: "Mengapa ini tidak dilakukan, mengapa tidak, mengapa tidak?" Itu menyeramkan, semacam peretasan.

Setelah Sveta, saya adalah orang kedua yang mengatakan sesuatu tentang Kotlin pada konferensi Scala - tentang Kotlin / Asli. Pengalaman saya menunjukkan bahwa ini tidak ada gunanya. Saya tidak demi laporan itu, saya tertarik untuk melihat Scala Native. Bagaimana diatur di dalam, memulai program, bersukacita pada sesuatu. Bahkan pada saat itu, saya senang bahwa ukuran biner dari Scala Native lebih kecil daripada ukuran Kotlin. Saya pikir Kotlin / Native memiliki lebih sedikit sekarang, karena 10 orang sedang mengerjakannya.

Vadim : Oh, well, Anda pasti mencekik Denis Shabalin .

Alexander : Ini tidak mungkin, itu adalah teknologi yang sangat kompleks. Kami memiliki 10 orang, dan ini tidak cukup. Dan 10 orang keren, sangat keren, coba ini kumpulkan lagi. Denis sendiri memang keren, tapi apa yang bisa dia lakukan sendirian?

Kisah tentang komunitas ini cukup menarik, seperti juga seluruh kisah Scala. Banyak orang ingin membuat semacam kerangka kerja, kemungkinan besar tidak ada yang membutuhkannya, untuk beriklan dan berhenti. Banyak bintang aneh terbentuk, dan beberapa juga membantu EPFL. Salah satu persyaratannya adalah pekerjaan lulusan dari mahasiswa pascasarjana. Sebagai contoh, Scalameta adalah karya Zhenya Burmako . Dalam proses kerja, mahasiswa pascasarjana menaikkan harga sebagai programmer, dan setelah lulus mereka menemukan pekerjaan keren. Pekerjaan pertama dengan gaji lebih dari untuk orang-orang yang telah bekerja selama 10 tahun. Karena mereka terkenal, mereka melaporkan banyak konferensi dan putaran.

Ini satu hal lagi. Anda lihat, di Kotlin: di sini kita akan melakukannya, ini dia, dan di Scala sama saja. Ini Enak, di backend Kotlin IR. Tapi, karena di Scala semuanya mengendalikan komunitas, semuanya dalam kekacauan total. Tidak ada desain terpusat. Apa yang terjadi akan berhasil. Pria itu ingin membakar sesuatu, ternyata. Martin menyukainya, persetujuan pergi ke massa. Dan di Kotlin, semakin jelas dan profesional, itulah arti dari industri ini.

Tentang Eclipse dan Jason Zaugg


Alexander : Di '13 kami pergi ke konferensi. Semua orang di kompiler diprogram dalam Eclipse. Kami berdiri dan orang-orang yang menggunakan IDEA mendekati kami. Mereka senang, terima kasih. Kami memiliki 10% dari pasar, sisanya di Eclipse. Semua kompiler duduk di atasnya. Mereka mengesampingkan kami untuk waktu yang lama, tiba-tiba kami meyakinkan mereka untuk menggunakannya. Tetapi pada beberapa titik ada pergeseran.

Pada tahun 11 atau 12, kami memiliki kontributor, Jason Zaugg . Di dunia Open Source, ini tidak aneh, tetapi jarang orang yang menginvestasikan banyak waktu dan banyak kode. Jason datang, dia menghasilkan banyak uang, dan dia sendiri bekerja di bank. Kami bahkan memberinya hak untuk berkomitmen. Dia bahkan tidak harus menunjukkan ulasan untuk publikasi. Mereka hanya duduk, berkode, mendiskusikan beberapa hal bersama. Berdasarkan frontend kami, ia menemukan cara kerja Scala. Semuanya berakhir dengan Jason mendapatkan pekerjaan sebagai kompiler Scala. Sangat menyedihkan bahwa kami tidak mengaturnya untuk diri kami sendiri. Saya pikir ini adalah strategi yang salah. Jika seseorang bekerja untuk Anda secara gratis - ia perlu diatur untuk dirinya sendiri, jika tidak, ia akan pergi ke kompiler Scala. Tidak ada lagi ini.

Jason adalah orang yang hebat dan kontributor keren. Dia adalah penggemar IDEA. Faktanya adalah bahwa plugin Scala hang pada kode kompiler. Kode ini kompleks - ketergantungan-injeksi (DI), yang, pada dasarnya, adalah pola kue. Ketika Anda membuka file apa pun, Anda perlu menganalisis seluruh kompiler. Karena DI, ada SEGALA SESUATU dalam konteksnya, dan semuanya ada di sana dengan tipe-inferensi, dan Anda perlu menampilkan tipe di mana-mana - semuanya saling terkait. Analisis satu file membutuhkan waktu 5 menit. Bahkan dalam mengonfigurasi kompiler sebagai proyek, bootstrap tetap datang. Dia harus bergantung pada dirinya sendiri, ini disebut bootstrap. Proyek-proyek seperti itu sulit dibangun.

Jason dan saya menghabiskan banyak waktu beradaptasi. Untuk memungkinkan proyek bootstrap, programkan di kompiler, sehingga setidaknya Anda dapat mengetikkan kode dalam file kompleks ini. Pada awalnya, semuanya berwarna merah, dan saya menghabiskan banyak waktu untuk mengubah semuanya menjadi hijau. Kami bahkan melakukan tes yang memeriksa bahwa frontend kami di compiler berwarna hijau atau mengandung beberapa kesalahan. Dan, karenanya, tim penyusun beralih sepenuhnya ke IDEA.

Vadim Chelysov : Pada saat itu apakah arus keluar dari Eclipse dimulai?

Alexander : Ada beberapa alasan untuk arus keluar. Pertama, IDEA merilis versi komunitas. Ini berarti Anda dapat meletakkan plugin Scala di versi gratis pengguna. Kami adalah Sumber Terbuka sejak awal, dan ketika kami mulai, itu adalah hak milik, dengan sumber terbuka. Tapi itu diinstal pada IDE berbayar. Untuk ini, mereka menulis dukungan Eclipse, karena mereka memerlukan alat standar yang dapat digunakan secara gratis. Karena itu, kami juga menjadi bebas.

Yang kedua - Eclipse sebagai platform mulai mati kembali di '14. Dia tidak mati, itu konyol untuk dikatakan, tetapi keuangannya tiba-tiba rusak. Eclipse Foundation mulai mengumpulkan lebih sedikit uang dan tidak jelas bagaimana mengembangkan platform dalam kondisi seperti itu.

Alasan ketiga adalah bahwa mereka tidak dapat membuat IDE cepat. Kompilator presentasi bekerja lambat, dan jika kita berbicara tentang beberapa jenis fungsionalitas - umumnya tryndet, refactoring sangat sulit dilakukan. Dalam kompiler, dari sudut pandang optimasi, pohon dibangun searah, Anda tidak dapat mengambil induk. Untuk menemukan simpul induk, Anda perlu mengambil file dari atas, pergi ke mereka dan lihat - ribut mengerikan.

Alasan keempat adalah bahwa mereka bekerja dengan tampilan di kompiler. Ini adalah pohon yang diperoleh setelah decoupling. Editor ditulis dalam pernyataan depan, dan dalam kompilator presentasi umumnya tidak jelas kode seperti apa. Tidak jelas bagaimana bekerja dengan ini dan mengatur refactoring. Bagaimana cara mengekstrak pernyataan depan ini, dan tidak semua omong kosong gila ini? Dengan demikian, fitur muncul perlahan.

Pada saat yang sama, front-end kami sengsara dan tidak berfungsi dengan baik. Tetapi agar dia setidaknya seperti itu, dia harus melakukan hal-hal buruk. Sekali waktu, metode untuk {i <- 0 to 10} println(i) membutuhkan dukungan untuk 80% bahasa. Karena dipisahkan, dan Anda memiliki konversi implisit untuk Range - 1 to 10 , di sepanjang jalur konversi implisit untuk map , parameter implisit adalah CanBuildFrom . Selanjutnya masih ada hirarki gila koleksi dan lambda, dan beberapa lambda anonim lainnya dengan parameter yang tidak diketahui - timah lengkap. Setelah contoh ini berfungsi, Anda perlu memahami bahwa itu berfungsi 80% dari frontend. Oleh karena itu, bahkan front-end yang buruk berarti bahwa kami mendukung sejumlah besar fungsi Scala.

Sekarang IDEA telah menulis banyak konverter bahasa. Mereka aneh, tetapi berbeda, dan ketika semuanya dimulai tidak ada yang ingat. Pada tahun 2009, saya pergi ke sebuah konferensi dan di sana saya terkejut - mengapa tidak melakukan konversi dari Jawa ke Scala? Kami membahas bahwa Anda akan bosan dengan titik koma untuk menghapus dan memperluas jenis - Anda harus bergerak entah bagaimana. Saya duduk dan menulis seribu baris di malam hari - konverter sederhana dari satu bahasa ke bahasa lain.

Tetapi saya melangkah lebih jauh dan menemukan cara untuk memudahkan menemukan fitur ini. Ketika saya menyalin ke kode Java, saya berharap untuk memasukkan dan menghapus titik koma sekarang. Ini adalah kasus favorit saya ketika Anda membuat fitur yang ideal untuk dapat ditemukan. Meskipun Anda tidak membutuhkannya, Anda tidak tahu tentangnya. Segera setelah Anda membutuhkannya, Anda langsung mendapatkannya. Ini seperti gaya Apple - sederhana dan mudah. Oleh karena itu, sejak saat itu, banyak konverter telah ditulis oleh JetBrains, dan fitur iklannya adalah mereka ditawarkan pada sisipan. Tapi ya, saya datang dengan itu, ini adalah kebanggaan saya.

Tentang kompiler


Mikhail Mutsianko , salah satu pengembang plugin Scala saat ini di JetBrains, terhubung ke rekaman. Dalam edisi podcast ini, Mikhail dan koleganya Andrei Kozlov membahas plugin secara lebih rinci.

Alexander : Saya suka cerita Scala di sini. Misha, ceritakan bagaimana penampilan Anda?

Michael : Saya awalnya muncul di Kotlin. Andrei Breslav melakukan salah satu magang pertama - seorang siswa. Saya sampai pada proyek menghasilkan bytecode Kotlinovsky DSL dari perpustakaan UI android. Dia sekarang disebut anko . Lalu aku mencari topik apa saja untuk diploma, dan dia mengirimku ke Sasha. Sebagai diploma, saya membuat penerjemah pohon untuk Scalameta.

Alexander : Persis, ini adalah topik yang Misha dapatkan dalam bentuk diploma - dukungan untuk pemrograman meta. Misha melakukan ini untuk waktu yang lama. Apakah kita melakukan sesuatu pada akhirnya?

Michael : Ya, itu berhasil. Benar, lalu Scalameta ditegur. Scala 3 akan memiliki sesuatu yang serupa, tetapi dengan API yang lebih standar.

Alexander : Saya sama sekali tidak tahu tentang Dotty.

Vadim : Aku baru saja melihat hari ini bahwa Miles Sabin meraba-raba sepotong kodenya di mana kode itu bermigrasi ke Dotty dengan makro baru, dan sepertinya itu ternyata. Typeable dimigrasi.

Mikhail : Ya, khususnya, dia adalah salah satu dari orang-orang yang memberikan instruksi tentang cara mengetik di Scala, sehingga Shapeless bekerja di luar kotak, tanpa kruk. Pada dasarnya tekuk tak berbentuk ke kompiler.

Alexander : Oh, ayolah! Apakah kamu bercanda? Katakan padaku, apakah Scalaz membungkuk?

Michael : Ya, entah bagaimana tidak jelas siapa yang ditulis Scalaz sekarang. Miles tidak berdiri di belakangnya.

Vadim : Sekarang seluruh komunitas menjaga Dotty. Miles terlihat tidak berbentuk. Untuk kesekian kalinya, implikasi ini telah berubah, bersamaan dengan diskusi tentang bagaimana melakukan kelas Type dari Luka Jacobowitz .

Alexander : Tentang komunitas. Pada awal tahun ke-17, Scala Center memutuskan untuk mengumpulkan influencer pada komunitas untuk kelompok kerja . JetBrains selalu diawasi dari jauh dan dengan hati-hati. Tuhan melarang kita membuat pemrograman di IntelliJ IDEA berbahaya. Ketika menjadi sulit untuk menyangkal bahwa Anda masih harus memprogram di IDEA, kami diterima. Mereka mengundang saya untuk berdiskusi, tetapi kemudian saya melukai tangan saya dan tidak datang. Kemudian dia meninggalkan Scala dan tidak pernah muncul di kelompok kerja.

Selalu membuat saya terhibur ketika orang berkata: "Mengapa kita perlu mendokumentasikan detail kompiler, apakah masih ada kompiler kedua?" Ini lucu karena plugin Scala selalu menjadi kompiler alternatif kedua. Masih ada Typelevel, tentu saja, tapi itu garpu.

Kami sangat dipengaruhi oleh pengembangan Scala. Ketika Jason Zaugg muncul di kompiler, itu keren. Dia mulai memberi tahu kami: "Kami telah melakukan ini, dukung kami." Ada komunikasi. Ketika kompiler melihat ke bawah dan tidak menggunakan, mereka tidak memberi tahu kami apa pun. Itu sebelum Jason.

Michael : Sekarang saya secara berkala menendang Guillaume Martres , yang melihat Tasty, dan Fengyun Liu - dia melihat makro.

Untuk meringkas


Vadim : Alexander, terima kasih banyak, mari kita simpulkan. Saya berbicara dengan seorang pria kemarin. Dia mengatakan bahwa di Scala dia menyukai konsep tunggal implisit, di mana berbagai fitur digantung. Sekarang, di Dotty, mereka sampai pada metode ekstensi eksplisit yang sama, jelas semua implikasi usecase telah dinyatakan dengan kata-kata yang tepat. Memata-matai Kotlin dan Swift, mungkin. Bagaimana perasaan Anda tentang ini? Dan secara umum ke Scala 3?

Alexander : Pada tahun 2018 adalah Hari Scala terakhir yang saya kunjungi. Di atasnya, Martin Odersky berbicara tentang fakta bahwa Scala memiliki begitu banyak konsep bahasa, Kotlin memiliki tiga kali lebih banyak, C # memiliki lebih banyak lagi. Tetapi pada saat yang sama, kemampuan Scala lebih luas.

Kami pikir itu keren, tapi ternyata tidak. Saya terkesan, saya menyadari bahwa Martin mengerti bahwa kita perlu bergerak. Satu-satunya hal yang mengkhawatirkan adalah bahwa Scala harus menjadi semacam bahasa khusus. Kemungkinan bahasa yang tak terbatas menciptakan ceruk ini. Ini adalah DSL yang dia tahu caranya, dan itu semua keren. Mengejar Kotlin untuk Jawa yang terbaik itu sulit, dan lebih sulit setiap tahun. Hal utama adalah jangan sampai kehilangan niche Anda. Jika mereka menambahkan semua fungsi ini dan tidak kehilangan niche mereka, itu akan keren. Tetapi jika Miles menjalankan semuanya, maka itu mungkin berhasil. Ya, Misha?

Pada bagian penyelidikan berikut tentang asal usul gerakan Scala, kami menunggu wawancara dengan Vladimir Uspensky, Roman Elizarov, dan Nikolai Tatarinov. Jika Anda ingin menambahkan aspek baru ke riwayat gerakan Scala atau berbagi pengalaman Anda tentang penggunaan, kirimkan laporan . Panggilan untuk Makalah ditutup setelah 10 hari.

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


All Articles