Escolha do SO para desenvolvimento funcional [fechado]

9

Sou principalmente um desenvolvedor .NET, então normalmente uso o Windows / VisualStudio (isso significa: sou mimado), mas estou gostando do Haskell e de outros idiomas (principalmente funcionais) no meu tempo livre.

Agora, para Haskell, o suporte ao Windows está ok (você pode obter a Plataforma Haskell), mas ultimamente tentei obter um ambiente básico de Clojure / Scheme configurado e isso é apenas uma dor no Windows.

Então, estou pensando em experimentar outro sistema operacional para obter melhores ferramentas e suporte a idiomas. Claro que isso me deixa com o MacOS ou alguma distribuição Linux.

Eu nunca usei o MacOS antes e, é claro, o Linux seria mais barato (gratuito) e acho que não consigo inicializar em paralelo o MacOS no seu PC-Hardware normal (você pode?). MAIS: Eu não tenho idéia das ferramentas que você pode usar nesses (para mim) SOs estrangeiros.

Para resumir: quero explorar mais Haskell, Clojure, Scala, Scheme e, é claro, preciso de pelo menos boas ferramentas para JavaScript / HTML5 / Css. O suporte ao .NET / Mono / F # seria ótimo, mas para isso ainda terei minha inicialização do Win7.

Então, eu gostaria de saber: - qual é o seu sistema operacional preferido, distribuição (o Ubuntu é viável?) - que editor / IDE você está usando

Obrigado pela ajuda!

PS: Não tenho certeza se este é o lugar certo para esta pergunta, mas certamente espero que sim - se não, por favor, deixe-me saber para onde devo mudar isso (StackOverflow não parece ser o lugar certo IMHO)

Carsten
fonte
Tudo é muito problemático no Windows, a menos que você instale o Cygwin. Depois de adquirir o Cygwin, não haverá incentivos para se deslocar para o Windows.
SK-logic
8
@ Sk-logic: Cygwin torna o uso do Windows um pouco menos doloroso, mas eventualmente alguém pode querer ter a coisa real e mudar para um sistema operacional semelhante ao Unix. ;-)
Giorgio
2
@artec: Eu não acho que isso seja uma duplicata: esta pergunta pergunta especificamente sobre o uso de linguagens de programação funcional.
Giorgio
3
Comece com um bom linux como Fedora, Mint ou Ubuntu antes de aumentar sua carga em um Mac.
Rig

Respostas:

4

O caminho que estou tomando atualmente para experimentar esses idiomas e outras coisas, com grande sucesso e facilidade de uso:

  • instale o Debian em uma VM VirtualBox, executando no host do Windows
  • manter todo o meu código no host ou em uma unidade de rede compartilhada, editar no host usando o editor favorito (ainda indeciso entre o Notepad ++ e o SublimeText; para C ++, eu apenas uso o VS)
  • compartilhe o diretório no host, monte-o na VM
  • compile / execute o código na VM (ou você pode até fazer o ssh usando o cygwin)

Dessa forma, você obtém os profissionais dos dois sistemas operacionais.

stijn
fonte
hmm ... interessante - mas eu acho que fazer o mergulho profundo e instalar Ubunto paralelo no meu brinca-laptop (não prejudique meu trabalho-máquina - até o momento)
Carsten
11
No meu laptop pessoal, uso o Windows de inicialização dupla - Linux há muito tempo e nunca tive problemas com isso. Por outro lado, na minha área de trabalho, não instalei o Windows nos últimos 10 anos. A menos que eu precise de algum software específico disponível apenas para Windows (por exemplo, jogos de vídeo ou o software de interface de celular), eu realmente não sinto falta do Windows. Conclusão: você pode executar toda a programação (funcional) necessária no Linux depois de se familiarizar com as ferramentas adequadas.
Giorgio
Na verdade, eu tentei isso no meu desktop hoje - Ubuntu em uma VM VirtualBox - dei 30 GB no meu SSD e 4 GB de RAM, juntamente com dois núcleos - funciona com as poucas coisas que tentei (e a VM é realmente ótima com janelas aparentemente redimensionáveis ​​e tudo isso) - por enquanto, será assim que tento o ubuntu por enquanto - talvez eu instale uma inicialização dupla no meu laptop mais tarde, mas com o monitor duplo isso seja ótimo - Obrigado, joguei isso como resposta
Carsten
18

Resposta curta: Existe uma solução simples para o seu problema. Basta instalar a máquina virtual com Linux (Ubuntu) - é grátis.

Também sou desenvolvedor principalmente do .NET que gosta de experimentar coisas diferentes ou experimentar várias estruturas e / ou ferramentas de desenvolvimento. O principal aqui é não mexer no seu ambiente de desenvolvimento principal. Portanto, instalar tudo em uma máquina virtual (o SO nativo, estruturas, configurá-los e configurá-los etc.) para o tipo de desenvolvimento que você pretende fazer é o caminho mais lógico e ideal.

