Mengapa belajar bahasa yang tidak populer. Contoh Komunitas F #



Ada film-film, permainan, buku atau musik kultus - mereka sangat menyukai komunitas yang erat, profesional dan kritikus. Tetapi tidak ada kesuksesan komersial dan popularitas yang meluas. Dalam situasi seperti itu, saya biasanya sangat kesal.

Dalam perkembangannya, teknologi yang baik juga tidak selalu menjadi luas. Misalnya, F #. Yang saya tahu tentang dia adalah bahasa yang sangat keren, tetapi sama sekali tidak populer, setelah itu pengembang tidak bisa lagi hanya kembali ke bahasa mereka yang biasa.

Saya mencoba mencari tahu alasannya. Dan secara umum - siapa orang yang menulisnya, dan mengapa mereka melakukannya jika bisnis tidak memerlukan bahasa? Untuk melakukan ini, saya mengetuk untuk berbicara dengan komunitas F # berbahasa Rusia di Telegram. Ini meja bundar kami.

Bagaimana cara memulai belajar F #


Airat Khudaigulov ( Szer ): Saya sendiri berasal dari C #. Kami memiliki pekerjaan yang terkait dengan Akka.NET, yang diangkut dari Akka ke Scala. Pelabuhan sangat bagus, tetapi tidak ada contoh kasus dokumentasi langka, mereka selalu di dermaga Scala. Ketika saya membaca dok ini, satu pertanyaan muncul di kepala saya - mengapa semuanya ditulis dalam Scala dalam beberapa baris, dan saya menderita dalam C #?

Jalan keluar ditemukan - F #. Sejak itu, dan tidak ada air mata.

Roman Liman ( kagetoki ): Ternyata menjadi alat yang ampuh untuk memecahkan masalah sehari-hari yang sangat nyata dari setiap programmer. Kesulitan yang dianggap norma dan tak terhindarkan di dunia OOP C # dan Jawa sama sekali tidak bisa dihindari, dan mereka dapat dengan mudah dicegah alih-alih diatasi.

Phil Ranzhin ( fillpackart ): Suatu kali di Habré saya membaca sebuah wawancara besar dengan Vagif Abilov. Pada saat itu, saya sama sekali tidak memahami paradigma pemrograman fungsional, dan informasi apa pun tentangnya sangat mengganggu saya. Jadi wawancara itu.

Vagif Abilov : Materi itu bisa dibaca di sini . Ini segera setelah pidato saya di konferensi Moscow DotNext. Singkatnya, saya mulai mempelajari F # karena keinginan untuk menulis kode yang lebih kompak (lebih sedikit kode - lebih sedikit kejahatan) dan bekerja dengan struktur data yang tidak berubah. Tentu saja, tidak ada yang menghentikan programmer C # atau Java dari mendefinisikan struktur data mereka sebagai tidak berubah, tetapi dasar dari bahasa yang menerapkan OOP adalah kemungkinan mutasi dalam struktur data, dan kemungkinan ini tidak akan pergi ke mana pun. Pemrograman fungsional memungkinkan Anda untuk tidak menghabiskan upaya melindungi data dari perubahan yang salah di lingkungan multi-utas - data akan mengurus diri sendiri, mereka tidak dapat diubah.

Phil Rangin : Wagif terus mengatakan bahwa setelah upacara C # dan Jawa, F # tampak jauh lebih cocok untuk pengembangan. Saya tidak tahu siapa itu Vagif, tetapi, tentu saja, saya segera memutuskan untuk diri saya sendiri bahwa dia tidak mengerti apa-apa. C # bukan seremonial, C # persis seperti yang seharusnya. Kuat dan cantik Saya memutuskan untuk menulis artikel tentang bagaimana pemrograman fungsional itu konyol. Saya mengambil tugas sederhana, dan mulai mengimplementasikannya dalam C # dan F # untuk mengilustrasikan poin saya. F # dalam proses datang kepada saya begitu banyak sehingga saya tidak selesai menulis artikel. Saya mulai mempelajari teknologi ini.

Roman Liman : Banyak hal yang diuji dalam runtime C # sekarang telah dimigrasikan ke waktu comp, jadi sepertinya pertama kali saya mencoba mengetik statis - wahyu langsung turun.

Di mana pada F # Anda memerlukan tujuh baris kode, pada C # kode yang setara akan berkembang menjadi 200-300, tanpa berlebihan (dan ini hanya menghitung kode yang berguna). Kompiler itu sendiri menghasilkan sekelompok pelat untuk Anda, misalnya, kesetaraan struktural.

