Una herramienta de programación o herramienta de desarrollo de software es un programa informático que los desarrolladores de software utilizan para crear, depurar, mantener o respaldar otros programas y aplicaciones. El término generalmente se refiere a programas relativamente simples, que se pueden combinar para realizar una tarea, de la misma manera que uno podría usar varias manos para arreglar un objeto físico. Las herramientas más básicas son un editor de código fuente y un compilador o intérprete , que se utilizan de forma ubicua y continua. Se utilizan otras herramientas más o menos según el lenguaje, la metodología de desarrollo y el ingeniero individual, a menudo utilizadas para una tarea discreta, como un depurador o generador de perfiles. Las herramientas pueden ser programas discretos, ejecutados por separado (a menudo desde la línea de comandos ) o pueden ser partes de un único programa grande, llamado entorno de desarrollo integrado (IDE). En muchos casos, particularmente para un uso más simple, se utilizan técnicas ad hoc simples en lugar de una herramienta, como la depuración de impresión en lugar de usar un depurador, sincronización manual (de todo el programa o sección de código) en lugar de un generador de perfiles, o seguimiento de errores en un archivo de texto u hoja de cálculo en lugar de un sistema de seguimiento de errores.
La distinción entre herramientas y aplicaciones es confusa. Por ejemplo, los desarrolladores utilizan bases de datos simples (como un archivo que contiene una lista de valores importantes ) todo el tiempo como herramientas. [ dudoso – discutir ] Sin embargo, una base de datos completa generalmente se considera una aplicación o software por derecho propio. Durante muchos años se buscaron herramientas de ingeniería de software asistida por computadora (CASE). Las herramientas exitosas han resultado difíciles de alcanzar. En cierto sentido, las herramientas CASE enfatizaron el soporte de diseño y arquitectura, como por ejemplo UML. Pero las más exitosas de estas herramientas son los IDE.
Las computadoras modernas son muy complejas y para programarlas productivamente se necesitan varias abstracciones. Por ejemplo, en lugar de escribir la representación binaria de un programa, un programador escribirá un programa en un lenguaje de programación como C, Java o Python. Las herramientas de programación como ensambladores , compiladores y enlazadores traducen un programa desde un lenguaje fuente legible y escrito por humanos a bits y bytes que pueden ser ejecutados por una computadora. Los intérpretes interpretan el programa sobre la marcha para producir el comportamiento deseado.
Estos programas realizan muchas tareas bien definidas y repetitivas que, sin embargo, consumirían mucho tiempo y serían propensas a errores si las realizara un humano, como diseñar partes de un programa en la memoria y arreglar las referencias entre partes de un programa como lo hace un vinculador. Por otro lado, los compiladores optimizados pueden realizar transformaciones complejas en el código fuente para mejorar la velocidad de ejecución u otras características de un programa. Esto permite al programador centrarse más en aspectos conceptuales de nivel superior de un programa sin preocuparse por los detalles de la máquina en la que se ejecuta.
Debido a la alta complejidad del software, no es posible comprender la mayoría de los programas de un solo vistazo, ni siquiera para el desarrollador de software más experimentado. Las abstracciones proporcionadas por los lenguajes de programación de alto nivel también hacen que sea más difícil comprender la conexión entre el código fuente escrito por un programador y el comportamiento real del programa. Para encontrar errores en los programas y evitar la creación de nuevos errores al ampliar un programa, un desarrollador de software utiliza algunas herramientas de programación para visualizar todo tipo de información sobre los programas.
Por ejemplo, un depurador permite a un programador extraer información sobre un programa en ejecución en términos del lenguaje fuente utilizado para programarlo. El depurador puede calcular el valor de una variable en el programa fuente a partir del estado de la máquina concreta utilizando información almacenada por el compilador. Los depuradores de memoria pueden señalar directamente accesos a la memoria cuestionables o totalmente incorrectos de programas en ejecución que, de otro modo, podrían pasar desapercibidos y son una fuente común de fallas en los programas.
Las herramientas de software vienen en muchas formas:
Los entornos de desarrollo integrados combinan las características de muchas herramientas en un solo paquete. Por ejemplo, facilitan la realización de tareas específicas, como buscar contenido solo en archivos de un proyecto en particular. Los IDE se pueden utilizar, por ejemplo, para el desarrollo de aplicaciones de nivel empresarial.
En esta comparación de entornos de desarrollo integrados se pueden encontrar diferentes aspectos de los IDE para lenguajes de programación específicos .
Medios relacionados con herramientas de programación en Wikimedia Commons