You are on page 1of 14

Lenguajes de Programación

Una computadora es una máquina que solo comprende las instrucciones que se le den en un determinado formato. Cada máquina reconoce y ejecuta un número de instrucciones diferentes que se agrupan en los distintos lenguajes de programación. Un lenguaje de programación es un conjunto limitado de palabras y de símbolos que representan procedimientos, cálculos, decisiones y otras operaciones que pueden ejecutar una computadora. A pesar de que en este trabajo parte de la división de lenguajes de programación en imperativos y declarativos (los cuales a su vez se dividen en numerosos subgrupos), la clasificación más común y básica que suele hacerse de los lenguajes de programación es la que los divide en lenguajes de bajo y de alto nivel. Los lenguajes de programación de bajo nivel fueron los primeros que surgieron y se llaman así porque están directamente relacionados con el hardware del computador, es decir, el usuario introduce una serie de códigos numéricos que la máquina va a interpretar como instrucciones. Para usar este lenguaje, el programador tenía que conocer el funcionamiento de la máquina al más bajo nivel y los errores de programación eran muy frecuentes. Los lenguajes de alto nivel surgieron con posterioridad con el primer compilador de FORTRAN (FORmula TRANslation), que, como su nombre indica, inició como un "simple" esfuerzo de traducir un lenguaje de fórmulas, al lenguaje ensamblador y por consiguiente al lenguaje de máquina, facilitando la labor a los programadores. A partir de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: facilitar la vida al programador, aumentando la productividad. Estos lenguajes usan un número reducido de instrucciones (normalmente en inglés) que siguen unas estrictas reglas gramaticales que se conocen como sintaxis del lenguaje. Pero aunque el programador de esta forma se distancie del hardware del computador, este sigue trabajando en lenguaje máquina. Por ello se hace necesaria una traducción a una secuencia de instrucciones interpretables por el computador. Esta labor es llevada a cabo por los compiladores y los intérpretes. El compilador es un programa que se encarga de la traducción global del programa realizado por el usuario. Esta operación recibe el nombre de compilación. El programa es traducido completamente antes de que se ejecute, por lo que la ejecución se realiza en un periodo muy breve. El intérprete por el contrario lleva a cabo una traducción inmediata en el momento de la ejecución, es decir, irá ejecutando las instrucciones una a una haciendo que el proceso requiera un periodo de tiempo sensiblemente mayor del que necesitaría un compilador. Los intérpretes son usados para traducir programas de alta dificultad de implementación, en estos casos, las órdenes a traducir son de tal complejidad que no merece la pena crear un compilador ya que este también tendría que ser de una complejidad por encima de lo normal. Hay que mencionar la existencia de lenguajes que combinan características de los de alto nivel y los de bajo nivel (es decir, Ensamblador). Un ejemplo es C: contiene estructuras de programación de alto nivel; sin embargo, fue diseñado con muy pocas instrucciones, las cuales son sumamente sencillas, fáciles de traducir al lenguaje de la máquina; y requiere de

