Vous êtes sur la page 1sur 5

Nacen los lenguajes de programacin.

Con el fin de facilitar el trabajo del programador surge la necesidad de que la computadora entienda un lenguaje diferente al suyo propio, de unos y ceros, muy complejo para el ser humano. Es necesario reducir la distancia de lenguajes entre los humanos y la computadora, por esto se crean los Lenguajes de Programacin. Para aproximar unos a otros. Con tales lenguajes no es necesario escribir ristras de unos y ceros; se dispone de un medio expresivo con un nivel de abstraccin mayor que permiten decirle a la mquina qu es lo que tiene que hacer de una forma ms cercana a la forma humana. As nacen los lenguajes de programacin del tipo ensamblador formado por nemotcnicos que ocultan el cdigo mquina subyacente y, consecuentemente, nace el software traductor o conjunto de programas que permiten convertir los programas escritos en el lenguaje del programador al lenguaje que entiende la mquina. 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. Por esta va se avanza ms y se llega a un nuevo paso que permite al programador dar a la computadora cada vez rdenes ms cercanas al razonamiento humano y al lenguaje natural, aumentando el nivel de abstraccin de las rdenes y alejndose del complicado lenguaje de la mquina. La primera "pre-computadora" no usaba electricidad. La primera programadora informtica era una mujer y se llamaba Ada Lovelace. Usamos diariamente la computadora pero hay muchas cosas que no sabemos sobre ellas. Mediante los programas se indica a la computadora qu tarea debe realizar y como efectuarla, pero para ello es preciso introducir estas ordenes en un lenguaje que el sistema pueda entender. En principio, el ordenador slo entiende las instrucciones en cdigo mquina, es decir, el especfico de la computadora. Sin embargo, a partir de stos se elaboran los llamados lenguajes de alto y bajo nivel. Lenguajes de bajo nivel: Utilizan cdigos muy cercanos a los de la mquina, lo que hace posible la elaboracin de programas muy potentes y rpidos, pero son de difcil aprendizaje. Lenguajes de alto nivel:

Por el contrario, son de uso mucho ms fcil, ya que en ellos un solo comando o instruccin puede equivaler a millares es cdigo mquina. El programador escribe su programa en alguno de estos lenguajes mediante secuencias de instrucciones. Antes de ejecutar el programa la computadora lo traduce a cdigo mquina de una sola vez (lenguajes compiladores) o interpretndolo instruccin por instruccin (lenguajes intrpretes). Decimos entonces que: El tema de la Programacin Orientada a Objetos (Object Oriented Programming O-O-P) sigue siendo para el que escribe un territorio inquietante, interesante y en gran medida desconocido, como parece ser tambin para la gran mayora de los que estamos en el campo de la programacin Los principales conceptos que se manejan en la Programacin Orientada a Objetos son: Encapsulado Herencia Polimorfismo.

El compilador Es un programa que traduce un lenguaje de alto nivel al lenguaje mquina. Un programa compilado indica que ha sido traducido y est listo para ser ejecutado. La ejecucin de los programas compilados es ms rpida que la de los interpretados, ya que el interprete debe traducir mientras est en la fase de ejecucin (saca todos los errores). Un compilador es un programa que traduce el programa fuente (conjunto de instrucciones de un lenguaje de alto nivel, por ejemplo Basic o Pascal) a programa objeto (instrucciones en lenguaje mquina que la computadora puede interpretar y ejecutar). Se requiere un compilador para cada lenguaje de programacin. Un compilador efecta la traduccin, no ejecuta el programa. Una vez compilado el programa, el resultado en forma de programa objeto ser directamente ejecutable. Presentan la ventaja considerable frente a los intrpretes de la velocidad de ejecucin, por lo que su uso ser mejor en aquellos programas probados en los que no se esperan cambios y que deban ejecutarse muchas veces. En caso de que se opte por un interpretador se debe considerar que el intrprete resida siempre en memoria. Interprete Traductor de lenguajes de programacin de alto nivel, los intrpretes ejecutan un programa lnea por lnea. El programa siempre permanece en su forma original (programa fuente) y el interprete proporciona la traduccin al momento de ejecutar cada una de la s instrucciones. Un intrprete es un programa que procesa los programas escritos en un lenguaje de alto nivel, sin embargo, est diseado de modo que no existe independencia entre la etapa de traduccin y la etapa de ejecucin. Un intrprete traduce cada instruccin o sentencia del programa escrito a un lenguaje mquina e inmediatamente se ejecuta. Encuentran su mayor ventaja en la interaccin con el

usuario, al facilitar el desarrollo y puesta a punto de programas, ya que los errores son fciles de detectar y sobre todo de corregir. Lenguaje mquina Lenguaje original de la computadora, un programa debe estar escrito en el lenguaje de la mquina para poder ser ejecutado. Este es generado por software y no por el programador. El programador escribe en un lenguaje de programacin, el cual es traducido al lenguaje de mquina mediante intrpretes y compiladores.

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. 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 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 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.

Vous aimerez peut-être aussi