Sunteți pe pagina 1din 14

Fundamentos de la Programacin

Paradigmas
07/09/2012 Instituto Tecnolgico de Salina Cruz ~KorOniiTa~~

Paradigmas de la programacin

Subsecretara de Educacin Superior

Direccin General de Educacin Superior Tecnolgica

Instituto Tecnolgico De Salina Cruz

Tema:

Paradigmas de la Programacin
Carrera:

Ingeniera en Tecnologas de la Informacin y Comunicaciones


Materia:

Fundamentos de Programacin
Profesor:

Susana Mnica Roman Najera


Alumno:

Alberto Corona Aceituno


Semestre:

Primer Semestre
Grupo:

I-E
1

Fundamentos De Programacin

Paradigmas de la programacin

ndice
Introduccin .................................................................................................................................................. 3 Paradigmas de la programacin .................................................................................................................... 4 Programacin ............................................................................................................................................ 4 Lenguaje de programacin. ....................................................................................................................... 4 Historia de los lenguajes de programacin ............................................................................................... 6 Lenguajes clasificados por paradigmas de programacin: definiciones, ventajas y desventajas. ................ 7 Qu es un paradigma de programacin? ................................................................................................ 7 Tipos de paradigmas de programacin ..................................................................................................... 8 Programacin Imperativo o por Procedimientos. ..................................................................................... 8 Programacin Funcional ............................................................................................................................ 9 Programacin Lgico ............................................................................................................................... 10 Programacin Declarativa ....................................................................................................................... 11 Programacin Orientada a Objetos ......................................................................................................... 11 Conclusin ................................................................................................................................................... 12 Bibliografia................................................................................................................................................... 13

Fundamentos De Programacin

Paradigmas de la programacin

Introduccin
Edward Sapir, deni el lenguaje como un mtodo humano y no instintivo de comunicar ideas, emociones y deseos mediante un sistema de smbolos producidos voluntariamente. Esta denicin en principio se reere a un lenguaje natural, que es aquel lenguaje hablado o escrito que usamos para la comunicacin ms cotidiana y general. No obstante, en este trabajo nos es de inters otro tipo de lenguajes llamados lenguajes formales. Un lenguaje formal es un lengua je donde existe una gramtica que implementa el conjunto de concatenaciones (cadenas) posibles de un alfabeto nito particular. Esta gramtica provee al lenguaje de 3 elementos importantes: 1.Un vocabulario de smbolos; 2.Reglas sintcticas para combinar estos smbolos en cadenas y frmulas gramaticalmente correctas, y 3.Reglas semnticas para darle signicado e interpretacin a esas frmulas. Con esto, se obtiene un lenguaje en el que a diferencia de un lenguaje natural, sus sentencias no signican nada en particular, ya que su signicado aparece cuando les es dado un signicado a sus smbolos, que no da cabida a ambigedades y que carece del poder de crecer y evolucionar autnomamente. Los paradigmas de programacin son la forma que determinan los mtodos y las herramientas que un programador usara en la construccin de un software, es la manera en la que nos comunicamos con las maquinas hoy en da. Mayormente los lenguajes de programacin estn basados en uno o mas paradigmas, ha estos se les puede llamar multiparadigmas.

Fundamentos De Programacin

Paradigmas de la programacin

Paradigmas de la programacin
Programacin
Es el proceso de disear, codificar, 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. 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. 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). La programacin debe perseguir la obtencin de programas de calidad. Algunos de los factores de calidad ms importantes son los siguientes:

Correccin. 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 ms 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 edicin. Eficiencia. Se trata de que el programa, adems 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 aqulla en la que se elabor.

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

Fundamentos De Programacin

Paradigmas de la programacin

