Pilihan OS untuk pengembangan fungsional [tertutup]

9

Saya terutama pengembang NET. Jadi saya biasanya menggunakan Windows / VisualStudio (itu berarti: saya manja) tapi saya menikmati Haskell dan bahasa lainnya (sebagian besar fungsional) di waktu luang saya.

Sekarang untuk Haskell dukungan windows ok (Anda bisa mendapatkan Haskell-Platform) tetapi latley saya mencoba untuk mendapatkan pengaturan dasar Clojure / Skema lingkungan dan itu hanya menyakitkan di windows.

Jadi saya berpikir tentang mencoba OS lain untuk tooling yang lebih baik dan dukungan bahasa. Tentu saja itu membuat saya dengan MacOS atau beberapa distribusi Linux.

Saya tidak pernah menggunakan MacOS sebelumnya dan tentu saja Linux akan lebih murah (gratis) dan saya rasa saya tidak bisa mem-boot MacOS secara paralel pada PC-Hardware normal Anda (bukan?). PLUS: Saya tidak memiliki petunjuk tentang alat yang dapat Anda gunakan pada OS lama (bagi saya).

Singkatnya: Saya ingin menjelajahi lebih banyak Haskell, Clojure, Scala, Skema dan tentu saja membutuhkan setidaknya perkakas yang baik untuk JavaScript / HTML5 / Css. Dukungan untuk .NET / Mono / F # akan menjadi besar tetapi untuk ini saya masih akan memiliki boot Win7 saya.

Jadi saya ingin tahu: - apa OS pilihan Anda, Distribusi (apakah Ubuntu layak?) - Editor / IDE apa yang Anda gunakan

Terima kasih untuk bantuannya!

PS: Saya tidak yakin apakah ini tempat yang tepat untuk pertanyaan ini tetapi saya tentu berharap begitu - jika tidak tolong beri tahu saya di mana saya harus memindahkan ini (StackOverflow sepertinya bukan tempat yang tepat IMHO)

Carsten
sumber
Semuanya sangat merepotkan di Windows kecuali Anda menginstal Cygwin. Setelah mendapatkan Cygwin, tidak akan ada insentif untuk pindah dari Windows.
SK-logic
8
@ Sk-logic: Cygwin membuat menggunakan Windows sedikit lebih menyakitkan, tetapi akhirnya orang mungkin ingin memiliki hal yang nyata dan pindah ke beberapa OS mirip Unix. ;-)
Giorgio
2
@ vartec: Saya rasa ini bukan duplikat: pertanyaan ini menanyakan secara khusus tentang penggunaan bahasa pemrograman fungsional.
Giorgio
3
Mulailah dengan linux yang bagus seperti Fedora, Mint, atau Ubuntu sebelum meniupkan beban Anda pada Mac.
Rig

Jawaban:

4

Rute yang saya gunakan saat ini untuk bereksperimen dengan bahasa-bahasa seperti itu dan hal-hal lain, dengan kesuksesan besar dan kemudahan penggunaan:

  • instal Debian di bawah VirtualBox VM, berjalan pada host Windows
  • simpan semua kode saya di host atau di drive jaringan bersama, edit di host menggunakan editor favorit (masih ragu-ragu antara Notepad ++ dan SublimeText; untuk C ++ saya hanya menggunakan VS)
  • berbagi direktori di host, pasang di VM
  • kompilasi / jalankan kode dalam VM (atau Anda bahkan bisa ssh menggunakan cygwin)

Dengan cara ini Anda mendapatkan pro dari kedua sistem operasi.

