Edukira joan

Programa informatiko

Wikipedia, Entziklopedia askea
"hello, world" Brian Kernighan 1978an egindako programa informatikoa

Programa informatiko bat instrukzio sekuentzia bat da, gailu informatiko batek egikaritzean zeregin bat gauzatzen duena. Gailu informatiko gehienek programa informatikoen beharra dute ondo funtzionatzeko.

Programa informatikoen kodea progamazio lengoaia batean idazten dira, gehienetan programatzaile batek idatzita. Kode honi iturburu kodea deritzo, eta konpilatzaile batez konpilatu eta mihiztatu ondoren fitxategi egikarigarri batean bihurtzen da.

Programazio informatikoen multzoari, liburutegi eta datuekin batera, software deitzen zaio. Haien funtzioari erreparatuz bi mota daude: sistemako softwarea eta aplikazio softwarea.

Historia

IX. mendean Al-Kindi matematikari arabiarrak kriptoanalisia definitu zuen analisi frekuentziala erabiliz, eta hau izan zen historiaren lehen kode algoritmoa[1].

Lehenengo makina programagarriak

Lehenengo makina programagarriak ordenagailu digitalaren asmakuntzarekin etorri ziren. Hauek dira aipagarrienak:

  • IX. mendean Banu Musa anaiek musika sekuentzagailu bat asmatu zuten.
  • 1206an Al-Jazari ingeniari arabiarrak erritmo kutxa bat programatu zuen.
  • 1801an Joseph-Marie Jacquardek ehungailu mekaniko bat asmatu zuen, txartel zulatuez baliatzen zena oihalean patroiak egiteko.

Motore analitikoa

1837an Charles Babbage, Jacquarden ehungailuan inspiratuta, motor analitikoa sortzen saiatu zen. Txartel zulatuen bi atalekin programatua izan zen, bata operazioa egiteko eta bestea aldagaiak gordetzeko. Nahiz eta Erresuma Batuaren gobernuak 17.000 libra baino gehiago inbertitu, ez zen lortu dena ondo burutzea.

Turing makina

Programa informatikoak gordetzeko erabiltzen ziren txartel zulatuak

1936an Alan Turingek Turing makina sortu zuen. Turing makina teorikoa zen eta edozein algoritmo simulatu ahal zuen.

Lehen ordenagailu programagarriak

1941ean Konrad Zusek Z3 ordenagailu digital eta programagarria sortu zuen. Ordenagailu digitalek elektrizitatea erabiltzen dute osagai kalkulatzaile bezala. Z3 ordenagailuak 2400 errele zituen zirkuituak sortzeko eta zirkuitu hauek 9 instrukzio bitarreko ordenagailu bat osatzen zuten. Z3 ordenagailua programatzeko teklatu berezi bat eta txartel zulatu berezi bat erabili zuten.

1945ean ENIAC ordenagailua atera zen. ENIAC Turingen testa betetzen zuen, eta zirkuituak egiteko 17.468 balbula termoionikoak erabiltzen zituen ordenagailu bat zen. 30 tona pisatzen zituen eta 167m² okupatzen zituen. Gainera, $650 gastatzen zituen orduko. ENIAC programatzeko bi hilabete behar izan zituzten eta programa bat debugeatzeko aste bete bat behar zen[2]. ENIAC programatu zutenak emakumeak ziren eta "ENIAC girls" deitzen zieten. 8 urte egon zen martxan, hidrogeno bonben aldagaiak kalkulatzen, eguraldiaren iragarpena egiten eta artilleria armak kontrolatzeko aginteak egiten.

1948an Manchester Baby izan zen sortua. Hau programatzeko ez zen behar kablerik mugitzea, izan ere programa memoria batean zenbaki bezala gordeta zegoen. 3 biteko instrukzioak soilik gorde ahal ziren, orduan 8 instrukzio bakarrik izan ahal zituen.

Ordenagailu aurreratuagoak

1970era arte egindako ordenagailuek panel etengailuak erabiltzen zituzten programatzeko, hala ere, programa informatikoa paperean idazten zen erreferentzia izateko. Instrukzioak piztu/itzali erreferentzia bezala errepresentatzen ziren eta behin konfigurazioa eginda, exekuzio botoiari eman behar zitzaion. Prozesu hau behin eta berriz errepikatu behar zen. Garai honetako ordenagailu garrantzitsuenak hauek izan ziren:

  • 1961ean Burroughs B5000 egin zen, ALGOL 60 programazio lengoaian programatzen zena. Kasu honetan, hardwarea zirkuituekin zetorren konpilatze fasea errazteko.
  • 1964an IBM System/360 atera zen, sei ordenagailuen multzoa zena. Seiak arkitektura instrukzio berdinak zituzten. Hainbat modelo atera ziren, haietatik 30. modeloa zen txikiena eta merkeena. Gainera, kontsumitzaileek modelo batetik bestera eguneratu zezaketen aplikazio software berdina mantenduz.

