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


59

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


16
Algumas pessoas fazem programação há muito tempo e são altamente eficazes no que fazem a partir de um prompt de comando orientado a texto. Eles também podem encontrar editores que gostem vim. Esta é uma área muito subjetiva! Muitas pessoas usam IDEs no Linux, então você está misturando várias coisas aqui.
Warren P

3
Eu acredito que os IDEs não são o ponto principal da questão. Existem muitos IDEs para sistemas operacionais Linux. Por exemplo, todos os IDEs do JetBrains (IntelliJ / PyCharm etc.) funcionam no linux. O Eclipse funciona no linux. O QtCreator funciona no Linux.
Bakuriu

12
Esta pergunta que está neste site sofrerá um viés de confirmação .
zzzzBov

5
Em um esforço para manter a questão limpa da meta-discussão, abri um tópico Meta separado para abordá-lo especificamente .
Oli

4
Por favor, reformule esta pergunta para fazer mais sentido, em particular o título. O Ubuntu não força você a evitar IDEs e se apega aos editores de texto para desenvolvimento de software, assim como o Windows não.
Reinier Pós

Respostas:


87

Esse tipo de hipótese pode se sair melhor no Programmers.SE porque é provável que seja bastante unilateral aqui. Dito isto, fui desenvolvedor de .NET por alguns anos e dependi do Visual Studio. Faz muito por 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 é gratuito . O Windows e o VS oferecem muito pouco controle sobre como você os utiliza.

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

  • As configurações complicadas são fáceis de automatizar e replicar através de apt-getferramentas como Puppet , Chef , Juju , Fabric e scripts simples.

  • Algumas coisas não precisam de IDEs complicados. Atualmente, sou desenvolvedor Python e estou perfeitamente feliz com suas próprias ferramentas e depurador. Eu uso um editor de texto, a linha de comando e a malha ... E estou muito mais no controle do que no .NET. Posso criar, testar, confirmar e implantar meus aplicativos da web com um único comando do 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 o seu fluxo de trabalho para ajudá-lo, poderá fazê-lo permanecer.


18
"Grátis" é sobre custo e aborrecimento. Eu uso um Mac, mas uma ferramenta como o Vagrant facilita a configuração de uma VM Linux limpa para qualquer projeto e a descarta quando o projeto é concluído. "O que eu quero?" é a única consideração, não "tenho uma chave de licença para este sistema operacional e como faço para reconhecê-la ...?"
Nathan Long

14
+1 Para manter-se objetivo, quando tantas pessoas acham fácil ter uma atitude "Windoze é péssima em tudo".
Phil

2
Uma coisa a ser observada: o visual studio é mais gratuito do que costumava, já suporta arquivos MAKE por um tempo e os plug-ins permitem escrever e depurar aplicativos cygwin inteiramente no Visual Studio.
Scott Chamberlain

6
even PowerShell scripts lack the power of Bash- Eu diria que você não conhece muito bem o PS; é imensamente poderoso e eu não encontrei qualquer coisa que você pode fazer em Bash que você não pode fazer em PS
Mark Henderson

4
@ MarkHenderson Sim, é quase certamente por não usá-lo o suficiente. Foi introduzido no momento em que deixei o Windows e o .NET para trás. Eu acho que o Bash (e por "Bash" eu realmente quero dizer o GNU) levou comigo porque você o usa em todos os lugares e para tudo . PS necessária de modo muito pesquisando cada vez, porque tudo estava sempre super-especializado. É honestamente difícil dizer depois de tanto tempo com Bash.
Oli

37

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

Então você já ouviu falar sobre uma linguagem sofisticada chamada Haskell :

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

Você já ouviu um editor chique de Haskell:

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

O mesmo com as bibliotecas C / C ++ , você apenas apt-get installelas, os binários e os cabeçalhos vão para as pastas corretas e pode apenas #includenos arquivos de origem, sem precisar verificar onde eles foram colocados!

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


36
apt-gete a mentalidade de que tudo deve ser instalável dessa maneira é talvez a melhor coisa do Linux. Nem OSX nem Windows se comparam aqui.
Nathan Long

11
Sim, mas você precisa buscar o instalador de cada aplicativo manualmente: o fato de eles usarem o mesmo instalador não custa muito (economiza um pouco de esforço). Isso não é o mesmo que um gerenciador de pacotes embutido.
inutil inútil

