LENGUAJES DE PROGRAMACION 1. DEFIN EFINIC ICIO ION N. Un lenguaje de programación es un lenguaje artificial que puede ser usado para para cont contro rola larr el comp compor orta tamie mient nto o de una una máqu máquin ina, a, espe especi cial alme ment nte e una una comput computado adora. ra. Estos Estos se compo componen nen de un conjun conjunto to de reglas reglas sintác sintáctic ticas as y semánticas que permiten expresar instrucciones que luego serán interpretadas. ALEGSA ONLINE.COM Es un leng lengua uaje je dise diseña ñado do para ara descri scribi birr el conju onjun nto de acci accio ones nes cons consec ecut utiv ivas as que que un equi equipo po debe debe ejec ejecut utar ar.. Por Por lo tant tanto, o, un leng lengua uaje je 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 nada que que ver ver con con los los leng lengua uaje jess de prog progra rama maci ción ón;; se los los cono conoce ce como como protocolos de comunicación. 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. 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. 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 comp comput utad ador oras as pued pueden en inte interp rpre reta tarr. De toda todass mane manera ras, s, un leng lengua uaje je 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 much mucho o más más sign signifific icat ativo ivoss (a tal tal punt punto o de que que un códi código go pued puede e volve volvers rse e 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. ONLINE.COM COM
2. HISTORIA HISTORIA DELOS DELOS LENGUAJ LENGUAJES ES DE PROGRAMAC PROGRAMACION. ION. www.erick.cibercalli.com/showpost?po www .erick.cibercalli.com/showpost?postid=17 stid=17 - 32k
Es comúnmente aceptado que la historia de la computación moderna comienza con Charle Charless Babbag Babbage, e, en 1822, 1822, sin embarg embargo o las primer primeras as compu computad tadora orass 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 comp comput utad ador ora. a. Fue Fue en el año año de 1945 1945 cuand uando o el mate matemá mátitico co Jhon 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 http://www .iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf /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 1952:: alic alickk e. glen glenni nie, e, dura durant nte e su tiem tiempo po libr libre e en la univ univer ersi sida dad d de manchester, concibe un sistema de programación llamado autocode, que viene a ser un compilador muy rudimentario. • 1957: 1957: apare aparece ce fortra fortran n (formu (formula la transl translato ator) r) sistem sistema a traduc traductor tor de fórmul fórmulas as 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). f orm). a part partir ir de los los años años sese sesent nta, a, empi empiez ezan an a surg surgir ir dife difere rent ntes es leng lengua uaje jess 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?po www .erick.cibercalli.com/showpost?postid=17 stid=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. system. Fue desarrollado por por IBM para cómputo científico, el líder 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 año de 1958 1958,, el prof profes esor or John John McCa McCarth rthy[ y[4] 4] del del M.I.T M.I.T.. come comenz nzó ó 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 LISP que que hizo hizo por por la prog progra rama maci ción ón lo mism mismo o que que hizo hizo Eucl Euclíd ídes es por 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 1960 cuan cuando do apar aparec ece e el leng lengua uaje je ALGO ALGOL L 6.0 6.0 el prime primerr leng lengua uaje je 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, 1959, Confer Conferenc ence e on Data Data Syste Systems ms and Langua Languages ges (CODASY (CODASYL) L) crea 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. aprender. Todo Todo esto con la finalidad de que los negocios promedio lo pudieran aprender y usar. usar. www.erick.cibercalli.com/showpost?po www .erick.cibercalli.com/showpost?postid=17 stid=17 - 32k
3. DESARROLL DESARROLLO O DE LOS LENGUA LENGUAJES JES DE PROGRAM PROGRAMACIÓN ACIÓ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 Colegi Colegio o Dartmo Dartmount unth. h. Es un lengua lenguaje je muy limita limitado do que fue diseña diseñado do para para personas que no fueran del área de de ciencias de la computación. El nombre de BASIC, significa Beginners All-purpose S ymbolic ymbolic I nstruction nstruction C ode. ode. Los ocho principios de diseño de BASIC fueron: 3.1.1. 3.1.1. Ser fácil fácil de usar usar para para los princi principiant piantes. es. 3.1.2. 3.1.2. Ser un lenguaje lenguaje de propós propósito ito general general.. 3.1.3. 3.1.3. Permit Permitir ir que que los expert expertos os añadie añadieran ran caract caracterí erísti sticas cas avanza avanzadas das,, mientras que el lenguaje perma rmanecía simple para los principiantes. 3.1.4. 3.1.4. Ser intera interactiv ctivo. o. 3.1.5. 3.1.5. Proveer Proveer mensajes mensajes de error error claros claros y amigables. amigables. 3.1.6. 3.1.6. Responde Responderr rápido a los programa programass pequeños. pequeños. 3.1.7. 3.1.7. No requerir requerir un conocimient conocimiento o del hardware hardware de la computadora. computadora. 3.1.8. 3.1.8. El lenguaje lenguaje se baso baso en Fortran Fortran y Algol Algol 6.0
3.2. PASCAL Diseñado por Niklaus Wirth[7], como una herramienta de enseñanza de la progra programac mación ión.. Sus desarr desarroll ollado adores res se concen concentra traron ron en desarr desarroll ollar ar buenas 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 impl implem emen ento to arre arregl glos os diná dinámi mico coss ni agru agrupa pami mien ento to de vari variab able less lo cual 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 prog progra rama maci ción ón es el decl declar arat ativ ivo o y un prog progra rama ma en Prol Prolog og se comp compon one e 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 trab trabaj ajab aban an para para los los Labo Labora rato tori rios os Bell Bell,, y se baso baso en los los leng lengua uaje jess 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 ano del desar esarro rollllo o de UNIX, IX, lo que pro propic picio la crea creaci ció ó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. 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. nivel. Destaca su gran riqueza de operadores y expresiones.
3.5. C++ A fin finale ales de los los 70's 0's y prin princi cip pio de los los 80's 0's un nuevo evo mod 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 Las prin princi cipa pale less cara caract cter erís ístitica cass del del C++ C++ son son abst abstra racc cció ión, n, el sopo soport rte e para 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 abarc barca a tres tres para paradi digm gmas as de la prog progra rama macción: ión: La prog progra rama macción ió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.s comp.sour ources ces.mi .misc sc el 18 de diciem diciembre bre de 1987. Actual Actualmen mente te 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 desa desarro rrollllar ar prác práctitica came ment nte e cual cualqu quie ierr cosa cosa con con el, el, es pode podero roso so,, flex flexib ible le 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 cons consid ider eran an la "opo "oposi sici ción ón leal leal"" a Perl Perl,, leng lengua uaje je con con el cual cual mant mantie iene ne una 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 Dylan y CLU. CLU. Fue cread creado o por Yukihir ukihiro o Matsum Matsumoto oto[13 [13], ], quien quien comenz 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, programación , mismo. La máquin máquina a virtua virtuall de Java Java o JRE, JRE, que que perm permite ite la port portab abililid idad ad en ejecución. El API Java, Java, una biblioteca estándar para el lenguaje”
“Java es una plataforma de software desarrollada por Sun por Sun Microsystems, 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++, C++, orient orientado ado a dispos dispositiv itivos os embebi embebidos dos,, y a la televi televisió sión n intera interacti ctiva, va, 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ña Diseñado do para para ejecut ejecutar ar codig codigo o de fuente fuentess remota remotass de modo 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 3.10.. JAV JAVA SCRI SCRIPT PT 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 los diferentes navegadores navegadores exponen 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 que es softw softwar are e libr libre. e. Comp Compar arte te cara caract cter erís ístitica cass con con otro otross leng lengua uaje jess 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. CO CONC NCEP EPTO TOS S GENERA GENERALE LES. S. 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 estruc estructur turas as de inform informaci ación ón y las secue secuenci ncias as de accion acciones es necesa necesaria riass para 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 pued pueden en corre corregi girr al mome moment nto o y segu seguir ir fáci fácilm lmen ente te la ejec ejecuc ució ión n del 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áqu máquin ina a corr corres espo pond ndie ient nte e y el resu resultltad ado o se alma almace cena na de mane manera ra 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 cuan cuando do se prod produc uce e un erro errorr, que que much muchas as vece vecess se dete detect cta a en el
mome moment nto o de la ejec ejecuc ució ión n , y la corr correc ecci ción ón no se pued puede e hace hacerr de inmediato, sino que hay que realizar todo el proceso de compilado desde el prin princi cipi pio. o. Un ejem ejempl plo o típi típico co de leng lengua uaje je de este este tipo tipo el C ++, ++, ampliamente usado en el desarrollo de programas. Rafael Barzanallana_ Universidad de Murcia.mht
5. CLASIFICAC CLASIFICACION ION DE DE LOS LENGUAJE LENGUAJES S DE PROGRAMACIÓ PROGRAMACIÓN. N.
Los lengua lenguajes jes de progra programac mación ión se pueden pueden clasif clasifica icarr atendi atendiend endo o a varios 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á Están n escr escrititos os en leng lengua uaje jess dire direct ctam amen ente te inte inteliligi gibl bles es por por la maqu maquin ina a (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 func funcio iona nami mien ento to de una una comp comput utad ador ora. a. El leng lengua uaje je de más más bajo bajo nive nivell por 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) 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, 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 los leng lengua uaje jess de alto alto nive nivell más más cono conoci cido dos, s, los los coma comand ndos os como omo "IF "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si el CONTADOR CONTADOR es igual a 10. Esta forma de trabajar 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 t ambié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. compiladores. Éstos, como como los progra programas mas ensamb ensamblad ladore oress avanza avanzados dos,, pueden pueden genera generarr muchas 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á ejec ejecut utar ar mien mientr tras as haya haya erro errore res, s, sino sino hast hasta a que que tras tras habe haberr comp compililad ado o 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, 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 modifi modificac cación ión del progra programa ma cuando cuando se quier quiere e agrega agregarr funcio funciones nes o correg corregir ir errore errores; s; pero pero es obvio obvio que un progra programa ma objeto objeto compi compilad lado o con con antel antelaci ación ó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 http://www .iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf /TEMA1Apendice.pdf
5.3.. CLASIFICACIÓN SEGÚN EL ENTORNO DE PROGRAMACIÓN Finalm Finalment ente, e, existe existen n otros otros conce concepto ptoss tomado tomadoss en cuenta cuenta para para agrupa agruparr 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 cual son son usad usados os para para la crea creaci ción ón de docu docume ment ntos os,, y el inte interc rcam ambi bio o o transferencia de información.
Leng ngua uaje jess de prop propós ósito ito espe especí cífi fico co:: Son 5.3.4. Le Son aque aquello lloss leng lengua uaje jess desarrollados con la finalidad de resolver problemas de una naturaleza muy determ determina inada, da, tal como como SPSS SPSS para para proble problemas mas estadí estadísti sticos cos,, MATLA MATLAB B para 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éri numérico, co, como como tornos tornos y fresad fresadora oras, s, GPSS GPSS para para simula simulació ción n de sistem sistemas, as, CORBA para el manejo de interfaces en ambientes cliente-servidor, etc. 5.3.5. Lenguajes Script: Son lenguajes len guajes como JAVASCRIPT JAVASCRIPT,, VBSCRIPT VBS CRIPT,, PERLSC PERLSCRIP RIPT T, que se utiliz utilizan an en ambien ambientes tes client clientes es servid servidor or,, median mediante te la incrustación de código en las páginas HTML, y así permitir la programación del lado lado del del clie client nte, e, busc buscan ando do fund fundam amen enta talm lmen ente te,, hace hacerr más más atra atract ctiv ivos os los los interfaces gráficos de las páginas. http://www.iesromerovargas.net/DAI/PLE/docs http://www .iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf /TEMA1Apendice.pdf http://www.iesromerovargas.net/DAI/PLE/docs http://www .iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf /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. 5.4.1. IMPERA IMPERATIVOS: TIVOS: Son aquellos aquellos lenguajes, lenguajes, que basan basan su funcionami funcionamiento ento 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 paso un proc proces eso, o, nos nos inte intere resa sa el ¿qué ¿qué? ? dese deseam amos os obte obtene nerr a trav través és del del programa. Quizás el lenguaje declarativo que nos sea más familiar, es SQL, el cual cual es util utiliz izad ado o para para inte intera ract ctua uarr con con la info inform rmac ació ión n de base basess de dato datos, s,
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" " 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 prop propie ieda dad d de agru agrupa parr las las abst abstra racc ccio ione ness que 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 http://www .iesromerovargas.net/DAI/PLE/docs/TEMA1Apendice.pdf /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 por BASIC.. El paradigma funcional está representado por la familia de lenguajes LISP (en particular Scheme particular Scheme), ), ML o Haskell. Haskell. El paradigma lógico, lógico, un ejemplo es PROLOG. PROLOG. El paradigma orientado a objetos. objetos . Un lenguaje completamente orientado a objetos es Smalltalk. Smalltalk. WIKIPEDIA La enciclopedia libre
6.
ALGUNOS DE LOS AMPLIAMENTE USADOS.
LENGUAJES
área
de
DE
PROGRAMACION
Lenguaje
Principal aplicación
ADA
Tiempo real
BASIC
Prog Progra rama maci ción ón para para fines fines Lenguaje interpretado educativos
C
Programación de sistema
C++
Progra Programac mación ión de sistem sistema a Lenguaje compilado orientado a objeto
Cobol
Administración
Lenguaje compilado
Fortran
Cálculo
Lenguaje compilado
Java
Progra Programac mación ión orient orientada ada a Lenguaje intermediario Internet
MATLAB
Cálculos ma matemáticos
Lenguaje in interpretado
Cálculos matemáticos
Cálculos matem temático icos
Lenguaje inter terpretado
LISP
Inteligencia artificial
Lenguaje intermediario
Pascal
Educación
Lenguaje compilado
PHP
Desa Desarr rrol ollo lo de siti sitios os web web Lenguaje interpretado dinámicos
Inteligencia artificial
Inteligencia artificial
Perl
Procesamiento de cadenas Lenguaje interpretado de caracteres
Compilado/interpretado
Lenguaje compilado
Lenguaje compilado
Lenguaje interpretado
: ES.KIOSKEA.NET
7. ALGUNO ALGUNOS S LENGUA LENGUAJES JES DE PROGR PROGRAMA AMACIO CION. N.
• • •
• • • • • • • • • • • • • • • • • • • • • • • • • • • • •
•
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 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 descom descompos posici ición ón de proble problemas mas,, para para establ establece ecerr una una estruc estructur tura a jerárq jerárquic uica a 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 Diseño ño desc descen ende dent nte. e.-- cons consis iste te en divi dividi dirr el prob proble lema ma y hace hacerr la segm segmen enta taci ción ón por por paso paso en los los dife difere rent ntes es nive nivelé léis is el prog progra rama ma es complejo se divide en subprocesos Recurs Recursos os abstra abstracto ctos.s.- consis consiste te en el proces proceso o de realiz realizaci ación ó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 progra programac mación ión estruc estructur turada ada es especi especialm alment ente e útil, útil, cuand cuando o se necesi necesitan tan real realiz izar ar corr correc ecci cion ones es o modi modififica caci cion ones es desp despué uéss de habe haberr conc conclu luid ido o 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 aplica aplicacio ciones nes realiz realizada adass por el pool pool de progra programad madore ores. s. Si se ha utiliz utilizado ado adecua adecuadam dament ente e la progra programac mación ión estru estructu cturad rada, a, esta esta integr integraci ación ón debe 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 representa representación ción grafica de la programaci programación ón estructura estructurada da se realiza 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 intera interacci cción. ón. Ellas Ellas están están dispon disponibl ibles es en todos todos los lengua lenguajes jes modern modernos os de progra programac mación ión impera imperativa tiva en forma forma de senten sentencia cias. s. Combin Combinand ando o esquem esquemas as 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 Tener un buen conocimiento de lo que se quiere hacer en el diagrama de flujo Programación Procedimental Con la progra programac mación ión proced procedime imenta ntall podem podemos os combin combinar ar las secuen secuencia ciass de instrucciones repetibles en un solo lugar. Una llamada de procedimiento se util utiliz iza a para para invo invoca carr al proc proced edim imie ient nto. o. Desp Despué uéss de que que la secu secuen enci cia a es procesada, el flujo de control procede exactamente después de la posición donde la llamada fue hecha Al intr introd oduc ucir ir pará paráme metr tros os así así como omo proc proced edim imie ient ntos os de proc proced edim imie ient ntos os (subprocedimientos) los programas ahora pueden ser escritos en forma más estru estruct ctur urad ada a y libr libres es de erro errore res. s. Por Por ejem ejempl plo, o, si un proc proced edim imie ient nto o ya es correcto, cada vez que es usado produce resultados r esultados correctos. Por consecuencia, en caso de errores, se puede reducir la búsqueda a aquellos lugares que todavía no han sido revisados. r evisados. 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 piezas llamad llamadas as proced procedimie imiento ntos. s. Para Para posibi posibilita litarr el uso de proce procedim dimien ientos tos 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. 8.1.
GENERA GENERACIO CIONES NES DE LOS LENGUA LENGUAJES JES DE PROGRA PROGRAMAC MACION ION..
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 solo solos, s, son son los los llam llamad ados os RAD, RAD, con con lo cual cuales es se pued pueden en real realiz izar ar apli aplica caci cion ones es sin sin ser ser un expe expert rto o en el leng lengua uaje je.. Aquí Aquí tamb tambié ién n se encuen encuentra tran n los lengua lenguajes jes orient orientado adoss a objet objetos, os, hacien haciendo do posibl posible e 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 DESARROLLOWEB.COM
http://www.lacofa.es/index.php/tag/lenguajes-de-programacion 8.2. TENDENCIAS EN LOS LENGUAJES 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, técnicos, lo que sirve para identifica identificarr también también tendencias 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 estu estudi dio o anal analiz iza a tamb tambié ién n libro libross refe referi rido doss a otra otrass tecn tecnol olog ogía ías, s, no sólo 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 extrem extremo, o, los desce descenso nsoss más acusad acusados os están están en libros libros sobre sobre creaci creación ón de páginas web, fotografía digital y programación Web. Citando a: La Cofa (”Tendencias (”Tendencias en lenguajes de programación “) O’Reilly Radar (”State (”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