Editar: você pode considerar uma solução de virtualização diferente para criar sua máquina virtual. Minha preferência pessoal vai com o VirtualBox . É uma solução de virtualização x86 gratuita que permite que uma ampla gama de sistemas operacionais x86, como Windows, DOS, BSD ou Linux, seja executada em um sistema Linux.

Yusubov
fonte
2
a capacidade de fazer uma captura instantânea do seu ambiente de desenvolvimento para o qual você pode reverter mais tarde é uma grande vantagem dessa abordagem. você também pode compartilhar o ambiente de desenvolvimento com colegas interessados
Arthur Ulfeldt
qual VM você sugere?
Carsten
11
Anteriormente, eu estava usando o VMware, agora prefiro o VirtualBox - menos problemas para lidar.
Yusubov 21/09/12
12

Uso Haskell e Scala (e também faço alguns Scheme, Common Lisp, SML, OCaml, Erlang), todos no Linux (Ubuntu).

Todos os idiomas acima (compiladores e intérpretes) podem ser instalados facilmente (existem pacotes que podem ser instalados usando o apt-get ou outro sistema de gerenciamento de pacotes).

O Scala tem uma boa integração com o Eclipse e os plug-ins do Scala são desenvolvidos ativamente. Se você quiser saber mais, existe um curso sobre o Scala atualmente em execução no Coursera, que explica como usar o Scala no Windows, Linux e Mac. Talvez você não tenha todos os recursos e integração do Visual Studio, mas desenvolvi projetos bastante grandes no Eclipse e ele funciona muito bem.

Para editar o Haskell (e os outros idiomas listados acima), uso o gvim, o que é bom para pequenos projetos. Você pode usar outro editor (por exemplo, EMACS), desde que tenha destaque de sintaxe para Haskell. Caso contrário, você pode dar uma olhada no haskellwiki (obrigado a Zach L pela sugestão).

Para gerenciar o código fonte (controle de versão), uso o SVN através do Eclipse para todos esses idiomas.

Giorgio
fonte
obrigado - eu não fiz nenhum projeto de haskell em larga escala (ainda) e até agora o Notepadd ++ (sic!) fez o trabalho por mim - talvez eu deva procurar no VIM / EMACS, mas isso pode acabar sendo mais difícil de aprender do que o buraco coisa outra OS ... sim estou muito bem tratados pelo IDEs (já mencionadas isso - não é?)
Carsten
Existem alguns IDEs Haskell listados no HaskellWiki .
Zach L
2
Para editar o código Scala, você pode usar o Eclipse. Há também um plug-in Eclipse da planilha Scala que permite editar e testar trechos de código em tempo real. O VIM (e o EMACS) levam algum tempo para se acostumar, mas são muito poderosos. Eu não aprenderia nenhum deles apenas para editar arquivos Haskell. Eu aprendi o VIM como um editor de uso geral.
Giorgio
@ Zach L: Obrigado pelo link. Posso adicioná-lo à resposta se você me der permissão. Eu experimentei Leksah há alguns meses atrás, mas até onde me lembro, ainda não era utilizável. Até agora, não testei nenhuma outra ferramenta Haskell.
Giorgio
@Giorgio Claro que você pode adicioná-lo!
Zach G
10

O MacOS requer hardware Mac ou você pode executá-lo no VirtualBox, mas da última vez que tentei não funcionou. E como você não deseja substituir seus problemas atuais de configuração / instalação por outros problemas, sugiro que você gaste muito dinheiro ou tente o Linux. Eu usei o Ubuntu para desenvolvimento Haskell, Scala e Lisp com Eclipse, Netbeans, IntelliJ e Emacs, e não tive muitos problemas para configurá-los.

Kim
fonte
obrigado - o Ubuntu parece muito promissor devido à sua instalação (aparentemente) fácil no Windows ... faz muito tempo que eu realmente usei o Linux - acho que vou tentar - o IntelliJ é um produto comercial, certo?
20912 Carsten
@ CarstenKönig Sim, é um produto comercial, no entanto, acredito que você pode obter licenças gratuitas se pretender usá-lo em sala de aula ou usá-lo para manter um projeto de código aberto (e pode provar isso).
Daniel B
11
@ CarstenKönig IntelliJ tem uma edição da comunidade (gratuita) .
yannis
o plugin scala para IntelliJ também é gratuito, mas eu ainda recomendaria o Eclipse.
Kim
Vindo do Visual Studio, o IntelliJ será um ambiente muito mais familiar para trabalhar. Parece uma versão reduzida do VS; enquanto as interfaces / fluxo de trabalho do Eclipse e do VS são extremamente diferentes.
Dan Is Fiddling Por Firelight
5

