¿Qué es un entorno de desarrollo integrado (IDE)?

Esto es parte de una serie más grande conocida como “How To Program Anything: Core Rulebook

Prefacio

El proceso de desarrollo de software implica una gran cantidad de pasos y andamios para construir un producto final. Muchas veces la complejidad del proceso depende del tamaño de su proyecto. Por ejemplo, un programa de un solo archivo C es bastante sencillo, escribe el programa y lo ejecuta a través del compilador y ya está. Pero, ¿qué sucede cuando el programa ocupa cinco archivos o cincuenta archivos? ¿Ejecuta todos los cincuenta a través del compilador en el símbolo del sistema a mano, y luego hacer lo mismo con el vinculador? Para superar este problema, los programadores han ideado varios métodos y programas para automatizar el proceso de construcción de un programa de computadora. Por supuesto, todas estas herramientas dependen de qué lenguaje de programación está utilizando, y qué requisitos está tratando de cumplir.

Pero hay otros aspectos al desarrollo de software además de construir el archivo de programa final. ¿Qué pasa con la prueba del software en un depurador, o como los proyectos más grandes tienden a hacer, incluyen lo que se llama pruebas de unidad en el proceso de construcción. Estos son programas construidos para interactuar con la base de código principal y ejecutarlo a través de una batería de pruebas para asegurarse de que su funcionamiento como se esperaba y que algún error no se filtró en el código de forma inesperada.

Y, sin embargo, todavía hay más, ¿qué pasa con el control de versiones? Este es un conjunto de software y herramientas que lo hacen para que pueda grabar automáticamente todos los cambios que realice a lo largo del tiempo a cada archivo del proyecto, y de esa manera si lo necesita puede “revertir” cualquier cambio que pueda ” si es necesario. También es útil porque, en teoría, varios programadores pueden trabajar en el proyecto al mismo tiempo y combinarse con todos sus cambios en el repositorio central. Control de la versión nos da un registro / copia de seguridad del proyecto para que en muchos aspectos es seguro de ser eliminado o desordenado.

¿Qué pasa si está desarrollando un programa que utiliza una interfaz gráfica de usuario (GUI)? Puede especificar todos los elementos y todo en el programa a mano, ya sea codificación difícil (que es donde la información está atascado con cuidado en el código en sí) en el programa, o escribir algún tipo de archivo de formato a ti mismo. ¿Pero no sería agradable si había una herramienta que usted podría utilizar para construir su interfaz de usuario y “pegar” a su código? Debería haber un programa para eso.

Usted puede abordar el desarrollo de un proyecto de software de muchas maneras, y una de esas maneras es usar las herramientas de barebone y dominar varias herramientas de línea de comandos separadas como vi (un editor de texto), GCC (un compilador C) y make herramienta de proceso). No hay nada malo en esto, y muchos programadores usan estas herramientas de hueso desnudo con éxito, pero para mí, recordando oscuros comandos de shell, entradas de programas, y la incapacidad de obtener la funcionalidad de edición de texto point’n’click (por no mencionar el código y tipo hinting, ver más abajo) come demasiado en el tiempo que podría estar produciendo código.

Aquí es donde un entorno de desarrollo integrado, también conocido como IDE, puede entrar para el rescate. Un IDE es un programa singular, oa veces un conjunto de programas, todos con una interfaz de usuario consistente que le proporciona herramientas, generalmente en un formato GUI, que une muchos de los componentes separados del desarrollo de software para usted. Un IDE normalmente proporciona las herramientas mínimas para escribir, modificar y compilar programas, y algunos incluyen mecanismos para empaquetar el programa final en una aplicación, y un depurador en tiempo real, para dar sentido a un programa en ejecución. Sin embargo, muchos IDE van más allá de eso, y proporcionan avanzadas capacidades de edición de texto con el código de sugerencia (donde el IDE analiza su código y trae información relevante acerca de lo que está escribiendo mientras se está escribiendo), interfaz de control de versiones para facilitar el usuario experiencia con tales sistemas, visores de código abstractos tales como diagramas de clases y objetos (las clases y objetos serán cubiertos en la Parte 2 del Curso de Programación) para la programación orientada a objetos (OOP). Muchos IDE incluyen la capacidad de establecer visualmente una interfaz gráfica de usuario y asociarla con su código (una forma suave de programación visual) y mucho más.

El objetivo del IDE: productividad

La idea detrás de un IDE es que puede manejar las configuraciones requeridas para que las utilidades de desarrollo modular aparte trabajen juntas, y al hacerlo presentar las capacidades de estos módulos como un programa cohesivo gigante. La idea es que en muchos casos la interfaz y los métodos del IDE son más fáciles de aprender y entender que todos los andamios desordenados que tendría que hacer usted mismo para lograr lo mismo.

