Kulturaj aspektoj de komputil-programado

Reinhard Fössmeier


Notoj de kurso farita dum SUS 22 en Hradec Králové (CZ)
2000-06-10/12

La kursteksto pli-malpli sekvas la diapozitivojn prezentitajn dum SUS 22, kiuj estas alireblaj per klako al la simbolo bildo 1.


1 Enkonduko

1.1 La kurstemo

La ingxeniersciencoj klopodas abstraktigi siajn studobjektojn de la socia, kultura, politika kaj psikologia kunteksto. Tio estas sagxa procedo, cxar nur tiel eblas regi kaj travidi la kompleksecon, kiu ekzistas en cxiu aspekto de la homa vivo. Por regi la teknikajn aspektojn necesas kapabli ignori ilian neteknikan kuntekston.

Sed cxia homa aktivado estas enkadrigita al la homa vivo. Tial utilas, de tempo al tempo rigardi trans la barilojn de la ingxeniersciencoj, por eble pli bone kompreni faktojn, kiuj ne estas klarigeblaj el pure teknika vidpunkto.

Tiu cxi kurso ekestis el alia kurso, kiu okazis paske de 2000 cxe la 7-a Itala Studadsesio de AIS kadre de la 24-a Internacia Junulara Festivalo de IEJ (kadra temo: "Cxu esti aux ne esti Euxropano") sub la temo "Euxropaj aspektoj de komputil-programado".

bildo 1

1.2 Kelkaj enkondukaj demandoj

Por iom konkretigi la temon de la kurso jen kelkaj demandoj, kiuj trakteblas kadre de gxi kaj estos traktataj en la kurso.

Kiel programado rilatas al kulturo?

Multaj homoj pensas, ke komputilistoj apartenas al la plej senkulturaj personoj: Ili ne interesigxas pri teatro, sporto, danco, muziko, sed nur sidas antaux ekrano aux muntas nove akiritan teknikajxon en sian komputilon. Tipa ekzemplo estas la Usona bild-stria figuro Dilbert, kiu enkorpigas preskaux cxiujn eblajn klisxojn pri (ne nur komputilaj) ingxenieroj. la juraj kondicxoj malpermesas cxian sxangxon de la bildo, do ekzemple ankaux tradukon de la teksto.)

Tamen ecx la manko de kultura intereso ja prezentas en si mem (specifan) kulturon; same kiel, laux konata diro, "ne eblas ne komuniki", ankaux ne eblas ne havi kulturon -- ecx se gxi ne estas laux cxies gusto. La kurso tamen montros, ke ecx la komunaj konceptoj pri kulturo forte interrilatas al komputado.

Kiel komputiloj rilatas al kulturo?

Tiu cxi demando similas al la unua, tamen komputiloj pli vaste influas nian kulturon ol programado, cxar ne cxiu uzanto de komputilo ankaux programas.

Kiel rilatas homaj kaj programadaj lingvoj?

Kvankam programadaj lingvoj por laiko aspektas tute ne home, ili ofte enhavas elementojn derivitajn el homaj lingvoj; grandparte tio estas la Angla lingvo, sed ankaux aliaj.

Kiel oni programas en diversaj kulturoj?

Estas ingxeniera principo, ke plej ofte ekzistas nur unu plej bona vojo fari ion, kaj laux tiu vojo oni procedu sendepende de skoloj, etnoj, nacioj, kulturoj. Ni vidos, ke tamen kulturo influas ecx la ingxenierajn labormetodojn.

Kiel la komputilo influas la membildon de la homo?

La komputilo portis al la homaro la "trian industrian revolucion": masxinoj transprenas, post la korpa laboro kaj mana lerteco, nun ankaux la mensajn kapablojn de la homo. Tio sendube influas la membildon almenaux de tiuj, kies laboro pro komputiloj sxangxigxis aux ecx perdigxis. Sed cxar mensaj kapabloj ofte estas konsiderataj kiel unika distingilo inter homoj kaj bestoj (aux ecx objektoj), la penetro de la masxino en tiun regnon eble havas pli drastajn sekvojn.

 

 

bildo 2

2 Kulturo kaj tekniko

2.1 Kulturdependeco de tekniko

Kiel ni jam menciis komence, cxiu speco de homa konduto rilatas al kulturo en la pli vasta senco de tiu cxi vorto. Kelkaj ekzemploj helpos al ni rilatigi tiun fakton al la tekniko. Utilas distingi inter du gxiaj aspektoj: La inventoj kaj ilia aplikado.

2.1.1 Homoj inventas novajn teknikojn

Novaj teknikoj ne aperas spontanee, necesas inventi ilin. Inventoj kreskas sur la grundo de tauxga kulturo.

Ekzemplo estas, ke la Cxinoj jam antaux multaj jarcentoj inventis la pulvon kaj uzis gxin por art-fajrajxoj kaj raketoj. Ili tamen ne inventis la pafilon, kiun Euxropanoj baldaux konstruis, kiam ili mem estis (re-)inventintaj la pulvon.

Antaux la alveno de la Euxropanoj en Ameriko la tieaj indianoj parte jam havis evoluintan kulturon kun bone organizita administracio. Tamen ili neniam inventis la radon, kiu en Euxropo kaj Azio estis konata jam jarmilojn.

2.1.2 Homoj aplikas novajn teknikojn

La kulturo influas ne nur la inventojn, sed ankaux ilian postan aplikon. Konata ekzemplo estas la telekopiado ("faksado"), kies principo, la optika diserigo de bildoj, jam estis konata en la 19-a jarcento. Post 1970 oni trovis metodojn por kompaktigi la bild-informon tiel, ke en akceptebla tempo eblis transsendi normalan tekstpagxon tra ordinara telefona lineo; samtempe la printil-tekniko kreis printilojn je akceptebla prezo. La vojo do estis libera por amasa uzado de la tekniko. (Por komparo: Je la kutima difino de 102 x 96 bilderoj en kvadrat-colo, t. e. cx. 40 x 38 en kvadratcentimetro, nigra-blanka bildo de grandeco A4 havas pli ol 950.000 bilderojn, kiuj okupas cx. 120 KB. Telekopiilo kompaktigas ilin al cx. kvarono, depende de la aspekto de la pagxo.)

La nova tekniko en Euxropo kaj Usono ne trovis multe da intereso, cxar per telekso oni povis bonege sendi skribajn informojn, kaj telekso donas suficxan certecon pri la identeco de la sendanto. Kontrauxe Japanio bonvenigis la telekopiadon, cxar telekso ne tauxgas por la Japana skribo. Kaj nur post la venko en Japanio la telekopiilo konkeris ankaux Euxropon. Sendube kulturaj ecoj (skribo) forte influis la aplikadon de tiu tekniko.

 

 

bildo 3

2.2 Programado kiel kultura ago

2.2.1 Programoj: verkoj de homoj por homoj

Oni emas pensi, ke programojn ja verkas homoj, tamen ne por homoj, sed por komputiloj. Tio estas nur parte gxusta. Programo (se gxi servas ne nur al rapida eksperimento) havas "vivo-ciklon": Necesas gxin adapti al sxangxitaj cirkonstancoj, eble korekti erarojn. Por tio necesas (eble post longa tempo) legi kaj kompreni la programon, kio povas esti nefacila ecx por la auxtoro, des pli por alia persono, se la auxtoro ne estas disponebla. Tial la verkanto de programo verku sian programon tiel, ke gxi estu facile legebla kaj komprenebla. Tio ankaux donas pli da sekureco kontraux eraroj.

2.2.2 Programado kiel magio, arto, metio, ingxenieriko

En sia libro "Software Reflected", R. Baber klarigas, ke programadon eblas rigardi sub diversaj aspektoj:

bildo 4

2.3 Programado kaj estetiko

2.4.1 Funkcia estetiko

Estetiko en la funkcia senco (laux la devizo de la skolo Bauhaus: la formo sekvas la funkcion) estas ne malgrava eco de bona programo. Ekzemplon ni vidos tuj.

Estetiko en ideala senco (beleco) estas en programado afero malalt-ranga, kiu ne influu la praktikan laboron. Sed cxar ankaux programistoj estas nuraj homoj (kiu dubas?), ili foje sentas iun idealan bezonon je beleco. Por tio ekzistas konkursoj, kie la funkciado de programoj estas duaranga kaj la nura estetiko unuaranga. Ankaux por tio ni vidos ekzemplon.

 

Ekzemplo: programekzemploj Intersxangxi du entjerajn variablojn

Por intersxangxi la enhavojn de du entjeraj variabloj ekzistas diversaj metodoj, kiuj rezultas en programoj tute malsamaj, ankaux estetike. Ni komparu kelkajn. La notacio estas tiu de la programlingvoj C aux Java.

La unua metodo trifoje aplikas la operacion "ekskluziva aux" al la du nombroj. Tio rezultas en jenaj statoj de la variabloj (x0 kaj y0 estu la komencaj valoroj de x kaj y):

xy
1 x0 & y0 y0
2 x0 & y0 x0 & y0 & y0   =   x0
3 x0 & y0 & x0   =   y0 x0

Tiu algoritmo rezultas en programo mirinde simetria, el tri preskaux identaj linioj. Gxi ne bezonas helpvariablon. Por laika rigardanto gxi sendube posedas estetikan placxon.

Sed gxi havas du gravajn malavantagxojn: Sen la klariga tabelo estas malfacile konvinki (sin mem aux aliajn), ke kaj kiel la metodo funkcias. La programo estas do malfacile legebla kaj favoras erarojn. Krome la metodo bazigxas sur operacio ("aux"), kiu ne rilatas la veran naturon de la variabloj kaj eble ecx ne estas disponebla por cxiuj specoj de variabloj, ekzemple por glit-komaj variabloj.


La normala vojo por intersxangxi uzas helpvariablon. La bezono de unu kroma memor-cxelo tute ne estas grava en nuntempa komputilo. Kvankam metodo 2 aspektas malpli "placxe" ol metodo 1, gxi estas sen dubo pli klara kaj pli facile komprenebla.

Metodo 3 metas la intersxangxadon en apartan blokon. Tio havas du avantagxojn: La memorcxelo h estas okupata nur por la dauxro de tiu bloko, kaj por leganto estas absolute klare, ke h havas signifon nur ene de tiu bloko. Do ne necesas dum la plulegado memori, ke h enhavas la valoron de x0; tiu fakto ne havas signifon por la plua programo, kaj metodo 3 igas tion tute klara.

Krome metodo 3 uzas iom pli klaran nomon por la helpvariablo, kiu aldone substrekas gxin dumtempan karakteron.


Metodo 4 metas la blokon en apartan subprogramon kun la nomo intersxangxu. Tiu subprogramo povas situi ie, kie gxia teksto ne gxenas la legadon de la cxefa programo, kaj la nomo tamen igas gxian funkcion tute klara. Leganto povas aparte konstati kaj kontroli, ke la subprogramo vere faras tion, kion diras gxia nomo, kaj ke la uzo ("voko") de la subprogramo en iu loko estas gxusta kaj prava.

