Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Conceptos de
programación
Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje
ensamblador al código de máquina del computador objetivo. El ensamblador realiza una
traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a
las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los
cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina.
Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del
programa, controlar el proceso de ensamblaje, y la ayuda de depuración. Particularmente, la
mayoría de los ensambladores modernos incluyen una facilidad de macro (descrita más abajo), y
se llaman macro ensambladores.
Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con
potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con
frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la
manipulación directa de hardware, alto rendimiento, o un uso de recursos controlado y reducido.
También es utilizado en el desarrollo de controladores de dispositivo (en inglés, device drivers) y
en el desarrollo de sistemas operativos, debido a la necesidad del acceso directo a las
instrucciones de la máquina. Muchos dispositivos programables (como los microcontroladores)
aún cuentan con el ensamblador como la única manera de ser manipulados.
Características
El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido
directamente por un ser humano ya que su estructura se acerca más bien al lenguaje
máquina, es decir, lenguaje de bajo nivel.
El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un
Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder
ser usado en otra máquina distinta, aun con el mismo Microprocesador, solo pueden ser
reutilizados secciones especiales del código programado.
Los programas hechos en lenguaje ensamblador, al ser programado directamente sobre
Hardware, son generalmente más rápidos y consumen menos recursos del sistema
(memoria RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se
pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que
con lenguajes de alto nivel.
Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por
un Microprocesador por lo que se pueden crear segmentos de código difíciles de
programar en un lenguaje de alto nivel.
También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e impedir
que se interrumpa durante su ejecución.
El lenguaje ensamblador es un código estructurado y gravitatorio desarrollado sobre un
archivo de programación (.ASM), en el cual pueden existir varios programas, macros o
rutinas que pueden ser llamados entre sí
¿Qué es un mnemónico?
En informática, un mnemónico es una palabra que sustituye a un código de operación (lenguaje de
máquina), lo que facilita la programación, lo que guarda mucha relación con el lenguaje
ensamblador.
En muchas ocasiones se puede tomar a nivel de usuario como las teclas de acceso rápido que
vemos en las ventanas, por ejemplo en un navegador encontramos el menú típico que dice
Archivo, Editar, Ver, entre otras opciones, el mnemónico sería el valor de la letra que esta
subrayada, así si presionamos la tecla alt y luego por ejemplo la A, se nos abrirá el menú de
archivo, es por esta razón que se puede decir que la A en el menú resulta la tecla mnemónica de
Archivo, o la tecla de acceso rápido a la opción Archivo.
El lenguaje Mnemónico también es utilizado en la programación de procesadores lógicos
programables (PLC), haciendo más rápida y eficiente la construcción de programas de alta
complejidad.
Imagen de Mnemónicos.
Tipos de ensambladores
Podemos distinguir entre tres tipos de ensambladores:
Ensambladores básicos. Son de muy bajo nivel, y su tarea consiste básicamente en ofrecer
nombres simbólicos a las distintas instrucciones.
Ensambladores modulares, o macro ensambladores. Descendientes de los
ensambladores básicos. Hacen todo lo que puede hacer un ensamblador, y además proporcionan
una serie de directivas para definir e invocar macroinstrucciones.
Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron
como respuesta a una nueva arquitectura de procesadores de 32 bits, realizan la misma tarea que
los anteriores, permitiendo también el uso de macros, permiten utilizar estructuras de
programación más complejas propias de los lenguajes de alto nivel.
Traductor de lenguajes de programación
Página de investigación 1 (traductor de lenguajes)
Un traductor es un programa que tiene como entrada un texto escrito en un lenguaje (lenguaje
fuente) y como salida produce un texto escrito en un lenguaje (lenguaje objeto) que preserva el
significado de origen. Ejemplos de traductores son los ensambladores y los compiladores.
Fase de análisis
Fase de Síntesis
Página de investigación 2 (traductor de lenguajes)
Son programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a
código máquina.
Los traductores se dividen en:
Compiladores
Interpretes
Intérpretes
Compiladores
Un compilador es un programa que traduce los programas fuente escritos en lenguajes de alto
nivel a lenguaje máquina.
Los programas escritos en lenguajes de alto nivel (en el editor del lenguaje) se llaman programas
fuente y el programa traducido programa objeto o código objeto. El compilador traduce (sentencia
a sentencia) el programa fuente.
Lenguajes compiladores típicos son: PASCAL, COBOL, C..
Fases de la compilación
1. Escritura del programa fuente con un editor (programa que permite a una computadora
actuar de modo similar a una máquina de escribir electrónica) y guardarlo en un dispositivo de
almacenamiento (un disco).
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador C++.
4. Verificar y corregir errores de compilación (listado de errores).
5. Obtención del programa objeto.
6. El montador obtiene el programa ejecutable.
7. Se ejecuta el programa y si no existen errores, se tendrá la salida del mismo.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es el código
fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen puedan
ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del lenguaje.
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a lenguaje
máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje. Estos
programas te muestran los errores existentes en el código fuente.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde también
podrán surgir problemas y fallos, para los cuales tendríamos que volver a realizar todo el proceso
anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes de
presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de intérpretes (estos
no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultánea, es decir, un intérprete lee
el código fuente y lo va ejecutando al mismo tiempo.
Un programa compilado puede funcionar por si solo mientras que un código traducido por
un intérprete no puede funcionar sin éste.
Un programa traducido por un intérprete puede ser ejecutado en cualquier máquina ya
que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
Un archivo compilado es mucho más rápido que uno interpretado.
Compilador
Página de investigación 1 (Compilador)
Un compilador es un programa informático que traduce un programa escrito en un lenguaje de
programación a otro lenguaje de programación. Usualmente el segundo lenguaje es lenguaje de
máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este
proceso de traducción se conoce como compilación.
La construcción de un compilador
involucra la división del proceso en una serie de fases que variará con su complejidad.
Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del
programa objeto.
Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden agrupar en
Front-end y Back-end:
Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol
de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser
independiente de la plataforma o sistema para el cual se vaya a compilar, y está
compuesta por las fases comprendidas entre el Análisis Léxico y la Generación de Código
Intermedio.
Back-end: es la parte que genera el código máquina, específico de una plataforma, a partir
de los resultados de la fase de análisis, realizada por el Front End.
Esta división permite que el mismo Back End se utilice para generar el código máquina de
varios lenguajes de programación distintos y que el mismo Front End que sirve para analizar el
código fuente de un lenguaje de programación concreto sirva para generar código máquina en
varias plataformas distintas. Suele incluir la generación y optimización del código dependiente de
la máquina.
Diagrama a bloques de la operación
de un buen compilador.
Página de investigación 2 (Compilador)
Es un Software que traduce un programa escrito en un lenguaje de programación de alto nivel (C /
C ++, COBOL, etc.) en lenguaje de máquina. Un compilador generalmente genera lenguaje
ensamblador primero y luego traduce el lenguaje ensamblador al lenguaje máquina. Una utilidad
conocida como «enlazador» combina todos los módulos de lenguaje de máquina necesarios en un
programa ejecutable que se puede ejecutar en la computadora.
Un poco de Historia
El término «compilador» fue acuñado a principios de 1950 por Grace Murray Hopper. La
traducción fue vista entonces como la «compilación» de una secuencia de rutinas seleccionadas.
Grace Brewster Murray Hopper fue una científica informática estadounidense y contraalmirante
de la Marina de los Estados Unidos. Una de las primeras programadoras de la computadora
Harvard Mark I, fue una pionera en programación que inventó una de las primeras herramientas
relacionadas con el compilador. Ella popularizó la idea de los lenguajes de programación
independientes de la máquina, lo que condujo al desarrollo de COBOL, un lenguaje de
programación de alto nivel que todavía se usa en la actualidad.
El primer compilador del lenguaje de alto nivel FORTRAN se desarrolló entre 1954 y 1957 en IBM
por un grupo dirigido por John Backus.
Un compilador es uno de los pilares de la programación y de cómo entender la comunicación
entre un lenguaje de alto nivel y una máquina. Al poder conocer el funcionamiento de este paso
intermedio nos permitirá desarrollar y programar de una forma más precisa los lenguajes de alto
nivel.
Tradicionalmente los compiladores generaban código máquina de inferior calidad que el que
podían escribir programadores humanos, pero actualmente los compiladores proporcionan hoy en
día un código máquina de alta calidad pequeño y rápido, haciendo poco atractiva la programación
en ensamblador, programación que en asignaturas como está ya simplemente se menciona por
conocerla, pero no se realiza un estudio para aprender este tipo de programación.
Los compiladores son procesos complejos debido a que tienen varias fases por las que un
programa fuente debe de pasar antes de convertirse en un programa ejecutable, los pasos son los
siguiente
Analizador léxico:
De esta forma cada token del programa es clasificado según su significado para ser procesados en
la segunda etapa del proceso de compilación.
Analizador sintáctico:
El analizador sintáctico (Parse en inglés), es la segunda fase del proceso de compilación y tiene
como finalidad la generación de un Árbol sintáctico, el cual no es más que una estructura de datos
compleja que permite representar de una forma más simple al programa fuente.
Los compiladores modernos utilizan estructuras de objetos para representa a un programa, de
esta forma existe una clase específica para representa cada posible token de nuestra tabla de
símbolos.
Analizador semántico:
El analizador semántico es el que analiza que todo el programa tenga un significado exacto y que
este no pueda fallar en tiempo de ejecución.
•
Editores de código o texto
Página de investigación 1 (Editores de código o texto)
Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos
únicamente por texto sin formato, conocidos comúnmente como archivos de texto o texto plano.
El programa lee el archivo e interpreta los bytes leídos según el código de caracteres que usa el
editor. Hoy en día es comúnmente de 7- ó 8-bits en ASCII o UTF-8, rara vez EBCDIC.
Por ejemplo, un editor ASCII de 8 bits que lee el número binario 0110 0001 (decimal 97 ó
hexadecimal 61) en el archivo lo representará en la pantalla por la figura a, que el usuario
reconoce como la letra "a" y ofrecerá al usuario las funciones necesarias para cambiar el número
binario en el archivo.
Los editores de texto son incluidos en el sistema operativo o en algún paquete de
software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos
de configuración, scripts o el código fuente de algún programa.
El archivo creado por un editor de texto incluye por convención en DOS y Microsoft Windows la
extensión ".txt", aunque pueda ser cambiada a cualquier otra con posterioridad.
Tanto Unix como Linux dan al usuario total libertad en la denominación de sus archivos.
Al trasladar archivos de texto de un sistema operativo a otro se debe considerar que existen al
menos dos convenciones diferentes para señalar el término de una línea: Unix y Linux usan
sólo retorno de carro en cambio Microsoft Windows usa al término de cada línea retorno de carro
y salto de línea.
Diferencia entre texto "plano" y archivos de texto con diagramación
Los editores de textos "planos" se distinguen de los procesadores de texto en que se usan para
escribir sólo texto, sin formato y sin imágenes, es decir sin diagramación.
El texto plano es representado en el editor mostrando todos los caracteres presentes en el
archivo. Los únicos caracteres de formateo son los caracteres de control del respectivo
código de caracteres. En la práctica, éstos son: salto de línea, tabulación horizontal
y retorno de carro. El código de caracteres más usado en el año 2007 es el ASCII.
Los procesadores de texto pueden en la mayoría de los casos almacenar un texto plano en
un archivo de texto plano, pero se le debe ordenar explícitamente que se desea esa
opción, de otra manera podría guardarlo con algún formato especial.
Página de investigación 2 (Editores de código o texto)
Es un programa informático que permite crear y modificar archivos digitales compuestos por
textos sin formato, conocidos como archivos de texto o “texto plano”. El programa lee un archivo
y ordena los bytes leídos según el código de caracteres que utiliza o usa el editor. Es muy común
de 7 u 8 bits en ASCII o UTF-8, es poco común que aparezca en EBCDIC.
Por ejemplo, un editor ASCII de 8 bits que lee el número binario 0110 0001 (decimal 97 o
hexadecimal 61) en el archivo lo representará en la pantalla por la figura a, que el usuario
reconoce como la letra "a" y ofrecerá al usuario las funciones necesarias para cambiar el número
binario en el archivo.
Los editores de texto están orientados para manejar y crear archivos de texto plano, los cuales
tienen una enorme utilidad dentro de la Informática, sobre todo en el área de la programación, ya
que el código fuente de los programas está hecho en texto plano, así como también los script
interpretados de algunos lenguajes, como JavaScript, Perl, Python, shell, etc.
Con estas aplicaciones, también podemos crear ediciones de archivos byte por byte, como por
ejemplo, cambiar algunas de las propiedades de una imagen o de algún dibujo, para realizar estas
acciones tenemos que conocer el código de caracteres ASCII.
Otra utilidad importante de los editores de texto es, que permiten crear fácilmente listas y bases
de datos que se puede cargar a cualquier gestor, como MySQL, con una facilidad y velocidad
sorprendente y sin tener que cargar aplicaciones especiales para realizar esta tarea.
También, podemos crear notas importantes y realizar descripciones rápidas de cualquier proceso,
las cuales pueden ser leídas desde cualquier equipo, sin importar si cuentan o no con
procesadores de palabras e incluso, se puede crear e-mails con los editores de texto.
¿Qué empresas fabrican los editores de texto y su historia?:
WordPerfect: Hasta mediados de los noventa fue el más popular. Pertenece a la suite de
Corel, y presenta una gran cantidad de innovadoras características que demuestran que
pretende seguir compitiendo con Microsoft Word.
WordPad: Está instalado por defecto en el sistema operativo Windows. Es ideal para
quienes necesiten un procesador de texto de forma esporádica, sin buscar un acabado
profesional. El actual WordPad no tiene manejo de tablas, ni corrección de errores
ortográficos, pero si posee reconocimiento de voz y TSF. También permite abrir
documentos de Word (a veces con problemas en sus formatos) pero no permite
guardarlos. En Windows Vista, WordPad ya no admite la posibilidad de leer archivos en
formato Word debido a los problemas de formatos y al rendimiento incorrecto. WordPad
para Windows XP añadió edición de textos multilingües.
Lotus Word Pro: Fue desarrollado por la empresa Lotus Development fue imitada por
Microsoft Office unos años después de sacarla al mercado es una de las alternativas más
populares a Microsoft Word, y está incluido en el paquete de software de escritorio de
Lotus.
Los editores de texto, por lo general, son incluidos en el mismo sistema operativo y algunos son
instados por el mismo usuario, según sean sus requerimientos de edición. Algunos son libres y
otros son de pago, todo dependerá de la cantidad de funciones adicionales con las que cuente el
editor, las cuales lo convertirán en una potente herramienta de trabajo.
Los editores de texto están orientados a manipular y crear archivos de texto plano, los cuales
tienen una enorme utilidad dentro de la Informática, sobre todo en el área de la programación, ya
que el código fuente de los programas está hecho en texto plano, así como también los scripts
interpretados de algunos lenguajes, como JavaScript, Perl, Python, shell, etc.
Con estas aplicaciones, también podemos crear ediciones de archivos byte por byte, como, por
ejemplo, cambiar algunas de las propiedades de una imagen o de algún dibujo, claro está, que
para realizar estas acciones debemos conocer el código de caracteres ASCII.
Otra utilidad importante de los editores de texto, es que permiten crear fácilmente listas y bases
de datos que podemos cargar a cualquier gestor, como MySQL, con una facilidad y velocidad
sorprendentes y sin tener que cargar aplicaciones especiales para realizar esta tarea.
También, podemos crear notas importantes y realizar descripciones rápidas de cualquier proceso,
las cuales pueden ser leídas desde cualquier equipo, sin importar si cuentan o no con
procesadores de palabras e incluso, podemos crear e-mails con los editores de texto.
Características de los editores de texto
Existen diversos tipos de interfaz de usuario para los editores de texto, algunas muy sencillas y
otras muy completas, que incluso cuentan con diferentes tipos de letras y sintaxis específicas de
algunos softwares de programación. Pero, generalmente, cuentan con funciones para cortar,
pegar, modificar, importar, hacer y deshacer acciones, en esto son muy similares a los
procesadores de palabras.
Algunos editores son del tipo consola y no son muy vistosos a la vista, otros son del tipo visual y
hasta hay unos pocos que nos permiten incluso subir archivos a Internet y operarlos de manera
remota, todo dependerá de los requerimientos del usuario.
Depurador
Página de investigación 1 (depurador)
Los depuradores son herramientas que permiten encontrar y corregir los errores de los programas
(bugs). Suelen ir ligados a los compiladores de forma que el programador pueda comprobar y
visualizar la correcta ejecución de un programa.
Un depurador es un programa que ejecuta a otro programa (es decir, su código), lo que
le permitirá ejercitar un nivel de control por encima del código mientras que se ejecuta,
y examinar elementos particulares cuando las cosas salen mal.
Cuando usted ejecuta un programa que contiene errores, hay varias cosas que querrá hacer
o conocer:
Estas funciones exigen que usted sea capaz de examinar los datos del programa; obtener
una lista de funciones actualmente en ejecución; establecer puntos de interrupción donde
la ejecución del programa se suspenda para permitir que se analicen sus datos; y revisar las
declaraciones de un programa para ver lo que realmente está sucediendo.
Para dar una idea más clara sobre la operación del código original, casi todos los
depuradores trabajan a un nivel simbólico o de código fuente. En esencia, crean una
apariencia de que usted está ejecutando declaraciones Java o C++ en su programa fuente
en vez del código de máquina al que han sido realmente traducidos.
En muchos casos, los depuradores, junto con otras herramientas de desarrollo de software,
se agrupan en un paquete denominado Entorno de desarrollo integrado o IDE, por sus
siglas en inglés. Muchos fabricantes de microcontroladores suministran IDE para sus
productos, y también están disponibles desde proveedores terceros hasta incluso la
comunidad de fuente abierta.
Los IDE pueden ser productos independientes o (si es de un fabricante) agrupados con
hardware de desarrollo para un microcontrolador específico.
Enlazadores
Página de investigación 1 (enlazadores)
Se podría definir un enlazador como un programa que toma los códigos objetos creados en el
proceso de compilación de un programa, junto con los datos provenientes de subprogramas que
se agrupan en bibliotecas, todo esto con el fin de producir un ejecutable o una biblioteca.
El proceso que lleva a cabo el enlazador comienza a r luego de una revisión sintáctica, semántica y
léxica del código compilado.
El linker u enlazador permite al programador escribir su código en cualquier lenguaje de alto nivel
o si así lo desea en lenguaje de bajo nivel, ya que éste (el enlazador) se encargará de transformarlo
a lenguaje de máquina. Con esto, la tarea del programador se facilita tanto en la codificación como
en el tiempo utilizado para escribir un programa.
La primera función, que es la que se considera la principal, es la que permite crear un único
archivo a partir de varios archivos de código de máquina relocalizable.
Estos archivos pueden haber sido el resultado de varias compilaciones distintas, y uno o varios de
ellos pueden archivos de biblioteca de rutinas proporcionadas por el sistema y disponibles para
cualquier programa que las necesite. Las demás funciones se consideran secundarias, sin embargo,
son necesarias para el funcionamiento que se necesita de un enlazador. Gracias al acceso a
bibliotecas es que podemos utilizar las clases pre compiladas que la mayoría de lenguajes de
programación nos ofrece, también no se permite cambiar por módulos el programa, es decir, que
si se desea cambiar solo un archivo no es necesario compilar y enlazar todo de nuevo,
simplemente es necesario enlazar y compilar el código que deseamos cambiar.
Los enlazadores pueden estar estructurados de dos formas diferentes, la primera estructura
corresponde a los enlazadores de una pasada, mientras que la segunda a los enlazadores de dos
pasadas.
Los enlazadores de una pasada durante el procedimiento de enlace almacenan todo o parte del
contenido de los archivos de entrada, en memoria o en el disco y luego en la ejecución leen ese
material.
Por su parte, los enlazadores de dos pasadas, en la primera pasada el enlazador toma todos los
códigos objetos creados en el proceso de compilación y todas librerías necesarias para crear el
ejecutable. En esta primera etapa todos los códigos objetos que van a formar parte del ejecutable
cuentan una serie de segmentos y una tabla de símbolos. La tabla de símbolos contiene símbolos
importados (nombres de rutinas que son llamados desde otro archivos) o exportados (símbolos
que son utilizados en el archivo pero que están definidos en otro).
A todos estos datos de entrada, el enlazador busca el tamaño de sus segmentos, las definiciones y
referencias de todos los símbolos y con esta información crear una única tabla en la que se listan
todos los segmentos definidos en los archivos de entrada. También crea una tabla única de
símbolos que contiene tanto los símbolos importados como los símbolos exportados.
TIPOS DE ENLAZADORES
Se puede decir que existen dos tipos de enlazadores, a saber, los enlazadores dinámicos y los
enlazadores estáticos
Los enlazadores estáticos: el proceso de enlace sólo se lleva a cabo una vez cuando se produce
el archivo ejecutable, el cual es cargado directamente en memoria cuando es ejecutado. Como se
puede deducir de lo anteriormente descrito, los programas que usan enlazadores estáticos son
incapaces de cambiar su estructura durante su ejecución.
Como se definió anteriormente los enlazadores dinámicos son aquellos que permiten que un
programa modificado mientras está en ejecución.
Los enlazadores dinámicos se dividen en dos etapas, la etapa de enlazamiento estática y la etapa
de enlazamiento en tiempo de cargado. Durante la etapa estática las rutinas de las bibliotecas
utilizadas en el ejecutable creado necesitan ser referenciadas, no así definidas, ya que en la
segunda etapa el enlazador se encargará de buscar y cargar todas las rutinas que no están
definidas antes de pasarle el control al procedimiento principal.
Lo anterior es el proceso que siguen en general todos los enlazadores dinámicos, ahora según el
sistema operativo en el que se esté trabajando la implementación de enlazadores dinámicos va ser
distinta.
El primer enlazador dinámico que existió fue el ELF dynamic linking introducido por Sun
Microsystems a principio de la década de los 80 el cual se convirtió, en la década de los 90, en
estándar para los sistemas operativos unix y derivados como Linux . Por su parte Microsoft
implementa sus enlazadores dinámicos mediante los dll’s, los cuales tienen prácticamente el
mismo funcionamiento.
En un principio los enlazadores podían ser sólo de tipo estático, sin embargo como se menciono
anteriormente a partir de la década de los 80’s se logro hacer enlazadores que pudieran ser
ejecutados dinámicamente. Un enlazador estático es aquel que como se mencionó anteriormente
solo se produce una vez y que no permite que el programa cambie mientras está siendo
ejecutado.
Los enlazadores estáticos necesitan además que todos los símbolos globales estén bien definidos y
en el caso de que se deba de hacer un cambio en alguno de los objetos se debe de volver a enlazar
todos los códigos objetos. Por otra parte es más eficiente en ya que es menos complicado de
manejar en memoria que los enlazadores dinámicos, y además de que la tabla de símbolos es
considerablemente más pequeña que los enlazadores dinámicos
Editor de código fuente: editor de texto que ayuda a escribir el código de software con
funciones como el resaltado de la sintaxis con indicaciones visuales, el relleno automático
específico del lenguaje y la comprobación de errores a medida que se escribe el código.
Automatización de compilación local: herramientas que automatizan tareas sencillas e
iterativas como parte de la creación de una compilación local del software para su uso por parte
del desarrollador, como la compilación del código fuente de la computadora en un código binario,
el empaquetado del código binario y la ejecución de pruebas automatizadas.
Depurador: programa que sirve para probar otros programas y mostrar la ubicación de un
error en el código original de forma gráfica.
Los IDE permiten que los desarrolladores comiencen a programar aplicaciones nuevas con rapidez,
ya que no necesitan establecer ni integrar manualmente varias herramientas como parte del
proceso de configuración. Tampoco es necesario que pasen horas aprendiendo a utilizar
diferentes herramientas por separado, gracias a que todas están representadas en la misma área
de trabajo. Esto resulta muy útil al incorporar desarrolladores nuevos, porque pueden confiar en
un IDE para ponerse al día con los flujos de trabajo y las herramientas estándares de un equipo. De
hecho, la mayoría de las características de los IDE están diseñadas para ahorrar tiempo, como el
relleno inteligente y la generación automatizada del código, lo cual elimina la necesidad de escribir
secuencias enteras de caracteres.
Otras funciones comunes del IDE se encargan de ayudar a los desarrolladores a organizar su flujo
de trabajo y solucionar problemas. Los IDE analizan el código mientras se escribe, así que las fallas
causadas por errores humanos se identifican en tiempo real. Gracias a que hay una sola GUI que
representa todas las herramientas, los desarrolladores pueden ejecutar tareas sin tener que pasar
de una aplicación a otra. El resaltado de sintaxis también es común en la mayoría de los IDE, y
utiliza indicaciones visuales para distinguir la gramática en el editor de texto. Además, algunos IDE
incluyen examinadores de objetos y clases, así como diagramas de jerarquía de clases para ciertos
lenguajes.
Es posible desarrollar aplicaciones sin IDE, o que los desarrolladores básicamente diseñen su
propio IDE integrando varias herramientas de forma manual con los editores de texto ligero como
Vim o Emacs. Para algunos desarrolladores, el beneficio de este enfoque radica en el control y la
personalización extrema que ofrece. Sin embargo, en un contexto empresarial, el tiempo que se
ahorra, la estandarización del entorno y las funciones de automatización de los IDE modernos
normalmente superan las demás consideraciones.
Actualmente, la mayoría de los equipos de desarrollo de las empresas optan por un IDE
preconfigurado que se adecue mejor a sus casos de uso específicos; por lo que la pregunta no es si
conviene adoptar un IDE, sino cuál elegir.
Hay muchos casos de uso comerciales y técnicos distintos para los IDE, lo cual también significa
que hay muchas opciones de IDE propietarios y open source en el mercado. En general, las
características distintivas más importantes entre los IDE son las siguientes:
Cantidad de lenguajes compatibles: algunos IDE son compatibles con un solo lenguaje, así que
son mejores para un modelo de programación específico. Por ejemplo, IntelliJ es conocido
principalmente como un IDE de Java. Otros IDE admiten una gran variedad de lenguajes de
manera conjunta, como el IDE Eclipse, que admite Java, XML, Python, entre otros.
Complementos y extensiones: algunos IDE incluyen una función para personalizar los flujos de
trabajo de forma que se adapten a las necesidades y preferencias del desarrollador.
IDE de nube
Los IDE que se ofrecen como software como servicio (SaaS) basado en la nube brindan varios
beneficios únicos en comparación con los entornos de desarrollo locales. Por un lado, al igual que
con cualquier oferta de SaaS, no es necesario descargar el sistema de software y configurar las
dependencias y los entornos locales, lo cual permite que los desarrolladores comiencen a
contribuir con los proyectos rápidamente. Esto también ofrece un nivel de estandarización en
todos los entornos de los miembros del equipo que permite solucionar el problema típico de que
un elemento funcione bien en una computadora y no en otras. Por otro lado, dado que el entorno
de desarrollo se gestiona de forma centralizada, ningún código reside en la computadora de un
solo desarrollador, lo cual alivia las preocupaciones de seguridad y propiedad intelectual.
El impacto de los procesos en los equipos locales también es diferente. Los procesos como la
ejecución de compilaciones y las pruebas de conjunto de aplicaciones suelen consumir muchos
recursos informáticos. Por eso es probable que los desarrolladores no puedan seguir utilizando las
estaciones de trabajo mientras se ejecuta un proceso. Un IDE de SaaS puede distribuir las tareas
de larga duración sin monopolizar los recursos informáticos de un equipo local. Normalmente, los
IDE de nube no suelen depender de ninguna plataforma, lo cual permite su conexión con
diferentes proveedores de nube.
Una GUI (generalmente pronunciada güi) es una interfaz de usuario gráfica (en lugar de
puramente textual) para una computadora. Al leer esto, usted está mirando la GUI o la interfaz
gráfica de usuario de su navegador web particular. El término entró en existencia porque las
primeras interfaces de usuario interactivas a las computadoras no eran gráficas; estaban
orientadas a texto y teclado, y por lo general consistían en comandos que tenía que recordar y las
respuestas de la computadora que eran infamemente breves. La interfaz de comandos del sistema
operativo DOS (que todavía se puede obtener desde su sistema operativo Windows) es un ejemplo
de la interfaz típica entre usuario y equipo antes de que llegaran las GUI. Un paso intermedio en
las interfaces de usuario entre la interfaz de línea de comandos y la interfaz gráfica de usuario era
la interfaz basada en menús no gráfica, que le permitía interactuar utilizando un ratón en lugar de
tener que escribir comandos del teclado.
Puede dedicarse en exclusiva a un sólo lenguaje de programación o bien, puede ser utilizado para
varios.
Dev C++, un IDE para el lenguaje de programación C++...
WebDevStudio, un IDE en línea para el lenguaje de programación C/C++, Eclipse, NetBeans, Visual
Studio .Net, RAD Studio XE, ...
Un IDE es un entorno de programación que ha sido empaquetado como un programa de
aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un
constructor de interfaz gráfica (GUI). Los IDEs pueden ser aplicaciones por sí solas o pueden ser
parte de aplicaciones existentes. El lenguaje Visual Basic, por ejemplo, puede ser usado dentro de
las aplicaciones de Microsoft Office, lo que hace posible escribir sentencias Visual Basic en forma
de macros para Microsoft Word (VBA).
Los IDE proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación
tales como C++, Python, Java, C#, Delphi, Visual Basic, etc. En algunos lenguajes, un IDE puede
funcionar como un sistema en tiempo de ejecución, en donde se permite utilizar el lenguaje de
programación en forma interactiva, sin necesidad de trabajo orientado a archivos de texto, como
es el caso de Smalltalk u Objective-C.
Es posible que un mismo IDE pueda funcionar con varios lenguajes de programación. Este es el
caso de Eclipse, al que mediante plugins se le puede añadir soporte de lenguajes adicionales.
Bibliografía
https://sites.google.com/site/03fmeautomatismos/home/lenguaje-maquina
https://sites.google.com/site/474introduccionalaprogramacion/evolucion/lenguaje#:~:text=Lengu
aje%20de%20maquina%3A%20El%20lenguaje,comprender%20y%20ejecutar%20el
%20programa.&text=Ejemplo%3A%20Instrucciones%20en%20lenguaje%20de,%2C%201001%2C
%2010001%2C%201110.
https://sites.google.com/site/portafoliocarlosmacallums/unidad-i/lenguajeensamblador
http://paolacazares.blogspot.com/2017/03/ejemplos-de-mnemonicos-en-lenguaje.html
http://ing-radjchv-pmz-estl.blogspot.com/2009/09/14-traductor-y-su-estructura.html#:~:text=Un
%20traductor%20es%20un%20programa,los%20ensambladores%20y%20los%20compiladores.
https://sites.google.com/site/programacionunouaem/unidad-de-competencia-1/traductores-de-
lenguaje
https://desarrolloweb.com/articulos/2387.php
https://www.ictea.com/cs/index.php?rp=%2Fknowledgebase%2F8817%2FiQue-es-un-programa-
compilador.html#:~:text=Un%20compilador%20es%20un%20programa,bytecode)%2C%20o
%20simplemente%20texto.
https://www.europeanvalley.es/noticias/que-es-un-compilador-en-programacion/
https://sites.google.com/site/sedechiapa/home/editores-de-textos
https://sites.google.com/site/informaticaactualysencilla/software/editores-de-texto
https://culturacion.com/para-que-se-usan-los-editores-de-texto/
http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/127_depuradores.html
https://www.arrow.com/es-mx/research-and-events/articles/debuggers-the-basics
http://enlazadoresuvm.blogspot.com/
http://www.carlospes.com/minidiccionario/enlazador.php
https://www.redhat.com/es/topics/middleware/what-is-ide
https://ajpdsoft.com/modules.php?name=Encyclopedia&op=content&tid=1051