# Lengatge de programacion

Un lengatge de programacion es un ensemble de notacions (caractèrs, simbòls...) e de règlas destinadas a produrre leis instruccions aplicadas per un ordinator. Coma per una lenga naturala, un lengatge de programacion es compausat d'un alfabet, d'un vocabulari, d'una gramatica e d'un environament permetent de tradurre sa sintaxi dins un autre lengatge. Aquelei lengatges son apareguts après la Segonda Guèrra Mondiala per facilitar la programacion informatica.

## Cronologia

1950 : invencion dau premier lengatge d'assemblatge per la còla de M.V. Wilkes (1913-2010) que trabalhava sus la concepcion de l'EDSAC.
1954-1957 : concepcion dau FORTRAN per una còla menada per John Backus (1924-2007). Puslèu destinat au calcul scientific e au calcul numeric, foguèt lo premier lengatge de programacion que conoguèt un succès important. Regularament més a jorn, es totjorn utilizat a l'ora d'ara.
1956 : concepcion de l'IPL per Allen Newell (1927-1992), Cliff Shaw (1922-1991) e Herbert A. Simon (1916-2001). Redigit dins un estile lengatge d'assemblatge, èra lo premier lengatge de tipe declaratiu.
1958 : invencion de Lisp, premier lengatge de tipe declaratiu que conoguèt lo succès. Uei, es totjorn fòrça utilizat per la programacion d'intelligéncias artificialas.
1959 : concepcion dau COBOL a l'iniciativa dau Pentagòn que voliá crear un lengatge adaptat au desvolopament d'aplicacions de gestion. Uei, es totjorn fòrça utilizat dins lo sector de la banca e de l'administracion.
1965 : invencion dau lengatge Basic destinat a l'aprendissatge de la programacion informatica. Adaptat ai microordinators en 1974, es desenant un estandard de la microinformatica. En 1969, foguèt concebut lo Pascal, una version pus poderosa dau Basic qu'es subretot utilizat dins leis universitats.
1972 : concepcion dau lengatge C, un lengatge imperatiu de nivèu bas que foguèt inicialament imaginat per facilitar l'escritura d'Unix. Dins aquò, sei possibilitats importantas de contraròtle sus la maquina ne'n foguèron un lengatge popular. Uei, es la basa de lengatges frequentament adoptats coma C++, C#, Java o PHP.
1973 : a l'Universitat de Marselha-Lumini, sortida de la premiera version de Prolog. Premier lengatge declaratiu de tipe logic, es fòrça utilizat per la programacion d'intelligéncias artificialas.
1979 : per respòndre a una demanda dau ministèri de la Defensa deis Estats Units, concepcion dau lengatge Ada. Es un estandard mondiau dins lei domenis espaciaus e militars.
1991 : sortida de la premiera version de Python, un lengatge polivalent permetent d'escriure de programas de tipe imperatiu, declaratiu o orientats objèctes.

## Principi d'un lengatge de programacion

Coma lei lengas utilizadas per la comunicacion umana (occitan...), lei lengatges de programacion son de sistèmas d'expression e de comunicacion. Pasmens, coma son destinats a èsser comprés per de maquinas, presentan d'adaptacions especificas coma lo remplaçament dei frasas per de programas. De mai, fau nòtar que totei lei lengatges utilizats per comunicar amb un ordinator son pas considerats coma de lengatges de programacion. Per aquò, lo lengatge dèu aver un caractèr pron universau per li permetre d'exprimir totei lei tractaments algoritmics realizables per una maquina. Per exemple, es lo cas dei lengatges SQL (que permet de formular de requistas dins de basas de donadas) o Java que permet de facilitar la redaccion d'aplicacions.

## Nivèus de lengatge
### Lengatges maquina

Lei lengatges maquina (o lengatges de bas nivèu) son compausats d'instruccions destinadas a èsser executadas per una maquina. Per aquò, son fachs d'un ensemble de combinasons de nombres binaris 0 e 1. Sus lei premierei generacions d'ordinators, aquelei lengatges èran l'unic biais que permetiá d'escriure un programa. Pasmens, la complexitat d'aqueu pretzfach entraïnèt lo desvolopament de lengatges de nivèu superior destinats a facilitar lo trabalh de programacion. Per aquò, foguèron concebuts de programas especiaus que son cargats d'assegurar la traduccion entre lei nivèus diferents de lengatge.

### Lengatges d'assemblatge

