Sie sind auf Seite 1von 24

COMPILADORES Y LENGUAJES FORMALES

GRADO INGENIERA INFORMTICA

ACTIVIDAD 1: Clasificacin de los lenguajes de programacin

AUTOR:
DAVID SNCHEZ RUIZ

Clasificacin de lenguajes de programacin

Versin 1.0

CONTROL
Versin 1.0

DE DOCUMENTACIN

Fecha 13-01-2013

Resumen de los cambios producidos Creacin del documento.

Realizado por: AUTOR Fecha: 13-01-2013

Aprobado por: Fecha: dd-mm-aaaa

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

NDICE
1. INTRODUCCIN ........................................................................................................................ 4 1.1. 1.2. 2. 3. PROPOSITO ....................................................................................................................... 4 OBJETIVOS ........................................................................................................................ 4

ACTIVIDAD A REALIZAR ......................................................................................................... 4 LENGUAJES DE PROGRAMACIN ...................................................................................... 5 3.1. 3.2. 3.3. 3.4. 3.5. C++ ....................................................................................................................................... 8 HASKELL ........................................................................................................................... 10 PYTHON ............................................................................................................................ 14 OCAML (Objetive CAML) ............................................................................................... 16 JAVA ................................................................................................................................... 18

4. 5. 6. 7.

MAPA CONCEPTUAL ............................................................................................................. 21 TABLA DE CLASIFICACION DE LOS LENGUAJES ......................................................... 22 DATOS DE INTERES .............................................................................................................. 22 BIBLIOGRAFA ......................................................................................................................... 24

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


1. INTRODUCCIN
1.1. PROPOSITO

Versin 1.0

A continuacin se detalla actividad 1 de la unidad 1 de la asignatura de Compiladores y lenguajes formales, donde se describe, la clasificacin de una serie de lenguajes de programacin en funcin de las clasificaciones formales estudiadas.

1.2. OBJETIVOS

Aplicar los conocimientos adquiridos sobre las clasificaciones en las que se puede encontrar un lenguaje de programacin. Entender que estas clasificaciones no son incompatibles, as como las limitaciones que tienen las distintas clasificaciones y cmo deben solaparse. Hacer un esfuerzo de anlisis de la informacin contenida en la pgina web que se indica en el enunciado, para posteriormente hacer un esfuerzo de sntesis plasmndolo en el informe que se entrega. Realizar un mapa conceptual de las clasificaciones en las que se puede encontrar un lenguaje de programacin.

2. ACTIVIDAD A REALIZAR
Clasificacin de lenguajes de programacin en base a los siguientes puntos de vista:
Segn su grado de independencia de la mquina. Segn la forma de sus instrucciones. Por generaciones. Segn la forma de ejecucin.

Los lenguajes que se clasifican son los siguientes:


C++ Haskell. Python. OCaml (Objective CAML). Java.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


Salida de la actividad:

Versin 1.0

Clasificacin para cada lenguaje con el siguiente contenido: 1. Lenguajes de los que deriva. 2. Caractersticas del mismo. 3. Principal utilizacin (ejemplo: clculo matemtico). 4. Dentro de cada clasificacin, de qu tipo es. 5. Bibliografa. 6. Mapa conceptual con las clasificaciones de los lenguajes de programacin y se indicarn algunos de los lenguajes ms representativos.

3. LENGUAJES DE PROGRAMACIN
Un lenguaje de programacin es un idioma artificial diseado para expresar procesos que pueden ser llevadas a cabo por mquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento fsico y lgico de una mquina, para expresar algoritmos con precisin, o como modo de comunicacin humana y est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones. La programacin es el proceso de creacin de un programa de computadora, mediante la aplicacin de procedimientos lgicos, a travs de los siguientes pasos: El desarrollo lgico del programa para resolver un problema en particular. Escritura de la lgica del programa empleando un lenguaje de programacin especfico (codificacin del programa). Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de mquina. Prueba y depuracin del programa. Desarrollo de la documentacin.

Permite especificar de manera precisa sobre qu datos debe operar una computadora, cmo deben ser almacenados o transmitidos y qu acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a travs de un lenguaje que intenta estar relativamente prximo al lenguaje humano o natural. Una caracterstica relevante de los lenguajes de programacin es precisamente que ms de un programador pueda usar un conjunto comn de instrucciones que sean comprendidas entre ellos para realizar la construccin de un programa de forma colaborativa.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


Clasificacin de los lenguajes de programacin:
a) Segn su grado de independencia de la mquina (abstraccin): Lenguaje mquina.

Versin 1.0

