LENGUAJES DE PROGRAMACION 1. DEFINICION. Un lenguaje de programación es un lenguaje artificial que puede ser usado para controlar el comportamiento de una máquina, especialmente una computadora. Estos se componen de un conjunto de reglas sintácticas y semánticas que permiten expresar instrucciones que luego serán interpretadas. ALEGSA ONLINE.COM Es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo. Por otro lado, el término "lenguaje natural" define un medio de comunicación compartido por un grupo de personas (por ejemplo: inglés o francés). Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como protocolos de comunicación. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programación es muy estricto: ES.KIOSKEA.NET Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones, y es utilizado para controlar el comportamiento físico y lógico de una máquina. Aunque muchas veces se usan los términos 'lenguaje de programación' y 'lenguaje informático' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación). Un lenguaje de programación permite a uno o más programadores especificar de manera precisa sobre qué datos debe operar una computadora, cómo estos datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa. Los procesadores usados en las computadoras son capaces de entender y actuar según lo indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
• •
Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intérpretes. Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama compilar y al programa traductor se le denomina compilador. WIKIPEDIA La enciclopedia libre,
En su uso, un lenguaje de programación puede acercarse a la forma humana de expresarse y, por eso, este tipo de lenguajes es llamado de alto nivel. Esto significa que utilizan palabras y formas en sus estructuras que se asemejan al lenguaje natural (especialmente al inglés). En cambio, aquellos lenguajes que se aproximan más a la forma en la cual la computadora se maneja, son llamados lenguajes de bajo nivel. Esto significa que lo que el programador deba escribir se acercará al lenguaje máquina, que es, en definitiva, lo que las computadoras pueden interpretar. De todas maneras, un lenguaje de programación difiere en muchos aspectos de un lenguaje humano. Un código escrito en un lenguaje de programación específico siempre se interpreta de la misma manera (no como los idiomas humanos ambiguos), los errores son mucho más significativos (a tal punto de que un código puede volverse ininterpretable por la computadora), etc. El código fuente es el conjunto de instrucciones que conforman un programa (o subprograma o módulo). El código fuente debe ser compilado para poder ser interpretado y ejecutado por la computadora. La compilación traduce el código fuente (que depende del lenguaje de programación) a un lenguaje máquina (que depende del sistema de la máquina). Existen lenguajes del tipo script que son directamente ejecutados por un intérprete y no necesitan compilación. Los lenguajes de programación pueden clasificarse según el paradigma que usan en: procedimentales, orientados a objetos, funcionales, lógicos, híbridos, etc., clasificación que depende de motivos que escapan al alcance de este artículo. Son ejemplos de lenguajes de programación: php, prolog, asp, actionscript, ada, python, pascal, c, basic, java, etc. . ALEGSA ONLINE.COM
2. HISTORIA DELOS LENGUAJES DE PROGRAMACION. www.erick.cibercalli.com/showpost?postid=17 - 32k Es comúnmente aceptado que la historia de la computación moderna comienza con Charles Babbage, en 1822, sin embargo las primeras computadoras mecánicas y eléctricas no contaban con un lenguaje de programación tal como lo conocemos ahora, la mayoría de ellas era construida para llevar a cabo una tarea especifica; por lo tanto la forma de programarla era particular a cada computadora. Fue en el año de 1945 cuando el matemático Jhon Von Neumann[1] fascinado por las posibilidades de ENIAC[2], elaboró un estudio que demostró que una computadora podía tener una estructura física muy simple y fija, y aun así ser capaz de ejecutar cualquier tipo de programa
mediante un control correcto, sin la necesidad de modificar la computadora para esto.
http://www.iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf para crear un lenguaje de programación, deberemos crear la herramienta que lo traduce, y es justamente de ellas, de las que hablaremos a continuación, para describir como han ido evolucionando en los últimos 50 años. • 1946: konrad zuse, un ingeniero alemán mientras trabajaba en los alpes de bavaria, desarrolló el lenguaje plankalkul, el cual, fue aplicado entre otras cosas para jugar al ajedrez. • 1949: aparece short code, que viene a ser el primer lenguaje que fue usado en un dispositivo de cómputo electrónico, aunque se debe decir que se trata de un lenguaje traducido a mano. • 1951: grace hopper , trabajando para remington rand, comenzó el trabajo de diseño del primer compilador conocido ampliamente, el a-0, el cual, al ser liberado por la compañía en 1957, lo hizo con el nombre de math-matic. • 1952: alick e. glennie, durante su tiempo libre en la universidad de manchester, concibe un sistema de programación llamado autocode, que viene a ser un compilador muy rudimentario. • 1957: aparece fortran (formula translator) sistema traductor de fórmulas matemáticas. fue desarrollado por un equipo, al frente del cual se encontraba john backus quien después vendría a contribuir en el desarrollo del compilador para el lenguaje algol y de la notación usada para la especificación sintáctica de los lenguajes, conocida como bnf (backus naur form). a partir de los años sesenta, empiezan a surgir diferentes lenguajes de programación, atendiendo a diversos enfoques, características y propósitos, que más adelante describiremos. por lo pronto, puede decirse, que actualmente existen alrededor de 2000 lenguajes de programación y continuamente, están apareciendo otros más nuevos, que prometen hacer mejor uso de los recursos computacionales y facilitar el trabajo de los programadores. tratando de resumir un poco, presentaremos el siguiente cuadro evolutivo, donde aparecen los lenguajes que por su uso y comercialización, han resultado ser los más populares a lo largo de este medio siglo
www.erick.cibercalli.com/showpost?postid=17 - 32k
2.1. PRIMEROS LENGUAJES DE PROGRAMACION 2.1.1. SHORTCODE En 1949,aparece el primer lenguaje que se usó en computadoras electrónicas: “Shortcode”, requería que el programador convirtiera (compilara) su programa a 0's y 1's de manera manual. 2.1.2. A-0 Fue hasta el año de 1951, que Grace Hopper[3] trabajando para Remington Rand, comienza a desarrollar el primer compilador, lo que trajo consigo una programación más rápida. 2.1.3. FORTRAN Es en el año de 1957 cuando aparece el primero de los grandes lenguajes de programación de uso aún actualmente: FORTRAN, que proviene de FORmula TRANslating system. Fue desarrollado por IBM para cómputo científico, el líder del proyecto fue John Backus, que después contribuiría en ALGOL. El lenguaje original solo incluía FOR, DO y GOTO. También definió los tipos de datos básicos: TRUE, FALSE, integer, real, double presicion. El lenguaje original era bueno manejando números, pero malo manejando entrada y salida, lo cual propicio la aparición de otros lenguajes orientados a negocios. 2.1.4. LISP En el año de 1958, el profesor John McCarthy[4] del M.I.T. comenzó a desarrollar la teoría de un lenguaje de de procesamiento de listas. En 1959 aparece publicamente la primer implementación llamada LISP 1.5. En 1960 McCarthy publica un histórico articulo[5] acerca de los fundamentos de LISP que hizo por la programación lo mismo que hizo Euclídes por la geometría, demostrar como con unos cuantos operadores y una notación para funciones es posible construir un lenguaje de programación completo[6]. Es importante hacer notar que McCarthy no solo marco un hito en la historia los lenguajes de programación sino que creo un modelo de programación que ha demostrado ser superior, tanto que podemos decir que en la actualidad existen dos grandes modelos de programación el de C y el de Lisp, y podemos notar que los lenguajes del modelo C tratan de parecerse cada vez mas a Lisp. 2.1.5. ALGOL En el año de 1958 un comite crea la especificación del lenguaje ALGOL, la tenia la particularidad de no definir la manera de manejar entrada y salida, dejando esta parte libre a cada implementación. Es en 1960 cuando aparece el lenguaje ALGOL 6.0 el primer lenguaje estructurado en bloques. Este lenguaje fue muy popular en el segundo lustro de los 60's. Su principal contribución es ser la raiz del arbol que ha producido lenguajes tales como pascal, C, C++, y Java.
2.1.6. COBOL En 1959, Conference on Data Systems and Languages (CODASYL) crea COBOL, un lenguaje para negocios; que fuera facil de aprender para gente que no tuviera formación en ciencias de la computación. Sus únicos tipos de datos fueron cadenas y números. Lo que le dio la característica de poder agruparlos en arreglos sencillos, de modo que los datos podian ser organizados y seguidos de una mejor manera. Las sentencias de COBOL se parecen mucho a las usadas por el idioma inglés, haciendo que fuera fácil de aprender. Todo esto con la finalidad de que los negocios promedio lo pudieran aprender y usar. www.erick.cibercalli.com/showpost?postid=17 - 32k
3. DESARROLLO DE LOS LENGUAJES DE PROGRAMACIÓN Basados en los primeros lenguajes de programación han surgido muchos otros lenguajes que siempre tienen la intención de tomar lo mejor, desechar lo malo, y agregar alguna “novedad”, respecto a los existentes. Solo se hace referencia a los mas conocidos. 3.1. BASIC Inventado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Colegio Dartmounth. Es un lenguaje muy limitado que fue diseñado para personas que no fueran del área de ciencias de la computación. El nombre de BASIC, significa Beginners All-purpose Symbolic Instruction Code. Los ocho principios de diseño de BASIC fueron: 3.1.1. Ser fácil de usar para los principiantes. 3.1.2. Ser un lenguaje de propósito general. 3.1.3. Permitir que los expertos añadieran características avanzadas, mientras que el lenguaje permanecía simple para los principiantes. 3.1.4. Ser interactivo. 3.1.5. Proveer mensajes de error claros y amigables. 3.1.6. Responder rápido a los programas pequeños. 3.1.7. No requerir un conocimiento del hardware de la computadora. 3.1.8. El lenguaje se baso en Fortran y Algol 6.0
3.2. PASCAL Diseñado por Niklaus Wirth[7], como una herramienta de enseñanza de la programación. Sus desarrolladores se concentraron en desarrollar buenas herramientas que contribuyeran a la enseñanza, tal como un buen debugger, y
un buen editor Fue diseñado de una manera muy ordenada, reflejando la experiencia de su diseñador, tomo las mejores características de los lenguajes de su tiempo, COBOL, ALGOL, y FORTRAN, al mismo tiempo que busco evitar sus deficiencias, y hacerlo lo mas claro posible. También implemento el tipo apuntador y agrego el CASE, e hizo uso de variables dinámicas. Sin embargo no implemento arreglos dinámicos ni agrupamiento de variables lo cual contribuyo a su perdida de popularidad frente a nuevos lenguajes. Delphi es una versión moderna y orientada a objetos de Pascal. 3.3. PROLOG Diseñado en 1970 en la universidad de Aix-Marseille por los profesores Alain Colmerauer y Phillipe Roussel, su nombre proviene del frances Programation et Logique, es popular en los circulos de interes en Inteligencia Artificial. Su sintaxis y semantica son considerados simples y claros, su paradigma de programación es el declarativo y un programa en Prolog se compone de cláusulas que constituyen reglas del tipo modus ponens, es decir, "Si es verdad el antecendente, entonces es verdad el consecuente". No obstante, la forma de escribir las cláusulas es al contrario de lo habitual. Primero se escribe el consecuente y luego el antecedente.
3.4. “C” Fue diseñado en 1971, por Dennis Ritchie[8] y Ken Thompson[9] mientras trabajaban para los Laboratorios Bell, y se baso en los lenguajes de programación B y BCPL. Se basa en el paradigma imperativo y desde su creación estuvo pensado para programación de sistemas operativos, se creo para usarse en UNIX, y crecio de la mano del desarrollo de UNIX, lo que propicio la creación de características avanzadas tales como variables dinámicas, multitarea, manejo de interrupciones, forking y un poderoso manejo entrada/salida de bajo nivel. Debido a esto C es comunmente usado para programación de nivel de sistema en UNIX, Linux y Mac. Se trata de un lenguaje no fuertemente tipeado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Destaca su gran riqueza de operadores y expresiones.
3.5. C++ A finales de los 70's y principio de los 80's un nuevo modelo de de programación fue desarrollado, la programación orientada a objetos, la idea básica es que los objetos son piezas de código auto contenidas y reusables. Inicialmente se llamo C con clases, para posteriormente tomar su nombre definitivo C++ cuando fue publicado en 1983.
Las principales características del C++ son abstracción, el soporte para programación orientada a objetos y el soporte de plantillas o programación genérica. Por lo cual , se puede decir que C++ es un lenguaje multi paradigma que abarca tres paradigmas de la programación: La programación estructurada, la programación genérica y la programación orientada a objetos. 3.6. PERL Perl (Practical Extraction and Report Language), fue desarrollado por Larry Wall[11], inicialmente motivado para cubrir las carencias de sed y awk y las limitaciones del shell, su primer versión publica fue anunciada en el Newsgroup comp.sources.misc el 18 de diciembre de 1987. Actualmente Perl es un lenguaje de propósito general, usado para amplia gama de tareas que incluyen administración de sistemas, desarrollo web, programación en red, desarrollo GUI, si lo deseas, puedes programar orientado a objetos y mucho mas. Es uno de los lenguajes mas flexibles y poderosos, junto con Lisp, permite desarrollar prácticamente cualquier cosa con el, es poderoso, flexible y expresivo. Perl es libre y es divertido, permite ser creativo y no te ata a las restricciones impuestas por el diseñador del lenguaje, en Perl siempre hay mas de una manera de hacer las cosas.
3.7. PYTHON Es un lenguaje interpretado e interactivo, creado por Guido Van Rossum[12] en 1991. Es completamente tipeado dinamicamente, usa manejo automático de memoria, por lo cual es similar a Lisp, Perl, Ruby, Scheme y Tcl. Algunos lo consideran la "oposición leal" a Perl, lenguaje con el cual mantiene una rivalidad amistosa. Los usuarios de Python consideran a éste mucho más limpio y elegante para programar. Sin embargo esto es mas un punto de vista de sus usuarios que una realidad. 3.8. RUBY Es un lenguaje de programación interpretado, orientado a objetos, con una sintaxis inspirada por Perl y Ada, que también tomo ideas de Lisp, Python, Dylan y CLU. Fue creado por Yukihiro Matsumoto[13], quien comenzó su desarrollo en 1993, y lo publico en 1995. El nombre Ruby fue elegido para reflejar su herencia de Perl. Entre sus características tenemos: • • •
3.9.
Lenguaje de guiones interpretado Rápido y sencillo: Programación orientada a objetos:
JAVA
La plataforma Java consta de las siguientes partes: • • •
El lenguaje de programación, mismo. La máquina virtual de Java o JRE, que permite la portabilidad en ejecución. El API Java, una biblioteca estándar para el lenguaje”
“Java es una plataforma de software desarrollada por Sun Microsystems, de tal manera que los programas creados en ella puedan ejecutarse sin cambios en diferentes tipos de arquitecturas y dispositivos computacionales.El lenguaje de programación fue desarrollado por James Gosling[17], y sus equipo en Sun Microsystems,entre 1990 y 1994, pensado originalmente como un reemplazo de C++, orientado a dispositivos embebidos, y a la televisión interactiva, posteriormente que para rescatarlo del fracaso y fue reorientado hacia su aplicación en la Web. Las cinco metas del lenguaje Java son: o o o o o
Orientado a objetos Multiplataforma Soporte integrado para redes de computadoras Diseñado para ejecutar codigo de fuentes remotas de modo seguro Facil de usar
Desde sus inicios Java no fue bien recibido por su falta de aportaciones originales, su lentitud, y su rigida estructura, sin embargo en base a intensas campañas de marketing Sun ha logrado que en los ambientes empresariales Java sea uno de los “estándares” sobre todo para aplicaciones del lado del servidor. 3.10. JAVA SCRIPT Es un lenguaje de script basado en objetos, que se apoya en el modelo de prototipos. Es muy popular por su uso en sitios Web. Fue desarrollado por Brendan Eich[20], en su trabajo para Netscape, quien lo publicó en diciembre de 1995. Desafortunadamente los diferentes navegadores exponen diferentes objetos y métodos por lo cual es necesario escribir versiones especificas de un programa en Javascript para los diferentes tipos de navegadores. Entre las principales tecnologías para interactuar con DOM que usan JavaScript esta AJAX y DHTML. 3.11. PHP Creado por Rasmus Lerdorf[21], en 1994, inicialmente eran una serie de scripts en Perl y posteriormente estos scripts fueron reescritos en C, que el usaba para algunas tareas Web. Inicialmente significaba “Personal Home Page Tools”, y fue publicado por primera vez el 8 de junio de 1995, actualmente su nombre oficial es: “PHP Hypertext Preprocessor”.
Las caracteristicas mas destacadas de PHP son su facilidad de aprendizaje y que es software libre. Comparte características con otros lenguajes de programación como C y perl y recientemente con Java. 3.12. C# Es un lenguaje orientado a objetos desarrollado por Microsoft, tomando ideas de C++ y Java, como parte de su estrategia comercial .Net. Esta normalizado, por ECMA quien en el año 2001 publico la “ECMA-334 C# Language Specification”; en el año 2003 se convirtio en un estandar ISO “(ISO/IEC
4. CONCEPTOS GENERALES. Un ordenador consta de dos partes, una es la parte física, conocida como "Hardware" y otra, la parte lógica denominada "Software". El software se divide en dos grandes grupos, uno es el conocido como sistema operativo o sistema de explotación y otra parte son los denominados lenguajes de programación. Aparte existen infinidad de aplicaciones de "Software" pero ya para casos concretos, como por ejemplo las aplicaciones contables, las aplicaciones ofimáticas o los programas científicos. En general un lenguaje es un método conveniente y sencillo de describir las estructuras de información y las secuencias de acciones necesarias para ejecutar una tarea concreta. Una clasificación muy importante de los lenguajes es la de hacer dos grupos en base a su funcionamiento, esto es considerarlos como intérpretes y compiladores, según se describe seguidamente. •
Un lenguaje se dice que es un intérprete, por ejemplo los BASIC, cuando para ejecutar un programa el lenguaje ha de leer y traducir al lenguaje de la máquina las instrucciones una por una. Como es lógico el proceso se enlentece, por ejemplo si una operación está dentro de la estructura conocida como ciclo y este se repite 100 veces, el lenguaje tiene que traducirlo 100 veces al código de la máquina. No todo son desventajas, pues la parte buena de este tipo de lenguajes es que los errores se pueden corregir al momento y seguir fácilmente la ejecución del programa, por lo cual son idóneos para aprender a programar, proceso en el que da lo mismo la lentitud.
•
Por contra un lenguaje se dice que es compilado, cuando el programa entero se traduce mediante el compilador de dicho lenguaje al lenguaje máquina correspondiente y el resultado se almacena de manera permanente en un archivo. De esta forma el programa se ejecutará de forma mucho más rápida que con un intérprete, sobre todo si hay estructuras que se repiten, caso de los ciclos. La principal desventaja es cuando se produce un error, que muchas veces se detecta en el
momento de la ejecución , y la corrección no se puede hacer de inmediato, sino que hay que realizar todo el proceso de compilado desde el principio. Un ejemplo típico de lenguaje de este tipo el C ++, ampliamente usado en el desarrollo de programas. Rafael Barzanallana_ Universidad de Murcia.mht
5. CLASIFICACION DE LOS LENGUAJES DE PROGRAMACIÓN.
Los lenguajes de programación se pueden clasificar atendiendo a varios criterios: • • •
Según el nivel de abstracción Según la forma de ejecución Según el paradigma de programación que poseen cada uno de ellos
5.1. SEGÚN SU NIVEL DE ABSTRACCIÓN: 5.1.1. . Lenguajes Maquina Están escritos en lenguajes directamente inteligibles por la maquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas. 5.1..2. Lenguajes de bajo nivel Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa. 5.1..3. Lenguajes de medio nivel Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel. 5.1..4. Lenguajes de alto nivel Artículo principal: Lenguaje de alto nivel
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos. Entre los lenguajes de alto nivel cabe destacar los siguientes: •
Rafael Barzanallana_ Universidad de Murcia.mht
• • • • • • • • • • •
JAVA BASIC FORTRAN MODULAN Pascal ADA C C ++ LOGO LISP PROLOG 5.2. SEGÚN LA FORMA DE EJECUCIÓN
5.2.1.. Lenguajes compilados Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una compilación antes de ejecutar las instrucciones de un problema. Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario). Al usar un lenguaje compilado (como lo son, por ejemplo, los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se podrá ejecutar mientras haya errores, sino hasta que tras haber compilado el programa, ya no aparecen errores en el código. 5.2.2.. Lenguajes interpretados
Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el procesamiento de los datos. El código objeto no se graba para utilizarlo posteriormente. La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo o bucle, cada instrucción del bucle tendrá que volver a ser interpretada en cada ejecución repetida del ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). El intérprete elimina la necesidad de realizar una de compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una ejecución del código. http://www.iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf 5.3.. CLASIFICACIÓN SEGÚN EL ENTORNO DE PROGRAMACIÓN Finalmente, existen otros conceptos tomados en cuenta para agrupar los lenguajes, que dan origen a diversas clasificaciones, entre los que destacan las siguientes: 5.3..1. Lenguajes de cuarta generación 4GL: Estos lenguajes se distinguen por formar parte de un entorno de desarrollo, que comprende el manejador de una base de datos, y todo lo que de esto se deriva, como la administración de un diccionario de datos, el control de accesos, el manejo de la consistencia de la información y otras características enfocadas a facilitar los programas de acceso y explotación de la información. Como ejemplos podemos citar a los 4 grandes: PROGRESS, SYSBASE, INFORMIX, y ORACLE. 5.3.2. Lenguajes Visuales. Se les llama de esta manera a los lenguajes que forman parte de una aplicación dotada de una Interfase gráfica, la cual por medio de iconos y otras herramientas visuales y simbólicas, pretenden facilitar las tareas rutinarias de los programadores, como son el diseño y desarrollo de formularios e informes. Los ejemplos más comerciales de estos lenguajes son: VISUAL BASIC, VISUAL CAFE, VISUAL FOX, etc. 5.3.3. Metalenguajes: Son lenguajes como XML, SGML y HTML que sirven para definir otros lenguajes, cuyo objetivo es llevar a cabo la estructuración de
textos mediante un conjunto de etiquetas, de manera tal, que puedan ser entendidos por los humanos y también procesado por los ordenadores. Estos lenguajes están teniendo un gran auge sobre la plataforma de Internet, en la cual son usados para la creación de documentos, y el intercambio o transferencia de información. 5.3.4. Lenguajes de propósito específico: Son aquellos lenguajes desarrollados con la finalidad de resolver problemas de una naturaleza muy determinada, tal como SPSS para problemas estadísticos, MATLAB para cálculos científicos y de ingeniería, CAD/CAM para el diseño de piezas y programación de máquinas de control numérico, como tornos y fresadoras, GPSS para simulación de sistemas, CORBA para el manejo de interfaces en ambientes cliente-servidor, etc. 5.3.5. Lenguajes Script: Son lenguajes como JAVASCRIPT, VBSCRIPT, PERLSCRIPT, que se utilizan en ambientes clientes servidor, mediante la incrustación de código en las páginas HTML, y así permitir la programación del lado del cliente, buscando fundamentalmente, hacer más atractivos los interfaces gráficos de las páginas. http://www.iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf http://www.iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf 5.4. CLASIFICACION SEGUNB EL ESTILO DE PROGRAMACION De acuerdo con el estilo de programación, podemos clasificar los lenguajes en las siguientes categorías: 5.4.1. IMPERATIVOS: Son aquellos lenguajes, que basan su funcionamiento en un conjunto de instrucciones secuenciales, las cuales, al ejecutarse, van alterando las regiones de memoria donde residen todos los valores de las variables involucradas en el problema que se plantea resolver. Es decir, se cambia progresivamente el estado del sistema, hasta alcanzar la solución del problema. Como un ejemplo ilustrativo vamos a escribir un programa en un lenguaje de este tipo para calcular el factorial de un número positivo x. READ(x); fac := 1 ; for i = 1 to x do { fac := fac * i ; } WRITELN(fac); 5.4.2. Declarativos: En este paradigma, más que el ¿cómo? desarrollar paso a paso un proceso, nos interesa el ¿qué? deseamos obtener a través del programa. Quizás el lenguaje declarativo que nos sea más familiar, es SQL, el cual es utilizado para interactuar con la información de bases de datos,
concentrándose (como se podrá observar en el siguiente ejemplo), sólo en los resultados que van a ser obtenidos, dejándole al traductor la tarea de cómo llegar a ellos y presentárnoslos SELECT * FROM alumnos WHERE sexo = "M" ORDER BY edad 5.4.3. Orientados a Objetos: Este último paradigma, como se puede observar en la figura 1, algunas veces se mezcla con alguno de los otros 2 modelos, sin embargo mantiene características propias, que lo diferencian claramente. Los programas de este tipo, se concentran en los objetos que van a manipular, y no en la lógica requerida para manipularlos. Ejemplos de objetos pueden ser: estudiantes, coches, casas etc, cada uno de los cuales tendrá ciertas funciones (métodos) y ciertos valores que los identifican, teniendo además, la facultad de comunicarse entre ellos a través del paso de mensajes. Cabe mencionar con más detalle los elementos fundamentales que deben de poseer este tipo de lenguajes: •
Abstracción: Determinación de las características de los objetos, que sirven para identificarlos y hacerlos diferentes a los demás. y almacena los elementos que definen la estructura y el comportamiento de una abstracción, en un mismo lugar. • Modularidad: Es la propiedad de agrupar las abstracciones que guardan cierta relación lógica, y a la vez minimizar la interdependencia entre las diversas agrupaciones. • Jerarquía: Consiste en establecer un orden o una clasificación de las abstracciones • http://www.iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf
5.4. SEGÚN EL PARADIGMA DE PROGRAMACIÓN Artículo principal: Paradigma de programación Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta más apropiado que otro. Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en : • • • •
El paradigma imperativo o por procedimientos es considerado el más común y está representado, por ejemplo, por el C o por BASIC. El paradigma funcional está representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell. El paradigma lógico, un ejemplo es PROLOG. El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk. WIKIPEDIA La enciclopedia libre
6.
ALGUNOS DE LOS AMPLIAMENTE USADOS.
LENGUAJES
área
de
DE
PROGRAMACION
Lenguaje
Principal aplicación
ADA
Tiempo real
BASIC
Programación educativos
C
Programación de sistema
C++
Programación de sistema Lenguaje compilado orientado a objeto
Cobol
Administración
Lenguaje compilado
Fortran
Cálculo
Lenguaje compilado
Java
Programación orientada a Lenguaje intermediario Internet
MATLAB
Cálculos matemáticos
Lenguaje interpretado
Cálculos matemáticos
Cálculos matemáticos
Lenguaje interpretado
LISP
Inteligencia artificial
Lenguaje intermediario
Pascal
Educación
Lenguaje compilado
PHP
Desarrollo de sitios web Lenguaje interpretado dinámicos
Inteligencia artificial
Inteligencia artificial
Perl
Procesamiento de cadenas Lenguaje interpretado de caracteres
Compilado/interpretado Lenguaje compilado
para
fines
Lenguaje interpretado Lenguaje compilado
Lenguaje interpretado
: ES.KIOSKEA.NET
7. ALGUNOS LENGUAJES DE PROGRAMACION.
•
ABAP ABC ACTIONSCRI PT ADA AFNIX ALGOL AMIGAE APL ASP ASP.NET AWK B BASIC BATCH BCPL BEFUNGE BOO C C++ C# CAML CLIPPER CLIPS CLU COBOL CORAL D DELPHI DIV DYLAN EIFFEL ERENSAMBL ADOR LANG
•
EXTENDED
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
•
ML EUPHOR IA FÉNIX FISH FLOWMATIC FORTH FORTRA N FP GAMBAS GML GRAFCE T HASKEL L H4XX0R HTML ICON INFORM INTERCA L ISWIM J JAVA JAVASC RIPT JOY KWC LADDER LETRA LEXICO LINGO LISP LOGO LUA MAGIC MAINSAI L MAC ARMY
WIKIPEDIA La enciclopedia libre
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
MESA MIRANDA ML MODULA MODULA-2 MODULA-3 NATURAL NETREXX OBERON OBJECT REXX OBJECTIVEC OBJECTPAL OCAML OCCAM OZ PASCAL PARLOG PERL PHP PL/1 PLANKALKÜ L POSTSCRIP T POWERBUIL DER PROLOG PYTHON R RAPID REXX RPN RPG RUBY SAIL
• • • • • • • • • • • • • • • • • • • •
• •
• • • • •
SAPPLE R SATHER SCHEME SCRIPT OL SEED7 SELF SH SIMULA SMALLT ALK SNOBOL SPARK SQUEAK SR STANDA RD ML TI-BASIC TCL VBA VELNEO VISUAL BASIC VISUAL BASIC .NET VISUAL C++ VISUAL DIALOG SCRIPT VISUAL FOXPRO VISUAL JAVA XBASE+ + YURIX ZPL
8. . PROGRAMACIÓN ESTRUCTURADA: Se llama programación estructurada a la aplicación de los métodos básicos de descomposición de problemas, para establecer una estructura jerárquica fácilmente utilizable, a través de un proceso progresivo Es un método de construcción y diseño de programar en el que participan características como la modificación y la facilidad en uso La programación estructurada se basa en 3 técnicas básicas • • •
Diseño descendente.- consiste en dividir el problema y hacer la segmentación por paso en los diferentes niveléis el programa es complejo se divide en subprocesos Recursos abstractos.- consiste en el proceso de realización de los diferentes pasos hasta encontrar la solución de un problema Estructura básica de control.- consiste en que el programa cuenta con un único punto de entrada y diferentes tipos de salida
La programación estructurada es una teoría de programación que consiste en construir programas de fácil comprensión. La programación estructurada es especialmente útil, cuando se necesitan realizar correcciones o modificaciones después de haber concluido un programa o aplicación. Al haberse utilizado la programación estructurada, es mucho más sencillo entender la codificación del programa, que se habrá hecho en diferentes secciones. La programación estructurada se basa en una metodología de desarrollo de programas llamada refinamientos sucesivos: Se plantea una operación como un todo y se divide en segmentos más sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programación estructurada, esta integración debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algún problema, será rápidamente detectable para su corrección. La representación grafica de la programación estructurada se realiza a través de diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas. La programación estructurada propone segregar los procesos en estructuras lo más simple posibles, las cuales se conocen como secuencia, selección e interacción. Ellas están disponibles en todos los lenguajes modernos de programación imperativa en forma de sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fácil entendimiento. Ventajas:
- El programa se puede segmentar los varios partes - Se puede detectar (si se hizo bien los segmentos) rápidamente los errores - A partir de esquemas sencillos se puede construir un sistema amplio y complejo pero amigable Desventajas - Si se hacen mal los esquemas no se podrán detectar los errores - Tener un buen conocimiento de lo que se quiere hacer en el diagrama de flujo Programación Procedimental Con la programación procedimental podemos combinar las secuencias de instrucciones repetibles en un solo lugar. Una llamada de procedimiento se utiliza para invocar al procedimiento. Después de que la secuencia es procesada, el flujo de control procede exactamente después de la posición donde la llamada fue hecha Al introducir parámetros así como procedimientos de procedimientos (subprocedimientos) los programas ahora pueden ser escritos en forma más estructurada y libres de errores. Por ejemplo, si un procedimiento ya es correcto, cada vez que es usado produce resultados correctos. Por consecuencia, en caso de errores, se puede reducir la búsqueda a aquellos lugares que todavía no han sido revisados. De este modo, un programa puede ser visto como una secuencia de llamadas a procedimientos. El programa principal es responsable de pasar los datos a las llamadas individuales, los datos son procesados por los procedimientos y, una vez que el programa ha terminado, los datos resultantes son presentados. Así, el flujo de datos puede ser ilustrado como una gráfica jerárquica, un árbol, como se muestra en la para un programa sin subprocedimientos. Para resumir: tenemos ahora un programa único que se divide en pequeñas piezas llamadas procedimientos. Para posibilitar el uso de procedimientos generales o grupos de procedimientos también en otros programas, aquéllos deben estar disponibles en forma separada. Por esa razón, la programación modular permite el agrupamiento de procedimientos dentro de módulos. Ventajas •
Los errores son mas rápidos de encontrar
•
Son menos frecuentes los errores
•
Búsqueda mas exacta de errores
RINCON DEL VAGO.COM
8.1.
GENERACIONES DE LOS LENGUAJES DE PROGRAMACION.
La evolución de los lenguajes de programación se puede dividir en 5 etapas o generaciones. • • • •
•
Primera generación: lenguaje maquina. Segunda generación: se crearon los primeros lenguajes ensambladores. Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol… Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adabes. Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP DESARROLLOWEB.COM
http://www.lacofa.es/index.php/tag/lenguajes-de-programacion 8.2. TENDENCIAS EN LOS LENGUAJES DE PROGRAMACIÓN AÑO 2008
Como cada año, en O’Reilly hacen un estudio del estado de la publicación de libros técnicos, lo que sirve para identificar también tendencias en cuanto a la popularidad y uso de determinadas tecnologías y lenguajes de programación. Este gráfico muestra la evolución del mercado de libros sobre lenguajes de programación que, por cierto, ha caído ligeramente en el último año:
(en la imagen, el área representa la cantidad de libros vendidos, y el color la tendencia, siendo el verde creciente y el rojo decreciente)
Lo más destacado del estudio es el crecimiento moderado de lenguajes muy difundidos como C#, Ruby y Python, y el rápido crecimiento de otros menos conocidos como powershell, y actionscript. En el lado negativo, se constata el declive de Visual Basic, .NET y Perl. Por último, hay un fuerte estancamiento en la mayoría de los lenguajes más asentados como Java (que en realidad sigue una clara tendencia a la baja), Javascript, C/C++, PHP o SQL. El estudio analiza también libros referidos a otras tecnologías, no sólo lenguajes. Aquí se puede destacar el fuerte crecimiento de todo lo relacionado con Windows Vista (esperable), “colaboración” (con Microsoft SharePoint como máximo exponente), Office (especialmente la versión 2007), y Cisco. En el otro extremo, los descensos más acusados están en libros sobre creación de páginas web, fotografía digital y programación Web. Citando a: La Cofa (”Tendencias en lenguajes de programación“) O’Reilly Radar (”State of the Computer Book Market, Part 1: The Market“, y resto de artículos de la serie) http://www.lacofa.es/index.php/tag/lenguajes-de-programacion