# Programazio

Programazioa, programa informatiko bat garatzeko egiten den prozesua da. Ordenagailuetarako programen kodea idatzi, probatu, araztu eta mantentzeko prozesua da. 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

Gailu programagarriak duela urte askotatik existitu izan ohi dira. Bederatzi garren mendean, musika sekuentziadore bat inbentantua izan zen "Banu Musa" anai pertsiarrengandik, zeintzuk txirula mekaniko automatiko bat deskribatu zuten Book of Ingenious Devices liburuan.
1206. urtean Al-Jazari arabiarrak bateria programagarri bat sortu zuen non musika mekaniko automatikoa sortu zezakeen erritmo desberdinak eta tamboreen patroi desberdinak jotzearen poderioz, leben eta klabijen bitartez.
Kodea hausteko algoritmoak mendeetan zehar ere existitu dira. IX mendean, Al-Kindi matematikari arabarrak kodetutako kodea deszifratzeko algoritmo kriptografikoa deskribatu zuen, A Manuscript On Deciphering Cryptographic Messages liburuan. Maiztasun analisiaren bidez, kriptoanalisiaren lehen deskribapena eman zuen, kodeketaren algoritmo zaharrena.
Lehenengo programa informatikoa 1843koa da, orokorrean, Ada Lovelace matematikariak Bernoulli zenbakien sekuentzia kalkulatzeko algoritmoa argitaratu zuenean, Charles Babbageren Motor Analitikoak burutzeko.

### Programazio-lengoaien historia eta aurrerapenak

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.
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. 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

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:
* 1842an Ada Lovelace sortu zuen lehen programa.
XX. mendeko hainbat aurrerakuntza:
* 1936an Turingen Makina.
* 1946an ENIAC: Lehenengo ordenagailua digitala.
* 1947an Transistore.
* 1966an ARPANET: Internetaren jatorria
* 1970ean UNIX Sistema eragilea.
* 1972an Lehenengo birus informatikoa.
* 1974an TCP protokoloa: Lehenengo sare lokala.
* 1975ean eta 1976an Microsoft eta Apple fundatu ziren.
* 1981ean IBM PC: Sistema eragile MS-DOS
* 1983an Programazio Lengoaia C++.
* 1990ean HTML lengoaia sortu zen.
* 1991n Linux sistema eragileak sortu ziren.

## Behe- eta goi-mailako programazio-lengoaiak

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

### Behe-mailako programazio-lengoaiak

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.
* Makina-lengoaia: ulertezina programatzaileentzat, aginduak sinpleegiak eta ordenagailu mota bakoitzak bere makina-lengoaia du.
* Mihiztadura-lengoaia: makina-lengoaiatik oso gertu dago, baina programatzaileentzat ulerterrazagoa da. Agindu bitarrak karaktere alfanumerikoekin adierazten dira.

### Goi-mailako programazio-lengoaiak

Programazio-lengoaia hauek programatzaileari aukera ematen diote instrukzioak hitz edo adierazpen sintaktikoen bidez idazteko. Maila honetako adibide batzuk hauek izan daitezke: Ada, BASIC, C, C++, C#, COBOL, Common Lisp, Fortran, , Haskell, Java, JavaScript, Mathematica, Pascal, Perl, PHP, Prolog, Python, 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

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)
Zehaztapenak definitzen du ZER lortu behar dugun. Algoritmoak NOLA lor ditzakegun emaitzak. 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
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

## Lengoaia baten definizioa: hitz erreserbatuak eta arauak

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:
* Ada
* Algol
* BASIC
* COBOL
* C
* C++
* Delphi
* FORTRAN
* Java
* LISP
* Pascal
* Perl
* php
* Prolog
* Python

## Programak eta algoritmoak

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 deklaratiboa
* Programazio egituratuta
* Programazio modularra
* Objektuetara bideratutako programazioa
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

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

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:
* Problema baten ebazpena lortzeko programa baten beharra antzeman, edo ataza baten automatizazioaren aukera identifikatu.
* Programaren betebeharrak bildu. Espezifikazio formal batean argi geratu behar da bere eginkizuna zein den eta zertarako erabiltzen den.
* Programaren betebeharren analisia egin. Ondo zehaztu behar da zein atazak burutu behar dituen. Programa horren baliagarritasuna egiaztatzen dituzten probak fase honetan zehaztu ahal dira.
* Programaren egitura diseinatu. Programa konplexu batek azpiprograma txikiagotan banatu behar da, horietako bakoitza independenteki definitu eta probatu ahal izango da gero (beheranzko diseinua).
* Programa inplementatu. Prozesu hori burutzeko diseinu xehea egin behar da, programaren funtzionamendu guztia zehaztuz. Ondoren, kodifikazioa (programazioa zentzu hertsian esanda) berehalakoa izan beharko zen.
* Programa probatu. Betebeharren analisian zehaztu diren probak gainditzen dituela egiaztatu.
* 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