2
@ NathanLong Acabei de fazer exatamente a mesma coisa usando o Macports: sudo port install ghc. Recém compilado a partir das fontes. The MacPorts Project currently distributes 17699 ports. Uma diferença é que ele sempre compila.
Alecail #

2
@karadeniz: E isso é para não mencionar yum, pacman, emerge, petget, pkgadd...
Aesin

2
Eu gosto do MacPorts (e mantenho alguns pacotes lá e no Homebrew), mas ele não pode se comparar ao Debian. Esses projetos menores simplesmente não têm o poder de manter um grande repositório no mesmo padrão. O mesmo vale para cygwin e coapp no ​​lado do Windows. A principal diferença é cultural, eu acho, os gerenciadores de pacotes linux fazem parte do sistema e são usados ​​para tudo por todos, eles não são um remanso levemente negligenciado de complementos.
jcupitt

20

Aqui está uma opinião de um desenvolvedor de plataforma 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 você estiver no Ubuntu e não no Windows.

O valor do conjunto de ferramentas da Microsoft é que ele é altamente integrado. Do IDE ao controle de origem, gerenciamento de projetos, criação, implantação, banco de dados, infraestrutura em nuvem e ad nauseum . A Microsoft facilita MUITO se você estiver trabalhando com a plataforma deles.

Como alguns mencionaram, desviar-se do Microsoft Way pode ser uma dor. Usar o .NET para o seu código e o Oracle para o seu banco de dados ... vai ser difícil.

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

Mas se você permanecer no ecossistema Microsoft ... esse bebê 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 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 gratuito (como na cerveja) de começar o Ubuntu está pronto: existem vários programas que a Microsoft oferece que permitem que você inicie suas ferramentas gratuitamente. Incluindo o Bizspark, que concede à sua empresa iniciante 3 anos de licenças (incluindo licenças de uso de produção de suas ferramentas). E o Dream spark, que o oferece gratuitamente aos alunos.

Dito isto, se você quiser explorar e aprender novas linguagens e plataformas, encontrará melhores ferramentas para começar no Ubuntu e, se estiver procurando trabalho fora do ecossistema da Microsoft, precisará se familiarizar com o Ubuntu.


7
Sim, eu concordo. Depois de escrever um código C / Unix de baixo nível por um tempo em um ambiente Linux, decidi fazer uma pausa e fazer algum desenvolvimento gráfico em C #, iniciei o novo VS e, bem, foi libertador, para dizer o mínimo. Não é tão flexível, mas com certeza facilita as coisas se você não se importa de vender sua alma para a Micr .. uh, quero dizer, expandir seus horizontes!
Thomas

3
Sim +1 para um antídoto de boas-vindas ao sniping anti-MS semi-informado.
Alan B

15

Eu uso ambas as ferramentas, IDEs e texto-editores com C ommand- 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 de qualquer maneira, 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 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 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 no Google, pois tudo é baseado em texto.
  • A programação com editores de texto e ferramentas CLI é mais rápida e mais ágil, comparando-os especialmente 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.

Costumo fazer a criação de protótipos com ferramentas baseadas em texto. Mais tarde, quando houver mais arquivos para gerenciar, valorizo ​​as ferramentas de refatoração que um IDE está me oferecendo.


8
Para referência futura, CLI é uma abreviação de interface da linha de comandos. A CLI normalmente se refere a uma interface como o aptitude, que é semelhante a uma GUI, mas em texto. Vim seria um editor CLI, mas grepnão seria CLI, ele não tem uma interface (que seria apenas uma ferramenta de linha de comando)
kiri

A desambiguação é boa. Vindo de um plano de fundo de programação do Windows, CLI pode representar Common Language Infrastructure .
jltrem

Eu uso uma GUI para desenvolver GUIs e um editor de texto para desenvolver CLI / programas / conteúdo baseado em texto. Eu nunca tentaria escrever um aplicativo comercial pesado com GUI no Vim, o Visual C # facilita a criação de protótipos dessas coisas. Da mesma forma, eu nunca faria desenvolvimento web (PHP / HTML / CSS / JS etc.) em um IDE no Windows, porque fazê-lo no Vim no meu servidor web é infinitamente mais eficiente e conveniente.
Dan

