You are on page 1of 4

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 CONCEPTOS BSICOS Cada lenguaje de programacin es una creacin y como tal ha sido cuidadosamente diseado. Algunos lenguajes han sido diseados por personas nicas, como por ejemplo Pascal. Otros, han sido diseados por un grupo grande de personas, tales como PL/l y Ada. La experiencia sugiere que aquellos lenguajes diseados por personas nicas o grupos pequeos, tienden a ser ms compactos y coherentes que aquellos lenguajes diseados por grandes grupos. Un lenguaje de programacin, digno de su nombre, debe reunir ciertos requisitos. El lenguaje de programacin debe ser universal. Es decir, cualquier problema debe tener una solucin que puede ser programada en el lenguaje y dicha solucin ser implementada en cualquier computador. Este requisito es uno de los ms fuertes y pocos lenguajes lo poseen. Se dice que cualquier lenguaje en el cual pueden definirse funciones recursivas se considera universal. De otro lado, un lenguaje sin recursin ni iteracin no puede ser universal. Existen ciertos lenguajes de aplicacin que no son universales, pero s podran ser razonablemente descritos as mismos, como lenguajes de programacin.

El lenguaje de programacin debe ser implementable en una computadora, es decir; debe ser posible ejecutar un programa en trminos del lenguaje en cualquier mquina. La notacin matemtica generalmente no es implementable porque en su notacin es posible formular problemas que no pueden ser resueltos por cualquier computador. Los lenguajes naturales tampoco son implementables por razones totalmente diferentes: ellos son tan imprecisos y tienden a ser muy ambiguos. SINTAXIS Y SEMNTICA Cada lenguaje tiene sintaxis y semntica: La sintaxis de un lenguaje de programacin est relacionada con la forma de los programas, por ejemplo, como es que las expresiones, comandos, declaraciones, etc. son puestos juntos en un programa. La semntica de un lenguaje de programacin est relacionada con el significado de los programas; por ejemplo, cmo ellos se comportarn cuando se ejecutan en una computadora. La sintaxis de un lenguaje influye en cmo los programas son escritos por el programador, ledos por otro programador y traducidos por el computador. La semntica de un lenguaje determina como los programas son compuestos por el programador, entendidos por otros programadores e interpretados por el computador. La sintaxis es importante; pero la semntica es ms importante an. Figura 1 ENFOQUE HISTRICO Los lenguajes de programacin de hoy son el producto de un desarrollo que se inici en los 1950's. Numerosos conceptos de lenguajes han sido inventados, examinados e implementados en sucesivos lenguajes. Con muy pocas excepciones, el diseo de cada lenguaje ha sido fuertemente influenciado por la experiencia con los lenguajes iniciales. Los lenguajes de hoy no son el producto final del desarrollo del diseo del lenguaje; nuevos conceptos y paradigmas estn siendo desarrollados y el escenario de los lenguajes de programacin de los prximos diez aos podra ser un poco diferente al de hoy.

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. 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 altonivel 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. 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. Un paradigma de programacin provee (y determina) la visin y mtodos de un programador en la construccin de un programa o subprograma. Diferentes paradigmas resultan en diferentes estilos de programacin y en diferentes formas de pensar la solucin de problemas (con la solucin de mltiples problemas se construye una aplicacin).

Los lenguajes de programacin son basados en uno o ms paradigmas Por ejemplo: Smalltalk y Java son lenguajes basados en el paradigma orientado a objetos. El lenguaje de programacin Scheme, en cambio, soporta slo programacin funcional. En cambio Python, soporta mltiples paradigmas. Clasificacin por paradigmas de programacin Paradigma Imperativo: describe la programacin como una secuencia instrucciones o comandos que cambian el estado de un programa. El cdigo mquina en general est basado en el paradigma imperativo. Su contrario es el paradigma declarativo. En este paradigma se incluye el paradigma procedimental (procedural) entre otros. Paradigma Declarativo: No se basa en el cmo se hace algo (cmo se logra un objetivo paso a paso), sino que describe (declara) cmo es algo. En otras palabras, se enfoca en describir las propiedades de la solucin buscada, dejando indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa solucin. Es ms complicado de implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solucin de determinados problemas. Paradigma Estructurado: la programacin se divide en bloques (procedimientos y funciones) que pueden o no comunicarse entre s. Adems la programacin se controla con secuencia, seleccin e iteracin. Permite reutilizar cdigo programado y otorga una mejor compresin de la programacin. Es contrario al paradigma inestructurado, de poco uso, que no tiene ninguna estructura, es simplemente un bloque, como por ejemplo, los archivos batch (.bat). Paradigma Orientado a Objetos: est basado en la idea de encapsular estado y operaciones en objetos. En general, la programacin se resuelve comunicando dichos objetos a travs de mensajes (programacin orientada a mensajes). Se puede incluir -aunque no formalmente- dentro de este paradigma, el paradigma basado en objetos, que adems posee herencia y subtipos entre objetos. Ej.: Simula, Smalltalk, C++, Java, Visual Basic .NET, etc. Su principal ventaja es la reutilizacin de cdigos y su facilidad para pensar soluciones a determinados problemas. Paradigma Funcional: este paradigma concibe a la computacin como la evaluacin de funciones matemticas y evita declarar y cambiar datos. En otras palabras, hace hincapi en la aplicacin de las funciones y composicin entre ellas, ms que en los cambios de estados y la ejecucin secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones. Paradigma lgico: se basa en la definicin de reglas lgicas para luego, a travs de un motor de inferencias lgicas, responder preguntas planteadas al sistema y as resolver los problemas. Ej.: prolog. Otros paradigmas y subparadigmas son: paradigma orientado al sujeto, paradigma reflectante, programacin basada en reglas, paradigma basado en restricciones, programacin basada en prototipos, paradigma orientado a aspectos, etc. Paradigma de programacin guiada por eventos:Es un paradigma de programacin en el que tanto la estructura como la ejecucin de los programas van determinados por los sucesos que ocurran en el sistema o que ellos mismos provoquen. Mientras que en la programacin secuencial es el programador el que define cul va a ser el flujo del programa, en la programacin dirigida por eventos ser el propio usuario, o lo que sea que est accionando el programa, el que dirija el flujo del programa. Al comenzar la ejecucin del programa se llevarn a cabo las inicializaciones correspondiente y a continuacin el programa quedar bloqueado hasta que se produzca algn evento. Cuando alguno de estos eventos tenga lugar, el programa pasar a ejecutar el cdigo del correspondiente manejador de evento.

You might also like