lenguaje de programación

12
Lenguaje de programación Un lenguaje de programación" 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: A CADA instrucción le corresponde UNA acción de procesador. El lenguaje utilizado por el procesador se denomina lenguaje máquina. Se trata de datos tal como llegan al procesador, que consisten en una serie de 0 y 1 ( datos binarios ). El lenguaje máquina, por lo tanto, no es comprensible para los seres humanos, razón por la cual se han desarrollado lenguajes intermediarios comprensibles para el hombre. El código escrito en este tipo de lenguaje se transforma en código máquina para que el procesador pueda procesarlo. El ensamblador fue el primer lenguaje de programación utilizado. Es muy similar al lenguaje máquina, pero los desarrolladores pueden comprenderlo. No obstante, este lenguaje se parece tanto al lenguaje máquina que depende estrictamente del tipo de procesador utilizado (cada tipo de procesador puede tener su propio lenguaje máquina). Así, un programa desarrollado para un equipo no puede ser portado a otro tipo de equipo. El término "portabilidad" describe la capacidad de usar un programa de software en diferentes tipos de equipos. Para poder utilizar un programa de software escrito en un código ensamblador en otro tipo de equipo, ¡a veces será necesario volver a escribir todo el programa! Por lo tanto, un lenguaje de programación tiene varias ventajas: es mucho más fácil de comprender que un lenguaje máquina: permite mayor portabilidad, es decir que puede adaptarse fácilmente para ejecutarse en diferentes tipos de equipos. Lenguajes de programación imperativos y funcionales Los lenguajes de programación generalmente se dividen en dos grupos principales en base al procesamiento de sus comandos:

Upload: cesar-manuel-reyes-rodriguez

Post on 08-Sep-2015

226 views

Category:

Documents


7 download

DESCRIPTION

descripción de lenguaje de programación

TRANSCRIPT

Lenguaje de programacin

Unlenguaje de programacin" es un lenguaje diseado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programacin es un modo prctico para que los seres humanos puedan dar instrucciones a un equipo.

Por otro lado, el trmino "lenguaje natural" define un medio de comunicacin compartido por un grupo de personas (por ejemplo: ingls o francs).

Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programacin; se los conoce comoprotocolos de comunicacin. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programacin es muy estricto:

A CADA instruccin le corresponde UNA accin de procesador.

El lenguaje utilizado por elprocesadorse denominalenguaje mquina. Se trata de datos tal como llegan al procesador, que consisten en una serie de 0 y 1 (datos binarios).

El lenguaje mquina, por lo tanto, no es comprensible para los seres humanos, razn por la cual se han desarrollado lenguajes intermediarios comprensibles para el hombre. El cdigo escrito en este tipo de lenguaje se transforma en cdigo mquina para que el procesador pueda procesarlo.

El ensamblador fue el primer lenguaje de programacin utilizado. Es muy similar al lenguaje mquina, pero los desarrolladores pueden comprenderlo. No obstante, este lenguaje se parece tanto al lenguaje mquina que depende estrictamente del tipo de procesador utilizado (cada tipo de procesador puede tener su propio lenguaje mquina). As, un programa desarrollado para un equipo no puede serportadoa otro tipo de equipo. El trmino "portabilidad" describe la capacidad de usar un programa de software en diferentes tipos de equipos. Para poder utilizar un programa de software escrito en un cdigo ensamblador en otro tipo de equipo, a veces ser necesario volver a escribir todo el programa!

Por lo tanto, un lenguaje de programacin tiene varias ventajas:

es mucho ms fcil de comprender que un lenguaje mquina:

permite mayor portabilidad, es decir que puede adaptarse fcilmente para ejecutarse en diferentes tipos de equipos.

Lenguajes de programacin imperativos y funcionales

Los lenguajes de programacin generalmente se dividen en dos grupos principales en base al procesamiento de sus comandos:

lenguajes imperativos;

lenguajes funcionales.

Lenguaje de programacin imperativo

Un lenguaje imperativo programa 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 secuencialidad de las instrucciones.

Lenguaje de programacin funcional

Unlenguaje de programacin funcional(a menudo llamadolenguaje procedimental) 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.

Interpretacin y compilacin

Los lenguajes de programacin pueden, en lneas generales, dividirse en dos categoras:

lenguajes interpretados

lenguajes compilados

Lenguaje interpretado

Un lenguaje de programacin es, por definicin, diferente al lenguaje mquina. Por lo tanto, 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.

Lenguaje compilado