stijn
sumber
hmm ... menarik - tapi saya pikir saya melakukan deep-dive dan menginstal paralel Ubunto pada laptop-saya yang sedang bermain-main (tidak akan membahayakan mesin kerja saya - belum)
Carsten
1
Di laptop pribadi saya, saya telah menggunakan dual boot Windows - Linux sejak lama dan tidak pernah memiliki masalah dengannya. Di sisi lain, di desktop saya, saya belum menginstal Windows selama 10 tahun terakhir. Kecuali saya memerlukan beberapa perangkat lunak khusus yang hanya tersedia untuk Windows (misalnya video game atau perangkat lunak antarmuka ponsel) saya benar-benar tidak ketinggalan Windows. Intinya: Anda dapat melakukan semua pemrograman (fungsional) yang Anda butuhkan di Linux setelah Anda terbiasa dengan alat yang tepat.
Giorgio
Saya memang mencoba ini di desktop saya hari ini - Ubuntu di VirtualBox VM - memberikannya 30GB pada SSD dan 4GB Ram bersama dengan dua Core - berjalan dengan beberapa hal yang saya coba (dan VM benar-benar hebat dengan mengubah ukuran windows dan semua itu) - untuk sekarang ini akan menjadi cara saya mencoba ubuntu untuk sekarang - mungkin saya menginstal dual-boot di laptop saya nanti tetapi dengan dual-monitor ini hebat - Terima kasih, mengibarkan ini sebagai jawaban
Carsten
18

Jawaban Singkat: Ada solusi sederhana untuk masalah Anda. Cukup instal mesin virtual dengan Linux (Ubuntu) - gratis.

Saya juga terutama pengembang .NET yang suka bereksperimen dengan berbagai hal, atau mencoba berbagai kerangka kerja dan / atau alat pengembangan. Hal utama di sini adalah tidak mengacaukan lingkungan pengembangan utama Anda. Dengan demikian, menginstal segala sesuatu dalam mesin Virtual (OS asli, kerangka kerja, mengkonfigurasi dan mengaturnya, dll.) Untuk jenis pengembangan yang Anda maksudkan adalah cara yang paling logis dan optimal untuk dilakukan.

Sunting: Anda dapat mempertimbangkan solusi virtualisasi yang berbeda untuk membangun Mesin Virtual Anda. Preferensi pribadi saya menggunakan VirtualBox . Ini adalah solusi virtualisasi x86 gratis yang memungkinkan berbagai sistem operasi x86 seperti Windows, DOS, BSD atau Linux untuk berjalan pada sistem Linux.

Yusubov
sumber
2
kemampuan untuk membuat snapshot dari lingkungan pengembangan Anda yang dapat Anda kembalikan nanti adalah keuntungan utama dari pendekatan ini. Anda juga dapat berbagi pengembangan dengan rekan
Arthur Ulfeldt
VM apa yang Anda sarankan?
Carsten
1
Sebelumnya saya menggunakan VMware, sekarang saya lebih suka VirtualBox - lebih mudah untuk berurusan dengan.
Yusubov
12

Saya menggunakan Haskell dan Scala (dan juga melakukan beberapa Skema, Common Lisp, SML, OCaml, Erlang) semuanya di Linux (Ubuntu).

Semua bahasa di atas (kompiler dan juru bahasa) dapat diinstal dengan cukup mudah (ada paket yang dapat diinstal menggunakan apt-get atau sistem manajemen paket lainnya).

Scala memiliki integrasi yang baik dengan Eclipse dan plugin Scala dikembangkan secara aktif. Jika Anda ingin mempelajari lebih lanjut, ada kursus tentang Scala yang sedang berjalan di Coursera yang menjelaskan cara menggunakan Scala di Windows, Linux, dan Mac. Mungkin Anda tidak memiliki semua fitur dan integrasi Visual Studio, tetapi saya telah mengembangkan proyek yang cukup besar di Eclipse dan berfungsi dengan baik.

Untuk mengedit Haskell (dan bahasa lain yang tercantum di atas) saya menggunakan gvim yang OK untuk proyek kecil. Anda dapat menggunakan editor lain (misalnya EMACS), asalkan memiliki highlight sintaks untuk Haskell. Jika tidak, Anda dapat melihat haskellwiki (terima kasih kepada Zach L untuk sarannya).

Untuk mengelola kode sumber (versi) saya menggunakan SVN melalui Eclipse untuk semua bahasa ini.

