
Dari seorang penerjemah: Posting ini adalah terjemahan yang agak disingkat dari
artikel asli oleh Gal Schlesinger, seorang pengembang frontend yang berpengalaman. Dia sangat suka pemrograman, dan hobinya mempelajari berbagai bahasa pemrograman (dan kadang-kadang sangat tidak terduga) untuk tujuan kerja maupun untuk proyek hewan peliharaannya sendiri. Gal juga berbicara tentang kelebihan dan kekurangan beberapa dari mereka dalam materi ini.
Terlepas dari kenyataan bahwa di tempat kerja saya paling sering bekerja dengan Java, JS dan Ruby, saya suka belajar bahasa dan kerangka kerja baru. Sepertinya bagi saya bahwa pelatihan terus-menerus membantu membentuk ide-ide baru yang menarik yang dapat digunakan, jika perlu, untuk memecahkan masalah tertentu. Selain itu, pemrograman fungsional membantu untuk memahami lebih banyak tentang pemrograman berorientasi objek, dan kerja konstan dengan Rails memungkinkan Anda mempelajari banyak nuansa pengujian (tentu saja, jika Anda berlatih). Masalahnya adalah cepat atau lambat, dalam proses belajar bahasa lain, Anda mulai bertanya-tanya: adakah yang ideal di antara mereka, di mana semua fungsi berguna yang Anda temukan pada orang lain akan dikumpulkan?
Skillbox merekomendasikan: Kursus praktis "Pengembang Mobile PRO" .
Kami mengingatkan Anda: untuk semua pembaca "Habr" - diskon 10.000 rubel saat mendaftar untuk kursus Skillbox apa pun menggunakan kode promosi "Habr".
Saya ingin menambahkan: preferensi saya dalam bahasa pemrograman mungkin tidak cocok dengan Anda. Dalam artikel ini saya menggambarkan pengalaman saya selama beberapa bulan terakhir dalam mengerjakan proyek-proyek besar dan yang saya buat di waktu luang saya.
Ruby
Saya mulai belajar Ruby hanya karena komunitasnya terus-menerus mengulangi gagasan bahwa semua yang ada di sini berbeda dari Jawa, yang saya gunakan sebelumnya. Saya sangat suka Ruby. Ini adalah bahasa yang bagus dengan sejumlah besar perpustakaan yang sudah jadi (kami menyebutnya permata, permata), yang memungkinkan Anda untuk dengan cepat mengembangkan dan menggunakan aplikasi baru. Rails - apa yang bisa disebut "duduk dan pergi."
Ruby adalah bahasa berorientasi objek, sehingga semua kode berada dalam gaya yang kira-kira sama, tidak peduli perpustakaan mana yang Anda pilih. Komunitas di sini sangat kuat: programmer lebih suka memodifikasi perpustakaan yang sudah ada daripada membuat yang baru setiap kali (ActiveRecord dan Sequel sebagai contoh). Fitur ini memungkinkan Anda untuk membuat hidup Anda lebih mudah.
Benar, Ruby tidak cukup cepat dalam hal kinerja. Komponen biasanya “berat” dan butuh waktu lama untuk memuat. Berlatih dengan Rails memang menyenangkan, tetapi menjalankan aplikasi berarti menghabiskan waktu dan uang. Heroku dan AWS ECS adalah contohnya: Anda harus membayar untuk RAM, ruang file, lalu lintas, dan waktu aktif. Selain itu, harus diingat bahwa perkiraan waktu mulai untuk aplikasi rata-rata adalah 5-10 detik.
Javascript
Saya suka JavaScript. Sebagian besar proyek frontend saya adalah untuk web, karena siapa pun sekarang memiliki akses ke browser. Ini adalah bahasa yang relatif mudah dipelajari, sangat umum, ambang entri rendah. Alat pengembangnya cukup bagus, mengimplementasikan prototipe menggunakan JavaScript hanyalah mimpi. Masyarakat juga memiliki banyak anggota yang menaruh perhatian besar untuk meningkatkan komponen.
JS memiliki banyak kekurangan. Salah satu yang utama adalah pembagian komunitas ke dalam berbagai bidang pengembangan bahasa sesuai dengan preferensi. Jadi, perbedaan utama adalah sekitar sistem tipe (Flow vs. TS), dan pendekatan untuk menggunakan perpustakaan dan yang lainnya berbeda. Akibatnya, banyak perkembangan, modul hanya "mentah".
Cepat
Setelah bekerja dengan dua bahasa sebelumnya, saya mulai belajar Swift. Saya perlu bahasa untuk maju dalam "permainan pengembang." Awalnya, saya berada di level nol, karena saya hanya tahu cara membuat aplikasi dengan Native React. Pada prinsipnya, itu sudah cukup, tetapi saya ingin belajar lebih banyak.
Swift adalah bahasa yang diketik secara statis. Awalnya, itu dibuat untuk mengembangkan aplikasi di ekosistem Apple, tetapi kemudian menjadi open-source, jadi mereka sekarang bekerja dengannya untuk membuat aplikasi untuk Linux. Keuntungan dari bahasa ini adalah bahwa aplikasi yang ditulis di dalamnya memuat dengan cepat, dan proses kompilasi jelas, sehingga jumlah kesalahan runtime secara bertahap diminimalkan.
Sintaks bahasanya menarik dan tidak terlalu sulit untuk dipelajari, beberapa fungsi membantu untuk menghindari kesalahan dan masalah. Misalnya, jika bagian dari kode “mengharapkan” sebuah string, transmisi bilangan bulat yang salah tidak diperbolehkan. Ini memungkinkan Anda untuk menangkap dan memperbaiki kesalahan pada tahap paling awal dari proses pengembangan.
Mengapa Swift bukan pahlawan saya? Faktanya adalah tidak mudah untuk menulis di Swift di editor selain Xcode. Saya biasanya menggunakan Vim, editor lain lebih lambat. Entah bagaimana saya mencoba VSCode dan Atom, tetapi saya tidak terlalu menyukainya. Mungkin pada akhirnya saya akan fokus pada Swift CLI, yang akan memungkinkan Anda membuat plugin untuk editor, tetapi tidak sekarang. Swift juga tidak memiliki kompilasi statis, jadi untuk menggunakan CLI Anda harus mengkonfigurasi lingkungan Anda dengan Swift. Ini normal untuk aplikasi Mac, tetapi servernya adalah Linux.
ReasonML
Saya sangat senang dengan sintaks dan toolkit baru ini untuk Ocaml yang dikembangkan oleh Facebook. Tulkit ini cukup matang, ia memberikan banyak fungsi. Yang bagus adalah OPAM, manajer paket, serta Merlin dan OCaml / Reason. Semua ini bekerja dengan baik dengan Vim. Dan bahkan jika Anda tidak menyebutkan mesin autocomplete dan fungsi lainnya. Alat pengembang di sini sangat bagus.
Reason dapat dikompilasi dalam JS menggunakan BuckleScript, yang menghasilkan JS yang dapat dieksekusi dari kode Reason / OCaml. Ini luar biasa, karena dalam hal ini kita mendapatkan sistem yang sepenuhnya diketik dengan interaksi JS yang sangat baik, dan kita juga dapat menggunakan pustaka yang diperlukan.
Satu-satunya hal yang saya tidak suka adalah saya harus membuat banyak definisi tipe hanya untuk penggunaan dependensi. Tapi ini bukan apa-apa, karena kita tidak perlu merakit seluruh modul, tetapi hanya input / output dari fungsi / kelas / metode tertentu yang kita gunakan. Semua ini bekerja sangat cepat dan tanpa masalah.
Kesulitan dalam membuat aplikasi Alasan asli ternyata adalah penggunaan beberapa perpustakaan. Ini terutama OCaml, tetapi karena OCaml dan Reason dapat dipertukarkan, saya menggunakan ekstensi Chrome untuk bekerja dengan kode Reason. Masalahnya ternyata adalah bahwa ada kode OCaml yang tidak dapat dikonversi menjadi Alasan, mungkin karena kurangnya PPX dalam ekstensi Chrome. PPX, seperti yang saya mengerti, ekstensi sintaks adalah makro yang mengubah kode. Ini sedikit plugin Babel.
Omong-omong, Alasan / Ocaml tidak mendukung multi-core, ada Lwt untuk ini. Tetapi untuk perpustakaan ini masih belum ada manual yang dapat dimengerti!
Ambang entri untuk OCaml / Alasan sangat tinggi, yang sedikit membuat frustrasi. Komunitasnya tidak terlalu berkembang, dan hanya sedikit orang yang menjelaskan hal-hal aneh dengan baik. Mungkin ini akan berubah seiring waktu.
Golang
Bahasa yang fantastis. Sangat mudah dipelajari, kompilasi kode dan berjalan tanpa masalah. Ada dukungan untuk sistem multi-core dan banyak fitur berguna lainnya. Komunitas ini cukup berkembang, dengan sejumlah besar spesialis.
Fakta bahwa ada banyak modul dan aplikasi hebat yang ditulis di Go, seperti Docker, Kubernetes, CockroachDB, berarti Anda dapat membuat biner infrastruktur untuk, misalnya, Raspberry pi di dalam aplikasi Anda.
Kurangnya obat generik (yang dapat ditambahkan di salah satu versi berikutnya) aneh karena ada kesulitan "struktural" ketika menggunakan grafik, pohon, dan algoritma. Saya lebih suka kompiler untuk melakukan segalanya untuk saya.
Selain itu, masalah bagi saya adalah sistem VGO modular tidak begitu jelas. Seiring waktu, kita akan belajar lebih banyak tentang hal itu, karena masyarakat secara bertahap berkembang, tetapi sejauh ini hanya ada sedikit informasi. Bahasanya sendiri cukup kompleks. Ini bukan alasan untuk tidak menggunakannya, tetapi untuk saat ini saya menghindari pekerjaan penuh waktu dengan Golang. Bisa dibilang, dia membosankan. Mungkin dalam perjalanan waktu saya akan mempertimbangkan kembali pandangan saya.
Kristal
Kami mulai dengan Ruby, jadi saya sarankan untuk menyelesaikan Crystal.
Ini adalah salah satu bahasa baru, masih belum sampai ke versi 1.0, yang terlihat hampir seperti Ruby, tetapi diketik secara statis dan cepat! Ini menawarkan pengembang sejumlah besar fungsi, termasuk tipe opsional, CSP dan banyak lagi. Ada beberapa kerangka kerja web Crystal baru seperti Lucky dan Amber. Ada Kemal, yang seperti Sinatra, tetapi untuk Crystal, plus ada ORM.
Tetapi, karena bahasanya masih muda, itu tidak cukup siap untuk penggunaan aktif. Sebagai contoh, saya ingin Crystal menggunakan semua core, seperti Go. Editor dengan autocomplete dan petunjuk jenis selama hover juga tidak akan berlebihan. Saya sedikit khawatir tentang gagasan bahwa Crystal mungkin tidak mendapatkan versi 1.0. Saya sungguh berharap dia berhasil.
Apa bahasa pemrograman favorit Anda dan mengapa?
Skillbox merekomendasikan: