12
Programación lógica y funcional Lenguajes de programación 03/09/2015

Lenguajes de Programacionsub

  • Upload
    vaz-vez

  • View
    215

  • Download
    1

Embed Size (px)

DESCRIPTION

Lenguajes de programación

Citation preview

Page 1: Lenguajes de Programacionsub

Programación lógica y funcional

Lenguajes de programación 03/09/2015

LENGUAJES DE PROGRAMACIÓN

Page 2: Lenguajes de Programacionsub

Un lenguajes de programación Es un Lenguaje artificial utilizado para desarrollar programas informáticos. Es un conjunto de reglas, notaciones, símbolos y/o caracteres que permiten a un programador poder expresar el procesamiento de datos y sus estructuras en la computadora.

Evolución

Durante varias décadas, los programadores han tenido que realizar su trabajo usando un lenguaje muy particular conocido como lenguaje máquina que, como su nombre lo indica, solamente puede ser interpretado por estas mismas.

Este tipo de lenguaje era bastante propenso a hacer que los programadores cometieran errores ya que tenía cierto grado de complejidad en cuanto a la capacidad del entendimiento humano, sin tomar en cuenta que un programa escrito en tal lenguaje no puede ser ejecutado en otra máquina que no sea en la que se escribió dicho programa debido a que cada máquina dependía de su hardware para funcionar y por tanto ejecutar tales programas. Es por esto que al cabo de unos cuantos años más, se desarrolló un lenguaje conocido como ensamblador o también llamado lenguaje de nivel medio, el cual era mucho más fácil de manejar que el lenguaje máquina, evitando así tales errores a la hora de programar.

Tiempo después surgen lo que se conoce como lenguajes de alto nivel que fue una innovación en la programación puesto que su sintaxis era bastante similar a la de los humanos. Todo este proceso de evolución hizo que los programas escritos sean mucho más legibles y fáciles de modificar.

Ahora en este punto del tiempo han surgido los paradigmas de programación que son complementos elementales para los programadores. El paradigma de programación más utilizado en la actualidad es el Orientado a Objetos.

Algunos de los lenguajes de programación de alto nivel se enfocan en un área específica, por ejemplo tenemos los empresariales, los de inteligencia artificial, los que crean aplicaciones para móviles, etc.

Cada uno de estos lenguajes de alto nivel puede ser compilado o interpretado.

Los lenguajes de programación han sufrido una serie de cambios durante su proceso de evolución.

En la actualidad los lenguajes de programación se encuentran clasificados de muchas maneras:

Según su nivel de abstracción

Lenguaje máquina

Lenguaje ensamblador

Page 3: Lenguajes de Programacionsub

Lenguaje de alto nivel

Lenguaje máquina

El primer lenguaje que se empleó para programar fue el lenguaje máquina, el cual, como sabemos utilizaba el lenguaje binario para escribir las instrucciones que la computadora debía ejecutar para realizar su trabajo. Esta forma de programar era bastante lenta y muy propensa a tener errores, puesto que, este tipo de lenguaje no era común en el lenguaje humano y su comprensión requería tiempo. Además, este tipo de programación dependía bastante del hardware de la máquina con la que se esté trabajando, por ejemplo un programa escrito en una máquina de cierta marca y modelo no podía ser ejecutado en otra máquina de diferentes características.

Lenguaje ensamblador

Luego de haber pasado por muchos inconvenientes debido a la programación utilizando el lenguaje máquina surge un lenguaje conocido como ensamblador. Este nuevo lenguaje consistía en utilizar mnemotécnicos para escribir las instrucciones, lo cual facilitaba el trabajo del programador.

Las ventajas están en que sus instrucciones eran expresadas en un lenguaje cercano al que el humano puede entender. Sin embargo, la tarea de programar sigue teniendo cierto grado de complejidad debido a que aún es un lenguaje más cercano al que pueden entender las máquinas que de los humanos. En estos casos el programador debía conocer las características de la computadora con la que iba a realizar su trabajo y por tanto había que hacer ciertos trabajos que dependían de la máquina como: ubicar los registros de memoria tal y como se lo hacía con el lenguaje máquina.

El código escrito directamente en lenguaje ensamblador se denomina “código fuente” mientras que el programa traducido toma el nombre de “código objeto”, el cual será ejecutado por la computadora.

Lenguaje de alto nivel

