Elección del sistema operativo para el desarrollo funcional [cerrado]

9

Principalmente soy un desarrollador de .NET, por lo que normalmente uso Windows / VisualStudio (eso significa: estoy malcriado) pero disfruto de Haskell y otros lenguajes (en su mayoría funcionales) en mi tiempo libre.

Ahora para Haskell, el soporte de Windows está bien (puede obtener la plataforma Haskell) pero, por suerte, traté de configurar un entorno Clojure / Scheme básico y es solo un problema para Windows.

Así que estoy pensando en probar otro sistema operativo para obtener mejores herramientas y soporte de idiomas. Por supuesto, eso me deja con MacOS o alguna distribución de Linux.

Nunca he usado MacOS antes y, por supuesto, Linux sería más barato (gratis) y no creo que pueda arrancar en paralelo MacOS en tu PC-Hardware normal (¿puedes?). ADEMÁS: no tengo ni idea de las herramientas que puede usar en esos (para mí) sistemas operativos extranjeros.

Para abreviar: quiero explorar más Haskell, Clojure, Scala, Scheme y, por supuesto, necesito al menos buenas herramientas para JavaScript / HTML5 / Css. El soporte para .NET / Mono / F # sería genial, pero para esto todavía tendré mi arranque Win7.

Entonces, me gusta saber: - ¿Cuál es su sistema operativo preferido, Distribución (¿Ubuntu es viable?) - ¿Qué Editor / IDE está utilizando?

¡Gracias por tu ayuda!

PD: No estoy seguro de si este es el lugar correcto para esta pregunta, pero seguramente espero que sí; si no es así, avíseme a dónde debo mover esto (StackOverflow no parece ser el lugar correcto en mi humilde opinión)

Carsten
fuente
Todo es una gran molestia en Windows a menos que instales Cygwin. Una vez que tenga Cygwin, no habrá incentivos para moverse desde Windows.
SK-logic
8
@ Sk-logic: Cygwin hace que usar Windows sea un poco menos doloroso, pero eventualmente uno podría desear tener la realidad y pasar a un sistema operativo similar a Unix. ;-)
Giorgio
2
@vartec: No creo que esto sea un duplicado: esta pregunta se refiere específicamente al uso de lenguajes de programación funcionales.
Giorgio
3
Comience con un buen Linux como Fedora, Mint o Ubuntu antes de volar su carga en una Mac.
Plataforma

Respuestas:

4

La ruta que estoy tomando actualmente para experimentar con tales idiomas y otras cosas, con gran éxito y facilidad de uso:

  • instalar Debian en una VM VirtualBox, ejecutándose en el host de Windows
  • mantenga todo mi código en el host o en una unidad de red compartida, edite en el host usando el editor favorito (todavía indeciso entre Notepad ++ y SublimeText; para C ++ solo uso VS)
  • compartir el directorio en el host, montarlo en VM
  • compilar / ejecutar el código en la máquina virtual (o incluso podría hacerlo mediante cygwin)

De esta manera obtienes las ventajas de ambos sistemas operativos.

stijn
fuente
hmm ... interesante, pero creo que hago la inmersión profunda e instalo Ubunto en paralelo en mi portátil portátil (todavía no pondrá en peligro mi máquina de trabajo)
Carsten
1
En mi computadora portátil personal, he estado usando Windows de arranque dual - Linux durante años y nunca tuve un problema con él. Por otro lado, en mi escritorio no he instalado Windows en los últimos 10 años. A menos que necesite algún software específico que solo esté disponible para Windows (por ejemplo, videojuegos o el software de interfaz de teléfono celular), realmente no extraño Windows. En pocas palabras: puede hacer toda la programación (funcional) que necesita en Linux una vez que se haya familiarizado con las herramientas adecuadas.
Giorgio
De hecho, probé esto en mi escritorio hoy, Ubuntu en una VM VirtualBox, le dio 30 GB en mi SSD y 4 GB de RAM junto con dos núcleos, funciona sin problemas con las pocas cosas que probé (y la VM es realmente genial con el cambio de tamaño de las ventanas y todo eso) - por ahora esta será la forma en que pruebo ubuntu por ahora - tal vez instale un arranque dual en mi computadora portátil más tarde pero con monitor dual esto es genial - Gracias, esto fue una respuesta
Carsten
18

Respuesta corta: hay una solución simple a su problema. Simplemente instale la máquina virtual con Linux (Ubuntu) , es gratis.

También soy un desarrollador principalmente .NET que adora experimentar diferentes cosas o probar una variedad de marcos y / o herramientas de desarrollo. Lo principal aquí es no alterar su entorno de desarrollo principal. Por lo tanto, instalar todo en una máquina virtual (sistema operativo nativo, marcos, configurarlos y configurarlos, etc.) para el tipo de desarrollo que pretendía hacer es la forma más lógica y óptima de hacerlo.

