Que vantagens o Ubuntu tem sobre o Windows como ambiente de programação?

59

Por que escrever um programa em arquivos de texto ou pelo terminal é uma opção melhor (como leio) do que usar IDE (s) como o Visual Studio no Windows? Os recursos que um IDE fornece existem (por exemplo, mostrando erros de compilação) ou é um processo manual?

    
por muhammad 17.10.2013 / 10:15

13 respostas

85

Esse tipo de hipotético pode funcionar melhor em Programmers.SE porque é provável que seja bem simples aqui. Dito isso, eu fui desenvolvedor de .NET por alguns anos e passei a depender do Visual Studio. Faz muito para você e sim, eu particularmente gosto do depurador integrado ... No entanto, acho que existem algumas razões pelas quais as pessoas escolhem o Linux:

  • O Ubuntu é gratuito. Windows e VS podem ser extremamente caros.

  • O Ubuntu está livre . O Windows e o VS oferecem muito pouco controle sobre como você os usa.

  • O Ubuntu é um ambiente de programação direto da caixa. Ferramentas como Bash, grep , sed , awk . Windows é historicamente uma grande dor no fundo para script de. Os arquivos em lote são terríveis e, mesmo com o PowerShell, a experiência da linha de comando no Windows é insignificante em comparação com o Bash e as ferramentas GNU. Você pode transferir parte disso para o Windows, mas não é a mesma experiência.

  • Configurações complicadas são fáceis de automatizar e replicar por meio de apt-get , ferramentas como Marionete , Chef , Juju , Fabric e scripts simples.

  • Algumas coisas não precisam de IDEs complicados. Sou um desenvolvedor de Python atualmente e estou perfeitamente feliz com suas próprias ferramentas integradas e depurador. Eu uso um editor de texto, a linha de comando e tecido ... E estou muito mais no controle do que eu estava sob .net. Eu posso construir, testar, consolidar e implantar meus webapps com um único comando Fabric.

    Isso não quer dizer que não haja IDEs monolíticos. Eclipse e Netbeans. MonoDevelop. KDevelop4 e QT Creator. Todos eles têm seus usuários que juram por eles.

O Ubuntu é melhor para você ? Quem sabe. É um sistema muito capaz e muito personalizável. Se você der uma chance e alterar seu fluxo de trabalho para permitir que ele o ajude, você deve ser capaz de fazê-lo ficar.

    
por Oli 17.10.2013 / 10:42
37

Eu gostaria de adicionar mais uma razão importante; O Ubuntu é ótimo para experimentar novas bibliotecas, linguagens, IDEs e compiladores. Tudo é um apt-get away.

Então você ouviu falar de uma linguagem chique chamada Haskell :

sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!

Oh, você já ouviu um editor chique de Haskell:

sudo apt-get install <fancy-editor-for-haskell>

O mesmo acontece com C / C ++ , você apenas apt-get install e os binários e os cabeçalhos vão para as pastas corretas, e você pode apenas #include deles em seus arquivos de origem sem nem precisar verificar onde eles seja colocado!

Em essência, não se trata de quão rápido você pode configurar seu ambiente de trabalho diário. É também sobre quão extremamente rápido você pode configurar um ambiente experimental. Acredito que é isso que acelera a experiência de aprendizado no Linux.

    
por enobayram 17.10.2013 / 14:42
20

Aqui está uma opinião de um desenvolvedor de plataformas principalmente da Microsoft. Se você não está alvejando o ecossistema .NET, eu diria que sua melhor opção é o Ubuntu. Você terá muito mais facilidade em obter, configurar e usar ferramentas para quase todas as outras plataformas / idiomas se estiver no Ubuntu em vez do Windows.

O valor da toolchain da Microsoft é que ela é ALTAMENTE integrada. Do IDE ao controle de código-fonte, gerenciamento de projetos, criação, implantação, banco de dados, infraestrutura de nuvem, ad nauseum . A Microsoft torna MUITO fácil se você está indo bem com a plataforma deles.

Como alguns mencionaram, desviar-se do Microsoft Way pode ser uma dor. Usando o .NET para o seu código e o Oracle para o seu banco de dados ... isso será uma dor.

Deseja criar um aplicativo da web .NET e implantá-lo no Amazon Web Services ... não muito direto.

Mas se você ficar dentro do Microsoft Ecosystem ... esse bebê vai cantar como um pássaro zombeteiro para você. Nas mãos de um desenvolvedor de software competente, a Plataforma Microsoft é como PEDs para um atleta talentoso. Não vai permitir que um programador amador crie o próximo Facebook. Mas isso dará uma vantagem a um desenvolvedor talentoso que entende como as peças se encaixam.

