Artikulu hau "Kalitatezko 1.000 artikulu 12-16 urteko ikasleentzat" proiektuaren parte da

Programazio

Wikipedia, Entziklopedia askea
Jump to navigation Jump to search

Formula bat balio batzuekin kalkulatzen duen programa xume bat Python lengoaiaz (zilindro baten bolumena)
Formula bat balio batzuekin kalkulatzen duen programa xume baten exekuzioa Python lengoaiaz (zilindro baten bolumena)

Programazioa, programa informatiko bat garatzeko egiten den prozesua da. Ordenagailuetarako programen kodea idatzi, probatu, araztu eta mantentzeko prozesua da.[1] Programa informatiko bat ondo sortzeko kontuan hartu behar den metodologia aztertzen duen diziplinari ere programazioa esaten zaio.

Orokorrean, bizitza arruntean programatzea esaten denean tarea bat planifikatzea adierazi nahi da. Informatikan programatzea zera da, konputagailuari adieraztea zer egin behar duen eta nola.

Historia[aldatu | aldatu iturburu kodea]

Programazio-lengoaien historia eta aurrerapenak[aldatu | aldatu iturburu kodea]

Programa bat sortzeko, konputagailua interpretatu ahal izateko eta bertan dauden instrukzioak ordenagailuak egiteko, programazio-lengoaia batean idatzita egon behar dira instrukzio horiek.

Hasiera batean, ordenagailuek oso lengoaia sinple batean bakarrik ulertzen zuten, ordenagailuaren makina-lengoaian. Lengoaia hori baina oso konplexua zen programatzeko, bai datuak bai instrukzioak sistema bitar irakurgaitza erabiliz adierazi behar ziren.

Orduan, lana erraztearren adituek zeroz eta batez sortutako sekuentzia amaitezin haiek hitz-laburduren bidez erabili ahal izatea asmatu zuten. Hortaz, Ensabladorea edo Mihiztadura-lengoaia sortu zen. Adibidez, bi zenbaki gehitzeko ADD kodea erabil zitekeen.

Mihiztadura-lengoaian eta makina-lengoaian programatzea funtsean gauza bera da, baina programatzaileentzat errazagoa da komandoen letrak gogoratzea, zenbaki bitarren kateak baino.

Ordenagailuek gauza gero eta konplexuagoak egiten zituztenez, mihiztadura-lengoaian ere neketsua zen programa luzeak sortzea. Beraz, goi-mailako programazio-lengoaiak sortu ziren. Esate baterako, bi zenbakien batuketa egiteko instrukzio batzuk behar ziren mihiztadura lengoaian, baina goi-mailako batekin instrukzio bakar batekin lor daiteke.

Goi-mailako programazio-lengoaia batzuen bertsio-bilakaera urteetan zehar.[2]

Programa bat amaitzean bai mihiztadura-lengoaian bai goi-mailako programazio-lengoai batean idatzita badago, kasu bietan konpilatu egin beharko da, hau da, sortutako kodea makina-lengoaiara itzuli beharko da.[3] Beraz, beharrezkoa da hori egitea programa erabiliko duen ordenagailuak edo makinak uler dezan. Horrez gain, batzuetan beharrezkoa da beste fase bat igarotzea. Lotura fasea esaten zaio; alegia, kodeari behar dituen baliabideak liburutegitik eransten zaizkio.

Geroago, hardwarearekin bezala, softwarearen garapen historikoa (programazioarena) ere hainbat belaunalditan antolatu izan da:

  • Lehenengo belaunaldia, lehenengo ordenagailu elektrikoekin etorri zen. Programa memorian zuzenean eta kode bitarrean idatzi behar zen.
  • Bigarren belaunaldia, Mihiztadura-lengoaiaren hedapena ekarri zuena.
  • Hirugarren belaunaldia, algoritmo konplexuagoak proramatzeko aukera ekarri zuena.
  • Laugarren belaunaldia, goi-mailako programazio-lengoaiak eta beren erraztasunak ekarri zituena.
  • Bosgarren belaunaldia, adimen artifizialaren programazio-lengoaiak sortu zituena.

Informatikaren eta Teknologiaren historia[aldatu | aldatu iturburu kodea]

