Sei sulla pagina 1di 6

Conceptos bsicos Programacin CONCEPTOS BSICOS Cada lenguaje de programacin es una creacin y como tal ha sido cuidadosamente diseado.

Algunos lenguajes han sido diseados por personas nicas, como por ejemplo Pascal. Otros, han sido diseados por un grupo grande de personas, tales como PL/l y Ada. La experiencia sugiere que aquellos lenguajes diseados por personas nicas o grupos pequeos, tienden a ser ms compactos y coherentes que aquellos lenguajes diseados por grandes grupos.

Un lenguaje de programacin, digno de su nombre, debe reunir ciertos requisitos. El lenguaje de programacin debe ser universal. Es decir, cualquier problema debe tener una solucin que puede ser programada en el lenguaje y dicha solucin ser implementada en cualquier computador. Este requisito es uno de los ms fuertes y pocos lenguajes lo poseen. Se dice que cualquier lenguaje en el cual pueden definirse funciones recursivas se considera universal. De otro lado, un lenguaje sin recursin ni iteracin no puede ser universal. Existen ciertos lenguajes de aplicacin que no son universales, pero s podran ser razonablemente descritos as mismos, como lenguajes de programacin. El lenguaje de programacin debe ser implementable en una computadora, es decir; debe ser posible ejecutar un programa en trminos del lenguaje en cualquier mquina. La notacin matemtica generalmente no es implementable porque en su notacin es posible formular problemas que no pueden ser resueltos por cualquier computador. Los lenguajes naturales tampoco son implementables por razones totalmente diferentes: ellos son tan imprecisos y tienden a ser muy ambiguos. SINTAXIS Y SEMNTICA Cada lenguaje tiene sintaxis y semntica: La sintaxis de un lenguaje de programacin est relacionada con la forma de los programas, por ejemplo, como es que las expresiones, comandos, declaraciones, etc. son puestos juntos en un programa. La semntica de un lenguaje de programacin est relacionada con el significado de los programas; por ejemplo, cmo ellos se comportarn cuando se ejecutan en una computadora.

La sintaxis de un lenguaje influye en cmo los programas son escritos por el programador, ledos por otro programador y traducidos por el computador. La semntica de un lenguaje determina como los programas son compuestos por el programador, entendidos por otros programadores e interpretados por el computador. La sintaxis es importante; pero la semntica es ms importante an

PARADIGMAS DE LA PROGRAMACIN Para que una computadora realice una tarea, debe programrsela para que lo haga colocando en la memoria principal un algoritmo apropiado el cual es expresado en lenguaje mquina. En los inicios de la programacin, esta tarea era gravosa por lo laborioso y difcil de disear cada algoritmo. Sin contar los errores en que se podra incurrir. El gran paso se dio cuando se empez a dar el uso fcil de las operaciones de memoria a los diversos cdigos de operacin y a los operandos del lenguaje de mquina. Con esto, los programadores pudieron aumentar considerablemente la comprensibilidad de las secuencias de instrucciones mquina.

Un paradigma de programacin es una propuesta tecnolgica que es adoptada por una comunidad de programadores cuyo ncleo central es incuestionable en cuanto a que explcitamente trata de resolver uno o varios problemas claramente delimitados. La resolucin de estos problemas debe suponer consecuentemente un avance significativo en al menos un parmetro que afecte a la ingeniera de software. Tiene una estrecha relacin con la formalizacin de determinados lenguajes en su momento de definicin. Un paradigma de programacin est delimitado en el tiempo en cuanto a aceptacin y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente. Ejemplo: Probablemente el paradigma de programacin que actualmente es el ms usado a todos los niveles es la orientacin a objeto. El ncleo central de este paradigma es la unin de datos y procesamiento en una entidad llamada "objeto", relacionable a su vez con otras entidades objeto.

Tipos de paradigmas de programacin