Pero una vez que aquellos que el proceso y las herramientas se tratan, que es donde un IDE realmente puede brillar para que pueda ir más allá. Un área que puede ser alcanzada por los enchufes a algunos redactores de textos, pero es básicamente un dado automático para cualquier IDE es highlighting de la sintaxis. Aquí es donde las diversas palabras claves y las construcciones de un lenguaje de programación determinado se escriben realmente en diversos colores así que son fáciles de leer y de manchar. Cuando todo tu código es de un color, es como una pared de texto y tu ojo no necesariamente sabe cómo analizarlo muy bien. Pero cuando las palabras clave están resaltadas diga en azul, los comandos y tal se destacan, lo que le permite centrarse en dónde y cuáles son los comandos dentro de esa pared de texto.

Es posible que el IDE y la mayoría de todos los IDE lo hagan ahora, analizar todo el código a medida que lo importa, y al escribirlo, para comprobar si hay errores antes de compilar e incluso proporcionarle información acerca de lo que está mecanografía. Esto se conoce como sugerencia de código. Por ejemplo, si defino una función en un archivo en otro lugar, y el IDE analiza ese archivo para obtener información, mientras escribo una llamada a esa función en otro lugar, el IDE puede extraer la definición de función y los comentarios que adjunto a ella. Puedo ver cómo lo construí y qué argumentos toma sin tener que volver a abrir el otro archivo.

Algunos IDE incluso vienen con lo que se conoce como herramientas de refactorización. Estas son herramientas que le permiten cambiar el nombre de las piezas de código o hacer otras transformaciones de código, y tener esa información reflejada en otro lugar en el mismo archivo o en otra parte del código. La refactorización es un arte en sí mismo que implica la re-herramienta de un programa o biblioteca de código para operar mejor, o a veces incluso encajan en otro propósito.

Muchos IDE dedicados a lenguajes de programación particulares, como C o Python, vienen con depuradores gráficos integrados, que es un tema que voy a tratar en otro artículo. Estos depuradores permiten ver básicamente lo que está sucediendo con el código y las variables de una manera paso a paso para que pueda rastrear los errores, en particular los que no entienden dónde están ocurriendo. A menudo he encontrado ejecutar un programa a través de un depurador sólo para ver donde el código generalmente va paso a paso me ayuda a entender la construcción de un conjunto de código también. He aprendido muchos aspectos de una biblioteca haciendo esto.

¿Cómo evolucionaron los IDE?

En los primeros días de la programación, los programas se escribieron utilizando diagramas de flujo y otros diseños y luego se cambiaban a una máquina del tamaño de una habitación, o se perforaban en las tarjetas y se introducían en la máquina que a veces realizaba un paso de compilación, paso tenía que hacerse a mano. Cuando las computadoras fueron finalmente conectadas a algún tipo de dispositivo de visualización, con una herramienta de entrada de propósito general adjunta, como un teclado, básicamente cuando una computadora podría tener una interfaz de usuario, es cuando los IDEs nacieron.

Los primeros IDE se basaron en lo que era posible en una pantalla “terminal” o “consola”, que en su momento era en su mayoría texto. Usted podría hacer algunas cosas bastante sorprendente con sólo un programa de consola, incluyendo menús y múltiples “ventanas” o archivos abiertos al mismo tiempo. Lo importante es que estos primeros IDE integraron la edición de archivos, la gestión, la compilación, la depuración y, finalmente, la ejecución en un flujo o bloque de programa coherente. Un IDE popular conocido como Emacs floreció en este tipo de entorno, aunque el autor mismo nunca lo ha utilizado.

Después de la aparición de la interfaz gráfica de usuario, como con los sistemas operativos como Windows, el entorno X Windowing y el sistema 7+ para Macintosh, los IDE fueron realmente capaces de aumentar la productividad. En una o varias ventanas usted podría manejar los archivos de un proyecto, la opción del compilador, los archivos de código en un editor del texto del color, la ventana de la salida y así sucesivamente. Recuerdo que mi primer IDE fue QuickBASIC para mi Macintosh IIsi. Paso muchos una hora y muchos un día largo intentando mi mejor para programar juegos en esa cosa.

Se convirtió en popular para comenzar a construir IDEs con un tipo de plug-in de arquitectura, donde los programadores podían construir y extensiones de plug-in en el IDE para que funcione de varias maneras más especializadas. Eclipse se hizo muy popularmente conocido por este tipo de arquitectura, aunque no fue exactamente el primero. Sin embargo, una vez que se hizo popular muchos IDEs estos días se construyen en venas similares.