Phil Rangin : Saya belum pernah debut kode F #, karena dalam kode F # saya semua bug ditangkap pada tahap kompilasi. Saya tidak bercanda.

Sulit belajar F #


Roman Lyman : Seberapa sulit untuk belajar? Bagi saya itu tidak sulit sama sekali. Satu-satunya hal di awal adalah sedikit kencang jika Anda pertama kali menemukan paradigma fungsional dan tipe yang tidak berubah. Tapi ini bukan perubahan bahasa, tapi perubahan paradigma.

Sintaksnya pada awalnya tidak jelas, jadi lebih baik untuk mengesampingkan keberanian dan membaca tentang bahasa, daripada berharap bahwa pengetahuan C # sudah cukup.

Ayrat Khudaigulov : F # mendukung semua yang ada di C # kecuali goto (bahasanya benar-benar berbasis ekspresi, akan aneh untuk melakukan transisi imperatif dalam ekspresi yang dihitung) dan kata kunci yang dilindungi (ini dirancang, karena membuatnya jelas tidak sulit). Semua hal lain yang OOP kita sukai - kelas abstrak, antarmuka, atribut otomatis, usings, dan tri-ketchy - tentu saja. Bagi penggemar penghitungan byte, semuanya ada di sana: parameter ref / out, mutabilitas, span, unmanaged, pointer, stackalloc.

Semua fitur di C # datang dengan jeda beberapa tahun dibandingkan dengan F # (generik, tugas + menunggu async / menunggu, LINQ, pencocokan pola, dan banyak lagi). Dan banyak fitur secara umum saya ragu bahwa mereka akan pernah datang (jumlah jenis diwakili oleh serikat yang didiskriminasi, kari fungsi asli). Dalam C # 8.0 baru mereka berjanji untuk membawa catatan dan pola pertandingan rekursif. Pertanyaan perhatian - mengapa menunggu?

Dan pertanyaan lain: mengapa mempelajari bahasa baru untuk menulis di dalamnya dengan cara yang persis sama? Untuk mendapatkan manfaat yang diberikan F #, tetapi C # tidak, Anda harus memahami sisi lain Force. Dan itu tidak mudah.

John Doe : Sebagai pengembang C #, saya berterima kasih kepada pencipta F # untuk generik dan asinkron dengan wajah manusia dalam C #. Jika ada yang tidak tahu, megafits ini muncul di C # berkat F #.

Vagif Abilov : Dalam buku terkenal "Pragmatic Programmer", pengembang disarankan untuk mempelajari bahasa pemrograman baru setiap tahun. Saya tidak dapat membanggakan bahwa saya mengikuti saran ini dengan tepat, tetapi hal utama, menurut pendapat saya, adalah apa yang penulis ingin sampaikan kepada mereka - programmer harus selalu siap untuk merevisi prinsip-prinsip penulisan program mereka.

Banyak yang umumnya terlalu sibuk dengan bahasa pemrograman, sebagai kredo kehidupan. Jika Anda beralih dari Jawa ke Clojure, mereka kadang-kadang akan diperlakukan seolah-olah seorang Kristen telah masuk Islam. Mengapa, pada kenyataannya, perhatian seperti itu? Mempelajari bahasa pemrograman baru sering kali memungkinkan Anda memikirkan kembali kebiasaan kami bekerja dengan bahasa lama. Mereka yang terbiasa dengan F # menulis dalam C # secara berbeda.

Roman Melnikov ( neftedollar ): Dalam F #, OOP lebih tepat (meskipun sepenuhnya kompatibel dengan OOP di C #) karena mendorong pemrograman pada antarmuka-abstraksi, bukan kelas eksplisit.

Apa yang mereka pikirkan tentang pencipta bahasa


Nikolay Matyushin : Suatu ketika saya berkontribusi pada dukungan penyedia tipe pada .NET Core. Sudah lama mereka tidak bekerja, dan satu orang dari komunitas berbahasa Rusia dan saya memutuskan untuk mencari tahu apa masalahnya. Mengaduk-aduk, kami melihat bahwa dalam. NET Core tidak ada fungsi yang menyimpan perakitan (objek) ke file - fungsi ini digunakan oleh penyedia.

