Betriebssystemauswahl für die Funktionsentwicklung [geschlossen]

9

Ich bin hauptsächlich ein .NET-Entwickler, daher verwende ich normalerweise Windows / VisualStudio (das heißt: Ich bin verwöhnt), aber ich genieße Haskell und andere (meist funktionale) Sprachen in meiner Freizeit.

Jetzt ist für Haskell die Windows-Unterstützung in Ordnung (Sie können die Haskell-Plattform erhalten), aber später habe ich versucht, eine grundlegende Clojure / Scheme-Umgebung einzurichten, und es ist nur ein Problem für Windows.

Ich denke also darüber nach, ein anderes Betriebssystem auszuprobieren, um bessere Tools und Sprachunterstützung zu erhalten. Das lässt mich natürlich mit MacOS oder einer Linux-Distribution zurück.

Ich habe noch nie MacOS verwendet und natürlich wäre Linux billiger (kostenlos) und ich glaube nicht, dass ich MacOS auf Ihrer normalen PC-Hardware parallel booten kann (oder?). PLUS: Ich habe keine Ahnung, welche Tools Sie auf diesen (für mich) ausländischen Betriebssystemen verwenden können.

Um es kurz zu machen: Ich möchte mehr über Haskell, Clojure, Scala, Scheme erfahren und brauche natürlich zumindest gute Werkzeuge für JavaScript / HTML5 / Css. Die Unterstützung für .NET / Mono / F # wäre großartig, aber dafür werde ich immer noch meinen Win7-Boot haben.

Daher möchte ich wissen: - Was ist Ihr bevorzugtes Betriebssystem, Distribution (ist Ubuntu funktionsfähig?) - Welchen Editor / welche IDE verwenden Sie?

Danke für Ihre Hilfe!

PS: Ich bin mir nicht sicher, ob dies der richtige Ort für diese Frage ist, aber ich hoffe es sehr - wenn nicht, lassen Sie mich bitte wissen, wohin ich das verschieben soll (StackOverflow scheint meiner Meinung nach nicht der richtige Ort zu sein).

Carsten
quelle
In Windows ist alles sehr schmerzhaft, es sei denn, Sie installieren Cygwin. Sobald Sie Cygwin haben, gibt es keine Anreize mehr, von Windows zu wechseln.
SK-Logik
8
@ Sk-Logik: Cygwin macht die Verwendung von Windows etwas weniger schmerzhaft, aber irgendwann möchte man vielleicht die Realität haben und auf ein Unix-ähnliches Betriebssystem umsteigen. ;-)
Giorgio
2
@vartec: Ich denke nicht, dass dies ein Duplikat ist: Diese Frage fragt speziell nach der Verwendung funktionaler Programmiersprachen.
Giorgio
3
Beginnen Sie mit einem guten Linux wie Fedora, Mint oder Ubuntu, bevor Sie Ihre Last auf einen Mac sprengen.
Rig

Antworten:

4

Der Weg, den ich derzeit gehe, um mit solchen Sprachen und anderen Dingen zu experimentieren, mit großem Erfolg und einfacher Bedienung:

  • Installieren Sie Debian unter einer VirtualBox-VM, die auf einem Windows-Host ausgeführt wird
  • Behalten Sie meinen gesamten Code auf dem Host oder auf einem freigegebenen Netzwerklaufwerk und bearbeiten Sie ihn auf dem Host mit dem bevorzugten Editor (zwischen Notepad ++ und SublimeText noch unentschlossen; für C ++ verwende ich nur VS).
  • Geben Sie das Verzeichnis auf dem Host frei und hängen Sie es in die VM ein
  • Kompilieren / Ausführen des Codes in der VM (oder Sie können sogar mit cygwin darauf ssh)

Auf diese Weise erhalten Sie die Vorteile beider Betriebssysteme.

