Història i característiques del llenguatge C
Upcoming SlideShare
Loading in...5
×
 

Història i característiques del llenguatge C

on

  • 167 views

Història i característiques del llenguatge C.

Història i característiques del llenguatge C.

Més manuals a: http://www.exabyteinformatica.com

Statistics

Views

Total Views
167
Views on SlideShare
167
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Història i característiques del llenguatge C Història i característiques del llenguatge C Document Transcript

  • Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaHistòria i característiques del llenguatge CC és un llenguatge orientat a la implementació de Sistemes Operatius, concretament Unix. Cés apreciat per leficiència del codi que produeix i és el llenguatge de programació més popularper crear programari de sistemes, encara que també sutilitza per crear aplicacions.Es tracta dun llenguatge feblement tipificat de mig nivell però amb moltes característiques debaix nivell. Disposa de les estructures típiques dels llenguatges dalt nivell però, al seu torn,disposa de construccions del llenguatge que permeten un control a molt baix nivell. Elscompiladors solen oferir extensions al llenguatge que possibiliten barrejar codi en assembladoramb codi C o accedir directament a memòria o dispositius perifèrics.Un dels objectius de disseny del llenguatge C és que només siguin necessàries unes poquesinstruccions en llenguatge màquina per traduir cada element del llenguatge, sense que facimancada un suport intens en temps dexecució. És molt possible escriure C a baix nivelldabstracció; de fet, C es va usar com a intermediari entre diferents llenguatges.La història inicial de C es va dur a terme en els Laboratoris Bell de AT&T entre 1969 i 1973;segons Ritchie, el període més creatiu va tenir lloc el 1972. Se li va donar el nom "C" perquèmoltes de les seves característiques van ser preses dun llenguatge anterior anomenat "B".Hi ha moltes llegendes sobre lorigen de C i el sistema operatiu amb el qual està íntimamentrelacionat, Unix. Algunes delles són:• El desenvolupament de C va ser el resultat del desig dels programadors de jugar amb SpaceTravel. Havien estat jugant en el mainframe de la seva companyia, però a causa de la seva pocacapacitat de procés i en haver de suportar 100 usuaris, Thompson i Ritchie no tenien suficientcontrol sobre la nau per evitar col·lisions amb els asteroides. Per aquest motiu van decidirportar el joc a un PDP-7 de loficina que no sutilitzava; però aquesta màquina no tenia sistemaoperatiu, així que van decidir escriure’n un. Finalment van decidir portar el sistema operatiudel PDP-11 que hi havia en la seva oficina, però era molt costós, doncs tot el codi estava escriten llenguatge assemblador. Llavors van decidir usar un llenguatge dalt nivell i portàtil perquèel sistema operatiu es pogués portar fàcilment dun ordinador a un altre. Van considerar usarB, però mancava de les funcionalitats necessàries per aprofitar algunes característiquesavançades del PDP-11. Llavors van començar a crear un nou llenguatge, C.• La justificació per obtenir lordinador original que es va usar per desenvolupar Unix va sercrear un sistema que automatitzés larxiu de patents. La versió original dUnix es vadesenvolupar en llenguatge assemblador. Més tard, el llenguatge C es va desenvolupar perpoder reescriure el sistema operatiu.Al 1973, el llenguatge C shavia tornat tan potent que la major part del kernel Unix,originalment escrit en el llenguatge assemblador PDP-11/20, va ser reescrita en C. Aquest vaser un dels primers nuclis de sistema operatiu implementats en un llenguatge diferent alassemblador. (Alguns casos anteriors són el sistema Multics, escrit en PL/I, i Master ControlProgram per al B5000 de Burroughs, escrit en ALGOL en 1961).Al 1978, Ritchie i Brian Kernighan van publicar la primera edició del llenguatge de programacióC, també conegut com La bíblia de C. Aquest llibre va ser durant anys lespecificació informaldel llenguatge. El llenguatge descrit en aquest llibre rep habitualment el nom de "el C deKernighan i Ritchie" o simplement "K&R C" (La segona edició del llibre cobreix lestàndard ANSIC, descrit més a baix.)Kernighan i Ritchie van introduir les següents característiques al llenguatge:
  • Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | Exatienda• El tipus de dades struct.• El tipus de dades long int.• El tipus de dades unsigned int.• Els operadors =+ i =- van ser substituïts per += i -= per eliminar lambigüitat semànticadexpressions com a i=-10, que es podria interpretar bé com a i =- 10 o bé com a i = -10.El C de Kernighan i Ritchie és el subconjunt més bàsic del llenguatge que un compilador deusuportar. Durant molts anys, fins i tot després de la introducció del ANSI C, va ser considerat"el mínim comú denominador" en el qual els programadors havien de programar quandesitjaven que els seus programes fossin transportables, doncs no tots els compiladorssuportaven completament ANSI, i el codi raonablement ben escrit en K&R C és també codiANSI C vàlid.En aquestes primeres versions de C, les úniques funcions que necessitaven ser declarades sisusaven abans de la definició de la funció eren les que retornaven valors no sencers. És a dir,es pressuposava que una funció que susava sense declaració prèvia (prototip) retornaria unsencer.Les característiques amb les quals explica aquest llenguatge són:Propietats• Un nucli del llenguatge simple, amb funcionalitats afegides importants, com a funcionsmatemàtiques i de maneig darxius, proporcionades per biblioteques.• És un llenguatge molt flexible que permet programar amb múltiples estils. Un dels mésemprats és lestructurat "no portat a lextrem" (permetent certes llicències de ruptura).• Un sistema de tipus que impedeix operacions sense sentit.• Usa un llenguatge de preprocessat, el preprocessador de C, per a tasques com definir macrosi incloure múltiples arxius de codi font.• Accés a memòria de baix nivell mitjançant lús de punters.• Interrupcions al processador amb unions.• Un conjunt reduït de paraules clau.• Per defecte, el pas de paràmetres a una funció es realitza per valor. El pas per referènciasaconsegueix passant explícitament a les funcions les adreces de memòria daquestsparàmetres.• Punters a funcions i variables estàtiques, que permeten una forma rudimentària dencapsulati polimorfisme.• Tipus de dades agregades (struct) que permeten que dades relacionades (com un empleat,que té un ID, un nom i un salari) es combinin i es manipulin com un tot (en una única variable"empleat").
  • Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaAvantatges• Llenguatge molt eficient posat que és possible utilitzar les seves característiques de baixnivell per realitzar implementacions òptimes.• Malgrat el seu baix nivell és el llenguatge més portat en existència, havent-hi compiladorsper gairebé tots els sistemes coneguts.• Proporciona facilitats per realitzar programes modulars i/o utilitzar codi o bibliotequesexistentsDesavantatgesEl major problema que presenta el llenguatge C enfront dels llenguatges de tipus de dadadinàmica és la gran diferència en velocitat de desenvolupament: és molt més lent programaren C. La raó estreba que el compilador de C es limita a traduir codi sense amb prou feinesafegir-ne gens.La gestió de la memòria és un exemple clàssic: en C el programador ha de reservar i alliberar lamemòria explícitament. En altres llenguatges (com BASIC, Matlab o C#) la memòria ésgestionada de forma transparent per al programador. Això alleuja la càrrega de treball humà ien moltes ocasions prevé errors.El manteniment també és més difícil i costós que amb llenguatges de més alt nivell. El codi enC es presta a sentències curtes i enrevessades de difícil interpretació. Encara que el llenguatgeadmet codi escrit de forma fàcilment llegible, si no se segueixen normes en el equip deprogramació alguns programadors poden acabar escrivint codi difícil de llegir. Això complica larevisió i el manteniment.C no disposa de sistemes de control automàtics i la seguretat depèn gairebé exclusivament delexperiència del programador. La major part dels problemes de seguretat en els sistemesinformàtics actuals deriva dhaver estat realitzats en C. La fallada de seguretat clàssicaconsisteix que algunes entrades dinformació al programa no es comproven en longitud. Si unatacant introdueix dades el bastant grans pot provocar la sobreescriptura de codi en la pila delprograma i fins i tot arribar a forçar lexecució de codi perniciós. Els llenguatges de tipusdinàmic compten amb controls de gestió de memòria i dentrada de dades automàtiques.Per aquestes raons, els directors de desenvolupament han de sospesar lavantatge eneficiència dun bon programa en C enfront de la major durada del treball i els riscos deseguretat i estabilitat. Han de tenir en compte a més, que els equips baixen de preu amb eltemps mentre que el cost dels programadors augmenta.Manques• Recol·lecció descombraries natives, no obstant això es troben a aquest efecte bibliotequescom la "libgc" desenvolupada per Sun Microsystems, o el Recol·lector descombraries deBoehm.• Suport per a programació orientada a objectes, encara que la implementació original de C++va ser un preprocessador que traduïa codi font de C++ a C.• Encapsulació.
  • Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | Exatienda• Funcions niades, encara que GCC té aquesta característica com a extensió.• Polimorfisme en temps de codi en forma de sobrecàrrega, sobrecàrrega doperadors i nomésdisposa dun suport rudimentari per a la programació genèrica.• Suport natiu per a programació multifil i xarxes de computadors.En conclusió podem recalcar la importància que té la programació avui dia, doncs amb aquestaes creen programaris que són de gran ajuda per a les persones que treballa en làmbitinformàtic tant com les quals no, doncs facilita processos matemàtics, econòmics i fins i totquímics.En si podríem dir que la programació facilita treballs de processos llargs.