Programazioa

Programazioa iturburu kodea idaztearen edo editatzearen prozesua da. Programazioa egiten duen pertsona bati programatzailea deritzo. Gehienetan, programa bat programatzaile batek baino gehiagok egiten dute.

Batzuetan programa informatiko bat programatzearen prozesuari software garapena deitzen zaio. Prozesua ingeniaritza diziplina bezala ikusten hasi da, software ingeniaritza hain zuzen ere.

Programazio lengoaiak

Programa informatikoak eginda izan diren programazio lengoaiaren arabera multzokatu ahal dira. Bi programazio lengoaia mota nagusi daude: inperatiboa eta deklaratiboa.

Lengoaia inperatiboak

Programa inperatiboak ordenagailuari ataza bat nola burutu behar duen esaten dioten agindu multzoz osatuta daude. Lengoaia inperatiboen adibide batzuk C, PHP, Python... dira.

Lengoaia deklaratiboak

Programazio deklaratiboa programazio inperatiboaren kontrakoa da. Programa garapenean oinarrituta dago, baldintzak, proposizioak, baieztapenak, mugak, ekuazioak edo aldaketak deklaratuta, problema deskribatzen eta konponbidea zehazten dutenak. Lengoaia deklaratiboen adibide batzuk Haskell eta SQL dira.

Programen egikaripena eta memoria

Programa informatikoak, kasu gehienetan, memoria ez-hegazkorrean daude gordeta, erabiltzaileak, zuzenki edo ez-zuzenki, deitzen dion arte. Hori gertatzen denean, sistema eragileak RAM memorian kargatzen du, prozesadore zentralak programaren atzipena izateko. Ondoren, prozesadore zentralak programa egikaritzen du prozesu izena hartuz. Bukaera hiru motakoa izan daiteke: normal amaitzen delako, erabiltzaileak bukatzeko esaten diolako edo errore bat gertatzen delako.

Aldibereko egikaripena

Sistema eragile askok multiataza pairatzen dute, hau da, aplikazio informatiko batean, aldi berean, hainbat programa exekuzioan egon. Horretarako, sistema eragileak prozesuen planifikazioaz baliatzen da[3].

Bere burua aldatzen duten programak

Normalean, programa informatiko bat banatuta dago aldatzen dituen datuengan. Hala ere, batzuetan, programa berak bere burua aldatzen du. Kasu hauetan, aldatuta dagoen programa, programa berdinaren barruan egikaritzen da subsekuentziaz.

Kategoria funtzionalak

Aplikazio softwareak

Mota asko daude:

  • App: Aplikazio hitzaren laburdura bat da. Hainbat plataformentzat diseinatu dira, baina lehen agerpena mobiletan izan zen. Hala ere, web app, telebistako app, etab. badaude ere.
  • Aplikazioen bilduma: Hainbat programa informatikoen multzoa da. Adibidez Microsoft Office, LibreOffice...
  • Erakunde aplikazioak: Saltzaileei, erosleei eta langileei laguntzeko diseinatuta dauden aplikazioak dira. Adibidez enpresa baliabideen plangintza (ERP), bezeroekiko harremanak kudeatzeko sistemak (CRM)...
  • Jolas software: Bideo-joko aplikazioak, musika aplikazioak edo bideo aplikazioak izan ahal dira.

Programa baliagarriak

Gailu informatikoak analizatzen, konfiguratzen, optimizatzen eta mantentzen laguntzen duten programak dira.

Sistema eragilea

Sistema eragilea gailu informatiko baten software nagusia da, hardwarea eta erabiltzailea lotzen duena.

Abio programa

Abio programak ROM memorian daude gordeta eta gailu informatikoa hasieratzen dute.

Programa bat eraikitzeko faseak

Konputagailu-programa bat sortzeko faseak (ebazpen-fasea eta inplementazio-fasea)

Problema bat emanda hauek dira programa bat eraikitzeko faseak:

  • Zehaztapena (edo espezifikazioa)

Ondo zehaztu zeintzuk diren programak hartuko dituen datuak eta zeintzuk diren lortu beharko diren emaitzak. Zer dira? Zenbaki osoak? Zenbaki errealak? Hitzak? Zer propietate betetzen dituzte datu horiek? Eta emaitzek?

  • Diseinua (algoritmoa)
Algoritmo bat: Bi zenbaki osoren zatitzaile komunetako handiena kalkulatzea.

Zehaztapenak definitzen du ZER lortu behar dugun. Algoritmoak NOLA lor ditzakegun emaitzak. [4][5][6] Ez dago programaetan bezala zorrotz jarraitu behar diren sintaxi-araurik; algoritmoa ez baita idazten makina batek uler dezan, beste pertsona batek baizik.

