Trabajo Programacion

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 22

DEFINICION DE PROGRAMACION La programacin es el proceso de disear, escribir, depurar y mantener el cdigo fuente de programas computacionales.

El cdigo fuente es escrito en un lenguaje de programacin. El propsito de la programacin es crear programas que exhiban un comportamiento deseado. El proceso de escribir cdigo requiere frecuentemente conocimientos en varias reas distintas, adems del dominio del lenguaje a utilizar, algoritmos especializados y lgica formal. Programar no involucra necesariamente otras tareas tales como el anlisis y diseo de la aplicacin (pero s el diseo del cdigo), aunque s suelen estar fusionadas en el desarrollo de pequeas aplicaciones. DEFINICION LENGUAJE PROGRAMACION Un lenguaje de programacin es un idioma artificial diseado para expresar computaciones que pueden ser llevadas a cabo por mquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento fsico y lgico de una mquina, para expresar algoritmos con precisin, o como modo de comunicacin humana.1 Est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el cdigo fuente de un programa informtico se le llama programacin. Tambin la palabra programacin se define como el proceso de creacin de un programa de computadora, mediante la aplicacin de procedimientos lgicos, a travs de los siguientes pasos:

El desarrollo lgico del programa para resolver un problema en particular. Escritura de la lgica del programa empleando un lenguaje de programacin especfico (codificacin del programa). Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de mquina. Prueba y depuracin del programa. Desarrollo de la documentacin.

Existe un error comn que trata por sinnimos los trminos 'lenguaje de programacin' y 'lenguaje informtico'. Los lenguajes informticos engloban a los lenguajes de programacin y a otros ms, como por ejemplo HTML (lenguaje para el marcado de pginas web que no es propiamente un lenguaje de programacin, sino un conjunto de instrucciones que permiten disear el contenido de los documentos). Permite especificar de manera precisa sobre qu datos debe operar una computadora, cmo deben ser almacenados o transmitidos y qu acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a travs de un lenguaje que intenta estar relativamente prximo al lenguaje humano o natural. Una caracterstica relevante de los lenguajes de programacin es precisamente que ms de un programador pueda usar un conjunto comn de instrucciones que sean comprendidas entre ellos para realizar la construccin de un programa de forma colaborativa.

Presentacin:

Historia de la programacin
Jessica Rivero Espinosa (100025022) Inteligencia en Redes de Comunicaciones Ingeniera de Telecomunicacin 5 Curso
Historia de la programacin Inteligencia en Redes de Comunicaciones -1- Jessica Rivero Espinosa

La computadora fue inventada para facilitar el trabajo intelectual. Si el hombre tiene algn problema, el diseador define el algoritmo que resuelve el problema, el programador lo codifica en un lenguaje de programacin, el cual la computadora es capaz de "entender", luego la computadora ejecuta el algoritmo expresado como programa en el lenguaje de programacin en cuestin, y entrega al hombre la respuesta. Los lenguajes de programacin son el medio de comunicacin entre el hombre y la mquina, por lo tanto son una forma de representacin del conocimiento.

Representacin de conocimiento
Representacin del conocimiento es escribir en un lenguaje descripciones del mundo. Una de las ambiciones es poder llegar a representar el sentido comn. En general una representacin debe: Ser capaz de expresar el conocimiento que deseamos expresar. Tener capacidad para resolver problemas. Dar simplicidad para acceder al conocimiento y facilidad de entendimiento. Por lo tanto un lenguaje de representacin tiene que ser expresivo, conciso, no ambiguo, y efectivo, pues es el que determina todas las caractersticas previas.

Tipos de lenguajes de programacin


Los tipos ms importantes de lenguajes de programacin son: Lenguajes Imperativos Su origen es la propia arquitectura de von Neumann, que consta de una secuencia de celdas (memoria) en las cuales se pueden guardar datos e instrucciones, y de un procesador capaz de ejecutar de manera secuencial una serie de operaciones ( comandos) principalmente aritmticas y booleanas. En general, un lenguaje imperativo ofrece al programador conceptos que se traducen de forma natural al modelo de la mquina. Ejemplos: FORTRAN, Algol, Pascal, C, Modula-2, Ada. El programador tiene que traducir la solucin abstracta del problema a trminos muy primitivos, cercanos a la mquina, por lo que los programas son ms "comprensibles" para la mquina que para el hombre. Esto es una desventaja para nosotros que hace que sea sumamente complicado construir cdigo en lenguaje imperativo. Lo bueno de este