@ minez029 A CLI é um programa no estilo grep (um comando [linha] de cada vez). Você está pensando em "aplicativos de console", que são do estilo aptitude / vim.
precisa saber

4
@ minerz029 A interface para grepsão os argumentos stdin e stdout - a palavra não implica nada gráfico ou pseudo-gráfico. Outros tipos de interfaces incluem APIs da web, protocolos seriais e assim por diante.
Izkata

12

Vou jogar minha resposta no ringue (embora acredite que todas sejam boas 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 solicitado se você quiser algo implementado. Às vezes eles ouvem, outras vezes seus sacrifícios e pedidos caem em ouvidos surdos. Talvez eles estivessem caçando. A Microsoft controla todo o ecossistema - eles possuem o SO, o IDE e os juntam de maneiras provavelmente inapropriadas para falar em uma rede SE. Mesmo dentro das peças do IDE estão fortemente acopladas - pode ser chamado de integradomas acho que acoplado é mais preciso. Se você gostaria de mudar um pouco as coisas, Gates proíbe que você queira alterar algo de uma maneira que os designers do Windows ou do Visual Studio não permitiram expressamente. E, em seguida, instale tecnologias como IE, IIS, servidores Microsoft, MS SQL Server e Office ... e tudo é uma ótima e feliz família. Mas se você quiser deixar parte da família para trás? estremecer !


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

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

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 quero filtrar os resultados, em vez de passar meu texto sed, posso passar em grepvez disso.

Agora, essa é a filosofia fundamental por trás do desenvolvimento em um ambiente Linux - portanto, mesmo se você for a partir daí, muitas ferramentas oferecem tipos semelhantes de interfaces. Eles permitem decompô-los em partes ou fazer interface com eles através da linha de comando ou portas ou HTTP.

E mesmo que não fosse esse o caso, você também tem software de código aberto. A maioria dos softwares (se não todos) da plataforma Linux é de código aberto. Portanto, se você não gosta de como está escrito, é completamente, totalmente, absolutamente capaz de alterar o software por conta própria. Isso é incrivelmente poderoso. Não é possível separar esse IDE da maneira que você deseja? Faça as alterações e envie-as de volta a montante ou bifurque o projeto. Não sabe por que algo se comporta da maneira que faz? Use a fonte, Luke! Precisa ser capaz de automatizar algo através da linha de comando? Hackeie o projeto e faça as alterações necessárias. Encontre um bug ou um problema de segurança? Ei, adivinhe - você mesmo pode consertar isso, não precisa esperar que o SP3.432vb89234.startdate1eQ seja lançado.

Você pode combinar as ferramentas que deseja e precisa. E se houver algo no seu caminho, você é 100% capaz de mudar isso. Mesmo se você não tiver a capacidade, certamente poderia pagar alguém para desenvolver essa mudança - ou até sugeri-la a outra pessoa que tenha o conhecimento.

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

Eliminar o atrito é fundamental.

Portanto, se a religião do ecossistema da Microsoft é onde você se sente em casa, e você gosta tanto das ferramentas que não fornece muito / nenhum atrito ... bem, provavelmente tudo bem.

Mas se você não se encaixar no Microsoft Mold (tm), com patente pendente, terá um atrito. Desenvolvimento será uma dor. Cada vez que você deseja, pode fazer algo, mas não pode, que irá drenar recursos cognitivos preciosos. E se for esse o caso, provavelmente um ambiente de desenvolvimento Linux é para você.


11
Gostei muito dos ensaios que você vinculou, obrigado.
precisa

3
Elogie Balmer, e que todos os seus Parity Bits sejam definidos corretamente. ACK. ACK. ACK.
Warren P

9

Gostaria de fornecer meus pensamentos mais gerais à pergunta:

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

Eu acho que a razão mais importante para desenvolver no Linux é porque você tem uma visão completa da maioria dos softwares internos. Você é capaz de aprender como as coisas realmente funcionam se 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 idéias.


2
Bom ponto. O código aberto é um benefício natural para todos os desenvolvedores que têm algum tipo de curiosidade. Nas janelas, são tartarugas até o fim!
Warren P

Este é um bom ponto. Você tem uma visão sobre os internos de um software aqui
Anwar

Muitos desenvolvedores do Windows trabalharão toda a sua vida profissional na plataforma Windows, programando em uma API que nunca verão do outro lado. Uma espécie de prisão para a mente, você não acha?
Warren P

@WarrenP Se uma API estiver devidamente documentada, você não aprenderá mais sobre ela olhando o código-fonte. (Embora eu admito muitos APIs não estão totalmente documentado, em ambos os mundos.)
svick

8

Por que o Linux é melhor para programação

IDEs

Além do Visual Studio e do Xcode, que atendem a propósitos específicos, os IDEs mais populares são multiplataforma. Pode parecer que existem gazilhões de IDEs para dezenas de idiomas, mas no final a maioria deles é baseada no Eclipse , no IntelliJ IDEA ou no NetBeans . O que eles têm em comum é que são todos baseados em Java. Java funciona com mais eficiência no Linux, do que em qualquer outro sistema operacional no mesmo hardware. De fato, 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 se tornou muito padrão da indústria. Além de qualquer dúvida, sua plataforma principal é o Linux, onde é melhor suportada. E é gratuito e sem royalties.

Ferramentas adicionais

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

Facilidade de instalação do OSS

O Ubuntu possui um excelente gerenciador de pacotes. Na maioria dos casos, a instalação de software é justa apt-get install package-name(você também pode fazer isso com a GUI, Ubuntu Software Center ou Synaptic). Uma vez instalados, eles são atualizados automaticamente pelo sistema com lançamentos de correções. 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 manualmente os pacotes e, se eles exigirem outros pacotes, também é necessário fazer isso manualmente. Também não há atualização em todo o sistema, cada pacote de software implementa seu próprio atualizador irritante ou não é atualizado.

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

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

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


Aplicativos de desktop para Windows são um nicho de mercado? Wha?
Alan B

2
@ AlanB: Não, programadores de aplicativos para desktops do Windows são um nicho. Estima-se que 90-95% dos programadores estão desenvolvendo internamente e, na maioria, esses não são aplicativos de desktop. Além disso, pense bem, quando foi a última vez que você comprou (como em dinheiro real pago) um aplicativo Windows, que não era um jogo (nem um produto da Adobe)?
vartec

Até onde eu posso ver, quase tudo no espaço de negócios ainda é resolutamente baseado em desktop e pago, apesar de as empresas centradas na nuvem alegarem continuamente o contrário.
Alan B

4
@ AlanB: novamente, eu não estou falando sobre o mercado de usuários finais. Estou falando de mercado de trabalho para programadores . Por exemplo, um dos aplicativos que você está falando é o MS Office. No entanto, toda a equipe do Office na MS tem apenas cerca de 2.500 programadores, e muitos deles nem sequer estão trabalhando na versão desktop.
vartec

7

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

Não é, posso argumentar que é exatamente o contrário. 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 é realmente contraproducente em oposição a um IDE completo como Eclipse ou IntelliJ. Jon Skeet deu uma ótima resposta para a pergunta Por que usar um IDE .

Voltando à 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, você também pode fazer no Windows e vice-versa (programação). A programação C é melhor no Linux por razões históricas, oferece um ótimo conjunto de ferramentas (que você pode acessar no Windows BTW, mas é muito mais fácil configurar o Linux para ele). Da mesma forma, se você estiver escrevendo C # e gosta do .NET, o Windows é uma escolha melhor por razões óbvias. Tudo o resto é completamente subjetivo e você ouvirá prós e contras de ambos os lados.


5
Por favor, tente configurar um ambiente <colocar outra linguagem de programação, exceto o MS aqui>> no Windows, vamos ver até onde ele vai.
Braiam

11
@Braiam eu fiz, Java: P.
Daniel

6
O Linux é melhor em executar qualquer coisa semelhante ao Unix. A cadeia de ferramentas GCC (que inclui um compilador C e C ++ e outras coisas) tem uma longa herança Unix / Posix. Mas, se você acha que toda a programação do tipo Unix é C, você está subexposta à rica diversidade da herança e das ferramentas do Unix / Posix / Linux.
Warren P

2
Java é um caso especial, pois você gera rapidamente pastas profundamente aninhadas e muitos arquivos. E assim que você renomeia classes ou pacotes, é necessário sincronizar os nomes de arquivos ou as pastas, respectivamente. Fun fun fun :)
madmike

