Quais são os benefícios de usar a linha de comando para o desenvolvimento de software? [fechadas]

8

Quais são os benefícios obtidos com o uso da linha de comando para o desenvolvimento de software, usando uma GUI alternativa? A linha de comando é mais rápida para determinadas tarefas? Algumas ferramentas estão disponíveis apenas através da linha de comando?

br3w5
fonte
Você quer dizer usar compiladores de linha de comando versus um IDE? Ou você está falando sobre a interface do usuário dos programas que você cria?
Lord Tydus 30/09/12
1
@LordTydus eu estava me referindo compiladores de linha de comando e outras ferramentas de linha de comando e como ele pode ser usado para gerenciar bancos de dados etc vs um anúncio IDE outras ferramentas GUI
br3w5
4
No momento em que o Eclipse é capaz de exibir sua tela inicial, um mestre da CLI foi iniciado viem um arquivo, corrigiu um bug menor e salvou o arquivo atualizado. Talvez makeesteja em andamento também.
Mouviciel 1/10/12
1
Nós rotina mencionar o que acontece quando o UI cara remotamente conchas para uma máquina quebrada outro lado do mundo .... O cara cli é baixo no pub para bebidas da tarde de sexta-feira antes de a tela inicial é carregado .....
mattnz

Respostas:

28

As vantagens da linha de comando sobre aplicativos GUI incluem:

  1. Se você estiver escrevendo essas ferramentas em vez de usá-las, é fácil desenvolver a linha de comando. Aceitar argumentos na linha de comando é trivial e a saída para um fluxo de texto é igualmente fácil.
  2. Os aplicativos de linha de comando podem ser facilmente usados ​​em arquivos ou scripts em lote, o que é ótimo para testes ou compilações automatizadas. A maioria das ferramentas de construção, como make, ant e msbuild, fornece um bom suporte para chamar ferramentas de linha de comando.
  3. Os fluxos de entrada, saída e erro podem ser facilmente redirecionados, permitindo que as informações sejam enviadas ou recebidas de arquivos ou outros aplicativos. Isso pode significar que os dados de teste podem ser facilmente fornecidos ou capturados.
  4. Existe um mecanismo de retorno de erro simples, mas padrão (código de retorno e o fluxo de erros). Detectar um erro em uma GUI pode exigir automação da interface do usuário.
  5. O uso em shell remoto ou conexões semelhantes facilita muito a execução remota de tarefas, como quando um desenvolvedor está se conectando de casa ou em trânsito. Atualmente, as conexões de área de trabalho remota são mais prevalentes, mas exigem mais largura de banda e menor latência.
  6. Existem padrões definidos para ajuda (como o mancomando unix ou a passagem -? Como argumento). Se alguém não conhece um recurso, pode ver facilmente o que a ferramenta fornece. Da mesma forma, existem padrões de sintaxe curinga definidos para especificar vários arquivos, com base no provável conhecimento existente do desenvolvedor.

No entanto, os aplicativos de linha de comando têm essas desvantagens em comparação aos aplicativos da GUI:

  1. Os aplicativos de linha de comando são mais difíceis de aprender a usar, principalmente para aqueles que não estão acostumados. Isso geralmente não é um problema para o desenvolvimento de software porque os desenvolvedores costumam ser usados ​​para ferramentas de linha de comando, mas podem ser problemáticos para pessoas menos técnicas envolvidas no desenvolvimento, como controle de qualidade júnior, localização e redatores técnicos.
  2. Os aplicativos de linha de comando requerem um teclado e, portanto, são impraticáveis ​​para alguns dispositivos, como telefones ou tablets.
Akton
fonte
1
obrigado por uma resposta tão abrangente (vou deixar a pergunta amadurecer um pouco e depois selecionar a resposta escolhida, mas a sua é muito útil) - existem recursos que você recomendaria para obter um conhecimento profundo da linha de comando (de preferência o terminal linux)?
Br3w5
1
@ssbrewster A arte da programação unix ( catb.org/esr/writings/taoup ) dará uma boa idéia de por que a linha de comando do linux funciona da maneira que funciona. O que é muito mais importante para aprender a usá-lo do que como ele funciona. O importante é saber quais são as convenções subjacentes e como descobrir novas funcionalidades. Depois que você souber essas duas coisas, tudo o resto se desenrolará naturalmente com o tempo. Além disso, é uma leitura muito boa.
Racheet 23/05
8