* ↑ Elhuyar Fundazioa. Programazio. (Noiz kontsultatua: 2019-09-07).
* ↑ (Gaztelaniaz) López, José Luis. (2019-04-30). «Aprender por internet: cursos de programación y retail online» José Luis López (Noiz kontsultatua: 2019-12-14).
* ↑ Koetsier, Teun. (2001-05-01). «On the prehistory of programmable machines: musical automata, looms, calculators» Mechanism and Machine Theory 36 (5): 589–603. doi:10.1016/S0094-114X(01)00005-2. ISSN 0094-114X. (Noiz kontsultatua: 2019-12-14).
* ↑ (Ingelesez) Long, Jason; Murphy, Jim; Carnegie, Dale; Kapur, Ajay. (2017/08). «Loudspeakers Optional: A history of non-loudspeaker-based electroacoustic music» Organised Sound 22 (2): 195–205. doi:10.1017/S1355771817000103. ISSN 1355-7718. (Noiz kontsultatua: 2019-12-14).
* ↑ (Ingelesez) Banū. (1978). The Book of Ingenious Devices. doi:10.1007/978-94-009-9786-8. (Noiz kontsultatua: 2019-12-14).
* ↑ (Ingelesez) The Genius of Arab Civilization: Source of Renaissance. MIT Press 1983-01-01 ISBN 978-0-262-08136-8. (Noiz kontsultatua: 2019-12-14).
* ↑ (Ingelesez) Fowler, Charles B.. (1967-10). «The Museum of Music: A History of Mechanical Instruments» Music Educators Journal 54 (2): 45–49. doi:10.2307/3391092. ISSN 0027-4321. (Noiz kontsultatua: 2019-12-14).
* ↑ «articles58» web.archive.org 2007-06-29 (Noiz kontsultatua: 2019-12-14).
* ↑ (Gaztelaniaz) Farjeat, Luis Xavier López. «Philosophica: Enciclopedia filosófica on line — Voz: Al-Kindī» www.philosophica.info (Noiz kontsultatua: 2019-12-14).
* ↑ (Ingelesez) Dooley, John F.. (2013). A Brief History of Cryptology and Cryptographic Algorithms. , 12–3 or. ISBN 9783319016283..
* ↑ Fuegi, J.; Francis, J.. (2003-10). «Lovelace Babbage and the creation of the 1843 'notes'» IEEE Annals of the History of Computing 25 (4): 16–26. doi:10.1109/MAHC.2003.1253887. ISSN 1934-1547. (Noiz kontsultatua: 2019-12-14).
* ↑ (Gaztelaniaz) «Ada Lovelace: la primera programadora» La Vanguardia 2019-06-29 (Noiz kontsultatua: 2019-12-14).
* ↑ (Ingelesez) Levenez, Eric. (PDF) Computer Languages History. small diagram.. (Noiz kontsultatua: 2019-09-11).
* ↑ 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 22 (0): 73–104. doi:10.3989/collectbot.1993.v22.84. ISSN 1989-1067. (Noiz kontsultatua: 2018-11-27).
* ↑ 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).
* ↑ Alegria, Iñaki.. ([1995]). C programazio-lengoaia. Elhuyar Kultur Elkartea ISBN 8487114032. PMC 431789020. (Noiz kontsultatua: 2019-09-06).
* ↑ 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).
* ↑ Bastarrika, Juan Ramon; Sarasola, Kepa. (1991). LISP: programazio-lengoaia. Udako Euskal Unibertsitatea ISBN 8486967325. PMC 907327642. (Noiz kontsultatua: 2019-09-06).
* ↑ Astigarraga Pagoaga, Aitzol.; Sarasola, Kepa. (2009). TAPE: testu-analisirako PERL erremintak. Udako Euskal Unibertsitatea ISBN 9788484382331. PMC 863215889. (Noiz kontsultatua: 2019-09-06).
* ↑ 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).
* ↑ Arruabarrena, Rosa.. (1997). Algoritmika. Udako Euskal Unibertsitatea ISBN 8486967821. PMC 52409142. (Noiz kontsultatua: 2019-09-06).
* ↑ 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).
* ↑ Sarasola, Kepa.. (1984). Programatzeko algoritmoak. Udako Euskal Unibertsitatea ISBN 8439819714. PMC 433751095. (Noiz kontsultatua: 2019-09-06).
* ↑ Zubizarreta Aizpuru, Jose Ramon.. (2006-2008). Softwarearen ingeniaritza. Udako Euskal Unibertsitatea ISBN 8484380858. PMC 434510969. (Noiz kontsultatua: 2019-09-06).
* ↑ Zubizarreta Aizpuru, Jose Ramon.. (2006-2008). Softwarearen ingeniaritza. Udako Euskal Unibertsitatea ISBN 9788484380900. PMC 863215157. (Noiz kontsultatua: 2019-09-06).
* 1 2 Programen espezifikazio, egiaztapen eta eratorpen formala. Udako Euskal Unibertsitatea 2016 ISBN 9788484385905. PMC 974392192. (Noiz kontsultatua: 2019-09-06).
* 1 2 Arregi, Xabier.. (1993). Programen egiaztapena eta eratorpena. Udako Euskal Unibertsitatea ISBN 8486967503. PMC 907305093. (Noiz kontsultatua: 2019-09-06).

## Bibliografia

* http://www.alegsa.com.ar/Dic/lenguaje_de_programacion_de_alto_nivel.php
* https://definicion.de/programa-en-informatica/

## Ikus, gainera

* Programazio-lengoaien arteko konparazioa

## Kanpo estekak

* Datuak: Q80006
* Multimedia: Computer programming / Q80006