Wybór systemu operacyjnego do programowania funkcjonalnego [zamknięty]

9

Jestem głównie programistą .NET, więc normalnie używam Windows / VisualStudio (co oznacza: jestem zepsuty), ale w wolnym czasie lubię Haskell i inne (głównie funkcjonalne) języki.

Teraz w przypadku Haskell obsługa okien jest w porządku (możesz dostać platformę Haskell), ale latley próbowałem skonfigurować podstawowe środowisko Clojure / Scheme i to po prostu boli dla systemu Windows.

Zastanawiam się więc nad wypróbowaniem innego systemu operacyjnego, aby uzyskać lepszą obsługę i obsługę języków. Oczywiście pozostawia mnie to w systemie MacOS lub dystrybucji Linuksa.

Nigdy wcześniej nie korzystałem z MacOS i oczywiście Linux byłby tańszy (darmowy) i nie sądzę, że mogę równolegle uruchamiać MacOS na twoim normalnym sprzęcie komputerowym (prawda?). PLUS: Nie mam pojęcia o narzędziach, których można użyć na tych (dla mnie) forign OS.

Krótko mówiąc: chcę poznać więcej Haskell, Clojure, Scala, Scheme i oczywiście potrzebuję co najmniej dobrego oprzyrządowania dla JavaScript / HTML5 / Css. Obsługa .NET / Mono / F # byłaby świetna, ale do tego nadal będę mieć rozruch z Win7.

Więc chcę wiedzieć: - jaki jest twój preferowany system operacyjny, Dystrybucja (czy Ubuntu jest wykonalny?) - jakiego edytora / IDE używasz

Dziękuję za pomoc!

PS: Nie jestem pewien, czy jest to właściwe miejsce na to pytanie, ale na pewno mam taką nadzieję - jeśli nie, daj mi znać, gdzie mam to przenieść (StackOverflow nie wydaje się być właściwym miejscem IMHO)

Carsten
źródło
W systemie Windows wszystko jest bardzo uciążliwe, chyba że zainstalujesz Cygwin. Po uzyskaniu Cygwin nie będzie żadnych zachęt, aby przenieść się gdziekolwiek z systemu Windows.
SK-logic
8
@ Sk-logic: Cygwin sprawia, że ​​korzystanie z systemu Windows jest nieco mniej bolesne, ale w końcu ktoś może chcieć mieć coś prawdziwego i przejść na system operacyjny podobny do Uniksa. ;-)
Giorgio
2
@vartec: Nie sądzę, że jest to duplikat: to pytanie dotyczy konkretnie używania funkcjonalnych języków programowania.
Giorgio
3
Zacznij od dobrego linuksa, takiego jak Fedora, Mint lub Ubuntu, zanim zdejmiesz obciążenie komputera Mac.
Przypon

Odpowiedzi:

4

Trasa, którą obecnie wybieram do eksperymentowania z takimi językami i innymi rzeczami, z wielkim sukcesem i łatwością użycia:

  • zainstaluj Debiana na maszynie wirtualnej VirtualBox, działającej na hoście Windows
  • zachowaj cały mój kod na hoście lub współużytkowanym dysku sieciowym, edytuj na hoście za pomocą ulubionego edytora (wciąż niezdecydowany między Notepad ++ a SublimeText; dla C ++ po prostu używam VS)
  • udostępnij katalog na hoście, zamontuj go na maszynie wirtualnej
  • skompiluj / uruchom kod na maszynie wirtualnej (możesz nawet ssh do niego za pomocą cygwin)

W ten sposób zyskujesz zalety obu systemów operacyjnych.

