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?
application-development
programming
Muhammad Charaf
fonte
fonte
vim
. Esta é uma área muito subjetiva! Muitas pessoas usam IDEs no Linux, então você está misturando várias coisas aqui.Respostas:
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-get
ferramentas 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.
fonte
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 PSEu 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 :
Você já ouviu um editor chique de Haskell:
O mesmo com as bibliotecas C / C ++ , você apenas
apt-get install
elas, os binários e os cabeçalhos vão para as pastas corretas e pode apenas#include
nos 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.
fonte
apt-get
e a mentalidade de que tudo deve ser instalável dessa maneira é talvez a melhor coisa do Linux. Nem OSX nem Windows se comparam aqui.The MacPorts Project currently distributes 17699 ports
. Uma diferença é que ele sempre compila.yum
,pacman
,emerge
,petget
,pkgadd
...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.
fonte
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
Editores de texto e ferramentas CLI
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.
fonte
grep
não seria CLI, ele não tem uma interface (que seria apenas uma ferramenta de linha de comando)grep
sã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.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
sed
nada 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 usarsed
. E, comosed
produz texto, qualquer coisa que possa ler texto pode usar a saídased
. 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 emgrep
vez 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
ecossistemada 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ê.
fonte
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.
fonte
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.
fonte
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.
fonte
apt-get
é ótimo quando se trata de desenvolvimento em C. Você pode obter rapidamente ferramentas, bibliotecas e símbolos de depuração para, por exemplosudo apt-get install libcurl4-openssl-dev
,sudo apt-get install valgrind
,sudo apt-get install libz-dbg
e experimentar as coisas facilmente.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 ...
fonte
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.
fonte
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.
fonte
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?!?!?
fonte
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.
fonte