Informatikaren eta Teknologiaren historia guztian zeharreko gertaera edo asmakizun batzuek zerikusi estua izan dute programazioaren hedapenarekin. Hona hemen asmakizun horietako batzuk:

XIX. mendean programazioaren lehen urratsak:

XX. mendeko hainbat aurrerakuntza:


Behe- eta goi-mailako programazio-lengoaiak[aldatu | aldatu iturburu kodea]

Programazioaren historiako lehenengo urrats haietan programazio-lengoaiak Behe- eta goi-mailakoen artea sailkatzen ziren, haien ezaugarrien arabera.

Behe-mailako programazio-lengoaiak[aldatu | aldatu iturburu kodea]

Makina-lengoaiako instrukzioak. 3 adibide.

Programazio-lengoaia hauen instrukzioak euskarri fisikoan dute kontrola edo eragina, eta ondorioz ordenagailuaren egitura fisikoarekin zeharo lotuta daude. Beste konputagailu mota batean ez da izango erabilgarri. Behe hitzak ez dio lengoaiaren potentziari edo kalitateari erreferentzia egiten, lengoaia- eta hardware-abstrakzio murriztuari baizik.

Goi-mailako programazio-lengoaiak[aldatu | aldatu iturburu kodea]

Goi-mailako programazio-lengoaia baten adibidea.

Programazio-lengoaia hauek programatzaileari aukera ematen diote instrukzioak hitz edo adierazpen sintaktikoen bidez idazteko. Maila honetako adibide batzuk hauek izan daitezke: Ada,[4] BASIC, C,[5][6] C++, C#, COBOL, Common Lisp,[7] Fortran, , Haskell, Java, JavaScript, Mathematica, Pascal, Perl,[8] PHP, Prolog, Python,[9] R, Ruby, Visual Basic.

  • Ezaugarriak:
    • Datuak eta aginduak karaktere alfanumerikoen bidez aipa daitezke, hau da, ez kode bitarrean.
    • Datuak hartzeko aldagaiak defini daitezke.
    • Agindu eta datu ahaltsuagoak eta landuagoak erabil daitezke, hau da, ez oinarrizko eragiketa xumeak soilik.
    • Bateragarria da, hainbat ordenagailu mota desberdinetan erabili daitezke.
    • Programen erroreak zuzenketa errazagoa da. Denbora asko aurrezten da horregatik aurrezten da beste behe-mailako programazio-lengoaiekiko.
    • Oharrak txerta daitezke programa hobetu ulertzeko.

Laburbilduz, behe-mailako programazio-lengoaiak makinaren prozesamendu-lengoaiaz hurbilago daude eta goi-mailako programazio-lengoaiak, aldiz, programatzailearen lengoaiaz hurbilago daude.

Gehienetan, goi-mailako lengoaia bat erabiltzen denean, programaren idazketa bera bi urratsetan egiten da eta bi erreminta erabiliz. Alde batetik, kodea idazten laguntzen duen editore bat erabiltzen da. Eta bestalde, beste erreminta bat kode hori makina-lengoaiara itzultzeko, mikroprozesadorea agindu horiek prozesatu ahal ditzan.

Programa bat eraikitzeko faseak[aldatu | aldatu iturburu kodea]

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. [10][11][12] 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[aldatu | aldatu iturburu kodea]

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

Lengoaia baten definizioa: hitz erreserbatuak eta arauak[aldatu | aldatu iturburu kodea]

Programazioa, arau eta hizkuntza hizkuntza natural antza (ingelesez) duten aginduen, adierazpenen, instrukzioen eta komandoen multzoek osatzen dute. Elementu horiek anbiguotasun txikia izan behar dute, programazio-lengoaiak zenbat eta anbiguotasun gutxiago izan, orduan eta eraginkorragoa delako. Premisa horretatik abiatuta, bitarra da lengoaiarik eraginkorrena, ez baitu anbiguotasunik .

