Paradigmas de La Programacion

Fundamentos de la Programación Paradigmas 07/09/2012 Instituto Tecnológico de Salina Cruz ~KorOniiTa~♥~ Paradigmas de

Views 74 Downloads 0 File size 667KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • alb94
Citation preview

Fundamentos de la Programación Paradigmas

07/09/2012 Instituto Tecnológico de Salina Cruz ~KorOniiTa~♥~

Paradigmas de la programación

Subsecretaría de Educación Superior

Dirección General de Educación Superior Tecnológica

Instituto Tecnológico De Salina Cruz

Tema:

Paradigmas de la Programación Carrera:

Ingeniería en Tecnologías de la Información y Comunicaciones Materia:

Fundamentos de Programación Profesor:

Susana Mónica Roman Najera Alumno:

Alberto Corona Aceituno Semestre:

Primer Semestre Grupo:

I-E 1

Fundamentos De Programación

Paradigmas de la programación

Índice Introducción .................................................................................................................................................. 3 Paradigmas de la programación .................................................................................................................... 4 Programación ............................................................................................................................................ 4 Lenguaje de programación. ....................................................................................................................... 4 Historia de los lenguajes de programación ............................................................................................... 6 Lenguajes clasificados por paradigmas de programación: definiciones, ventajas y desventajas. ................ 7 ¿Qué es un paradigma de programación? ................................................................................................ 7 Tipos de paradigmas de programación ..................................................................................................... 8 Programación Imperativo o por Procedimientos. ..................................................................................... 8 Programación Funcional ............................................................................................................................ 9 Programación Lógico ............................................................................................................................... 10 Programación Declarativa ....................................................................................................................... 11 Programación Orientada a Objetos ......................................................................................................... 11 Conclusión ................................................................................................................................................... 12 Bibliografia................................................................................................................................................... 13

2

Fundamentos De Programación

Paradigmas de la programación

Introducción Edward Sapir, definió el lenguaje como un método humano y no instintivo de comunicar ideas, emociones y deseos mediante un sistema de símbolos producidos voluntariamente. Esta definición en principio se refiere a un lenguaje natural, que es aquel lenguaje hablado o escrito que usamos para la comunicación más cotidiana y general. No obstante, en este trabajo nos es de interés otro tipo de lenguajes llamados “lenguajes formales”. Un lenguaje formal es un lengua je donde existe una gramática que implementa el conjunto de concatenaciones (cadenas) posibles de un alfabeto finito particular. Esta gramática provee al lenguaje de 3 elementos importantes: 1.Un vocabulario de símbolos; 2.Reglas sintácticas para combinar estos símbolos en cadenas y fórmulas gramaticalmente correctas, y 3.Reglas semánticas para darle significado e interpretación a esas fórmulas. Con esto, se obtiene un lenguaje en el que a diferencia de un lenguaje natural, sus sentencias no significan nada en particular, ya que su significado aparece cuando les es dado un significado a sus símbolos, que no da cabida a ambigüedades y que carece del poder de crecer y evolucionar autónomamente. Los paradigmas de programación son la forma que determinan los métodos y las herramientas que un programador usara en la construcción de un software, es la manera en la que nos comunicamos con las maquinas hoy en día. Mayormente los lenguajes de programación están basados en uno o mas paradigmas, ha estos se les puede llamar multiparadigmas.

3

Fundamentos De Programación

Paradigmas de la programación

Paradigmas de la programación Programación Es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de cálculo, 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 abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en sí. Se tenía 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 permitía almacenar números binarios. La solución que se tomó fue la siguiente: a cada acción que sea capaz de realizar nuestra computadora, asociarle un número, que será su código de operación (opcode). La programación debe perseguir la obtención de programas de calidad. Algunos de los factores de calidad más importantes son los siguientes: 

Corrección. Un programa es correcto si hace lo que debe hacer tal y como se estableció en las fases previas a su desarrollo.



Claridad. Es muy importante que el programa sea lo más claro y legible posible, para facilitar así su desarrollo y posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, así como cuidar el estilo en la edición.



