Jadi sekarang Eclipse telah menawarkan Xtend dan JetBrains menawarkan Kotlin - yang keduanya tampaknya dipermudah versi Scala. Pertanyaan saya adalah mengapa? Saya telah bermain dengan Scala sedikit dan itu tidak bahwa sulit. Apakah ini hanya reaksi terhadap kesulitan yang melekat dari lompatan dari keharusan ke fungsional atau apakah ada sesuatu yang bekerja di sini?
EDIT: Permintaan Maaf. Membaca ulang pertanyaan seperti yang saya posting awalnya saya bisa melihat di mana itu terdengar seperti trolling Cara saya mengutarakan pertanyaan itu sepertinya merupakan cara terbaik untuk mengajukan pertanyaan. Saya telah melihat posting blog dengan efek "Scala terlalu keras / Scala terlalu kompleks" dan juga "Kotlin adalah upaya untuk melakukan Scala tetapi lebih sederhana". Saya akan meninggalkan frasa seperti aslinya tetapi saya sejujurnya tidak berusaha untuk menjebak.
sumber
Jawaban:
IMHO dari seseorang pemrograman di Jawa selama 7 tahun terakhir dan menjadi bahasa terkuat saya, saya menemukan Scala sangat asing dan saya mengalami kesulitan membiasakan diri dengannya.
Xtend terasa lebih seperti Java dan mampu menulis aplikasi sederhana dengan itu lebih cepat. Memang saya tidak memberi diri saya cukup waktu dengan Scala, tetapi saya tentu mengerti mengapa beberapa orang mungkin dimatikan olehnya.
Dengan itu dikatakan, orang akan memilih neraka akrab dari surga asing.
sumber
JetBrains memiliki halaman wiki yang membandingkan Scala dengan Kotlin, dan tampaknya ada beberapa hal yang tidak dilakukan oleh Kotlin dan Scala:
Jadi menyebut Kotlin sebagai air di Scala mungkin merupakan penyederhanaan yang berlebihan. Adapun Xtend, saya pikir itu menargetkan sebagian besar pengguna Xtext, daripada audiens yang lebih luas. Perbedaan utama dengan Scala adalah Xtend mengkompilasi ke Java daripada bytecode.
Bahasa "Java killer" lain yang harus Anda tambahkan ke daftar Anda adalah Ceylon Red Hat , meskipun saya tidak tahu apakah dan bagaimana cara membandingkannya dengan Scala.
sumber
Saya telah menggunakan Scala sebagai bahasa utama saya untuk tahun lalu (dengan Java sebagai dekat kedua, keduanya dalam basis kode Java warisan besar.) Saya masih harus mencari fitur yang cukup mendasar jika saya belum menggunakannya dalam sementara. Tentu, Anda dapat menulis beberapa Scala dengan cepat, tetapi ini adalah bahasa yang sangat kaya fitur, dan perlu waktu lama untuk dikuasai.
Terlebih lagi, kerumitannya bukan hanya masalah bagi manusia, tetapi juga untuk IDE dan kompiler. Baik Celyon dan Kotlin mengkompilasi langsung ke JavaScript yang cukup bersih. Scala dapat menghasilkan JavaScript, melalui GWT, meskipun untuk mencapai sana rumit dan output GWT tidak dapat dibaca atau dirancang untuk bermain dengan baik dengan JavaScript eksternal atau HTML.
Saya jelas lebih produktif di Scala daripada Java, dan kodenya lebih ringkas dan dapat dibaca (begitu Anda tahu sedikit Scala.) Tetapi kompleksitasnya membuat saya ragu untuk merekomendasikannya kepada orang lain. Bahasa dengan 20% kompleksitas tetapi 80% kapabilitas akan menjadi alternatif yang disambut baik.
[Diedit untuk menghapus penyebutan kode lawas, lihat komentar di bawah.]
[Adendum 2017: Scala sekarang mendukung JavaScript sebagai target build, sementara Kotlin terus menambahkan fitur yang masuk akal untuk penggantian Java / Groovy / JavaScript yang mirip Scala. Mereka sekarang menjadi bahasa yang lebih khas daripada ketika saya pertama kali menulis ini.]
sumber
+:
ekstraktor misalnya). Saya harap Pemrograman dalam Scala akan diperbarui dalam waktu dekat. Untuk 2.11 beberapa hal meningkatkan lebih lanjut. Stdlib sudah dibebaskan dari penghinaan dan juga akan menyusut sedikit. Mungkinscala.util.parsing
akan dipindahkan di luar stdlib juga. Kita akan melihat ...::
,::=
atau+:=
mana yang lebih dulu, tetapi kebanyakan orang menginginkan:+=
yang ditambahkan, tetapi itu tidak efisien untuk suatu Daftar.JetBrains dengan sangat jelas menyatakan tujuan mereka untuk Kotlin :
sumber
Saya telah menggunakan Scala beberapa bulan di Eclipse with Play Framework. Saya suka bahasanya tetapi ada juga hal-hal yang tidak saya sukai.
Bagi saya, alasan untuk beralih dari Jawa ke bahasa lain adalah untuk menjadi lebih produktif.
Sejauh ini saya belum lebih produktif dengan Scala. Salah satu alasannya adalah kurangnya dukungan yang baik untuk Scala di Eclipse, plugin Scala buruk (misalnya lekukan gagal) dan belum memiliki banyak fungsi (misalnya tidak ada "Open Call Hierarchy"). Kompilator Scala juga lambat, ini mungkin tidak menjadi masalah, tapi saya menggunakan Scala dengan Play Framework, yang mengkompilasi kode untuk setiap permintaan, dan di sana kecepatan kompilator penting.
sumber
Tidak tahu tentang Kotlin, tetapi Scala dan Xtend adalah dua binatang yang sangat berbeda.
Berlawanan dengan perkataan umum, Scala BUKAN Java yang lebih baik. Scala lebih banyak menampilkan bahasa daripada Java, dengan sintaks dan semantiknya sendiri, dan paket pustaka basisnya sendiri.
Xtend ADALAH Java yang lebih baik. Itu membuat Java semantik dan meningkatkan sintaksisnya. Setiap baris kode Xtend dapat langsung diterjemahkan ke sekelompok baris kode java. Tidak ada runtime tambahan.
Saya pikir kedua pendekatan itu benar, walaupun berbeda. Saya tidak suka Scala (sebagai bahasa), tetapi tidak suka memiliki botol Scala ditambahkan ke proyek saya. Saya juga tidak bisa menggunakan Scala di Android (ini menambah masalah berat dan kinerja). Xtend tidak sebanyak yang ditampilkan, tetapi tidak masalah bagi saya (lebih baik menggunakannya daripada bahasa Jawa) dan berfungsi pada setiap platform seolah-olah saya menulis langsung di Jawa.
Saya percaya kedua bahasa tersebut membahas ceruk yang berbeda dan dapat hidup berdampingan tanpa saling mengganggu satu sama lain. IMHO, Scala terlalu rumit, tidak ada yang baru. Jika Anda ingin lebih fungsional dan kurang OO, cukup pilih salah satu dari banyak bahasa fungsional yang lebih sederhana, seperti Clojure atau JHaskell. Jika Anda hanya ingin Java dengan beberapa sintaks yang lebih baik dan sedikit pemrograman fungsional, Fantom akan sama hebatnya dengan Scala (ini menyerupai banyak C #).
Tapi saya menemukan Xtend berada di titik manis di antara semua bahasa itu. Itu menambahkan semua pola sintaksis yang saya inginkan untuk Jawa, menjaga bagian-bagian yang baik dari Jawa (semantiknya). Pikirkan sebagai Coffescript untuk Java.
Dan dukungan Eclipse luar biasa ...
sumber