lenguaje es que es tan cercano al lenguaje de la mquina que la eficiencia en la ejecucin es altsima. Lenguajes Funcionales Los matemticos resuelven problemas usando el concepto de funcin, que convierte datos en resultados. Sabiendo cmo evaluar una funcin, usando la computadora, podramos resolver automticamente muchos problemas. Este fue el pensamiento que llev a la creacin de los lenguajes de programacin funcionales. Adems se aprovech la posibilidad que tienen las funciones para manipular datos simblicos, y no solamente numricos, y la propiedad de las funciones que les permite componer, creando de esta manera, la oportunidad para resolver problemas complejos a partir de las soluciones a
Historia de la programacin Inteligencia en Redes de Comunicaciones -2- Jessica Rivero Espinosa

otros ms sencillos. Tambin se incluy la posibilidad de definir funciones recursivamente. Un lenguaje funcional ofrece conceptos que son muy entendibles y relativamente fciles de manejar. El lenguaje funcional ms antiguo y popular es LISP, diseado por McCarthy en la segunda mitad de los aos 50. Se usa principalmente en Inteligencia Artificial. En los 80 se aadi a los lenguajes funcionales la tipificacin y algunos conceptos modernos de modularizacin y polimorfismo, un ejemplo es el lenguaje ML. Programar en un lenguaje funcional significa construir funciones a partir de las ya existentes. Por lo tanto es importante conocer y comprender bien las funciones que conforman la base del lenguaje, as como las que ya fueron definidas previamente. De esta manera se pueden ir construyendo aplicaciones cada vez ms complejas. La desventaja es que est alejado del modelo de la mquina de von Neumann y, por lo tanto, la eficiencia de ejecucin de los intrpretes de lenguajes funcionales es peor que la ejecucin de los programas imperativos precompilados. Lenguajes Lgicos Otra forma de razonar para resolver problemas en matemticas se fundamenta en la lgica de primer orden. El conocimiento bsico de las matemticas se puede representar en la lgica en forma de axiomas, a los cuales se aaden reglas formales para deducir cosas verdaderas (teoremas). Gracias al trabajo de algunos matemticos, de finales de siglo pasado y principios de ste, se encontr la manera de automatizar computacionalmente el razonamiento lgico -particularmente para un subconjunto significativo de la lgica de primer orden- que permiti que la lgica matemtica diera origen a otro tipo de lenguajes de programacin, conocidos como lenguajes lgicos. Tambin se conoce a estos lenguajes, y a los funcionales, como lenguajes declarativos, porque para solucionar un problema el programador solo tiene que describirlo con axiomas y reglas de deduccin en el caso de la programacin lgica y con funciones en el caso de la programacin funcional. En los lenguajes lgicos se utiliza el formalismo de la lgica para representar el conocimiento sobre un problema y para hacer preguntas que se vuelven teoremas si se demuestra que se pueden deducir a partir del conocimiento dado en forma de axiomas y de las reglas de deduccin estipuladas. As se encuentran soluciones a problemas formulados como preguntas. Con base en la informacin expresada dentro de la lgica de primer orden, se formulan las preguntas sobre el dominio del problema y el intrprete del lenguaje lgico trata de encontrar la respuesta automticamente. El conocimiento sobre el problema se expresa en forma de predicados (axiomas) que establecen relaciones sobre los smbolos que representan los datos del dominio del problema. El PROLOG surgi a principio de los 70 y es el primer lenguaje lgico. Las

aplicaciones en la Inteligencia Artificial lo mantienen vivo y til. En el caso de la programacin lgica, el trabajo del programador es la buena descripcin del problema en forma de hechos y reglas. A partir de sta se pueden encontrar muchas soluciones dependiendo de como se formulen las preguntas (metas), que tienen sentido para el problema. Si el programa est bien definido, el sistema encuentra automticamente las respuestas a las preguntas formuladas. En este caso ya no es necesario definir el algoritmo de solucin, como en la programacin imperativa,
Historia de la programacin Inteligencia en Redes de Comunicaciones -3- Jessica Rivero Espinosa