Lenguajes de bajo nivel: La programacin se realiza teniendo muy en cuenta las caractersticas del procesador. Ejemplo: Lenguajes ensamblador. Lenguajes de medio nivel: Permiten un mayor grado de abstraccin pero al mismo tiempo mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C puede realizar operaciones lgicas y de desplazamiento con bits, tratar todos los tipos de datos como lo que son en realidad a bajo nivel (nmeros), etc.

Lenguajes de alto nivel: Ms parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorando (abstrayndose) del funcionamiento de la mquina.

Lenguajes orientados a problemas concretos: Por ejemplo SQL orientado a bases de datos.

b) Segn la forma de sus instrucciones: Lenguajes imperativos: Programan mediante una serie de comandos, agrupados en bloques y compuestos de rdenes condicionales que permiten al programa retornar a un bloque de comandos si se cumple la condicin. Estos fueron los primeros lenguajes de programacin en uso y an hoy muchos lenguajes modernos usan este principio. No obstante, los lenguajes imperativos estructurados carecen de flexibilidad debido a la secuencia de las instrucciones. Lenguajes funcionales o declarativos: Es un lenguaje que crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de otras funciones. Cuando una funcin se invoca a s misma, hablamos de recursividad. Lenguajes de programacin orientada a objetos: Crean un sistema de clases y objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y se comunican con otros objetos. Lenguajes concurrentes: Es la simultaneidad en la ejecucin de mltiples tareas interactivas. Lenguajes intermediarios: Algunos lenguajes pertenecen a ambas categoras (LISP, Java, Python...) dado que el programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilacin intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo tanto
COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

diferente al archivo fuente) y no ejecutable (requerira un intrprete). Los applets Java, pequeos programas que a menudo se cargan en pginas web, son archivos compilados que slo pueden ejecutarse dentro de un navegador web (son archivos con la extensin .class). c) Por generaciones: Lenguajes de primera generacin (1GL): Cdigo mquina. Lenguajes de segunda generacin (2GL): Lenguajes ensamblador. Lenguajes de tercera generacin (3GL): La mayora de los lenguajes modernos, diseados para facilitar la programacin a los humanos. Ejemplos: C++, Python, Java, etc. Lenguajes de cuarta generacin (4GL): Diseados con un propsito concreto, o sea, para abordar un tipo concreto de problemas. Ejemplos: NATURAL, Mathematica. Lenguajes de quinta generacin (5GL): La intencin es que el programador establezca el qu problema ha de ser resuelto y las condiciones a reunir, y la mquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog. d) Segn la forma de ejecucin: Lenguajes compilados: Un programa traductor traduce el cdigo del programa (cdigo fuente) en cdigo mquina (cdigo objeto). Otro programa, el enlazador, unir los ficheros de cdigo objeto del programa principal con los de las libreras para producir el programa ejecutable. Ejemplo: C. Lenguajes interpretados: Un lenguaje de programacin debe traducirse para que el procesador pueda comprenderlo. Un programa escrito en un lenguaje interpretado requiere de un programa auxiliar (el intrprete), que traduce los comandos de los programas segn sea necesario y de manera directa. Ejemplo: Lisp.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


3.1. C++

Versin 1.0

Es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup, el nombre C++ fue propuesto por Rick Mascitti en el ao 1983. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. Actualmente existe un estndar, denominado ISO C++, al que se han adherido la mayora de los fabricantes de compiladores ms modernos. Existen tambin algunos intrpretes, tales como ROOT. Lenguajes de los que deriva Se deriva sobre todo del Lenguaje C, que fue creado a mediados de los 70 por Dennis Ritchie a partir del trabajo elaborado por su colega de los laboratorios Bell Telephone, Ken Thompson. Estos haban diseado con anterioridad el sistema operativo UNIX, y su intencin al desarrollar el lenguaje C fue la de conseguir un lenguaje idneo para la programacin de sistemas que fuese independiente de la mquina con el cual escribir su sistema UNIX. Aunque fue diseado inicialmente para la programacin de sistemas, posteriormente su uso se ha extendido a aplicaciones tcnico-cientficas, de bases de datos, de proceso de textos, etc. La utilizacin ptima de este lenguaje se consigue dentro de su entorno natural, que es el sistema operativo UNIX. Caractersticas Conserva todas las capacidades de su predecesor C y aade el concepto de clase (permiten definir conjunto de datos y las funcionen que lo manipulan), tipos genricos expresiones (de ADA). Es un lenguaje de programacin multiparadigma (se aadieron facilidades de programacin genrica). Usa programacin estructurada para resolver tareas de bajo nivel, as como la amplia librera de rutinas de que dispone Posibilidad de redefinir los operadores.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


Versin 1.0