lógicamente. Pero la tecnología de la época no bastaba para hacer realidad sus ideas. Este hombre era un fabricante de tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos. 2) Memoria. Era un profesor matemático de la universidad de Cambridge e inventor ingles. gracias a la creación de Charles Jacquard (francés). leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido. pues realizo programas para aquélla supuesta maquina de Babagge. la cual se le ocurrió a este hombre a mediados del siglo XIX. que consistían entre otras. Por ello. no fue nunca abandonado y siguiéndolo. que se pudiera programar con tarjetas perforadas. para introducir datos e instrucciones. el uso de la memoria. en tarjetas perforadas. sobre todo si observamos que en cuanto se empezó a programar. . la cual es considerada como la primera programadora de la historia. conocido como el "padre de la informática" no pudo completar en aquella época la construcción del computador que había soñado. los programadores utilizaron las técnicas diseñadas por Charles Babagge. El camino señalado de Babbage. pero si suponen un punto de partida de la programación. un dispositivo mecánico para efectuar sumas repetidas. tampoco llegaron a ejecutarse. lo cual describe la inteligencia de la que se hallaban dotados. y Ada. Charles Babbage. su contribución es decisiva. en la programación mediante tarjetas perforadas. para regular la secuencia de ejecución de las operaciones. 3) Unidad de control. En su diseño. Pero Babagge se dedico al proyecto de la máquina analítica. 4) Unidad Aritmético-Lógica. etcétera. 5) Unidad de salida. que al principio del siglo XIX predijo muchas de las teorías en que se basan los actuales ordenadores. lenguajes de nivel medio. A pesar de ello. En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias.un entendimiento apropiado de cómo funciona la máquina. encargada de comunicar al exterior los resultados. abandonando la máquina de diferencias. si bien. son considerados mayoritariamente de bajo nivel. Consistía en lo que él denominaba la maquina analítica. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva. ya que los ordenadores actuales responden a un esquema análogo al de la máquina analítica. Se dice por tanto que estos dos genios de antaño. pero que por motivos técnicos no pudo construirse hasta mediados del siglo XX. Como la maquina no llego nunca a construirse. la máquina constaba de cinco unidades básicas: 1) Unidad de entrada. se adelantaron un siglo a su época. Los primeros lenguajes de programación surgieron de la idea de Charles Babagge. donde se almacenaban datos y resultados intermedios. Con él colaboro Ada Lovedby. que efectúa las operaciones. los programas de Ada. se construyeron las primeras computadoras. dado que faltaba algo fundamental: la electrónica. algunos consideran a lenguajes como C (que fue diseñado para hacer sistemas operativos). Ada ha permanecido como la primera programadora de la historia. 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.