Algoritmoak lagunduko digu gero programako agindu-sekuentzia eraikitzen.

  • Programa idaztea
Programa bat: bi zenbaki osoren zatitzaile komunetako handiena kalkulatzeko programa Ada lengoaian.

Konputagailuak exekutatuko duen agindu-sekuentzia da. Programazio-lengoaia bat erabili beharko da aginduak idazteko, lengoaia horren arau sintaktikoak errespetatu beharko dira (zer formatutan idatzi behar diren aginduak, nola idatzi zenbakiak,...), noski, bestela erroreak gertatuko dira konpilazio-fasean, agindu-sekuentzia automatikoki makina-lengoaiara itzultzerakoan.

  • Proba

Probatu behar da programak emaitza zuzenak lortuko dituela, datuak edozein direla .Datuen balio esanguratsuekin proba multzo bat prestatu behar da. Eta gero kasu horietan guztietan probatu ea emaitza zuzenak lortzen diren.

  • Erabilera

Probak ondo bukatuz gero, programa prest dago erabilia izateko.

Programa on baten ezaugarriak

Programa on baten ezaugarriak hauek izan behar dira:

  • Zuzentasuna: Programa batek lortzen dituen emaitzak ea beti zuzenak diren, alegia, ea bat datozen programaren espezifikazioan zehaztu zirenekin. Horregatik da oso garrantzitsua programa idazten hasi baino lehenago espezifikazioa (edo zehaztapena) ondo finkatzea. Programa amaitzean ziurtatu behar da lortzen dituen emaitzak eta hasieran espezifikazioan adierazi zirenak bat datozela.
  • Irakurgarritasuna: oso garrantzitsua da programa argia eta irakurterraza izatea. Etorkizunean bere garapena eta mantentze-lana errazteko. Beste alde batetik, programa bat sortzean saiatu behar da bere egitura erraza eta koherentea izatea, baita programazioaren estiloa zaintzea ere, programaren funtzionamendua azalduko duten hainbat ohar eta iruzkin txertatzea funtsezkoa izaten da irakurgarritasuna lortzeko. Horrela programatzailearen lana errazten da, bai sorkuntzaren fasean baita geroko fasetan ere (akatsen zuzenketan, aldaketetan, garapenean). Garrantzitsua da ezaugarri hau garapeneko fase bakoitzean pertsona desberdinak aritzen diren kasuetan.
  • Eraginkortasuna: programa zuzena izan arren, beharrezkoa da bere helburua ahal den denbora txikienean lortzea. Horrez gain, erabiltzen dituen memoria-espazioa eta baliabideak era eraginkorrean erabili behar ditu. Beraz, denbora eta memoria-espazio ahal den txikiena erabiltzeak eraginkorra egingo du programa bat.
  • Portabilitatea: programa sortzeko erabili den plataforma (konputagailu mota bat, sistema eragilea, bertsioa...) ez den beste plataforma batean ere modu egokian egikaritzeko aukera duenean. Adibidez Windows sistema eragile batean sortutako programa bat beste aldaketarik gabe Linux-en ere egikaritu ahal denean.
  • Sendotasuna: programak arazoak izan ditzake aurreikusita ez dauden kasuetan. Programa sendoa bada, ohiko ez diren kasuetan ere programaren exekuzioa bukatzen da eta emaitza zuzenak lortzen ditu.

Erreferentziak

  1. Dooley, John, 1952-. A brief history of cryptology and cryptographic algorithms. ISBN 978-3-319-01628-3. PMC 860897407. (kontsulta data: 2019-11-21).
  2. McCartney, Scott.. (1999). ENIAC, the triumphs and tragedies of the world's first computer. Walker ISBN 0-8027-1348-3. PMC 40534855. (kontsulta data: 2019-11-21).
  3. Akter, Shameem.. (2006). Multi-core programming : increasing performance through software multithreading. Intel Press ISBN 9780976483243. PMC 183266834. (kontsulta data: 2019-11-21).
  4. Arruabarrena, Rosa.. (1997). Algoritmika. Udako Euskal Unibertsitatea ISBN 8486967821. PMC 52409142. (kontsulta data: 2019-09-06).
  5. Díaz de Ilarraza Sánchez, Arantza.; Sarasola, Kepa. (1999). Oinarrizko programazioa : ariketa bilduma. Udako Euskal Unibertsitatea ISBN 8484380025. PMC 52408737. (kontsulta data: 2019-09-06).
  6. Sarasola, Kepa.. (1984). Programatzeko algoritmoak. Udako Euskal Unibertsitatea ISBN 8439819714. PMC 433751095. (kontsulta data: 2019-09-06).

Kanpo estekak