Un lenguaje de programacin es un lenguaje que puede ser utilizado para controlar el comportamiento de una mquina, particularmente una computadora. Consiste en un conjunto de reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos, respectivamente. Aunque muchas veces se usa lenguaje de programacin y lenguaje informtico como si fuesen sinnimos, no tiene por qu ser as, ya que los lenguajes informticos engloban a los lenguajes de programacin y a otros ms, como, por ejemplo, el HTML. Es difcil establecer una clasificacin general de los mismos, ya que en cualquiera que se realice habr lenguajes que pertenezcan a mas de uno de los grupos establecidos. Una clasificacin muy extendida, atendiendo a la forma de trabajar de los programas y a la filosofa 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 lgicas (Lisp, Prolog). Lenguajes orientados a objetos. El diseo 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 actan sobre ellos (Smalltalk, C++). Lenguajes orientados al problema. Diseados para problemas especficos, principalmente de gestin, suelen ser generadores de aplicaciones. Lenguajes naturales. Estn desarrollndose nuevos lenguajes con el principal objetivo de aproximar el diseo y construccin de programas al lenguaje de las personas.

Otra clasificacin que se puede hacer es la de atendiendo al desarrollo de los lenguajes desde la aparicin de las computadoras, que sigue un cierto paralelismo con las generaciones establecidas en la evolucin de las mismas:

Primera generacin. Lenguajes maquina y ensambladores. Segunda generacin. Primeros lenguajes de alto nivel imperativo (FROTRAN, COBOL). Tercera generacin. Lenguajes de alto nivel imperativo. Son los mas utilizados y siguen vigentes en la actualidad (ALGOL 8, PL/I, PASCAL, MODULA). Cuarta generacin. Orientados bsicamente a las aplicaciones de gestin y al manejo de bases de datos (NATURAL, SQL). Quinta generacin. Orientados a la inteligencia artificial y al procesamiento de los lenguajes naturales (LISP, PROLOG).

Fundamentos De Programacin

Paradigmas de la programacin

Para la mejor compresin se harn unas definiciones: Programa: es un conjunto de instrucciones escritas en un lenguaje de programacin que indican a la computadora la secuencia de pasos, para resolver un problema. Cdigo fuente: esta creado en algn lenguaje de alto nivel, por lo que es entendido 100% por el ser humano. Este debe estar complementado por su documentacin o manuales donde se indica el desarrollo lgico del mismo. Cdigo objeto: es creado por los compiladores y nos sirve como enlace entre el programa fuente y el ejecutable.

Historia de los lenguajes de programacin


De un profesor matemtico de la universidad de Cambridge e inventor ingles, Charles Babagge, que al principio del siglo XIX predijo muchas de las teoras en que se basan los actuales ordenadores, surgi la idea de los primeros lenguajes de programacin. Con l colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aqulla 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 programacin se basaba en componentes fsicos, 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 programacin de la maquina. La entrada y salida de datos se realizaba mediante tarjetas perforadas. A continuacin la Historia de los lenguajes de programacin nos lleva a Von Neumann, que en el ao 1945 desarrollo una nueva tcnica que estableca que las instrucciones complejas se deben utilizar para controlar el hardware simple, permitiendo que se pudiese reprogramar ms rpidamente (la tcnica del compartir-programa). Este mtodo conocido como Lenguaje Mquina es una 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. Con el fin de facilitar la tarea de realizar la programacin surge el lenguaje ensamblador, mediante el cual cada instruccin del lenguaje mquina se convierte en un cdigo nemotcnico ms fcil de utilizar por los programadores. Este tipo de lenguaje de programacin se considera de bajo nivel por su cercana con el lenguaje mquina 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 difcil escribir los programas. Por otro lado, tiene la ventaja de que la ejecucin de los programas es muy rpida. A medida que los programas van siendo ms complejos, la programacin en ensamblador se va haciendo ms 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 ms al lenguaje humano.

Fundamentos De Programacin

Paradigmas de la programacin

