Los paradigmas de programacin son la forma, que determinan los mtodos y
las herramientas que un programador usara en la construccin de un software. Mayormente los lenguajes de programacin estn basados en uno o ms paradigmas, ha estos se les puede llamar multiparadigmas. Tambin menciona los diferentes tipos de paradigmas que se conocen, pero solamente se hace referencia a los ms importante ya que suelen haber muchos ms que no se mencionaran en esta investigacin. Los paradigmas de programacin indica un mtodo de realizar cmputos y la manera en que se deben estructurar y organizar las tareas que debe llevar a cabo un programa; los paradigmas fundamentales estn asociados a determinados modelos de cmputo, tambin se asocian a un determinado estilo de programacin y los lenguajes de programacin suelen implementar, a menudo de forma parcial, varios paradigmas. Los paradigmas fundamentales estn basados en diferentes modelos de cmputo y por lo tanto afectan a las construcciones ms bsicas de un programa como la divisin principal reside en el enfoque imperativo (indicar el cmo se debe calcular) y el enfoque declarativo (indicar el qu se debe calcular). Adems, el enfoque declarativo tiene varias ramas diferenciadas como el paradigma funcional, el paradigma lgico, la programacin reactiva y los lenguajes descriptivos entre otros paradigmas se centran en la estructura y organizacin de los programas, y son compatibles con los fundamentales como por ejemplos: Programacin estructurada, modular, orientada a objetos, orientada a eventos, programacin genrica. Por ltimo, existen paradigmas asociados a la concurrencia y a los sistemas de tipados. Un lenguaje de programacin puede soportar distintos paradigmas de programacin con el objetivo de que un programador utilice el ms conveniente a la hora de resolver un problema. Ningn paradigma es capaz de resolver todos los problemas de forma sencilla y eficiente, por lo tanto, es til poder elegir entre distintos estilos de programacin dependiendo del tipo de problema. Tambin hay lenguajes que permiten mezclar los paradigmas que, en principio, pareceran irreconciliables. Se debe aclarar que hay subparadigmas que se incluyen en paradigmas ms generales, pero hay otros que utilizan mtodos de programacin totalmente distintos entre s e igualmente hay lenguajes que los combinan. Por ejemplo, el lenguaje Oz emplea programacin lgica, funcional, orientada a objeto y otras. Lenguajes como Delphi, C++ y Visual Basic combinan el paradigma imperativo, el procedural y el orientado a objetos. Incluso lenguajes ms puros en sus paradigmas como prolog (paradigma lgico) o scheme (paradigma funcional) poseen estructuras iterativas tpicas de los lenguajes de paradigma imperativo. Empezamos con los paradigmas Imperativos los cuales se describen cmo deben realizarse en el clculo, no el porqu, entonces es un cmputo consistente en una serie de sentencias, ejecutadas segn un control de flujo explcito, que modifican el estado del programa. Las variables son celdas de memoria que contienen datos (o referencias), pueden ser modificadas, y representan el estado del programa. Tenemos tambin el paradigma declarativo el cual se describe como se debe calcular, sin explicitar el cmo. No existe un orden de evaluacin prefijado y las variables son nombres asociados a definiciones, y una vez instanciadas son inmutables. Pero no existe sentencia de asignacin tambin el control de flujo suele estar asociado a la composicin funcional, la recursividad o tcnicas de reescritura y unificacin. Los programas que podemos clasificar como lgicos, son aquellos que estn basados en premisas y que a partir de esas reglas (supuestos verdaderos), el programa nos retorna un valor verdadero. Con este paradigma de programacin, es muy sencillo modelar un programa, basado en lgica matemtica. Adems, se puede escribir cdigo ms legible y eficiente, lo que hace ms sencilla la tarea de dar mantenimiento al programa. Por ejemplo, tenemos a prolog que es un lenguaje de programacin lgica, este lenguaje se basa en un conjunto de hechos y de reglas. Su forma de trabajo, consiste en realizar una pregunta, para obtener por inferencia los resultados, los cuales deduce a partir de la relacin entre las premisas y las reglas. Por otro lado, tenemos la programacin orientada a objetos, como su nombre lo indica, es toda aquella que se basa en la construccin de objetos y sus mtodos, para que puedan interactuar entre ellos. Este tipo de programacin se basa principalmente en el diseo del sistema y utiliza varias tcnicas; entre las ms utilizadas podemos encontrar: herencia, polimorfismo y encapsulamiento, un ejemplo de este seria Java el cual es un lenguaje de programacin orientada a objetos, en este lenguaje podemos encontrar muchas de las caractersticas que conforman a la programacin orientada a objetos. Tenemos tambin los paradigmas Funcionales que concibe a la computacin como la evaluacin de funciones matemticas y evita declarar y cambiar datos. En otras palabras, hace hincapi en la aplicacin de las funciones y composicin entre ellas, ms que en los cambios de estados y la ejecucin 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. En conclusin, los paradigmas juegan un papel importante en el mundo de la programacin ya que a travs de esta nos podemos hacer planteamientos para desarrollar un software. Tambin nos estructuran nuestra programacin y nos dicen cmo resolver el problema si a travs de sentencias lgicas o matemticas. Por ltimo, se pueden comprender mejor las diferentes definiciones de cada tipo de paradigmas. Los lenguajes de programacin a veces pueden tener influencias de otros tipos de paradigmas.