Otorgan el control absoluto de la aplicacin al programador, consiguiendo una velocidad muy superior a la ofrecida por otros lenguajes. Poder crear nuevos tipos que se comporten como tipos fundamentales. Implementacin del solapamiento de funciones. Optimizacin de explotacin de memorias con la creacin de estructuras de datos dinmicas. Programacin orientada a objetos (permite asociar a los datos las funcionen que lo manipulan). Caractersticas como: o o Abstraccin (variables y mtodos de instancia y de clase), permite al programador olvidar el funcionamiento interno de una clase Encapsulacin: o De variables: privada, pblica y protegida. De mtodos: privada, pblica y protegida. polimorfismo, no

Herencia (Sencilla, mltiple, unidades genricas, dispone de Metaclases).

Utilizacin En el ao 1983, el lenguaje fue utilizado por primera vez fuera de un laboratorio cientfico. Antes se haba usado el nombre "C con clases". En C++, la expresin "C++" significa "incremento de C" y se refiere a que C++ es una extensin de C. Posteriormente se incorpor la librera STL, obra de Alexander Stepanov y Adrew Koening. Esta librera de clases con contenedores y algoritmos genricos proporciona a C++ una potencia nica entre los lenguajes de alto nivel. En un principio C++ era traducido a cdigo C a travs de una utilidad llamada precompilador. Se puede utlizar algunas de las ventajas de C++, como C mejorado, para escribir cdigo no orientado a objetos. Las primeras aplicaciones tendan hacia la programacin de sistemas (se han escrito varios SS.OO en C++), pero actualmente se utiliza para aplicaciones de banca, comercio, seguros, telecomunicaciones, y ampliamente en la docencia e investigacin ya que es un lenguaje claro, eficiente, realista, flexible y suficientemente accesible.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


Tipo

Versin 1.0

C++ es un lenguaje de tercera generacin, hbrido y de alto nivel con programacin de sistema orientado a objeto Lenguaje compilado. Es imperativo, en el sentido de que consisten en una secuencia de comandos, los cuales son ejecutados estrictamente uno despus de otro. Ejemplo de programa en C++, el clsico Hola mundo:
/* Esta cabecera permite usar los objetos que encapsulan los descriptores stdout y stdin: cout(<<) y cin(>>)*/ #include <iostream> int main() { std::cout << "Hola mundo" << std::endl; }

3.2. HASKELL
Es un lenguaje de programacin estandarizado multi-propsito puramente funcional con semnticas no estrictas y fuerte tipificacin esttica que naci en 1987. Su nombre se debe al lgico estadounidense Haskell Curry. En Haskell, "una funcin es un ciudadano de primera clase" del lenguaje de programacin. Como lenguaje de programacin funcional, el constructor de controles primario es la funcin. Tiene sus orgenes en las observaciones de Haskell Curry y sus descendientes intelectuales. En los aos 1980 se constituy un comit cuyo objetivo era crear un lenguaje funcional que reuniera las caractersticas de los mltiples lenguajes funcionales de la poca, como las funciones de orden superior, evaluacin perezosa, inferencia esttica de tipos, tipos de datos definidos por el usuario, encaje de patrones y listas por comprehensin. Al disear el lenguaje se observ que no exista un tratamiento sistemtico de la sobrecarga con lo cual se construy una nueva solucin conocida como las clases de tipos. El lenguaje incorporaba, adems, Entrada/Salida puramente funcional y definicin de arrays por comprehensin. En Mayo de 1996 apareca la versin 1.3 del lenguaje Haskell [Has95] que incorporaba, entre otras caractersticas, mnadas para Entrada/Salida, registros para nombrar componentes de tipos de datos, clases de constructores de tipos y diversas

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

libreras de propsito general. Posteriormente, surge la versin 1.4 con ligeras modificaciones. El lenguaje evoluciona rpidamente con y como los representantes actuales del estndar de facto. El ltimo estndar semi-oficial es Haskell 98, con la intencin de especificar una versin mnima y compatible del lenguaje como base para futuras extensiones y para su enseanza. Lenguajes de los que deriva Deriva del lenguaje de programacin ML (Metalenguaje), que surgi en 1976 y que trabajaba en un nuevo estilo de lenguajes funcionales con evaluacin perezosa y definicin de funciones mediante encaje de patrones.

Caractersticas Soporte para tipos de datos y funciones recursivas, listas, tuplas, guardas y calce de patrones. La combinacin de las mismas puede resultar en algunas funciones casi triviales cuya versin en lenguajes imperativos pueden llegar a resultar extremadamente tediosas de programar. Tratamiento sistemtico de la sobrecarga. Facilidad en la definicin de tipos abstractos de datos El sistema de entrada/salida es puramente funcional Posibilidad de utilizacin de mdulos.