La tauxge elektita nomo de la subprogramo ligas la du lokojn de gxia difino kaj apliko (povas, kompreneble, esti multaj aplikoj). Jen la homa lingvo envenas en la programadon; kvankam por komputiloj estas tute egale, kiun nomon havas tiu subprogramo, por homa leganto tio estas esenca.

La fakto, ke voko de subprogramo postulas iom pli da tempo ol rekta rulado de gxiaj instrukcioj, ne plu estas grava, cxar ekzistas tradukiloj, kiuj povas auxtomate transformi vokojn al rekta rulado. En la lingvo C oni indikas tion per la sxlosilvorto inline.


Sume: Oni ne lasu sin misgvidi de la pure estetika cxarmo de metodo 1. Same kiel por fervoja ponto malpli gravas beleco ol fortikeco, programo estu prefere klara ol bela.

 

 

bildo 5

2.4.2 Programado kiel arto sen celo

Kiel dirite, ecx kelkaj programistoj bezonas de tempo al tempo la sperton, krei ion kun alia celo ol optimuma funkciado kaj ecx ricevi agnoskon por tio. Tial ekzistas konkursoj pri "obskureco": Programo estu lauxeble "obskurigita" (angle: obfuscated), do malklara kaj malfacile komprenebla, tute male al la normala ingeniera laboro. La devizo estas: Se estis malfacile verki gxin, estu malfacile legi gxin! Kroma celo povas esti, doni al la programo eksteran estetikan cxarmon.

Tiu sinteno klare montras analogiajxojn al arto, kie la formo pli gravas ol la funkcio. Eksteraj celoj tute ne gravas, cxar kvankam la konkursoj postulas, ke la programoj funkciu, ili absolute ne postulas, ke ili faru ion utilan.

La ekzemplo de absolute simetria programteksto el la C-konkurso de la jaro 1987 aparte montras la strebon al ekstera beleco. La Anglan tekston sub la ekzemplo mi devis enmeti por havi la rajton citi la programtekston. Estas severe malpermesite iel sxangxi tiun tekston, do mi ne rajtis traduki gxin. Tiel gxi formas plian ekzemplon, kie la formo estas pli grava ol la enhavo; ankaux gxi do estas speco de artajxo (eble jurista).

Se vi volas scii, kion faras la prezentita programo, analizu gxin, rulu gxin -- aux simple rigardu la solvon.

 

 

3 Komparo inter kulturoj

bildo 6

3.1 Kulturaj kontrastoj

La kurso prezentos du kulturajn kontrastojn, kiuj estas konataj el aliaj kampoj de homa agado kaj pensado, kaj esploras, cxu ili estas retroveblaj ankaux en la programado. La unua kontrasto estas inter Anglio kaj (parto de) kontinenta Euxropo; gxi estas konata precipe en la ekonomiko, sed spurita ankaux en la literaturo.

La dua kontrasto radikas en la filozofio kaj koncernas la diferencojn inter la okcidenta kaj orienta pensmanieroj. Tre interese estas, ke jam iu proponis analogiecon al gxi en la fiziko, kiu kiel ingxeniera bazoscienco ne estas tute malparenca al programado.

 

 

bildo 7

3.2 Horlogxo kaj pesilo

3.2.1 Analogajxo el la ekonomiko

Konata ekonomika teorio diras, ke en Anglio povis sevolui merkata ekonomio, cxar Anglio neniam havis potencan absolutan monarkon, kiel ekzemple Francio. Cxiam regis speco de evkilibro inter simile potencaj regantoj. Tio influis la etoson tiel, ke entreprenistoj havis eblon kaj kuragxon entrepreni.

horlogxa turo de Venecio Kontrauxe la kontinenta Euxropo havis absolutajn monarkojn, kies regado tra la sxtupoj de hierarkio influis la agojn ecx de la plej malalta subulo. Analoge Euxropo en renesanco kaj baroko preferis en arto kaj tekniko konstrui determinismajn mekanismojn, kies movigxoj estas absolute antauxvideblaj: Kompleksajn astronomiajn horlogxojn, pri kiuj fieris urboj kiaj Prago, Strasburgo aux Venecio; auxtomatajn muzikilojn, kariljonojn. Dume la Angla tekniko evoluigis la auxtomate regulatan vapormasxinon (Watt) aux ventmuelilojn, kiuj auxtomate turnigxis al la sxangxigxanta vento; mekanismoj, kiuj reagis al neantauxvideblaj cirkonstancoj.

Otto Mayr en libro komparas tiujn du principojn al la mekanismoj de horlogxo kaj pesilo:

Mayr en sia libro esploris la metaforan uzon de tiaj mekanismoj en la Angla kaj kontinent-Euxropa literaturoj kaj efektive trovis pli grandan respekton al la respektive preferataj mekanismoj, dum la aliajn oni malrespektis.

Cxu komputiloj kondutas pli "horlogxe" aux pli "pesile"? Cxar komputiloj ja estas modeloj de precizeco, fidindeco kaj determiniteco, oni emus meti ilin al la horlogxeca flanko. Sed ni vidos, ke la jugxo ne estas tiom simpla.

 

bildo 8

3.2.2 Regulado kaj kibernetiko

Sur la nivelo de la elementaj instrukcioj la komputilo donas suficxe "horlogxecan" bildon: Eblas tre precize antauxdiri la rezulton de baza operacio; esceptoj konsiderendas kiel teknikaj paneoj. Ecx la tempo de cxiu operacio estas antuxdifinita; gxi dependas aux nur de la instrukcio, aux en tre simpla maniero de la instrukcio kaj gxia(j) operaciato(j).

Sur la nivelo de programoj, do de kombinoj da instrukcioj, la afero ne estas tiom simpla. Tion kauxzas la ebleco fari decidojn en la komputilo surbaze de jam kalkulitaj rezultoj. Tiuj decidoj ebligas ripetadon de instrukci-blokoj en neantauxvidebla maniero -- malgraux la fakto, ke la procezoj estas kompreneble determinismaj kaj ripeteblaj. La neantauxvidebleco estas ne nur sxajna; laux fama teoremo (Turing) ne konstrueblas masxino, kiu antauxdirus, cxu iu ajn donita komputilprogramo entute iam haltos aux ne. Ecx pli malfacile do estus, precize antauxdiri la konduton de programoj. La sola maniero ekscii gxin estas ruli la programon kaj observi gxin. La "horlogxeca" determinismo do eble estas estas karakteriza eco de komputiloj, sed certe ne de komputilprogramoj.

Norbert Wiener La formaligo de la "pesila" principo okazis fare de Norbert Wiener, la "patro" de la teknika kibernetiko. La principo, laux kiu ekvilibra pesilo emas cxiam reatingi la ekvilibran pozicion, estas tiu de "korektado de devioj". Se iu ekstera forto movas la pesilon, iomete altigxas ties pezocentro, kaj la gravito efikas por remeti tiun al la plej malalta ebla pozicio. Tio nomigxas "negativa retrokuplado": La forto, kiu efikas kauxze de la devio, efikas en la kontrauxa direkto kaj tiel korektas la devion. La tuta procezo nomigxas "regulado".

Ekzistas komputiloj, kiuj reguladas fizikajn valorojn en la reala mondo. Ekzemple komputilo povus mezuri la temperaturon de iu ejo kaj reguli gxin sxaltante kaj malsxaltante hejtilon. Tia komputilo funkcias klare kaj evidente laux la pesila principo.

Sed kio pri komputiloj, kiuj ne reguladas eksteran procezon, kiuj ricevas nur enigajn datenojn, kiujn ilia eligo neniel povas influi? Tie cxi ne temas pri fermita regulad-ciklo; la komputilo do povus funkcii pure horlogxe, kun plene antauxdifinitaj kaj antauxvideblaj pasxoj. Tamen ekzistas fortaj kialoj, ankaux en tiaj okazoj apliki la pesilan principon.

 

 

bildo 9

3.2.3 Iteraciaj metodoj en la matematiko

Kiel dirite, la bazaj operacioj de komputilo okazas tute horlogxece: antauxvideblas ne nur la rezulto, sed ankaux la dauxro de la operacio kaj la preciza vojo, kiel tiu rezulto estas atingita. Sur tiu nivelo la komputilo estas nura "kalkulhorlogxo" (esprimo de la pionira sciencisto Wilhelm Schickard).

Sed en pli kompleksaj kalkultaskoj la sitacio estas malsama. Kiel ekzemplon ni konsideru la radikadon. Algoritmo tre konata, jam malnova, sed ankoraux uzata, diras, kiel eblas plibonigi iun ajn proksimuman valoron r por la radiko de iu nombro a. La baza ideo estas:

bildo 10

Ni provu tiun metodon laux la ekzempo 289 = 172, komencante per r1 = 15. Malgranda tabelo montras, ke jam trifoja ripeto de la priskribita pasxo donas precizecon de 8 pozicioj post la komo (gxustaj pozicioj estas substrekitaj):

ri 289 / ri mezumo ri+1
15,000000000 19,266666667 17,133333334
17,133333334 16,867704280 17,000518807
17,000518807 16,999481209 17,000000008
17,000000008 16,999999992 17,000000000

pesilo Laux la tabelo tre bone eblas kompari la algoritmon al vera pesilo, kie la du aproksimaj valoroj estu la pezoj en la du tasoj de la pesilo. Unue la maldekstra taso (kun la pezo "15") estas tro malpeza; en la dua pasxo gxi farigxas iom tro peza (17,13... kontraux nur 16,86...), post la tria gxi ankoraux estas tro peza, sed la diferenco estas jam tre malgranda. Kvara pasxo rezultigas jam 16 gxustajn dekumajn poziciojn post la komo.

Tiu pliboniga pasxo ankoraux ne estas kompleta algoritmo por radiki. Necesas krome metodo, kiu donas komencan valoron; tio estas facila, eblas ekzemple preni cxiam la nombron "1". Krome necesas io, kio diras, kiam la algoritmo haltu, do kiam la proksimuma valoro estas "suficxe preciza". Cxar la plej multaj komputiloj kalkulas per fiska nombro da pozicioj (per fiksa precizeco), oni normale cxesas, kiam neniu pozicioj plu sxangxigxas, do kiam "la pezilo ne plu videble movigxas". Detaloj tie cxi ne interesas nin. Tiaj algoritmoj, kiu ripetas pasxon gxis plenumigxo de iu kondicxo, nomigxas iteraciaj.