11
Não sei se o Linux e a CLI necessariamente são melhores para a programação C (o VS é ótimo em C ++, mas não possui suporte a C99, o Posix pode ser um pouco mais limpo que o Win32). Mas apt-geté ótimo quando se trata de desenvolvimento em C. Você pode obter rapidamente ferramentas, bibliotecas e símbolos de depuração para, por exemplo sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbge experimentar as coisas facilmente.
precisa

6

Quais ferramentas (editor de texto ou IDE) 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 ao usar editores de texto simples. Os IDEs podem estragar seu processo de aprendizado automatizando coisas (como o Visual Studio faz;)).

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. Existem muitos IDEs para escolher, dependendo do idioma em que você deseja programar. Existem outros melhores e outros menos convenientes.

Minha experiência pessoal é que um sistema operacional Ubuntu é muito mais rápido e fácil de configurar para desenvolvimento do que o Windows. Presumo que isso ocorre porque a maioria das ferramentas e programas que utilizo são construídos no Linux e porque não preciso pesquisar na Internet links de download para meus programas favoritos. É apenas um 'apt-get install program1 program2 program3' de distância. Em comparação: 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 Linux para programação têm (na maioria das vezes) uma compreensão mais profunda dos contextos técnicos e de como funcionam os conceitos básicos. Os usuários de Mac e Windows tendem a não saber por que algo funciona dessa maneira ou por que não. Não tenho certeza se você pode realmente aprender algo trabalhando com Linux ou se apenas aqueles que desejam aprender mudam para o Linux.

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