Esta nueva forma de programar fue muy innovadora. Aquí las instrucciones ya eran más fáciles de manejar por el cerebro humano. Estas instrucciones que por lo general eran palabras en inglés, describían los procedimientos que deben ejecutar las computadoras.

Una de las ventajas de esta nueva etapa de programación fue que los programas escritos ya no dependían del hardware de cada máquina. Los programas podían ya ejecutarse en cualquier

Page 4: Lenguajes de Programacionsub

computadora con muy pocas o incluso ninguna modificación a su código fuente. Los programas en esta etapa ya se caracterizaban por ser portables.

Una de las desventajas de este tipo de programación era de que como los programas eran más claros para el lenguaje humano que el de las máquinas su ejecución era más lenta por el motivo de que no se aprovechaban completamente los recursos de la computadora.

Existen dos tipos de niveles por los que ha pasado la programación

Bajo nivel

Los lenguajes de bajo nivel son los que se encuentran un paso más adelante al lenguaje máquina y brinda sus beneficios a la hora de programar aunque con ciertos límites como la portabilidad.

El lenguaje ensamblador es clasificado como un lenguaje de bajo nivel pues es más cercano al lenguaje máquina y cumple características similares.

Alto nivel

Desde la aparición de FORTRAN, el primer lenguaje de programación de alto nivel se han venido una serie de cambios en cuanto a la programación.

Como ya sabemos la programación utilizando los lenguajes de alto nivel es mucho más fácil que con los lenguajes que se utilizaban antes (lenguaje máquina y ensamblador) y además de ello se han ido incorporando paradigmas que facilitan aún más este trabajo.

PARADIGMAS DE PROGRAMACION.

El concepto de paradigma en la programación provee (y determina) la visión y métodos de un programador en la construcción de un programa o subprograma. Diferentes paradigmas resultan en diferentes estilos de programación y en diferentes formas de pensar la solución de problemas.

Muchos lenguajes de programación de alto nivel utilizan un paradigma de programación para un mejor desarrollo de software.

La siguiente lista muestra los paradigmas de programación más utilizados:

Page 5: Lenguajes de Programacionsub

1. Programación Orientada a Objetos 2. Programación Estructurada 3. Programación Modular 4. Programación Dinámica 5. Programación Imperativa 6. Programación Declarativa

a. Programación Lógica b. Programación Funcional

7. Programación Orientada a Aspectos

Programación Orientada a Objetos

La programación Orientada a Objetos es un paradigma de programación muy utilizado en la actualidad y es debido a que permite una representación de las entidades del mundo real a algo equivalente en lenguaje de programación denominado “objeto”.

SmallTalk Java Lisp Simula

PHP Ada C++

Programación Estructurada

La programación estructurada consiste en el desarrollo de software utilizando subrutinas y tres estructuras de control que son:

1. Secuencial 2. Selectiva 3. Repetición

Algunos de los lenguajes que permiten aplicar la programación estructurada son los siguientes:

Java ALGOL Pascal PL/1 Ada

Programación Modular

Page 6: Lenguajes de Programacionsub

La programación modular es considerada como la evolución de la programación estructurada y consiste en desarrollar software dividiendo el problema en problemas más pequeños los cuales pasarán a ser codificados como módulos independientes. Esto hace que los programas sean mucho más legibles y por lo tanto fáciles de manejar.

Algunos de los lenguajes de programación que permiten esto son:

Java Perl Ruby Modula

PROGRAMACIÓN IMPERATIVA

Son los lenguajes orientados a “sentencias”. La unidad de trabajo es la sentencia. Los efectos de las sentencias individuales se combinan en un programa para obtener los resultados deseados. Todos estos lenguajes se basan fundamentalmente en la arquitectura tradicional de la computadora. Esto se puede ver en tres características principales:

variables: un elemento que se utilizara en el desarrollo del programa que ocupa un espacio de memoria que se le designa mediante su tipo de dato a trabajar.

operación de asignación: (Estrechamente ligado a la arquitectura de la memoria se encuentra la idea de que el valor calculado debe ser “almacenado”).

repetición: (un programa en un lenguaje imperativo, normalmente realiza su tarea ejecutando repetidamente una secuencia de pasos elementales).

La programación en el paradigma imperativo consiste en determinar qué datos son requeridos para el cálculo, asociar a esos datos unas direcciones de memoria, y efectuar paso a paso una secuencia de transformaciones en los datos almacenados, de forma que el estado final represente el resultado correcto.

Los lenguajes de programación imperativos son…