Tiu ekzemplo estas tre instrua. Kvankam neniu ekstera, do neantauxvidebla, influo efikas, ni tamen aplikas reguladan algoritmon, kiu laboras per "koraktado de devio". Kontrauxe al, ekzemple, termostato, la devioj ne estas al ni nekonataj; ni ja mem elektis la (proksimuman) start-valoron. Tamen nia algoritmo procedas, kvazaux temus pri iuj ajn nekonata, plibonigenda valoro. La kauxzo estas, ke la rilatoj inter la devio kaj la necesa (preciza) korekto estas komplikaj, do por kalkuli tiun korekton en unu pasxo necesus komplika algoritmo. Aliflanke estas tre facile kalkuli korekton, kiu ne estas perfekta, sed cxiam iras en la gxusta direkto. Tial ni preferas ignori nian scion pri la devio kaj apliki iteracan algoritmon.

En la "komputa" aux "nombra" matematiko (kiu nomigxas tiel por distingi gxin de la pura, analitika matematiko) iteraciaj metodoj estas tre oftaj. La kauxzo estas, ke la matematiko ofte celas solvi iujn ekvaciojn, do trovi iujn valorojn por variabloj, kiuj igas la ekvaciojn gxustaj ("plenumas la ekvaciojn"). En nia ekzemplo la ekvacio estis

  r2 = 289  

En tiaj okazoj estas facile kontroli, cxu iu valoro plenumas la ekvacion. Ofte malfacile estas, rekte kalkuli solvon. La problemo, plibonigi iun proksimuman valoron, ofte havas mezan malfacilecon. Tio pravigas la aplikon de iteraciaj (devi-korektaj) metodoj.

Laux la teorio pri horlogxo kaj pesilo Anglaj matematikistoj devus ludi elstaran rolon en tiu kampo de la komputa matematiko. Sed tiu fenomeno ne sxajnas okulfrapa. Pli vere oni povus paroli pri grava rolo de Germanaj matematikistoj; unu grava revuo tiukampa ankoraux portas la Germanan nomon "Numerische Matematik" (kvankam gxi kompreneble aperas en la Angla lingvo).

bildo 11

3.3 La Tao

3.3.1 Analogajxo el la fiziko

Laux la analogajxo pri "horlogxo kaj pesilo" ni provis esplori, kiel kulturaj diferencoj inter kontinenta Euxropo kaj Anglio-Usono eble influas la programadon. Tiu analogajxo venis el la ekonomiko. Mi nun proponas laian analogajxon, pruntatan el la fiziko. Gxi koncernas diferencojn inter la okcidenta (Euxropa, Usona) kaj la orienta mondkonceptoj.

En la jaro 1975 la konata fizikisto Fritjof Capra publikigis libron kun la titolo "The Tao of Physics". La vorto "Tao" estas difinata jene en la Plena Ilustrita Vortaro:

Ta/o. La nedifinebla, senpersona principo, imanenta en la universo kaj gxin movanta.

La libro de Capra estis reago al la fakto, ke la kvantuma fiziko sxajnis neakordigebla kun kelkaj principoj, kiujn la okcidentaj filozofio kaj scienco konsideris baza. Unu tia principo estas, ke eblas observi cxion sen influi gxin; alia, ke du objektoj des malpli influas sin reciproke, ju pli ili estas malproksimaj; tio laux la kvantuma fiziko ne povas esti vera. Capra atentigis, ke tio eble ne estas problemo de la kvantuma fiziko, sed de la okcidenta monkoncepto, kaj ke la budhisma mondkoncepto multe pli kongruas kun la konoj de la kvantuma fiziko.

Ni tie cxi ne enprofundigxu en la kvantuman fizikon. La celo de la sekvaj alineoj estas, doni argumentojn, ke la budhisma mondkoncepto kongruas nek kun horlogxeca nek kun pesileca vidpunkto. Al kio objekto eblas gxin kompari? Ni ne atendu trovi "la budhisman masxinon", cxar la budhismo ne pensas masxinece. Por tion pli bone kompreni, ni rigardu helpilon, kiun zen-instruistoj uzas por konduki siajn discxiplojn al iluminigxo: la koanon.

bildo 12

3.3.2 La zen-budhismo

Plena Ilustrita Vortaro jene difinas la vorton "zeno":

zen/o. Budhisma skolo, aparte disvolvigxinta en Japanujo, de mistika komuniigxo kun la naturo, ekster cxia intelekta aktiveco.

Tiu difino forigas cxiun esperon, trovi teknikajxojn, horlogxojn aux pesilojn en zeno. Kaj kio pri la iluminigxo? Gxi estas stato, al kiu strebas la zen-discxiplo, tamen sciante, ke la strebo ne helpas al li atingi tiun staton. Tion bone ilustras koan-a dialogo inter discxiplo kaj lia majstro:

bildo 13

Discxiplo: "Kie estas la vojo?"
Majstro: "Rekte antaux viaj okuloj."
D: "Kial mi ne vidas gxin?"
M: "Cxar vi pensas pri vi mem."
D: "Kaj vi, cxu vi vidas gxin?"
M: "Dum ke vi vidas duoble, dirante 'mi ne vidas' kaj 'vi vidas', viaj okuloj estas malklaraj."
D: "Se estas nek 'mi' nek 'vi', cxu eblas vidi gxin?"
M: "Se estas nek 'mi' nek 'vi', kiu estas tiu, kiu volas gxin vidi?"

La iluminigxo havas ecojn, kiuj spitas logikon, metodojn, masxinojn:

Tiujn principojn ni (laike) povus akcepti kiel fundamentajn al la orienteca filozofio de la zen-skolo. Esplorante la t. n. proceduran programadon de komputiloj ni trovas neniujn el ili. Kontrauxe ni konstatas, ke tie validas kelkaj principoj, kiuj estas klare "okcidentaj":

bildo 14

3.3.3 Orakolaj teknikoj

Cxiuj provoj, plu analizi tiujn ecojn, povus aperi vanaj post legado de alia koano, kiu temas pri la majstroj Josxu. Discxiplo demandis lin, cxu iu preterpasanta hundo havas budhan naturon. Josxu respondis: "Mu." Tio estis lia maniero diri, ke la demando estas sensenca.

Certe ne estas malfacile, programi komputilon por ke gxi diru "mu". Jam pli malfacile estus programi gxin tiel, ke el la informo "mu" komputu ion utilan. Sed almenaux unu gravan karakterizajxon la okcidenta psikologio povas esprimi jene: Zeno kontrauxas la unuflankan emfazon de la "pensado per la maldekstra cerbo-duono" (kiu pensas analitike, dedukte, lauxpasxe) kaj emfazas la "uzadon de la dekstra cerbo-duono" (ni eble ne nomi gxin pensado, kvankam gxia funkciado certe ne estas malsupera al la maldekstra). La psikologio diras, ke tiu dekstra cerbo pensas tutece kaj integre; cxio por gxi ekzistas samtempe kaj sen cxenoj de kauxzo kaj efiko, kaj kontrauxdiroj povas pace ekzisti unu apud la alia. Al tiu, kiu lernis programi per lingvoj kiaj C, Modula, Algol, Fortran, Pascal, Eifel, Basic ktp. ("proceduraj lingvoj"), estas malfacile imagi, ke eblu programi laux la principoj de la dekstra cerbo. Kaj tamen ekzistas tiaj teknikoj.

Por suplementi la metaforojn de "horlogxo" kaj "pesilo" mi proponas nomi tiajn teknikojn "orakoloj", pro la jenaj ecoj:

Tiaj ecoj sxajnas pli parencaj al la budhisma filozofio ol la ecoj de la procedura programado. Kaj vere ekzistas orakolaj teknikoj, ekzemple

bildo 15

3.3.3.1 Neuxraj retoj

Neuxraj retoj estas specialaj masxinoj (aux programoj), kiuj bazigxas sur la plejparte auxtonoma analizo de datenoj pere de multaj cxeloj (proceziloj). La celo estas, ekkoni en la datenoj iujn skemojn (lernado) kaj poste rekoni similajn skemojn en aliaj datenoj. Eblaj aplikoj estas la rekono de homaj vizagxoj. Kontrauxe al simpla komparo de bildoj la analizo per neuxraj retoj eble rekonas homon ankaux kun alia har-arangxo, aux el alia angulo, aux post kelkaj jaroj.

Kvankam la informadiko scias, kiel funkcias neuxraj retoj, estas tre malfacile ekscii, kion iu certe neuxra reto "lernis". Ecx povas esti, ke la skemoj, kiujn iu reto lernis, ne estas esprimeblaj per homaj penskategorioj. Kaj ecx se tio eblas, ili povas esti de tute neatendita speco.

Konata anekdoto pri neuxraj retoj diras, ke oni "trejnis" neuxran reton per fotoj de armea manovrejo. Unu fotaro montris malplenan pejzagxon, alia fotaro montris la saman pejzagxon je alia tago, kiam okazis manovroj kaj kamuflitaj tankoj estis kasxitaj en la pejzagxo. Celo estis, ke la sistemo lernu distingi tiujn kasxitajn tankojn.

En unua testo kun kontrolfotoj, ankoraux nemontritaj, cxio bonege funkciis. Sed kiam oni faris novajn fotojn de la sama pejzagxo, la sistemo mizere fiaskis -- aux tiel sxajnis. Montrigxis poste, ke la sistemo ja lernis ion, kio estas home komprenebla kaj esprimebla: Gxi bone sukcesis distingi la veterojn je la du tagoj (sen-tanka kaj kun-tanka). Sed gxi ne kapablis diri, kion gxi estis lerninta.

bildo 16

3.3.3.2 Logikema programado (PROLOG)

Kiel ni vidis, neuxraj retoj estas speco de lernantaj sistemoj, kiujn necesas gxuste "trejni", sed kies lernrezulto eble ne estas esprimebla en homaj konceptoj. Kontrauxe la logikema programado estas vera speco de programado, kaj gxia rezulto estas (aux estu) programo legebla kaj komprenebla por homo. Tamen tiu programado fundamente diferencas de la procedura programado, cxe kiu la programisto preskribas la pasxojn, kiujn la komputilo plenumu. Logikema programo konsistas ne el instrukcioj, sed el "faktoj", kaj la tasko de la komputilo estas fari konkludojn el tiuj faktoj.

Kvankam la lingvo PROLOG ekestis en Euxropo (oni atribuas gxin al la Franco Colmerauer, laboranta en Marsejlo), gxi havis sian plej furoran sukceson en Japanio, kies registaro cxirkaux la jaro 1980 iniciatis grandan projekton pri la "kvina-generacia komputilo", kiu bazigxis sur PROLOG kaj estis destinita reformi la programadon per transiro al la logikema paradigmo.

bildo 17

Procedura (ordonema) kaj logikema programadoj

Por kompreni, cxu tiu Japana intereso pri logikema programado povus iel rilati al la influo de budhismo kaj speciale zeno en Japanio, ni komparu la logikeman "paradigmon" al alia programada tekniko, la procedura aux ordonema programado. Gxi estas tiu metodo, laux kiu oni "tradicie" programas: Preskribi al la komputilo cxiun unuopan pasxon de algoritmo.

