Pregunta

Para los lenguajes de secuencias de comandos, ¿cuál es la forma más eficaz de utilizar una consola durante el desarrollo?¿Hay formas de ser más productivo con una consola que con un lenguaje exclusivo de "compilar y ejecutar"?

Aclaración agregada:Estoy pensando más en la línea de Ruby, Python, Boo, etc.Idiomas que se utilizan para aplicaciones completas, pero que también tienen una forma de ejecutar pequeños fragmentos de código en una consola.

¿Fue útil?

Solución

Estoy pensando más en la línea de Ruby,...

Bueno para Ruby el irb El mensaje interactivo es una gran herramienta para "practicar" algo simple.Estas son las cosas que mencionaré sobre el irb para darle una idea de su uso efectivo:

  • Automatización.Se te permite un .irbrc archivo que se ejecutará automáticamente al iniciar irb.Eso significa que puedes cargar tus bibliotecas favoritas o hacer lo que desea en Ruby completo de forma automática.Para ver a qué me refiero, consulte algunos de los que se encuentran en dotfiles.org.

  • Autocompletar.Eso incluso facilita la escritura de código.¿No recuerdas ese método de cadena para eliminar nuevas líneas? "".ch<tab> produce picar y morder. NOTA:Tienes que habilitar el autocompletado para irb tú mismo.

  • Divide y conquistaras.irb hace que las cosas pequeñas sean realmente fáciles.Si está escribiendo una función para manipular cadenas, la capacidad de probar el código de forma interactiva directamente en el mensaje le ahorra mucho tiempo.Por ejemplo, puede simplemente abrir irb y comenzar a ejecutar funciones en una cadena de ejemplo y tener el código funcional y probado ya listo para su biblioteca/programa.

  • Aprender, experimentar y piratear.Algo como esto llevaría mucho tiempo probarlo en C/C++, incluso en Java.Si intenta probarlos todos a la vez, es posible que se produzca un error de segmentación y tenga que empezar de nuevo.

    Aquí estoy aprendiendo cómo String#[] La función funciona.

    joe[~]$ irb
    >> "12341:asdf"[/\d+/]
    # => "12341"  
    >> "12341:asdf"[/\d*/]
    # => "12341"  
    >> "12341:asdf"[0..5]
    # => "12341:"  
    >> "12341:asdf"[0...5]
    # => "12341"  
    >> "12341:asdf"[0, ':']
    TypeError: can't convert String into Integer
      from (irb):5:in `[]'
      from (irb):5
    >> "12341:asdf"[0, 5]
    # => "12341"  
    
  • Pruebas y evaluaciones comparativas.Ahora son bonitos y fáciles de realizar. Aquí ¿Es la idea de alguien emular el Unix? time Función para realizar evaluaciones comparativas rápidas.Simplemente agrégalo a tu .irbrc archivo y siempre está ahí!

  • Depuración - No lo he usado mucho, pero siempre existe la posibilidad de depurar código. como esto.O saque algún código y ejecútelo en el irb para ver qué está haciendo realmente.

Estoy seguro de que me estoy perdiendo algunas cosas, pero acerqué mis puntos favoritos.Realmente no tienes ninguna limitación en los shells, por lo que estás limitado solo por lo que se te ocurre hacer.Casi siempre tengo algunos proyectiles en ejecución.Bash, Javascript e irb de Ruby, por nombrar algunos.¡Los uso para muchas cosas!

Otros consejos

Creo que depende de la consola.La utilidad de una consola CMD en Windows es insignificante en comparación con una consola Powershell.

No dijiste qué sistema operativo estás usando, pero en Linux he estado usando un administrador de ventanas con pestañas (wmii) durante aproximadamente un año y ha cambiado radicalmente la forma en que uso las aplicaciones, ya sean consolas o no.

A menudo tengo cuatro o más consolas y otras aplicaciones en un escritorio virtual y con wmii no tengo que cambiar el tamaño de las ventanas para alinear todo.Puedo reorganizarlos trivialmente en columnas verticales, apilarlos verticalmente, hacer que compartan cantidades iguales de espacio vertical u horizontal y moverlos entre pantallas.

Digamos que abres dos consolas en tu escritorio.Obtendrías esto (con disculpas por la obra de arte tonta):

 ----------------
|                |
|       1        |
|                |
 ----------------
 ----------------
|                |
|       2        |
|                |
 ----------------

Ahora los quiero uno al lado del otro.Introduzco SHIFT-ALT-L en la ventana 2 para moverla hacia la derecha y crear dos columnas:

 -------  -------
|       ||       |
|       ||       |
|   1   ||   2   |
|       ||       |
|       ||       |
 -------  -------

Ahora podría abrir otra consola y obtener

 -------  -------
|       ||   2   |
|       ||       |
|       | -------
|   1   | -------
|       ||   3   |
|       ||       |
 -------  -------

Luego quiero ver temporalmente la consola 3 en altura completa, así que presiono ALT-s y obtengo:

 -------  -------
|       | -------
|       ||       |
|   1   ||   3   |
|       ||       |
|       ||       |
 -------  -------

Las consolas 2 y 3 ahora están apiladas.

También podría dar etiquetas de Windows.Por ejemplo, en la consola 2 podría decir ALT-SHIFT-twww+dev y esa consola sería visible en los escritorios virtuales 'www' y 'dev'.(Los escritorios se crean si aún no existen). Aún mejor, la consola puede tener una configuración visual diferente (por ejemplo, apilada y de pantalla completa) en cada uno de esos escritorios.

De todos modos, aquí no puedo hacer justicia a los administradores de ventanas con pestañas.No sé si es relevante para tu entorno, pero si tienes la oportunidad de probar esta forma de trabajar probablemente no mirarás atrás.

Agregué un acceso directo a mi combinación de teclas Control-Shift-C para abrir mi consola Visual Studio 2008.Esto por sí solo me ha ahorrado incontables segundos cuando necesito registrar un dll o realizar cualquier otro comando.Me imagino que si aprovecha esto con otra herramienta de comando, puede obtener aumentos masivos de productividad.

¿Estás bromeando?

En mi entorno Linux, la consola es mi elemento vital.Soy competente en scripting bash, por lo que para mí una consola es muy parecida a estar en un REPL para Python o Lisp.Literalmente puedes hacer cualquier cosa.

De hecho, escribo herramientas utilizadas por mi equipo en bash y la consola es el lugar perfecto para realizar ese desarrollo.Realmente sólo necesito un editor como almacén de respaldo para las cosas a medida que las descubro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top