Los programas escritos en lenguajes de alto nivel son ms fciles de escribir por los programadores y realizar su mantenimiento, pueden ser ejecutados en distintos tipos de ordenadores sin tener que modificar el cdigo 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 mquina para que puedan ser comprendidas por el procesador, por lo que es necesario utilizar programas traductores como los compiladores o intrpretes. Uno de los primeros lenguajes de alto nivel que aparecieron, sobre el ao 1955, y que tuvo una gran difusin fue Fortran. Este lenguaje se considera de propsito general, aunque estaba especialmente orientado al clculo numrico y cientfico. Otros lenguajes de propsito general que han sido amplamente utilizados: Basic (1964), Pascal (1970), C (1972), C++ (1983), Perl (1987), Java (1995), etc. Han aparecido tambin lenguajes que, en vez que tener un enfoque de propsito general, estn 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 gestin de bases de datos, PHP (1995) al desarrollo web, etc.

Lenguajes clasificados por paradigmas de programacin: definiciones, ventajas y desventajas.


Los lenguajes de programacin pueden clasificarse empleando distintos mtodos y puntos de vista. Esta clasificacin se basa en el paradigma que utilizan. Se debe aclarar que existen muchos ms paradigmas y subparadigmas de programacin no incluidos dentro de los mencionados. Adems, todava hay conflictos en las definiciones y alcances de ciertos paradigmas.

Qu es un paradigma de programacin?
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. Todos estos lenguajes pueden ser clasicados en una jerarqua de familias a partir del modelo que siguen para denr y operar informacin (Figura 1), es decir, que pueden ser jerarquiza-dos segn el paradigma que siguen. En una primera clasicacin, se encuentran dos grandes grupos en donde es posible englobar casi todos los paradigmas de programacin conocidos hasta ahora. 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).

Fundamentos De Programacin

Paradigmas de la programacin

Tipos de paradigmas de programacin

Imperativo o por procedimientos: es considerado el ms comn y est representado, por ejemplo, por C, BASIC o Pascal Funcional: est representado por Scheme o Haskell. Este es un caso del paradigma declarativo. Lgico: est representado por Prolog. Este es otro caso del paradigma declarativo. Declarativo: por ejemplo la programacin funcional, la programacin lgica, o la combinacin lgico-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 prctica es habitual que se mezclen, dando lugar a la programacin multiparadigma. Actualmente el paradigma de programacin ms usado es el de la programacin orientada a objetos.

Programacin Imperativo o por Procedimientos.


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. La programacin imperativa, es un paradigma de programacin que 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. Los lenguajes imperativos de alto nivel usan variables y sentencias ms complejas, pero an siguen el mismo paradigma. Las recetas y las listas de revisin de procesos, a pesar de no ser programas de computadora, son tambin conceptos familiares similares en estilo a la programacin imperativa; cada paso es una instruccin, y el mundo fsico 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 cmo hay que resolver el problema y de las estructuras de datos necesarias para almacenar la informacin. Las caractersticas de estos tipos de lenguajes son las siguientes: Procedimentales: en el sentido de que describen cmo se ha de resolver el problema y no qu problema es.

Fundamentos De Programacin

Paradigmas de la programacin

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 sern los mismos, puesto que los datos de entrada siempre son los mismos. Necesitan de la existencia de un proceso que traduzca el cdigo al lenguaje que entiende la computadora (lenguaje mquina). Algortmicos: como ya se ha visto, expresan cmo resolver el problema mediante un algoritmo.

Programacin Funcional
El paradigma funcional considera al programa como una funcin matemtica, donde el dominio representara el conjunto de todas las entradas posibles (inputs) y el rango sera el conjunto de todas las salidas posibles (outputs). En los lenguajes tradicionales, la programacin consiste en indicar cmo resolver un problema mediante sentencias; en la programacin lgica, se trabaja de una forma descriptiva, estableciendo relaciones entre entidades, indicando no cmo, sino qu hacer. La programacin lgica encuentra su hbitat natural en aplicaciones de inteligencia, artificial o relacionadas:

