Aku ingin itu terjadi
- pembuatan kode asli // Dapat dikompilasi dengan sesuatu seperti GHC
- lintas-platform (win / linux)
- Fungsional dan sedikit berorientasi objek
- lambdas, pencocokan pola, tupel dan hal-hal fungsional lainnya
- Dukungan pemrograman besar
- Batas indent dan minimum
- mengetik statis
- Saya juga ingin dukungan Mixin :)
- kemungkinan membangun situs web berdasarkan beberapa framework juga bagus plus.
- begitu dan ya, kinerja dan stabilitas penting.
Saya memulai Haskell , tetapi masih tidak yakin tentang itu, karena ada OCaml. Dan saya punya pengalaman F #. Tetapi sejauh yang saya tahu OCalm sedikit OOP dan kadang-kadang bahkan lebih cepat (tidak yakin tentang hal itu) saya tidak pernah mencobanya. Ada juga erlang, saya tidak tahu apa-apa tentang erlang . Dan mungkin saya kehilangan sesuatu yang lebih ..? Python , saya tidak tahu tentang python di sini, itu fungsional dan itu oop dan mendukung mixin dan populer dan cepat, tapi saya tidak benar-benar berpikir bahwa python mampu untuk semua sihir fungsional, saya pikir itu tidak bisa.
Saya tahu bahwa utas / topik ini seperti pembicaraan tentang apa-apa atau seperti perang bahasa, tapi saya serius dan benar-benar ingin mendengar visi Anda tentang itu.
Jawaban:
Clojure tampaknya cocok untuk semua kebutuhan Anda.
pembuatan kode asli / Mampu mengkompilasi dengan sesuatu seperti GHC - Ya (semua kode Clojure dikompilasi ke bytecode Java yang kemudian dikompilasi ke kode asli melalui JIT pada JVM)
cross-platform (win / linux) - Ya - di mana pun JVM berjalan
Fungsional dan sedikit berorientasi objek - Ya - Clojure adalah bahasa fungsional yang pertama dan terutama, tetapi juga memiliki dukungan OO jika Anda menginginkannya (melalui interoperabilitas Java atau objek gaya CL). Karena itu, OO umumnya dianggap tidak otomatis di Clojure.
lambdas, pencocokan pola, tuple dan hal-hal fungsional lainnya - Ya - ini adalah bahasa fungsional yang cukup standar dalam hal ini. Auther (Rich Hickey) agak terinspirasi oleh Haskell.
Dukungan metaprogramming yang bagus - Ya - "code-is-data" berlaku seperti semua Lisps dan Anda mendapatkan fungsionalitas makro yang hebat
Batas indent dan minimum - Ya meskipun tentunya itu sebenarnya sebuah editor daripada fitur bahasa ??
pengetikan statis - Ya - Clojure adalah dinamis secara default, tetapi Anda dapat memberikan petunjuk tipe statis atau primitif kapan pun Anda suka untuk meningkatkan kinerja
Saya juga ingin dukungan Mixin :) - Ya - dapat dicapai dengan berbagai cara (mis. makro) meskipun Anda mungkin tidak mau atau membutuhkannya setelah Anda menemukan fungsi protokol Clojure ....
kemungkinan membangun situs web berdasarkan beberapa framework juga bagus plus. - Ya - ada kerangka kerja seperti Ring / Compojure di Clojure dan Anda juga dapat menggunakan kerangka kerja Java apa pun
begitu dan ya, kinerja dan stabilitas penting. - Ya - Pada dasarnya Anda mendapatkan semua kinerja / stabilitas JVM yang cukup terbukti dalam aplikasi perusahaan ....
Terlepas dari semua itu, Clojure memiliki beberapa kemampuan yang sangat mengesankan di sekitar concurrency. Sangat layak menonton video ini: http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey
sumber
Gangguan umum
Tampaknya mendukung semua persyaratan di atas. Tautan akan membawa Anda ke buku online yang mencakup semua yang perlu Anda ketahui untuk memulai.
sumber
eval
fungsinya? Ini hanya sebuah fungsi, Anda dapat mengimplementasikannya sesuka Anda. Beberapa implementasi memiliki penerjemah terpisah yang mereka kirimkan dengan executable yang dikompilasi. Beberapa hanya mengirimkan kompiler itu sendiri dengan executable yang dikompilasi. Beberapa hanya mengkompilasi kode saat runtime. Dan jika Anda berbicara tentang makro: mereka hanya mengeksekusi pada waktu kompilasi . Itulah keindahannya.OCaml adalah satu-satunya bahasa yang menyediakan semua fitur yang Anda minta. (Tapi saya tidak tahu untuk mixin.) Ia bahkan memiliki kerangka kerja web bernama Ocsigen dan itu lebih dari bahasa hype, ini adalah bahasa lama, dengan basis pengguna nyata (perusahaan, universitas, penggemar) dan bertahun-tahun meningkatkan dan menguji .
sumber
Jelas Scala dapat memenuhi kebutuhan Anda:
Apalagi Scala memiliki dukungan besar untuk pemrograman paralel (oleh Aktor). Komunitas Scala tumbuh dan digunakan dalam proyek nyata (Twitter). Bahasa ini cukup sulit untuk dipelajari karena memiliki banyak fitur dan gula sintaksis tetapi begitu Anda menanganinya, Anda pasti akan menikmati pemrograman dengannya.
sumber