stijn
quelle
hmm ... interessant - aber ich denke ich mache den Deep Dive und installiere Ubunto parallel auf meinem Toying-Laptop (gefährdet meine Arbeitsmaschine noch nicht)
Carsten
1
Auf meinem persönlichen Laptop verwende ich seit Ewigkeiten Dual-Boot Windows - Linux und hatte nie ein Problem damit. Andererseits habe ich auf meinem Desktop in den letzten 10 Jahren Windows nicht installiert. Wenn ich keine spezielle Software benötige, die nur für Windows verfügbar ist (z. B. Videospiele oder die Software für die Mobiltelefonschnittstelle), vermisse ich Windows wirklich nicht. Fazit: Sie können alle (funktionalen) Programmierungen unter Linux durchführen, sobald Sie sich mit den richtigen Tools vertraut gemacht haben.
Giorgio
Ich habe dies heute tatsächlich auf meinem Desktop versucht - Ubuntu in einer VirtualBox-VM - gab es 30 GB auf meiner SSD und 4 GB RAM zusammen mit zwei Kernen - läuft reibungslos mit den wenigen Dingen, die ich versucht habe (und die VM ist wirklich großartig mit scheinbar Größenänderungen von Windows und allem das) - im Moment werde ich Ubuntu vorerst so ausprobieren - vielleicht installiere ich später einen Dual-Boot auf meinem Laptop, aber mit Dual-Monitor ist das großartig - Danke, flagierte dies als Antwort
Carsten
18

Kurze Antwort: Es gibt eine einfache Lösung für Ihr Problem. Installieren Sie einfach die virtuelle Maschine unter Linux (Ubuntu) - sie ist kostenlos.

Ich bin auch ein hauptsächlich .NET-Entwickler, der es liebt, verschiedene Dinge zu experimentieren oder verschiedene Frameworks und / oder Entwicklungstools auszuprobieren. Die Hauptsache hier ist, Ihre Hauptentwicklungsumgebung nicht durcheinander zu bringen. Daher ist die Installation aller Komponenten in einer virtuellen Maschine (das native Betriebssystem, die Frameworks, die Konfiguration und Einrichtung usw.) für die Art der Entwicklung, die Sie durchführen möchten, der logischste und optimalste Weg.

Bearbeiten: Sie können eine andere Virtualisierungslösung in Betracht ziehen, um Ihre virtuelle Maschine zu erstellen. Meine persönliche Präferenz gilt VirtualBox . Es handelt sich um eine kostenlose x86-Virtualisierungslösung, mit der eine Vielzahl von x86-Betriebssystemen wie Windows, DOS, BSD oder Linux auf einem Linux-System ausgeführt werden können.

Yusubov
quelle
2
Die Möglichkeit, eine Momentaufnahme Ihrer Entwicklungsumgebung zu erstellen, auf die Sie später zurückgreifen können, ist ein wesentlicher Vorteil dieses Ansatzes. Sie können die Entwicklung auch mit interessierten Kollegen teilen
Arthur Ulfeldt
Welche VM schlagen Sie vor?
Carsten
1
Früher habe ich VMware verwendet, jetzt bevorzuge ich VirtualBox - weniger Aufwand.
Yusubov
12

Ich benutze Haskell und Scala (und mache auch einige Scheme, Common Lisp, SML, OCaml, Erlang) alle unter Linux (Ubuntu).

Alle oben genannten Sprachen (Compiler und Interpreter) können recht einfach installiert werden (es gibt Pakete, die mit apt-get oder einem anderen Paketverwaltungssystem installiert werden können).

Scala hat eine gute Integration mit Eclipse und die Scala-Plugins werden aktiv entwickelt. Wenn Sie mehr erfahren möchten, gibt es derzeit einen Kurs über Scala bei Coursera, in dem die Verwendung von Scala unter Windows, Linux und Mac erläutert wird. Vielleicht haben Sie nicht alle Funktionen und die Integration von Visual Studio, aber ich habe ziemlich große Projekte in Eclipse entwickelt und es funktioniert einwandfrei.

Für die Bearbeitung von Haskell (und den anderen oben aufgeführten Sprachen) verwende ich gvim, was für kleine Projekte in Ordnung ist. Sie können einen anderen Editor (z. B. EMACS) verwenden, sofern er über eine Syntaxhervorhebung für Haskell verfügt. Ansonsten können Sie sich haskellwiki ansehen (danke an Zach L für den Vorschlag).

Für die Verwaltung des Quellcodes (Versionierung) verwende ich SVN über Eclipse für alle diese Sprachen.