Suponho que você queira dizer usando um compilador de linha de comando em vez de um IDE. Deixe um comentário, se não, e vou excluir minha resposta.

Aprendendo. Aprenda como as unidades de código são compiladas, vinculadas ou mapeadas juntas no seu idioma. Normalmente, você deve informar explicitamente ao compilador quais arquivos compilar e vincular. Então você entende melhor como funciona. Um IDE fará mágica para facilitar sua vida, mas manterá você ignorante.

Você então dá um passo adiante e aprende a criar seu próprio arquivo de composição. Esta é uma habilidade valiosa. Seu arquivo make faz com que o ciclo de construção se aproxime da conveniência da "mágica do IDE", mantendo o entendimento e o aprendizado completos.

Além disso, seu processo de criação é fácil de colocar no controle de origem. E é fácil portar seu processo de compilação para trabalhar com uma variedade de compiladores. Às vezes, é apenas uma questão de alterar uma linha no arquivo make para o nome do compilador.

Você desenvolve habilidades que permitem trabalhar em várias plataformas. Editores de texto e compiladores de linha de comando são muito semelhantes em todos os fornecedores e em todas as plataformas. Essas ferramentas básicas oferecem a você um passe para desenvolver em qualquer sistema, a qualquer hora e em qualquer lugar 24/7. Se você vive no Visual Studio a vida toda, será uma transição muito mais difícil trabalhar fora dele.

Se você seguir esse caminho, talvez queira aprender um editor de texto avançado como o VIM. Ele complementa a capacidade de trabalhar em qualquer plataforma, pois é suportado em quase todos os lugares. Ele tem uma enorme curva de aprendizado, mas o benefício é a capacidade de editar texto sem esforço em alta velocidade sem mover as mãos para o mouse.

Aliás, eu não sou contra IDEs.

Lord Tydus
fonte
Graças @LordTydus a recomendação tornar arquivo é realmente útil e recebendo a direita em como as coisas funcionam em níveis baixos é como eu gosto de aprender
br3w5
2
Outra vantagem do uso da linha de comando é que é muito mais fácil especificar vários arquivos usando curingas, como * .c - a única maneira de fazer isso com as GUIs é fornecer uma pseudo caixa de edição de linha de comando.
Tcrosley 30/09/12
4

As GUIs têm a vantagem de poder usar visualizações avançadas. Isso pode ser extremamente útil para tornar significativos os dados complexos.

As linhas de comando, por outro lado, geralmente são mais poderosas (por exemplo, totalmente programáveis) e também geralmente mais rápidas. As outras respostas se expandiram nisso - aqui, gostaria apenas de mencionar que as GUIs não oferecem uma vantagem para algumas tarefas:

No desenvolvimento, muitas tarefas não precisam de visualização que não possa ser feita usando uma interface de linha de comando / texto. Considere a compilação: bons editores de texto (Vim, Emacs) suportam prontamente a análise de mensagens de erro e pulam diretamente para o erro no código. IDEs gráficos não oferecem mais. Simplificando, para essas tarefas, não há necessidade de uma interface gráfica e você perderia a flexibilidade e a eficiência de uma interface de linha de comando.

Por outro lado, uma visualização interativa pode ser muito útil se você estiver lidando com uma interação de dados complexa. O software de controle de versão que pode exibir gráficos de ramificações geralmente supera as interfaces de texto aqui. Por exemplo, este é um instantâneo de um dos meus repositórios:

gráfico de ramificação

Isso é muito mais conveniente do que a interface de texto, mesmo que essa nem seja uma visualização particularmente poderosa. Mas, mais uma vez, observe que manipular o repositório é mais rápido usando a linha de comando (pelo menos para mim). Eu uso a GUI apenas para exibir os ramos.

Observe também como o Github adicionou recentemente uma interface de linha de comando em reconhecimento ao fato de que muitas tarefas podem ser realizadas mais rapidamente digitando um comando do que clicando em uma página da web.

Konrad Rudolph
fonte