stijn
źródło
hmm ... ciekawe - ale myślę, że wykonuję głębokie nurkowanie i instaluję Ubunto równolegle na moim laptopie (to jeszcze nie zagrozi mojej maszynie roboczej)
Carsten
1
Na moim laptopie od wieków korzystam z podwójnego systemu Windows - Linux i nigdy nie miałem z tym problemu. Z drugiej strony na pulpicie nie instalowałem systemu Windows przez ostatnie 10 lat. O ile nie potrzebuję określonego oprogramowania, które jest dostępne tylko dla systemu Windows (np. Gry wideo lub oprogramowanie interfejsu telefonu komórkowego), tak naprawdę nie tęsknię za systemem Windows. Konkluzja: Po zapoznaniu się z odpowiednimi narzędziami możesz wykonać wszystkie (funkcjonalne) programy w systemie Linux.
Giorgio
Rzeczywiście wypróbowałem to dzisiaj na moim komputerze - Ubuntu w maszynie wirtualnej VirtualBox - dałem mu 30 GB na moim dysku SSD i 4 GB pamięci RAM wraz z dwoma rdzeniami - działa płynnie z kilkoma próbami (i maszyna wirtualna jest naprawdę świetna z niewiarygodnym zmienianiem rozmiaru okien i wszystkimi innymi to) - teraz to będzie tak, jak spróbować ubuntu na razie - może zainstalować podwójny rozruch na moim laptopie, ale później z dwoma monitorami to jest wielki - Dziękuję, Oznaczony jako odpowiedź to
Carsten
18

Krótka odpowiedź: Istnieje proste rozwiązanie twojego problemu. Wystarczy zainstalować maszynę wirtualną z systemem Linux (Ubuntu) - jest bezpłatna.

Jestem również głównie programistą .NET, który uwielbia eksperymentować z różnymi rzeczami lub wypróbować różne frameworki i / lub narzędzia programistyczne. Najważniejszą rzeczą nie jest tu bałagan głównym środowisko programistyczne. Tak więc instalowanie wszystkiego na maszynie wirtualnej (natywny system operacyjny, frameworki, ich konfigurowanie i konfigurowanie itp.) Dla rodzaju rozwoju, jaki zamierzałeś wykonać, jest najbardziej logicznym i optymalnym sposobem.

Edycja: możesz rozważyć inne rozwiązanie wirtualizacji do zbudowania maszyny wirtualnej. Moje osobiste preferencje dotyczą VirtualBox . Jest to bezpłatne rozwiązanie do wirtualizacji x86, które pozwala na uruchomienie szerokiej gamy systemów operacyjnych x86, takich jak Windows, DOS, BSD lub Linux na systemie Linux.

Jusubow
źródło
2
Główną zaletą tego podejścia jest możliwość wykonania migawki środowiska programistycznego, do której można przywrócić później. możesz również udostępnić środowisko env zainteresowanym współpracownikom
Arthur Ulfeldt,
jaką maszynę wirtualną sugerujesz?
Carsten,
1
Wcześniej korzystałem z VMware, teraz wolę VirtualBox - bez kłopotów.
Yusubov
12

Używam Haskell i Scali (a także wykonuję Scheme, Common Lisp, SML, OCaml, Erlang) wszystko pod Linuksem (Ubuntu).

Wszystkie powyższe języki (kompilatory i interpretatory) można zainstalować dość łatwo (istnieją pakiety, które można zainstalować za pomocą apt-get lub innego systemu zarządzania pakietami).

Scala ma dobrą integrację z Eclipse, a wtyczki Scala są aktywnie rozwijane. Jeśli chcesz dowiedzieć się więcej, w kursie Coursera działa kurs Scala, który wyjaśnia, jak używać Scali w systemach Windows, Linux i Mac. Być może nie masz wszystkich funkcji i integracji Visual Studio, ale opracowałem dość duże projekty w Eclipse i działa dobrze.

Do edycji Haskell (i innych języków wymienionych powyżej) używam gvim, co jest odpowiednie dla małych projektów. Możesz użyć innego edytora (np. EMACS), pod warunkiem, że ma podświetlanie składni dla Haskell. W przeciwnym razie możesz zajrzeć na haskellwiki (dzięki Zach L za sugestię).

Do zarządzania kodem źródłowym (wersjonowanie) używam SVN przez Eclipse dla wszystkich tych języków.