Giorgio
quelle
danke - ich habe (noch) kein großes haskell-projekt gemacht und bis jetzt hat notepadd ++ (sic!) die arbeit für mich erledigt - vielleicht sollte ich mich mit VIM / EMACS befassen, aber das könnte schwieriger zu lernen sein als das Loch andere OS-Sache ... Ja, ich bin verwöhnt von IDEs (bereits erwähnt - nicht wahr?)
Carsten
Auf HaskellWiki sind einige Haskell-IDEs aufgeführt .
Zach L
2
Zum Bearbeiten von Scala-Code können Sie Eclipse verwenden. Es gibt auch ein Scala-Arbeitsblatt-Eclipse-Plugin, mit dem Sie Codeteile im laufenden Betrieb bearbeiten und testen können. VIM (und EMACS) sind gewöhnungsbedürftig, aber sehr leistungsfähig. Ich würde keinen von ihnen nur lernen, Haskell-Dateien zu bearbeiten. Ich habe VIM als Allzweckeditor gelernt.
Giorgio
@ Zach L: Danke für den Link. Ich kann es der Antwort hinzufügen, wenn Sie mir die Erlaubnis dazu geben. Ich habe Leksah vor ein paar Monaten ausprobiert, aber soweit ich mich erinnern kann, war es noch nicht verwendbar. Bisher habe ich keine anderen Haskell-Tools ausprobiert.
Giorgio
@Giorgio Sicher können Sie es hinzufügen!
Zach L
10

Für MacOS ist Mac-Hardware erforderlich, oder Sie können sie auf VirtualBox ausführen, aber beim letzten Mal habe ich versucht, dass sie nicht funktioniert. Und da Sie Ihre aktuellen Konfigurations- / Setup-Probleme nicht durch andere Probleme ersetzen möchten, empfehle ich Ihnen, entweder viel Geld auszugeben oder Linux auszuprobieren. Ich habe Ubuntu für die Entwicklung von Haskell, Scala und Lisp mit Eclipse, Netbeans, IntelliJ und Emacs verwendet, und ich hatte keine großen Probleme, diese einzurichten.

Kim
quelle
danke - Ubuntu sieht sehr vielversprechend aus, da es (scheinbar) einfach über Windows zu installieren ist ... es ist lange her, dass ich wirklich Linux verwendet habe - ich denke, ich werde es versuchen - IntelliJ ist ein kommerzielles Produkt, oder?
Carsten
@ CarstenKönig Ja, es ist ein kommerzielles Produkt, aber ich glaube, Sie können kostenlose Lizenzen erhalten, wenn Sie beabsichtigen, es in einem Klassenzimmer zu verwenden oder um ein Open-Source-Projekt zu pflegen (und es zu beweisen).
Daniel B
1
@ CarstenKönig IntelliJ hat eine (kostenlose) Community Edition .
Yannis
Das Scala-Plugin für IntelliJ ist ebenfalls kostenlos, aber ich würde Eclipse trotzdem empfehlen.
Kim
IntelliJ kommt aus Visual Studio und ist eine viel vertrautere Arbeitsumgebung. Es fühlt sich wie eine abgespeckte Version von VS an. Die Schnittstellen / Workflows von Eclipse und VS sind sehr unterschiedlich.
Dan spielt am Feuer
5

Alle Unix-ähnlichen Betriebssysteme haben sehr gute Befehlszeilen-Tools . Ich persönlich habe gute Erfahrungen mit Ubuntu sowohl für die Entwicklung als auch für die Bereitstellung gemacht. Viele meiner Freunde schwören auch auf MacOS. Ich habe keinen offensichtlichen Grund gesehen, den einen oder anderen zu bevorzugen, sie sind alle IMO besser als Windows für die Befehlszeilenarbeit.

Insbesondere auf der Clojure / Scala-Seite ist Windows möglicherweise ziemlich gut, wenn Sie eine der Java-IDEs mit dem entsprechenden Clojure / Java-Plugin verwenden. Ich persönlich verwende Eclipse mit Gegen den Uhrzeigersinn als meine Hauptentwicklungsumgebung für Clojure in Windows 7. Es gibt auch eine Scala-IDE zum Auschecken. Dies ist ein guter Ansatz, wenn Sie IDEs mit vollem Funktionsumfang mögen und / oder Polyglot-Programmierung in derselben Umgebung durchführen möchten. Ein zusätzliches Plus bei der Verwendung von Eclipse ist, dass die Integration von git / svn / maven sehr gut ist.

mikera
quelle
3

Obwohl ich ein großer Mac- und Linux-Fan bin, gibt es keinen Grund, warum Sie keine dieser Sprachen unter Windows ausführen können. Auch wenn Sie eine funktionale Sprache unter Windows wünschen, übersehen Sie nicht F #, eine .net-Sprache

