Scelta del sistema operativo per lo sviluppo funzionale [chiuso]


9

Sono principalmente uno sviluppatore .NET, quindi di solito uso Windows / VisualStudio (ciò significa: sono viziato) ma mi sto godendo Haskell e altri linguaggi (principalmente funzionali) nel mio tempo libero.

Ora per Haskell il supporto di Windows è ok (puoi ottenere la piattaforma Haskell) ma latley ho provato a configurare un ambiente Clojure / Scheme di base ed è solo una seccatura su Windows.

Quindi sto pensando di provare un altro sistema operativo per una migliore strumentazione e supporto languido. Naturalmente questo mi lascia con MacOS o qualche distribuzione Linux.

Non avevo mai usato MacOS prima e ovviamente Linux sarebbe stato più economico (gratuito) e non credo di poter avviare MacOS in parallelo sul tuo normale PC-Hardware (puoi?). PLUS: Non ho la minima idea degli strumenti che puoi usare su quei (per me) forign OS.

Per farla breve: voglio esplorare più Haskell, Clojure, Scala, Scheme e, naturalmente, ho bisogno di almeno buoni strumenti per JavaScript / HTML5 / Css. Il supporto per .NET / Mono / F # sarebbe fantastico ma per questo avrò ancora il mio avvio di Win7.

Quindi mi piace sapere: - qual è il tuo sistema operativo preferito, la distribuzione (Ubuntu è praticabile?) - quale editor / IDE stai usando

Grazie per l'aiuto!

PS: Non sono sicuro se questo è il posto giusto per questa domanda, ma sicuramente lo spero - in caso contrario fammi sapere dove dovrei spostarlo (StackOverflow non sembra essere il posto giusto IMHO)


In Windows tutto è molto doloroso se non installi Cygwin. Una volta che hai Cygwin, non ci saranno incentivi per spostarti da Windows.
SK-logic,

8
@ Sk-logic: Cygwin rende l'uso di Windows un po 'meno doloroso, ma alla fine uno potrebbe voler avere la cosa reale e passare a un sistema operativo simile a Unix. ;-)
Giorgio,


2
@vartec: Non penso che questo sia un duplicato: questa domanda si pone specificamente sull'uso dei linguaggi di programmazione funzionale.
Giorgio,

3
Inizia con un buon Linux come Fedora, Mint o Ubuntu prima di scaricare il tuo carico su un Mac.
Rig

Risposte:


4

Il percorso che sto attualmente prendendo per sperimentare tali lingue e altre cose, con grande successo e facilità d'uso:

  • installa Debian su una VM VirtualBox, in esecuzione su host Windows
  • mantieni tutto il mio codice sull'host o su un'unità di rete condivisa, modifica sull'host usando l'editor preferito (ancora indeciso tra Notepad ++ e SublimeText; per C ++ uso solo VS)
  • condividi la directory sull'host, montala nella VM
  • compila / esegui il codice nella VM (o potresti anche usarlo con cygwin)

In questo modo ottieni i vantaggi di entrambi i sistemi operativi.


hmm ... interessante - ma penso di fare il deep-dive e installare Ubunto parallelamente sul mio laptop toying (non metterà in pericolo la mia macchina da lavoro - ancora)
Carsten

1
Sul mio laptop personale ho usato Windows dual boot - Linux per anni e non ho mai avuto problemi. D'altra parte, sul mio desktop non ho installato Windows negli ultimi 10 anni. A meno che non mi serva un software specifico disponibile solo per Windows (ad es. Videogiochi o software di interfaccia per telefoni cellulari) in realtà non mi manca Windows. In conclusione: puoi eseguire tutta la programmazione (funzionale) di cui hai bisogno su Linux dopo aver acquisito familiarità con gli strumenti adeguati.
Giorgio,

Oggi ho davvero provato questo sul mio desktop - Ubuntu in una VM VirtualBox - gli ho dato 30 GB sul mio SSD e 4 GB di RAM insieme a due core - funziona perfettamente con le poche cose che ho provato (e la VM è davvero fantastica con il ridimensionamento delle finestre apparente e tutto quello) - per ora questo sarà il modo in cui proverò Ubuntu per ora - forse installerò un dual-boot sul mio laptop in seguito, ma con il doppio monitor questo è fantastico - Grazie, flaged questo come risposta
Carsten

18

Risposta breve: esiste una soluzione semplice al tuo problema. Installa la macchina virtuale con Linux (Ubuntu) : è gratuita.

Sono anche uno sviluppatore principalmente .NET che ama sperimentare cose diverse o provare una varietà di framework e / o strumenti di sviluppo. La cosa principale qui non è rovinare l'ambiente di sviluppo principale. Pertanto, installare tutto in una macchina virtuale (il sistema operativo nativo, i framework, configurarli e configurarli, ecc.) Per il tipo di sviluppo che intendevi fare è il modo più logico e ottimale di procedere.