Todos os sistemas operacionais do tipo Unix têm ferramentas de linha de comando muito boas . Pessoalmente, tive boas experiências com o Ubuntu para desenvolvimento e implantação, muitos dos meus amigos também juram pelo MacOS. Não vi um motivo óbvio para preferir um ou outro; todos são IMO melhores que o Windows para o trabalho em linha de comando.

No lado Clojure / Scala especificamente, você pode achar que o Windows é realmente muito bom se você usar um dos Java IDEs com o plug-in Clojure / Java apropriado. Pessoalmente, uso o Eclipse com anti - horário como meu principal ambiente de desenvolvimento Clojure no Windows 7. Também há o Scala IDE para verificar. Essa é uma boa abordagem se você gosta de IDEs com todos os recursos e / ou deseja fazer programação poliglota no mesmo ambiente. Uma vantagem extra de usar algo como o Eclipse é que a integração do git / svn / maven é muito boa.

Mikera
fonte
3

Embora eu seja um grande fã de mac e linux, não há razão para que você não possa fazer nenhum desses idiomas no Windows. Além disso, se você quiser uma linguagem funcional no Windows, não negligencie o F #, que é uma linguagem .net

Zachary K
fonte
4
F # é uma das minhas principais línguas (o outro beeing C #): D
Carsten
Ainda não aprendi, mas parece uma linguagem bastante agradável. Hoje passo a maior parte do tempo em Erlang
Zachary K
2
O F # é o IMHO a melhor linguagem do ecossistema .net, faltando apenas um pouco de amor por ferramentas (sem refatorações, suporte a soluções quase inexistente (por exemplo, sem subpastas prontas para uso)) - você pode pensar nisso como alguns haskell / Ocaml / C # hyprid
Carsten
Foi isso que ouvi. Eu tenho a impressão de que F # é maneira de levar idéias geniais de Haskell e movê-los para o mundo .NET da Microsoft
Zachary K
@Carsten König: Eu não sei F #, mas, tanto quanto eu sei, é principalmente derivado de Ocaml.
Giorgio
3

Eu usei o Haskell no Windows, OS X e Linux (Ubuntu), para poder oferecer algumas observações sobre isso. Agora, qualquer coisa que você possa obter da Plataforma Haskell provavelmente funcionará bem, não importa o que acontecer, mas depois disso:

  • Relativamente poucos programadores Haskell usam o Windows. Você encontrará coisas no Hackage que assumem um ambiente semelhante ao Unix sem realmente declarar isso explicitamente.

  • Muita coisa útil vem das ligações da FFI às bibliotecas C, e a falta de uma cadeia de ferramentas de compilação C ainda vagamente consistente e confiável no Windows significa que, na minha experiência, instalar as ligações da FFI pelo hackage é, na melhor das hipóteses, um crapshoot.

  • Qualquer coisa necessariamente específica da plataforma, que de maneira divertida inclua bibliotecas de GUI de plataforma cruzada, é mais provável que "apenas funcione" no Linux.

  • Cygwin não ajuda tanto quanto você pensa.

Em resumo: tudo tende a funcionar no Linux, a maioria das coisas funciona no OS X, mas algumas são estranhas, e no Windows você deve encontrar muitas dores de cabeça interessantes ao usar as bibliotecas.

Se você só quer se divertir experimentando coisas e aprendendo Haskell, faça um favor a si mesmo e use uma VM do Ubuntu ou algo assim.

Tanto quanto os editores e tais go - emacs e vim são populares como sempre. Eu nunca aprendi a usá-lo (embora eu realmente deva ...) e não ligo para a maioria dos IDEs, então geralmente fico com o SciTE - é um invólucro fino em torno de um widget de editor chamado Scintilla, que você pode saber como sendo o que O Notepad ++ usa.

CA McCann
fonte
1

Em vez de escolher um sistema operacional, deixe-me abordar isso do ângulo do IDE. Se você estiver interessado em Scheme, eu o incentivaria a experimentar o DrRacket, que surgiu da selva de Scheme há alguns anos atrás. O IDE funciona bem no Windows, OS X e Linux.

Agora, você só precisa escolher o sistema operacional certo para executar todas as suas outras linguagens funcionais.

John Clements
fonte
obrigado - só descobri o Racket ontem - não tive muito tempo para investigar, mas o IDE / Lang. parece interessante para mim - embora eu ainda não possa dizer se é realmente viável para o desenvolvimento de aplicativos "reais".
Carsten
0

Simon Peyton-Jones, um dos criadores de Haskell é um usuário do Windows e, pelo que entendi, Haskell tem excelente suporte ao Windows.

Sua pergunta é um pouco vaga para ser honesta, sua escolha do SO não está ligada ao paradigma da linguagem que você está usando.

Pessoalmente, acredito que fora do mundo C # e Java (onde o ambiente de desenvolvimento é ditado pelo seu IDE), um ambiente de desenvolvimento deve sempre ser uma versão do Unix, seja BSD, Linux ou OSX.

djhworld
fonte