Programacin imperativa La programacin imperativa, en contraposicin a la programacin declarativa 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. La implementacin de hardware de la mayora de computadores es imperativa; prcticamente todo el hardware de los computadores est diseado para ejecutar cdigo de mquina, que es nativo al computador, escrito en una forma imperativa. Esto se debe a que el hardware de los computadores implementa el paradigma de las Mquinas de Turing. Desde esta perspectiva de bajo nivel, el estilo del programa est definido por los contenidos de la memoria, y las sentencias son instrucciones en el lenguaje de mquina nativo del computador (por ejemplo el lenguaje ensamblador). Programacin lgica La programacin lgica consiste en la aplicacin del corpus de conocimiento sobre lgica para el diseo de lenguajes de programacin; no debe confundirse con la disciplina de la lgica computacional. La programacin lgica es un tipo de paradigmas de programacin dentro del paradigma de programacin declarativa. El resto de los subparadigmas de programacin dentro de la programacin declarativa son: programacin funcional, programacin basada en restricciones, programas DSL e hbridos. La programacin lgica gira en torno al concepto de predicado, o relacin entre elementos. La programacin funcional se basa en el concepto de funcin de corte ms matemtico. Programacin funcional En computacin, la programacin funcional es un paradigma de programacin declarativa basado en la utilizacin de funciones aritmticas que no maneja datos mutables o de estado. Enfatiza la aplicacin de funciones, en contraste con el estilo de programacin imperativa, que enfatiza los cambios de estado. La programacin funcional tiene sus races en el clculo lambda, un sistema formal desarrollado en los 1930s para investigar la definicin de funcin, la aplicacin de las funciones y la recursin. Muchos lenguajes de programacin funcionales pueden ser vistos como elaboraciones del clculo lambda. Los lenguajes de programacin funcional, especialmente los que son puramente funcionales, han sido enfatizados en el ambiente acadmico principalmente y no tanto en el desarrollo de software comercial. Lenguajes de uso especfico usados comnmente como SQL y Lex/Yacc, utilizan algunos elementos de programacin funcional, especialmente al procesar valores mutables. Las hojas de clculo tambin pueden ser consideradas lenguajes de programacin funcional. La programacin funcional tambin puede ser desarrollada en lenguajes que no estn diseados especficamente para la programacin funcional. En el caso de Perl, por ejemplo, que es un lenguaje de programacin imperativo, existe un libro que describe cmo aplicar conceptos de programacin funcional. JavaScript, uno de los lenguajes ms ampliamente utilizados en la actualidad, tambin incorpora capacidades de programacin funcional.

Programacin declarativa

La Programacin Declarativa, es un paradigma de programacin que est basado en el desarrollo de programas especificando un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solucin. La solucin es obtenida mediante mecanismos internos de control, sin especificar exactamente cmo encontrarla. No existen asignaciones destructivas, y las variables son utilizadas con Transparencia referencial Programacin estructurada La programacin estructurada es una forma de escribir programas de ordenador (programacin de computadora) de manera clara. Para ello utiliza nicamente tres estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la instruccin o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN). Hoy las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existentes en los aos atrs, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones. Programacin dirigida por eventos La programacin dirigida por eventos es un paradigma de programacin en el que tanto la estructura como la ejecucin de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen. Para entender la programacin dirigida por eventos, podemos oponerla a lo que no es. El creador de un programa dirigido por eventos debe definir los eventos que manejarn su programa y las acciones que se realizarn al producirse cada uno de ellos, lo que se conoce como el administrador de evento. Los eventos soportados estarn determinados por el lenguaje de programacin utilizado, por el sistema operativo e incluso por eventos creados por el mismo programador. En la programacin dirigida por eventos, al comenzar la ejecucin del programa se llevarn a cabo las inicializaciones y dems cdigo inicial y a continuacin el programa quedar bloqueado hasta que se produzca algn evento. Cuando alguno de los eventos esperados por el programa tenga lugar, el programa pasar a ejecutar el cdigo del correspondiente administrador de evento. Por ejemplo, si el evento consiste en que el usuario ha hecho clic en el botn de play de un reproductor de pelculas, se ejecutar el cdigo del administrador de evento, que ser el que haga que la pelcula se muestre por pantalla. Programacin modular La programacin modular es un paradigma de programacin que consiste en dividir un programa en mdulos o subprogramas con el fin de hacerlo ms legible y manejable. Se presenta histricamente como una evolucin de la programacin estructurada para solucionar problemas de programacin ms grandes y complejos de lo que sta puede resolver. Al aplicar la programacin modular, un problema complejo debe ser dividido en varios subproblemas ms simples, y estos a su vez en otros subproblemas ms simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fcilmente con algn lenguaje de programacin. sta tcnica se llama refinamiento sucesivo, divide y vencers o anlisis descendente (Top-Down). Programacin orientada a objetos La programacin orientada a objetos o POO es un paradigma de programacin que usa objetos y sus interacciones, para disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a objetos. Programacin con restricciones La Programacin con restricciones es un paradigma de la programacin en informtica, donde las relaciones entre las variables son expresadas en trminos de restricciones (ecuaciones). Actualmente es usada como una tecnologa de software para la descripcin y resolucin de problemas combinatorios particularmente difciles, especialmente en las reas de planificacin y programacin de tareas sea la calendarizacin.

