Dapatkah seseorang tolong jelaskan perbedaan utama antara Scala, Groovy dan Clojure. Saya tahu masing-masing kompilasi ini untuk berjalan di JVM tapi saya ingin perbandingan sederhana di antara mereka.
sumber
Dapatkah seseorang tolong jelaskan perbedaan utama antara Scala, Groovy dan Clojure. Saya tahu masing-masing kompilasi ini untuk berjalan di JVM tapi saya ingin perbandingan sederhana di antara mereka.
Groovy adalah bahasa yang diketik secara dinamis, yang sintaksinya sangat dekat dengan Java, dengan sejumlah perbaikan sintaksis yang memungkinkan kode lebih ringan dan lebih sedikit boilerplate. Ia dapat dijalankan melalui juru bahasa dan juga dikompilasi, yang membuatnya baik untuk pembuatan prototipe cepat, skrip, dan belajar bahasa dinamis tanpa harus mempelajari sintaks baru (dengan asumsi Anda tahu Java). Pada Groovy 2.0, ia juga memiliki dukungan yang berkembang untuk kompilasi statis . Groovy mendukung penutupan dan memiliki dukungan untuk pemrograman dalam gaya yang agak fungsional, meskipun masih cukup jauh dari definisi tradisional pemrograman fungsional.
Clojure adalah dialek Lisp dengan beberapa fitur canggih seperti Software Transactional Memory . Jika Anda menyukai Lisp dan ingin menggunakan sesuatu seperti itu di bawah JVM, Clojure adalah untuk Anda. Mungkin bahasa yang paling fungsional berjalan di JVM, dan tentu saja yang paling terkenal. Selain itu, ia memiliki penekanan yang lebih kuat pada ketidakmampuan dibandingkan dengan dialek Lisp lainnya, yang membawanya lebih dekat ke jantung penggemar bahasa fungsional.
Scala adalah bahasa berorientasi objek sepenuhnya, lebih dari Jawa, dengan salah satu sistem tipe paling canggih yang tersedia pada bahasa non-penelitian, dan tentu saja sistem tipe paling canggih di JVM. Ini juga menggabungkan banyak konsep dan fitur bahasa fungsional, tanpa mengorbankan orientasi objek, tetapi kompromi pada karakteristik bahasa fungsional menunda beberapa penggemar yang terakhir.
Groovy memiliki penerimaan yang baik dan kerangka kerja web yang populer di Grails. Ini juga mendukung sistem pembangunan Gradle, yang menjadi alternatif populer bagi Maven. Saya pribadi berpikir itu adalah bahasa dengan utilitas terbatas, terutama ketika Jython dan JRuby mulai membuat terobosan di tanah JVM, dibandingkan dengan yang lain.
Clojure, bahkan mengabaikan beberapa fitur yang sangat menarik, memiliki daya tarik yang kuat hanya dengan menjadi dialek Lisp di JVM. Mungkin membatasi popularitasnya, memang, tapi saya berharap itu akan memiliki komunitas yang setia di sekitarnya untuk waktu yang lama.
Scala dapat bersaing secara langsung dengan Jawa, dan memberikannya uang untuk hampir semua aspek. Ini tidak dapat bersaing dalam popularitas saat ini, tentu saja, dan kurangnya dukungan perusahaan yang kuat dapat menghambat penerimaannya di lingkungan perusahaan. Ini juga bahasa yang jauh lebih dinamis daripada Jawa, dalam arti bagaimana bahasa berkembang. Dari perspektif bahasa, itu hal yang baik. Dari perspektif pengguna yang berencana memiliki ribuan baris kode tertulis di dalamnya, tidak demikian.
Sebagai pengungkapan terakhir, saya sangat akrab dengan Scala, dan hanya berkenalan dengan dua lainnya.
Scala
Scala berevolusi dari bahasa fungsional murni yang dikenal sebagai Funnel dan mewakili implementasi ruang-bersih hampir semua sintaksis Jawa, hanya berbeda di mana peningkatan yang jelas dapat dilakukan atau di mana ia akan mengkompromikan sifat fungsional bahasa. Perbedaan tersebut termasuk objek tunggal, bukan metode statis, dan tipe inferensi.
Sebagian besar ini didasarkan pada karya Martin Odersky sebelumnya dengan bahasa Pizza . Integrasi OO / FP jauh melampaui penutupan belaka dan telah menyebabkan bahasa yang digambarkan sebagai pasca-fungsional.
Meskipun demikian, ini yang paling dekat ke Jawa dalam banyak hal. Terutama karena kombinasi dukungan OO dan pengetikan statis, tetapi juga karena tujuan eksplisit dalam desain bahasa yang harus diintegrasikan dengan Java.
Asyik
Groovy secara eksplisit menangani dua kritik terbesar Jawa
Ini mungkin secara sintaksis paling dekat dengan Jawa, tidak menawarkan beberapa konstruksi fungsional yang lebih kaya yang disediakan oleh Clojure dan Scala, tetapi masih menawarkan peningkatan evolusi yang pasti - terutama untuk menulis program gaya skrip.
Groovy memiliki dukungan komersial terkuat dari tiga bahasa, kebanyakan melalui sumber mata air.
Clojure
Clojure adalah bahasa fungsional dalam keluarga LISP, juga diketik secara dinamis.
Fitur-fitur seperti dukungan STM memberikannya beberapa dukungan konkurensi out-of-the-box terbaik, sedangkan Scala membutuhkan perpustakaan pihak ketiga seperti Akka untuk menduplikasi ini.
Secara sintaksis, itu juga yang terjauh dari tiga bahasa dari kode Java yang khas.
Saya juga harus mengungkapkan bahwa saya paling mengenal Scala :)
sumber
Saya tidak pernah punya waktu untuk bermain dengan clojure. Tapi untuk scala vs asyik, ini adalah kata-kata dari James Strachan - pencipta Groovy
Anda dapat membaca keseluruhan cerita di sini
sumber
Mereka dapat dibedakan dengan dari mana mereka berasal atau pengembang yang mereka targetkan terutama.
Asyik agak mirip dengan versi scripting Java. Lama programmer Java merasa di rumah ketika membangun aplikasi tangkas yang didukung oleh arsitektur besar. Groovy on Grails adalah, seperti namanya mirip dengan kerangka Rails. Untuk orang-orang yang tidak ingin repot dengan verbositas Java sepanjang waktu
Scala adalah bahasa pemrograman berorientasi objek dan fungsional dan programmer Ruby atau Python mungkin merasa lebih dekat dengan yang satu ini. Ini mempekerjakan cukup banyak ide bagus yang umum ditemukan dalam bahasa pemrograman ini.
Clojure adalah dialek bahasa pemrograman Lisp sehingga pengembang Lisp, Skema, atau Haskell mungkin merasa betah saat mengembangkan bahasa ini.
sumber
Saya membaca buku Programmer Pragmatis "Resep Groovy: Meminyaki roda Jawa" oleh Scott Davis, Hak Cipta 2008 dan dicetak pada bulan April tahun yang sama.
Agak ketinggalan zaman tetapi buku ini menjelaskan bahwa Groovy secara harfiah adalah perpanjangan dari Jawa. Saya dapat menulis kode Java yang berfungsi persis seperti Java dan mengganti nama file * .groovy dan berfungsi dengan baik. Menurut buku itu, kebalikannya benar jika saya menyertakan perpustakaan yang diperlukan. Sejauh ini, eksperimen tampaknya membuktikan hal ini.
sumber
Jelas, sintaksnya sangat berbeda (Groovy paling dekat dengan Java), tapi saya kira itu bukan yang Anda minta.
Jika Anda tertarik menggunakannya untuk membuat skrip aplikasi Java, Scala mungkin bukan pilihan yang baik, karena tidak ada cara mudah untuk mengevaluasinya dari Jawa, sedangkan Groovy sangat cocok untuk tujuan itu.
sumber
eval
wajib