O argumento para o custo grátis (como na cerveja) de começar a usar o Ubuntu está fora de portas, há uma série de programas que a Microsoft oferece que permitem que você comece a usar suas ferramentas gratuitamente. Incluindo o Bizspark, que dá à sua empresa iniciante 3 anos de licenças (incluindo licenças de uso de produção de suas ferramentas). E faísca de sonho que dá aos estudantes de graça.

Assim sendo, se você quiser explorar e aprender novos idiomas e plataformas, você encontrará ferramentas melhores para iniciar o Ubuntu e, se estiver procurando trabalho fora do ecossistema da Microsoft, precisará estar familiarizado com o Ubuntu.

    
por Michael Brown 18.10.2013 / 00:29
15

Eu uso as duas ferramentas, IDEs e editores de texto com C om-mand- L ine I nterface (abaixo referido como CLI ), para escrever programas.

O que o Linux oferece é uma CLI útil a partir da instalação padrão. Se você não precisa disso e está apenas usando um IDE, então não há mais muita diferença (IMHO).

IDEs

  • Os IDEs são muito bons quando se trata de integrar muitos recursos e apresentá-los em uma GUI gráfica.
  • A desvantagem é que isso pode sobrecarregar alguém novo nisso. Agora você terá duas coisas para aprender: o IDE e a linguagem de programação.

Editores de texto e ferramentas CLI

  • Os editores de texto e as ferramentas da CLI não demoram muito para aprender.
  • Se algo não funcionar, é fácil ver qual ferramenta não funciona conforme o esperado.
  • É mais fácil procurar problemas com o Google, pois tudo é baseado em texto.
  • A programação com editores de texto e ferramentas CLI é mais rápida e mais responsiva, especialmente comparando-as em hardware mais antigo.
  • Você pode trabalhar com eles mesmo em telas de baixa resolução.
  • Permite programar e depurar com o mínimo de recursos em um servidor remoto.

Frequentemente faço meu protótipo com ferramentas baseadas em texto. Mais tarde, quando houver mais arquivos para gerenciar, eu valorizo as ferramentas de refatoração que uma IDE está me oferecendo.

    
por MadMike 17.10.2013 / 10:32
12

Vou jogar minha resposta no ringue (embora eu acredite que todos são bons também).

A resposta mais básica que você pode obter é que é tudo sobre filosofia.

No mundo da Microsoft, é um pouco religioso - Você tem os deuses no Monte. Redmond, que deve ser peticionado se você quiser alguma coisa implementada. Às vezes eles vão ouvir, outras vezes seus sacrifícios e pedidos cairão em ouvidos surdos. Talvez eles estivessem caçando. A Microsoft controla todo o ecossistema - eles são donos do sistema operacional, eles são proprietários do IDE, e eles os combinam de maneiras que provavelmente são inapropriadas para falar em uma rede SE. Mesmo dentro das peças IDE, elas são strongmente acopladas - pode ser chamado de integrado , mas acho que o acoplado é mais preciso. Se você gostaria de mudar um pouco as coisas, Gates proíbe que você queira alterar algo de uma forma que os designers do Windows ou do Visual Studio não permitiram expressamente. E, em seguida, lançar tecnologias como o IE e IIS, servidores da Microsoft e MS SQL Server e Office ... e tudo é uma grande família feliz agradável. Mas se você quiser deixar parte da família para trás? tremor !

Por outro lado, você tem o Linux, que herda da filosofia Unix que cada peça deve ser responsável por sua própria pequena esfera de responsabilidade. Deveria fazer um coisa, e faz isto bem. E, de preferência, a comunicação deve acontecer por meio de strings de texto. Como outros salientaram, sed , awk , grep , etc. são exemplos perfeitos disso. Eles fazem a uma coisa que eles são projetados para fazer, e eles fazem isso muito bem. Se você precisar fazer duas coisas, combine as duas ferramentas. O que é muito fácil de fazer.

Como sed não espera nada além da entrada que chega, será texto, o que significa que qualquer coisa que pode produzir texto não precisa reinventar a roda. Eles podem simplesmente usar sed . E como sed produz texto, qualquer coisa que possa ler texto pode usar a saída de sed . O texto é muito universal (há algumas exceções a isso) e é muito fácil combinar esses tipos de coisas juntos.