Se han desarrollado muchas variantes: Versiones paralelas del MIT y Glasgow, ambas denominadas Parallel Haskell. Ms versiones paralelas y distribuidas de Haskell llamadas Distributed Haskell (anteriormente Goffin) y Eden Una versin con ejecucin especulativa: Eager Haskell Varias versiones orientadas a objetos: Haskell++, O'Haskell y Mondrian. Una versin educativa llamada Gofer desarrollada por Mark Jones que fue suplantada por Hugs.

Implementaciones: Cumplen con los estndares de Haskell 98 y son distribuidas bajo licencias Open Source: Hugs: Es un intrprete, ofrece una compilacin rpida de los programas y un tiempo razonable de ejecucin. Viene con una librera grfica muy simple, pero de las ms livianas y compatibles.
COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

GHC "Glasgow Haskell Compiler": compila a cdigo nativo en una variedad de arquitecturas y puede tambin compilar a C. Es, probablemente, uno de los compiladores ms populares e incluso tiene unas cuantas libreras (por ejemplo OpenGL). nhc98: es otro compilador con un mejor tiempo de ejecucin que Hugs. Esta implementacin se enfoc a minimizar la utilizacin de la memoria convirtindola en una buena opcin para arquitecturas lentas o antiguas. HBC: es otro compilador a cdigo nativo de Haskell. Si bien no ha sido actualizado en el ltimo tiempo sigue siendo bastante til. Helium: es un nuevo dialecto de Haskell. Se centr en ser muy fcil de aprender; por ello, no incluye soporte para todo el estndar de Haskell, haciendo que no sea totalmente compatible.

Comparacin de clases con otros lenguajes: Las clases de Haskell son similares a las usadas en algunos lenguajes orientados a objetos como C++ y Java. Sin embargo, hay diferencias significativas: Haskell separa la definicin de un tipo de la definicin de los mtodos asociados con dicho tipo. Una clase en C++ o Java suele definir tanto una estructura de datos (las variables miembros) como las operaciones asociadas con la estructura (los mtodos). En Haskell, estas definiciones aparecen separadas. Los mtodos de clase definidos en una clase Haskell se corresponden con las funciones virtuales de C++. Cada instancia de una clase proporciona su propia definicin para cada mtodo; los mtodos por defecto se corresponden con las definiciones por defecto de una funcin virtual en una clase base. Las clases son similares a los interfaces de Java a grandes rasgos. Al igual que una declaracin de interfaz, una clase de Haskell define un protocolo para usar un objeto en vez de un objeto en s. Haskell no proporciona el estilo de sobrecarga de C++, en el cual, funciones con tipos distintos pueden compartir un mismo nombre. El tipo de un objeto Haskell no puede ser promocionado (coerced) implcitamente; no hay una clase base universal tal como Object cuyos valores pueden ser projectados a otros objetos. C++ y Java incluyen informacin identificativa (como la VTable) en la representacin en tiempo de ejecucin de un objeto. En Haskell, esa informacin es adjuntada de un modo lgico en vez de fsico gracias al sistema de tipos. El sistema de clases de Haskell no contempla el control de acceso a los mtodos (tales como accesos privados o pblicos). En Haskell, el sistema de mdulos puede ser usado para ocultar o revelar los componentes de una clase.

Utilizacin Haskell es un lenguaje de programacin para computadoras. Especficamente, es un lenguaje polimrficamente tipificado, perezoso, puramente funcional, muy diferente a la mayora de los otros lenguajes de programacin.
COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

El lenguaje recibe su nombre en honor a Haskell Brooks Curry, por sus trabajos en lgica matemtica que sirvieron como fundamento para el desarrollo de lenguajes funcionales. Haskell est basado en el clculo lambda , por lo tanto el smbolo lambda es usado como logo. Escribir programas grandes que funcionen correctamente es difcil y costoso. Mantener esos programas es an ms difcil y costoso tambien. Los lenguajes de programacin funcional, tales como Haskell, pueden hacerlo mucho ms fcil y econmicos. Haskell te ofrece: Un incremento substancial de productividad para el programador. Cdigo ms corto, claro y fcil de mantener. Menos errores, mayor confiabilidad. Menor diferencia semntica; entre el programador y el lenguaje. Desarrollo de programas en menor tiempo.