Modifica: è possibile prendere in considerazione diverse soluzioni di virtualizzazione per creare la propria macchina virtuale. Le mie preferenze personali vanno con VirtualBox . È una soluzione di virtualizzazione x86 gratuita che consente di eseguire su un sistema Linux un'ampia gamma di sistemi operativi x86 come Windows, DOS, BSD o Linux.


2
la possibilità di creare un'istantanea del proprio ambiente di sviluppo che è possibile ripristinare in un secondo momento è un grande vantaggio di questo approccio. puoi anche condividere l'ambiente di sviluppo con i colleghi interessati
Arthur Ulfeldt,

quale VM suggerisci?
Carsten,

1
In precedenza utilizzavo VMware, ora preferisco VirtualBox, meno problemi da affrontare.
Yusubov,

12

Uso Haskell e Scala (e anche facendo alcuni Scheme, Common Lisp, SML, OCaml, Erlang) tutti sotto Linux (Ubuntu).

Tutte le lingue sopra (compilatori ed interpreti) possono essere installate abbastanza facilmente (ci sono pacchetti che possono essere installati usando apt-get o un altro sistema di gestione dei pacchetti).

Scala ha una buona integrazione con Eclipse e i plugin Scala sono attivamente sviluppati. Se vuoi saperne di più, c'è un corso su Scala attualmente in corso a Coursera che spiega come usare Scala su Windows, Linux e Mac. Forse non hai tutte le funzionalità e l'integrazione di Visual Studio, ma ho sviluppato progetti abbastanza grandi in Eclipse e funziona perfettamente.

Per l'editing di Haskell (e le altre lingue sopra elencate) uso gvim che è OK per piccoli progetti. Puoi utilizzare un altro editor (ad esempio EMACS), a condizione che abbia l'evidenziazione della sintassi per Haskell. Altrimenti, puoi dare un'occhiata a haskellwiki (grazie a Zach L per il suggerimento).

Per la gestione del codice sorgente (versioning) utilizzo SVN tramite Eclipse per tutte queste lingue.


grazie - non ho fatto alcun progetto haskell su larga scala (ancora) e finora Notepadd ++ (sic!) ha fatto il lavoro per me - forse dovrei esaminare VIM / EMACS ma questo potrebbe finire per essere più difficile da imparare rispetto al buco altro sistema operativo ... sì, sono viziato da IDE (già menzionato questo - non è vero?)
Carsten

Ci sono alcuni IDE di Haskell elencati su HaskellWiki .
Zach L,

2
Per modificare il codice Scala è possibile utilizzare Eclipse. Esiste anche un plugin Eclipse per il foglio di lavoro Scala che consente di modificare e testare parti di codice al volo. VIM (ed EMACS) richiedono un po 'di tempo per abituarsi ma sono molto potenti. Non imparerei nessuno dei due solo per modificare i file Haskell. Ho imparato VIM come editore generico.
Giorgio,

@Zach L: Grazie per il link. Posso aggiungerlo alla risposta se mi dai il permesso di farlo. Ho provato Leksah qualche mese fa, ma per quanto ricordo non era ancora utilizzabile. Finora non ho provato altri strumenti Haskell.
Giorgio,

@Giorgio Sicuro che puoi aggiungerlo!
Zach L,

10

MacOS richiede hardware Mac o potresti farlo funzionare su VirtualBox, ma l'ultima volta ho provato che non funzionava. E dal momento che non vuoi sostituire i tuoi attuali problemi di configurazione / installazione con altri problemi, ti suggerisco di spendere molti soldi o provare Linux. Ho usato Ubuntu per lo sviluppo di Haskell, Scala e Lisp con Eclipse, Netbeans, IntelliJ ed Emacs, e non ho avuto molti problemi a configurarli.


grazie - Ubuntu sembra molto promettente grazie alla sua (apparentemente) facile installazione su Windows ... è da molto tempo che uso davvero Linux - penso che ci proverò - IntelliJ è un prodotto commerciale giusto?
Carsten,

@ CarstenKönig Sì, è un prodotto commerciale, tuttavia credo che puoi ottenere licenze gratuite se intendi utilizzarlo in una classe o utilizzarlo per mantenere un progetto open source (e puoi provarlo).
Daniel B,

1
@ CarstenKönig IntelliJ ha un'edizione (gratuita) per la comunità .
yannis,

anche il plugin scala per IntelliJ è gratuito, ma consiglierei comunque Eclipse.
Kim,

Proveniente da Visual Studio, IntelliJ sarà un ambiente molto più familiare in cui lavorare. Sembra una versione ridotta di VS; mentre le interfacce / il flusso di lavoro di Eclipse e VS sono estremamente differenti.
Dan Fiddling By Firelight,

5

