Programa informatiko: berrikuspenen arteko aldeak

Ezabatutako edukia Gehitutako edukia
tNo edit summary
t Robota: Aldaketa kosmetikoak
1. lerroa:
[[Fitxategi:Hello World Brian Kernighan 1978.jpg|thumb|"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 [[Programazio-lengoaia|progamazio lengoaia]] batean idazten dira, gehienetan [[programatzaile]] batek idatzita. Kode honi [[Iturburuiturburu kode|iturburu kodea]]a 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 [[Kriptoanalisi|kriptoanalisiakriptoanalisi]]a definitu zuen analisi frekuentziala erabiliz, eta hau izan zen historiaren lehen kode algoritmoa<ref>{{Erreferentzia|abizena=Dooley, John, 1952-|izenburua=A brief history of cryptology and cryptographic algorithms|url=https://www.worldcat.org/oclc/860897407|isbn=978-3-319-01628-3|pmc=860897407|sartze-data=2019-11-21}}</ref>.
 
=== 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 Jacquard|Joseph-Marie Jacquardek]] ehungailu mekaniko bat asmatu zuen, [[Txarteltxartel zulatu|txartel zulatuez]]ez 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 ===
[[Fitxategi:PaperTapes-5and8Hole.jpg|thumb|Programa informatikoak gordetzeko erabiltzen ziren txartel zulatuak]]
1936an [[Alan Turing|Alan Turingek]]ek [[Turing makina]] sortu zuen. Turing makina teorikoa zen eta edozein algoritmo simulatu ahal zuen.
 
=== Lehen ordenagailu programagarriak ===
1941ean [[Konrad Zuse|Konrad Zusek]]k 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<ref>{{Erreferentzia|abizena=McCartney, Scott.|izenburua=ENIAC, the triumphs and tragedies of the world's first computer|argitaletxea=Walker|data=1999|url=https://www.worldcat.org/oclc/40534855|isbn=0-8027-1348-3|pmc=40534855|sartze-data=2019-11-21}}</ref>. 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 ===
38. lerroa:
 
== Programazioa ==
[[Programazio|Programazioa]]a 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: [[Programazio inperatibo|inperatiboa]] eta [[Programazio deklaratibo|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 (informatika)|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 (programazio lengoaia)|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, [[Sistemasistema eragile|sistema eragileak]]ak 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<ref>{{Erreferentzia|abizena=Akter, Shameem.|izenburua=Multi-core programming : increasing performance through software multithreading|argitaletxea=Intel Press|data=2006|url=https://www.worldcat.org/oclc/183266834|isbn=9780976483243|pmc=183266834|sartze-data=2019-11-21}}</ref>.
 
=== 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 ==
64. lerroa:
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|enpresa baliabideen plangintza (ERP)]], [[bezeroekiko harremanak kudeatzeko sistemak (CRM)]]...
* Jolas software: Bideo-joko aplikazioak, musika aplikazioak edo bideo aplikazioak izan ahal dira.
 
=== Programa baliagarriak ===
73. lerroa:
 
=== Sistema eragilea ===
Sistema eragilea gailu informatiko baten software nagusia da, hardwarea eta erabiltzailea lotzen duena.
 
=== Abio programa ===