lo fundamental aqu es expresar bien el conocimiento sobre el problema. En programacin lgica, al igual que en programacin funcional, el programa, en este caso los hechos y las reglas, estn muy alejados del modelo von Neumann que posee la mquina en la que tienen que ser interpretados; por lo que la eficiencia de la ejecucin es inferior a la de un programa equivalente en lenguaje imperativo. Sin embargo, para cierto tipo de problemas, la formulacin del programa mismo puede ser mucho ms sencilla y natural. Lenguajes Orientados a Objetos A mediados de los aos 60 se empez a usar las computadoras para la simulacin de problemas del mundo real. Pero el mundo real est lleno de objetos, en la mayora de los casos complejos, los cuales difcilmente se traducen a los tipos de datos primitivos de los lenguajes imperativos. As surgi el concepto de objeto y sus colecciones (clases de objetos), que permitieron introducir abstracciones de datos a los lenguajes de programacin. La posibilidad de reutilizacin del cdigo y sus indispensables modificaciones, se reflejaron en la idea de las jerarquas de herencia de clases. Tambin surgi el concepto de polimorfismo introducido va procedimientos virtuales. Todos estos conceptos (que hoy identificamos como conceptos del modelo de objetos) fueron presentados en el lenguaje Simula 67, desde el ao 1967, aunque este lenguaje estaba enfocado a aplicaciones de simulacin discreta. Fue en los aos 80 cuando surgieron lenguajes de programacin con conceptos de objetos encabezada por Smalltalk, C++, Eiffel, Modula-3, Ada 95 y terminando con Java. El modelo de objetos, y los lenguajes que lo usan, parecen facilitar la construccin de sistemas o programas en forma modular. Los objetos ayudan a expresar programas en trminos de abstracciones del mundo real, lo que aumenta su comprensin. La clase ofrece cierto tipo de modularizacin que facilita las modificaciones al sistema. La reutilizacin de clases previamente probadas en distintos sistemas tambin es otro punto a favor. Sin embargo, el modelo de objetos, a la hora de ser interpretado en la arquitectura von Neumann conlleva un excesivo manejo dinmico de memoria debido a la constante creacin de objetos, as como a una carga de cdigo fuerte causada por la constante invocacin de mtodos. Por lo tanto los programas en lenguajes orientados a objetos son ineficientes, en tiempo y memoria, contra los programas equivalentes en lenguajes imperativos, aunque les ganan en la comprensin de cdigo. Lenguajes Concurrentes, Paralelos y Distribuidos El origen de los conceptos para el manejo de concurrencia, paralelismo y distribucin est en el deseo de aprovechar al mximo la arquitectura von Neumann y sus modalidades reflejadas en conexiones paralelas y distribuidas. Esto fue un tema importante sobre todo cuando las computadoras eran caras y escasas; el sistema operativo tena que ofrecer la ejecucin concurrente y segura de programas de varios usuarios, que desde distintos terminales utilizaban un solo procesador, y as

surgi la necesidad de introducir algunos conceptos de programacin concurrente para programar los sistemas operativos. Cuando los procesadores cambiaron de tamao y de precio, se abri la posibilidad de contar con varios procesadores en una mquina y ofrecer el procesamiento en paralelo (procesar varios programas al mismo tiempo). Esto dio el impulso a la creacin de
Historia de la programacin Inteligencia en Redes de Comunicaciones -4- Jessica Rivero Espinosa

lenguajes que permitan expresar el paralelismo. Finalmente, llegaron las redes de computadoras, que tambin ofrecen la posibilidad de ejecucin en paralelo, pero con procesadores distantes, lo cual conocemos como la programacin distribuida. Histricamente encontramos soluciones conceptuales y mecanismos (semforos, regiones crticas, monitores, envo de mensajes, llamadas a procedimientos remotos (RPC)) que se incluyeron despus en lenguajes de programacin como Concurrent Pascal o Modula (Basados en monitores), Ada SR (Basada en RendezVous (Tipo de RPC)), ALGOL 68(Semforos), OCCAM (Envo de mensajes), Java... Otros tipos de lenguajes de programacin son: Procedural Language, Declarative Language, Applicative Language, Definitional Language, Single Assignment Language, Dataflow Language, Constraint Language, Lenguaje de cuarta generacin(4GL), Query Language, Specification Language, Assembly Language, Intermediate Language, Metalenguajes.

Lenguajes de programacin

ltima modificacin 2008/10