Kontrauxe la logikema programado estas subspeco de la aplikema programado, kiu deklaras nur faktojn pri la solvota problemo, faktojn en la formo de identajxoj aux egalajxoj. Ekzemplo por tia fakto estas:

La diferenco inter du nombroj a kaj b estas nombro c tia, ke b + c = a.

Tiu fakto ne diras, kiel komputi la diferencon. Ebla, sed ne tre rapida maniero estus, provi lauxvice cxiujn nombrojn 0, 1, 2, ... Sed tio ne (unuavice) koncernas la programiston. Kontrauxe la ordonema programado povus jene difini la kalkuladon de diferencoj (ni supozu, ke la komputilo ne aparate povas kalkuli diferencojn):

Deprenu po 1 de a kaj b tiom longe, gxis kiam b estas 0; tiam la restanta valoro de a estas la diferenco. (La komputilo devas kapabli "depreni 1" de nombro kaj kompari gxin al 0.)

bildo 18

La projekto pri la "kvina generacio" ne estis vera sukceso. Tamen estas interesa fakto, ke tiom da mono en gxin investis gxuste la registaro de Japanio, lando, en kiu la zen-budhismo havas siajn plej fortajn radikojn. Kiel ni vidis, la logikema programado posedas karakterizajn trajtojn de "orakola" metodo, do havas filozofian parencecon al zeno -- almenaux por ne-Japano.

bildo 19

Ni konsideru etan ekzemplon el pli frua artikolo de la auxtoro : La sekva PROLOG-programo deklaras la predikaton praido1. Du homoj X kaj Y estas en la rilatumo praido1, se

praido1(X,Z) :- ido(X,Y), ido(Y,Z)
praido1(X,Z) :- ido(X,Y), praido1(Y,Z)

Ni nun deklaru kelkajn kromajn faktojn:

ido(martina,karlo).
ido(karlo,sofia).

El tiu difino kaj tiuj faktoj PROLOG-masxino povas respondi jenan demandon: Kiu estas kies praido? aux, en PROLOG:

praido1(Nepo,Avo) ?

La respondo estas "Nepo = martina, Avo = Sofia". Ne necesas scii, laux kiu vojo la masxino venis al tiu konkludo. En tiu cxi simpla okazo oni jam povas imagi tiun vojon, sed se estus miliono da faktoj anstataux du, tio ja estus malpli facila. Temas do pri "orakoleca" tekniko: La programanto ne scias, per kiuj pasxoj la rezulto estis atingita.

Estas interese, ke la programanto tamen bezonas kelkajn sciojn pri la uzata vojo. Tio montrigxas, se oni iom reformulas la difino de praid-eco:

praido2(X,Z) :- ido(X,Y), ido(Y,Z)
praido2(X,Z) :- praido2(X,Y), ido(Y,Z)

Laux la "cxiutaga" logiko la difinoj de praido1 kaj praido2 aspektas ekvivalentaj. Sed la PROLOG-masxino repondas la nesuspektindan demandon "praido2(Nepo,Avo) ?" jene:

praido1(Nepo,Avo) ?
Out of local stack during execution

La masxino ne kapablas konkludi pri la predikato praido2; do tamen la programisto devas havi certan scion pri la konkluda procezo.

bildo 20

3.3.4 Homa menso kaj programado

3.3.4.1 La du flankoj de la cerbo

La diferencon inter la (eble) okcidenta kaj la (eble) orienta aliro al programado estas interpretebla ankaux laux alia maniero. Esploroj pri la homa cerbo montris, ke (cxe dekstramanuloj) la maldekstra duono de la cerbo funkcias analitike, sisteme, pasxo-post-pasxe, do kiel la ordonema/procedura programado. Tiu maniero pensi estas superrega por la "okcidenta", teknika civilizacio, por la ingxeniersciencoj gxenerale.

La dekstra duono funkcias tutece, spontanee kaj sen konscio pri lineare pasanta tempo. Gxi montras multajn trajtojn, kiujn S. Freud atribuis al la "subkonscio", kaj gxi pli karakterizas la orientan filozofion. En okcidentaj socioj gxi estas pli la regno de artistoj kaj poetoj, sed necesas rimarkigi, ke gxi estas tre grava ankaux por ingxeniero, cxar la "maldekstra" pensado ne estas kreema, gxi ne produktas novajn ideojn kaj impulsojn.

bildo 21

3.3.4.2 Du specoj de posxkalkulilo

Posxkalkuliloj jam longe farigxis cxiutagajxo en multaj landoj, ecx tiom, ke la kapablo mense kalkuli malprogresas. La plej multaj kalkuliloj estas manipulataj per enigo de matematikajxoj en la sama formo, kiel oni notas ilin sur papero: nombroj kaj operaciiloj alternas, kaj parentezoj (krampoj) ordigas la operaciojn. Oni povus nomi tion la "lerneja notacio", cxar kutime oni gxin lernas en la unuaj klasoj de la lernejo. Faka nomo por gxi estas "infiksa" formo, cxar la operaciiloj staras inter la operaciatoj.

Tia ne cxiam estis la manipulado de kalkuliloj: La unuaj kalkuliloj ne posedis krampojn, kaj necesis memori interrezultojn aux noti ilin sur papero. Konsideru jenan ekzemplon:

(13 + 8) * (120 - 47)

Por kalkuli tion per senmemora kalkulilo oni povus unue kalkuli (13 + 8) = 21. Por tiam kalkuli (120 - 47) = 73 necesas memori aux noti la 21; nur poste eblas la fina multipliko 21 * 47 = 1533.

Posta generacio de kalkuliloj havis internan memoron, unue por unu interrezulto, poste ecx por pluraj, sed tamen la organizado de la interrezultoj estis tasko de la kalkulanto. Nur post multaj jaroj alvenis la krampoj, kaj la kalkulilo transprenis la organizadon: Eblas nun enklavi la formulo tia, kia gxi staras en la cxi-supra kadro.

La analizo de parentezoj estas por komputilo ne tute simpla takso, tial ne mirigas, ke la unuaj posxkalkuliloj ne posedis tiun kapablon. Sed ekzistas alia speco de kalkuliloj, kiuj ne posedas krampo-klavojn, sed klavon nomatan "Enter" ("enigu"). Ili akceptas matematikajxojn en senkrampa formo, kie la vicordon de operacioj difinas nur ilia pozicio en la enigo. La du fundamentaj principoj estas:

La klavo "enigu" necesas por disigi nombrojn, inter kiuj ne estas operacisimbolo. Tiu notacio nomigxas postfiksa (cxar la operacioj staras post la operaciatoj) aux inverse Pola formo. Tiu cxi nomo venas de la Pola matematikisto &Lstroke;ukasiewicz, kiu uzi prefiksan formon. La cxi-supra formulo en tiu notacio aspektas jene (punktokomo reprezentas la klavon "enigu", kiu antaux operaciiloj estas forlasebla):

13; 8; + 120; 47; - *

La postfiksa formo estas nekutima al tiuj, kiuj normale uzas la infiksan, sed la vendo de postfiksaj kalkuliloj pruvas, ke eblas kutimigxi al gxi. Ne sxajnas, ke la sukceso de tiu tekniko koncentrigxas al certaj landoj aux kulturoj. Iom alia afero estas la teknika bazo malantaux gxi.

3.3.4.3 La stako

La pasxoj de la kalkulado de la cxi-supra postfiksa formulo estas bildigeblaj jene:

13 8 + 120 47 - *
47
8 120 120 73
13 13 21 21 21 21 1533

La unua vico (verdaj kampoj) montras la postfiksan formulon, la aliaj vicoj la internajn statojn de la kalkulilo, kiujn la uzanto ne vidas. Efektive la kalkulilo do memoras la interrezulton "21", dum gxi kalkulas "120 - 47". Observu, kiel enigitaj nombroj aperas supre en la internaj datenoj kaj operaciiloj "formangxas" du nombrojn por produkti unu novan.

bildo 22

La interna stato de la kalkulilo aspektas kiel stako, sur kiun oni metas nombrojn, kiujn poste forprenas operacioj. Sxangxigxas cxiam nur la supro de la stako. Tia strukturo estas grava por la informadiko, kaj gxi efektive nomigxas "stako". En la ekzemplo la stako atingas maksimuman altecon de tri, sed laux la komplekseco de la formulo gxi povas atingi ajnan altecon.

Stakoj utilas por multaj aferoj; unu tre utila apliko estas organizi la helpmemorejojn en la kalkulado de aritmetikaj formuloj (kiel en la cxi-supra postfiksa ekzemplo). Tiun aplikon trovis nur en la 50-aj jaroj de la 20-a jarcento Germanaj sciencistoj (Bauer, Samelson). La Germana lingvo ankoraux uzas krom la termino "stako" ("Stapel") ankaux la originan terminon "kelo" ("Keller"). Ekzempla masxino por demonstri la analizon kaj transformadon de parentezaj formuloj al staka formo estis la "formula kalkulilo STANISLAUS" de Angstl (1957).

La fakto, ke Germanoj inventis la stakon, povas ja esti pura hazardo. Sed la Germana havas la trajton, ke gxi emas meti parton de la verbo al la fino de la frazo kaj tiel produktas altajn sintaksajn stakojn, kion jam humure kritikis la Usona verkistoj Mark Twain, kiu diris:

"Kiam vi parolas al klera Germano, vi ne plu vidos lin, gxis kiam li elakvigxas cxe la alia flanko de la Atlantiko kun la verbo en la busxo."

La stakajn strukturojn de la Germana eblas imiti en Esperanto, kvankam la rezulto certe estas bonstila. Jen ekzemplo (kiu ecx en la Germana sonas iom strange):

  • la malutilo,
    • kiun la eraro,
      • kiun la programisto,
        • kiu senzorge laboris,
      • preteratentis,
    • kauzis,
  • estis grandega.
  • Der Schaden,
    • den der Fehler,
      • den der Programmierer,
        • der unachtsam arbeitete,
      • übersah,
    • verursachte,
  • war gewaltig.

Almenaux Mark Twain opiniis, ke Germanaj cerboj estas aparte bone trejnitaj pri stakoj. Cxu do tamen pli ol hazardo, ke Germanoj inventis la stakon?

bildo 23

4 Historio de komputado

Per la ekzemplo de la stako ni jam suriris la kampon de historiaj komparoj, kiu ofte estas pli facile esplorebla ol tiu de la gxenerala kulturo nuntempa. El la historio ni konas precipe elstarajn eventojn. En la historio de tekniko kaj teknologio elstaras inventoj kaj pioniraj sciencistoj kaj teknikistoj. Jen elekto de pioniraj komputilistoj, kiun oni certe povus plilongigi:

Tiu cxi listo ignoras cxiujn komputilmasxinajn pionirojn, kiaj Pascal, Leibniz, Schickard kaj aliajn, kiuj konstruis purajn adiciilojn, "horlogxe" funkciantajn (estis Schickard, kiu ekuzis la esprimon "kalkulhorlogxo"). Gxi krome ne mencias du homojn, kiu per siaj inventoj havis grandan influon al la storado de ciferecaj informoj: Jacquard kaj Hollerith.