Goi-mailako programazio-lengoaietan hainbat elementu bereizten dira, eta horien artean lengoaiaren berezko lexikoa eta arau semantiko eta sintaktikoak daude. Lehenengo konputagailuarentzat diseinatutako goi-mailako programazio-lengoaia Plankalkül (1948) izan zen, Konrad Zuse-k (1910-1995) sortua. Hala ere, berea ekarpen teorikoa izan zen batez ere, programazio-lengoaia hori ez baitzuen inplementatu.

Zabalki hedatutako lehenengo goi-mailako programazio-lengoaia Fortran izan zen, 1957. urtean IBMk garatutakoa. Bitartean, Algol lengoaiak, 1958. eta 1960. urteetan definitutakoa, kontzeptu berriak sartu zituen, hala nola errekurtsioa, programazio-egiturako hainbat kontzeptu eta abar. Garai horretan, COBOLek erregistroak barruratu zituen eta berdin egin zuen LISPek lambda-abstrakzioarekin.

Lehenengo goi-mailako programazio-lengoaiak 1950eko hamarkadan diseinatu ziren. Gaur egun mota horretako ehunka lengoaia existitzen dira, adibidez:

Goi-mailako programazio-lengoaiaren adibide bat
  • Ada
  • Algol
  • BASIC
  • COBOL
  • C
  • C++
  • Delphi
  • FORTRAN
  • Java
  • LISP
  • Pascal
  • Perl
  • php
  • Prolog
  • Python

Programak eta algoritmoak[aldatu | aldatu iturburu kodea]

Algoritmo bat da arazo bat konpontzeko urratsez urrats jarraitu behar den, antolatuta dagoen eta finitua den argibideen sekuentzia, anbiguotasunik ez duena. Oro har, programa batek algoritmo bat edo gehiago inplementatzen du, hau da, programazio-lengoaia batera itzultzen du. Algoritmo bat era ugaritan adieraz daiteke: grafikoki (fluxu-diagrama modura), kode moduan (sasikodea) edo era esplikatzaile batean (programazio-lengoaia).

Algoritmo guztiak honako parteez osatuta egon behar dira beti:

  • Input edo sarrera. Algoritmoak funtzionatzeko behar dituen datuen sarrera.
  • Prozesua. Algoritmoak sartutako inputekin gauzatuko duen eragiketa logikoa.
  • Output edo irteera. Algoritmoaren egikaritzea amaitzean input-ak erabiliz egindako prozesuaren emaitzak.

Gehienetan programak moduluak deitutako atal txikiagotan banatzen dira. Moduluen erabilerarekin algoritmoen zailtasuna murrizten da eta ondorioz errazagoa da programa garatzea. Prozesu horri beheranzko analisia (Top-Down) deritzo eta asko erabiltzen den jarduera da.

Niklaus Wirth-en arabera programa bat algoritmoz eta datuen estrukturaz osatua dago.

Programazioak ikuspegi edo paradigma anitz jarrai ditzake, hau da, arazo baten konponbidea aurkitzeko modu ezberdinak daude. Programazioaren paradigmarik nagusienak hauek dira:

Programazio paradigma konkretu batekin lan egin daiteke, baina praktikan ohikoa da horiek nahastea (multiparadigma).

Informatikan programa esaten dugunean software bati buruz hitz egiten ari gara. Zenbait programa mota bereiz ditzakegu. Oinarrizko software-ak, adibidez, pertsona bati ematen dio konputagailuaren osagai fisikoen (hardware) gaineko kontrola izateko aukera. Windows edo Linux sistema eragileak oinarrizko software-aren taldean sartzen dira.

Bulegotika programak ere oso garrantzitsuak dira, horien artean ondorengo testu prozesadoreak bereizten dira: Microsoft Word eta LibreOffice Writer; kalkulu-orriak, hala nola Calc, Lotus 1-2-3 eta Microsoft Excel; eta posta elektronikoaren kudeaketa ahalbidetzen duten Thunderbird, Lotus Notes, Microsoft Outlook eta Eudora.

Konpilazioa[aldatu | aldatu iturburu kodea]

Goi-mailako lengoaian idatzitako programazio-lengoaia (ordenagailuarentzat ulerterraza dena) jatorrizko programa deitzen da eta ezin da zuzenean ordenagailuan egikaritu. Ohiko aukera modulu bat lortuz programa konpilatzea da, hala ere; modu zuzenagoan exekutatu daiteke interpretatzaile informatiko baten bidez. Programaren iturburu-kodeak itzultze-prozesu bat pasatu behar du makina-lengoaia edo bitarteko kodea bihurtzeko, objektu deitzen den modulu bat sortuz. Prozesu horri konpilazio deritzo.