Giorgio
sumber
terima kasih - saya tidak melakukan proyek haskell skala besar (belum) dan sampai sekarang Notepadd ++ (sic!) melakukan pekerjaan untuk saya - mungkin saya harus melihat ke VIM / EMACS tetapi ini mungkin berakhir karena lebih sulit untuk belajar maka lubang hal OS lainnya ... ya aku dimanjakan oleh IDE (sudah disebutkan ini - bukan?)
Carsten
Ada beberapa Haskell IDE yang terdaftar di HaskellWiki .
Zach L
2
Untuk mengedit kode Scala, Anda dapat menggunakan Eclipse. Ada juga plugin Scala worksheet Eclipse yang memungkinkan Anda untuk mengedit dan menguji potongan kode dengan cepat. VIM (dan EMACS) perlu membiasakan diri tetapi sangat kuat. Saya tidak akan belajar salah satu dari mereka hanya untuk mengedit file Haskell. Saya telah belajar VIM sebagai editor untuk keperluan umum.
Giorgio
@ Zak L: Terima kasih atas tautannya. Saya dapat menambahkannya ke jawaban jika Anda memberi saya izin. Saya telah mencoba Leksah beberapa bulan yang lalu tetapi sejauh yang saya ingat itu belum dapat digunakan. Sejauh ini saya belum mencoba alat Haskell lainnya.
Giorgio
@Giorgio Tentu Anda bisa menambahkannya!
Zach L
10

MacOS memerlukan perangkat keras Mac atau Anda mungkin menjalankannya di VirtualBox, tetapi terakhir kali saya mencoba itu tidak berfungsi. Dan karena Anda tidak ingin mengganti masalah konfigurasi / pengaturan Anda saat ini dengan masalah lain, saya sarankan Anda menghabiskan banyak uang atau mencoba linux. Saya telah menggunakan Ubuntu untuk pengembangan Haskell, Scala dan Lisp dengan Eclipse, Netbeans, IntelliJ, dan Emacs, dan saya tidak mengalami banyak kesulitan dalam mengaturnya.

Kim
sumber
terima kasih - Ubuntu terlihat sangat menjanjikan karena itu (tampaknya) instal mudah di atas windows ... sudah lama saya benar-benar menggunakan linux - saya pikir saya akan mencobanya - IntelliJ adalah produk komersial kan?
Carsten
@ CarstenKönig Ya, ini adalah produk komersial, namun saya yakin Anda bisa mendapatkan lisensi gratis jika Anda bermaksud menggunakannya di ruang kelas, atau menggunakannya untuk memelihara proyek open source (dan dapat membuktikannya).
Daniel B
1
@ CarstenKönig IntelliJ memiliki edisi komunitas (gratis) .
yannis
plugin scala untuk IntelliJ juga gratis, tetapi saya masih akan merekomendasikan Eclipse.
Kim
Berasal dari Visual Studio, IntelliJ akan menjadi lingkungan yang lebih akrab untuk bekerja. Rasanya seperti versi VS yang dikurangi; sedangkan antarmuka / alur kerja Eclipse dan VS sangat berbeda.
Dan Is Fiddling By Firelight
5

Semua OS yang mirip Unix memiliki perkakas baris perintah yang sangat baik . Saya secara pribadi memiliki pengalaman yang baik dengan Ubuntu untuk pengembangan dan penyebaran, banyak teman saya juga bersumpah dengan MacOS. Saya belum melihat alasan yang jelas untuk memilih satu atau yang lain, mereka semua IMO lebih baik daripada Windows untuk pekerjaan baris perintah.

Di sisi Clojure / Scala secara khusus, Anda mungkin menemukan Windows sebenarnya cukup bagus jika Anda menggunakan salah satu IDE Java dengan plugin Clojure / Java yang sesuai. Saya pribadi menggunakan Eclipse dengan berlawanan arah jarum jam sebagai lingkungan pengembangan Clojure utama saya di Windows 7. Ada juga Scala IDE untuk memeriksa. Ini adalah pendekatan yang baik jika Anda suka IDE berfitur lengkap dan / atau ingin melakukan pemrograman polyglot di lingkungan yang sama. Kelebihan tambahan menggunakan sesuatu seperti Eclipse adalah bahwa integrasi git / svn / maven sangat baik.

mikera
sumber
3

Sementara saya penggemar mac dan linux yang besar, tidak ada alasan Anda tidak bisa melakukan bahasa-bahasa tersebut di windows. Juga jika Anda ingin bahasa fungsional di windows jangan mengabaikan F # yang merupakan bahasa .net