la compañía Remington Rand fabricó el modelo 1103. Posteriormente. Estas máquinas tenían las siguientes características:   Estas máquinas estaban construidas por medio de tubos de vacío. por lo que la IBM desarrollo la 702. Eran programadas en lenguaje de máquina. 1 En esta generación las máquinas son grandes y costosas (de un costo aproximado de ciento de miles de dólares). las unidades de entrada utilizaban tarjetas perforadas. Aparecen muchas compañías y las computadoras eran bastante avanzadas para su época como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester. Burroughs 220 y UNIVAC 1105. Otros modelos de computadora que se pueden situar en los inicios de la segunda generación son: la UNIVAC 80 y 90. se utilizó para procesar el censo de 1950 en los Estados Unidos. La computadora más exitosa de la primera generación fue la IBM 650.1929). que disponía de mil palabras de memoria central y podían leer cintas magnéticas. fue la primera computadora comercial. que recibía el nombre de programación de sistemas. Después se desarrolló por IBM la IBM 701 de la cual se entregaron 18 unidades entre 1953 y 1957. que competía con la 701 en el campo científico. que es el antecesor de los discos actuales. se reducía su tamaño y crecía su capacidad de procesamiento. En 1951 aparece la UNIVAC (NIVersAl Computer). También en esta época se empezó a definir la forma de comunicarse con las computadoras. retomadas por Herman Hollerith (1860 . Esta generación abarco la década de los cincuenta. En las dos primeras generaciones. Se programan en nuevos lenguajes llamados lenguajes de alto nivel. puesto que se realizó un estudio en esta época que determinó que con veinte computadoras se saturaría el mercado de los Estados Unidos en el campo de procesamiento de datos. Segunda Generación Cerca de la década de 1960. Y se conoce como la primera generación. debido a esto no duró en el mercado. Las características de la segunda generación son las siguientes: Están construidas con circuitos de transistores. En esta generación las computadoras se reducen de tamaño y son de menor costo. las computadoras seguían evolucionando. la cual presentó problemas en memoria. . las IBM 704 y 709. Esta computadora que usaba un esquema de memoria secundaria llamado tambor magnético. de la cual se produjeron varios cientos.Generaciones del Lenguaje de Programación Primera Generación En esta generación había un gran desconocimiento de las capacidades de las computadoras. quien además fundó una compañía que con el paso del tiempo se conocería como IBM (International Bussines Machines).

para no perder el "programa" resultante había que "guardarlo" (almacenarlo) en una grabadora de astte. pues en esa época no había discos flexibles y mucho menos discos duros para las PC. El panorama se modificó totalmente con la aparición de las computadoras personales con mejore circuitos. Pero el problema "constante" es que ninguna solución para el uso de los programas es "constante". Se ofrecen un sinnúmero de cursos prometiendo que en pocas semanas hacen de cualquier persona un experto en los programas comerciales. seguida por la serie 3000. nuevos trucos. este procedimiento podía tomar de 10 a 45 minutos. El software empieza a tratar de alcanzar el paso del hardware. Los programas eran hechos a la medida por un equipo de expertos: analistas. Hace falta una relación amistosa entre el usuario y la PC. Aparece el concepto de human interface que es la relación entre el usuario y su computadora. Esta situación en un principio se produjo en las primeras computadoras personales. introdujo el modelo NCR 315. Con respecto al software se inicia una verdadera carrera para encontrar la manera en que el usuario pase menos tiempo capacitándose y entrenándose y más tiempo produciendo. pues se requería saberlas "programar" (alimentarle instrucciones) para obtener resultados. que manejaba el lenguaje COBOL. De estar totalmente desconectado a ellas en las máquinas grandes pasa la PC a ser pieza clave en el diseño tanto del hardware como del software. por lo tanto su uso estaba limitado a aquellos audaces pioneros que gustaran de pasar un buen número de horas escribiendo instrucciones. Se ponen al alcance programas con menús (listas de opciones) que orientan en todo momento al usuario (con el consiguiente aburrimiento de los usuarios expertos). la National Cash Register empezó a producir máquinas para proceso de datos de tipo comercial. más memoria. otros programas ofrecen toda una artillería de teclas de control y teclas de funciones (atajos) para efectuar toda suerte de efectos en el trabajo (con la consiguiente desorientación de los usuarios novatos).Algunas de estas computadoras se programaban con cintas perforadas y otras más por medio de cableado en un tablero. Además. según el programa. El usuario de las computadoras va cambiando y evolucionando con el tiempo. Aparecen los programas procesadores de palabras como el célebre Word Star. Las computadoras de esta generación fueron: la Philco 212 (esta compañía se retiró del mercado en 1964) y la UNIVAC M460. Se empieza a sentir que la relación usuario-PC no está acorde con los desarrollos del equipo y de la potencia de los programas. . la Control Data Corporation modelo 1604. Después salió al mercado la RCA 601. "corriendo" el programa resultante y verificando y corrigiendo los errores o bugs que aparecieran. nuevos menús. La Radio Corporation of America introdujo el modelo 501. El usuario final de la información no tenía contacto directo con las computadoras. Pero aquí aparece un nuevo elemento: el usuario. Se habla entonces de hardware ergonómico (adaptado a las dimensiones humanas para reducir el cansancio). la impresionante hoja de cálculo (spreadsheet) Visicalc y otros más que de la noche a la mañana cambian la imagen de la PC. unidades de disco flexible y sobre todo con la aparición de programas de aplicación general en donde el usuario compra el programa y se pone a trabajar. diseñadores. diseños de pantallas antirreflejos y teclados que descansen la muñeca. programadores y operadores que se manejaban como una orquesta para resolver los problemas y cálculos solicitados por la administración. la IBM mejoró la 709 y sacó al mercado la 7090. para procesos administrativos y comerciales. Cada nuevo programa requiere aprender nuevos controles.

máquinas en gran escala. 135. Cuarta Generación Aquí aparecen los microprocesadores que es un gran adelanto de la microelectrónica. Siemens de origen alemán.Packard con varios modelos el 36 y el 34. incluía un conjunto de técnicas de manejo de memoria y del procesador que pronto se convirtieron en estándares. Honey . Las microcomputadoras con base en estos circuitos son extremadamente pequeñas y baratas. Su manejo es por medio de los lenguajes de control de los sistemas operativos. la IBM produce la serie 370 (modelos 115. Estas computadoras se caracterizan por ser muy potentes y veloces. 90. sino que estaba dividido por aplicaciones). paquetes de discos magnéticos y otras características que ahora son estándares (no todos los modelos usaban estas técnicas. A mediados de la década de 1970. la serie 3000 y 9000 de Hewlett . 65. 67. En la Unión Soviética se utilizó la US (Sistema Unificado. la Wang y Honey . aparecen en el mercado las computadoras de tamaño mediano.Well -Bull. 3033. gran sistema). 75.3 Las características de esta generación fueron las siguientes: Su fabricación electrónica está basada en circuitos integrados.11 de Digital Equipment Corporation. surge la tercera generación de las computadoras. 40.8 y la PDP . . Ryad) que ha pasado por varias generaciones. Algunas minicomputadoras fueron las siguientes: la PDP . El sistema operativo de la serie 360. Aquí nacen las computadoras personales que han adquirido proporciones enormes y que han influido en la sociedad en general sobre la llamada "revolución informática". UNIVAC compite son los modelos 1108 y 1110. Burroughs con su serie 6000 produce los modelos 6500 y 6700 de avanzado diseño. 145. 2 En 1964 CDC introdujo la serie 6000 con la computadora 6600 que se consideró durante algunos años como la más rápida. por lo que su uso se extiende al mercado industrial. se llamó OS que contaba con varias configuraciones. Se inaugura con la IBM 360 en abril de 1964. 168). La IBM produce la serie 360 con los modelos 20.Tercera generación Con los progresos de la electrónica y los avances de comunicación con las computadoras en la década de los 1960. unidades de cinta de nueve canales. 85. 125. 50.Well participa con su computadora DPS con varios modelos. la ICL fabricada en Inglaterra. son circuitos integrados de alta densidad y con una velocidad impresionante. mientras que CDC produce su serie 7000 con el modelo 7600. 30. 195 que utilizaban técnicas especiales del procesador. o minicomputadoras que no son tan costosas como las grandes (llamadas también como mainframes que significa también. A finales de esta década la IBM de su serie 370 produce los modelos 3031. la VAX (Virtual Address eXtended) de la misma compañía. pero disponen de gran capacidad de procesamiento. En la década de 1970. que se reemplazaron por su serie 7000. 4341. 22. 158. los modelos NOVA y ECLIPSE de Data General.

etc. las hojas electrónicas de cálculo. paquetes gráficos. Y en los Estados Unidos ya está en actividad un programa en desarrollo que persigue objetivos semejantes. las minicomputadoras y los grandes sistemas continúan en desarrollo. antecedida tan solo por IBM. por supuesto. Japón lanzó en 1983 el llamado "programa de la quinta generación de computadoras". eran capaces de atender a varios cientos de millones de operaciones por segundo. y esta por su parte es aún de las cinco compañías más grandes del mundo. que pueden resumirse de la siguiente manera: Procesamiento en paralelo mediante arquitecturas y diseños especiales y circuitos de gran velocidad. porque han hecho más interactiva la comunicación con el usuario. no han podido alcanzar el nivel que se desea: la capacidad de comunicarse con la computadora en un lenguaje más cotidiano y no a través de códigos o lenguajes de control especializados. Las enormes computadoras de las series CDC. el software y los sistemas que con ellas de manejan han tenido un considerable avance. Surgen otras aplicaciones como los procesadores de palabra. pero sería equivocado suponer que las grandes computadoras han desaparecido. . la sociedad industrial se ha dado a la tarea de poner también a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. por el contrario. con los objetivos explícitos de producir máquinas con innovaciones reales en los criterios mencionados. por lo que no queda duda que su impacto y penetración han sido enormes. Quinta Generación En vista de la acelerada marcha de la microelectrónica. Manejo de lenguaje natural y sistemas de inteligencia artificial. También las industrias del Software de las computadoras personales crecen con gran rapidez. CRAY. En 1981 se vendieron 800 00 computadoras personales. De hecho las máquinas pequeñas rebasaban por mucho la capacidad de los grandes sistemas de 10 o 15 años antes. Entre 1984 y 1987 se vendieron alrededor de 60 millones de computadoras personales. Surge la competencia internacional por el dominio del mercado de la computación. Hitachi o IBM por ejemplo. No todo son microcomputadoras.En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de uso masivo y más tarde forman la compañía conocida como la Apple que fue la segunda compañía más grande del mundo. sin embargo. militar y de la gran industria. Con el surgimiento de las computadoras personales. al siguiente subió a 1 400 000. su presencia era ya ineludible en prácticamente todas las esferas de control gubernamental. Gary Kildall y William Gates se dedicaron durante años a la creación de sistemas operativos y métodos para lograr una utilización sencilla de las microcomputadoras (son los creadores de CP/M y de los productos de Microsoft). en la que se perfilan dos líderes que. que requerían de instalaciones costosas y especiales.

de propósito general FORTRAN IV COBOL 61 Extendido ALGOL 60 Revisado SNOBOL APL ( como notación sólo) 1966 . multitarea e interactivos Compil.60 Ordenadores pequeños. costes Sistemas de almacenamiento masivo de datos (caros) S.EVOLUCION DE LOS LENGUAJES DE PROGRAMACIÓN periodo 1950 . con optimización Leng.70 Ordenadores de diferentes tamaños. velocidades. estandard .65 Ord.O. grandes y caros Discos Magnéticos Sistemas operativos Leng.55 Influencias Ordenadores primitivos Lenguajes Lenguajes ensamblador Lenguajes experimentales de alto nivel 1956 . caros y lentos Cintas magnéticas Compiladores e interpretes Optimización del código FORTRAN ALGOL 58 y 60 COBOL LISP 1961 . PL/I FORTRAN 66 (estándar) COBOL 65 (estandard) ALGOL 68 SNOBOL4 SIMULA 67 BASIC APL/360 .

75 Micro ordenadores Sistemas de almacenamiento masivo de datos pequeños y baratos Progr. estructurada Ingeniería del software Leng. sencillos 1976 . tiempo-real Prog.80 Ord.flexibles y generales 1971 . con fiabilidad y fácil mantenimiento ADA FORTRAN 77 PROLOG C PASCAL COBOL 74 PL /I . baratos y potentes Sistemas distribuidos Prog. interactiva Abstracción de datos Prog.

Esta comunicación favorece a su vez el cambio de estado en los propios objetos. qué operaciones se pueden realizar con él. A su vez. y en segundo lugar en las estructuras de datos que esos procedimientos manejan. en la que los datos y los procedimientos están separados y sin relación. La identidad es una propiedad de un objeto que lo diferencia del resto. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones. primero definen objetos . Los programadores que emplean éste nuevo paradigma. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. En la programación estructurada sólo se escriben funciones que procesan datos. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos. Esto difiere de la programación estructurada tradicional. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.LENGUAJES ORIENTADO A OBJETOS La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta característica lleva a tratarlos como unidades indivisibles. polimorfismo. es decir. dicho con otras palabras. serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos). Esto permite hacer los programas y módulos más fáciles de escribir. en las que no se separan ni deben separarse el estado y el comportamiento. De esta forma. comportamiento e identidad: El estado está compuesto de datos. Los objetos son entidades que combinan estado. La programación orientada a objetos expresa un programa como un conjunto de estos objetos. que colaboran entre ellos para realizar tareas. en cambio. sin separar ni darle mayor importancia a ninguno de ellos. hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. mantener y reutilizar. Está basado en varias técnicas. y encapsulamiento. incluyendo herencia. un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase. al poder tener valores bien diferenciados en sus atributos. los objetos disponen de mecanismos de interacción llamados métodos que favorecen la comunicación entre ellos. ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. es su identificador (concepto análogo al de identificador de una variable o una constante). modularidad. El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto. El programador debe pensar indistintamente en ambos conceptos. Su uso se popularizó a principios de la década de 1990.