Editar: puede considerar diferentes soluciones de virtualización para construir su máquina virtual. Mi preferencia personal va con VirtualBox . Es una solución de virtualización x86 gratuita que permite que una amplia gama de sistemas operativos x86 como Windows, DOS, BSD o Linux se ejecuten en un sistema Linux.

Yusubov
fuente
2
La capacidad de hacer una instantánea de su entorno de desarrollo a la que pueda volver más adelante es una gran ventaja de este enfoque. también puede compartir el entorno de desarrollo con colegas interesados
Arthur Ulfeldt
¿Qué VM sugieres?
Carsten
1
Anteriormente estaba usando VMware, ahora prefiero VirtualBox, menos problemas con los que lidiar.
Yusubov
12

Uso Haskell y Scala (y también hago algunos Scheme, Common Lisp, SML, OCaml, Erlang), todo bajo Linux (Ubuntu).

Todos los idiomas anteriores (compiladores e intérpretes) se pueden instalar con bastante facilidad (hay paquetes que se pueden instalar usando apt-get u otro sistema de administración de paquetes).

Scala tiene una buena integración con Eclipse y los complementos de Scala se desarrollan activamente. Si desea obtener más información, hay un curso sobre Scala actualmente en curso en Coursera que explica cómo usar Scala en Windows, Linux y Mac. Quizás no tenga todas las características e integración de Visual Studio, pero he desarrollado proyectos bastante grandes en Eclipse y funciona bien.

Para editar Haskell (y los otros idiomas enumerados anteriormente) utilizo gvim, que está bien para proyectos pequeños. Puede usar otro editor (por ejemplo, EMACS), siempre que tenga resaltado de sintaxis para Haskell. De lo contrario, puede echar un vistazo a haskellwiki (gracias a Zach L por la sugerencia).

Para administrar el código fuente (versionado) utilizo SVN a través de Eclipse para todos estos idiomas.

Giorgio
fuente
gracias: no hice ningún proyecto de haskell a gran escala (todavía) y hasta ahora Notepadd ++ (¡sic!) hizo el trabajo por mí, tal vez debería investigar VIM / EMACS, pero esto podría terminar siendo más difícil de aprender que el hoyo otra cosa del sistema operativo ... sí, estoy mimado por IDEs (ya mencioné esto, ¿no?)
Carsten
Hay algunos IDE de Haskell listados en HaskellWiki .
Zach L
2
Para editar el código Scala puede usar Eclipse. También hay un complemento Eclipse de hoja de trabajo Scala que le permite editar y probar fragmentos de código sobre la marcha. VIM (y EMACS) tardan en acostumbrarse, pero son muy potentes. No aprendería ninguno de ellos solo para editar archivos Haskell. Aprendí VIM como editor de propósito general.
Giorgio
@Zach L: Gracias por el enlace. Puedo agregarlo a la respuesta si me das permiso para hacerlo. Probé Leksah hace unos meses, pero hasta donde puedo recordar, todavía no era utilizable. Hasta ahora no he probado ninguna otra herramienta Haskell.
Giorgio
@Giorgio ¡Claro que puedes agregarlo!
Zach L
10

MacOS requiere hardware de Mac o puede que se ejecute en VirtualBox, pero la última vez que lo intenté no funcionó. Y dado que no desea reemplazar sus problemas actuales de configuración / configuración con otros problemas, le sugiero que gaste mucho dinero o pruebe Linux. He usado Ubuntu para el desarrollo de Haskell, Scala y Lisp con Eclipse, Netbeans, IntelliJ y Emacs, y no he tenido muchos problemas para configurarlos.

Kim
fuente
gracias - Ubuntu se ve muy prometedor debido a que es (aparentemente) fácil de instalar en la parte superior de Windows ... es mucho tiempo que realmente utilicé Linux - Creo que lo intentaré - IntelliJ es un producto comercial ¿verdad?
Carsten
@ CarstenKönig Sí, es un producto comercial, sin embargo, creo que puede obtener licencias gratuitas si tiene la intención de usarlo en un aula o usarlo para mantener un proyecto de código abierto (y puede probarlo).
Daniel B
1
@ CarstenKönig IntelliJ tiene una edición comunitaria (gratuita) .
Yannis
el complemento scala para IntelliJ también es gratuito, pero aún así recomendaría Eclipse.
Kim
Viniendo de Visual Studio, IntelliJ será un entorno mucho más familiar para trabajar. Se siente como una versión reducida de VS; mientras que las interfaces / flujo de trabajo de Eclipse y VS son extremadamente diferentes.
Dan Is Fiddling By Firelight
5

