Paradigma de programació
Un paradigma és una forma de representar i manipular el coneixement. Representa un enfocament particular o filosofia per a la construcció del programari. No és millor un que un altre, sinó que cada un té avantatges i desavantatges. També hi ha situacions on un paradigma resulta més apropiat que un altre.
Alguns exemples de paradigmes de programació:
- El paradigma imperatiu és considerat el més comú i està representat, per exemple, pel C o per BASIC..
- El paradigma funcional està representat per llenguatges com LISP, Scheme, Haskell..
- El paradigma lògic, un exemple és Prolog.
- El paradigma orientat a objectes. Un llenguatge completament orientat a objectes és Smalltalk.
Nota: La representació orientada a objectes millora l'estructura de les dades i per això s'ha aplicat a diferents paradigmes.
Si bé es pot seleccionar la forma pura d'aquests paradigmes al moment de programar, en la pràctica és habitual que es barregin. Així, llenguatges com C++, Delphi o Visual Basic combinen el paradigma imperatiu amb l'orientat a objectes.
Un altre exemple: Llenguatges com Scheme o Prolog, paradigma funcional i lògic respectivament, compten amb estructures repetitives. Aquestes són més pròpies del paradigma imperatiu que a la forma pura d'aquells.
Història[modifica]
Amb el temps s'han desenvolupat diferents disciplines de programació, sent identificades al moment o retrospectivament. Una de les primeres disciplines identificada com a tal va ser la programació estructurada, proposada des de mitjans dels anys 1960. El concepte de "paradigma de programació" com a tal data almenys del 1978, en la conferència del Premi Turing de Robert W. Floyd, titulada The Paradigms of Programming (Els Paradigmes de Programació), que cita la idea de paradigma de programació usada per Thomas Kuhn al seu llibre L'estructura de les revolucions científiques (The Structure of Scientific Revolutions) de 1962.
Codi màquina[modifica]
El nivell més baix dels paradigmes de programació és el codi màquina, que representa directament les instruccions (els continguts de la memòria del programa) com una seqüència de nombres, i el llenguatge d'assemblador on les instruccions són representades per mnemònics i adreces de memòria.
En els anys 1960, els llenguatges d'assemblador van ser desenvolupats per suportar la llibreria COPY, CALL a subrutines, variables externes i seccions comunes (globals), permetent reutilització de codi i aïllament del hardware fent servir operadors lògics com READ, WRITE, GET i PUT.
Llenguatges procedurals[modifica]
El següent avanç va ser el desenvolupament de llenguatges procedurals. Aquests llenguatge de tercera generació (el primer descrit com a llenguatges d'alt nivell) utilitzen vocabulari relacionat amb el problema que es resol.Per exemple:
- COBOL (COmmon Business Oriente Language) - fa servir termes com file, move i copy.
- FORTRAN (FORmula TRANslation) - fa servir terminologia del llenguatge matemàtic.
- ALGOL (ALGOritmic Language) - enfocat a ser un llenguatge apropiat per definir algoritmes, també fent servir llenguatge matemàtic.
- PL/I (Programing Language One) - un híbrid comercial/científic de propòsit general amb suport per punters.
- BASIC (Begginers All purpose Symbolic Instruction Code) - va ser desenvolupat per permetre escriure programes a més persones.
- C - un llenguatge de propòsit general.
Tots aquests llenguatges segueixen un paradigma procedural. Descriuen, pas a pas, exactament el procés que ha de ser seguit per resoldre un problema específic. L'eficàcia i eficiència de cada solució depenen en l'experiència, la inventiva i l'habilitat del programador.
Programació orientada a objectes[modifica]
Després de l'estès ús dels llenguatges procedurals, es van crear els llenguatges orientats a objectes com Simula, Smalltalk, C++, C#, Eiffel i Java. En aquests llenguatges, les dades i els mètodes per manipular-la es mantenen com una sola unitat anomenada objecte. L'única manera en què un usuari pot accedir a les dades és a través dels "mètodes" de l'objecte, com a conseqüència, el funcionament intern d'un objecte pot ser modificat sense afectar cap codi que fa servir l'objecte. Encara hi ha controvèrsia plantejada per Alexander Stepanov, Richard Stallman i altres programadors, sobre l'eficàcia del paradigma POO en comparació amb el paradigma procedural. La necessitat de cada objecte de tenir mètodes associatius porta a alguns escèptics a associar POO amb software inflat. El polimorfisme va ser desenvolupat com un intent per resoldre aquest dilema.
Com que la programació orientada a objectes és considerada un paradigma, i no un llenguatge, és possible fins i tot crear un llenguatge d'assemblador orientat a objectes. L'assemblador d'Alt Nivell (High Level Assembly) és un exemple d'això, que suporta completament els tipus de dades avançats.
Així, els diferents paradigmes de programació es poden veure més aviat com memes motivacionals dels seus defensors, en lloc de representar necessàriament el progrés d'un nivell al següent
. Les comparacions precises de l'eficàcia de paradigmes competidors sovint es fan més difícils a causa de la nova i diferent terminologia aplicada a entitats i processos similars, juntament amb nombroses distincions d'implementació entre idiomes.Suport per a múltiples paradigme[modifica]
La majoria de llenguatge de programaciós admeten més d'un paradigma de programació per permetre als programadors utilitzar l'estil de programació més adequat i les construccions de llenguatge associades per a un treball determinat.[1]
Referències[modifica]
- Nørmark, Kurt. Overview of the four main programming paradigms.
- Frans Coenen (1999-10-11). "Characteristics of declarative programming languages".
- Michael A. Covington (2010-08-23). "CSCI/ARTI 4540/6540: First Lecture on Symbolic Programming and LISP Arxivat 2012-03-07 a Wayback Machine." (PDF).
- Peter Van Roy (2009-05-12). "Programming Paradigms for Dummies: What Every Programmer Should Know" (PDF).
- Frank Rubin (March 1987). "'GOTO Considered Harmful' Considered Harmful" (PDF).
- Krishnamurthi, Shriram (novembre 2008). "Teaching programming languages in a post-linnaean age".
- Floyd, R. W. (1979). "The paradigms of programming".
Vegeu també[modifica]
- ↑ «Multi-Paradigm Programming Language». developer.mozilla.org. Mozilla Foundation. Arxivat de l'original el 21 August 2013.