IDEs han evolucionado con el tiempo a un esquema bastante estándar de componentes, y ahora se están moviendo en la web con la llegada de servicios como Cloud9. Algunos IDEs se están publicando ahora como paquetes Software-as-a-Service, y se ejecutan en la nube por así decirlo.

Ventajas de usar un IDE

Cada IDE es diferente y algunos vienen con características que otros no. Algunos IDEs están orientados hacia un nicho particular, como la programación de microcontroladores. Por ejemplo, los microcontroladores Keil IDE o CodeComposer para Texas Instruments tienen la capacidad de interactuar con estos dispositivos incorporados, por lo que resulta mucho más fácil seguir el proceso de construcción algo oscuro, incluyendo la descarga del código de máquina terminado en los dispositivos, que estos tipos de instrumentos. Si va a programar un microcontrolador TI-RTOS, entonces sería prudente elegir uno de estos IDE.

Algunos IDE son específicos de un lenguaje o conjunto de lenguajes, como PHP o Python, y no tienen las utilidades de compilación necesarias para un programa escrito en C o C ++. Sin embargo, pueden venir con los encargados del paquete para esos idiomas particulares, algo C y C ++ no tienen necesariamente. Algunos IDE se construyen teniendo en mente un entorno de ejecución determinado, como el XCode de Apple para crear aplicaciones de macOS (aunque puede hacer más) y aplicaciones de iOS. Así que si usted estaba construyendo una aplicación de macOS, probablemente querría usar XCode como un ejemplo.

El punto aquí es que sólo se puede llegar tan lejos con un editor de texto simple (sin resaltado de sintaxis), un compilador y una herramienta de automatización de procesos de compilación. Duplicar algunas de las configuraciones que estos IDEs ya han hecho para usted a menudo resulta en un lío de código que es oscuro y difícil de entender, al menos eso ha sido mi experiencia. Me resulta más fácil aprender cómo funciona un IDE para poder utilizarlo para producir lo que quiero, ya sea un paquete de Python, un programa de nodo-webkit, un programa C en un microcontrolador o una aplicación de macOS.

La mayor ventaja de usar un IDE es la productividad. Por ejemplo, en Cloud9 tengo acceso a mis archivos, a mi editor de texto de código sintaxis resaltado, a una consola de shell en la parte inferior para acceder a la máquina ya un explorador de código generado a partir de lo que escribo. Y en algunos casos un depurador, y todo esto está alojado y se sirve a través del navegador web, lo que significa que puedo sacarlo de cualquier dispositivo en cualquier lugar que tiene un navegador. ¡Eso es bastante productivo!

Otra ventaja que he encontrado con IDEs es que usted puede obtener plug-ins o extensiones para ellos no necesariamente puede obtener con un editor de texto sin formato, como una interfaz para Git (un programa de control de versiones), o una interfaz a un base de datos para que pueda ver fácilmente los datos potenciales con los que está trabajando. O incluso, digamos, en Cloud9 la capacidad de tener dos programadores trabajando en la misma pantalla al mismo tiempo. Con proyectos web, puede obtener un complemento de SFTP que le permite reflejar su proyecto en un servidor de pruebas e implementarlo en un servidor de producción. Estas son todas las cosas más allá del alcance de un simple editor de texto.

El diseño habitual de un IDE

Para esta sección voy a usar dos IDEs que he estado usando últimamente, Komodo 10 (que gané como premio de phpclasses.org) y Cloud9. Te darás cuenta de que tienen diseños similares, y de hecho, incluso Eclipse y otros IDE tienen un diseño bastante estándar (hasta que te metes con él).

Cloud9 Integrated Development Environment

La forma en que trabajo, en el lado izquierdo son mis archivos. En muchos IDE, estos son los archivos reales y, a veces, los componentes de código que componen su proyecto. Como se puede ver aquí tengo Map.php abierto en el editor (Esto es parte de asherwunk / phabstractic y se puede leer más sobre el mapa aquí.) Ahora en el editor, en el centro de la pantalla, puede ver mi sintaxis destacado código (bien sobre todo un comentario de la documentación). Debajo de esta ventana es lo que yo llamo la ventana de herramientas, y aquí tengo acceso a un terminal de shell en la máquina host (es todo Ubuntu). También tengo acceso a una consola de JavaScript inmediata, y algunas cosas de Apache PHP en la pestaña derecha. No en la extrema derecha, verá que el IDE ha analizado este archivo (map.php) y me ha dado un esquema del código en el que tengo entrada. Estos son todos los nombres de los métodos (funciones) que mi mapa clase, y si hago clic en cualquiera de ellos salto directamente a esa definición en el archivo. Esto puede no parecer mucho, pero es una configuración muy poderosa en un solo lugar. En mis proyectos PHP y Python, utilizo la consola para instalar dependencias de desarrollo (a través de Composer y de lo contrario), ejecutar mis comandos de control de versión git (ya configurados por Cloud9), y también ejecutar mis pruebas de unidad. Puedo abrir varios archivos de la izquierda y estarán bajo diferentes pestañas, y puedo poner pestañas al lado del otro y verlas lado a lado.