Sistemas expertos, donde un sistema de informacin imita las recomendaciones de un experto sobre algn dominio de conocimiento. Demostracin automtica de teoremas, donde un programa genera nuevos teoremas sobre una teora existente. Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la informacin contenida en una expresin lingstica humana.

El lenguaje de programacin lgica por excelencia es Prolog, que cuenta con diversas variantes. La ms importante es la programacin lgica con restricciones (vase artculo sobre programacin con restricciones), que posibilita la resolucin de ecuaciones lineales adems de la demostracin de hiptesis. Estructuras bsicas: Prolog cuenta con dos tipos de estructuras: trminos y sentencias. Los trminos pueden ser constantes, variables o functores: > Las constantes, representadas por una cadena de caracteres, pueden ser nmeros o cualquier cadena que comience en minscula. > Las variables son cadenas que comienzan con una letra mayscula. Los functores son identificadores que empiezan con minscula, seguidos de una lista de parmetros (trminos) entre parntesis, separados por comas.

Fundamentos De Programacin

Paradigmas de la programacin

Las sentencias son reglas o clusulas. Hay hechos, reglas con cabeza y cola, y consultas. > Un hecho establece una relacin entre objetos, y es la forma ms objetos, y es la forma ms sencilla de sentencia. > Una regla permite definir nuevas relaciones a partir de otras ya existentes. Operadores MATEMATICOS Suma Resta Multiplicacin + * RELACIONALES < > >= Mayor que Menor que Mayor o igual que

Divisin (retorna siempre en punto / flotante) Divisin (trunca) Entera // Mod

=<

Menor o igual que

=:=

Aritmticamente Igual

Resto de Divisin Potenciacin

=\= **

Aritmticamente diferente

Programacin Lgico
El paradigma lgico diere de forma importante de otros paradigmas. No slo en su sintaxis o semntica, sino que en l la lgica representa conocimiento, el cual es manipulado mediante inferencias. A diferencia de los dems paradigmas, trabajar en este signica especicar qu hacer y no cmo hacerlo, por ello son llamados lenguajes declarativos. El proceso general de la programacin lgica es que a partir de un conjunto de reglas (axiomas) e inferencias podamos comprobar nuevas proposiciones que nos sean relevantes. Este proceso est basado en reglas de lgica de primer orden. Al ser un paradigma bastante abstracto vale la pena esclarecerlo a travs de algunos ejemplos. Aunque Prolog es el lenguaje ms representativo en este paradigma, har los ejemplos en Structured Query Language (SQL), un lenguaje para operar bases de datos y el cual representa otra de las aplicaciones de la programacin lgica.

10

Fundamentos De Programacin

Paradigmas de la programacin

Programacin Declarativa
Un lenguaje declarativo es un tipo de lenguaje de programacin basado ms en las matemticas y en la lgica que los lenguajes imperativos, ms cercanos estos al razonamiento humano. Los lenguajes declarativos no dicen cmo hacer una cosa, sino, ms bien, qu cosa hacer. A diferencia de los imperativos, no suele haber declaracin de variables ni tipos.

Programacin Orientada a Objetos


