Paradigma de programación

Un **paradigma de programación** ye una propuesta teunolóxica adoptada por una comunidá de programadores y desarrolladores que'l so nucleu central ye incuestionable en cuantes que namái trata de resolver unu o dellos problemes claramente delimitados; la resolución d'estos problemes tien de suponer consecuentemente una meyora significativa en siquier un parámetru qu'afecte a la inxeniería de software.

Un paradigma de programación representa un enfoque particular o filosofía pa diseñar soluciones. Los paradigmes difieren unos d'otros, nos conceutos y la forma de abstraer los elementos arreyaos nun problema, según nos pasos qu'integren la so solución del problema, n'otres pallabres, el cómputu.

Tien una estrecha rellación cola formalización de determinaos llinguaxes nel so momentu de definición. Ye un estilu de programación emplegáu.

Un paradigma de programación ta delimitado nel tiempu tocantes a aceptación y usu, porque nuevos paradigmes apurren nueves o meyores soluciones que la sustitúin parcial o totalmente.

El paradigma de programación qu'anguaño ye'l más utilizáu ye la "orientación a oxetos" (OO). El nucleu central d'esti paradigma ye la unión de datos y procesamientu nuna entidá llamada "oxetu", relacionable de la mesma con otres entidaes "oxetu".

Tradicionalmente, datos y procesamientu dixebráronse n'árees distinta del diseñu y la implementación de software. Esto provocó que grandes desarrollos tuvieren problemes de fiabilidá, caltenimientu, adautación a los cambeos y escalabilidad. Cola OO y carauterístiques como'l encapsulado, polimorfismu o l'heriedu, dexóse una meyora significativa nel desenvolvimientu de software a cualquier escala de producción. La OO paez tar amestada nos sos oríxenes con llinguaxes como Lisp y Asemeya, anque'l primeru qu'acuñó'l títulu de "programación empobinada a oxetos" foi Smalltalk.

## Tipos más comunes de paradigmes de programación

Polo xeneral la mayoría son variantes de los dos tipos principales, imperativa y declarativa:

* Programación imperativa o por procedimientos: ye'l más usáu polo xeneral, basar en dar instrucciones al ordenador de como faer les coses en forma d'algoritmos. La programación imperativa ye la más usada y la más antigua, l'exemplu principal ye'l llinguaxe de máquina. Exemplos de llinguaxes puros d'esti paradigma seríen el C, BASIC o Pascal.
* Programación empobinada a oxetos: ta basada nel imperativu, pero encapsula elementos denominaos oxetos qu'inclúin tanto variables como funciones. Ta representáu por C++, C#, Java o Python ente otros, pero'l más representativu sería'l Smalltalk que ta dafechu empobináu a oxetos.
* Programación dinámica: ta definida como'l procesu de romper problemes en partes pequeñes p'analizalos y resolvelos de forma lo más cercana al óptimo, busca resolver problemes n'O(n) ensin usar por tanto métodos recursivos. Esti paradigma ta más basáu na manera de realizar los algoritmos, polo que puede usase con cualquier llinguaxe imperativu.
* Programación empobinada por eventos: la programación empobinada por eventos ye un paradigma de programación nel que tanto la estructura como la execución de los programes van determinaos polos sucesu qu'asocedan nel sistema, definíos pol usuariu o qu'ellos mesmos provoquen.
* Programación declarativa: ta basáu en describir el problema declarando propiedaes y regles que tienen de cumplise, en llugar d'instrucciones. Hai llinguaxes pa la programación funcional, la programación lóxica, o la combinación lóxicu-funcional. Unos de los primeros llinguaxes funcionales fueron Lisp y Prolog.
* Programación funcional: basada na definición los predicaos y ye de corte más matemáticu, ta representáu por Scheme (una variante de Lisp) o Haskell. Python tamién representa esti paradigma.
* Programación lóxica: basáu na definición de rellaciones lóxiques, ta representáu por Prolog.
* Programación con restricciones: similar a la lóxica usando ecuaciones. Casi tolos llinguaxes son variantes del Prolog.
* Programación multiparadigma: ye l'usu de dos o más paradigmes dientro d'un programa. El llinguaxe Lisp considérase multiparadigma. Al igual que Python, que ye Programación empobinada a oxetos empobináu a oxetos, reflexivu, imperativu y funcional.
* Llinguaxe específicu del dominiu o DSL: denominar asina a los llinguaxes desenvueltos pa resolver un problema específicu, pudiendo entrar dientro de cualquier grupu anterior. El más representativu sería SQL pal manexu de les bases de datos, de tipu declarativo, pero hai imperativos, como'l Logo.

Magar puede escoyese la forma pura d'estos paradigmes al momentu de programar, na práutica ye habitual que s'entemezan, dando llugar a la programación multiparadigma o llinguaxes de programación multiparadigma.

## Ver tamién

* Computación en nube
* Paradigma
* Programación a nivel de valores (John Backus)
* Programación a nivel funcional (John Backus)
* Programación con restricciones
* Programación declarativa
* Programación empobinada por eventos
* Programación estructurada
* Programación funcional
* Programación imperativa
* Programación lóxica
* Programación modular
* Programación empobinada a aspeutos
* Programación empobinada a componentes
* Programación empobinada a oxetos

## Referencies