Giorgio
źródło
dziękuję - nie zrobiłem jeszcze żadnego projektu haskell na dużą skalę (do tej pory) i do tej pory wykonałem za to Notepadd ++ (sic!) - może powinienem zajrzeć do VIM / EMACS, ale może to być trudniejsze do nauczenia się niż dziura w innym systemie operacyjnym ... tak, rozpieszczają mnie IDE (już o tym wspominałem - prawda?)
Carsten
Na HaskellWiki znajduje się kilka IDE firmy Haskell .
Zach L
2
Do edycji kodu Scala możesz użyć Eclipse. Istnieje również wtyczka Eclipse do arkusza roboczego Scala, która umożliwia edycję i testowanie fragmentów kodu w locie. VIM (i EMACS) trochę się przyzwyczajają, ale są bardzo potężne. Nie uczyłem się żadnego z nich tylko do edycji plików Haskell. Nauczyłem się VIM jako edytor ogólnego zastosowania.
Giorgio
@Zach L: Dzięki za link. Mogę dodać to do odpowiedzi, jeśli dasz mi na to zgodę. Wypróbowałem Leksah kilka miesięcy temu, ale o ile pamiętam, nie był jeszcze użyteczny. Do tej pory nie wypróbowałem żadnych innych narzędzi Haskell.
Giorgio
@Giorgio Pewnie, że możesz to dodać!
Zach L
10

MacOS wymaga sprzętu Mac lub możesz go uruchomić na VirtualBox, ale ostatnim razem próbowałem, że to nie działa. A ponieważ nie chcesz zastępować obecnych problemów konfiguracyjnych / konfiguracyjnych innymi problemami, sugeruję, abyś wydał dużo pieniędzy lub wypróbował system Linux. Użyłem Ubuntu do programowania Haskell, Scala i Lisp w Eclipse, Netbeans, IntelliJ i Emacs i nie miałem większych problemów z ich konfiguracją.

Kim
źródło
dziękuję - Ubuntu wygląda bardzo obiecująco ze względu na (pozornie) łatwą instalację na Windowsie ... to dawno naprawdę użyłem Linuksa - myślę, że dam mu szansę - IntelliJ jest produktem komercyjnym, prawda?
Carsten
@ CarstenKönig Tak, jest to produkt komercyjny, jednak uważam, że możesz uzyskać bezpłatne licencje, jeśli zamierzasz używać go w klasie lub użyć go do utrzymania projektu open source (i może to udowodnić).
Daniel B
1
@ CarstenKönig IntelliJ ma (bezpłatną) edycję społeczności .
yannis
wtyczka scala dla IntelliJ jest również bezpłatna, ale nadal polecam Eclipse.
Kim
IntelliJ, pochodzący z Visual Studio, będzie o wiele bardziej znanym środowiskiem do pracy. Wygląda jak odcięta wersja VS; podczas gdy interfejsy / przepływ pracy Eclipse i VS są bardzo różne.
Dan Is Fiddling By Firelight
5

Wszystkie systemy uniksopodobne mają bardzo dobre narzędzia wiersza poleceń . Osobiście miałem dobre doświadczenia z Ubuntu zarówno w zakresie programowania, jak i wdrażania, wielu moich znajomych również przysięga na MacOS. Nie widziałem oczywistego powodu, aby preferować jedno lub drugie, wszystkie są IMO lepsze niż Windows do pracy w wierszu poleceń.

Po stronie Clojure / Scala może okazać się, że Windows jest całkiem dobry, jeśli używasz jednego z IDE Java z odpowiednią wtyczką Clojure / Java. Osobiście używam Eclipse z Counterclockwise jako mojego głównego środowiska programistycznego Clojure w Windows 7. Jest też Scala IDE do sprawdzenia. Jest to dobre podejście, jeśli lubisz w pełni wyposażone IDE i / lub chcesz programować w poliglocie w tym samym środowisku. Dodatkowym plusem korzystania z czegoś takiego jak Eclipse jest to, że integracja git / svn / maven jest bardzo dobra.

mikera
źródło
3

Chociaż jestem wielkim fanem komputerów Mac i Linux, nie ma powodu, dla którego nie można używać żadnego z tych języków w systemie Windows. Również jeśli chcesz funkcjonalny język w systemie Windows, nie pomijaj F #, który jest językiem .net