Normalean programa exekutagarri (.exe modukoa Microsoft Windows-erako edo DOS) baten sorrera bi urratsez osatuta dago. Lehenengo urratsa konpilazioa da, horrek testu-artxibo batean gordetako programazio-lengoaian idatzita dagoen iturburu-kodea itzultzen du behe-mailako kode batera (gehienetan objektu-kode batera eta ez zuzenean makina-lengoaiara). Bigarren urratsa lotura deitzen da, horrekin lehenago egindako konpilaziotik sortutako fitxategi eta azpiprograma guztien behe-mailako kodea lotzen da, eta konpiladorearen liburutegian dauden funtzioen kodea gehitzen. Modu horretan exekutagarria sistema eragilearekin zuzenean komunika daiteke eta horrela, azkenean, objektu-kodea makina-kode bihurtzen da.

Bi urrats horiek banaka egin daitezke, konpilazio fase bakoitzaren emaitza objektu artxiboetan biltzen da (.o modukoa Unix-rako, .obj moduko MS-Windows-rako, DOS); ondorengo faseetan lotzeko edo zuzenean exekutagarri bat sortzeko. Konpilazio fasea bakarrik gorde daiteke denboraldi baterako. Programa batek zenbait lengoaiatan idatzitako zatiak eduki ditzake, adibidez, Java, C, C++ eta mihiztatzaile. Zati horiek banaka konpilatu daitezke eta gero elkarrekin lotu modulu exekutagarri bakarra lortzeko.

Software-ingeniaritza eta programazioa[aldatu | aldatu iturburu kodea]

Programa informatiko baten sorrera programaren idazketa hutsarekin identifikatzen da gehienetan. Horrek balio du programa txikiak egiten direnean, eta erabilera pertsonal hutserako, baina ez da hori bakarrik milaka agindu izango dituen proiektu handi batekin aritzean.

Ingeniaritzaren ikuspuntutik, hauek dira software baten sorkuntza-prozesu batean zehar jarraitu behar diren ezinbesteko urratsak:[13][14]

  1. Problema baten ebazpena lortzeko programa baten beharra antzeman, edo ataza baten automatizazioaren aukera identifikatu.
  2. Programaren betebeharrak bildu. Espezifikazio formal batean argi geratu behar da bere eginkizuna zein den eta zertarako erabiltzen den.[15][16]
  3. Programaren betebeharren analisia egin. Ondo zehaztu behar da zein atazak burutu behar dituen. Programa horren baliagarritasuna egiaztatzen dituzten probak fase honetan zehaztu ahal dira.
  4. Programaren egitura diseinatu. Programa konplexu batek azpiprograma txikiagotan banatu behar da, horietako bakoitza independenteki definitu eta probatu ahal izango da gero (beheranzko diseinua).
  5. Programa inplementatu. Prozesu hori burutzeko diseinu xehea egin behar da, programaren funtzionamendu guztia zehaztuz. Ondoren, kodifikazioa (programazioa zentzu hertsian esanda) berehalakoa izan beharko zen.
  6. Programa probatu. Betebeharren analisian zehaztu diren probak gainditzen dituela egiaztatu.[15][16]
  7. Programa ezarri (instalatu). Hori egiteko programa abian jarri behar da behar dituen osagaiekin batera (datu-baseekin, komunikazio-sareekin, etab.)

Software-ingeniaritza arloa programaren diseinu eta plangintzaren urrats horietan ardazten da. Aspaldian programatzaile baten betebeharra (artisau-programazioa) kodea idaztea baino ez zen, eta espezifikazio-, diseinu- eta analisi-fasea oso xumeak ziren.