Zachary K
sumber
4
F # adalah salah satu bahasa utama saya (yang lain seperti C #): D
Carsten
Saya belum mempelajarinya, tetapi sepertinya bahasa yang cukup bagus. Saya menghabiskan sebagian besar waktu saya di Erlang hari ini
Zachary K
2
F # adalah IMHO bahasa terbaik di .net eco-system, hanya kurang memiliki beberapa cinta alat (tidak ada refactoring, hampir tidak ada solusi-dukungan (misalnya tidak ada subfolder di luar kotak)) - Anda dapat menganggapnya sebagai beberapa haskell / Ocaml / C # hyprid
Carsten
Itu yang saya dengar. Saya mendapat kesan bahwa F # adalah cara Microsoft untuk mengambil ide-ide keren dari Haskell dan memindahkannya ke dunia .net
Zachary K
@ Karsten König: Saya tidak tahu F # tetapi sejauh yang saya tahu sebagian besar berasal dari Ocaml.
Giorgio
3

Saya telah menggunakan Haskell di Windows, OS X, dan (Ubuntu) Linux, jadi saya bisa memberikan beberapa komentar tentang itu. Sekarang, apa pun yang Anda dapatkan dari Platform Haskell mungkin akan berfungsi dengan baik apa pun yang terjadi, tetapi setelah itu:

  • Relatif sedikit programmer Haskell menggunakan Windows. Anda akan menemukan hal-hal di Hackage yang menganggap lingkungan seperti unix tanpa benar-benar menyatakannya secara eksplisit.

  • Banyak hal yang bermanfaat datang dari binding FFI ke perpustakaan C, dan kurangnya toolchain kompilasi C yang bahkan secara konsisten dan andal pada Windows berarti bahwa, dalam pengalaman saya, menginstal binding FFI dari hackage adalah omong kosong yang paling baik.

  • Apa pun yang pasti berbasis platform, yang cukup mencengangkan termasuk pustaka GUI lintas-platform, lebih mungkin untuk "hanya bekerja" di Linux.

  • Cygwin tidak membantu sebanyak yang Anda pikirkan.

Singkatnya: Semuanya cenderung bekerja di Linux, sebagian besar bekerja pada OS X tetapi beberapa hal aneh, dan pada Windows Anda harus berharap untuk menghadapi banyak sakit kepala yang menarik saat menggunakan perpustakaan.

Jika Anda hanya ingin bersenang-senang bereksperimen dengan hal-hal dan belajar Haskell, bantulah diri Anda sendiri dan gunakan VM Ubuntu atau sesuatu.

Sejauh editor dan go - emacs dan vim seperti itu populer seperti biasa. Saya tidak pernah belajar menggunakan salah satu (meskipun saya benar-benar harus ...) dan tidak peduli untuk sebagian besar IDE, jadi saya biasanya tetap dengan SciTE - ini adalah pembungkus tipis di sekitar widget editor yang disebut Scintilla, yang mungkin Anda ketahui sebagai apa Notepad ++ menggunakan.

CA McCann
sumber
1

Daripada memilih OS, izinkan saya datang pada ini dari sudut IDE. Jika Anda tertarik dengan Skema, saya mendorong Anda untuk mencoba DrRacket, yang muncul dari hutan Skema beberapa tahun yang lalu. IDE berjalan dengan baik di Windows, OS X, dan Linux.

Sekarang, Anda hanya perlu memilih OS yang tepat untuk menjalankan semua bahasa fungsional Anda yang lain .

John Clements
sumber
terima kasih - Saya baru tahu tentang Racket kemarin - tidak punya banyak waktu untuk memeriksanya kecuali IDE / Lang. terlihat menarik bagi saya - meskipun saya tidak bisa mengatakan apakah itu benar-benar layak untuk pengembangan aplikasi "nyata".
Carsten
0

Simon Peyton-Jones, salah satu pencipta Haskell adalah pengguna Windows dan dari apa yang saya kumpulkan, Haskell memiliki dukungan windows yang luar biasa.

Pertanyaan Anda agak kabur untuk jujur, pilihan OS Anda tidak terkait dengan paradigma bahasa yang Anda gunakan.

Secara pribadi saya percaya bahwa di luar dunia C # dan Java (di mana lingkungan pengembangan ditentukan oleh IDE Anda), lingkungan pengembangan harus selalu menjadi cita rasa Unix, apakah itu BSD, Linux atau OSX.

djhworld
sumber