Est especialmente diseado para manejar una amplia gama de aplicaciones, desde anlisis numrico hasta simblico. Para alcanzar estos objetivos, Haskell posee una sintaxis expresiva, y una rica variedad de tipos primitivos, incluyendo enteros y racionales de precisin arbitraria, tambin como los tipos de enteros, punto flotante y booleanos ms convencionales. Tipo Haskell es un lenguaje de programacin fuertemente tipado, los tipos son penetrantes (pervasive), y el principiante deber acostumbrarse desde el comienzo a la potencia y complejidad del sistema de tipos de Haskell. Es un lenguaje funcional puro, todos los cmputos vienen descritos a travs de la evaluacin de expresiones (trminos sintcticos) para producir valores (entidades abstractas que son vistas como respuestas). Todo valor tiene asociado un tipo. Un programa funcional es una expresin, la cual es ejecutada mediante su evaluacin. Haskell es perezoso. Es decir, a menos que le indiquemos lo contrario, Haskell no ejecutar funciones ni calcular resultados hasta que se vea realmente forzado a hacerlo. Esto funciona muy bien junto con la transparencia referencial y permite que veamos los programas como una serie de transformaciones de datos. Incluso nos permite hacer cosas interesantes como estructuras de datos infinitas. Haskell es un lenguaje tipificado estticamente. Cuando compilamos un programa, el compilador sabe que trozos del cdigo son enteros, cuales son cadenas de texto, etc. Haskell es elegante y conciso. Se debe a que utiliza conceptos de alto nivel. Los programas Haskell son normalmente ms cortos que los equivalentes imperativos. Y

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

los programas cortos son ms fciles de mantener que los largos, adems de que poseen menos errores. Ejemplo programa haskell:
-- PROGRAMA QUE DESCRIBE COMO ES LA TEMPERATURA, EN CADA -- TEMPORADA CLIMATICA INGLESA! -- TOMADO DE HASKELL. THE CRAFT OF FUNCTIONAL PROGRAMMING module Weather where data Temp = Cold | Hot deriving (Show) data Season = Spring | Summer | Autumn | Winter deriving (Show) weather :: Season -> Temp weather Summer = Hot weather _ = Cold

3.3. PYTHON
Es un lenguaje de programacin interpretado cuya filosofa hace hincapi en una sintaxis muy limpia y que favorezca un cdigo legible. Es administrado por la Python Software Foundation. Posee una licencia de cdigo abierto, denominada Python Software Foundation License, que es compatible con la Licencia pblica general de GNU a partir de la versin 2.1.1, e incompatible en ciertas versiones anteriores. El nombre del lenguaje proviene de la aficin de su creador original, Guido van Rossum, por los humoristas britnicos Monty Python. Lenguajes de los que deriva Fue creado a finales de los ochenta por Guido van Rossum en el Centro para las Matemticas y la Informtica (CWI, Centrum Wiskunde & Informatica), en los Pases Bajos, como un sucesor del lenguaje de programacin ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba, que fuera simple, poderoso y elegante orientado a la creacin de sistemas a partir de componentes. Est basado e inspirado en la programacin orientada a objetos, deriva del Pascal, C y C++.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

El 13 de febrero de 2009 se lanz una nueva versin de Python bajo el nombre clave "Python 3000" o, abreviado, "Py3K". Esta nueva versin incluye toda una serie de cambios que requieren reescribir el cdigo de versiones anteriores. Para facilitar este proceso junto con Python 3 se ha publicado una herramienta automtica llamada 2to3.

Caractersticas Es muy legible y elegante. Imposible escribir cdigo ofuscado. Simple y poderoso. Minimalista: todo aquello innecesario no hay que escribirlo (;,{,},\n). Muy denso, con poco cdigo hace bastante. Soporta objetos y estructuras de datos de alto nivel: strings, listas, diccionarios, etc. Mltiples niveles de organizar el cdigo: funciones, clases, mdulos y paquetes. Usa resolucin dinmica de nombres; es decir, lo que enlaza un mtodo y un nombre de variable durante la ejecucin del programa (tambin llamado enlace dinmico de mtodos). Python standard library contiene un sinfn de clases de utilidad http://docs.python.org/2/library/index.html Si hay reas que son lentas se pueden reemplazar por plugins en C o C++, siguiendo la API para extender Python en una aplicacin o a travs de herramientas como SWIG, sip o Pyrex. El intrprete de Python estndar incluye un modo interactivo en el cual se escriben las instrucciones en una especie de intrprete de comandos No hay que declarar constantes y variables antes de utilizarlas. No requiere paso de compilacin/linkage, la primera vez que ejecutas un script se compila y genera bytecode que es luego interpretado. Alta velocidad de desarrollo y buen rendimiento. Cdigo interoperable (como en java write once run everywhere. Se puede utilizar en mltiples plataformas (ms an que java). Es OpenSource, razn por la cual la Python Library sigue creciendo cada vez ms. Peculiaridades sintcticas: o Usa tabulacin o espaciado para mostrar estructuras de bloques. o Tabula una vez para indicar el comienzo de un bloque. Utilizacin Python es bueno: Para combinar con varios componentes juntos. Para llevar a cabo prototipos de sistema. Para la elaboracin de aplicaciones cliente.
COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


