llenguatge de programació From Wikipedia, the free encyclopedia
El llenguatge de programació C, llenguatge C o llenguatge de programació de sistemes, va ser creat per Dennis Ritchie i Ken Thompson als Laboratoris Bell d'AT&T, a principis de la dècada dels 70. C està basat en un llenguatge que havia creat Ken Thompson anomenat llenguatge B el 1970. El llenguatge C es va crear per la necessitat de tenir-ne un que fos més flexible que l'assemblador a l'hora de programar, però que mantingués la característica de ser un llenguatge proper a la màquina. En la seva absència, el llenguatge C es va fer per a poder crear el sistema operatiu Unix. Actualment, C és el llenguatge més utilitzat per a desenvolupar sistemes operatius i altres tipus de programari bàsic, i també per aplicacions en general. El llenguatge C++ es va desenvolupar a partir de C.
Tipus | llenguatge de programació imperatiu, llenguatge de programació procedural, llenguatge de programació estructurada, Llenguatge de programació compilat, llenguatge de programació i terme de ciències de la computació |
---|---|
Data de creació | 1972[1] |
Disseny | Dennis Ritchie |
Desenvolupador | Kenneth L. Thompson, Dennis Ritchie & Bell Labs (creadors); ANSI X3J11 (ANSI C) ISO/IEC JTC1/SC22/WG14 (ISO C) |
Paradigma de programació | llenguatge imperatiu, programació estructurada i programació procedimental |
Darrera versió estable | C11 /desembre de 2011 |
Tipus de dades | estàtic, feble, manifest i nominal |
Majors implementacions | múltiples, per exemple GCC, Intel C |
Dialectes | Cyclone |
Influenciat per | B (BCPL, CPL), ALGOL 68,[1] Assemblador, PL/I, FORTRAN |
Ha influenciat | AMPL, AWK, csh, C++, C--, C#, Objective-C, BitC, D, Go, Rust, Java, JavaScript, Limbo, LPC, Perl, PHP, Pike, Processing, Seed7, Verilog (HDL)[2] |
Sistema operatiu | multiplataforma |
Extensió dels fitxers | .c ,.h |
Etiqueta d'Stack Exchange | Etiqueta |
Pàgina web | iso.org… |
C és apreciat per l'eficiència del codi que produeix i és el llenguatge de programació més popular per crear programari de sistemes, tot i que també s'utilitza per crear aplicacions.
Es tracta d'un llenguatge dèbilment tipat de mig nivell però amb moltes característiques de baix nivell. Disposa de les estructures típiques dels llenguatges d'alt nivell però, també disposa de construccions del llenguatge que permeten un control a molt baix nivell. Els compiladors solen oferir extensions al llenguatge que possibiliten barrejar codi en assemblador amb codi C o accedir directament a memòria o a dispositius perifèrics. Algunes de les seves instruccions són molt semblants a altres llenguatges, incloent sentències com if, else, for, do, while...[3]
La primera estandardització del llenguatge C fou en ANSI, amb l'estàndard X3.159-1989. El llenguatge que defineix aquest estàndard fou conegut vulgarment com a ANSI C. Posteriorment, el 1990, fou ratificat com a estàndard ISO (ISO/IEC 9899:1990). L'adopció d'aquest estàndard és molt àmplia, així que, si els programes creats el segueixen, el codi és portable entre plataformes i/o arquitectures. En la pràctica, els programadors solen utilitzar elements no-portables dependents del compilador o del sistema operatiu.
Les principals característiques del llenguatge C són:
Un programador consta d'un o més mòduls, és a dir, fitxers fonts.
Cada mòdul pot contenir:
Cada funció pot incloure:
Cada bloc pot tenir:
Cada sentència està determinada per ;
Cada bloc de sentències es tanca entre claus {. . . }.
La funció denominada main és la primera en ser executada.
Els comentaris poden aparèixer en qualsevol lloc del codi font i es poden insertar:
/*x*/
. Per exemple, /*aquí dins s'insereix el text del comentari*/
.//
i el final de la línia. Per exemple, //aquí dins s'insereix el text del comentari
.[5]Existeixen 3 versions principals de C:
Aquest programa escriu "Hola món" al dispositiu de sortida de defecte (habitualment el monitor).
#include <stdio.h>
int main(void)
{
printf("Hola, món!\n");
return 0;
}
La primera línia del programa consisteix en una directiva del preprocesador, indicada per #include
. Això provoca que el preprocessador -la primera eina a examinar el codi durant la compilació- substitueixi tota la línia pel contingut complet del fitxer de capçalera stdio.h que conté les declaracions de les funcions estàndards d'entrada i sortida com printf
.
La següent línia indica que s'està definint una funció amb el nom de main
que retornarà un valor de tipus enter i que no accepta cap paràmetre.
Els claudàtors delimiten un bloc de codi, en aquest cas a l'anar precedits de la declaració de la funció main
, correspon a la seva definició.
La primera línia del bloc de definició de main
és printf("Hola, món!\n")
; Aquesta línia indica que s'ha de cridar una funció printf
i s'ha de passar com argument a aquesta funció la cadena "Hola, món!\n"
. La funció printf
forma part de la llibreria de funcions estàndard de C i s'encarrega d'imprimir la cadena que se li passa com argument, per la sortida estàndard que sol ser la pantalla. El caràcter \n
indica que s'ha de fer un salt de línia i retorn de carro després d'imprimir la cadena.
Per acabar la línia següent indica que s'ha de retornar el valor 0. Aquest valor es retorna al procés que ha cridat el programa -sol ser el sistema operatiu- indicant en aquest cas absència d'errors en l'execució.
El desenvolupament inicial de C es va dur a terme en els Laboratoris Bell d'AT&T entre 1969 i 1973; segons Dennis Ritchie, el període més creatiu va tenir lloc el 1972.[6] Se li va donar el nom "C" perquè moltes de les seves característiques van ser preses d'un llenguatge anterior anomenat "B".
Hi ha moltes llegendes sobre l'origen de C i el sistema operatiu amb què està íntimament relacionat, Unix. Algunes són:
El 1973, el llenguatge C s'havia tornat tan potent que la major part del kernel Unix, originalment escrit en el llenguatge assemblador PDP-11, va ser reescrita a C.[6] Aquest va ser un dels primers nuclis de sistema operatiu implementats en un llenguatge diferent de l'assemblador. (Alguns casos anteriors són el sistema Multics, escrit a PL/I, i Master Control Program per al B5000 de Burroughs, escrit en ALGOL el 1961 ).
Fet principalment per a la fluïdesa de programació en sistemes Unix. Es pot fer servir també per al desenvolupament d'altres sistemes operatius com ara Windows o GNU/Linux. Igualment per a aplicacions d'escriptori com a GIMP, el principal llenguatge de programació del qual és C.
De la mateixa manera, és molt usat en aplicacions científiques (per a experiments informàtics, físics, químics, matemàtics, entre d'altres, part d'ells coneguts com a models i simuladors), industrials (indústria robòtica, cibernètica, sistemes d'informació i base de dades per a la indústria petroliera i petroquímica, predominen també tot el que es refereix a simulació de màquines de manufactura), simulacions de vol (és la més delicada, ja que s'han d'usar massa recursos tant de hardware com de software per desenvolupar aplicacions que permetin simular el vol real d'una aeronau). S'aplica per tant, en diverses àrees desconegudes per gran part dels usuaris novells.
Els ordinadors de finals dels 90 són diversos ordres de magnitud més potents que les màquines en què C es va desenvolupar originalment. Programes escrits en llenguatges de tipus dinàmic i fàcil codificació (Ruby, Python, Perl...) que antany haguessin resultat massa lents, són prou ràpids com per desplaçar en ús a C Tot i així, es pot seguir trobant codi C en grans desenvolupaments d'animacions, modelats i escenes en 3D a pel·lícules i altres aplicacions multimèdia.
Actualment, els grans projectes de programari es divideixen en parts dins d'un equip de desenvolupament. Aquelles parts que són més "burocràtiques" o "de gestió" amb els recursos del sistema, se solen realitzar en llenguatges de tipus dinàmic o de guió (script), mentre que aquelles parts "crítiques", per la seva necessitat de rapidesa d'execució, es realitzen en un llenguatge de tipus compilat, com C o C++. Si, després de fer la divisió, les parts crítiques no superen un cert percentatge del total (aproximadament el 10%) llavors tot el desenvolupament es fa amb llenguatges dinàmics. Si la part crítica no arriba a complir les expectatives del projecte, es comparen les alternatives d'una inversió en nou maquinari davant d'invertir en el cost d'un programador perquè reescrigui aquesta part crítica.
C és el llenguatge comú per programar sistemes integrat. El codi lleuger que un compilador C genera, combinat amb la capacitat d'accés a capes del programari properes al maquinari són la causa de la seva popularitat en aquestes aplicacions.
Una característica on C demostra comoditat dús particularment valuosa en sistemes embeguts és la manipulació de bits. Els sistemes contenen registres mapejats en memòria (en anglès, MMR) a través dels quals els perifèrics es configuren. Aquests registres barregen diverses configuracions a la mateixa adreça de memòria, encara que en bits diferents. Amb C és possible modificar fàcilment un d'aquests bits sense alterar la resta. Per exemple:
int *mmr; /* punter al registre que volem modificar */
mmr = 0x40008ABC; /* adreça de memòria del registre */
* mmr |= 1 << 7; /* posa a 1 el bit 8 sense modificar els altres */
* mmr &= ~(1 << 12) /* posa a 0 el bit 13 sense modificar els altres */
Aquest tipus de manipulació és molt tediosa o senzillament impossible en altres llenguatges d'alt nivell, atès que s'utilitzen operacions comunes del llenguatge assemblador com les bitwise operacions a nivell bit OR, AND, SHL i CPL però que estan disponibles al llenguatge C.
Altres característiques de C considerades desavantatges en la programació per a PC -com l'absència de control de memòria automàtic- es converteixen en avantatges quan els sistemes encastats necessiten codi petit i optimitzat. Aquest és el cas dels sistemes basats en microcontroladors de poca potència com l'intel 8051 o molts sistemes ARM.
El llenguatge de programació C és molt petit. No obstant això, moltes de les tasques es poden desenvolupar mitjançant la biblioteca C. Es pot utilitzar per:
En els sistemes UNIX la informació sobre les diverses funcions de la biblioteca es troba disponible en la documentació en línia.
La documentació en línia d'una funció indica, a part de la sintaxis d'aquesta funció, si és necessari algun tipus de fitxer include o cal indicar alguna llibreria addicional.
Per tal d'assignar memòria s'utilitza void *malloc(size_t size):
Quan ja no es necessita la memòria assignada amb malloc, es pot desassignar a partir de void free (void *ptr).[5]
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.