1

Eu diria que uma distribuição Linux é um 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 é fornecida com ferramentas de desenvolvimento em sua configuração padrão. E as peças ausentes estão apenas a apt-get(ou o equivalente) de distância. O Windows, por outro lado, é um ambiente de desenvolvimento terrível 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 fortemente acoplados do que o GCC, Git e Vi (por exemplo). Um acoplamento apertado permite que coisas como o `intellisense 'funcionem melhor. Mas, por outro lado, o acoplamento frouxo tem muitas vantagens (por exemplo, flexibilidade, intercambiabilidade, falta de travamento).

E os avanços no design do compilador (compiladores com front-ends facilmente separáveis, como LLVM) podem, eventualmente, significar melhor suporte a recursos como destaque de erro de sintaxe, mesmo em ambientes pouco acoplados.


Então, basicamente, você está dizendo que o Linux é um ambiente de desenvolvimento integrado que na verdade não é muito integrado? :-)
svick

1

Sobre a questão da 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. Portanto, filosoficamente, esse recurso é uma vantagem dependerá do conhecimento do usuário ou do conhecimento técnico da importância dele.

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

Não discuto, no entanto, que haja alguns ambientes de programação muito bons no Windows. Para a programação em um ambiente corporativo, eles geralmente dominam.


0

Velocidade é a resposta ordenada.

Acho que, com um IDE gráfico como o Visual Studio ou QtCreator, uso muito o mouse quando devo usar atalhos. Cada vez que você alterna o contexto, precisa pausar o cérebro, concentrar-se no alvo e aguardar a ação. Enquanto 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ê terá um método e ficará mais rápido devido à 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 no Visual Studio é o padrão é um pequeno ícone indicando que ele está fazendo uma compilação e, em seguida, você obtém uma lista de erros.

Com uma visão estreita, você manterá a largura de 80 colunas, o que ajuda na legibilidade. Vi um código que se estende até a largura de 200 colunas. Com o código ajustado para 80 colunas, você pode ter 4/5 janelas abertas por vez.

Com um editor de CLI, você pode codificar remotamente, sem a necessidade de uma sessão RDP lenta (em comparação com o texto) no Visual Studio. Você pode codificar através de um link GSM.

O desenvolvimento visual da forma é uma merda. Uma vantagem que você pode colocar em um GUI IDE é que você pode desenhar suas telas e mais rapidamente. No entanto, na minha experiência, é bom para um protótipo, mas muitas vezes você obtém melhores resultados ao fazê-lo manualmente no código. O VS2012 Code Analyzer hoje de manhã me alertou sobre mais de 200 problemas com o código gerado automaticamente pelo Visual Studio?!?!?


0

Eu acho que sua verdadeira pergunta pode ser: "Existem alternativas do Visual Studio que serão executadas no Ubuntu, uma vez que não?"

MonoDevelop.

É viável, mas você o odiará se estiver acostumado ao VS e a 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 isto ajude.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.