Apareguts dins leis ans 1950, lei lengatges d'assemblatge son lo premier nivèu de lengatge de programacion au dessüs dau lengatge maquina. Permet de remplaçar lei combinasons de nombres binaris per de notacions simbolicas. La traduccion d'un tau lengatge es dich assemblatge. Pasmens, aqueu tipe de lengatge despend generalament de la familha d'ordinators a l'origina de son desvolopament. De mai, sa lectura demòra complèxa per un èsser uman.

### Lengatges evoluits

Lei lengatges evoluits son de lengatges de nivèu aut que son independents de la maquina e que pòdon èsser aisament legits e comprés per d'èssers umans. Per aquò, permèton de gropar un ensemble d'operacions elementàrias de bas nivèu dins una instruccion unica. Per exemple, ofrisson la possibilitat de realizar una operacion matematica sensa se preocupar dei detalhs de transferiments d'informacions entre la memòria centrala e lo processor
Per assegurar la traduccion entre lei lengatges de nivèu aut e lo còdi maquina (lengatge maquina o lengatge d'assemblatge), foguèron desvolopats de programas especiaus dichs compilators o interpretators. Lei compilators pòdon tradurre tot lo programa d'origina en produsent dirèctament una version executabla. Leis interpretators son pus simplistas car permèton unicament de traduccion e d'executar leis instruccions a cha una. Pasmens, son pus aisats de concebre.

## Tipes de lengatge
### Lengatges algoritmics

Lei lengatges algoritmics (o imperatius) son basats sus l'usatge d'algoritmes e sus l'execucion d'instruccions a cha una. Un ensemble d'instruccions de contraròtle permet de susvelhar l'òrdre d'execucion deis instruccions. Uei, aqueu tipe de lengatge es preponderant dins lo domeni de la programacion. D'exemples de lengatges de programacion d'aquela categoria son lo BASIC, lo Pascal e lo C.

### Lengatges declaratius

Lei lengatges declaratius (o descriptius) son basats sus un concèpte de definicion de foncions (programacion foncionala) e de relacions (programacion logica). Dins lo premier cas, lo programa es donc fondat sus lo calcul de foncions matematicas e, dins lo segond, sus la verificacion d'elements logics considerats coma verais o faus a partir d'un ensemble d'axiòmas, de requistas e de règlas de deduccion. D'exemples de lengatges de programacion d'aquela familha son lo LISP e lo PROLOG.
En causa de sa capacitat de tractar d'objèctes e de relacions complèxas, aquelei lengatges son l'objècte de recèrcas importantas dins lo quadre dau desvolopament d'intelligéncias artificialas.

### Programacion « orientada objèctes »

Coma lei lengatges declaratius, lei lengatges de programacion « orientats objèctes » son una avançada importanta. Permèton de copar un gròs programa en moduls separats gràcias ai nocions d'objècte e d'eiretatge. Un objècte contèn lei variables e lei foncions que regardan un subjècte. L'eiretatge permet de tornar utilizar un còdi. D'exemples de lengatges d'aqueu grop son lo Simula e lo C++.
Aquelei lengatges presentan d'interès importants dins l'industria informatica modèrna car permèton de concenbre pus aisament d'aplicacions importantas. Son usatge es donc a se desvolopar.

### Parallelisme

Lo parallelisme es un ensemble de tecnicas que permèton l'utilizacion simultanèa de mai d'un microprocessor. Aquò permet d'aumentar lei performàncias deis ordinators mai engendra de problemas particulars en matèria de programacion. De lengatges dedicats son donc estats imaginats coma HPF.

## Annèxas
### Liames intèrnes

* Algoritme.
* Basic.
* C.
* COBOL.
* FORTRAN.
* Lengatge.
* Lengatge d'assemblatge.
* Lengatge maquina.
* Lisp.
* Maquina.
* Ordinator.
* Programa.
* Prolog.
* Python.
* Tecnologias de l'informacion.

### Bibliografia

* (en) Harold Abelson e Gerald Jay Sussman, Structure and Interpretation of Computer Programs (2nd ed.), MIT Press, 1996.
* (en) Daniel P. Friedman, Mitchell Wand e Christopher T. Haynes, Essentials of Programming Languages, MIT Press, 2001.
* (en) David Gelernter e Suresh Jagannathan, Programming Linguistics, MIT Press, 1990.
* (en) Bruce J. MacLennan, Principles of Programming Languages: Design, Evaluation, and Implementation, Oxford University Press, 1999.
* (en) Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002.
* (en) Terrence W. Pratt e Marvin V. Zelkowitz, Programming Languages: Design and Implementation (4th ed.), Prentice Hall, 2000.
* (en) Peter Van Roy e Seif Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004.
* (en) David A. Watt, Programming Language Design Concepts, John Wiley & Sons, 2004.