edison caicedo

8
EDISON CAICEDO Herramientas para la construcción de procesadores de lenguaje. Aplicación de los lenguajes Los lenguajes de programación hoy en día tienen una infinidad de aplicaciones, básicamente cualquier objeto electrónico tiene cierto grado de programación. Algunos de los más comunes son C++ y JAVA, también existe HTML, HTTP, XML, XAML y C#, este ultimo actualmente es el más utilizado en todos los dispositivos y redes basados en MICROSOFT (Xbox 350, Windows Mobile, Windows Phone, Windows Cloud, Zune, etc.). Ya que los lenguajes de programación son informáticamente un puente entre el Hardware y el Software estos permiten que las computadoras puedan establecer conexión con un celular, una cámara o una consola portátil de videojuego. Otra de las aplicaciones de los lenguajes de programación son las matemáticas como las calculadoras, cajas registradoras, cajeros automáticos, por solo mencionar algunos ejemplos sencillos. Existen también niveles de programación mucho más complejos como los videojuegos o los pilotos automáticos de los aviones comerciales o las máquinas de juego de los casinos que siguen un patrón de probabilidad a partir de un arreglo de números al azar establecido por una programación numérica. La robótica es la combinación de mecánica, electrónica y programación, la cual en base a sensores y mecanismos sigue una serie de instrucciones algorítmicas las cuales le permiten por

Upload: david-caicedo

Post on 14-Aug-2015

73 views

Category:

Documents


1 download

TRANSCRIPT

EDISON CAICEDO

Herramientas para la construcción de procesadores de lenguaje.

Aplicación de los lenguajes

Los lenguajes de programación hoy en día tienen una infinidad de aplicaciones, básicamente

cualquier objeto electrónico tiene cierto grado de programación. Algunos de los más comunes son

C++ y JAVA, también existe HTML, HTTP, XML, XAML y C#, este ultimo actualmente es el más

utilizado en todos los dispositivos y redes basados en MICROSOFT (Xbox 350, Windows Mobile,

Windows Phone, Windows Cloud, Zune, etc.). Ya que los lenguajes de programación son

informáticamente un puente entre el Hardware y el Software estos permiten que las computadoras

puedan establecer conexión con un celular, una cámara o una consola portátil de videojuego. Otra

de las aplicaciones de los lenguajes de programación son las matemáticas como las calculadoras,

cajas registradoras, cajeros automáticos, por solo mencionar algunos ejemplos sencillos. Existen

también niveles de programación mucho más complejos como los videojuegos o los pilotos

automáticos de los aviones comerciales o las máquinas de juego de los casinos que siguen un

patrón de probabilidad a partir de un arreglo de números al azar establecido por una programación

numérica. La robótica es la combinación de mecánica, electrónica y programación, la cual en base

a sensores y mecanismos sigue una serie de instrucciones algorítmicas las cuales le permiten por

ejemplo a un brazo robótico montar una rueda, ajustar un tornillo o cortar un rectángulo de 3 cm

cuadrados en una placa de acero. Con el avance de la tecnología los límites de la programación se

vuelven cada vez más distante

HISTORIA

Los primeros lenguajes de programación surgieron de la idea de Charles Babagge, la cual se le

ocurrió a este hombre a mediados del siglo XIX. Era un profesor matemático de la universidad de

Cambridge e inventor inglés, que al principio del siglo XIX predijo muchas de las teorías en que se

basan los actuales ordenadores. Consistía en lo que él denominaba la maquina analítica, pero que

por motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colaboro Ada

Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo

programas para aquélla supuesta máquina de Babagge, en tarjetas perforadas. Como la maquina

no llego nunca a construirse, los programas de Ada, lógicamente, tampoco llegaron a ejecutarse,

pero si suponen un punto de partida de la programación, sobre todo si observamos que en cuanto

se empezó a programar, los programadores utilizaron las técnicas diseñadas por Charles Babagge,

y Ada, que consistían entre otras, en la programación mediante tarjetas perforadas. A pesar de

ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto que