Programacin a nivel funcional

La programacin a nivel funcional es unos de los dos paradigmas contrastantes identificados por John Backus en su trabajo sobre los Programas como objetos matemticos, siendo el otro la programacin a nivel de valores. Un programa de nivel funcional no necesita la nocin de variable, dado que las variables, que son elemento esencial en las definiciones a nivel de valores no hacen falta en el nivel funcional. En el estilo de programacin de nivel funcional los programas se escriben como combinacin de otros programas con la ayuda de las operaciones de construccin de programas o funcionales. Bajo este enfoque los programas, con los funcionales como operadores, forman un espacio matemtico. Programacin Orientada a Aspectos La Programacin Orientada a Aspectos (POA) es un paradigma de programacin relativamente reciente cuya intencin es permitir una adecuada popularizacin de las aplicaciones y posibilitar una mejor separacin de incumbencias. Gracias a la POA se pueden encapsular los diferentes conceptos que componen una aplicacin en entidades bien definidas, eliminando las dependencias entre cada uno de los mdulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la dispersin del cdigo y las implementaciones resultan ms comprensibles, adaptables y reusables. Varias tecnologas con nombres diferentes se encaminan a la consecucin de los mismos objetivos y as, el trmino POA es usado para referirse a varias tecnologas relacionadas como los mtodos adaptativos, los filtros de composicin, la programacin orientada a sujetos o la separacin multidimensional de competencias.

CUADRO COMPARATIVO Paradigmas ms utilizados.


PROG ORIENTADA A OBJETOS Encapsula datos y mtodos en objetos que estn relacionados entre s. La unidad de programacin es la clase PROGRAMACION ESTRUCTURADA Estn orientados acciones a PROGRAMACION IMPERATIVA CARACTERISTICAS Lenguajes de programacin imperativos son: BASIC, C, C++, JAVA, C# Describen paso a paso un conjunto de instrucciones que deben ejecutarse para variar el estado un programa y hallar la solucin. En contra de la programacin declarativa. PROGRAMACION LOGICA Es simple PROG. A NIVEL FUNCIONAL Ausencia colaterales de efectos

La unidad de programacin es la funcin.

Se acerca mucho a las especificaciones del problema realizada con lenguajes formales

Proceso de depuracin menos problemtico

Consta de una estructura donde se va ejecutando paso a paso. Debe tener una secuencia y lgica para que sea eficiente.

Es moderna y es una evolucin de programacin estructurada. Se basa en lenguajes que soportan sintctica y semnticamente la unin entre los tipos abstractos de datos. Pretender resolver un problema identificando los actores que tienen participacin en el problema e identificando sus acciones. No pueden ser modelados con exactitud por el modelo de objetos. Si se fuerza el lenguaje en la POO se pierden algunas caractersticas de los lenguajes utilices funcionales. No puede coincidir con la visin de otro programador. Y requieren una extensa documentacin.

Un sistema tendr una estructura y una buena presentacin. Facilidad de comprensin del contenido y se facilita el chequeo de la codificacin y reducir el tiempo de prueba y depuracin de programas. Es una programacin de alta precisin como nunca antes haba sido lograda. Bajo costo

Sencillez elegancia

potencia

Pruebas de unidades ms confiables Mayor facilidad para ejecucin concurrente. la

Metodologa rigurosa especificacin

de

Sencillez en implementacin estructuras complejas

la de

Principal inconveniente es que se obtiene un nico bloque de programa, que cuando se hace demasiado grande puede resultar problemtico su manejo.

DESVENTAJAS Al permitir y depender de efectos colaterales, y uso de variables globales dificulta notablemente la depuracin y paralizacin y la habilidad para dividir el trabajo en mucho hilos.

Poco eficiente

Se basa en el clculo lambda en lugar de la mquina de turing.

Poco utilizado aplicaciones reales.

en

Resulta alejado del modelo de la mquina de von Neum ann y la eficiencia de ejecucin de los interpretes de lenguajes funcionales no es comparable con la ejecucin de los programas imperativos pre compilados,. Las variables solo pueden tener asignado un solo valor a lo largo de la ejecucin del programa.

RESUMEN: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). 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.

Potrebbero piacerti anche