Todos tenemos tareas que surgen de vez en cuando que creemos que sería mejor utilizar scripts o automatizar que hacer manualmente.
Obviamente, algunas herramientas o idiomas son mejores para esto que otros: nadie (en su sano juicio) está haciendo un trabajo único de referencia cruzada a un montón de listas de texto que su PM acaba de darles en ensamblador, por ejemplo.
¿Qué herramienta o idioma recomendaría para el tipo de trabajos generales rápidos y sucios que le piden que haga donde el tiempo (en lugar de la elegancia) es esencial?
Antecedentes: soy un antiguo programador, ahora gerente de desarrollo PM, que busca aprender un nuevo idioma por diversión. Si voy a aprender algo por diversión, me gustaría que sea útil y este tipo de caso de uso es el más probable.
fuente
Respuestas:
Pitón
La respuesta obvia (y con buena razón) es Python. Es un lenguaje sólido, multiplataforma disponible. Como es dinámico, puede ejecutarlo de forma interactiva, lo que es ideal para unir cosas y tiene una selección bastante grande de bibliotecas, por lo que es un lenguaje de propósito general que se puede aplicar a la mayoría de los problemas.
fuente
Autoit es inmejorable. Es una herramienta con un lenguaje.
fuente
AutoHotKey
AutoHotkey es una utilidad gratuita de código abierto para Windows. Con ella puedes:
http://ahkscript.org/
Le he ahorrado a varias compañías una gran suma de dinero usando esta herramienta.
fuente
Perl
Perl es más o menos mi definición de rápido y sucio.
Perl es infinitamente flexible, lo cual es una fortaleza y debilidad. No te impone la estructura, pero está ahí si la quieres. Cuenta con bibliotecas para todo. Se ha utilizado ampliamente durante 20 años; Hay toneladas de código para trabajar.
fuente
$=
; $ _ = \% !; $ _) = / (.) /; $ == ++ $ |; ($., $ /, $ ,, $ \, $ ", $;, $ ^, $ #, $ ~, $ *, $ :, @%) = ($! = ~ / (.) (.). (.) (.) (.) (.) .. (.) (.) (.) .. (.) ... ....) /, $ "), $ = ++; $. ++; $. ++; $ _ ++; $ _ ++; ($ _, $ \, $,) = ($ ~ . $ "." $; $ / $% [$?] $ _ $ \ $, $: $% [$?] ", $" & $ ~, $ #,); $, ++; $, + +; $ ^ | = $ ";$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=
(eso es Perl real - sin duda Perl intencionalmente malo - para aquellos que no lo leen).Potencia Shell
Esto es menos genérico que Python, pero si usted existe en un entorno Windows, entonces probablemente sea más útil.
Es más shell / script que Python (porque eso es lo que es) pero puede engancharse al marco .NET que le brinda una profundidad de capacidad bastante extraordinaria. También cuenta con un amplio apoyo de la comunidad.
Microsoft han estado ocupados añadiendo PowerShell para sus productos de servidor (de ahí el "más útil") y han introducido comunicación remota para que pueda ejecutar secuencias de comandos no desde la consola de aquí .
fuente
Una moderna carcasa de Unix. Por ejemplo, bash.
fuente
Elisp, si has visto la gran cantidad de tareas que se utilizan para realizar a través de su plataforma subyacente Emacs. Emacs puede evitar toda la funcionalidad de un administrador de ventanas completo, IDE, Office, navegador, cliente de correo electrónico, cliente de chat, shell, explorador del sistema de archivos y más. La mayor parte se logra a través de programas elisp.
fuente
Para algunas tareas, las acciones pueden ser una buena opción.
Tiene una especie de proceso de diagrama de flujo, donde puede agregar
actions
para que se ejecute secuencialmente. Lo nuevoactions
se puede escribir en java.Descargo de responsabilidad: todavía tengo que usarlo.
fuente
Para la automatización compleja, es posible que desee utilizar Robot Framework . El marco está dirigido principalmente a pruebas automatizadas, pero también se puede utilizar para la automatización general.
Puede escribir fácilmente sus propias bibliotecas en Python y hay varias preexistentes (selenio, AutoIt , telnet, ssh, swing, etc.) que le permiten manejar todo tipo de cosas, lo que es muy poderoso si está en Un ambiente mixto.
Se basa en palabras clave para que pueda crear nuevas palabras clave y, por lo tanto, abstraer las tareas repetitivas e incluso tiene un IDE que se está desarrollando activamente y que permite algunas refactorizaciones simples.
fuente
He estado trabajando en combinar algunas rutinas de Common Lisp para ayudar con las secuencias de comandos, pero no es tan fácil de usar como Perl.
fuente
Para Windows, recomiendo AutoIt (http://autoitscript.com). Asegúrese de instalar el paquete Scite desde la sección de descargas.
http://autoitscript.com/forum es un gran recurso para obtener ayuda y encontrar la función de UDF para incluir en los scripts.
AutoIt puede controlar ventanas y controles de aplicaciones que le permiten automatizar casi cualquier cosa. Tampoco requiere dependencias después de compilar su ejecutable.
fuente
Tuve el mismo problema de usar varios idiomas para diferentes conjuntos de automatización. Soy consultor senior para una empresa de servicios de TI en India. Cada vez que consulto a un diferente
lenguaje para el propósito, tuve dificultades para justificarlo a la gerencia . Incluso discutí con mis amigos (como charla informal) sobre el desarrollo de un lenguaje unificado que aborde todas las necesidades de automatización y aún multiplataforma. Si hay uno disponible, entonces puede
cambiar el mundo de los scripts Hasta donde yo sé, el mapeo que usualmente usamos va
Idiomas y dominio de uso
AutoIT - Bases de automatización de GUI basadas en Windows - La automatización basada en Unix involucra principalmente la interacción del sistema Perl - Automatización del procesamiento de datos con menos interacción del sistema Esperar - Requisitos interactivos basados en caracteres. (que Perl, Bash no puede resolver) VBS: secuencias de comandos basadas en Windows
Cualquier automatización siempre se acompaña con una o más invocaciones remotas para la recuperación de información o publicación de resultados. Aquí están las diferentes listas que abordan los principales sistemas operativos.
Invocación remota de script (herramientas)
Windows -> Windows
psexec, Powershell
Windows -> Unix
plink, Quest Plink -> Servidor SSH
Unix -> Unix
Cliente SSH -> Servidor SSH
Unix -> Windows
winexe, wmic -> Agente WMI check_nrpe -> Agente NRPE_NT
En la lista anterior, puede ver fácilmente que ningún idioma puede reemplazar a otro en el conjunto de características. Tenemos que vivir con ellos hasta que tengamos un sistema operativo universal y un estándar universal de protocolos de comunicación y API.
fuente
Python es excelente para esto y tiene una base de instalación más grande, y Ruby no es mejor, excepto que tiene la Guía conmovedora de por qué de Ruby . En serio, zorros de dibujos animados.
fuente