en gran parte debido a la influencia de C++. entre otros.para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos. o a objetos internos del sistema (del programa). se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos. creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo. Introduce nuevos conceptos. Corresponden a los objetos reales del mundo que nos rodea. BASIC. Pascal. en este centro. Al parecer. trabajaban en simulaciones de naves. Para saltar este obstáculo. en gran parte debido a la aparición de Internet. PHP en su versión 5 se ha ido modificando y soporta una orientación completa a objetos. Fueron refinados más tarde en Smalltalk. que fue desarrollado en Simula en Xerox PARC (y cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en marcha" en lugar de tener un sistema basado en programas estáticos. y a la implementación de la máquina virtual de Java en la mayoría de navegadores. Entre ellos destacan los siguientes: Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). siendo responsable cada clase de objetos de definir sus propios datos y comportamiento. para las cuales la programación orientada a objetos está particularmente bien adaptada. carecían de las características de las cuales muchos programadores habían venido a depender. Origen Los conceptos de la programación orientada a objetos tienen origen en Simula 67. Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo. Los lenguajes orientados a objetos "puros". La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y a la capacidad de mantenimiento del código. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario. cumpliendo todas las características propias de la orientación a objetos. y fueron confundidos por la explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras. una extensión del lenguaje de programación C. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos. El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java. que superan y amplían conceptos antiguos ya conocidos.--- . se habla también de programación dirigida por eventos. por otra parte. Es una instancia a una clase. incluyendo Ada. pero permitiendo algunas características imperativas de maneras "seguras". Lisp. un lenguaje diseñado para hacer simulaciones. En este caso. Conceptos fundamentales La programación orientada a objetos es una nueva forma de programar que trata de encontrar una solución a estos problemas. La programación orientada a objetos tomó posición como el estilo de programación dominante a mediados de los años ochenta.

El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. cuya ejecución se desencadena tras la recepción de un "mensaje". no es más que un contenedor interno del atributo del objeto o de un estado interno. que puede ser únicamente accedida y alterada por un método del objeto. y cuyo valor puede ser alterado por la ejecución de algún método. informar y cambiar su estado. una variedad de técnicas son requeridas para ampliar una abstracción. relaciones y métodos. a la reacción que puede desencadenar un objeto. una "variable". En comparación con un lenguaje imperativo. y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. o un mensaje enviado por un objeto). Representación de un objeto: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes. Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad. También se puede definir como evento. Un método puede producir un cambio en las propiedades del objeto. principalmente porque se suelen emplear conjuntamente. Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina. y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase. Método: algoritmo asociado a un objeto (o a una clase de objetos). solamente los propios métodos . Mensaje: una comunicación dirigida a un objeto. es lo que el objeto puede hacer. al mismo nivel de abstracción. las funciones o los métodos pueden también ser abstraídos y cuando lo están. y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). Los procesos. identidad.Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. Componentes de un objeto: atributos. Algunos autores confunden este concepto con el principio de ocultación. pero hay un consenso general en que las características siguientes son las más importantes (para más información. Principio de ocultación: Cada objeto está aislado del exterior. Características Hay un cierto desacuerdo sobre exactamente qué características de un método de programación o lenguaje le definen como "orientado a objetos". que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. es un módulo natural. es decir la acción que genera. Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos). La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas. seguir los enlaces respectivos): Abstracción: Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo. Desde el punto de vista del comportamiento. o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. Esto permite aumentar la cohesión de los componentes del sistema. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas. así como la "función" es un procedimiento interno del método del objeto. Estado interno: es una propiedad invisible de los objetos.

