¿Qué hacen las macros?
Una macro en informática es un concepto abstracto que reemplaza ciertos patrones de texto basándose en un conjunto de reglas predefinidas. Los programas escritos en este lenguaje se denominan "macros". El uso de "VBA" requiere cierta base de programación y consume mucho tiempo. Por lo tanto, la gran mayoría de los usuarios solo usan la función de tabulación general de Excel y rara vez usan "VBA".
El intérprete o compilador realiza automáticamente esta sustitución de patrón cuando encuentra una macro. Para los lenguajes compilados, la expansión de macros se realiza en el momento de la compilación y las herramientas que realizan la expansión de macros a menudo se denominan expansores de macros. El término macro también se utiliza a menudo en muchos contextos similares derivados del concepto de expansión de macros, incluidas las macros de teclado y los lenguajes de macros. En la mayoría de los casos, utilizar la palabra "macro" significa convertir un pequeño comando o acción en una serie de instrucciones.
Las macros se utilizan para automatizar secuencias de uso común o para obtener mayores capacidades de abstracción, pero muchas veces es lo mismo.
Los lenguajes informáticos (como C o el lenguaje ensamblador) tienen sistemas de macros simples, implementados mediante compiladores o preprocesadores ensambladores. El trabajo del preprocesador de macros de C es simplemente buscar y reemplazar texto, pero el uso de lenguajes de procesamiento de texto adicionales (como M4) permite a los programadores de C utilizar macros más complejas.
Los lenguajes tipo Lisp como Common Lisp y Scheme tienen sistemas de macros más sofisticados: las macros se comportan como si fueran transformaciones de su propio texto de programa a través de funciones, y estas transformaciones se pueden expresar en lenguajes completos. Las macros C definen la sustitución de un bloque de sintaxis, mientras que las macros Lisp controlan el cálculo de un bloque de código.
Obtener la capacidad de controlar el orden de ejecución del código (consulte evaluación diferida y funciones ilimitadas) hace que las construcciones de sintaxis recién creadas sean indistinguibles de las integradas en el lenguaje. Por ejemplo, un dialecto Lisp que tiene cond pero no if puede usar macros para definir el último y el primero, y las extensiones principales de la sintaxis Lisp (como el sistema CLOS orientado a objetos) pueden definirse mediante macros.
Programación de macros
Al programar macros en un lenguaje de macros desconocido, puede hacer esto: primero escriba lo que el usuario quiere que haga la macro, luego abra el archivo de macro e intente comprender cómo funciona la estructura de mando. Las macros también se pueden ajustar modificando el comando. Algunos lenguajes de macros, como el motor de ejecución Dexterity del software Great Plains Accounting, no pueden importar datos de otras fuentes de datos, como archivos de texto delimitados por comas. Para solucionar esta limitación, puede crear un programa de computadora en un lenguaje de programación más potente (como VBA) que genere una macro especial en este lenguaje de programación débil. Por ejemplo, puede programar una macro de Microsoft Excel para leer datos de una hoja de estilo extendida o un archivo de texto y crear un archivo .mac de Great Plains que importe datos específicos a Great Plains. Cada nuevo conjunto de datos requiere un nuevo archivo .mac.
Macros de teclado
Las macros de teclado y las macros de editor se utilizan de forma interactiva en la interfaz gráfica de usuario y el editor, respectivamente. Úselos para reemplazar largas secuencias de comandos con pulsaciones de teclas cortas y proporcionar una forma sencilla de automatización para tareas repetitivas.
El editor de textos para programadores Emacs (abreviatura de "Editing MACroS") es un producto que sigue esta filosofía. De hecho, la mayoría de los editores se componen de macros; Emacs fue diseñado originalmente como un conjunto de macros para el lenguaje de edición TECO y luego fue portado al dialecto Lisp de tamaño mediano Emacs Lisp.