Versin 1.0

Para desarrollo web y de sistemas distribuidos. Para el desarrollo de tareas cientficas en las que hay que simular y prototipar rpidamente.

Python NO es bueno en: Programacin de bajo nivel, no tiene control directo sobre memoria y otras tareas. Programacin de drivers y kernels. Aplicaciones que requieren alta capacidad de computo. Tipo Es un lenguaje interpretado cuya filosofa hace hincapi en una sintaxis muy limpia y que favorezca un cdigo legible. Es multiparadigma, ya que soporta orientacin a objetos, programacin imperativa y, en menor medida, programacin funcional. Usa tipado dinmico y conteo de referencias para la administracin de memoria, es fuertemente tipado y multiplataforma. Aunque la programacin en Python podra considerarse en algunas situaciones hostil a la programacin funcional tradicional del Lisp, existen bastantes analogas entre Python y los lenguajes minimalistas de la familia Lisp como puede ser Scheme.

3.4. OCAML (Objetive CAML)


Ocaml nace de la evolucin del lenguaje CAML, abreviacin de Categorical Abstract Machine Language, al integrrsele la programacin con objetos. Se desarroll en 1992, con base en su predecesor Caml Special Light (inicio de la dcada 1990), cuyo predecesor a su vez es Caml Light (1985-1990) que pertenece a la familia de lenguajes de programacin funcionales ML (que se inici en la dcada de 1970). El cdigo fuente en Ocaml se compila en cdigo para una mquina virtual o en cdigo de mquina para diferentes arquitecturas. Este ltimo compilador produce cdigo comparable en eficiencia al producido por compiladores como el del lenguaje C/C++.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

Ocaml dispone de un anlisis de tipos esttico con inferencia de tipos, con valores funcionales de primera clase, polimorfismo parametrizado, llamada por patrones, manejo de excepciones, recoleccin de basura y otras caractersticas avanzadas. Lenguajes de los que deriva Es un lenguaje de programacin avanzado de la familia de los lenguajes ML, desarrollado y distribuido por el INRIA en Francia. Ocaml admite los paradigmas de programacin imperativa, programacin funcional y programacin orientada a objetos.

Caractersticas Cuenta con herramientas que facilitan el desarrollo como un depurador simblico; herramientas para anlisis lxico y sintctico; herramientas para automatizar compilacin de proyectos grandes; editor y visualizador grfico de mdulos; modos para diversos editores; preprocesador muy configurable pues permite redefinir la sintaxis del lenguaje; extractor de documentacin tcnica; medidor de desempeo. La distribucin bsica incluye diversas libreras portables para manejo de estructuras de datos. Hay tambin disponibles libreras desarrolladas por diversas personas y grupos. Tiene estilo imperativo, facilita los clculos por medio de cambios de estado (condicin de una memoria o almacenamiento). Estructuras de datos modificables como vectores, cadenas, campos mutables y referencias. Programacin estructurada y orientada a objetos. El cdigo fuente en Ocaml se compila en cdigo para una mquina virtual o en cdigo de mquina para diferentes arquitecturas. Este ltimo compilador produce cdigo comparable en eficiencia al producido por compiladores como el del lenguaje C/ C++. Estructuras de control como secuencias y ciclos. Las dos principales desventajas, comparadas al estilo puramente funcional, son: o Complica el sistema del tipo de la lengua, rechazando ciertos programas que de otra manera seran considerados correctos. o No tiene que perder de vista a la representacin de la memoria y al orden de los clculos.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


Utilizacin

Versin 1.0

Es un lenguaje funcional que se utiliza sobre todo para calculos y analisis matematicos, permite programar empleando caractersticas imperativas, algunas caractersticas propias de lenguajes orientados a objetos e incluye un sistema de mdulos que facilita el desarrollo de proyectos grandes (con signaturas y functores). Como los dems lenguajes funcionales emplea un recolector de basura que permite en muchos casos desentenderse del manejo de memoria dinmica (el recolector elimina automticamente memoria que no se usa --de forma que no es necesario usar free como en C).