Todos los sistemas operativos tipo Unix tienen herramientas de línea de comandos muy buenas . Personalmente, he tenido buenas experiencias con Ubuntu tanto para el desarrollo como para la implementación, muchos de mis amigos también juran por MacOS. No he visto una razón obvia para preferir uno u otro, todos son IMO mejores que Windows para el trabajo de línea de comandos.

En el lado de Clojure / Scala específicamente, puede encontrar que Windows es bastante bueno si usa uno de los IDEs de Java con el complemento Clojure / Java apropiado. Personalmente uso Eclipse con el sentido contrario a las agujas del reloj como mi principal entorno de desarrollo de Clojure en Windows 7. También hay un IDE de Scala para verificar. Este es un buen enfoque si le gustan los IDE con todas las funciones y / o desea hacer la programación políglota en el mismo entorno. Una ventaja adicional de usar algo como Eclipse es que la integración de git / svn / maven es muy buena.

mikera
fuente
3

Si bien soy un gran fanático de Mac y Linux, no hay ninguna razón por la que no puedas usar ninguno de esos idiomas en Windows. Además, si desea un lenguaje funcional en Windows, no pase por alto F #, que es un lenguaje .net

Zachary K
fuente
44
F # es uno de mis idiomas principales (el otro es C #): D
Carsten
Todavía no lo he aprendido, pero parece un lenguaje bastante agradable. Actualmente paso la mayor parte del tiempo en Erlang
Zachary K
2
F # es, en mi humilde opinión, el mejor lenguaje en el ecosistema .net, solo le falta algo de amor a las herramientas (sin refactorizaciones, soporte de soluciones casi inexistente (por ejemplo, no hay subcarpetas listas para usar)): puede considerarlo como un haskell / Ocaml / C # hyprid
Carsten
Eso es lo que he escuchado. Tengo la impresión de que F # es la forma en que Microsoft toma ideas geniales de Haskell y las traslada al mundo .net
Zachary K
@Carsten König: No sé F #, pero hasta donde sé, se deriva principalmente de Ocaml.
Giorgio
3

He usado Haskell en Windows, OS X y (Ubuntu) Linux, por lo que puedo ofrecer algunas observaciones al respecto. Ahora, cualquier cosa que pueda obtener de la plataforma Haskell probablemente funcionará bien, pase lo que pase, pero después de eso:

  • Relativamente pocos programadores de Haskell usan Windows. Encontrará cosas en Hackage que suponen un entorno similar a Unix sin decirlo explícitamente.

  • Muchas cosas útiles provienen de los enlaces de FFI a las bibliotecas de C, y la falta de una cadena de herramientas de compilación de C incluso vagamente consistente y confiable significa que, en mi experiencia, instalar enlaces de FFI desde el pirateo es, en el mejor de los casos, un desastre.

  • Cualquier cosa necesariamente específica de la plataforma, que de manera bastante divertida incluye bibliotecas GUI multiplataforma, es más probable que "simplemente funcione" en Linux.

  • Cygwin no ayuda tanto como piensas.

En resumen: todo tiende a funcionar en Linux, la mayoría de las cosas funcionan en OS X, pero algunas cosas son raras, y en Windows debe esperar encontrar muchos dolores de cabeza interesantes al usar bibliotecas.

Si solo quieres divertirte experimentando con cosas y aprendiendo Haskell, hazte un favor y usa una máquina virtual Ubuntu o algo así.

En cuanto a los editores y demás, emacs y vim son populares como siempre. Nunca aprendí a usar ninguno (aunque realmente debería ...) y no me importan la mayoría de los IDE, por lo que generalmente me quedo con SciTE: es un envoltorio delgado alrededor de un widget de editor llamado Scintilla, que tal vez sepa como Notepad ++ usos.

CA McCann
fuente
1

En lugar de elegir un sistema operativo, déjame abordar esto desde el ángulo IDE. Si estás interesado en Scheme, te animo a que pruebes DrRacket, que surgió de la selva de Scheme hace unos años. El IDE funciona bien en Windows, OS X y Linux.

Ahora, solo tiene que elegir el sistema operativo adecuado para ejecutar todos sus otros lenguajes funcionales.

John Clements
fuente
gracias, ayer me enteré de Racket, no tuve mucho tiempo para investigarlo, pero el IDE / Lang. Me parece interesante, aunque todavía no puedo decir si es realmente viable para el desarrollo de aplicaciones "reales".
Carsten
0

Simon Peyton-Jones, uno de los creadores de Haskell es un usuario de Windows y, por lo que sé, Haskell tiene un excelente soporte de Windows.

Su pregunta es un poco vaga para ser honesto, su elección del sistema operativo no está vinculada al paradigma del lenguaje que está utilizando.

Personalmente, creo que fuera del mundo de C # y Java (donde su entorno de desarrollo está dictado por su IDE), un entorno de desarrollo siempre debe ser un sabor de Unix, ya sea BSD, Linux u OSX.

djhworld
fuente