Zachary K.
quelle
4
F # ist eine meiner Hauptsprachen (die andere ist C #): D
Carsten
Ich habe es noch nicht gelernt, aber es sieht aus wie eine ziemlich schöne Sprache. Ich verbringe die meiste Zeit in diesen Tagen in Erlang
Zachary K
2
F # ist meiner Meinung nach die beste Sprache im .net-Ökosystem, es fehlt nur ein wenig an Werkzeugliebe (keine Refactorings, fast keine vorhandene Lösungsunterstützung (zum Beispiel keine sofort einsatzbereiten Unterordner)) - Sie können sich das als etwas Haskell / vorstellen Ocaml / C # hyprid
Carsten
Das habe ich gehört. Ich hatte den Eindruck, dass F # Microsofts Art ist, coole Ideen von Haskell zu übernehmen und sie in die .net-Welt zu bringen
Zachary K
@Carsten König: Ich kenne F # nicht, aber soweit ich weiß, stammt es hauptsächlich von Ocaml.
Giorgio
3

Ich habe Haskell unter Windows, OS X und (Ubuntu) Linux verwendet, daher kann ich einige Anmerkungen dazu machen. Jetzt wird alles, was Sie von der Haskell-Plattform erhalten können, wahrscheinlich einwandfrei funktionieren, egal was passiert, aber danach:

  • Relativ wenige Haskell-Programmierer verwenden Windows. Auf Hackage finden Sie Dinge, die eine Unix-ähnliche Umgebung voraussetzen, ohne dies wirklich explizit anzugeben.

  • Viele nützliche Dinge stammen aus FFI-Bindungen an C-Bibliotheken, und das Fehlen einer sogar vage konsistenten und zuverlässigen C-Kompilierungs-Toolchain unter Windows bedeutet, dass die Installation von FFI-Bindungen aus Hackage meiner Erfahrung nach bestenfalls ein Crapshoot ist.

  • Alles, was notwendigerweise plattformspezifisch ist, was amüsanterweise plattformübergreifende GUI-Bibliotheken umfasst, funktioniert unter Linux eher "nur".

  • Cygwin hilft nicht so viel, wie Sie denken.

Zusammenfassend: Alles funktioniert unter Linux, die meisten Dinge funktionieren unter OS X, aber einige Dinge sind seltsam, und unter Windows sollten Sie bei der Verwendung von Bibliotheken mit vielen interessanten Kopfschmerzen rechnen.

Wenn Sie nur Spaß daran haben möchten, mit Dingen zu experimentieren und Haskell zu lernen, tun Sie sich selbst einen Gefallen und verwenden Sie eine Ubuntu-VM oder ähnliches.

Soweit Redakteure und solche Go-Emacs und Vim wie immer beliebt sind. Ich habe auch nie gelernt, es zu benutzen (obwohl ich es wirklich sollte ...) und kümmere mich nicht um die meisten IDEs, deshalb bleibe ich im Allgemeinen bei SciTE - es ist ein dünner Wrapper um ein Editor-Widget namens Scintilla, von dem Sie vielleicht wissen, was es ist Notepad ++ verwendet.

CA McCann
quelle
1

Anstatt ein Betriebssystem auszuwählen, möchte ich dies aus dem IDE-Blickwinkel betrachten. Wenn Sie sich für Scheme interessieren, würde ich Sie ermutigen, DrRacket auszuprobieren, das vor einigen Jahren aus dem Scheme-Dschungel hervorgegangen ist. Die IDE läuft gut unter Windows, OS X und Linux.

Jetzt müssen Sie nur noch das richtige Betriebssystem auswählen, um alle anderen Funktionssprachen auszuführen .

John Clements
quelle
danke - ich habe erst gestern von Racket erfahren - hatte nicht viel Zeit, sich damit zu beschäftigen, aber die IDE / Lang. sieht für mich interessant aus - obwohl ich noch nicht sagen kann, ob es für eine "echte" App-Entwicklung wirklich brauchbar ist.
Carsten
0

Simon Peyton-Jones, einer der Entwickler von Haskell, ist ein Windows-Benutzer. Soweit ich weiß, bietet Haskell eine hervorragende Windows-Unterstützung.

Ihre Frage ist ein wenig vage, um ehrlich zu sein. Ihre Wahl des Betriebssystems ist nicht an das Paradigma der von Ihnen verwendeten Sprache gebunden.

Persönlich glaube ich, dass außerhalb der C # - und Java-Welt (wo die Entwicklungsumgebung von Ihrer IDE vorgegeben wird) eine Entwicklungsumgebung immer eine Variante von Unix sein sollte, egal ob BSD, Linux oder OSX.

djhworld
quelle