Un programa escrito en un lenguaje "compilado" se traduce a travs de un programa anexo llamadocompiladorque, a su vez, crea un nuevo archivo independiente que no necesita ningn otro programa para ejecutarse a s mismo. Este archivo se llamaejecutable.

Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa anexo para ser ejecutado una vez que ha sido compilado. Adems, como slo es necesaria una traduccin, la ejecucin se vuelve ms rpida.Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que cada modificacin del archivo fuente (el archivo comprensible para los seres humanos: el archivo a compilar) requiere de la compilacin del programa para aplicar los cambios.

Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del cdigo fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje legible, hace que cualquier persona pueda conocer los secretos de fabricacin de un programa y, de ese modo, copiar su cdigo o incluso modificarlo. Por lo tanto, existe el riesgo de que los derechos de autor no sean respetados. Por otro lado, ciertas aplicaciones aseguradas necesitan confidencialidad de cdigo para evitar las copias ilegales (transacciones bancarias, pagos en lnea, comunicaciones seguras...).

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 diferente al archivo fuente ) y no ejecutable (requerira un interprete). 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).

Algunos ejemplos de lenguajes ampliamente usados

A continuacin, encontrar una breve lista de los lenguajes de programacin actuales:

Lenguaje

Principal rea de aplicacin

Compilado/interpretado

ADA

Tiempo real

Lenguaje compilado

BASIC

Programacin para fines educativos

Lenguaje interpretado

C

Programacin de sistema

Lenguaje compilado

C++

Programacin de sistema orientado a objeto

Lenguaje compilado

Cobol

Administracin

Lenguaje compilado

Fortran

Clculo

Lenguaje compilado

Java

Programacin orientada a Internet

Lenguaje intermediario

MATLAB

Clculos matemticos

Lenguaje interpretado

Clculos matemticos

Clculos matemticos

Lenguaje interpretado

LISP

Inteligencia artificial

Lenguaje intermediario

Pascal

Educacin

Lenguaje compilado

PHP

Desarrollo de sitios web dinmicos

Lenguaje interpretado

Inteligencia artificial

Inteligencia artificial

Lenguaje interpretado

Perl

Procesamiento de cadenas de caracteres

Lenguaje interpretado

Orgenes de la programacin estructurada[editar]

gdgdgdfdelias

A finales de los aos 1970 surgi una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que facilitaba su mejor comprensin, no slo proveyendo ventajas durante la fase de desarrollo, sino tambin posibilitando una ms sencilla modificacin posterior.

Elteorema del programa estructurado, propuesto por Bhm-Jacopini, demuestra que todo programa puede escribirse utilizando nicamente las tres instrucciones de control siguientes:

Secuencia

Instruccin condicional.

Iteracin (bucle de instrucciones) con condicin al principio.

Solamente con estas tres estructuras se pueden escribir todos losprogramasy aplicaciones posibles. Si bien loslenguajes de programacintienen un mayor repertorio deestructuras de control, stas pueden ser construidas mediante las tres bsicas citadas.

Historia[editar]

Fundamentacin terica[editar]

Elteorema del programa estructuradoproporciona la base terica de la programacin estructurada. Seala que tres maneras de combinar programas son suficientes para expresar cualquierfuncin computable: secuencia, seleccin e iteracin. Esta observacin no se origin con el movimiento de la programacin estructurada. Estas estructuras son suficientes para describir elciclo de instruccinde unaunidad central de procesamiento, as como el funcionamiento de unamquina de Turing. Por lo tanto un procesador siempre est ejecutando un "programa estructurado" en este sentido, incluso si las instrucciones que lee de la memoria no son parte de un programa estructurado. Sin embargo, los autores usualmente acreditan el resultado a un documento escrito en 1966 por Bhm y Jacopini, posiblemente porqueDijkstrahaba citado este escrito. El teorema del programa estructurado no responde a cmo escribir y analizar un programa estructurado de manera til. Estos temas fueron abordados durante la dcada de 1960 y principio de los aos 1970, con importantes contribuciones deDijkstra,Robert W. Floyd,Tony HoareyyDavid Gries.

Debate[editar]

P. J. Plauger, uno de los primeros en adoptar la programacin estructurada, describi su reaccin con el teorema del programa estructurado:

Nosotros los conversos ondeamos esta interesantepizcade noticias bajo las narices de los recalcitrantes programadores delenguaje ensambladorque mantuvieron trotando adelante retorcidos bits de lgica y diciendo, 'Te apuesto que no puedes estructurar esto'. Ni la prueba por Bhm y Jacopini, ni nuestros repetidos xitos en escribir cdigo estructurado, los llevaron un da antes de lo que estaban listos para convencerse.3

Donald Knuthacept el principio de que los programas deben escribirse con demostratividad en mente, pero no estaba de acuerdo (y an est en desacuerdo)[citarequerida]con la supresin de la sentencia GOTO. En su escrito de 1974Programacin estructurada con sentencias Goto, dio ejemplos donde crea que un salto directo conduce a cdigo ms claro y ms eficiente sin sacrificar demostratividad. Knuth propuso una restriccin estructural ms flexible: debe ser posible establecer un diagrama de flujo del programa con todas las bifurcaciones hacia adelante a la izquierda, todas las bifurcaciones hacia atrs a la derecha, y sin bifurcaciones que se crucen entre s. Muchos de los expertos enteora de grafosycompiladoreshan abogado por permitir slo grafos de flujo reducible[quin?][cundo?].