COBOL C Ada BASIC Pascal FORTRAN

D Perl PHP Lua java

Programación procedural

Page 7: Lenguajes de Programacionsub

Uso de procedimientos y subrutinas Los cambios de estado se localizan en estos procedimientos Los procedimientos especifican parámetros y valores devueltos (un primer paso hacia la

abstracción y los modelos funcionales y declarativos) Lenguajes: ALGOL

Programación estructurada

Artículo a finales de los 60 de Edsger W. Dijkstra: GOTO statement considered harmful en el que se arremete contra la sentencia GOTO de muchos lenguajes de programación de la época

La programación estructurada mantiene la programación imperativa, pero haciendo énfasis en la necesidad de que los programas sean correctos (debe ser posible de comprobar formalmente los programas), modulares y mantenibles.

Lenguajes: Pascal, ALGOL 68, Ada

Programación Orientada a Objetos

La POO también utiliza la programación imperativa, aunque extiende los conceptos de modularidad, mantenibilidad y estado local

Se populariza a finales de los 70 y principios de los 80

Programación Orientada a Aspectos

La programación Orientada a Aspectos es una extensión de la programación Orientada a Objetos, en otras palabras, es un complemento de esta misma.

Tiene un enfoque estructurado: que son los procedimientos o también conocidos como acciones.

Además tiene un enfoque orientado a objetos: que son los datos que se encuentran encapsulados en una determinada clase.

Un aspecto es definido como una unidad modular que vendría a ser la base de la programación orientada a aspectos y que se disemina por la estructura de otras unidades funcionales.

Todo aspecto tiene un propósito definido, este es el trabajo que ellos deben de hacer. El trabajo del cual está encargado un aspecto es denominado “advice”.

El programa orientado a aspectos está formado por tres bloques compactos.

Page 8: Lenguajes de Programacionsub

1. Funcionabilidad básica

2. Sincronización

3. Distribución

En este caso la sincronización vendría a ser el aspecto 1 mientras que la distribución, el aspecto 2.

Una de las ventajas de este nuevo paradigma de programación es que permite un diseño sistemático además de la reutilización de software.

Una desventaja es que existen conceptos que no pueden encapsularse dentro de una función debido a que atraviesan todo el sistema o varias partes de él, como lo son: la sincronización, perfiles de seguridad o redes, manejo de errores, manejo de memoria, etc

Los lenguajes de programación que soportan este paradigma son:

AspectJ

Características principales

Idea principal de la programación imperativa: La computación se realiza cambiado el estado del programa por medio de sentencias que definen pasos de ejecución del computador

Estado del programa modificable Sentencias de control que definen pasos de ejecución

PROGRAMACIÓN DECLARATIVA

La programación Declarativa se divide en:

Programación Lógica Programación Funcional Programación con restricciones Programas DSL

A la programación imperativa se le contrapone la programación declarativa en la que se describe la lógica de computación necesaria para resolver un problema sin describir un flujo de control de ningún tipo. Efectivamente, en la programación declarativa no es necesario definir algoritmos puestos que se detalla la solución del problema en lugar de como llegar a esa solución.

La principal diferencia entre ambos paradigmas es que en la programación declarativa se describe paso a paso un conjunto de instrucciones que han de ejecutarse con la finalidad de variar el estado del

Page 9: Lenguajes de Programacionsub

programa y resolver un problema para hallar una solución. Es decir, se describe un algoritmo en el que se detallan los pasos secuenciales necesarios a seguir para la resolución de un problema.

Y en la programación imperativa solo se describe el problema pero no los pasos necesarios para llegar a su solución, la cual es hallada mediante mecanismos internos de inferencia de información a partir de la descripción del problema en sí.

Programación Lógica

La Programación Lógica es un paradigma de programación enfocado en la parte lógica de los programas y gira en torno al concepto de predicado.

PROLOG

Programación Funcional

Basado en el empleo de funciones aritméticas que no manejan datos propenso a mutaciones.

Los programas en esta categoría son:

FORTH Scheme Haskell Miranda

Rust Erlang Objective Caml Perl

JavaScript Java Phyton Entre otros

Lenguajes de representación y consulta

Los lenguajes de representación se refieren a aquellos que sirven como herramientas para la construcción, representación y diseño de documentos, ejemplos: html y xml, mientras que los lenguajes de consulta son utilizados para consultar en bases de datos o en sistemas de información, ejemplos: SQL.