Kami menghabiskan satu atau dua minggu pada prototipe yang melakukan ini. Ternyata tongkat itu mengerikan, tetapi sebagian berfungsi. Selama ini kami berbicara dalam masalah pada github, dan kemudian Don Syme datang, menulis "Beberapa jam kerja", dan memperbaiki penyedia tipe.

Vagif Abilov : Pencipta bahasa Don Syme terjangkau dan demokratis. Saya harap dia bisa menghadiri beberapa konferensi Rusia sehingga para pengembang Rusia dapat mengenalnya secara pribadi.

Roman Lyman : Syme adalah seorang jenius. Hebatnya, dia menciptakan semua keindahan ini hampir sendirian.

Pavel Smirnov : Dia adalah idola pemrograman saya.

Airat Khudaigulov : Ngomong-ngomong, Don Syme, mendorong obat generik ke .NET, kalau tidak kita akan duduk di C # dan mem-hardcast semuanya dari objek dan kembali, seperti (dan sebagian) di Jawa. Syme sedang mengembangkan bahasa dengan memperhatikan C #, untuk kompatibilitas dengan fitur-fitur barunya, yang mungkin secara strategis benar. Tapi ini berarti bahwa gaung keputusan buruk di C # juga bisa masuk ke F #. Ia juga menentang pengenalan fitur FP "musykil" (hi Scala), dan pengaturan ulang bahasa, seperti mereka dapat menakuti orang lain dan mengembang lib standar (halo C ++).

Saya pikir Syme adalah pahlawan. Saya setuju dengan pandangannya tentang bahasa sebagai multi-paradigmal, tapi saya akan menyelami bahasa di atas.

Mengapa bahasa tidak populer


Roman Lyman : Menurut saya, bahasa ini tidak populer, karena pada umumnya FP kurang populer daripada OOP. Plus, ada ambang masuk. Dan kemudian - trik 22. Proyek pada F # tidak menulis, karena ada beberapa programmer di pasar, dan programmer tidak belajar bahasa ini, karena tidak ada proyek di pasar.

Phil Rangin : Saya tidak tahu orang-orang yang akan mempraktikkan pemrograman fungsional, tetapi lebih suka berorientasi objek. Di sini F # sangat sial - hanya cocok untuk mereka yang percaya pada simbiosis paradigma ini.

Pavel Smirnov : Banyak yang menganggapnya lahir mati karena kebijakan Microsoft - F # hanya sebuah platform untuk mengalahkan fitur untuk C #. Tetapi bahasa ini awalnya diposisikan lebih untuk ilmu data daripada untuk pengembangan industri.

Roman Melnikov : Resharper. Untuk C #, ini adalah topik penting, dan banyak yang telah menghabiskannya. Tanpa penyelesai, menulis dalam C # agak sakit, Anda perlu menulis banyak dengan pena, seperti menyoroti alokasi. Dan sang pemanen menghilangkan banyak rasa sakit dari sycharpers. Tidak ada rasa sakit seperti itu di F #, tetapi mereka yang memiliki resharper tidak bisa menghargai semua pesona bahasa yang tidak bergantung pada tuling.

Vagif Abilov : Menurut pendapat saya, alasan di balik kesuksesan Scala terletak pada dominasi Microsoft, yang masih menentukan apa yang menjadi prioritas pada platform Windows. Sementara F # dikembangkan oleh Microsoft Research, F # selalu diposisikan oleh perusahaan sebagai bahasa untuk penggemar. Microsoft memiliki metrik yang menunjukkan kelayakan ekonomi untuk mengembangkan teknologi tertentu tergantung pada penjualan saat ini, dan tentu saja, setiap SharePoint menurut metrik ini terlihat lebih menarik daripada F #. Tapi setetes aus batu.

Phil Rangin : Saya yakin dia akan menembak. Semua kekuatan .NET dipasangkan dengan sintaksis paling modern dan pendekatan paling idiomatis dalam sejarah tidak bisa tidak menembak.

Roman Melnikov : Prospeknya luar biasa. F # secara bertahap beralih ke analisis data, terima kasih untuk mengetikkan penyedia, misalnya. Ada kompiler di js dan perpustakaan sihir elmish (pada dasarnya Elm untuk .NET).

Miguel De Icaza aktif mendukung F #, dan di Xamarin dukungannya selalu seperti C #. Ada kompiler di ErlangCore, yang juga sangat keren. Dalam F # Anda dapat menulis backend dan frontend sepenuhnya. AMAN-Stack adalah hal yang aneh, dengan panggilan api yang diketik, pembungkus keren di atas soket web (Elmish.Bridge) dan banyak lagi.

