Académique Documents
Professionnel Documents
Culture Documents
Contenido
1 Programacin declarativa ............................................................................................... 1 1.1 Carctersticas de los lenguajes de programacin declarativos.............................. 2 1.2 Desventajas de la programacin declarativa .......................................................... 2 1.3 Ventajas de la programacin declarativa................................................................ 2 1.4 Ejemplos de lenguajes declarativos........................................................................ 3 1.5 Versiones de programacin declarativa.................................................................. 3 1.5.1 Programacin lgica....................................................................................... 3 1.5.2 Programacin funcional.................................................................................. 3 1.5.3 Programacin orientada a bases de datos ....................................................... 4 Programacin imperativa................................................................................................ 5 2.1 Algunos lenguajes imperativos............................................................................... 5 2.2 Versiones de programacin imperativa .................................................................. 5 2.2.1 Lenguajes imperativos procedurales .............................................................. 5 2.2.2 Programacin estructurada ............................................................................. 6 2.2.3 Programacin modular ................................................................................... 8 2.2.4 Programacin orientada a objetos................................................................. 10 Diferencia entre lenguajes declarativos y lenguajes imperativos................................. 13 Conclusin .................................................................................................................... 14 Referencias bibliogrficas ............................................................................................ 14
3 4 5
1 Programacin declarativa
Se les conoce como lenguajes declarativos en ciencias computacionales a aquellos lenguajes de programacin en los cuales se le indica a la computadora qu es lo que se desea obtener o qu es lo que se esta buscando, por ejemplo: Obtener los nombres de todos los empleados que tengan ms de 32 aos. Eso se puede lograr con un lenguaje declarativo como SQL. La programacin declarativa es una forma de programacin que implica la descripcin de un problema dado en lugar de proveer una solucin para dicho problema, dejando la interpretacin de los pasos especficos para llegar a dicha solucin a un intrprete no especificado. La programacin declarativa adopta, por lo tanto, un enfoque diferente al de la programacin imperativa tradicional. En otras palabras, la programacin declarativa provee el "qu", pero deja el "cmo" liberado a la implementacin particular del intrprete. Por lo tanto se puede ver que la programacin declarativa tiene dos fases bien diferenciadas, la declaracin y la interpretacin. Es importante sealar que a pesar de hacer referencia a intrprete, no hay que limitarse a "lenguajes interpretados" en el sentido habitual del trmino, sino que tambin se puede estar trabajando con "lenguajes compilados".
La programacin declarativa es muy usada en la resolucin de problemas relacionados con inteligencia artificial, bases de datos, configuracin, y comunicacin entre procesos; sin embargo, ningn leguaje declarativo se aproxima en popularidad a los lenguajes imperativos.
conseguir lenguajes expresivos y matemticamente elegantes, en los que no sea necesario bajar al nivel de la mquina para describir el proceso llevado a cabo por el programa. Los programas escritos en un lenguaje funcional estn constituidos nicamente por definiciones de funciones, entendiendo stas no como subprogramas clsicos de un lenguaje imperativo (pues la programacin funcional es declarativa), sino como funciones puramente matemticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresin depende nicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos laterales. Otras caractersticas propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteracin (lo que obliga en la prctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas). Existen dos grandes categoras de lenguajes funcionales: los funcionales puros y los hbridos. La diferencia entre ambos estriba en que los lenguajes funcionales hbridos son menos dogmticos que los puros, al permitir conceptos tomados de los lenguajes imperativos, como las secuencias de instrucciones o la asignacin de variables. En contraste, los lenguajes funcionales puros tienen una mayor potencia expresiva, conservando a la vez su transparencia referencial, algo que no se cumple siempre con un lenguaje hbrido.
2 Programacin imperativa
En ciencias de la computacin se llama lenguajes imperativos a aquellos en los cuales se le ordena a la computadora cmo realizar una tarea siguiendo una serie de pasos o instrucciones, por ejemplo: Paso 1, solicitar nmero. Paso 2, multiplicar nmero por dos. Paso 3, imprimir resultado de la operacin. Paso 4, etc, El proceso anterior se puede realizar con un lenguaje imperativo como por ejemplo BASIC, C, C++, Java, Clipper, Dbase, C#, PHP, Perl, etc. Dentro de la programacin imperativa, se tiene un conjunto de instrucciones que le indican al computador cmo realizar una tarea. Los lenguajes imperativos se basan en comandos u rdenes que se le dan a la computadora para que haga algo, con el fin de organizar o cambiar valores en ciertas partes de la memoria. La ejecucin de estos comandos se realiza, en la mayor parte de ellos, secuencialmente, es decir, hasta que un comando no ha sido ejecutado no se lee el siguiente. Segn el dominio, o mejor dicho con el propsito que se utiliza el programa, se puede hablar de lenguajes de dominio especfico y de dominio general.
inicia con la primera lnea de cdigo, y sigue una ruta predefinida a travs de la aplicacin, llamando procedimientos segn sea necesario. Los lenguajes procedurales estn fundamentados en la utilizacin de variables para almacenar valores y en la realizacin de operaciones con los datos almacenados. Algunos ejemplos son: FORTRAN, PASCAL, C, ADA, ALGOL, En este tipo de lenguajes, la arquitectura consta de una secuencia de celdas, llamadas memoria, en las cuales se pueden guardar en forma codificada, lo mismo datos que instrucciones; y de un procesador, el cual es capaz de ejecutar de manera secuencial una serie de operaciones, principalmente aritmticas y booleanas, llamadas comandos. En general, un lenguaje procedural 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. Con un lenguaje procedural el usuario (normalmente ser un programador) especifica qu datos se necesitan y cmo obtenerlos. Esto quiere decir que el usuario debe especificar todas las operaciones de acceso a datos llamando a los procedimientos necesarios para obtener la informacin requerida. Estos lenguajes acceden a un registro, lo procesan y basndose en los resultados obtenidos, acceden a otro registro, que tambin deben procesar. As se va accediendo a registros y se van procesando hasta que se obtienen los datos deseados. Las sentencias de un lenguaje procedural deben estar embebidas en un lenguaje de alto nivel, ya que se necesitan sus estructuras (bucles, condicionales, etc.) para obtener y procesar cada registro individual.
Un programa estructurado se compone de funciones,segmentos, mdulos y/o subrutinas, cada una con una sola entrada y una sola salida. Cada uno de estos mdulos (an en el mismo programa completo), se denomina programa apropiado cuando, adems de estar compuesto slamente por las tres estructuras bsicas, tiene slo una entrada y una salida y en ejecucin no tiene partes por las cuales nunca pasa ni tiene ciclos infinitos. La PE tiene un teorema estructural o teorema fundamental, el cual afirma que cualquier programa, no importa el tipo de trabajo que ejecute, puede ser elaborado utilizando nicamente las tres estructuras bsicas ( secuencia, seleccin, iteracin ). Estructuras bsicas de control 1.- Secuencia
Indica que las instrucciones de un programa se ejecutan una despus de la otra, en el mismo orden en el cual aparecen en el programa. Se representa grficamente como una caja despus de otra, ambas con una sola entrada y una nica salida.
Las cajas A y B pueden ser definidas para ejecutar desde una simple instruccin hasta un mdulo o programa completo, siempre y cuando que estos tambin sean programas apropiados. 2.- Seleccin Tambin conocida como la estructura SI-CIERTO-FALSO, plantea la seleccin entre dos alternativas con base en el resultado de la evaluacin de una condicin o predicado; equivale a la instruccin IF de todos los lenguajes de programacin y se representa grficamente de la siguiente manera :
En el diagrama de flujo anterior, C es una condicin que se evala; A es la accin que se ejecuta cuando la evaluacin de este predicado resulta verdadera y B es la accin ejecutada cuando indica falso. La estructura tambin tiene una sola entrada y una sola salida; y las funciones A y B tambin pueden ser cualquier estructura bsica o conjunto de estructuras. 3.- Iteracin Tambin llamada la estructura HACER-MIENTRAS-QUE, corresponde a la ejecucin repetida de una instruccin mientras que se cumple una determinada condicin. El diagrama de flujo para esta estructura es el siguiente :
Aqu el bloque A se ejecuta repetidamente mientras que la condicin C se cumpla o sea cierta. Tambin tiene una sola entrada y una sola salida; igualmente A puede ser cualquier estructura bsica o conjunto de estructuras. Ventajas de la Programacin estructurada Con la programacin estructurada, elaborar programas sigue siendo una labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las siguientes ventajas: Los programas son ms fciles de entender. Un programa estructurado puede ser ledo en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lgica, lo cual es tpico de otros estilos de programacin. La estructura del programa es ms clara puesto que las instrucciones estn ms ligadas o relacionadas entre si, por lo que es ms fcil comprender lo que hace cada funcin. Reduccin del esfuerzo en las pruebas. El programa se puede tener listo para produccin normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas o depuracin (debugging) se facilita debido a la lgica ms visible, de tal forma que los errores se pueden detectar y corregir ms fcilmente. Reduccin de los costos de mantenimiento. Programas ms sencillos y ms rpidos. Aumento en la productividad del programador. Se facilita la utilizacin de las otras tcnicas para el mejoramiento de la productividad en programacin. Los programas quedan mejor documentados internamente.
resuelve mediante un algoritmo o mdulo ms o menos independiente del resto (de ah su nombre: programacin modular). Las ventajas de la programacin modular son varias: Facilita la comprensin del problema y su resolucin escalonada Aumenta la claridad y legibilidad de los programas Permite que varios programadores trabajen en el mismo problema a la vez, puesto que cada uno puede trabajar en uno o varios mdulos de manera bastante independiente Reduce el tiempo de desarrollo, reutilizando mdulos previamente desarrollados Mejora la fiabilidad de los programas, porque es ms sencillo disear y depurar mdulos pequeos que programas enormes Facilita el mantenimiento de los programas Es virtualmente imposible escribir un programa de grandes dimensiones si no procedemos a dividirlo en fragmentos ms pequeos, abarcables por nuestro pobre intelecto humano. La programacin modular y la estructurada no son tcnicas incompatibles, sino ms bien complementarias. La mayora de los programas que se desarrollan con lenguajes estructurados son, de hecho, estructurados y modulares al mismo tiempo. El mtodo consiste en dividir un problema complejo en subproblemas, y tratar cada subproblema del mismo modo, es decir, dividindolo a su vez en subproblemas. As sucesivamente hasta que obtengamos problemas lo suficientemente sencillos como para escribir algoritmos que los resuelvan. Llamaremos mdulo a cada uno de estos algoritmos que resuelven los problemas sencillos. Una vez resueltos todos los subproblemas, es decir, escritos todos los mdulos, es necesario combinar de algn modo las soluciones para generar la solucin global del problema. Esta forma de disear una solucin se denomina diseo descendente o top-down. No es la nica tcnica de diseo que existe, pero s la ms utilizada. El diseo descendente debe tener dos fases: La identificacin de los subproblemas ms simples y la construccin de algoritmos que los resuelvan (mdulos) La combinacin de las soluciones de esos algoritmos para dar lugar a la solucin global La mayora de lenguajes de programacin estructurada permiten aplicar tcnicas de diseo descendente mediante un proceso muy simple: independizando fragmentos de cdigo en subprogramas o mdulos denominados procedimientos y funciones En general, el problema principal se resuelve en un algoritmo que denominaremos algoritmo o mdulo principal, mientras que los subproblemas sencillos se resolvern en subalgoritmos, tambin llamados mdulos a secas. Los subalgoritmos estn subordinados al algoritmo principal, de manera que ste es el que decide en qu orden deben ejecutarse los subalgoritmo y con qu conjunto de datos.
El algoritmo principal realiza llamadas o invocaciones a los subalgoritmos, mientras que stos devuelven resultados a aqul. As, el algoritmo principal va recogiendo todos los resultados y puede generar la solucin al problema global
lenguajes son muy recientes en comparacin a los primeros lenguajes de programacin que aparecieron.
Los lenguajes imperativos describen paso a paso un conjunto de instrucciones que deben ejecutarse para variar el estado un programa y hallar la solucin, es decir, un algoritmo en el que se describen los pasos necesarios para solucionar un problema.
4 Conclusin
Los lenguajes de programacin no son simplemente un detalle ms del amplio mundo de la informtica, y por lo tanto deben ser vistos como el fundamento y la base del desarrollo y avance de la computacin. Estudiar los conceptos bsicos, clasificacin, diferencias, propiedades y funcionamiento de los lenguajes de programacin es elemental para cualquier estudiante o profesional dedicado a la computacin, pues de esa manera se logra tener una perspectiva global y mucho ms amplia que tendr mucho peso al estar bien documentados y al conocer qu son, cmo se clasifican y de qu manera trabajan los lenguajes de programacin. Luego del desarrollo de esta investigacin resulta fcil comprender los tipos y la clasificacin que se les da a los lenguajes de programacin en base a sus funcionalidades y caractersticas. Este estudio tambin permite desarrollar un sentido crtico de los lenguajes de programacin, de forma que el programador no seleccione ni emita un juicio respecto a determinado lenguaje basado simplemente en su limitado conocimiento ni basado en la popularidad de la que goza cierto lenguaje, sino que el programador est capacitado para dar razones contundentes y certeras del por qu un lenguaje es mejor que otro para determinada tarea, qu ventajas tiene uno respecto del otro, y que as tambin el programador sea capaz de seleccionar el lenguaje que ms le convenga para la resolucin de un problema determinado. Esta investigacin servir para evaluar correctamente los lenguajes de programacin, determinando las ventajas y desventajas que cada uno de ellos presenta.
5 Referencias bibliogrficas
Cejas, C.B; Crespillo, O.G.; Jimnez F., M.J.; Ramrez G., C.; Snchez G., C.; Snchez N., C. Tipos de Lenguajes de Programacin. Extrado el 29 de agosto, 2006 de Wikipedia. La enciclopedia libre. Programacin declarativa. Extrado el 29 de agosto, 2006 de http://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativa Concept&Development. Programacin declarativa. Extrado el 29 de agosto, 2006 de http://pviojo.net/posts/programacion-declarativa Sanders, Donald H.; Informtica Presente y Futuro. Tercera Edicin. McGrawHill; Naucalpn de Jurez, Mxico; 1990. Wikipedia. La enciclopedia libre. Programacin imperativa. Extrado el 29 de agosto, 2006 de http://es.wikipedia.org/wiki/Lenguajes_imperativos
Universidad Tecnolgica Nacional. Facultad Regional Tucuman. Lenguajes de Programacin. Extrado el 29 de agosto, 2006 de http://www.frt.utn.edu.ar/sistemas/paradigmas/lenguajes.htm Matta G., D.A. Tutorial Introduccin al Desarrollo de Aplicaciones con Visual Basic. Wikipedia. La enciclopedia libre. Programacin orientada a objetos. Extrado el 30 de agosto, 2006 de http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#La_Progra maci.C3.B3n_Orientada_a_Objetos_.28POO.29_como_soluci.C3.B3n Introduccin a la Programacin Lgica. Ingeniera Tcnica en Informtica de Sistemas. Departamento de Lenguajes y Ciencias de la Computacin. Universidad de Mlaga. Extrado el 30 de agosto, 2006 de http://72.14.209.104/search?q=cache:doHkGvx7wQIJ:www.lcc.uma.es/~lopez/apun tes/declasis/apuntes/introduccion/intro_sis4pp.pdf+programacion+declarativa+logic a&hl=es&gl=sv&ct=clnk&cd=6 Rossel, G. Programacin lgica. Extrado el 30 de agosto, 2006 de http://www.amzi.com/articles/code07_whitepaper.pdf#search=%22programacion% 20%20logica%22 Wikipedia. La enciclopedia libre. Programacin funcional. Extrado el 30 de agosto, 2006 de http://es.wikipedia.org/wiki/Programaci%C3%B3n_funcional Wikipedia. La enciclopedia libre. Base de datos. Extrado el 30 de agosto, 2006 de http://es.wikipedia.org/wiki/Base_de_datos#Tipos_de_bases_de_datos Wikipedia. La enciclopedia libre. Normalizacin de una base de datos. Extrado el 30 de agosto, 2006 de: http://es.wikipedia.org/wiki/Normalizaci%C3%B3n_de_una_base_de_datos
Autor: Edilberto Abdulio Baos Martnez. Jennifer Esmeralda Chacn Carranza. Jos Amilcar Chign Chegn Glenda Maritza Espaa Canalez. Jaime Oswaldo Montoya Guzmn http://jaimemontoya.googlepages.com El Salvador Santa Ana, 4 de septiembre de 2006.