Choix du système d'exploitation pour le développement fonctionnel [fermé]

9

Je suis principalement un développeur .NET, donc j'utilise normalement Windows / VisualStudio (cela signifie: je suis gâté) mais j'aime Haskell et d'autres langages (principalement fonctionnels) pendant mon temps libre.

Maintenant, pour Haskell, le support Windows est correct (vous pouvez obtenir la plate-forme Haskell) mais j'ai essayé d'obtenir un environnement de base Clojure / Scheme et c'est juste une douleur pour Windows.

Je pense donc à essayer un autre système d'exploitation pour un meilleur outillage et un support linguistique. Bien sûr, cela me laisse avec MacOS ou une distribution Linux.

Je n'ai jamais utilisé MacOS auparavant et bien sûr Linux serait moins cher (gratuit) et je ne pense pas pouvoir démarrer MacOS en parallèle sur votre matériel PC normal (pouvez-vous?). PLUS: Je n'ai aucune idée des outils que vous pouvez utiliser sur ces (pour moi) systèmes d'exploitation étrangers.

Pour faire court: je veux explorer plus Haskell, Clojure, Scala, Scheme et bien sûr avoir besoin d'au moins de bons outils pour JavaScript / HTML5 / Css. La prise en charge de .NET / Mono / F # serait formidable mais pour cela, j'aurai toujours mon démarrage Win7.

Donc j'aime savoir: - quel est votre système d'exploitation préféré, la distribution (Ubuntu est-il viable?) - quel éditeur / IDE utilisez-vous

Merci de votre aide!

PS: Je ne sais pas si c'est le bon endroit pour cette question, mais j'espère bien que oui - sinon, faites-moi savoir où je dois déplacer cela (StackOverflow ne semble pas être le bon endroit à mon humble avis)

Carsten
la source
Tout est vraiment très difficile sous Windows à moins que vous n'installiez Cygwin. Une fois que vous avez Cygwin, il n'y aura aucune incitation à vous déplacer de Windows.
SK-logic
8
@ Sk-logic: Cygwin rend l'utilisation de Windows un peu moins pénible, mais finalement on pourrait vouloir avoir la vraie chose et passer à un système d'exploitation semblable à Unix. ;-)
Giorgio
2
@vartec: Je ne pense pas que ce soit un doublon: cette question concerne spécifiquement l'utilisation des langages de programmation fonctionnels.
Giorgio
3
Commencez avec un bon Linux comme Fedora, Mint ou Ubuntu avant de souffler votre charge sur un Mac.
Rig

Réponses:

4