Programar bajo este paradigma es como tratar de simular o modelar los objetos del mundo real. Un objeto est compuesto por estados y mtodos. Los Estados son propiedades del objeto y estn representados por variables con valores nicos para cada objeto y que son llamadas variables de instancia. Los mtodos son representaciones de los comportamientos que el objeto es capaz de hacer. Las propiedades ms generales y formales de este paradigma: Encapsulamiento: Signica que el cdigo o datos de un objeto pueden estar ocultos para cualquier entidad externa a l. Herencia: La herencia es la propiedad de crear nuevos objetos a partir de la denicin de otros. Un objeto nuevo ser idntico al modelo que seguimos para crearlo, excepto por algunos cambios incrementales o redeniciones de sus estados o mtodos. Me gusta pensar en la taxonoma para ejemplicar esta propiedad. Pensemos en un zorro comn (Vulpes Vulpes, aqu a la derecha). Como se ve, esta especie pertenece al gnero Vulpes, el cual especica caractersticas como: tamao pequeo, crneo aplanado y el color de la punta de la cola generalmente distinto al resto del cuerpo. A su vez, este gnero esta contenido dentro de la familia Canidae , que se caracteriza por tener garras no retrctiles y caminar apoyndose nicamente en sus dedos. Todos los cnidos son al mismo tiempo miembros del orden Carnivora, el cual es bastante diverso y que en particular iene dientes y garras para cazar a otros animales, ojos que apuntan hacia el frente y,claro, un men donde la mayora de los platillos son carne. Y as ad nauseam...Ahora, supongamos que cada una de estas categoras es la denicin de un objeto. As, cualquier objeto del tipo Canidae Presentara todas las caractersticas de los objetos de donde fue heredado, es decir, que sera vertebrado, tendra dientes, garras y predileccin por la carne. No obstante, esto no sucedera a la inversa: un objeto del tipo Carnivora no necesariamente es pequeo o presenta la punta de la cola de un color diferente. Polimorsmo: Esencialmente, es la propiedad que le permite a un mtodo aceptar o devolver valores de ms de un tipo. Formalmente se dene as: Siendo M un mtodo y t 1 y t 2 son dos tipos de datos diferentes, M es polimrco si M puede ser ejecutado con el argumentot1: M (t 1) y el argumento t 2: M (t2) De la misma manera una funcin puede ser denida como polimrca si al llamarla mediante dos parmetros distintos, arroja un retorno de tipos diferentes. Invocacin Dinmica de Mtodos (Dynamic Method Binding): Se traduce en que cuando llamamos algn mtodo de un objeto estaremos ejecutando la operacin especca de ese objeto y no alguna implementacin de alguno de sus padres. Este paradigma hace posible el desarrollo modular de un
Fundamentos De Programacin

11

Paradigmas de la programacin

software, porque, hasta cierto grado, cada componente es independiente de los dems, lo que permite que estos componentes puedan ser reutilizados y reciclados, incluso, a lo largo de distintos proyectos. Es posible que esta modularidad haya colocado a la programacin orienta da a objetos en la posicin dominante en la que se encuentra ahora, dado que le ha permitido a la industria encontrar nuevas formas de trabajo y patrones de diseo ms productivos. Gran parte de los lenguajes ms utilizados hoy en da estn orientados a objetos, entre ellos se encuentran: Java, C++, PHP, Python, C#, Delphi, Ruby, D y Actionscript, entre otros.

Conclusin
Como conclusin, slo quiero recalcar que en la actualidad no existe una frontera bien denida para cada paradigma. Los lenguajes actuales, como Ruby, Actionscript oC# pueden ser mejor denidos como multiparadigmas. Involucran caractersticas dems de uno solo. Tambin quiero mencionar que estos cuatro paradigmas no son los nicos que existen y hay muchos otros que parecen relevantes, como la programacin a aspectos, o que han sido ampliamente usados, como la programacin a eventos. De cualquier forma, cualquier tipo de programacin involucra los elementos mencionados en este traba- jo. Finalmente, pienso que la comprensin de todos estos conceptos es signicativamente ms sencilla al ponerlos en prctica. As que si hay algo que an te parece misterioso e inexplicable una buena forma de resolverlo es programando.

12

Fundamentos De Programacin

Paradigmas de la programacin

Bibliografia
http://html.rincondelvago.com/lenguajes-de-programacion_10.html http://www.slideshare.net/yamili7/paradigmas-de-programacion http://jorgesaavedra.wordpress.com/2007/05/05/lenguajes-de-programacion/ http://www.larevistainformatica.com/historia-lenguajes-programacion.htm http://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3n http://es.scribd.com/doc/9174723/Paradigmas-de-Programacion http://giannicicero-udec.angelfire.com/

13

Fundamentos De Programacin

S-ar putea să vă placă și