Tipo Cuenta con un sistema de tipos fuerte, con un derivador de tipos que facilita el chequeo esttico de programas sin requerir del programador tiempo en declaracin explicita de tipos. Adems de tipos bsicos (enteros, flotantes, booleanos, caracteres y cadenas) ofrece diversas formas de construir nuevos tipos como tuplas, arreglos, listas, registros, conjuntos, streams y facilidades para definir tipos recursivos, polimrficos y paramtricos. En cuanto a interpretacin/compilacin se basa en un modelo de mquina abstracta portable (mquina Zinc). Cuenta con un interprete (ocaml) que es a su vez un entorno interactivo til para experimentar y dos compiladores: ocamlc y ocamlopt. Ejemplo de cdigo:
> print_endline "Hello World !" ;; Hello World ! val () : unit = <fun> >

3.5. JAVA
Java es un lenguaje de programacin originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compaa Oracle) y publicado en el 1995 como un componente fundamental de la plataforma Java de Sun Microsystems. La compaa Sun desarroll la implementacin de referencia original para los compiladores de Java, mquinas virtuales, y libreras de clases en 1991 y las public por primera vez en el 1995. A partir de mayo del 2007, en cumplimiento con las
COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

especificaciones del Proceso de la Comunidad Java, Sun volvi a licenciar la mayora de sus tecnologas de Java bajo la Licencia Pblica General de GNU. Otros tambin han desarrollado implementaciones alternas a estas tecnologas de Sun, tales como el Compilador de Java de GNU y el GNU Classpath. Es un lenguaje de propsito general para realizar todo tipo de aplicaciones profesionales, incluye una combinacin de caractersticas que lo hacen nico y est siendo adoptado por multitud de fabricantes como herramienta bsica para el desarrollo de sus aplicaciones.

Lenguajes de los que deriva Deriva mucho de su sintaxis de C y C++, pero tiene menos facilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede correr en cualquier mquina virtual Java (JVM) sin importar la arquitectura de la computadora. Caractersticas Programacin orientada a objetos. Independencia de la plataforma, los programas se pueden ejecutar en cualquier tipo de hardware. Este es el significado de ser capaz de escribir un programa una vez y que pueda ejecutarse en cualquier dispositivo, tal como reza el axioma de Java, write once, run anywhere. Permite escribir applets (pequeos programas que se insertan en una pgina HTML) y se ejecutan en el ordenador local. Es fcil de aprender y est bien estructurado. Las aplicaciones son fiables. Se puede controlar su seguridad frente al acceso a recursos del sistema y es capaz de gestionar permisos y criptografa. Funciona perfectamente en red Aprovecha caractersticas de la mayora de los lenguajes modernos evitando sus inconvenientes. En particular los del C++. Tiene una gran funcionalidad gracias a sus libreras (clases). NO tiene punteros manejables por el programador, aunque los maneja interna y transparentemente. El manejo de la memoria no es un problema, la gestiona el propio lenguaje y no el programador. Genera aplicaciones con pocos errores posibles. Incorpora Multi-Threading (para permitir la ejecucin de tareas concurrentes dentro de un mismo programa). Utilizacin
COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

El lenguaje Java se cre con cinco objetivos principales: Debera usar el paradigma de la programacin orientada a objetos. Debera permitir la ejecucin de un mismo programa en mltiples sistemas operativos. Debera incluir por defecto soporte para trabajo en red. Debera disearse para ejecutar cdigo en sistemas remotos de forma segura. Debera ser fcil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++. Para conseguir la ejecucin de cdigo remoto y el soporte de red, los programadores de Java a veces recurren a extensiones como CORBA, Internet Communications Engine o OSGi respectivamente. Tipo Programacin orientada a Internet de lenguaje intermediario con propsito general, es concurrente, esta basado en clases y orientado a objetos. Fue diseado especficamente para tener tan pocas dependencias de implementacin como fuera posible. Su intencin es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en ingls como WORA, o "write once, run anywhere"), lo que quiere decir que el cdigo que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir del 2012, uno de los lenguajes de programacin ms populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados. Ejemplo cdigo java:
// Hola.java import javac.swing.JOptionPane; public class Hola //Declara una clase llamada Hola, que es descendiente de la clase Object { //Entre llaves se declaran los atributos y mtodos de la clase public static void main(String[] args) //public: indica que el mtodo main()es pblico //void: indica que la funcin main() no devuelve ningn valor //El mtodo main()debe aceptar siempre como parmetro un vector de strings { JOptionPane.showMessageDialog("Hola Mundo"); //Esta lnea indica que se va a ejecutar el mtodo showMessageDialog(), encargado de mostrar //un valor a travs de la salida estndar (en nuestro caso, un String) //Este mtodo pertenece al atributo out } }

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


4. MAPA CONCEPTUAL
Lenguaje mquina Binario

Versin 1.0

Bajo nivel