estos dos genios de antaño, se adelantaron un siglo a su época, lo cual describe la inteligencia de

la que se hallaban dotados.

En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias, un

dispositivo mecánico para efectuar sumas repetidas. Pero Babagge se dedicó al proyecto de la

máquina analítica, abandonando la máquina de diferencias, que se pudiera programar con tarjetas

perforadas, gracias a la creación de Charles Jacquard (francés). Este hombre era un fabricante de

tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos,

leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido.

Entonces Babagge intento crear la máquina que se pudiera programar con tarjetas perforadas

para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología de la época no

bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de

forma definitiva, su contribución es decisiva, ya que los ordenadores actuales responden a un

esquema análogo al de la máquina analítica. En su diseño, la máquina constaba de cinco unidades

básicas:

Unidad de entrada, para introducir datos e instrucciones. Memoria, donde se almacenaban datos y resultados intermedios. Unidad de control, para regular la secuencia de ejecución de las operaciones. Unidad Aritmético-Lógica, que efectúa las operaciones. Unidad de salida, encargada de comunicar al exterior los resultados.

Diseño y construcción de un compilador

Las herramientas Flex y Bison Son las herramientas desarrolladas en el proyecto GNU (Free Software Foundation) equivalentes a lex y yacc en el sistema operativo UNIX®. Están asociadas al lenguaje C, aunque flex puede también generar su salida en el lenguaje C++. Las referencias que creo oficiales (al menos en cuanto a documentación) son las siguientes (aunque también podrás conseguir estos documentos a través de los enlaces que aparecen posteriormente): Vern Paxson [1995] Flex, version Charles Donnelly, Richard Stallman [1999] Bison. The YACC-compatible Parser Generator. (Asigno la autoría a Donnelly y Stallman porque así lo ponía en la versión 1.28, aunque no aparece mención alguna en la última, 1.35. Por cierto, este Stallman es el mítico Stallman, por supuesto, para que veas cuáles son sus intereses particulares. Su sitio es espectacular.) Si usas GNU/Linux, es casi seguro que ya tengas instalados estos programas; si no los tienes, búscalos en tu distribución, porque están seguro. Para usarlos, solo tienes que leer la documentación, y listo.

Que es Flex y Bison

¿Qué es Bison?

GNU bison es un programa generador de analizadores sintácticos de propósito general perteneciente al proyecto GNU disponible para prácticamente todos los sistemas operativos, se usa normalmente acompañado de flex aunque los analizadores léxicos se pueden también obtener de otras formas. Bison convierte la descripción formal de un lenguaje, escrita como una gramática libre de contexto LALR, en un programa en C, C++, o Java que realiza análisis sintáctico. Es utilizado para crear analizadores para muchos lenguajes, desde simples calculadoras hasta lenguajes complejos. Para utilizar Bison, es necesaria experiencia con el la sintaxis usada para describir gramáticas.

GNU bison tiene compatibilidad con Yacc, todas las gramáticas bien escritas para Yacc, funcionan en Bison sin necesidad de ser modificadas. Cualquier persona que esté familiarizada con Yacc podría utilizar Bison sin problemas. Bison fue escrito en un principio por Robert Corbett; Richard Stallman lo hizo compatible con Yacc y Wilfred Hansen de la Carnegie Mellon University añadió soporte para literales multicaracter y otras características. Flex: El Flex define las reglas de reconocimiento de símbolos (Tokens) a partir de expresiones regulares. Cuando un Token es reconocido por uno de estos patrones de agrupamiento se le define una acción, por lo general esta acción es devolver el Tipo y el valor (lexema). El Flex cuando se utiliza combinado con el Bison, utiliza las definiciones de los Tokens realizadas en el Bison para la comunicación entre ellos, Los ficheros del Flex para C++ utilizan por convenio la extensión ‘.ll’. La sintaxis de un fichero en flex es la siguiente: ... definiciones ... %% ... reglas... %% ... subrutinas ...

Como se instala Flex y Bison