Los tericos de la programacin estructurada ganaron a un aliado importante en la dcada de 1970 despus de que el investigador deIBMHarlan Millsaplicara su interpretacin de la teora de la programacin estructurada para el desarrollo de un sistema de indexacin para el archivo de investigacin delNew York Times. El proyecto fue un gran xito de la ingeniera, y los directivos de otras empresas lo citaron en apoyo de la adopcin de la programacin estructurada, aunque Dijkstra critic las maneras en que la interpretacin de Mills difera de la obra publicada.

Tan tarde como 1987 fue todava posible elevar la cuestin de la programacin estructurada en una revista de ciencia de la computacin. Frank Rubin lo hizo en ese ao, con una carta,La sentencia GOTO considerada daina. Numerosas objeciones siguieron, incluyendo una respuesta de Dijkstra, que criticaba duramente a Rubin y las concesiones que otros escritores hicieron cuando le respondieron.

Resultado[editar]

A finales del siglo XX casi todos los cientficos estn convencidos de que es til aprender y aplicar los conceptos de programacin estructurada. Los lenguajes de programacin de alto nivel que originalmente carecan de estructuras de programacin, comoFORTRAN,COBOLyBASIC, ahora las tienen.

Ventajas de la programacin estructurada[editar]

Ventajas de la programacin estructurada comparada con el modelo anterior (hoy llamado despectivamentecdigo espagueti).

Los programas son ms fciles de entender, pueden ser ledos de forma secuencial y no hay necesidad de hacer engorrosos seguimientos en saltos de lneas (GOTO) dentro de los bloques de cdigo para intentar entender la lgica.

La estructura de los programas es clara, puesto que las instrucciones estn ms ligadas o relacionadas entre s.

Reduccin del esfuerzo en las pruebas y depuracin. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a su estructura ms sencilla y comprensible, por lo que los errores se pueden detectar y corregir ms fcilmente.

Reduccin de los costos de mantenimiento. Anlogamente a la depuracin, durante la fase de mantenimiento, modificar o extender los programas resulta ms fcil.

Los programas son ms sencillos y ms rpidos de confeccionar.

Se incrementa el rendimiento de los programadores, comparado con la forma anterior que utiliza GOTO.

Programacin estructurada de bajo nivel[editar]

En un bajo nivel, los programas estructurados con frecuencia estn compuestos de simples estructuras de flujo de programa jerrquicas. Estas son secuencia, seleccin y repeticin:

"Secuencia" se refiere a una ejecucin ordenada de instrucciones.

En "seleccin", una de una serie de sentencias es ejecutada dependiendo del estado del programa. Esto es usualmente expresado con palabras clave como if..then..else..endif, switch, o case. En algunos lenguajes las palabras clave no se puede escribir textualmente, pero debe ser delimitada (stropped).

En la "repeticin" se ejecuta una sentencia hasta que el programa alcance un estado determinado, o las operaciones han sido aplicadas a cada elemento de una coleccin. Esto es usualmente expresado con palabras clave como while, repeat, for o do..until. A menudo se recomienda que cada bucle slo debe tener un punto de entrada (y en la programacin estructural original, tambin slo un punto de salida, y pocos lenguajes refuerzan esto).

Representaciones grficas de los tres patrones bsicos. Los diagramas de caja (azules) fueron inventados para la nueva teora, y aqu se pueden ver sus equivalentes en los ms usadosdiagramas de flujo de control

Un lenguaje es descrito como estructurado en bloques cuando tiene una sintaxis para encerrar estructuras entre palabras clave tipo corchete, como una sentencia if..fi enALGOL 68, o una seccin de cdigo entre corchetes BEGIN..END, como enPL/I- o la de llaves {...} deCy muchos otros lenguajes posteriores.

Lenguajes de programacin estructurada[editar]

Es posible hacer la programacin estructurada en cualquier lenguaje de programacin, aunque es preferible usar algo como unlenguaje de programacin procedimental. Algunos de los lenguajes utilizados inicialmente para programacin estructurada incluyen:ALGOL,Pascal,PL/IyAda pero la mayora de los nuevos lenguajes de programacin procedimentales desde entonces han incluido caractersticas para fomentar la programacin estructurada y a veces deliberadamente omiten caractersticas4en un esfuerzo para hacer ms difcil laprogramacin no estructurada.

Nuevos paradigmas[editar]

Posteriormente a la programacin estructurada se han creado nuevos paradigmas tales como laprogramacin modular, laprogramacin orientada a objetos,programacin por capas, etc, y el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones y sistemas.