Komodo IDE 10

Con Komodo, un IDE comercial para todo tipo de desarrollo, se obtiene un montón de campanas y silbatos. Anuncio que puede a la izquierda Tengo botones para muchas cosas, incluyendo pruebas de unidad, shell interactiva, un profiler de código (para comprobar la velocidad de ejecución de su código), un inspector HTTP. Un poco a la derecha, y ves mi administrador de archivos y el administrador de proyectos. El gestor de archivos contiene todos los archivos de un proyecto determinado y el gestor de proyecto configura Komodo con diferentes configuraciones para diferentes proyectos. Por ejemplo, chrahkiwriter fue un proyecto JavaScript / HTML, mientras que gameofgods es en realidad mi PYGJS de JavaScript / Python Hybrid. En el centro está la buena vieja ventana de edición de texto, con resaltado de sintaxis, y tal. Si abrí otro archivo aparecería otra pestaña. Debajo de que es la consola, y se puede ver tengo herramientas de control de versiones, comprobación de sintaxis, consola, pruebas de unidad, búsqueda de archivos múltiples y cosas de reemplazo. A la derecha, puede haber más, como un inspector de código y un perfil, pero están cerrados ahora mismo. A la derecha puedes ver una versión miniaturizada de cada archivo en el que estoy trabajando. Me ayuda a realizar un seguimiento de dónde estoy en el código.

Otros Tipos de IDEs

Algunos IDE se crean específicamente para lo que se conoce como programación visual, por ejemplo con el lenguaje de programación Scratch. Lego MindStorms tiene su propia implementación de programación visual, así como la programación de sus bloques de microcontroladores más simples. O hay herramientas para varios IDEs donde se puede diseñar la estructura de un sistema de programación usando un lenguaje de modelado como Unifed Modeling Language (UML), con lo cual se interpretarán los diagramas y se generará el código para que coincida con las especificaciones. Algunos IDE ayudan en formas como éstas para ayudar en la etapa de ingeniería de software del desarrollo de software.

Otro tipo de IDE es un Entorno de Desarrollo Integrado de Juego (GIDE). Este es un programa que también encapsula algún tipo de tiempo de ejecución del motor de juego donde toda la información que se pone en el sistema se ejecutará. Unity es una versión muy popular de este tipo de IDE. Usted programa los juegos en C # usando MonoDevelop y los adjunta a objetos en el sistema. Presionando la reproducción se ejecuta la simulación del juego dentro del editor de Unity para que pueda ver los resultados. En este sentido, no sólo la compilación ocurre en el IDE, sino también en las pruebas de tiempo de ejecución. El despliegue se convierte en la etapa final del proceso de compartición.

Conclusión

No soy personalmente enorme modificando o haciendo que mi IDE haga muchas campanas y silbidos, pero simplemente tener un programa central y lugar para depurar, probar, compilar y escribir su código es muy poderoso para su productividad. Añada las herramientas básicas de inspección de código, comprobación de errores, resaltado de sintaxis, seguimiento de archivos, control de versiones y obtuvo una herramienta que usaría cualquier día.

Sin embargo, lo suficientemente gracioso, no sé si te recomiendo usar un IDE justo al bate cuando empieces a aprender a programar. Mantener el foco en un programa limpio, una ejecución simple, y realmente tener su mano en el proceso de compilación puede ser una experiencia de aprendizaje, pero casi puedo garantizarle; usted comienza o consigue un proyecto de programación con más de 15 archivos, un proceso de construcción especializado con pruebas de unidad, decenas de miles de líneas de código, definitivamente apreciará el código y el control de versiones incorporado. Estoy seguro de que hay numerosos complementos para varios IDEs que ni siquiera sé acerca de que puede hacer la programación de una brisa.

Esto es parte de una serie más grande conocida como “How To Program Anything: Core Rulebook

Si usted aprecia este artículo usted puede ser que considere el apoyar de mi Patreon.

Pero si un compromiso mensual es un poco más, lo entiendo, podría considerar comprarme un café.

photo credit: Metal Sheets Limited 138 – Copper Worktop with Integrated Sink via photopin (license)

Liked it? Take a second to support kadar on Patreon!

You may also like...

Deja un comentario

A %d blogueros les gusta esto: