¿Cuáles son los beneficios de usar la línea de comandos para el desarrollo de software? [cerrado]

8

¿Qué beneficios se obtienen al usar la línea de comandos para el desarrollo de software sobre el uso de una GUI alternativa? ¿La línea de comando es más rápida para ciertas tareas? ¿Ciertas herramientas solo están disponibles a través de la línea de comando?

br3w5
fuente
¿Te refieres a usar compiladores de línea de comando versus un IDE? ¿O estás hablando de la interfaz de usuario de los programas que creas?
Lord Tydus
1
@ LordTydus Me refería a los compiladores de línea de comandos y otras herramientas de línea de comandos y cómo se puede usar para administrar bases de datos, etc. frente a un IDE y otras herramientas GUI
br3w5
44
Cuando Eclipse puede mostrar su pantalla de presentación, un maestro CLI se ha lanzado vien un archivo, reparó un error menor y guardó el archivo actualizado. Quizás también makeesté en progreso.
Mouviciel
1
No vamos hablar de lo que sucede cuando la interfaz de usuario de forma remota chico conchas en la máquina roto otro lado del mundo .... El tipo CLI está abajo en el pub para viernes bebidas de la tarde antes de la pantalla de inicio se carga .....
mattnz

Respuestas:

28

Las ventajas de la línea de comando sobre las aplicaciones GUI incluyen:

  1. Si está escribiendo tales herramientas en lugar de usarlas, es fácil desarrollar la línea de comandos. La aceptación de argumentos en la línea de comandos es trivial y la salida a una secuencia de texto es igualmente fácil.
  2. Las aplicaciones de línea de comandos se pueden usar fácilmente en archivos por lotes o scripts, lo cual es ideal para pruebas o compilaciones automáticas. La mayoría de las herramientas de compilación, como make, ant y msbuild, proporcionan un buen soporte para llamar a las herramientas de línea de comandos.
  3. Los flujos de entrada, salida y error se pueden redirigir fácilmente, lo que permite enviar o recibir información de archivos u otras aplicaciones. Esto puede significar que los datos de prueba se pueden suministrar o capturar fácilmente.
  4. Existe un mecanismo de retorno de error simple pero estándar (código de retorno y flujo de error). La detección de un error en una GUI puede requerir la automatización de la interfaz de usuario.
  5. El uso a través de shell remoto o conexiones similares hace que sea mucho más fácil realizar tareas de forma remota, como cuando un desarrollador se conecta desde su casa o en la carretera. Las conexiones de escritorio remoto son más frecuentes en estos días, pero requieren más ancho de banda y una conexión de menor latencia.
  6. Hay estándares definidos para la ayuda (como el mancomando unix o pasar -? Como argumento). Si alguien no conoce una función, puede ver fácilmente lo que proporciona la herramienta. Del mismo modo, hay estándares de sintaxis comodín definidos para especificar múltiples archivos, basándose en el conocimiento del desarrollador existente.

Sin embargo, las aplicaciones de línea de comandos tienen estas desventajas en comparación con las aplicaciones GUI:

  1. Las aplicaciones de línea de comandos son más difíciles de aprender a usar, particularmente para aquellos que no están acostumbrados a ellas. Esto generalmente no es un problema para el desarrollo de software porque los desarrolladores a menudo están acostumbrados a utilizar herramientas de línea de comando, pero podría ser problemático para las personas menos técnicas involucradas en el desarrollo, como QA junior, localización y escritores técnicos.
  2. Las aplicaciones de línea de comandos requieren un teclado y, por lo tanto, no son prácticas para algunos dispositivos como teléfonos o tabletas.
akton
fuente
1
gracias por una respuesta tan completa (dejaré que la pregunta madure un poco y luego seleccione una respuesta elegida, pero la suya es muy útil): ¿hay algún recurso que recomiende para obtener un conocimiento profundo de la línea de comando (preferiblemente terminal de Linux)?
br3w5
1
@ssbrewster El arte de la programación de Unix ( catb.org/esr/writings/taoup ) le dará una buena idea de por qué la línea de comandos de Linux funciona de la manera en que lo hace. Lo cual es mucho más importante para aprender a usarlo que cómo funciona. Lo importante es saber cuáles son las convenciones subyacentes y cómo descubrir nuevas funcionalidades. Una vez que sepa esas dos cosas, todo lo demás se desarrollará naturalmente con el tiempo. Además, es una muy buena lectura.
Racheet
8

Supongo que te refieres a usar un compilador de línea de comandos en lugar de un IDE. Deja un comentario si no y borraré mi respuesta.

Aprendizaje. Aprender cómo se compilan, vinculan o asignan unidades de código en su idioma. Por lo general, debe decirle explícitamente al compilador qué archivos compilar y vincular. Entonces obtienes una mejor comprensión de cómo funciona. Un IDE hará magia para hacerte la vida más fácil pero te mantendrá ignorante.

Luego, va un paso más allá y aprende a crear su propio archivo de creación. Esta es una habilidad valiosa. Su archivo de creación hace que el enfoque del ciclo de compilación sea conveniente para la "magia IDE" sin perder la comprensión y el aprendizaje.

Además, su proceso de compilación es fácil de poner en el control de origen. Y es fácil portar su proceso de compilación para trabajar con una variedad de compiladores. A veces es solo cuestión de cambiar 1 línea en el archivo de creación para el nombre del compilador.

Desarrollas habilidades que te permiten trabajar en muchas plataformas. Los editores de texto y los compiladores de línea de comandos son muy similares de todos los proveedores y en todas las plataformas. Estas herramientas básicas le brindan un pase para desarrollar en cualquier sistema, en cualquier momento y en cualquier lugar 24/7. Si ha estado viviendo en Visual Studio toda su vida, será una transición mucho más difícil trabajar fuera de él.

Si sigue este camino, puede molestarse en aprender un editor de texto avanzado como VIM. Complementa la capacidad de trabajar en cualquier plataforma, ya que es compatible en casi todas partes. Tiene una gran curva de aprendizaje, pero la recompensa es la capacidad de editar texto sin esfuerzo a alta velocidad sin mover las manos hacia el mouse.

Por cierto, no estoy en contra de los IDE.

Lord Tydus
fuente
Gracias @LordTydus la recomendación archivo make es realmente útil y conseguir la derecha en cómo funcionan las cosas en niveles bajos es como me gusta aprender
br3w5
2
Otra ventaja de usar la línea de comando es que es mucho más fácil especificar múltiples archivos usando comodines, como * .c: la única forma de hacerlo con GUI es proporcionar un cuadro de edición de pseudo línea de comando.
tcrosley
4

Las GUI tienen la ventaja de poder utilizar visualizaciones avanzadas. Esto puede ser extremadamente útil para hacer que los datos complejos sean significativos.

Las líneas de comando, por otro lado, a menudo son más potentes (por ejemplo, totalmente programables) y también suelen ser más rápidas. Las otras respuestas se han expandido sobre eso; aquí solo me gustaría mencionar que las GUI no ofrecen una ventaja para algunas tareas:

En el desarrollo, muchas tareas en realidad no necesitan ninguna visualización que no se pueda hacer usando una línea de comando / interfaz de texto. Tome la compilación: los buenos editores de texto (Vim, Emacs) admiten fácilmente el análisis de mensajes de error y saltan directamente al error en el código. Los IDEs gráficos no ofrecen más. En pocas palabras, para tales tareas no hay necesidad de una interfaz gráfica, y perderías la flexibilidad y eficiencia de una interfaz de línea de comando.

Por otro lado, una visualización interactiva puede ser muy útil si se trata de una interacción de datos compleja. El software de control de versiones que puede mostrar gráficos de rama a menudo supera las interfaces de texto aquí. Por ejemplo, esta es una instantánea de uno de mis repositorios:

gráfico de rama

Esto es mucho más conveniente que la interfaz de texto, a pesar de que ni siquiera es una visualización particularmente poderosa. Pero una vez más, tenga en cuenta que en realidad manipular el repositorio es más rápido usando la línea de comando (al menos para mí). Yo uso la GUI solo para mostrar las ramas.

También tenga en cuenta cómo Github ha agregado recientemente una interfaz de línea de comandos en reconocimiento del hecho de que muchas tareas se pueden realizar más rápido escribiendo un comando que haciendo clic en una página web.

Konrad Rudolph
fuente