Vagif Abilov : Saya sangat senang F # digunakan. Saya bekerja di proyek penyiaran Norwegia, sistem kami mengunggah file media untuk program televisi dan radio ke "cloud" untuk membuatnya tersedia untuk dilihat dan didengarkan dari komputer dan perangkat seluler. Sistem ini ditulis dalam F # dan menggunakan Akka.NET. Ini bukan satu-satunya proyek di organisasi kami yang menggunakan F #, dan yang paling menyenangkan adalah bahwa jumlah proyek semacam itu terus bertambah, serta jumlah pengembang yang mau beralih ke bahasa ini.

Untuk apa F # cocok?


Phil Rangin : F # sangat cocok dalam pengembangan AI. Bahasa ini secara harfiah dibuat untuk mengabstraksi saya dari kesulitan dan fokus pada hal utama. Ketika Anda melakukan AI, tugas Anda adalah memetakan cara berpikir Anda tentang perilaku mesin. Dalam kasus seperti itu, kode adalah bahasa perantara Anda, yang tidak dapat mengekspresikan hal-hal yang terlalu rumit. Di sini F # mampu menjadi sangat abstrak sehingga tidak akan mengganggu Anda dan mobil Anda membuat sejarah.

Vagif Abilov : Ini berlaku untuk tugas apa pun, dan sangat baik pada tugas pemodelan domain. Dalam wawancara tahun lalu tentang Habré, saya dengan ceroboh mengatakan bahwa bahasa fungsional lebih berlaku untuk algoritma dan backend, dan pada tingkat yang lebih rendah untuk pemrograman antarmuka pengguna dan halaman web.

Kemudian, dalam komentar, seseorang memperhatikan bahwa ada bahasa fungsional Elm, yang khusus ditulis untuk pemrograman halaman web. Komentator itu benar sekali. Sejak itu saya mulai menggunakan Fable, yang memungkinkan Anda menulis aplikasi web dalam F # dengan mengompilasinya dalam JavaScript. Pengalaman yang luar biasa, kombinasi F # + Fable (dan perpustakaan Fable-Elmish) membuka akses ke pemrograman web untuk pengembang yang tidak mengerti apa pun dalam CSS seperti saya.

Pavel Sirnov : Pengembangan berbasis data - bahasa FP ringkas yang mendukung Penyedia Tipe. Model aktor - MailboxProcessor di perpustakaan standar adalah dongeng.

Roman Melnikov : Ini menyelesaikan tugas web dengan sempurna, terintegrasi dengan komponen reaksi . Tugas analisis data dan pembelajaran mesin ( fslab.org ), tugas ETL, dan tugas desain logika bisnis sedang ditangani - sistem tipe memungkinkan Anda untuk menulis sehingga tidak ada status yang salah.
Tugas parsing yang hebat (Fparsec). Bagus untuk menulis bahasa Anda sendiri. TypeScript yang sama pada awalnya ditulis dalam F #. Kode untuk GPU ditulis.
Saya sendiri menulis skrip fsx di atasnya bukannya bash dan python untuk mesin saya.

Ya, di bawah mikrokontroler Anda tidak akan mendapatkannya. Tetapi saya pikir cukup banyak orang dapat melakukannya tanpa itu.

Di mana mendapatkan informasi


Buku



Internet



Telegram


  • fsharp_news
  • fsharp_chat

Beberapa kata tentang komunitas


Roman Liman : Komunitas itu keren, semua orang disatukan oleh keinginan untuk menulis F # untuk uang, jadi semua pendatang baru sangat terbantu untuk meningkatkan komunitas, meningkatkan peluang mereka untuk menemukan pekerjaan.

Phil Rangin : Kultus Berbahaya. Tetapi mereka benar.

Pavel Smirnov : Komunitas berbahasa Rusia F # adalah tempat yang sangat nyaman. Kebanyakan saya suka bahwa mereka tidak acuh pada bahasa mereka, seperti yang terjadi di ekosistem lain yang lebih terkenal.

Nikolai Matyushin : Mungkin karena fakta bahwa bahasanya tidak terlalu populer, dan orang-orang yang beracun tidak mau berlama-lama.

Roman Melnikov : Ada drama yang tidak memengaruhi bahasa. Tetapi hidup menjadi lebih menarik.

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


All Articles