procés de dissenyar, codificar, depurar i mantenir el codi font de programes computacionals From Wikipedia, the free encyclopedia
La programació d'ordinadors o programació informàtica (sovint abreujat programació o codificació) és el procés d'escriure, provar, depurar/solucionar problemes, i mantenir el codi font de programes. Aquest codi font està escrit en un llenguatge de programació. El codi pot ser una modificació d'una font existent o una cosa completament nova. L'objectiu de la programació és crear un programa que mostra un determinat comportament desitjat (personalització). El procés d'escriure el codi font sovint requereix experiència en molts temes diferents, incloent coneixement de l'àmbit d'aplicació, dels algorismes especialitzats i lògica formal.[1]
Dins d'enginyeria de programari, la programació (la implementació) es considera com una fase en un procés de desenvolupament de programari.
Hi ha un debat en curs sobre en quina mesura l'escriptura de programes és un art, un ofici o una disciplina d'enginyeria.[2] En general, la bona programació es considera que és l'aplicació mesurada dels tres, amb l'objectiu de produir una solució de programari eficient i capaç d'evolucionar (els criteris d'«eficiència» i «evolució» varien considerablement). La disciplina es diferencia de moltes altres professions tècniques, ja que els programadors, en general, no necessiten ser llicenciats o passar per qualsevol proves de certificació estandarditzades (o regulatització governamental) per anomenar-se a si mateixos «programadors» o fins i tot «enginyers de programari». No obstant això, pel fet que la disciplina abasta moltes àrees, que pot o no incloure aplicacions crítiques, és discutible la concessió d'una llicència per a la professió en el seu conjunt. En la majoria dels casos, la disciplina és autoregulada per les entitats que requereixen la programació, i de vegades ambients molt estrictes es defineixen (per exemple, l'ús d'AdaCore a la Força Aèria dels Estats Units i habilitacions de seguretat).
Un altre debat en curs és el grau en què el llenguatge de programació utilitzat per escriure programes informàtics afecta la forma que el programa final pren. Aquest debat és anàloga al que envolta la hipòtesi de Sapir-Whorf en la lingüística,[lower-alpha 1] que postula que la natura d'un idioma parlat determinat influeix en el pensament habitual dels seus parlants. Diferents patrons del llenguatge produeixen diferents patrons de pensament. Aquesta idea desafia la possibilitat de representar el món a la perfecció amb el llenguatge, perquè reconeix que els mecanismes de qualsevol llenguatge condicionen els pensaments de la seva comunitat parlant.
Dit d'una altra manera, la programació és l'art de transformar requeriments en alguna cosa que un ordinador pot executar.
La primera màquina programable (és a dir, màquina de la qual les possibilitats d'ús canvien quan es modifica el seu «programa») és, probablement, el teler de Jacquard, que es va completar el 1801. La màquina utilitzava una sèrie de cartrons perforats. Els forats indicaven el patró que el teler seguia per realitzar un teixit; amb targetes diferents, el teler produïa teixits diferents. Aquesta innovació ha estat llavors millorada per Herman Hollerith d'IBM per al desenvolupament de les famoses targetes perforades d'IBM.
El 1936, la publicació de l'article seminal de la ciència informàtica On Computable Numbers with an Application to the Entscheidungsproblem per Alan Mathison Turing,[4] va posar en marxa la creació de l'ordinador programable. Ell presenta la seva màquina de Turing, el primer ordinador programable universal, i inventa els conceptes i les condicions de programació i programa.
Els primers programes informàtics eren realitzats amb un soldador i un gran nombre de tubs de buit (més tard, transistors). Fent-se els programes més complexos, allò s'ha fet gairebé impossible, perquè un sol error tornava el programa sencer inutilitzable. Amb els avenços en emmagatzematge de dades, es fa possible carregar el programa a partir de targetes perforades, contenint la llista de les instruccions en codi binari específic per a un tipus particular d'ordinador. Augmentant la potència dels ordinadors, se'ls va utilitzar per fer els programes, els programadors preferint, naturalment escriure el text, més que com conjunts de 0 i d'1, deixant que la màquina mateixa va fer la traducció. Amb el temps, nous llenguatges de programació han aparegut, fent cada vegada més l'abstracció del maquinari sobre el qual s'hauria d'executar els programes. Això aporta beneficis en diversos aspectes: aquests llenguatges són més fàcils d'aprendre, un programador pot produir un codi més ràpidament, i els programes produïts es poden executar en diferents màquines.
Diferents llenguatges de programació admeten estils diferents de programació (anomenats paradigmes de programació). L'elecció del llenguatge utilitzat està subjecte a moltes consideracions, com la política de l'empresa, l'adequació a la tasca, la disponibilitat de paquets de tercers, o preferència individual. Idealment, el llenguatge de programació més adequat per a la tasca en qüestió serà seleccionat. Les compensacions d'aquest ideal impliquen trobar prou programadors que coneixen el llenguatge per construir un equip, la disponibilitat de compiladors per a aquell llenguatge i l'eficiència amb què executen els programes escrits en un llenguatge donat. Els llenguatges formen un espectre aproximat des de «baix nivell» a «alt nivell»; els llenguatges de «baix nivell» són típicament més orientats cap a les màquines i més ràpids d'executar, mentre que els llenguatges d'«alt nivell» són més abstractes i més fàcils d'usar, però executen amb menys rapidesa.
Allen Downey, al seu llibre How To Think Like A Computer Scientist («Com pensar com un informàtic»),[5] escriu:
« | Els detalls semblen diferents en llenguatges diferents, però unes poques instruccions bàsiques apareixen en gairebé tots els llenguatges:
|
» |
Molts llenguatges de programació proporcionen un mecanisme per cridar funcions proporcionades per llibreries. Sempre que les funcions en una llibreria segueixin les convencions de temps d'execució apropiades (per exemple, el mètode de passar arguments), llavors aquestes funcions es poden escriure en qualsevol altre llenguatge.
Un Algoritme és una seqüència no ambigua, finita i ordenada d'instruccions que han de seguir-se per a resoldre un problema. Un programa normalment implementa (tradueix a un llenguatge de programació concret) un o més algoritmes. Un algoritme pot expressar-se de diferents maneres: de forma gràfica, com un diagrama de flux, en forma de codi, com per exemple el pseudocodi, o de forma explicativa amb el llenguatge de programació.
Els programes acostumen a dividir-se en parts menors, anomenades mòduls, de manera que la complexitat algorítmica de cadascuna d'aquestes parts és menor que la del programa complet, cosa que ajuda al desenvolupament del programa. Aquesta és una pràctica molt utilitzada i és coneguda amb el nom de "refinament progressiu".
Segons Niklaus Wirth, un programa està format pels algoritmes i l'estructura de dades.
La programació pot seguir molts enfocaments o paradigmes, és a dir, diverses maneres de formular la resolució d'un problema donat. Alguns dels principals paradigmes de la programació son:
El programa escrit en un llenguatge de programació d'alt nivell (fàcilment comprensible pel programador) es anomenat codi font i no es pot executar directament en un ordinador. L'opció més comú és compilar el programa obtenint un mòdul objecte, tot i que també por executar-se de manera més directe a través d'un intèrpret informàtic.
El codi font del programa ha de sotmetre's a un procés de traducció per a convertir-lo a llenguatge maquina o bé a un codi intermedi, generant així un mòdul denominat "objecte". Aquest procés és anomenat compilació.
Habitualment la creació d'un programa executable (un típic Exe per a Microsoft Windows o DOS) comporta dos pasos. El primer pas és diu compilació (pròpiament dit) i tradueix el codi font (escrit en un llenguatge de programació) que es troba emmagatzemat en un arxiu de text a codi en baix niell (normalment codi objecte, no directament a llenguatge de màquina). El segon pas es diu enllaç en el qual s'enllaça el codi de baix nivell generat de tots els fitxers i subprogrames que s'han fet compilar i s'hi afegeix el codi de les funcions que hi ha a les biblioteques del compilador per a que el executable pugui comunicar-se directament amb el sistema operatiu. D'aquesta manera es tradueix finalment el codi objecte a llenguatge de màquina i es genera un mòdul executable.
Aquests dos pasos es poden fer per separat, emmagatzemant el resultat de la fase de compilació en arxius objecte (un típic .o per Unix, .obj per MS-Windows, DOS); per enllaçar-los en fases posteriors o crear directament l'executable. D'aquesta manera la fase de compilació pot emmagatzemar-se només de forma temporal. Un programa podria tenir parts escrites en diferents llenguatges, com per exemple, Java, C, C++ i assemblador, que es podrien compilar de forma independent i desprès enllaçar junts per formar un únic mòdul executable.
Article principal: Enginyeria de programari
Existeix la tendència a identificar el procés de creació d'un programa informàtic amb la programació, cosa que és certa quan es tracta de programes petits per a us personal però que dista de la realitat quan es tracta de grans projectes.
El procés de creació d'un programari, des del punt de vista de la enginyera, inclou mínimament els següents pasos:
L'enginyeria de programari se centra en els pasos de planificació i disseny del programa, mentre que antigament la realització d'un programa consistia quasi únicament en escriure el codi sota tan sols el coneixement dels requisits i amb una modesta fase d'anàlisi i disseny.
La programació ha de perseguir l'obtenció de programes de qualitat. Per a això s'estableixen una serie de factors que determinen la qualitat d'un programa. Alguns dels factors de qualitat més importants són els següents:
El terme cicle de la vida del software descriu el desenvolupament de software, des de la fase inicial fins a la fase final, incloent-hi el seu estat funcional. El propòsit es definir les diferents fases intermedies que es requereixen per validar el desenvolupament de l'aplicació, és a dir, per garantir el softw
are compleixi els requisits per a l'aplicació i verificació dels procediments de desenvolupament. S'assegura de que tots els mètodes utilitzats siguin apropiats. Aquests mètodes s'originen en el fet que és molt car rectificar els errors que es detecten tard dins la fase d'implementació (programació pròpiament dita), o pitjor encara, durant la fase funcional. El model de cicle de la vida permet que els errors es detectin el més aviat possible i, per tant, permet als desenvolupadors centrar-se en la qualitat del software, en les dates d'implementació i en els costos associats. El cicle de vida bàsic d'un software consta de, almenys, els següents procediments.
L'ordre i la presencia de cadascun d'aquests procediments dins el cicle de vida d'una aplicació depenen del tipus de model de cicle de vida acordat entre el client i l'equip de desenvolupadors. En el cas del software lliure es té un cicle de vida molt més dinàmic a causa que molts programadors treballen simultàniament desenvolupant les seves aportacions.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.