Eficiencia. Se trata de que el programa, además de realizar aquello para lo que fue creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los recursos que utiliza.



Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma, ya sea hardware o software, diferente a aquélla en la que se elaboró.

Lenguaje de programación. Para crear un programa, y que la computadora interprete y ejecute las instrucciones escritas en él, debe usarse un Lenguaje de programación.

4

Fundamentos De Programación

Paradigmas de la programación

Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente. Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML. Es difícil establecer una clasificación general de los mismos, ya que en cualquiera que se realice habrá lenguajes que pertenezcan a mas de uno de los grupos establecidos. Una clasificación muy extendida, atendiendo a la forma de trabajar de los programas y a la filosofía con que fueron concebidos, es la siguiente: 

Lenguajes imperativos. Utilizan instrucciones como unidad de trabajo de los programas (Cobol, Pascal, C, Ada).



Lenguajes declarativos. Los programas se construyen mediante descripciones de funciones o expresiones lógicas (Lisp, Prolog).



Lenguajes orientados a objetos. El diseño de los programas se basa mas en los datos y su estructura. La unidad de proceso es el objeto y en el se incluyen los datos (variables) y las operaciones que actúan sobre ellos (Smalltalk, C++).



Lenguajes orientados al problema. Diseñados para problemas específicos, principalmente de gestión, suelen ser generadores de aplicaciones.



Lenguajes naturales. Están desarrollándose nuevos lenguajes con el principal objetivo de aproximar el diseño y construcción de programas al lenguaje de las personas.

Otra clasificación que se puede hacer es la de atendiendo al desarrollo de los lenguajes desde la aparición de las computadoras, que sigue un cierto paralelismo con las generaciones establecidas en la evolución de las mismas: 

Primera generación. Lenguajes maquina y ensambladores.



Segunda generación. Primeros lenguajes de alto nivel imperativo (FROTRAN, COBOL).



Tercera generación. Lenguajes de alto nivel imperativo. Son los mas utilizados y siguen vigentes en la actualidad (ALGOL 8, PL/I, PASCAL, MODULA).



Cuarta generación. Orientados básicamente a las aplicaciones de gestión y al manejo de bases de datos (NATURAL, SQL).



Quinta generación. Orientados a la inteligencia artificial y al procesamiento de los lenguajes naturales (LISP, PROLOG).

5

Fundamentos De Programación

Paradigmas de la programación

Para la mejor compresión se harán unas definiciones: Programa: es un conjunto de instrucciones escritas en un lenguaje de programación que indican a la computadora la secuencia de pasos, para resolver un problema. Código fuente: esta creado en algún lenguaje de alto nivel, por lo que es entendido 100% por el ser humano. Este debe estar complementado por su documentación o manuales donde se indica el desarrollo lógico del mismo. Código objeto: es creado por los compiladores y nos sirve como enlace entre el programa fuente y el ejecutable.