La voie que je prends actuellement pour expérimenter de telles langues et d'autres choses, avec un grand succès et une facilité d'utilisation:

  • installer Debian sous une machine virtuelle VirtualBox, exécutée sur un hôte Windows
  • garder tout mon code sur l'hôte ou sur un lecteur réseau partagé, éditer sur l'hôte à l'aide de l'éditeur favori (toujours indécis entre Notepad ++ et SublimeText; pour C ++ j'utilise juste VS)
  • partager le répertoire sur l'hôte, le monter dans la VM
  • compiler / exécuter le code dans la machine virtuelle (ou vous pouvez même y accéder en utilisant cygwin)

De cette façon, vous obtenez les avantages des deux systèmes d'exploitation.

stijn
la source
hmm ... intéressant - mais je pense que je fais de la plongée profonde et installe Ubunto en parallèle sur mon ordinateur portable (cela ne mettra pas en danger ma machine de travail - pour l'instant)
Carsten
1
Sur mon ordinateur portable personnel, j'utilise Windows - Linux à double démarrage depuis des lustres et je n'ai jamais eu de problème avec. D'un autre côté, sur mon bureau, je n'ai pas installé Windows depuis 10 ans. À moins d'avoir besoin d'un logiciel spécifique uniquement disponible pour Windows (par exemple, des jeux vidéo ou le logiciel d'interface pour téléphone portable), je ne manque vraiment pas Windows. Bottom line: Vous pouvez faire toute la programmation (fonctionnelle) dont vous avez besoin sur Linux une fois que vous vous êtes familiarisé avec les outils appropriés.
Giorgio
J'ai en effet essayé cela sur mon bureau aujourd'hui - Ubuntu dans une machine virtuelle VirtualBox - lui ai donné 30 Go sur mon SSD et 4 Go de Ram avec deux cœurs - fonctionne à merveille avec les quelques choses que j'ai essayées (et la machine virtuelle est vraiment géniale avec des fenêtres apparemment redimensionnées et tout que) - pour l'instant ce sera la façon dont j'essaie ubuntu pour l'instant - peut-être que j'installe un double démarrage sur mon ordinateur portable plus tard, mais avec un double moniteur, c'est super - merci, flaged cela comme réponse
Carsten
18

Réponse courte: Il existe une solution simple à votre problème. Installez simplement la machine virtuelle avec Linux (Ubuntu) - c'est gratuit.

Je suis également un développeur principalement .NET qui aime expérimenter différentes choses, ou essayer une variété de frameworks et / ou d'outils de développement. L' essentiel ici n'est pas de gâcher votre environnement de développement principal. Ainsi, tout installer sur une machine virtuelle (le système d'exploitation natif, les frameworks, les configurer et les installer, etc.) pour le type de développement que vous envisagez de faire est la manière la plus logique et optimale de procéder.

Modifier: vous pouvez envisager différentes solutions de virtualisation pour créer votre machine virtuelle. Ma préférence personnelle va avec VirtualBox . Il s'agit d'une solution de virtualisation x86 gratuite permettant à une large gamme de systèmes d'exploitation x86 tels que Windows, DOS, BSD ou Linux de fonctionner sur un système Linux.

Yusubov
la source
2
la possibilité de créer un instantané de votre environnement de développement sur lequel vous pourrez revenir ultérieurement est un avantage majeur de cette approche. vous pouvez également partager l'environnement de développement avec des collègues intéressés
Arthur Ulfeldt
quelle VM proposez-vous?
Carsten
1
Auparavant, j'utilisais VMware, maintenant je préfère VirtualBox - moins de tracas à gérer.
Yusubov
12

J'utilise Haskell et Scala (et je fais aussi du Scheme, Common Lisp, SML, OCaml, Erlang) le tout sous Linux (Ubuntu).

Toutes les langues ci-dessus (compilateurs et interprètes) peuvent être installées assez facilement (il existe des packages qui peuvent être installés à l'aide d'apt-get ou d'un autre système de gestion de packages).

Scala a une bonne intégration avec Eclipse et le ou les plugins Scala sont activement développés. Si vous voulez en savoir plus, il y a un cours sur Scala actuellement en cours chez Coursera qui explique comment utiliser Scala sur Windows, Linux et Mac. Peut-être que vous n'avez pas toutes les fonctionnalités et l'intégration de Visual Studio, mais j'ai développé des projets assez importants dans Eclipse et cela fonctionne très bien.

Pour éditer Haskell (et les autres langues listées ci-dessus) j'utilise gvim qui est OK pour les petits projets. Vous pouvez utiliser un autre éditeur (par exemple EMACS), à condition qu'il ait une coloration syntaxique pour Haskell. Sinon, vous pouvez jeter un œil à haskellwiki (merci à Zach L pour la suggestion).

Pour gérer le code source (versioning), j'utilise SVN via Eclipse pour toutes ces langues.

Giorgio
la source
merci - je n'ai pas encore fait de projet haskell à grande échelle et jusqu'à présent Notepadd ++ (sic!) a fait le travail pour moi - peut-être que je devrais me pencher sur VIM / EMACS mais cela pourrait finir par être plus difficile à apprendre trou autre chose OS ... ouais je suis gâté par les IDE (déjà mentionné cela - n'est-ce pas?)
Carsten
Il y a quelques IDE Haskell répertoriés sur HaskellWiki .
Zach L
2
Pour éditer le code Scala, vous pouvez utiliser Eclipse. Il existe également un plugin Eclipse de feuille de calcul Scala qui vous permet de modifier et de tester des morceaux de code à la volée. VIM (et EMACS) prennent un certain temps pour s'y habituer mais ils sont très puissants. Je n'apprendrais ni l'un ni l'autre à éditer les fichiers Haskell. J'ai appris VIM en tant qu'éditeur généraliste.
Giorgio
@Zach L: Merci pour le lien. Je peux l'ajouter à la réponse si vous me le permettez. J'ai essayé Leksah il y a quelques mois, mais pour autant que je m'en souvienne, il n'était pas encore utilisable. Jusqu'à présent, je n'ai essayé aucun autre outil Haskell.
Giorgio
@Giorgio Bien sûr, vous pouvez l'ajouter!
Zach L
10

MacOS nécessite du matériel Mac ou vous pourriez le faire fonctionner sur VirtualBox, mais la dernière fois j'ai essayé que cela ne fonctionnait pas. Et comme vous ne voulez pas remplacer vos problèmes de configuration / installation actuels par d'autres problèmes, je vous suggère de dépenser beaucoup d'argent ou d'essayer Linux. J'ai utilisé Ubuntu pour le développement Haskell, Scala et Lisp avec Eclipse, Netbeans, IntelliJ et Emacs, et je n'ai pas eu beaucoup de mal à les configurer.

Kim
la source
merci - Ubuntu a l'air très prometteur en raison de son installation (apparemment) facile sur les fenêtres ... ça fait longtemps que j'ai vraiment utilisé linux - je pense que je vais essayer - IntelliJ est un produit commercial, non?
Carsten
@ CarstenKönig Oui, c'est un produit commercial, mais je pense que vous pouvez obtenir des licences gratuites si vous avez l'intention de l'utiliser dans une salle de classe, ou de l'utiliser pour maintenir un projet open source (et pouvez le prouver).
Daniel B
1
@ CarstenKönig IntelliJ a une édition communautaire (gratuite) .
yannis
le plugin scala pour IntelliJ est également gratuit, mais je recommanderais quand même Eclipse.
Kim
Venant de Visual Studio, IntelliJ sera un environnement beaucoup plus familier dans lequel travailler. Il ressemble à une version réduite de VS; tandis que les interfaces / flux de travail d'Eclipse et de VS sont extrêmement différents.
Dan est en train de jouer par Firelight le
5

Tous les systèmes d'exploitation de type Unix ont de très bons outils de ligne de commande . J'ai personnellement eu de bonnes expériences avec Ubuntu pour le développement et le déploiement, beaucoup de mes amis ne jurent que par MacOS. Je n'ai pas vu de raison évidente de préférer l'un ou l'autre, ils sont tous mieux IMO que Windows pour le travail en ligne de commande.

Du côté Clojure / Scala en particulier, vous pouvez trouver que Windows est en fait assez bon si vous utilisez l'un des IDE Java avec le plugin Clojure / Java approprié. J'utilise personnellement Eclipse avec Counterclockwise comme mon environnement de développement Clojure principal dans Windows 7. Il y a aussi l' IDE Scala à vérifier. C'est une bonne approche si vous aimez les IDE complets et / ou si vous voulez faire de la programmation polyglotte dans le même environnement. Un avantage supplémentaire d'utiliser quelque chose comme Eclipse est que l'intégration git / svn / maven est très bonne.

mikera
la source
3

Bien que je sois un grand fan de Mac et Linux, il n'y a aucune raison pour que vous ne puissiez pas utiliser ces langues sur Windows. Aussi, si vous voulez un langage fonctionnel sur Windows, ne négligez pas F # qui est un langage .net

Zachary K
la source
4
F # est l'une de mes langues principales (l'autre étant C #): D
Carsten
Je ne l'ai pas encore appris, mais ça ressemble à une langue plutôt sympa. Je passe la plupart de mon temps à Erlang ces jours-ci
Zachary K
2
F # est à mon humble avis le meilleur langage de l'écosystème .net, manquant seulement d'un certain amour des outils (pas de refactorings, support de solution presque inexistant (par exemple pas de sous-dossiers prêts à l'emploi)) - vous pouvez le considérer comme un haskell / Ocaml / C # hyprid
Carsten
Voilà ce que j'ai entendu. J'ai eu l'impression que F # est la façon dont Microsoft prend les idées sympas de Haskell et les transfère dans le monde .net
Zachary K
@Carsten König: Je ne connais pas F # mais pour autant que je sache, il est principalement dérivé d'Ocaml.
Giorgio
3

J'ai utilisé Haskell sur Windows, OS X et (Ubuntu) Linux, donc je peux faire quelques remarques à ce sujet. Maintenant, tout ce que vous pouvez obtenir de la plate-forme Haskell va probablement très bien fonctionner quoi qu'il arrive, mais après cela:

  • Relativement peu de programmeurs Haskell utilisent Windows. Vous trouverez des choses sur Hackage qui supposent un environnement de type Unix sans vraiment le dire explicitement.

  • Beaucoup de choses utiles proviennent des liaisons FFI aux bibliothèques C, et le manque d'une chaîne d'outils de compilation C même vaguement cohérente et fiable sous Windows signifie que, selon mon expérience, l'installation des liaisons FFI à partir du piratage est au mieux un jeu d'enfant.

  • Tout ce qui est nécessairement spécifique à la plate-forme, qui comprend de manière amusante les bibliothèques GUI multiplateformes, est plus susceptible de "fonctionner" sous Linux.

  • Cygwin n'aide pas autant que vous le pensez.

En résumé: tout a tendance à fonctionner sous Linux, la plupart des choses fonctionnent sous OS X, mais quelques choses sont étranges, et sous Windows, vous devriez vous attendre à rencontrer beaucoup de maux de tête intéressants lors de l'utilisation des bibliothèques.

Si vous voulez simplement vous amuser à expérimenter avec des choses et à apprendre Haskell, faites-vous plaisir et utilisez une machine virtuelle Ubuntu ou quelque chose.

En ce qui concerne les éditeurs et ces go-emacs et vim sont populaires comme toujours. Je n'ai jamais appris à utiliser non plus (bien que je devrais vraiment ...) et je ne me soucie pas de la plupart des IDE, donc je m'en tiens généralement à SciTE - c'est un mince wrapper autour d'un widget d'édition appelé Scintilla, que vous savez peut-être être ce que Notepad ++ utilise.

CA McCann
la source
1

Plutôt que de choisir un système d'exploitation, permettez-moi de voir cela sous l'angle IDE. Si vous êtes intéressé par Scheme, je vous encourage à essayer DrRacket, qui a émergé de la jungle Scheme il y a quelques années. L'IDE fonctionne bien sous Windows, OS X et Linux.

Maintenant, il vous suffit de choisir le bon système d'exploitation pour exécuter tous vos autres langages fonctionnels.

John Clements
la source
merci - je n'ai découvert que Racket hier - n'a pas eu beaucoup de temps pour y jeter un œil mais sur l'IDE / Lang. me semble intéressant - bien que je ne puisse pas dire si c'est vraiment viable pour le "vrai" développement d'applications.
Carsten
0

Simon Peyton-Jones, l'un des créateurs de Haskell est un utilisateur Windows et d'après ce que je comprends, Haskell a un excellent support Windows.

Votre question est un peu vague pour être honnête, votre choix d'OS n'est pas lié au paradigme de la langue que vous utilisez.

Personnellement, je crois qu'en dehors du monde C # et Java (où l'environnement de développement est dicté par votre IDE), un environnement de développement devrait toujours être une saveur d'Unix, que ce soit BSD, Linux ou OSX.

djhworld
la source