Não só é fácil combiná-los, mas também é muito fácil separá-los - se eu decidir que não preciso mais editar um fluxo, mas eu quero filtrar os resultados, em vez de passar meu texto para sed , posso passá-lo para grep .

Agora, essa é a filosofia fundamental por trás do desenvolvimento em um ambiente Linux - por isso, mesmo que você vá até lá, muitas ferramentas fornecem tipos semelhantes de interfaces. Eles permitem que você os decomponha em partes, ou faça interface com eles através da linha de comando ou portas ou HTTP.

E mesmo que isso não seja , você também tem um software de código aberto. A maioria dos softwares (se não todos) da plataforma Linux é de código aberto. Então, se você não gosta de como está escrito, você é completamente, totalmente, absolutamente capaz de mudar o software sozinho. Isso é incrivelmente empoderador. Não é possível separar esse IDE do jeito que você quer? Faça as alterações e envie-as de volta ao upstream ou bifurque o projeto. Não tem certeza porque algo se comporta da maneira que faz? Use a fonte, Luke! Precisa ser capaz automatizar algo através da linha de comando? Hackeie o projeto e insira suas alterações. Você se depara com um bug ou com um problema de segurança? Ei, adivinhe - você pode consertar isso sozinho, você não precisa esperar que o SP3.432vb89234.startdate1eQ seja lançado.

Você pode combinar as ferramentas que deseja e precisa. E se há algo que está no seu caminho, você é 100% capaz de mudar isso. Mesmo que você não tenha a capacidade, você certamente poderia pagar alguém para desenvolver essa mudança - ou mesmo sugerir para alguém que tenha o conhecimento.

A razão pela qual isso é melhor para programação é porque quando você se depara com atrito , você pode eliminá-lo do seu fluxo de trabalho. Como o desenvolvimento é difícil , há muitas coisas que você deve pensar para ser um programador de sucesso, e quanto mais você tem que pensar sobre o mais difícil é pensar em outras coisas .

Eliminar o atrito é fundamental.

Então, se a religião do da Microsoft é onde você se sente em casa, e você gosta tanto das ferramentas que não lhe dá muito / nenhum atrito ... bem, provavelmente é apenas bem então.

Mas se você não se encaixa no Microsoft Mold (tm), patente pendente, então você vai se deparar com fricção. O desenvolvimento será uma dor. Cada vez que você deseja você pode fazer algo, mas não pode, isso vai drenar recursos cognitivos preciosos. E se esse for o caso, então um ambiente de desenvolvimento Linux provavelmente é para você.

    
por Wayne Werner 17.10.2013 / 17:02
9

Gostaria de fornecer meus pensamentos mais gerais à pergunta:

"Por que o Linux é um ambiente melhor para programação?"

Acho que a razão mais importante para se desenvolver no Linux é porque você tem uma visão completa da maioria dos componentes internos do software. Você é capaz de aprender como as coisas realmente funcionam se você estiver interessado. Isso permite que você aprenda e adapte boas ou más práticas, vendo-as em ação. Isso permite mais diversidade para suas ideias.

    
por schmijos 17.10.2013 / 15:18
8

Por que o Linux é melhor para programação

IDEs

Além do Visual Studio e do Xcode, que atendem às suas finalidades específicas, os IDEs mais populares são multiplataformas. Pode parecer que existem IDEs de zilhões para dezenas de idiomas, mas no final a maioria deles é baseada em Eclipse , IntelliJ IDEA ou NetBeans . O que eles têm em comum é que eles são todos baseados em Java. Java funciona de forma mais eficiente no Linux, do que em qualquer outro sistema operacional no mesmo hardware. Na verdade, o Java é 20% mais rápido no Linux, do que no OS X no mesmo hardware. Muitos desses IDEs estão prontos para instalar com um clique no Ubuntu Software Center.

Compilador

O GCC tornou-se muito padrão no setor. Além de qualquer dúvida, sua plataforma principal é o Linux, onde é melhor suportado. E é grátis e livre de royalties.

Ferramentas adicionais

O Linux fornece ferramentas únicas, não disponíveis em outras plataformas, como por exemplo Valgrind (uma ferramenta para depuração de memória, memória detecção de vazamento e criação de perfil). O Linux também vem com ferramentas de depuração, como strace e ltrace , que pode ser usado para depurar mesmo código de produção (ou seja, não compilado com símbolos de depuração). Ferramentas equivalentes para o Windows são inexistentes ou muito caras e não fornecem a mesma funcionalidade.

Facilidade de instalação do OSS