Erreferentziak[aldatu | aldatu iturburu kodea]

  1. Elhuyar Fundazioa, Programazio, . Noiz kontsultatua: 2019-09-07.
  2. (Ingelesez) Levenez, Eric (PDF), Computer Languages History. small diagram., . Noiz kontsultatua: 2019-09-11.
  3. Camarasa, Josep María; Amigó, Jean Jacques (1993-12-30) «Salvadorianae. I. La correspondència de Pere Barrère i Volar (Perpinyà 1690 - 1755) amb Josep Salvador i Riera conservada a la biblioteca Salvador de l'Institut Botànic de Barcelona» Collectanea Botanica (0): 73–104 doi:10.3989/collectbot.1993.v22.84 ISSN 1989-1067 . Noiz kontsultatua: 2018-11-27.
  4. Watt, David Anthony. ([1996]) ADA lengoaia eta metodologia Servicio Editorial de la Universidad del País Vasco = Euskal Herriko Unibertsitateko Argitalpen Zerbitzua ISBN 8475858651 PMC 434213410 . Noiz kontsultatua: 2019-09-06.
  5. Alegria, Iñaki. ([1995]) C programazio-lengoaia Elhuyar Kultur Elkartea ISBN 8487114032 PMC 431789020 . Noiz kontsultatua: 2019-09-06.
  6. Informatikaren oinarriak C lengoaian ebatzitako problemak : industria ingeniaritza teknikoko eta industria graduko ikasleei zuzendua Servicio Editorial de la Universidad del País Vasco = Euskal Herriko Unibertsitateko Argitalpen Zerbitzua 2010 ISBN 9788498604641 PMC 776669615 . Noiz kontsultatua: 2019-09-06.
  7. Bastarrika, Juan Ramon; Sarasola, Kepa (1991) LISP: programazio-lengoaia Udako Euskal Unibertsitatea ISBN 8486967325 PMC 907327642 . Noiz kontsultatua: 2019-09-06.
  8. Astigarraga Pagoaga, Aitzol.; Sarasola, Kepa (2009) TAPE: testu-analisirako PERL erremintak Udako Euskal Unibertsitatea ISBN 9788484382331 PMC 863215889 . Noiz kontsultatua: 2019-09-06.
  9. Alegria Loinaz, Iñaki; Perez de Viñaspre, Olatz; Sarasola, Kepa (2016) Python programazio-lengoaia. UEU eta UPV/EHU ISBN 9788490824405 PMC 1019651201 . Noiz kontsultatua: 2019-09-06.
  10. Arruabarrena, Rosa. (1997) Algoritmika Udako Euskal Unibertsitatea ISBN 8486967821 PMC 52409142 . Noiz kontsultatua: 2019-09-06.
  11. Díaz de Ilarraza Sánchez, Arantza.; Sarasola, Kepa (1999) Oinarrizko programazioa : ariketa bilduma Udako Euskal Unibertsitatea ISBN 8484380025 PMC 52408737 . Noiz kontsultatua: 2019-09-06.
  12. Sarasola, Kepa. (1984) Programatzeko algoritmoak Udako Euskal Unibertsitatea ISBN 8439819714 PMC 433751095 . Noiz kontsultatua: 2019-09-06.
  13. Zubizarreta Aizpuru, Jose Ramon. (2006-2008) Softwarearen ingeniaritza Udako Euskal Unibertsitatea ISBN 8484380858 PMC 434510969 . Noiz kontsultatua: 2019-09-06.
  14. Zubizarreta Aizpuru, Jose Ramon. (2006-2008) Softwarearen ingeniaritza Udako Euskal Unibertsitatea ISBN 9788484380900 PMC 863215157 . Noiz kontsultatua: 2019-09-06.
  15. a b Programen espezifikazio, egiaztapen eta eratorpen formala Udako Euskal Unibertsitatea 2016 ISBN 9788484385905 PMC 974392192 . Noiz kontsultatua: 2019-09-06.
  16. a b Arregi, Xabier. (1993) Programen egiaztapena eta eratorpena Udako Euskal Unibertsitatea ISBN 8486967503 PMC 907305093 . Noiz kontsultatua: 2019-09-06.

Bibliografia[aldatu | aldatu iturburu kodea]

Ikus, gainera[aldatu | aldatu iturburu kodea]

Wikimedia Commonsen badira fitxategi gehiago, gai hau dutenak: Programazio Aldatu lotura Wikidatan