bildo 24

Jacquard kaj Hollerith progresigis informportilon, kiu dum preskaux jarcento havis grandan signifon en la informadiko: la trukarto. Specimenon de trukarto (kaj trubendo) montras bildo. Koncizan klarigon pri la truskemoj donas alia skizo.

Joseph-Marie Jacquard uzis trukartojn por regi la funkciadon de mekanika teksilo. La principo de la trukarto (aux de nocxo-bobeno, kiu estas simila) jam estis konata de auxtomataj muzikiloj, sed tie temas normale nur pri la simpla manipulado de valvo aux batilo. Jacquard gxin aplikis al industria produktado por produkti teksajxojn kun komplikaj strukturoj, gxis tiam fareblaj nur de homoj. Depende de la truoj en kartoj la teksilo plenumis kompleksajn funkciojn; gxi estis vere "programebla".

Hermann Hollerith La grandskalan uzon de trukartoj por la pura reprezento de informoj enkondukis Hermann Hollerith, Germandevena Usonano. En Usono la registaro konstatis, ke post la censo de 1880 la analizo de la datenoj dauxris plurajn jarojn, kaj oni timis, ke eble la datenoj de la planata censo de 1890 ne estos analizeblaj gxis la postvenonta censo de 1900. Tial gxi organizis konkurson por pli efikaj metodoj. Hollerith proponis masxinon, kiu kapablis ordigi stakojn da trukartoj laux diversaj kriterioj, tiel, ke oni povis facile dividi stakon laux tiuj kriterioj, ekzemple laux la sekso aux agxo de homoj. La masxinoj de Hollerith savis la censon de 1890, kaj li fondis tre sukcesan firmaon pri oficejaj masxinoj.

Ekzistas anekdoto pri kiel Hollerith havis la ideon, stori informojn pri homoj sur trukartoj, kaj tiu anekdoto montras unu eblan kauxzon, kial tiu invento estis farita gxuste en Usono. Laux gxi Hollerith rimarkis, ke fervojaj konduktoroj faris ofte plurajn truojn en bileto (aux en gxia rando), kvankam por senvalorigi ja suficxas unu truo. Li eltrovis jenan kauxzon:

Usonaj trajnoj tiutempe jam havis vagonojn, kiuj estis interne traireblaj laux la tuta longeco, dum ke Euxropaj vagonoj konsistis el unuopaj kupeoj, kiuj havis propran pordon al la ekstero, sed ne inter la kupeoj. Sekve Usonaj pasagxeroj povis libere movigxi en la trajno kaj intersxangxi siajn biletojn, tiel ke du homoj povis uzi la saman bileton. Por malhelpi tion la konduktoroj true kodis la aspekton de la pasagxeroj, ekzemple agxon, sekson, koloron de hararo. Tio lauxdire donis al Hollerith la ideon, uzi trukartojn por la analizo de la censo. Nu, se gxi ne estas vera, gxi estis bone inventita.

bildo 25

Charles Babbage

Sxajne la unua, kiu havis la ideon pri masxino kapabla fari "decidojn" (kiu laux sia interna stato povas elekti inter du pluaj vojoj), estis Charles Babbage. Li skizis la modelon de "Analitika Masxino", kiu esence estis (pure mekanika) programebla komputilo. La unuajn programojn por tiu masxino publikigis lia kolegino Ada Lovelace. Ambaux vivis en Anglio. Tio povus indiki, ke la "pesila" pensadmaniero helpis al ili en siaj inventoj.