Historia de los lenguajes de programación De un profesor matemático de la universidad de Cambridge e inventor ingles, Charles Babagge, que al principio del siglo XIX predijo muchas de las teorías en que se basan los actuales ordenadores, surgió la idea de los primeros lenguajes de programación. Con él colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aquélla supuesta maquina de Babagge, en tarjetas perforadas. Al no llegar a construirse dicha maquina, los programas de Ada tampoco llegaron a ejecutarse. Cuando surgió el primer ordenador, el famoso ENIAC (Electronic Numerical Integrator And Calculator), su programación se basaba en componentes físicos, o sea, que se programaba, cambiando directamente el Hardware de la maquina, exactamente lo que sé hacia era cambiar cables de sitio para conseguir así la programación de la maquina. La entrada y salida de datos se realizaba mediante tarjetas perforadas. A continuación la Historia de los lenguajes de programación nos lleva a Von Neumann, que en el año 1945 desarrollo una nueva técnica que establecía que las instrucciones complejas se deben utilizar para controlar el hardware simple, permitiendo que se pudiese reprogramar más rápidamente (la técnica del compartir-programa). Este método conocido como Lenguaje Máquina es una la lista de códigos que la máquina va a interpretar como instrucciones, describe las capacidades de programación que tenemos de ella; es el lenguaje más primitivo, depende directamente del hardware, y requiere del programador que conozca el funcionamiento de la máquina al más bajo nivel. Con el fin de facilitar la tarea de realizar la programación surge el lenguaje ensamblador, mediante el cual cada instrucción del lenguaje máquina se convierte en un código nemotécnico más fácil de utilizar por los programadores. Este tipo de lenguaje de programación se considera de bajo nivel por su cercanía con el lenguaje máquina que utiliza internamente el procesador. Este lenguaje tiene como inconvenientes que requiere un alto conocimiento del funcionamiento interno del ordenador, los programas no son transportables de un tipo de ordenador a otro, y resulta bastante difícil escribir los programas. Por otro lado, tiene la ventaja de que la ejecución de los programas es muy rápida. A medida que los programas van siendo más complejos, la programación en ensamblador se va haciendo más complicada, así como la tarea de mantenimiento de los programas escritos en ese lenguaje. Por ello van apareciendo otros lenguajes llamados de alto nivel que se asemejan más al lenguaje humano.

6

Fundamentos De Programación

Paradigmas de la programación

Los programas escritos en lenguajes de alto nivel son más fáciles de escribir por los programadores y realizar su mantenimiento, pueden ser ejecutados en distintos tipos de ordenadores sin tener que modificar el código y no requieren un alto nivel de conocimiento del funcionamiento interno del ordenador. Pero las instrucciones escritas en esos lenguajes deben ser traducidas a lenguaje máquina para que puedan ser comprendidas por el procesador, por lo que es necesario utilizar programas traductores como los compiladores o intérpretes. Uno de los primeros lenguajes de alto nivel que aparecieron, sobre el año 1955, y que tuvo una gran difusión fue Fortran. Este lenguaje se considera de propósito general, aunque estaba especialmente orientado al cálculo numérico y científico. Otros lenguajes de propósito general que han sido amplamente utilizados: Basic (1964), Pascal (1970), C (1972), C++ (1983), Perl (1987), Java (1995), etc. Han aparecido también lenguajes que, en vez que tener un enfoque de propósito general, están especializados en el desarrollo de aplicaciones de un determinado tipo. Por ejemplo, Cobol (1960) está orientado al sector empresarial, Prolog (1972) a la inteligencia artificial, SQL (1978) a la gestión de bases de datos, PHP (1995) al desarrollo web, etc.

Lenguajes clasificados por paradigmas de programación: definiciones, ventajas y desventajas. Los lenguajes de programación pueden clasificarse empleando distintos métodos y puntos de vista. Esta clasificación se basa en el paradigma que utilizan. Se debe aclarar que existen muchos más paradigmas y subparadigmas de programación no incluidos dentro de los mencionados. Además, todavía hay conflictos en las definiciones y alcances de ciertos paradigmas.

¿Qué es un paradigma de programación? Los lenguajes de programación son basados en uno o más paradigmas. Por ejemplo: Smalltalk y Java son lenguajes basados en el paradigma orientado a objetos. El lenguaje de programación Scheme, en cambio, soporta sólo programación funcional. En cambio Python, soporta múltiples paradigmas. Todos estos lenguajes pueden ser clasificados en una jerarquía de familias a partir del modelo que siguen para definír y operar información (Figura 1), es decir, que pueden ser jerarquiza-dos según el paradigma que siguen. En una primera clasificación, se encuentran dos grandes grupos en donde es posible englobar casi todos los paradigmas de programación conocidos hasta ahora. Un paradigma de 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 (con la solución de múltiples “problemas” se construye una aplicación).

7

Fundamentos De Programación

Paradigmas de la programación

Tipos de paradigmas de programación 

Imperativo o por procedimientos: es considerado el más común y está representado, por ejemplo, por C, BASIC o Pascal