Tutti i sistemi operativi simili a Unix dispongono di ottimi strumenti da riga di comando . Personalmente ho avuto buone esperienze con Ubuntu sia per lo sviluppo che per la distribuzione, molti dei miei amici giurano anche su MacOS. Non ho visto un motivo ovvio per preferire l'uno o l'altro, sono tutti IMO migliori di Windows per il lavoro da riga di comando.

Sul lato Clojure / Scala in particolare, potresti trovare che Windows è in realtà abbastanza buono se usi uno degli IDE Java con il plug-in Clojure / Java appropriato. Personalmente uso Eclipse con antiorario come il mio principale ambiente di sviluppo Clojure in Windows 7. C'è anche Scala IDE da verificare. Questo è un buon approccio se ti piacciono gli IDE con funzionalità complete e / o vuoi fare la programmazione poliglotta nello stesso ambiente. Un ulteriore vantaggio dell'utilizzo di qualcosa come Eclipse è che l'integrazione git / svn / maven è molto buona.


3

Anche se sono un grande fan di Mac e Linux, non c'è motivo per cui non puoi usare nessuna di queste lingue su Windows. Inoltre, se vuoi un linguaggio funzionale su Windows, non trascurare F #, che è un linguaggio .net


4
F # è una delle mie lingue principali (l'altra è C #): D
Carsten

Non l'ho ancora imparato, ma sembra una lingua piuttosto carina. Trascorro la maggior parte del mio tempo a Erlang in questi giorni
Zachary K,

2
F # è IMHO il miglior linguaggio nell'ecosistema .net, manca solo un po 'di amore per gli strumenti (nessun refactoring, supporto di soluzione quasi inesistente (ad esempio nessuna sottocartella pronta all'uso)) - puoi pensarlo come un haskell / Ocaml / C # hyprid
Carsten

Questo è quello che ho sentito. Ho avuto l'impressione che F # sia il modo di Microsoft di prendere idee interessanti da Haskell e spostarle nel mondo .net
Zachary K,

@Carsten König: Non conosco F #, ma per quanto ne so deriva principalmente da Ocaml.
Giorgio,

3

Ho usato Haskell su Windows, OS X e (Ubuntu) Linux, quindi posso offrire alcune osservazioni al riguardo. Ora, qualsiasi cosa tu possa ottenere dalla piattaforma Haskell probabilmente funzionerà bene, non importa quale, ma dopo:

  • Relativamente pochi programmatori Haskell usano Windows. Troverai cose su Hackage che assumono un ambiente simile a unix senza dirlo esplicitamente.

  • Molta roba utile proviene dai collegamenti FFI alle librerie C e la mancanza di una toolchain di compilazione C anche vagamente coerente e affidabile su Windows significa che, nella mia esperienza, installare i collegamenti FFI dall'hackage è nella migliore delle ipotesi.

  • Tutto ciò che è necessariamente specifico della piattaforma, che include in modo abbastanza divertente librerie GUI multipiattaforma, è più probabile che "funzioni" su Linux.

  • Cygwin non aiuta tanto quanto pensi.

In sintesi: tutto tende a funzionare su Linux, la maggior parte delle cose funziona su OS X ma alcune cose sono strane e su Windows dovresti aspettarti di incontrare molti mal di testa interessanti quando usi le librerie.

Se vuoi solo divertirti a sperimentare cose e imparare Haskell, fatti un favore e usa una VM Ubuntu o qualcosa del genere.

Per quanto riguarda i redattori e simili, emacs e vim sono popolari come sempre. Non ho mai imparato a usare neanche (anche se dovrei davvero ...) e non mi interessa per la maggior parte degli IDE, quindi generalmente mi attengo a SciTE - è un involucro sottile attorno a un widget dell'editor chiamato Scintilla, che potresti sapere come Notepad ++ utilizza.


1

Invece di scegliere un sistema operativo, lasciatemi venire da questo punto di vista IDE. Se sei interessato a Scheme, ti incoraggio a provare DrRacket, che è emerso dalla giungla di Scheme qualche anno fa. L'IDE funziona bene su Windows, OS X e Linux.

Ora devi solo scegliere il sistema operativo giusto per eseguire tutte le altre lingue funzionali.


grazie - ho scoperto solo Racket ieri - non ho avuto molto tempo per esaminarlo ma l'IDE / Lang. mi sembra interessante, anche se non posso ancora dire se è davvero praticabile per lo sviluppo di app "reali".
Carsten,

0

Simon Peyton-Jones, uno dei creatori di Haskell è un utente di Windows e da quello che raccolgo, Haskell ha un eccellente supporto di Windows.

La tua domanda è un po 'vaga per essere onesti, la tua scelta del sistema operativo non è legata al paradigma della lingua che stai usando.

Personalmente credo che al di fuori del mondo C # e Java (dove l'ambiente di sviluppo è dettato dal tuo IDE), un ambiente di sviluppo dovrebbe sempre essere un sapore di Unix, che si tratti di BSD, Linux o OSX.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.