From Wikipedia, the free encyclopedia
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.[2]
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.[3][4][5]
1206. urtean Al-Jazari[6] arabiarrak bateria programagarri bat sortu zuen non musika mekaniko automatikoa sortu zezakeen erritmo desberdinak eta tamboreen patroi desberdinak jotzearen poderioz, leben eta klabijen bitartez.[7][8]
Kodea hausteko algoritmoak mendeetan zehar ere existitu dira. IX mendean, Al-Kindi[9] 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.[10]
Lehenengo programa informatikoa 1843koa da, orokorrean, Ada Lovelace matematikariak Bernoulli zenbakien sekuentzia kalkulatzeko algoritmoa argitaratu zuenean, Charles Babbageren Motor Analitikoak burutzeko.[11][12]
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.[14] 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:
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:
Programazioaren historiako lehenengo urrats haietan programazio-lengoaiak Behe- eta goi-mailakoen artean sailkatzen ziren, haien ezaugarrien arabera.
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.
Programazio-lengoaia hauek programatzaileari aukera ematen diote instrukzioak hitz edo adierazpen sintaktikoen bidez idazteko. Maila honetako adibide batzuk hauek izan daitezke: Ada,[15] BASIC, C,[16][17] C++, C#, COBOL, Common Lisp,[18] Fortran, , Haskell, Java, JavaScript, Mathematica, Pascal, Perl,[19] PHP, Prolog, Python,[20] R, Ruby, Visual Basic.
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.
Problema bat emanda hauek dira programa bat eraikitzeko faseak:
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?
Zehaztapenak definitzen du ZER lortu behar dugun. Algoritmoak NOLA lor ditzakegun emaitzak. [21][22][23] 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.
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.
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.
Probak ondo bukatuz gero, programa prest dago erabilia izateko.
Programa on baten ezaugarriak hauek izan behar dira:
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:
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:
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.
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.
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:[24][25]
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.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.