O Ubuntu tem um excelente gerenciador de pacotes. Na maioria dos casos, a instalação de software é apenas apt-get install package-name (você também pode fazer isso com GUI, Ubuntu Software Center ou Synaptic). Uma vez instalados, eles são atualizados automaticamente pelo sistema com versões de correção de erros. O sistema de pacotes também controla automaticamente as dependências, para que você não precise se preocupar com outros pacotes necessários; eles serão instalados automaticamente.

Por outro lado, no Windows, você precisa baixar e instalar pacotes manualmente, e se eles precisarem de outros pacotes, você precisa fazer isso manualmente também. Também não há atualização do sistema, cada pacote de software implementa seu próprio atualizador irritante ou não atualiza nada.

É muito provável que máquinas de produção sejam Linux

Se você está fazendo algum tipo de programação para back-end, para web, para cloud, etc. é muito provável que suas máquinas de destino sejam Linux. Há muito menos surpresas desagradáveis quando você está desenvolvendo no mesmo tipo de sistema operacional que sua máquina de destino.

Claro, você pode estar desenvolvendo um aplicativo de desktop para Windows, mas hoje em dia esse é um nicho de mercado de trabalho para programadores.

    
por vartec 17.10.2013 / 17:45
7
  

Por que escrever um programa em arquivos de texto ou pelo terminal é uma opção melhor (como leio) do que usar IDE (s) como o Visual Studio no Windows?

Não é, posso argumentar que é exatamente o oposto. Geralmente, porém, as pessoas tendem a preferir ferramentas nas quais são melhores. O tipo de ferramentas que você usa pode beneficiar a facilidade de escrever programas. Por exemplo, eu posso escrever programas Java muito bem com o vim, mas é muito contraproducente, em oposição a um IDE completo como o Eclipse ou o IntelliJ. Jon Skeet deu uma ótima resposta para a pergunta Por que usar um IDE .

De volta à sua pergunta original, a única coisa em que o Linux é melhor é a programação em C. Tudo o mais que você pode fazer no Linux também pode ser feito no Windows e vice-versa (programação). A programação C é melhor no Linux por razões históricas, ela oferece um grande conjunto de ferramentas (que você pode obter no Windows BTW, mas é muito mais fácil configurar o Linux para isso). Da mesma forma, se você estiver escrevendo C # e gostar do .NET, o Windows será a melhor opção por motivos óbvios. Tudo o mais é completamente subjetivo e você ouvirá prós e contras de ambos os lados.

    
por Daniel 17.10.2013 / 15:18
6

Quais ferramentas (editor de texto ou IDE) que você usa para programação é uma questão de escolha. De um modo geral, você pode dizer: Iniciantes e projetos muito pequenos tendem a usar melhores editores de texto, como texto sublime ou uma versão modificada do gedit. Só porque você aprende mais quando usa editores de texto simples. Os IDEs podem estragar seu processo de aprendizado automatizando coisas (como o Visual Studio);).

Quando se trata de profissionais, mexendo com muitas ferramentas e linguagens, os IDEs são úteis, porque eles podem fazer muito mais por você, se você permitir. Há muitos IDEs para escolher, dependendo do idioma em que você deseja programar. Existem os melhores e também os menos convenientes.

Minha experiência pessoal é que um sistema operacional Ubuntu é de longe mais rápido e fácil de configurar para o desenvolvimento do que o Windows. Eu presumo, isso é porque a maioria das ferramentas e programas que eu uso são construídos no Linux e porque eu não tenho que procurar na internet por links de download para os meus programas favoritos. É apenas um 'programa de instalação do apt-get1 program2 program3' away. Em comparação: Eu preciso de 3 dias úteis para instalar e configurar uma nova instalação do Windows com tudo o que preciso para programação (empresa, não privada, que seria mais rápida), mas é apenas um dia para a mesma tarefa no Ubuntu. >

Minha experiência é que os programadores, que mudam para o Linux para programação, têm (na maioria das vezes) uma compreensão mais profunda dos contextos técnicos e de como os conceitos básicos funcionam. Os usuários de Mac e Windows tendem a não saber por que algo funciona dessa maneira ou por que isso não acontece. Não tenho certeza se você pode realmente aprender alguma coisa trabalhando com o Linux ou se apenas aqueles que desejam aprender mudarão para o Linux.

Espero que meu "blafasel" ajude um pouco ...

    
por mondjunge 17.10.2013 / 10:42
1

Eu diria que uma distribuição Linux é uma IDE.