La Torre de Babel (1563) - Pieter Brueghel el Viejo 2008 Gimi (http://guimi.net) Esta obra est bajo una licencia "Reconocimiento-Compartir bajo la misma licencia 3.0 Espaa" de Creative Commons. Para ver una copia de esta licencia, visite http://guimi.net/index.php?pag_id=licencia/cc-by-sa-30es_human.html. Reconocimiento tautolgico: Todas las marcas pertenecen a sus respectivos propietarios. Realizado a partir de informacin de la Wikipedia y trabajo propio.

Lenguajes de programacin
Contenido
INTRODUCCIN........................................................................................................................................... ....................3 DEFINICIN................................................................................................................................................... ...................4 CLASIFICACIN........................................................................................................................................... ....................4

SEGN EL NIVEL DE ABSTRACCIN....................................................................................................................4 Lenguajes de mquina y de bajo nivel......................................................................................................................4 Lenguajes de medio nivel.........................................................................................................................................4 Lenguajes de alto nivel y de muy alto nivel..............................................................................................................4 SEGN LA FORMA DE EJECUCIN........................................................................................................................5 Diferencias entres lenguajes compilados e interpretados..........................................................................................5 SEGN EL PARADIGMA DE PROGRAMACIN....................................................................................................6 Lenguajes de programacin http://guimi.net 2 / 6

INTRODUCCIN

Con el objeto de facilitar la interaccin de las personas con los computadores, los sistemas operativos hacen una aparicin discreta y bastante simple a principios de 1950, con conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento temporal. En las primeras mquinas, como la ENIAC (Electronic Numerical Integrator And Calculator) que se termin de construir a finales de 1945, la programacin se haca manualmente conectando cables y pulsando interruptores. Los datos se suministraban en tarjetas perforadas. La programacin para los clculos normales requera de media hora a un da entero. Pocos aos despus la programacin se hace en base a instrucciones, que son secuencias de unos y ceros que representan si una llave debe estar activa o inactiva (1948: Small Scale Experimental Machine o The Baby). A esta forma de programar se le llam lenguaje de mquina. A comienzos de 1950 se desarrollaron los primeros lenguajes simblicos nacidos de la necesidad de recordar secuencias de programacin para las acciones usuales. A estas acciones se les denomin con nombres fciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A este conjunto de instrucciones se le llam lenguaje ensamblador. A finales de los aos cincuenta y comienzos de los sesenta se desarrollaron los primeros lenguajes de alto nivel con su propio vocabulario ms o menos limitado, su gramtica ms o menos estricta y su semntica, que se asimilan relativamente al lenguaje humano. Estos lenguajes se denominan de alto nivel porque para poder ser utilizados deben pasarse por un traductor que los convierta a un lenguaje de nivel inferior (cdigo mquina o ensamblador). A este proceso se le llama "compilacin" o "interpretacin" y lo realiza, curiosamente, otro programa1. El cdigo escrito por el programador es lo que se conoce como "cdigo fuente" y el cdigo traducido es lo que se conoce como "cdigo binario".

El primero fue FORTRAN (FORmula TRANslator) en 1954, y su creacin se debe a John Backus. Otros lenguajes de alto nivel son COBOL (Common Business-Oriented Language) desarrollado en 1960 por Grace Hopper y otros; Pascal, desarrollado por Niklaus Wirth en 1970 y C desarrollado por Ken Thompson y Dennis Ritchie con el objeto de crear un nuevo sistema operativo (UNIX). Basndose en los trabajos publicados por Robinson en 1965, en 1972, Kowalski publica las primeras ideas acerca de cmo la lgica de primer orden podra ser usada como un lenguaje de programacin. Poco despus Colmerauer lleva a la practica estas ideas con la implementacin del lenguaje PROLOG (PROgramming in LOGic), el primer y ms difundido lenguaje que utiliza un nuevo paradigma de programacin, la programacin lgica. Los conceptos de la programacin orientada a objetos tienen origen en Simula 67, un lenguaje diseado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cmputo Noruego en Oslo. Estos principios fueron refinados ms tarde en Smalltalk, diseado para ser un sistema completamente dinmico en el cual los objetos se podran crear y modificar sobre la marcha en lugar de tener un sistema basado en programas estticos. La programacin orientada a objetos se fue convirtiendo en dominante a mediados de los aos ochenta, en gran parte debido a la influencia de C++, una extensin del lenguaje de programacin C. Su dominacin fue consolidada gracias al auge de las Interfaces Grficas de Usuario, para las cuales la programacin orientada a objetos est particularmente bien adaptada. En este caso, se habla tambin de programacin dirigida por eventos. Las caractersticas de orientacin a objetos son utilizadas por lenguajes especficamente diseados, pero tambin han sido agregadas a muchos lenguajes existentes anteriormente.
1 Para una informacin ms especfica ver ms adelante la seccin sobre lenguajes compilados y lenguajes interpretados.

Lenguajes de programacin http://guimi.net 3 / 6

DEFINICIN

Un lenguaje de programacin es un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones, y es utilizado para controlar el comportamiento fsico y lgico de una mquina. Aunque muchas veces se usan los trminos 'lenguaje de programacin' y 'lenguaje informtico' como si fuesen sinnimos, no es del todo correcto, ya que los lenguajes informticos engloban a los lenguajes de programacin y a otros ms, como por ejemplo HTML que es un lenguaje para el marcado de pginas web. Un lenguaje de programacin permite especificar de manera precisa sobre qu datos debe operar una computadora, cmo estos datos deben ser almacenados o transmitidos y qu acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a travs de un lenguaje que intenta estar relativamente prximo al lenguaje humano o natural, tal como sucede con el lenguaje Lxico.

CLASIFICACIN

Los lenguajes de programacin se pueden clasificar atendiendo a varios criterios, los principales son: Segn el nivel de abstraccin Segn la forma de ejecucin Segn el paradigma de programacin que poseen cada uno de ellos

SEGN EL NIVEL DE ABSTRACCIN

Lenguajes de mquina y de bajo nivel


Los lenguajes de mquina estn escritos en cdigos (cdigo mquina) directamente inteligibles por la mquina (computadora), siendo sus instrucciones cadenas binarias (0 y 1). Lenguaje de mquina hace referencia al lenguaje especfico de una computadora, mientras que cdigo mquina hace referencia al modo en que se escriben los diferentes lenguajes de mquina. Los lenguajes de bajo nivel son lenguajes de programacin que se acercan al funcionamiento de una computadora. Los lenguajes de ms bajo nivel son los lenguajes de mquinas. A ste nivel le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa. La programacin en un lenguaje de bajo nivel tiene como ventajas una mayor adaptacin al equipo, adems de la posibilidad de obtener la mxima velocidad con el mnimo uso de memoria. Sin embargo tiene importantes inconvenientes, como la imposibilidad de escribir cdigo independiente de la mquina y la mayor dificultad en la programacin y en la comprensin de los programas.

Lenguajes de medio nivel

Minoritariamente en algunos textos se diferencian algunos lenguajes como de medio nivel, como el lenguaje C, ya que tienen ciertas caractersticas que los acercan a los lenguajes de bajo nivel, como gestin de punteros de memoria y registros, pero con sintaxis, vocabulario y gramtica de alto nivel.

Lenguajes de alto nivel y de muy alto nivel

Los lenguajes de programacin de alto nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de estar orientados a su ejecucin en las mquinas. Los lenguajes de alto y bajo nivel requieren de conocimientos especficos de programacin y del lenguaje concreto (vocabulario, gramtica y sintaxis) para realizar las secuencias de instrucciones lgicas. Los lenguajes de muy alto nivel se crearon para que el usuario comn pudiese solucionar ciertos problemas sencillos de procesamiento de datos de una manera ms fcil y rpida. Lenguajes de programacin http://guimi.net 4 / 6

SEGN LA FORMA DE EJECUCIN

Los procesadores usados en las computadoras son capaces de entender y actuar segn lo indican programas escritos en un lenguaje fijo para cada arquitectura, llamado lenguaje de mquina. Todo programa escrito en un lenguaje de alto nivel puede ser ejecutado de dos maneras: Lenguajes compilados: Antes de poder utilizarse el programa debe utilizarse un traductor llamado compilador que se encarga de traducir (compilar) el programa original (cdigo fuente) al programa equivalente escrito en lenguaje de mquina o ensamblador (binario). Los binarios son los programas ejecutables y los nicos necesarios para el funcionamiento del programa. Lenguajes interpretados: Cada vez que se usa el programa debe utilizarse un traductor llamado intrprete

que se encarga de traducir (interpretar) las instrucciones del programa original (cdigo fuente) a cdigo mquina segn van siendo utilizadas. Para el funcionamiento del programa siempre es necesario disponer del cdigo original y del intrprete.

Diferencias entres lenguajes compilados e interpretados

Los lenguajes compilados se compilan una vez y se utilizan cuantas veces se desee sin necesidad de

volver a utilizar el compilador. Los lenguajes interpretados son interpretados, valga la redundancia, cada vez que se ejecutan y necesitan siempre del intrprete. Los compiladores analizan todo el programa y no generan resultados si no es correcto todo el cdigo. Los intrpretes analizan las instrucciones segn las necesitan y pueden iniciar la ejecucin de un programa con errores e incluso terminar correctamente una ejecucin de un programa con errores siempre que no haya sido necesario el uso de las instrucciones que contienen dichos errores. Un compilador traduce cada instruccin una sola vez. Un intrprete debe traducir una instruccin cada vez que la encuentra. Los binarios son compilados para una arquitectura especfica y no pueden ser utilizados en otras arquitecturas no compatibles (aunque pueden existir distintos compiladores para generar binarios para diferentes arquitecturas). Un lenguaje interpretado puede ser utilizado en cualquier arquitectura que disponga de un intrprete sin necesidad de cambios. Los lenguajes compilados son ms eficientes que los interpretados y adems permiten distribuir el programa en forma confidencial mediante binarios. Es ms sencillo empaquetar lenguajes interpretados dentro de otros lenguajes, como JavaScript dentro de HTML. Para obtener las ventajas de ambos tipos de lenguajes algunos utilizan una aproximacin en dos fases. Primero el programa original (cdigo fuente) es precompilado a un binario confidencial, portable e interpretable. En una segunda fase el binario precompilado es interpretado en cada arquitectura. sta aproximacin es la que realiza por ejemplo Java. Hay que hacer notar que algunas aplicaciones permiten ser programadas con lenguajes. Estos lenguajes no tienen por objeto solicitar acciones a la computadora sino solicitar acciones a la aplicacin sobre la que se ejecutan. Por tanto aunque algunos de estos lenguajes son lenguajes de programacin, no son lenguajes de programacin de computadoras y por tanto no necesitan ser traducidos a cdigo mquina. Es el caso por ejemplo de SQL, un lenguaje declarativo de cuarta generacin diseado para trabajar con bases de datos. Este lenguaje SQL es interpretado por el motor de la Base de Datos, no por la CPU. Lenguajes de programacin http://guimi.net 5 / 6

SEGN EL PARADIGMA DE PROGRAMACIN

Un paradigma de programacin representa un enfoque particular o filosofa para la construccin del software. Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la prctica es habitual que se

mezclen, dando lugar a la programacin multiparadigma. Los diferentes paradigmas de programacin son: Algortmico, Imperativo o Por procedimientos. El ms comn y est representado, por ejemplo, por C o por BASIC. Describe la programacin en trminos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cmo realizar una tarea. La implementacin de hardware de la mayora de computadores es imperativa ya que el hardware est diseado para ejecutar cdigo de mquina que es imperativo. Declarativo o Predicativo. Basado en la utilizacin de predicados lgicos (lgico) o funciones matemticas (funcional), su objetivo es conseguir lenguajes expresivos en los que no sea necesario especificar cmo resolver el problema (programacin convencional imperativa), sino qu problema se desea resolver. Los interpretes de los lenguajes declarativos tienen incorporado un motor de inferencia genrico que resuelve los problemas a partir de su especificacin. Lgico. Un ejemplo es PROLOG. El mecanismo de inferencia genrico se basa en los procedimientos de deduccin de formulas vlidas en un sistema axiomtico Funcional. Representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell. El mecanismo de inferencia genrico se basa en la reduccin de una expresin funcional a otra equivalente simplificada. Orientado a Objetos. Cada vez ms utilizado, sobre todo en combinacin con el imperativo. De hecho los lenguajes orientados a objetos permiten la programacin imperativa. Algunos ejemplos de lenguajes orientados a objetos son C++, Java, Python. Usa objetos y sus interacciones para disear aplicaciones y programas de computadora. Est basado en varias tcnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Lenguajes de programacin http://guimi.net 6 / 6

Introduccin a la programacin
Contenidos

Definiciones Historia de la Programacin Pasos importantes de las lenguajes de programacin Historia de las lenguajes de programacin Perder el miedo del cdigo Bibliografa

Definiciones

Hardware: Componentes fsicos de un ordenador, por ejemplo: monitor, ratn, teclado, ordenador, impresora, ... Software: Programas o elementos lgicos que hacen funcionar un ordenador o que se ejecutan en ellos, distinguir: sistema operativa, programa

Sistema Operativa (OS): un sistema operativo es un programa especial que se carga en un ordenador tras ser encendido y cuya funcin es gestionar los dems programas/aplicaciones que se ejecutarn en dicho ordenador, como, por ejemplo un procesador de texto o una hoja de clculo, o la impresin de un texto en una impresora o una conexin a Internet. por ejemplo: DOS, Windows, MacOS, Unix, Linux, ... Aplicacin/Programa: (dice a un ordenador que hacer) conjunto de instrucciones escritas en un determinado lenguaje que dirigen a un ordenador para la ejecucin de una serie de operaciones, con el objetivo de resolver un problema que se ha definido previamente, por ejemplo: aadir dos nmeros, compara dos nmeros, ordenador interpreta instrucciones: ensear una pelcula en la pantalla, implementar un procesador de texto Lenguaje de programacin: lenguaje que un ordenador entiende, muchas diferentes lenguajes, como mundo real muchas idiomas: Basic, C, C++, java, ... tiene que estar traducida a un cdigo que ordenador entiende -> .exe Compilador: transforma el cdigo escrito en un lenguaje de programacin a un cdigo que un ordenador pueda ejecutar -> bit / byte, ensamblador (assembler)

Lenguaje de script: lenguaje que un ordenador entiende, esta traducida a un cdigo que el ordenador entiende durante su ejecucin, por ejemplo: vbs (Visual Basic Script), JavaScript, asp, jsp, php, perl, ActionScript, ... Bit: Unidad mnima de informacin digital que puede ser tratado por un ordenador. Proviene de la contraccin de la expresin binary digit (dgito binario). Byte: Conjunto significativo de ocho bits que representan un carcter por ejemplo la letra "a", en un sistema informtico.

Historia de la Programacin
Sobre los ltimos 50 aos, los idiomas que programan han evolucionado del cdigo binario de mquina a herramientas poderosas que crean las abstracciones complejas. Es importante entender por qu los idiomas han evolucionado, y qu capacidades que los idiomas ms nuevos nos dan. "Tan largo como no haba mquinas, programar era ningn problema; cuando tuvimos unos pocas computadoras dbiles, programar lleg a ser un problema templado y ahora que tenemos las computadoras gigantescas, programar ha llegado a ser un problema igualmente gigantesco. En este sentido que la industria electrnica no ha resuelto un solo problema, tiene slo los cre - ha creado el problema de usar su producto". [Edsger. W. Dijkstra. "El Programista Humilde" (la Conferencia del Premio de Turing),

Comunicaciones del ACM, Vol 15, No. 10 (el octubre 1972).] E. W. Dijkstra habl estas palabras profticas casi hace 28 aos en su es la conferencia del Premio de Turing. En aquel momento, el 'las computadoras gigantescas l radio de probablemente tenido entre 64 y 128 kilobytes de la memoria verdadera, y a lo ms unos pocos megaoctetos de artefactos de almacenamiento de acceso directo. Si l pens que el problema era gigantesco entonces... Uno de las llaves a programar exitoso son el concepto de la abstraccin. La abstraccin es la llave a la construccin sistemas complejos de software. Como el tamao de nuestros problemas crece, la necesidad para la abstraccin dramticamente aumentos. En sistemas sencillos, caracterstica de idiomas usados en el 1950s y '60s, un solo programista podra entender el problema entero, y por lo tanto manipula todas estructuras del programa y datos. Los programistas son hoy incapaces de entender todos los programas y los datos - es apenas demasiado grande. La abstraccin se requiere a permitir que el programista para agarrar los conceptos necesarios. La mayora de los libros y el reglamento en la historia de programar los idiomas tienden a discutir los idiomas en trminos de generaciones. Esto es un arreglo til para clasificar los idiomas por la edad.

Primera Generacin
Al desarrollarse las primeras computadoras electrnicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la informacin sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de clculo, uno por uno. John Von Neumann desarroll el modelo que lleva su nombre, para describir este concepto de "programa almacenado". En este modelo, se tiene una abstraccin de la memoria como un conjunto de celdas, que almacenan simplemente nmeros. Estos nmeros pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en s. Cmo es que describimos un programa como nmeros? Se tena el problema de representar las acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por switches correspondientes al concepto de bit, solamente nos permita almacenar nmeros binarios. La solucin que se tom fue la siguiente: a cada accin que sea capaz de realizar nuestra computadora, asociarle un nmero, que ser su cdigo de operacin (opcode) . Por ejemplo, una calculadora programable simple podra asignar los opcodes : 1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE. Supongamos que queremos realizar la operacin 5 * 3 + 2, en la calculadora descrita arriba. En memoria, podramos "escribir" el programa de la siguiente forma:

Podemos ver que con esta representacin, es simple expresar las operaciones de las que es capaz el hardware (en este caso, nuestra calculadora imaginaria), en la memoria. La descripcin y uso de los opcodes es lo que llamamos lenguaje de mquina. Es decir, la lista de cdigos que la mquina va a interpretar como instrucciones, describe las capacidades de programacin que tenemos de ella; es el lenguaje ms primitivo, depende directamente del hardware, y requiere del programador que conozca el funcionamiento de la mquina al ms bajo nivel. Los lenguajes ms primitivos fueron los lenguajes de mquina. Esto, ya que el hardware se desarroll antes del software, y adems cualquier software finalmente tiene que expresarse en el lenguaje que maneja el hardware. La programacin en esos momentos era sumamente tediosa, pues el programador tena que "bajarse" al nivel de la mquina y decirle, paso a pasito, cada punto de la tarea que tena que realizar. Adems, deba expresarlo en forma numrica; y por supuesto, este proceso era propenso a errores, con lo que la productividad del programador era muy limitada. Sin embargo, hay que recordar que en estos momentos, simplemente an no exista alternativa.

Segunada Generacin
El primer gran avance que se dio, como ya se coment, fue la abstraccin dada por el Lenguaje Ensamblador, y con l, el nacimiento de las primeras herramientas automticas para generar el cdigo mquina. Esto redujo los errores triviales, como poda ser el nmero que corresponda a una operacin, que son sumamente engorrosos y difciles de detectar, pero fciles de cometer. Sin embargo, an aqu es fcil para el programador perderse y cometer errores de lgica, pues debe bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de l.

ejemplo ensamblador: Hola Mundo!

Tercera Generacin
Con el desarrollo en los 50s y 60s de algoritmos de ms elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras cientficos de otras ramas; ellos conocan mucho de Fsica, Qumica y otras ramas similares, pero no de Computacin, y por supuesto, les era sumamente complicado trabajar con lenguaje Ensamblador en vez de frmulas. As, naci el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (FORmula TRANslation), que, como su nombre indica, inici como un "simple" esfuerzo de traducir un lenguaje de frmulas, al lenguaje ensamblador y por consiguiente al lenguaje de mquina. A partir de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la mayor abstraccin posible, y facilitar la vida al programador, aumentando la productividad, encargndose los compiladores o intrpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora. Hay que notar la existencia de lenguajes que combinan caractersticas de los de alto nivel y los de bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es C: contiene estructuras de programacin de alto nivel, y la facilidad de usar libreras que tambin son caractersticas de alto nivel; sin embargo, fue diseado con muy pocas instrucciones, las cuales son sumamente sencillas, fciles de traducir al lenguaje de la mquina; y requiere de un entendimiento apropiado de cmo funciona la mquina, el uso de la memoria, etctera. Por ello, muchas personas consideramos a lenguajes como

C (que fue diseado para hacer sistemas operativos), lenguajes de nivel medio.

Cuarta Generacin
Los idiomas de la cuarta generacin parecen segn las instrucciones a las de la tercera generacin. Lo nuevo de estas lenguajes son conceptos como clases, objetos y eventos que permiten soluciones ms fciles y lgicos. Lenguajes como C++, java y C# se llaman lenguajes orientadas al objeto. Los idiomas modernos, tal como C++ y Java, no slo permite las abstracciones, pero permite la implementacin impuesta de restricciones en abstracciones. La mayora de los idiomas modernos son objetivas orientado, que permite que m modele el mundo verdadero que usa mi idioma. Adems, puedo limitar el acceso para modelar las restricciones de mundo verdadero en datos. La llave es que us el trmino "mundo verdadero." Por la primera vez, yo modelo mi solucin en trminos del problema. Quiero que mi solucin sea orientado de problema, para que la solucin refleje el mundo verdadero en trminos de estructuras de datos y acceso a los datos. Yo tambin puedo aplicar directamente y para poder modelar objetos de mundo verdadero usando las clases (en C + + o Java).

Quinta Generacin
Como la quinta generacin estn conocidos los Lenguajes de inteligencia artificial. Han sido muy valorados al principio de las noventa - mientras ahora el desarrollo de software toma otras caminos. Lo que veremos en el futuro es menos dependencia en el idioma, y ms en el modelando

herramientas, tal como el Unificado Modelando el Idioma (UML). La salida del modelando herramienta producir mucho de nuestro cdigo para nosotros; en el muy menos, producir arquitectnico y los modelos del diseo y la estructura de nuestro cdigo. Esto producir un diseo (y posiblemente cdigo) eso puede ser validado por el cliente antes de completar la implementacin y probar. Cuando los problemas diarios que resolvemos llegan a ser ms grande, nosotros tenemos cada vez menos tiempo "volver a hacer" el cdigo. Los das de decir, "acabamos de escribir una versin de Beta y el cliente entonces pueden decir nosotros lo que ellos quieren realmente," son pasados. Las organizaciones que fallan de obtener completa y corrige los requisitos de cliente antes de escribir el cdigo saldr del negocio. Por qu? Porque toma demasiado largo, y cuesta tambin mucho, para escribir cdigo dos o ms vez. Las organizaciones que tienen un compromiso a la comprobacin y la validacin antes de producir cdigo prosperarn - los otros fallarn. ejemplo Flowchart

ejemplo UML

Pasos importantes de las lenguajes de programacin

Historia de las lenguajes de programacin

Perder el miedo del cdigo


ejemplo practico HTML: Hola Mundo

ejemplo practico JavaScript: Hola Mundo

ejemplo practico JavaScript: Cuadrado

Bibliografa

Rafael Fernndez Calvo: Glosario bsico ingls-espaol, ATI, 2001 Justo Mendez: Lenguajes de Programacin, monografias.com, 2001 David Cook: Evolution of Programming Languages and Why a Language is Not Enough to Solve Our Problems, Software Technology Support Center

copyleft 2002: Gerald Kogler

LISTA LENGUAJES PROGRAMACION Algunos de los lenguajes de programacin ms importantes por ao son:

1943 - Plankalkl (Konrad Zuse) 1943 - ENIAC 1949 - C-10 1951 - Regional Assembly Language 1952 - Autocode 1954 - FORTRAN 1958 - LISP 1958 - ALGOL 1959 - COBOL 1962 - APL 1962 - Simula 1964 - BASIC 1964 - PL/I 1966 - BCPL 1969 - B 1970 - Pascal 1972 - C 1972 - Smalltalk 1972 - Prolog 1973 - ML 1974 - Comandos Guardados 1978 - SQL 1983 - Ada 1983 - C++ 1985 - Eiffel 1987 - Perl 1989 - FL (Backus) 1990 - Haskell 1990 - Python 1991 - Java 1993 - Ruby 1995 - D 2000 - C# 2007 - UAP

También podría gustarte