eliminando efectos secundarios e interacciones inesperadas.internos del objeto pueden acceder a su estado. La aplicación entera se reduce a un agregado o rompecabezas de objetos. y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. pueden compartir el mismo nombre. permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. O dicho de otro modo. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. sino que se relacionan entre sí. tales como las plantillas y la sobrecarga de operadores de C++. Ejemplos . las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos. formando una jerarquía de clasificación. Algunos lenguajes relajan esto. Cuando esto ocurre en "tiempo de ejecución". esta característica no está soportada por algunos lenguajes (como Java). Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple. esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en 'tiempo de compilación') de polimorfismo. Estos pueden compartir (y extender) su comportamiento sin tener que re implementar su comportamiento. asociados a objetos distintos. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Polimorfismo: comportamientos diferentes. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas. Herencia: las clases no están aisladas.

.

el compilador realiza los análisis: léxico. Un ejemplo de esto seria Entonces el compilador recibe una entrada de caracteres. Para la generación de código.generador de . la entrada actual proviene de un árbol. Estas tareas las realiza el desarrollador una vez para una arquitectura específica. METACOMPILADOR: Es Sinónimo De compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los meta compiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis. algunas de estas tareas son: la búsqueda de patrones. la escritura de código. Por ejemplo. el análisis sintáctico. seguidamente se realiza la generación de código objeto en lenguaje de máquina. Estas herramientas trabajan basadas en un conjunto de reglas.generador de analizadores léxicos • YACC: analizadores sintácticos desarrollados para UNIX. Después se hace la optimización del código intermedio. sintáctico y semántico. por lo general escrita por el programador. En síntesis para crear un generador de código se deben hacer muchas de las tareas que realizan los compiladores. Lo que sí se han desarrollado es generadores de analizadores léxicos y sintácticos. para generar seguidamente el código intermedio. los conocidos: • LEX. el código intermedio se genera con principios de búsqueda de patrones y aplicación de reglas. estas reglas definen la traducción de las instrucciones del lenguaje intermedio al lenguaje de máquina. se busca en las reglas establecidas la proposición que coincida con la entrada actual. el análisis léxico y la optimización de código.LENGUAJES GENERADORES Aquí se hablará de las herramientas generadoras automáticas de código para un compilador.