Los ensambladores son programas que son usados para dar ordenes y lo transforman a cdigo mquina

Segn su grado de independencia de la mquina

Medio nivel

Tienen mayor grado de abstraccin pero mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C

Alto nivel

Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorando (abstrayndose) del funcionamiento de la mquina. Ejemplos: C++, Haskell, Python, OCAML, Java

Orientados a problemas concretos

Por ejemplo SQL orientado a bases de datos

Imperativos

Programan mediante una serie de comandos, agrupados en bloques y compuestos de rdenes condicionales que permiten al programa retornar a un bloque de comandos si se cumple la condicin Ejemplos: C++, Haskell, Python, OCAML, Java

Funcionales

Crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de otras funciones. Ejemplo: Python

LENGUAJES DE PROGRAMACIN

Segn la forma de sus instrucciones

Programacin Orientada a objetos

Crean un sistema de clases y objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y se comunican con otros objetos. Ejemplo: C++, Python, OCAML, Java

Concurrentes

Simultaneidad en la ejecucin de mltiples tareas interactivas.

DEFINICIN

Intermediarios

Algunos lenguajes pertenecen a ambas categoras de compilados e interpretados. Ejemplo: LISP, Java, Python.

Lenguaje artificial diseado para escribir acciones que deben obedecidas por una mquina.

1 Generacin (1GL)

Cdigo mquina

2 Generacin (2GL)

Lenguajes ensamblador

Por generaciones

3 Generacin (3GL)

La mayora de los lenguajes modernos, diseados para facilitar la programacin a los humanos. Ejemplos: C++, Python, OCALM, Java

4 Generacin (4GL)

Diseados para abordar un tipo concreto de problemas.

Ejemplos: NATURAL, Mathematica

5 Generacin (5GL)

El programador establece qu problema ha de ser resuelto y las condiciones a reunir, y la mquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog

Compilados

Segn la forma de ejecucin


Interpretados

Se traduce el cdigo fuente en cdigo objeto. El enlazador une los ficheros de cdigo objeto con los de las libreras para producir el programa ejecutable. Ejemplos: C++, Haskell, OCALM, Java

El intrprete traduce los comandos de los programas segn sea necesario y de manera directa.

Ejemplos: Python, Lisp

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin


5. TABLA DE CLASIFICACION DE LOS LENGUAJES
Clasificacin Segn su grado de independencia de la mquina Segn la forma de sus instrucciones Por generaciones Segn la forma de ejecucin C++ Alto nivel Imperativo y orientado a objetos 3 generacin Compilado Haskell Alto nivel Python Alto nivel Imperativo, orientado a objetos y funcional 3 generacin Interpretado

Versin 1.0

Objective CAML Alto nivel Imperativo y orientado a objetos 3 generacin Compilado

Java Alto nivel Intermediario, Imperativo y orientado a objetos 3 generacin Compilado

Declarativo

5 generacin Compilado

Lenguajes de los que deriva

C, CLU, ML, Simula, Ada 83, ALGOL 68

Miranda, ML, Gofer

ABC, ALGOL 68, C, Haskell, Icon, Lisp, Modula-3, Perl, Smalltalk, Java

Caml Light, Standard ML

Objective-C, C++, Smalltalk, Eiffel

6. DATOS DE INTERES
Ranking de lenguajes ms usados en la actualidad

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

Genealoga de los lenguajes de programacin

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Clasificacin de lenguajes de programacin

Versin 1.0

7. BIBLIOGRAFA
Pgina web propuesta por el profesor: http://www.levenez.com/lang/ Wikipedia: http://es.wikipedia.org/wiki http://prezi.com/e77ysy3cc-ae/ramas-de-los-lenguajes-de-programacion-orientado-aobjetos/ http://cdtextos.blogspot.com.es/2010/07/modelos-de-mapas-conceptuales.html http://www.lcc.uma.es/~blas/pfHaskell/gentle/index.html http://horru.lsi.uniovi.es/~labra/FTP/IntHaskell98.pdf http://aprendehaskell.es/main.html http://www.haskell.org/haskellwiki/Introduccion http://clubensayos.com/Tecnolog%C3%ADa/Tabla-Comparativa-Acerca-DeLos/293068.html http://qbitacora.wordpress.com/2007/09/21/clasificacion-de-lenguajes-de-programacion/ http://structio.sourceforge.net/guias/progocaml/progocaml.html http://www.gacetadelinux.com/es/lg/current/stellingwerff.html Libro de Pearson El lenguaje de programacin C++.

COMPILADORES Y LENGUAJES FORMALES GRADO INGENIERA INFORMTICA

Das könnte Ihnen auch gefallen