it-swarm-id.com

Apa perbedaan terbesar antara F # dan Scala?

F # dan Scala keduanya bahasa pemrograman fungsional yang tidak memaksa pengembang untuk hanya menggunakan tipe data yang tidak dapat diubah. Mereka berdua memiliki dukungan untuk objek, dapat menggunakan perpustakaan yang ditulis dalam bahasa lain dan dijalankan pada mesin virtual Kedua bahasa tampaknya didasarkan pada ML.

Apa perbedaan terbesar antara F # dan Scala terlepas dari kenyataan bahwa F # dirancang untuk .NET dan Scala untuk Java = platform?

59
Jonas

Perbedaan Utama:

  • Baik Scala dan F # menggabungkan pemrograman OO-imperatif dan pemrograman fungsional ke dalam satu bahasa. Pendekatan mereka terhadap penyatuan paradigma sangat jauh berbeda. Scala mencoba untuk Fuse dua paradigma menjadi satu (kita menyebutnya paradigma objek-fungsional), sedangkan F # menyediakan dua paradigma berdampingan. Misalnya, tipe data aljabar dalam F # adalah konstruksi fungsional murni tanpa OO'ness di dalamnya sedangkan ADT dalam Scala masih kelas dan objek biasa. (Catatan: Dalam proses kompilasi untuk bytecode CLR, bahkan F # ADT menjadi kelas dan objek tetapi mereka tidak terlihat oleh programmer F # di tingkat sumber.)

  • F # memiliki inferensi tipe gaya Hindley-Milner penuh. Scala memiliki inferensi tipe parsial. Dukungan untuk subtyping dan murni-OO-ness membuat inferensi tipe gaya Hindley-Milner tidak mungkin untuk Scala.

  • Scala adalah bahasa yang jauh lebih minimalis daripada F #. Scala memiliki konstruksi ortogonal yang sangat kecil yang digunakan kembali di seluruh bahasa. F # tampaknya memperkenalkan sintaks baru untuk setiap hal kecil, sehingga menjadi sintaks yang sangat berat dibandingkan dengan Scala. (Scala memiliki 40 kata kunci, sedangkan F # memiliki 97. Itu akan memberi tahu Anda sesuatu. :-)

  • F # menjadi bahasa Microsoft memiliki dukungan IDE yang sangat baik dalam bentuk Visual Studio. Hal-hal yang tidak begitu baik pada sisi Scala. Pengaya Eclipse masih belum hingga mencapai sasaran. Hal yang sama berlaku untuk plugin NetBeans. IDEA tampaknya menjadi taruhan terbaik Anda saat ini, meskipun itu bahkan tidak mendekati apa yang Anda dapatkan dengan Java IDE. (Untuk penggemar Emacs, ada ENSIME. Saya telah mendengar banyak hal baik tentang paket ini, tapi saya belum mencobanya.)

  • Scala memiliki sistem tipe yang jauh lebih kuat (dan kompleks) daripada F #.


Perbedaan Lain:

  • Fungsi-fungsi F # diatur secara default. Dalam Scala, kari tersedia tetapi tidak sering digunakan.

  • Sintaksis Scala adalah campuran dari bahasa Jawa, ML Standar, Haskell, Erlang, dan banyak bahasa lainnya. Sintaks F # terinspirasi oleh orang-orang dari OCaml, C #, dan Haskell.

  • Scala mendukung jenis dan jenis kacamata yang lebih tinggi. F # tidak.

  • Scala jauh lebih bisa menerima DSL daripada F #.


PS: Saya suka keduanya Scala dan F #, dan berharap mereka menjadi bahasa utama platform masing-masing di masa depan. :-)

61
missingfaktor
  • F # diselesaikan pada aspek fungsional sedangkan scala didasarkan pada aspek berorientasi objek.
  • F # memiliki IDE lebih baik dengan Visual studio sementara Scala's Eclipse plug-in adalah untuk open source IDE dan relatif lebih lambat.
  • F #, karena lebih mirip-ML daripada Scala, memiliki lebih sedikit kalkulus lambda-y terasa seperti OCaml, Standar ML, dan Skema miliki. F # tampaknya menjadi bahasa yang jauh lebih sederhana.
9
Ayush Goyal

Satu poin kecil tapi penting adalah lisensi: Scala adalah BSD (cukup banyak lisensi perangkat lunak bebas yang paling permisif), F # dulu adalah "perjanjian lisensi Microsoft Research Shared Source" tetapi merupakan iklan produk saat ini (menurut @ Lorenzo di bawah, meskipun saya tidak dapat menemukan perjanjian lisensi yang lebih spesifik di mana pun).

0
Joonas Pulakka