Zachary K.
źródło
4
F # jest jednym z moich głównych języków (drugi to C #): D
Carsten
Jeszcze się tego nie nauczyłem, ale wygląda na całkiem niezły język. Obecnie spędzam większość czasu w Erlangu
Zachary K
2
F # jest IMHO najlepszym językiem w ekosystemie .net, brakuje mu tylko trochę miłości do narzędzi (brak refaktoryzacji, prawie nieistniejąca obsługa rozwiązań (na przykład brak podfolderów po wyjęciu z pudełka)) - możesz myśleć o tym jak o niektórych haskell / Ocaml / C # hyprid
Carsten
Tak słyszałem. Mam wrażenie, że F # to sposób Microsoftu na pobieranie fajnych pomysłów od Haskella i przenoszenie ich do świata .net
Zachary K
@Carsten König: Nie znam F #, ale o ile wiem, pochodzi głównie z Ocaml.
Giorgio
3

Korzystałem z Haskell na Windows, OS X i (Ubuntu) Linux, więc mogę o tym powiedzieć kilka uwag. Teraz wszystko, co można uzyskać z platformy Haskell, prawdopodobnie będzie dobrze działać bez względu na wszystko, ale potem:

  • Stosunkowo niewielu programistów Haskell używa systemu Windows. W Hackage znajdziesz rzeczy, które zakładają środowisko uniksowe, nie mówiąc o tym wprost.

  • Wiele użytecznych rzeczy pochodzi z powiązań FFI z bibliotekami C, a brak nawet niejasno spójnego i niezawodnego łańcucha narzędzi do kompilacji C w systemie Windows oznacza, że ​​z mojego doświadczenia, instalowanie powiązań FFI z hakowania jest w najlepszym wypadku bzdurą.

  • Wszystko, co niekoniecznie jest specyficzne dla platformy, co w dość zabawny sposób obejmuje biblioteki GUI między platformami, z większym prawdopodobieństwem „po prostu działa” w systemie Linux.

  • Cygwin nie pomaga tak bardzo, jak myślisz.

Podsumowując: wszystko działa na Linuksie, większość rzeczy działa na OS X, ale kilka rzeczy jest dziwnych, a na Windowsie powinieneś spodziewać się wielu interesujących problemów podczas korzystania z bibliotek.

Jeśli chcesz po prostu dobrze się bawić, eksperymentując z rzeczami i ucząc się Haskell, zrób sobie przysługę i użyj maszyny Wirtualnej Ubuntu lub czegoś takiego.

O ile edytory i takie go - emacs i vim są popularne jak zawsze. Nigdy nie nauczyłem się korzystać z nich (choć naprawdę powinienem ...) i nie dbam o większość IDE, więc ogólnie trzymam się SciTE - jest to cienkie opakowanie wokół widgetu edytora o nazwie Scintilla, które możesz znać jako Używa Notepad ++.

CA McCann
źródło
1

Zamiast wybierać system operacyjny, przyjdę do tego z punktu widzenia IDE. Jeśli jesteś zainteresowany Schematem, zachęcam do wypróbowania DrRacket, który wyłonił się z dżungli Scheme kilka lat temu. IDE działa dobrze w systemach Windows, OS X i Linux.

Teraz wystarczy wybrać odpowiedni system operacyjny, aby uruchomić wszystkie pozostałe języki funkcjonalne.

John Clements
źródło
dziękuję - dowiedziałem się wczoraj o Rakecie - nie miałem wiele czasu, żeby się tym zająć, ale IDE / Lang. wygląda dla mnie interesująco - chociaż nie mogę powiedzieć, czy jest to naprawdę opłacalne dla „prawdziwego” rozwoju aplikacji.
Carsten
0

Simon Peyton-Jones, jeden z twórców Haskell, jest użytkownikiem systemu Windows i z tego, co zbieram, Haskell ma doskonałą obsługę systemu Windows.

Twoje pytanie jest trochę niejasne, szczerze mówiąc, wybór systemu operacyjnego nie jest związany z paradygmatem języka, którego używasz.

Osobiście uważam, że poza światem C # i Java (gdzie środowisko programistyczne jest podyktowane przez twoje IDE), środowisko programistyczne powinno zawsze być smakiem Uniksa, czy to BSD, Linux czy OSX.

djhworld
źródło