Alan M. Turing Alia fama Angla komputilpioniro estis Alan M. Turing. Li ne desegnis aux konstruis konkretajn masxinojn, sed okupigxis pri la teorio. Eble lia plej fama artikolo estas pri "Komputaj masxinoj kaj inteligenteco" (Computing machinery and intelligence"), en kiu li okupigxas pri la demando "cxu masxinoj povas pensi". Sed li laboris ankaux pri pure matematikaj problemoj de komputado, ekzemple pri "Pri komputeblaj nombroj, kun apliko pri la decidproblemo (Entscheidungsproblem)" (On Computable Numbers, with an Application to the Entscheidungsproblem).

Konrad Zuse

Tute alispeca homo estis Konrad Zuse, kiu laux gxenerala opinio konstruis la unuajn verajn komputilojn. Li malpli okupigxis pri filozofiaj implicoj de sia laboro, kaj kiam li faris, estis pro konkretaj aplikoj. Li estis vera ingxeniero, kiu kun modestaj rimedoj konstruis impresajn masxinojn, cxe kio interesis lin ankaux la ebleco de seria produktado kaj precipe la praktika utilo de la masxinoj. La karakterizaj trajtoj de Zuse, kiu estis Germano, eble plej klare elstaros, se ni komparas lin al samtempulo, kies influo estis simile, eble ecx pli granda.

bildo 26

Tiu samtempulo estis Neumann Janos, aux Johann von Neumann, aux John v. Neumann. Naskita Hungaro, li tempe laboris en Germanio, elmigris al Usono kaj farigxis Usona civitano, ecx tre honorata. Tial estas malfacile enordigi lin kiel Euxropanon aux Usonanon. Male al Zuse, li ne kiel solulo konstruis masxinojn, sed laboris en teamoj aux gvidis ilin.

Neumann J.

Grava invento de Neumann estis la arkitekturo, nomita laux li, ke komputilo povas konsisti el

Pro la dua mondmilito von Neumann kaj Zuse ne povis havi kontakton. Von Neumann ecx laboris pri projektoj gravaj por la militado, dum ke la Germana registaro ne vidis militan signifon de la laboroj de Zuse.

Tre interese estas kompari la sintenojn de von Neumann kaj Zuse pri du problemoj, pri kiuj ambaux okupigxis.

La diabla drato

Kiel jam dirite, en la arkitekturo de von Neumann la programoj kaj la datenoj rezidas en la sama memoro; tiel estas principe eble, ke komputila programo modifu sin mem. Tio estas alia afero ol la procezo, en kiu programo modifas aux kreas alian programon, ekzemple tradukas gxin el altnivela lingvo en masxinlingvon. Por von Neumann tiu kapablo estis esenca. Kontrauxe Zuse ja konsciis pri la teknika ebleco, sed diris, ke tiun "diablan draton li ne konektis", cxar tiel la programoj farigxus tro malfacile antauxkalkuleblaj.

La glitkoma aritmetiko

La masxino "Z3" de Zuse, kiun li konstruis en 1943, posedis "glitkoman aritmetikon". Tio signifas, ke gxiaj programantoj ne bezonis zorgi pri la proksimuma grandeco de la nombroj; ili ne devis timi, ke nombroj tro grandaj aux tro malgrandaj maldekstre aux dekstre "rompus" la limojn de la masxina aritmetiko. Tio estas normala sinteno por fizikisto, kiu komence de longa kalkulado eble ne scias, cxu la rezulto (aux pli grave: la interrezultoj) estos en la grandeco de duilionoj aux trilionoj da kilogramoj aux metroj.

Zuse do, malgraux cxiuj teknikaj problemoj, realigis glitkoman aritmetikon. Palmer kaj Morse, la postaj arkitektoj de la glitkoma procezilo 8087, jene raportas pri li (ili erare metas umlauxton "ü" en lian nomon):

"La unua aparata realigo de glitkome aritmetiko estas atribuata al Konrad Züse. Li enigis gxin en masxinon nomitan "Z3", konstruitan en Germanio en 1941. ... Multaj konceptoj troveblaj en la nuna glitkoma normo de IEEE estas respureblaj gxis la laboro de Züse."

Von Neumann, kiu ja konsciis pri la ecoj de glitkoma aritmetiko, havis tute alian opinion. Palmer kaj Morse tion jene esprimas:

"John von Neumann, de multaj konsiderata la patro de la moderna cifereca komputilo, sentis nenian bezonon por tia helpilo, cxar mane zorgi pri la fiksa-koma skalado postulis de la programanto nur malgrandan kroman laboron (li mem ja havis neniun problemon pri tio)."

Certe videblas en la vidpunkto de Zuse tiu de la ingxeniero, kiu celis faciligi la homan laboron per ekspluato de la tekniko. La vidpunkto de von Neumann estas pli tiu de la sciencisto, kiu volas esplori la limojn de la teknikaj kapabloj, ne oferante ion ajn al homaj malfortecoj. Kiusence tiu diferenco estas persona kaj kiusence kultura, estas malfacile decideble, cxar von Neumann ja estis Euxropdevena, sed certe sentis sin grandparte vera Usonano.

5 Homaj kaj komputilaj lingvoj

Komputilaj lingvoj, kiuj komence orientigxis precipe laux la komputilaj arkitekturoj, pli kaj pli akiris pli homajn trajtojn. Oni povus konsideri la krampan formon de aritmetikaj formuloj pli homeca ol la postfiksan; sed cxu gxi estax gxenerale homa aux specifa al iu kulturo? La cifera sistemo kun la nulo estas Hind-devena, la bazaj formoj de la ciferoj estas Arabaj; sed eble la infiksa aritmetika sistemo kun dekumaj ciferoj estas ja la plej tauxga por homoj.

Sed multajn lingvosistemojn uzatajn en komputiloj grave influis iu aux alia homa lingvo, do ankaux la rilata kulturo.

5.1 Aritmetikaj lingvoj

Multaj komputilaj lingvoj uzas la infiksan, krampan formon; aliaj la postfiksan, sed ne cxiuj. La iam multe uzata lingvo COBOL uzas anglajn vortojn anstataux operacisignoj. Tiel la pligrandigo de iu variablo ("C") je unu, esprimebla en la lingvo C per la tri simboloj "C++", en COBOL esprimigxas per

ADD 1 TO C GIVING C

La C-instrukcio "C++" certe estas malfacile komprenebla por nesciantoj de C, do ni konsideru anstatauxe la PASCAL-formon "C := C + 1", kiu estas pli proksima al la lerneja matematiko. Cxu la COBOL-formo havas avantagxojn super la PASCAL-a? La argumento, ke COBOL-on povas kompreni homo sen artimetika scio, certe ne estas gxusta; kiu komprenas la koncepton "adicii" (Angle "add"), certe komprenas ankaux la pluso-simbolon ("+"). La simbolo ":=" ("estu", "igxu") estas malpli facile komprenebla; sed kiu ne konas la koncepton de variablo, kiu povas lauxvice alpreni diversajn valorojn, versxajne ankaux ne komprenas la sencon de "GIVING". Do la precipa diferenco versxajne estas, ke por kompreni la COBOL-instrukcion necesas kompreni la PASCAL-instrukcion kaj (iom) la Anglan lingvon. Cxu tio estas avantagxo, dependas de la vidpunkto.

5.2 Komputilaj regvortoj

La COBOL-simboloj "ADD", "TO" kaj "GIVING" estas ekzemploj de t. n. regvortoj, vortoj, kiu havas fiksan signifon (kiel ideogramoj). Principe eblas konstrui komputilajn lingvojn sen regvortoj, se oni uzas apartan ne-vortan simbolon por cxiu baza koncepto. Ekzemplo de tia lingvo estas APL.

Inter alie tre similaj lingvoj la uzo de regvortoj ofte varias kaj estas influata de pli-malpli hazardaj kulturecaj cirkonstancoj. La lingvo ALGOL 60, kiu estas iusence prapatro de C, uzis ekzemple la Angla-devenajn regvortojn BEGIN kaj END por marki la komencon kaj finon de bloko. En gxia ido ALGOL 68 tiuj simboloj estis anstatauxigeblaj per anguloj: kaj  . Tiuj simboloj certe estis pli internaciaj ol regvortoj, sed ili ne estas troveblaj sur multaj komputilaj klavaroj. Tial la regvorta formo superregis en la uzo de ALGOL.

Aliflanke la lingvo C, kiu estas la unu el la plej sukcesaj idoj de la ALGOL-a familio, uzas la vostajn (kunigajn, vinkulajn) krampojn {} por marki blokojn. Tiuj simboloj estas troveblaj en la signaro ASCII ("Askio"), kiu cxe la ekesto de C estis tre disvastigita, sed en la tempoj de ALGOL ne. Estas notinde, ke tiuj krampoj apartenas al la malmultaj signoj, per kiuj diferencas la diverslingvaj variajxoj de Askio; ekzemple la Germana Askio uzas tiujn du kodojn por la umlauxtoj "ä" kaj "ü". Tiuj variajxoj cxiam devis batali kontraux la originala Askio, kaj la lingvo C sendube kontribuis al ilia malpopulareco almenaux inter programistoj. Intertempe oni enkondukis t. n. trigramojn, kombinojn el tri signoj por anstatauxi la ne cxie disponeblajn simbolojn, sed ili apenaux estas praktike uzataj.

bildo 28

5.3 Diverslingvaj bazoj

5.3.1 La Angla lingvo kiel bazo

Ni vidis, ke la forta uzo de homlingvaj konstruajxoj en komputilaj lingvoj eble favoras parolantoj de la koncerna lingvo, sed ne havas fortajn avantagxon kontraux pure simbolaj lingvoj. Bedauxrinde estas malfacile trovi seriozajn esplorojn pri tiu temo, kiu sxajnas interesi nek informadikistojn nek lingvistojn aux psikologojn. Ni almenaux konsideru alian, iom pli ampleksan ekzemplon pri COBOL:

call "PC_WIN_SET_PDEF_FONT"
using by reference z"Courier"
by value 10 size 2
returning Printer-Status-Code
end-call

Anglalingva leganto sen multaj scioj pri COBOL povus havi la impreson, ke jen ne tre bela, sed tamen iel komprenebla frazo, kiu havas Anglan sintaksan strukturon. Tiu impreso tamen estas sxajna kaj bazigxas parte sur lerta elekto de la sxlosilvortoj, parte sur la morfologia malricxeco de la Angla lingvo. En la du vortoj "using" kaj "returning" la finajxo ing havas malsamajn signifojn, kiujn devas eltrovi la menso de la leganto: "using" estas gerundio ("uzante"), sed "returning" epiteta participo ("redonantan"), kiu rilatas al la vokata subprogramo. Pro tiaj kialoj la komputilo malfacile povas orientigxi laux la homlingvaj gramatikajxoj, sed devas insisti pri aliaj strukturiloj.

Se malsperta programisto ignoras tion, povas ekesti strangxaj fenomenoj. En kurso pri la lingvo FORTRAN, en kiu la auxtoro iam instruis, multaj studentoj lerninte la operaciilojn "IF" ("se"), ".LT." ("malpli ol") kaj ".AND." gxoje faris konstruojn kia la sekva:

IF X .AND. Y .LT. 30 ...

kiu signifu "se x kaj y (ambaux) estas malpli ol 30...", sed estas erara en FORTRAN: la tradukilo ne povas kompreni la elipson (la plena frazo ja estas "se x estas malpli ol 30 kaj y estas malpli ol 30..."). La sxajna homeco de la simboloj misgvidis la programantojn.

5.3.2 Aliaj lingvoj kiel bazo

bildo 29

La moderna informadiko povus doni la impreson, ke cxiuj komputillingvoj iel bazigxas sur la Angla lingvo. Sed tiel ne cxiam estis. La asembla lingvo de la komputilo TR 440, el la 70-aj jaroj, senprobleme bazigxis sur la Germana lingvo. Same cxirkaux 1975 ekestis projekto, bazi programlingvon sur Esperanto. La lingvo nomigxis "PROGRESO" (priskribo aperis en la Germana) . Ni rigardu ekzemplan programpecon:

SKRIBU TEKSTAN FORMON DE N0 DE BONAJ RESPONDOJ -1.
INKREMENTU I'N.
SE I <= J, RIPETU EKDE LA (4).
FINU.

La intenco de PROGRESO estas klare ekkonebla: La uzo ne nur de Esperanto-vortoj, sed ankaux de gramatiko faciliu al la programanto la komprenon. PROGRESO celis precipe la ne-profesian programanton, kiu verkas por si mem "unu-fojajn" programojn, kiuj servas ekzemple por la analizo de iu scienca eksperimento kaj poste estas forjxetitaj.

Eble PROGRESO-programo estas por scianto de Esperanto vere pli facile komprenebla ol alilingva programo. Tio ne nepre signifas, ke ankaux la aktiva verkado de programoj estas pli facila. Pro la negranda sukceso de PROGRESO mankas datenoj por tiun demandon esplori.

5.3.3 Cxu gramatiko helpas?

La ricxeco de PROGRESO je gramatikaj elementoj povas sugesti, ke ili pli bone ol en aliaj lingvoj helpas la komputilon kompreni la strukturon de la programo. Efektive la uzo ekzemple de "-N" kaj "-U" en PROGRESO respondas al la akuzativo kaj imperativo en Esperanto, kaj komputilo (pli precize la PROGRESO-tradukilo) povus uzi tiujn finajxojn en sia analizo. Tiusence PROGRESO havas avantagxon al aliaj lingvoj, kiuj ne aux malmulte uzas homlingvajn gramatikajn morfemojn.

La teorie ebla efiko estas simila kiel en homaj lingvoj: La ricxeco je finajxoj ebligas pli liberan "vort-ordon". La instrukcio "INKREMENTU I'N" estus same bone analizebla en la inversa ordo ("I'N INKREMENTU") -- se tion permesus PROGRESO. Sed la lingvo ne ekspluatas tiun teorian eblecon, kaj versxajne tiel estas prudente. La libereco ne vere utilus al la programanto.

La demando, kiugrade la programanto profitas de homlingvaj elementoj en komputilaj lingvoj, estas malfacile respondebla, cxar mankas sistemaj esploroj pri tiu temo. Sendube estas pli malfacile lerni lingvon kun multaj arbitraj elementoj; ekzemple lingvo, kie bloko estus markita per "hqxhq...hxqxh". Sed cxar programado entute estas malfacila afero, la diferenco eble ne tro gravas.

bildo 30

6. Homa lingvo en komputiloj

La unuaj komputiloj servis precipe por veraj kalkuladoj, sed baldaux ankaux por prilaborado de homlingvaj datenoj. Unue tio estis nur litergrupoj, kies interna strukturo ne gravis, ekzemple en nomlistoj, kiujn ordigis komputilo. Sed intertempe komputiloj prilaboras homlingvajxojn ankaux enhave, plejparte en skriba formo. Bona ekzemplo estas ortografiaj helpprogramoj, kiuj trovas kaj (eble) korektas literumajn erarojn en tekstoj, aux kompostaj programoj, kiuj memstare disigas vortojn cxe la fino de linio.

Cxar ciferecaj komputiloj interne laboras plejparte per bitoj, la traktado de homa lingvo necesigas sistemon por reprezenti literojn kaj aliajn skribsimbolojn per bitoj. La decido, kiu bitaro signifu kiun signon, estas principe arbitra kaj tial malfacila.

6.1 Reprezentado de homa lingvo

La plej multaj homlingvaj datenoj, kiuj trovigxas en komputiloj, estas en formo, kiu pli-malpli kodas la skribsimbolojn de iu lingvo. Trovigxas ankaux datenoj en auxdebla formo, inter ili parolata lingvo, ekzemple en komputilaj enciklopedioj. Cxar cxiuj komputiloj laboras ciferece (tio estas kvazaux parto de la difino de "komputilo"), ankaux la sondatenoj estas en cifereca formo, sed en tiom dense mezurata formo, ke homa orelo ne konstatas la diferencon.

Demandate pri la esnca diferenco inter tiuj du formoj de lingvaj datenoj oni emus diri, ke la unua formo (skriba) estas optika kaj la dua akustika, sed pli gravas alia diferenco: Tion oni vidas komsiderante, ke skribo estas ciferecigebla ankaux en bilda formo, kiel en telekopiilo, kiu transformas skribajxon al bildo el nigraj kaj blankaj punktoj; aliflanke parola lingvo estas kodebla en formo de "fonemoj", ekzemple kiel signoj de fonetika alfabeto, kiun tauxga programo povas rekonverti al auxdebla formo. La grava diferenco estas, ke sonregistrajxoj de parola lingvo kaj nigra-blankaj bildoj de skribajxoj estas "nekoditaj"; ili povus same enhavi iujn bruojn respektive senstrukturajn bildojn. Kontrauxe koditaj literoj aux fonemoj havas klarajn rilatojn al homa lingvajxo (kvankam eblas kodi neprononceblajxojn, kia "kqtyx"). La kodita formo ofte estas multe pli kompakta, cxar gxi povas ignori multajn detalojn: formon de literoj, grandecon kaj stilon de skribo, malpurajxojn en la papero ktp. Malavantagxo de la kodita formo estas, ke gxi bezonas kodon, kaj cxar cxiu kodo estas finia konvencia sistemo, estas cxiam la risko, ke iu bezonata simbolo ne estas reprezentebla en la elektita kodo.

La unuaj ne-nombraj simboloj amase uzataj en komputiloj estis latinaj literoj. La kodojn por reprezenti ilin ofte difinis la produktantoj de komputiloj. Pro la diversaj signaroj de diversaj lingvoj ankaux la kodoj variis inter landoj kaj lingvoregionoj.

Estas interesa fakto, ke jam multajn jarojn antaux la komputiloj de Zuse ekzistis du tre disvastigitaj duumaj kodoj por literoj: la tru-karta kodo de Hollerith kaj la teleksa kodo (uzata ankaux por trubendoj). Principe oni povintus transpreni ilin ankaux por la interna uzo en komputiloj, tiom pli, ke multaj komputiloj legis datenojn de trukartoj. Versxajne la precipa kauxzo, ke tio ne okazis, estas la fakto, ke trukarto uzas 12 bitojn por cxiu simbolo, suficxe por 4096 simboloj, kio sxajnis granda malsxparo; aliflanke la teleksa kodo suficxas nur por 32 simboloj, tiel ke necesas sxalti tien kaj reen inter literoj kaj neliteroj. Do la produktantoj difinis kodojn, kiuj evitis sxaltadon kaj tamen uzis malpli ol 12 bitojn por unu signo; plej ofte 6, 7 aux 8 bitojn.

Laux disvastigita opinio komputilaj kodoj por literoj cxiam bazigxas sur la baza Latina alfabeto, uzata en la Latina kaj (kun restriktoj) Angla kaj Nederlanda lingvo, kaj aux ignoras aliajn alfabetojn kaj latinajn diakritajn signojn aux almenaux metas ilin en la duan vicon. Tiel ne cxiam estis. La jam menciita komputilo TR 440 uzis la tiel nomatan "Telefunken-Zentralcode" (centra kodo de Telefunken, 8-bita, kies listo certe ne plu estas havebla), kiu ne nur posedis la specialajn literojn de la Germana lingvo (umlauxtoj kaj "ß"), sed ankaux multajn utilajn operaciilojn, kiuj mankas en la poste superrega kodo ASCII (Askio), ekzemple . La Germanaj specialaj literoj ne trovigxas en iu aparta sekcio de la kodo, sed estas envicigitaj tuj post la litero "z" (male al ekzemple la Sveda lingvo, la Germana ne havas difinitan alfabetan pozicion por umlauxtoj).

Intertempe pli kaj pli da sistemoj uzas la internacie normigitajn kodoj ISO 8859/*, po 8-bitajn, kiuj povas reprezenti multaj alfabetajn lingvojn, sed ne miksxajxojn inter malsamaj lingvoj aux lingvojn kun multaj ideogramoj (ekz. la Cxinaj aux Japanaj ideogramoj). Por tiuj ofte suficxas Unikodo (Angle: Unicode), 16-bita; ecx pli ampleksa estas la normo ISO 10614 (32-bita), kiu ampleksas Unikodon en sia unua "tavolo" (BMP = basic multilingual plane = baza multlingva tavolo).

bildo 31

6.2 Masxina tradukado

La nura kodado kaj memorado de lingvaj datenoj preskaux ne koncernas la enhavon. La plej simplaj programoj, kiuj okupigxas pri la enhavo, estas ortografiaj kontrolprogramoj, kiu trovas kaj parte ecx korektas literumajn erarojn; sed tiaj programoj ne okupigxas pri signifoj (semantiko). La semantikon de unuopaj vortoj aux fiksaj vortgrupoj traktas scio-prilaboraj sistemoj. Pli altan semantikan ambicion, nome pri la kompreno de frazaj strukturoj, oni trovas en du kampoj de programado: artefarita inteligento (AI) kaj masxina tradukado (MT). Pri artefarita inteligento temos pli posta capitro.

MT estas evidente tre kulturdependa temo, cxar en cxiuj landoj la esplorantoj okupigxas precipe pri la tradukproblemoj tie plej gravaj. Tion kauxzas nelaste la distribuo de la esplorfondusaj rimedoj. Rimarkeblas almenaux jenaj faktoj:

6.2.1 Pontolingva tradukado kaj DLT

La MT-esplorado eltrovis, ke estas multe pli malfacile kompreni homan lingvon ol produkti gxin. Tial nature aperis la penso, ke la kompreno okazu kun helpo de homo, sed la produktado auxtomate. La unua granda esplorprojekto tiurilata estis DLT (Distributed Language Translation), plenumita de la Nederlanda firmao BSO (Buroo voor Systemontwikkeling). La baza ideo estis, ke komputilo transformu frazon el iu lingvo al "pontolingvo" (aux interlingvo), el kiu eblas tute auxtomata traduko al multaj (cxiuj?) aliaj lingvoj; Tiu transformado al la pontolingvo okazu lauxbezone kun helpo de la auxtoro de la originala teksto, kiu devas respondi "senambiguigajn" demandojn. Ekzemple legante la Esperanto-vorton "kruro" la programo povus demandi "cxu 'kruro' estas la tuta gambo aux nur gxia malsupra parto?", cxar tiu informo estas bezonata por traduki ekzemple al la Germana lingvo, kiu ne havas unu vorton kun ambaux signifoj. Uzante artefaritan inteligenton la programo povas eble eviti multajn demandojn, konkludante el la kunteksto (= "komprenante").

6.2.2 UNL

UNL La pontolingvo de DLT estis bazita sur Esperanto. Pli nova projekto uzas Anglecan pontolingvon: UNL (Universal Network Language) celas precipe retpagxojn, kiujn aux la servilo aux ecx la krozilo traduku el UNL en cxiun deziratan lingvon. La projekto estas administrata de la Universitato de UN en Japanio.

La sekva bildo montras, kiel UNL strukturas enigitan frazon, laux la ekzemplo:

Each member country will have one vote in the Trusteeship Council.

strukturo de enigita frazo en UNL

La sekva ekzemplo, pli simpla, temas pri la Angla frazo "Yesterday I ran in the street" ("hieraux mi kuris sur la strato"). Gxi diserigxas al aganto (agt) kun agado, prepozicia subpropozicio (ppl) kaj tempa adverbialo (tim):

agt(run(icl>event).@pred.@entry.@past,I) okazis kurado, aganto estis "mi"
ppl(run(icl>event).@pred.@entry.@street.@def) la kurado okazis strat-e
tim(run(icl>event).@pred.@entry.@past,yesterday) la kurado okazis pasinte, hieraux

6.2.3 La Babel-fisxo

Babel-fisxo

Momente UNL ankoraux ne povas solvi la traduk-problemon de TTT; sed jam ekzistas auxtomata tradukservo, kiu gxis certa kvanto da teksto ecx estas senkosta: la Babel-fisxo (trovebla en la TTT ankaux tie). La nomo venas el novel-serio de Douglas Adams ("Petveture tra la galaksio"), en kiu la tradukproblemo estas solvata pere de etaj fisxoj, metitaj en orelon, kiuj tradukas cxiun eblan lingvon. La reta Babelfisxo momente ne havas elstaran tradukkvaliton (mi hezitis skribante tion, sed certe ecx la advokatoj de SYSTRAN samopinias), sed foje la rezulto suficxas por kompreno. Disponeblas nun (jaro 2000) nur paroj de Euxropaj lingvoj, el kiuj unu necese estas la Angla.

bildo 32

7 Psikologio de programado

Programistoj estas bezonata kaj ne malmultekosta homspeco, do konsilindas formi iliajn laborkondicxojn tiel, ke la rezultoj estu bonaj. Tio gravas precipe tie, kie kelkaj aux ecx multaj kunlaboras en teamo(j).

7.1 Programada laboro

Estas iom surpriza fakto, ke nun, en la jaro 2000, en multaj landoj mankas programistoj, kvankam la laboro estas akcepteble pagata kaj multaj homoj ecx hobie okupigxas pri aux per komputiloj. Sed montrigxas (kiel la auxtoro povis konstati instruante programadon al centoj da studentoj), ke pri programado apenaux ekzistas indiferenteco: aux oni sxatas aux malsxategas tiun laboron.

Troige oni asertis, ke programistoj ecx laborus sen salajro, nur pro la plezuro; tio fakte okazas, cxar multaj kontribuis kaj kontribuas senpage al projektoj de "malferma fontajxo", kiuj libere disponigas la fonto-kodon de programoj al cxiu ajn kaj tial ofte dependas de la senkosta laboro de volontuloj. Tiaj projektoj estas la mastruma sistemo LINUX aux la skribtabla sistemo KDE.

Ecx en la laboro de programistoj oni ofte konstatas, ke la kerna programado, la tiel nomata kodado (entajpado kaj rulado de programkodado) estas pli sxatata ol "flankaj" laboroj, ekzemple desegno de program-arkitekturo, dokumentado kaj testado.

Jena hipotezo povus klarigi ambaux fenomenojn, la nesxaton de programado unuflanke kaj la nursxaton aliflanke: La kodado distingigxas de cxiuj aliaj aktivadoj per tio, ke gxi donas relative klaran retro-informon pri la sukceso: La programo funkcias aux ne funkcias. Tio estas konsiderebla kiel "lauxdo" aux "riprocxo" al la programisto. Kaj eble guste tiaj homoj, kiuj volas havi tiun tujan kaj klaran lauxdon aux riprocxon, emas labori programiste, almenaux se iliaj kapabloj de tempo al tempo havigas al ili lauxdon. La kauxzoj por tiu prefero povas esti diversaj.

bildo 33

7.2 Programajxa ingxenieriko kaj interhoma komunikado

7.2.1 Bezono de komunikado

"Por programi komputilon necesas komuniki" - jen esenca vero, kiu celas ne tiom la komunikadon inter homo kaj komputilo, sed pli tiun inter homoj. La sola escepto estas programetoj, kiujn unu sola homo verkas por siaj tujaj uzo kaj forjxeto, do por apliko al unu sola, unufoja celo. Sed en cxiuj aliaj okazoj la programanto(j) devas komuniki

Oni povus pensi, ke ekzistas esceptoj: Donald Knuth sola verkis la sistemon TEX, Larry Wall sola verkis perl. Sed ambaux ne nur sukcesis dokumenti siajn verkojn kaj trovi uzantaron, sed ankaux ricevis korektojn kaj kontribuojn de aliaj. Sen komunikado ili ne estus sukcesintaj. Knuth ecx uzis sian sistemon por demonstri specialan komunikigan teknikon ("klera programado").

Ne cxiuj komencantoj pri programado (ekz. studentoj) bone konscias pri tiu bezono je komunikado, kelkajn eble ecx logis al programado, ke la komputilo estas "pli facile traktebla ol homoj". Okazas, ke programistoj kun malbonaj komunikadkapabloj estas tre produktivaj pri program-verkado, tiel ke multaj nomas ilin "super-programistoj" kaj opinias ilin tre tauxgaj kunlaborantoj. Sed longarigarde necesas ambaux kapabloj, la program-verkada kaj la komunikada, por esti bona kaj utila programisto.

bildo 34

7.2.2 Sen-egoa programado

La forta bezono je komunikado en la programado kondukis al grava sperto: Estas facile fali en specon de komunikado, kiu portas nur malmultege da informintersxangxo. Tio okazas, kiam la komunikantoj (aux ecx nur unu el ili) klopodas aserti sin mem kaj utiligas la komunikadon kiel ludon kun la celo, pruvi sian superecon al la alia(j) kaj rikolti lauxdojn, venkojn kaj kontentigxon. Cxar tia strebo estas io fundamente homa, ne mirigas, ke ofte okazas tiaj komunikadoj.

La karakteriza trajto de la senfrukta komunikado estas, ke gxi servas ne al la akiro de informoj, sed al la asertado de la propra memo, de la "egoo". Tial oni nomas la malan komunikadstilon, kiu servas al la komuna celo intersxangxi utilajn informojn, "sen-egoa". Ne estas troigo diri, ke bona programisto devas regi la teknikon de sen-egoeco. Kelkaj ekzemploj ilustru tion.

bildo 35

Kod-reviziado

Kvankam kelkaj fakuloj opinias, ke kun suficxa atento eblas verki sen-erarajn programojn, la praktiko montras, ke ekzistas amaso da programaj eraroj. Parton eblas trovi per testado de programoj; sed simile efika estas trastudado de programoj fare de aliaj personoj. Formala trastudo nomigxas kod-reviziado. Testado kaj reviziado bone komplementas unu la alian, cxar ili emas trovi malsamajn specojn de eraroj.

La organizado de kod-reviziado ne estas facila, cxar la interesoj estas iom kontrauxdiraj:

Necesas klare priparoli tiujn psikologiajn aspektojn kun cxiuj partoprenantoj en reviziado por eviti gxeneralan malkontentecon kaj eble ecx mishumoron en teamo.

bildo 36

Kriterioj de labor-kvalito

Se programado estas ne arto, sed (ingxeniera aux ecx metia) laboro, eblas paroli pri la kvanto kaj la kvalito de tiu laboro. Tio ecx utilas, se oni, kiel en multaj aliaj kampoj de la homa ekonomia vivo, volas dependigi la altecon de la salajroj de tiu kvanto aux kvalito.

La kvanto de farita programado laboro sxajnas facile mezurebla: Eblas ja nombri la kvanton da tajpitaj program- kaj dokument-signoj. Sed same kiel en produktanta industrio la kvanto ne povas esti la sola kriterio; amaso da produktoj fusxitaj pro hasto ne utilas. En programado ecx estus tre facile sxveligi la kvanton de la laborrezultoj, per senutilaj komentoj, ripetoj ktp. Do tia mezuro ne tauxgas por jugxi ies personan laboron, kvankam gxi ja povas doni utilajn informojn pri la grandeco de iu programadprojekto.

Por jugxi laboron laux la kvalito eblas nombri la erarojn trovitajn en iu programo. Tio ne estas tute sensenca, sed necesas atenti du aferojn: Unue la programistoj ne estu malmotivitaj pro la "riprocxado", due la procedo ne instigu ilin prisilenti erarojn, kiujn ili mem trovis. Praktike aplikata ekzemplo estas, ke eraroj trovitaj de uzantoj (klientoj) estas "malpoentoj", sed eraroj, kiujn unue trovis la programisto mem, ne estas -- ecx se la produkto jam trovigxas cxe klientoj, kiuj poste eble trovos la eraron.

Anekdoto rakontas pri firmao, kiu volis samtempe plibonigi la programojn kaj motivi la laborantojn. Tial gxi pagis premion por cxiu korektita eraro! Kompreneble ne dauxris longe eltrovi, ke ju pli da eraroj oni faras, des pli oni povas korekti...

Ekzistas pli rafinitaj kriterioj; ekzemple eblas rekompenci programiston, kiu igas parton de sia programkodo tiel gxenerale uzebla, ke gxi sxparas laboron al kolegoj per "re-uzado". Sed tiaj kriterioj postulas ankaux pli da organiza laboro de la estroj. Kaj cxe cxiuj formalaj kriterioj necesas iom da delikatsento por malhelpi, ke kunlaborantoj sentu sin ne suficxe respektataj.

bildo 37

7.2.3 Klera programado

Knuth La termino "klera programado" (Angle: literate programming) estis kreita de Donald Knuth, kiu verkis libron pri tiu temo. Li celis per tio, ke programanto verku ne jen programon, jen porhoman priskribon de la programo, sed ambaux interplekte. La priskribo enhavu partojn de la programo kaj la manieron, kiel kunmeti ilin; speciala programo tiam kapablas eltiri unuflanke la komputilan programon, aliflanke belan, informivan kaj precipe aktualan priskribon. Cxe cxiu sxangxo de la programo estas facile sxangxi samtempe ankaux la priskribon, cxar la du ja trovigxas apude en la sama dosiero. Knuth mem diras:

"Klera programado estas metodo, kiu kombinas programadan lingvon kun dokumentada lingvo, tiel farante programojn pli fortikaj, pli porteblaj, pli facile mastrumeblaj, kaj defendeble pli plezurige verkeblaj ol programoj verkitaj nur en altnivela lingvo. La centra ideo estas trakti programon kiel pecon da literaturo, direktitan pli al homoj ol al komputilo. La programo estas ankaux rigardata kiel hiperteksta dokumente, simile kiel en la Tut-Tera Teksajxo."

Knuth laux tiu maniero verkis sian faman tekst-kompostan programon TEX; la priskribo estas la same fama TEX-libro (Angle: TEX book). Kvankam la ideo estas iusence rava, gxi ne havis multe da sukceso en la praktiko. Interese estas, ke Knuth emfazas (fine sed ne fone) la plezuron dum la laboro; gxi sxajnas grava elemento kaj ne cxiam anstatauxebla per mono.

Estas interese, ke Knuth verkis ankaux libro-serion, kiun li nomis "La arto de programado" (The art of programming). Li do prezentis iusence kontrauan opinion al Baber, kiu emfazis, ke programado estu ne arto, sed ingxenierscienco. Sed eble ne tiom diferencas la du opinioj, sed nur la terminologioj.

bildo 39

7.3 La membildo de la homo

Kiam la unua industria revolucio anstatauxigis la laborforton de multaj homoj per masxinoj, la sekvoj estis drastaj, cxar manke de socialaj sekurigiloj la homoj estis minacataj de senlaboreco kaj mizero. Certe cxe multaj malkreskis ankaux la sento pri la propra valoro, sed gxi koncernis nur la laboron, ne la tutan vivon.

La komputila revolucio iusence pli funde minacis la homan membildon, cxar komputiloj kapablas fari aferojn, kiuj antauxe estis klare rezervitaj al la homo: Ja cxevalo povas tiri cxaron pli rapide ol homo, sed neniu besto kapablas kalkuli, legi aux skribi. Kaj subite aperis masxinoj, kiuj kalkulis ecx multe pli rapide kaj precize ol homoj! Rapide ekestis la nomoj "pensanta masxino" kaj "elektronika cerbo".

Tio sendube sxancelis la membildon precipe de homoj mense laborantaj. Instruisto pri la Latina lingvo diris, ke komputiloj ja estas stultaj, cxar ili ne kapablas multipliki, nur adicii. Li tute ne pripensis, ke li mem kapablis multipliki nur per adicioj. Sed sxajne li sentis la ekziston de "pensanta masxino" kiel minacon de sia membildo, kaj bezonis kompenson per iu sento de supereco.

Ekzistas pli famaj ekzemploj de batalantoj kontraux tiu minaco:

Gxuste la diferenco inter la vidpunktoj de Lucas kaj Searle montras, kiel malfacile estas diskuti pri konceptoj ne klare difinitaj, ekzemple "pensi", "kompreni" aux "inteligenta". Jam antaux jardekoj Alan M. Turing en sia artikolo Computing Machinery and Intelligence proponis disigi la disputon pri vortoj de la diskuto pri faktoj. Lia fama "imit-ludo", intertempe konata kiel "Turing-testo", estas eksperimento por testi, cxu iu sistemo montras "inteligentan" konduton: Iu homo C dum certa tempo rajtas pridemandi tiun sistemon ("masxinon") kaj homon B, nesciante kiu estas kiu. Se B per siaj respondoj ne povas konvinki A, ke li estas la homo, la konduto de la masxino estas certagrade "inteligenta".

Gxenerale sxajnas, ke komputilistoj multe pli facile akceptas la vidpunkton de Turing ol aliaj homoj. Lucas kaj Searle estas filozofoj, Penrose fizikisto. Al ili la imago de "inteligenta masxino" sxajnas iel minaca.

Turing en 1950 kredis,

"ke post cxirkaux kvindek jaroj estos eble programi komputilojn kun stor-kapacito de cx. 109, por ke ili ludu la imitludon tiel bone, ke mezuma demandanto havos sxancon de ne pli ol 70 elcentoj je gxusta identigo post kxinminuta demandado."
Tio gxis nun ne estis atingita, sed necesas emfazi, ke neniu aktive laboris por gxuste tiu celo laux la proponoj de Turing (kiu proponis masxinojn lernantajn laux la maniero de infano). Sed la pensoj de Turing montrigxis tre fruktivaj kaj instigis al tre gravaj esploroj. Konata estas la programo ELIZA, kiu simulas psikiatron, kaj kiun Joseph Weizenbaum verkis gxuste por montri, ke kredemaj homoj estas tre facile trompeblaj pri la "inteligenteco" aux la "kompreno" de komputila programo. (Esperanto-versio de ELIZA estas disponebla sub la nomo D-ro Teks.) Weizenbaum avertis, ke estas pli grava la dangxero, ke homoj ne komprenas komputilojn, ol ke komputiloj komprenas homojn.

Ni momente certe ne havas la situacion, ke ni frontas masxinon kun inteligenteco egalnivela aux supera al nia. Sed kiam ni havos, ekestos problemo ne teknika, sed etika: Cxu ni ne devus al tia masxino koncedi "homajn" rajtojn? Cxu ne estus murdo, malsxalti tiun masxinon kaj detrui cxiujn gxiajn memorojn? Pri tiu temo okupigxis gxis nun precipe scienc-fikciaj auxtoroj: James P. Hogan en sia novelo "The two faces of tomorrow" defendas tian opinion; Isaac Asimov, kiu versxajne verkis la plej multajn novelojn pri robotoj, neglektis tiun aspekton kaj tusxas gxin nur en la novelo "The bicentennial man" (la ducentjarulo), kie li permesas al unu roboto akiri homajn rajtojn, tamen nur je la prezo tuj poste morti. Estas interese, ke Hogan havas ingxenieran edukon.

La efikoj de la komputila industria revolucio al la labormerkato kaj al la ekonomio estas eksterdubaj; tiuj al la homa membildo iom neglektataj. La estonteco montros, cxu tio povos resti.

bildo 40

8 Resumo kaj konkludoj

El la vastega temkampo de tiu cxi kurso ni povis tusxi nur kelkajn aspektojn; sed ili eble montris kelkajn aferojn, kiuj devenas de la fakto, ke programoj estas farataj de homoj por homoj:

Krome ni vidis, ke ne nur homoj formas programojn, sed ankaux inverse programajxoj influas homojn. Sendube programoj influas la senperan uzanton en ties agado, kaj cxar komputiloj nun troveblas en preskaux cxiuj regionoj de la homa vivo, ili influas ne nur la profesian, sed la tutan vivon. Kaj fine la komputilo kiel masxino, kiu plenumas taskojn iam rezervitajn al homoj, devigas kritike esplori nian membildon.


Literaturo