Funcional: está representado por Scheme o Haskell. Este es un caso del paradigma declarativo.



Lógico: está representado por Prolog. Este es otro caso del paradigma declarativo.



Declarativo: por ejemplo la programación funcional, la programación lógica, o la combinación lógico-funcional.



Orientado a objetos: está representado por Smalltalk, un lenguaje completamente orientado a objetos.

Si bien puede seleccionarse la forma pura de estos paradigmas al momento de programar, en la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma. Actualmente el paradigma de programación más usado es el de la programación orientada a objetos.

Programación Imperativo o por Procedimientos. Describe la programación como una secuencia instrucciones o comandos que cambian el estado de un programa. El código máquina 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. La programación imperativa, es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea. Los lenguajes imperativos de alto nivel usan variables y sentencias más complejas, pero aún siguen el mismo paradigma. Las recetas y las listas de revisión de procesos, a pesar de no ser programas de computadora, son también conceptos familiares similares en estilo a la programación imperativa; cada paso es una instrucción, y el mundo físico guarda el estado Para este tipo de lenguajes un programa se puede expresar como sigue: Programa = Algoritmo + Estructuras de Datos Es decir, está compuesto de un algoritmo que represente o describa cómo hay que resolver el problema y de las estructuras de datos necesarias para almacenar la información. Las características de estos tipos de lenguajes son las siguientes: — Procedimentales: en el sentido de que describen cómo se ha de resolver el problema y no qué problema es.

8

Fundamentos De Programación

Paradigmas de la programación

— Deterministas: en el sentido de que se tienen siempre los mismos resultados del programa para las mismas entradas. Es decir, si se calcula el sueldo para un empleado varias veces, los resultados de salida siempre serán los mismos, puesto que los datos de entrada siempre son los mismos. — Necesitan de la existencia de un proceso que traduzca el código al lenguaje que entiende la computadora (lenguaje máquina). — Algorítmicos: como ya se ha visto, expresan cómo resolver el problema mediante un algoritmo.

Programación Funcional El paradigma funcional considera al programa como una función matemática, donde el dominio representaría el conjunto de todas las entradas posibles (inputs) y el rango sería el conjunto de todas las salidas posibles (outputs). En los lenguajes tradicionales, la programación consiste en indicar cómo resolver un problema mediante sentencias; en la programación lógica, se trabaja de una forma descriptiva, estableciendo relaciones entre entidades, indicando no cómo, sino qué hacer. La programación lógica encuentra su hábitat natural en aplicaciones de inteligencia, artificial o relacionadas: 

Sistemas expertos, donde un sistema de información imita las recomendaciones de un experto sobre algún dominio de conocimiento.



Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una teoría existente.



Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la información contenida en una expresión lingüística humana.

El lenguaje de programación lógica por excelencia es Prolog, que cuenta con diversas variantes. La más importante es la programación lógica con restricciones (véase artículo sobre programación con restricciones), que posibilita la resolución de ecuaciones lineales además de la demostración de hipótesis. Estructuras básicas: Prolog cuenta con dos tipos de estructuras: términos y sentencias. Los términos pueden ser constantes, variables o functores: > Las constantes, representadas por una cadena de caracteres, pueden ser números o cualquier cadena que comience en minúscula. > Las variables son cadenas que comienzan con una letra mayúscula. Los functores son identificadores que empiezan con minúscula, seguidos de una lista de parámetros (términos) entre paréntesis, separados por comas.

9

Fundamentos De Programación

Paradigmas de la programación

Las sentencias son reglas o cláusulas. Hay hechos, reglas con cabeza y cola, y consultas. > Un hecho establece una relación entre objetos, y es la forma más objetos, y es la forma más sencilla de sentencia. > Una regla permite definir nuevas relaciones a partir de otras ya existentes. Operadores MATEMATICOS

RELACIONALES

Suma

+




Menor que

Multiplicación

*

>=

Mayor o igual que

División (retorna siempre en punto / flotante)

=