Para começar, o Unix foi projetado desde o início para ser um ambiente de desenvolvimento. Foi escrito por programadores para programadores. A maioria dos Unixes e Linux ainda vem com ferramentas de desenvolvimento em sua configuração padrão. E as partes ausentes estão apenas a apt-get (ou o equivalente). O Windows, por outro lado, é um péssimo ambiente de desenvolvimento até você instalar um IDE, que não é barato, ou um processo trivial.

Um IDE é mais integrado, no sentido de que os IDEs são mais strongmente acoplados do que usando o GCC, Git e Vi (por exemplo). O acoplamento apertado permite que coisas como 'intellisense' funcionem melhor. Mas, por outro lado, o acoplamento frouxo tem muitas vantagens (por exemplo, flexibilidade, intercambiabilidade, falta de bloqueio).

E os avanços no design de compiladores (compiladores com front-ends facilmente separáveis como o LLVM) podem eventualmente significar um melhor suporte para recursos como o realce de erros de sintaxe mesmo em ambientes fracamente acoplados.

    
por david25272 18.10.2013 / 01:08
1

Em matéria de filosofia: o Ubuntu / Linux permite que o programador de computador acesse diretamente os componentes internos e o hardware, enquanto o Windows é uma espécie de gatekeeper. Esta é uma questão filosófica importante quando se trata de programação. Então, filosoficamente falando, esse recurso, sendo uma vantagem, dependerá se o usuário é suficientemente conhecedor ou tecnicamente consciente da importância dele.

Sobre a questão da programação: Toda a arquitetura do sistema do Ubuntu / Linux é baseada na tradição Unix de programas pequenos e simples fazendo uma coisa e depois unindo-os para fazer coisas mais complexas. Para um programador, essa arquitetura é incrivelmente poderosa e, a meu ver, é a razão pela qual o Unix prevalecerá a longo prazo em relação a todas as outras arquiteturas de software em todas as plataformas. Um dos poucos lugares onde o Unix não é dominante atualmente é o desktop, mas isso mudará com o tempo. Distribuições como o Ubuntu estão ajudando a ver essa evolução.

Eu não discuto, no entanto, que existem alguns ambientes de programação muito bons no Windows. Para programação dentro de um ambiente corporativo, eles geralmente dominam.

    
por AsymLabs 18.10.2013 / 12:17
0

A velocidade é a resposta do tipo.

Acho que com um IDE gráfico como o Visual Studio ou o QtCreator eu uso muito o mouse quando deveria usar atalhos. Cada vez que você muda de contexto, você tem que pausar seu cérebro, focar em seu alvo e esperar pela ação. Considerando que pressionar F5 é infinitamente mais rápido.

Agora, se você estiver usando o vim, o Emacs ou qualquer outra coisa que não tenha botões de boa aparência, você estará focado nas teclas pressionadas, você tem um método e se torna mais rápido devido a sua rotina.

Os erros são apresentados de maneira mais detalhada com uma interface de linha de comando, que eu prefiro, e também fornece feedback durante a compilação. Uma coisa que eu odeio sobre o Visual Studio é o padrão é um pequeno ícone indicando que ele está fazendo uma compilação, então você obtém uma lista de erros.

Com uma visualização estreita, você manterá a largura de 80 colunas, o que ajuda a capacidade de leitura. Já vi um código que se estende até a largura de 200 colunas. Com o código ajustado para 80 colunas, você pode abrir 4/5 janelas por vez.

Com um editor CLI, você pode codificar remotamente, sem necessidade de uma sessão RDP lenta (em comparação ao texto) para o seu Visual Studio. Você pode codificar por um link GSM.

O desenvolvimento de formulários visuais é uma droga. Uma vantagem que você pode colocar em um GUI IDE é que você pode desenhar suas telas e torná-las mais rápidas. No entanto, na minha experiência, é bom para um protótipo, mas muitas vezes você obtém melhores resultados ao fazer isso manualmente no código. O Analisador de Código VS2012 esta manhã me avisou sobre 200+ problemas com código que foi gerado automaticamente pelo Visual Studio?!?!?

    
por Phil Hannent 18.10.2013 / 11:17
0

Acho que a sua verdadeira pergunta seria: "Existe alguma alternativa do Visual Studio que será executada no Ubuntu, já que não será?"

MonoDevelop.

É viável, mas você vai odiar se estiver acostumado com o VS e com todos os recursos.

NÃO há vantagem em usar um editor de texto. Lembra daquela coisa legal chamada IntelliSense? Não está acontecendo (mas o MonoDevelop tem algo parecido). Espero que isso ajude.

    
por Xavier J 09.01.2014 / 02:40