Paradigmas de programación

martes, 17 de diciembre de 2013



"Desde muchos puntos de vista aprender a programar es toda una disciplina,  que requiere nuestro mejor tiempo y dedicación."

 

La principal razón por que las personas aprenden lenguajes y técnicas  de programación es utilizar la computadora  como una herramienta para resolver problemas.
Como hemos mostrado en publicaciones anteriores, la programación no es una ciencia  de conocimientos lineales, es decir, existen muchas ramas  en  las cuales podemos desempeñarnos.  Entre ellas aplicaciones web, móviles o de escritorio.
Primero que nada  debemos adquirir cientos conceptos y herramientas  básica para iniciar, a continuación mostrare algunos de ellos que son de mucha utilidad.

Paradigmas de programación:


Qué es un paradigma de programación?
Un paradigma es una forma de representar y manipular el conocimiento. Representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas.
Son modelos que describen cómo diseñar e implementar programas. Diferentes paradigmas dan lugar a diferentes técnicas de programación, lo cual no implica que ellos sean contradictorios, sino que más bien unos tienden a complementar otros, por lo que la programación actual tiende a ser multiparadigma. Los paradigmas se asemejan en que se apoyan en un diseño basado en abstracciones que corresponden a elementos en el problema de programación y que la implementación debe ser una colección de módulos preferentemente reutilizables.
Los paradigmas más utilizados son los siguientes. No estructurado, estructurado  procedural  y el paradigma orientado a objetos.

Paradigma Imperativo


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.

  • Ejecución secuencial de las instrucciones.
  • Uso de variables para representar localizaciones de memoria.
  • Uso de asignación para cambiar el valor de las variables muchas veces son llamadas procedurales.
Que se recoge también en la siguiente definición: “Un lenguaje de programación es Turing-completo si posee variables enteras, aritmética entera y ejecuta instrucciones secuencial mente, las que incluyen asignación, selección y ciclo (while)”.




Paradigma Declarativo


No se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso), sino que describe (declara) cómo es algo. En otras palabras, se enfoca en describir las propiedades de la solución buscada, dejando indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa solución. Es más complicado de implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solución de determinados problemas.

La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla (tan sólo se le indica a la computadora que es lo que se desea obtener o que es lo que se está buscando). No existen asignaciones destructivas, y las variables son utilizadas con transparencia referencial.
Aunque en la Programación Declarativa cabe más de un paradigma de programación, se ha optado por centrarla en el estudio de la denominada Programación Lógica, el cual está basado en el cálculo de proposiciones y sus relaciones lógicas.
La programación declarativa es un estilo de programación en el que el programador especifica qué debe computarse más bien que cómo deben realizarse los cómputos.
"programa = lógica + control" (Kowalski)
"algoritmos + estructuras de datos = programas" (Wirth)
El componente lógico determina el significado del programa mientras que el componente de control solamente afecta a su eficiencia.
La tarea de programar consiste en centrar la atención en la lógica dejando de lado el control, que se asume automático, al sistema.
La característica fundamental de la programación declarativa es el uso de la lógica como lenguaje de programación:
Un programa es una teoría formal en una cierta lógica, esto es, un conjunto de fórmulas lógicas que resultan ser la especificación del problema que se pretende resolver, y
la computación se entiende como una forma de inferencia o deducción en dicha lógica. Los principales requisitos que debe cumplir la lógica empleada son:
Disponer de un lenguaje que sea suficientemente expresivo.
Disponer de una semántica operacional (un mecanismo de cómputo que permita ejecutar los programas).
Disponer de una semántica declarativa que permita dar un significado a los programas de forma independiente a su posible ejecución.



Paradigma Estructurado


la programación se divide en bloques (procedimientos y funciones) que pueden o no comunicarse entre sí. Además la programación se
controla con secuencia, selección e iteración. Permite reutilizar código programado y otorga una mejor compresión de la programación. Es contrario al
paradigma inestructurado, de poco uso, que no tiene ninguna estructura, es simplemente un “bloque”, como por ejemplo, los archivos batch (.bat).
Se Escribe un programa de acuerdo a las siguientes reglas:

· El programa tiene un diseño modular.
· Los módulos son diseñados de modo descendente.
· Cada modulo se codifica utilizando las tres estructuras de

control básicas: secuencia, selección y repetición.

. También programar sin GO TO

La programación estructurada es el conjunto de técnicas que incorporan:
· Recursos abstractos,
· Diseño descendente (top-down),
· Estructuras básicas.

Diseño descendente 
Conocido también como top-down es el proceso por el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento.
Es decir se descomponen en etapas jerárquicas relacionadas por medio de las entradas y salidas de información.
A cada estructura se la puede considerar desde dos puntos de vista, que hace y como lo hace.

Estructuras de control 
Son métodos para especificar el orden en que las instrucciones de un algoritmo se ejecutaran. Dicho orden determina el flujo de control.

La programación estructurada hace mas fácil el escribir, verificar, leer y mantener un programa, utilizando un número limitado de estructuras que minimizan la complejidad de los programas.

Teorema de la programación estructurada 
1 Toda estructura posee un solo punto de entrada y uno solo de salida de la misma.
2 Existen varios caminos desde la entrada hasta la salida.
3 Todas las instrucciones pueden ser ejecutables en algún momento y no existen bucles infinitos o sin fin.



Paradigma Orientado a Objetos


está basado en la idea de encapsular estado y operaciones en objetos. En general, la programación se resuelve comunicando
dichos objetos a través de mensajes (programación orientada a mensajes). Se puede incluir -aunque no formalmente- dentro de este paradigma, el paradigma
basado en objetos, que además posee herencia y subtipos entre objetos. Ej.:
Simula, Smalltalk, C++, Java, Visual Basic .NET, etc.
Su principal ventaja es la reutilización de códigos y su facilidad para pensar soluciones a determinados problemas.
Su principal preocupación durante el desarrollo de programas es determinar los objetos que representarán, de una forma más adecuada, los elementos presentes en un problema, una vez determinados estos, se pasa a determinar cuáles con sus características o atributos principales y cuáles son las acciones (procedimientos) que son realizados con tales atributos y que por tanto caracterizan su comportamiento.
La programación orientada a objeto tiene como objetivos facilitar el desarrollo y comprensión de programas de gran porte y posibilitar la reutilización de código.
Las principales características que identifican a un lenguaje orientado a objeto son los conceptos de clases, herencia y polimorfismo.
A diferencia de otros paradigmas de programación, el paradigma orientado a objetos es tanto un estilo de programación como una metodología para el desarrollo de sistemas de computación.



Paradigma Funcional

este paradigma concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones.
Basa la descripción del cómputo en la evaluación de funciones o la aplicación de funciones a valores conocidos. Por ello se les llama a veces a los lenguajes de este paradigma como lenguajes aplicativos. Un lenguaje de programación funcional posee como mecanismo básico la evaluación de una función o el llamado de función.
Este abarca, junto a la evaluación de la función, el paso de valores como parámetros a la función y la obtención de resultados como valores retomados desde las funciones. El paradigma funcional no comprende la noción de variable o asignación a variables. Las operaciones repetitivas no son expresadas por ciclos (los que requieren variables de control para su terminación) sino por funciones recursivas.
El estudio de las funciones recursivas ha establecido la siguiente propiedad: "Un lenguaje de programación es Turing-completo si tiene valores enteros, funciones aritméticas sobre esos valores y se tiene un mecanismo para definir nuevas funciones usando funciones ya existentes, selección y recursión”

Paradigma lógico


Está basado en la lógica simbólica. En un lenguaje de programación lógica un programa consiste de un conjunto de enunciados que describen qué se cumple acerca del resultado deseado, contrario a dar una secuencia particular de instrucciones que tienen que ser ejecutadas en un orden fijo para dar el resultado.
Todo lo que necesita un programa lógico es establecer las propiedades del cómputo. Por ello a la programación lógica se le reconoce a menudo como una forma de programación declarativa ya que son declaradas propiedades y no secuencias de ejecución.



0 comentarios :

Publicar un comentario

 
Taller de desarrollo c++ © 2013 | Designed by Alexander C.P , in collaboration with cienciaeducacion100 , Ciencias y Sistemas and cienciaeducacion100@gmail.com