I dette innlegget vil eg prøva å påvisa det ufornuftige i å inkludera Pascal-programmering i eit semesteremne i edb for humanistar.
På same måten som det har skjedd ein eksplosjon i edb-bruk dei siste ti-åra, har det også skjedd ein eksplosjon i edb-utdanning, både på og utanfor universiteta. I det følgjande er det utdanninga på universiteta eg vil sjå på.
Talet på utdanna studentar har auka dramatisk. Og ikkje berre det; utdanninga er spreidd på fleire institusjonar. Dei første kompetansegjevande utdanningstilboda kom i mat.nat.-miljøa. Dei pretenderte å vera generelle, men var tydeleg farga av kva miljø dei oppstod i. Dette førte til at folk med annan fagleg bakgrunn kjende seg lite heime. Eit problem var at innholdet kanskje ikkje alltid var det som kjendest mest relevant. Men i ettertid trur eg ikkje dette var hovudproblemet. Dette skjedde i ei tid då det fanst svært lite ferdigprogram å hjelpa seg med. Skulle ein ha gjort noko, måtte ein programmera det sjøl. Ein ser og at hovudinnhaldet i faga var programmering med tilhøyrande område som algoritmar, datastrukturar osv. Det var dette som definerte faget. Ein kan kanskje gå så langt som å seia at utan programmering og tilligjande herligheter, ingen datafag. Men i utgangspunktet er faget ikkje definert ut frå kva som i utgangspunktet er vitskapleg, men kva som er nyttig, men altså nyttig på 60- og 70-talet. Det nyttige blir så i neste omgang definert som det vitskaplege. Men etter det har ikkje faget forandra seg vesentleg. Nye område er rett nok kome til, men grunnstrukturen består slik han vart lagd for 20 år sidan.
Ved Universitetet i Tromsø har datafag følgjande emne: Innføring i databehandling, Datateknikk i skolen, Innføring i programmering, Algoritmer og datastrukturar, Numeriske metodar, Systemutvikling og prosjektarbeid, Operativsystem, Kunnskapsbaserte system, Innføring i kunnskapsteknologi og Lisp-programmering, Simulering, Parallellprogrammering og operativsystem, Databasesystem, Datamaskinarkitektur, Programmeringsspråk og kompilatorar, Programstrukturering og programbevis, Kommunikasjon og nett og Interaktiv grafisk databehandling. Som ein ser, svært mykje programmering, og programmeringsrelaterte emner. Langs ein akse maskinvare system samfunn/brukar, ligg hovudtyngda svært nær maskinvara og det som skal til for å manipulera maskinene. Situasjonen ved dei andre universiteta er særskilt mykje onnorleis.
Studentar frå andre fagmiljø reagerte ikkje på det store innhaldet av programmering i datafag. Programmering vart oppfatta som eit generelt hjelpemiddel, som alle var avhengige av. Men meir enn på innhald, vart det reagert på eksempelval. Informatikk vart vanskeleg for t.d. humanistiske studentar, ikkje fordi faget i seg sjøl var vanskeleg, men fordi dei ikkje forsto dei problema ein skulle øva seg i å løysa, eller måtte bruka uforholdsmessig lang tid på å forstå desse. I tillegg fekk dei og sjølsagt lite trening i å løysa dei problema dei seinare kom til å møta i faga sine.
Etter kvart kom det krav om datafag som var betre tilpassa andre fagmiljø enn realistmiljøet. Først ute var Bergen, der Informasjonsvitskap starta undervisninga hausten 1972. Informasjonsvitskap var eit fellesfag for det historisk-filosofiske og det samfunnsvitskaplege fakultetet. Men ser ein på innhaldet i dette nye faget, likna det svært mykje på realistane sitt fag, rett nok med ei dreiing i retning av det eg vil kalla dei mjukare sidene ved databehandling. Men grunnlaget var det same, databehandling var programmering. Men framleis kan ein seia at dette var nytterelatert; særleg humanistane var programmeringsavhengige. Samfunnsvitarane, derimot, var alt kome over i det som seinare vart kalla fjerdegenerasjonstida. Dei dreiv databehandling ved hjelp av programmerbare statistikkpakkar, som t.d. SPSS. Slik sett kan ein seia at for samfunnsvitarar ville det vore nyttigare å læra å bruka desse. Når det ikkje skjedde, skuldast det truleg manglande "vitskaplighet". Faget var alt definert. Programmeringa måtte med. Eg var sjøl med på oppstartinga, og protesterte ikkje. Slik dette faget er blitt, vågar eg påstanden at det skil seg svært lite frå det som elles vert kalla informatikk det er informatikk organisert ved eit anna fakultet. Faget har ikkje løyst trongen for ei meir fagspesifikk edb-utdanning. HF-fakultetet i Bergen har teke konsekvensen av det ved å overføra "sin" del av informasjonsvitskap til SV, og oppretta sitt eige fag.
Også i Oslo vart det oppretta eit semesteremne ved HF-fakultetet (som seinare vart utvida til eit grunnfag). Men det som gjekk igjen var programmeringa. Unntaket var Tromsø, som baserte seg på programpakkar. Eit edb-fag utan programmering ville berre bli eit brukarkurs, og såleis ikkje eit universitetsfag. Eg har sjøl argumentert slik. Men igjen, dette er ikkje noko allmenn sanning. Det er ei sanning definert gjennom sin nytteverdi den gangen informatikk vart til. Når ein opprettar nye fag, så er det både legitimt og naudsynt å stilla spørsmål ved dei gamle etablerte sanningane, også om nødvendigheten av programmering.
Men før ein det gjer må ein klargjera legitimeringa av faget. Når eg heretter snakkar om edb-faget, meiner eg edb i humanistiske evt. samfunnsvitskaplege fag. Når desse faga er oppretta, er det sjølsagt fordi ein del folk har synest at det var trong for dei, eller rettare for dei kandidatane som vert utdanna frå dei. Etter mitt syn kan det i det minste tenkjast tre grunnar til dette:
a. | Svært mange innanfor våre fagområde har teke i bruk edb, og til noko meir enn tekstbehandling. Desse treng tilgang til meir kunnskap enn det som idag finst i miljøa. Edb-faget er ein måte å skaffa fram kunnige edb-brukarar. |
b. | Samfunnet har i stendig større grad teke edb i bruk på svært mange område. For å sikra seg at det er samfunnet som styrer datasystema og ikkje omvendt, er det viktig at det i samfunnet finst grupper med solid edb-kunnskap, som ikkje er del av systemet, som altså ikkje er det ein normalt ville kalla ein ekspert, men er det eg vil kalla ein mot-ekspert. |
c. | Ein treng utdanna folk som seinare skal utvikla edb-system innan dei aktuelle fagområda (norsk, historie, antropologi eller kva det no er). Tankegangen er at dei humanistiske faga er så pass spesielle reint edb-messige, at dette må avspegla seg også i edb-utdanninga. Stikkord: ekspertise. |
Ein kan i utgangspunktet tenkja seg at alle tre punkta (brukar, mot-ekspertise og ekspertise) er del av målsetjinga til faga. Men i ein parentes må eg få sagt at det ofte vil vera stor forskjell på universitetet si målsetjing med eit fagtilbod, og dei grunnane studentane har til å børja; studentane sine forventingar skil seg frå universitetets målsetjing. Oftast vil det vera slik at studentane trur at edb vil hjelpa dei til ein betre jobb enn dei elles ville ha, eller at dei vil meistra denne jobben betre. Desse forventingane påverkar sjølsagt målsetjingane, bevisst eller ubevisst. Men eg vil i utgangspunktet gå ut frå at dette ikkje har avgjerande innflytelse på målsetjingane. I ein parentes i parentesen vil eg gjerne og ha sagt at det ikkje er uproblematisk i kor stor grad forventingar bør påverka målsetjing.
Det er klart at innhaldet i faget bør vera forskjellig alt etter kva ein oppfattar som det viktigasta av dei tre punkta ovanfor. Eg vil difor sjå på dei tre punkta kvar for seg.
Først vil eg sjå på brukar-aspektet. Dette oppfattar eg som viktig nok, særleg fordi brukar-aspekt står svært sentralt i forventingane deira. Om dette er det viktigaste, er det klart at programmering ikkje er umiddelbart nyttig. Eg vil våga den påstanden at ein etter måten liten del av kandidatane vil driva med særleg mykje programmering. Den reine nytteverdien vil klart vera størst av å læra folk å bruka 4.-generasjonsprogram og andre pakkar. Ei innvendig kan vera at i valet mellom dei mange pakkar er sjansen liten for å treffa den same som studenten seinare får bruk for. Det kan så vera. Men overføringsverdien frå ein pakke til ein annan er vesentleg større enn frå ein kompilator til eit program. I tillegg er dei såpass mykje lettare å læra at ein både kan læra pakkane betre og læra fleire. Eg er ikkje i tvil om at den totale mengda av nyttig kunnskap er vesentleg større om ein ikkje prøver læra folk å programmera i eit semesteremne. Men så kan ein argumentera at også for dei som "berre" skal bruka maskinen, er det viktigare å læra seg dei hovudprinsippa maskinen verkar etter, enn å læra seg konkrete bruksområde. Dette er eit synspunkt eg har stor sans for. Men då blir spørsmålet om programmering er den beste måten å læra hovudprinsipp på. Eg er ikkje trygg på det.
Eg innrømmer gjerne at eg har problem med å gjera greie for hovudprinsippa bak databehandling. For 30 år sidan ville mange seia at binær-systemet var eit hovudprinsipp. Men dette vil ein no forkasta som eit hovudprinsipp. Grunnen er at me ikkje lenger møter binær-systemet i vår omgang med maskinen. At det uomtvisteleg er eit viktig prinsipp blir nærast berre viktig for maskinvareprodusentane.
Eit anna "prinsipp" kan vera repetisjonsprinsippet; dersom ein prosess vert repetert mange gonger, vil han alltid gje same resultat. Det er viktig nok, men er på den eine sida lett å læra og på den andre kan det lærast like godt med t.d. eit databaseprogram som med noko anna. Programmering trengst ikkje for å slå fast dette prinsippet.
Eit tredje prinsipp er den algoritmiske verkemåten, det å bruka logiske betingelsar til å påverka måten ein prosess vert utført. Dette er heilt klart eit hovudprinsipp både i verkemåten til maskinen, og til det meste av programmering. Programmering er truleg den beste måten å læra eit slikt prinsipp på. Men eg er ikkje sikker på at t.d. Pascal er det beste språket. Det er så pass mykje anna ein må læra at hovudprinsippet lett forsvinn i detaljar. Basic ville truleg vera fullt så bra, delvis fordi det er enklare, delvis fordi det baserer seg på ei reinare form for test/hopp-instruksjonar. No vel ein sjølsagt Pascal framom Basic fordi Pascal som nyttig reiskap er mykje betre enn Basic. Med andre ord, det er ikkje berre for å læra folk hovudprinsippa at ein lærer dei programmering, det er og med tanke på at det skal vera eit nyttig reiskap. Men for det store fleirtalet av studentar som aldri kjem til å programmera, må det likevel vera tillatt å stilla spørsmål ved valet. Ein burde kanskje sjå litt vidare enn til dei tradisjonelle programmeringsspråka. Ein algoritmisk tenkjemåte kan ein også læra gjennom å bruka t.d. programmerbare databaseprogram. Dei vil vera ein fullgod måte å læra prinsippet på, samstundes som kunnskapane vil vera meir brukbare seinare, både direkte og gjennom sin overføringsverdi.
Ei anna sak er at det kan koma til å gå attende også med algoritmen som prinsipp, på same måten som binær-prinsippet er blitt uviktig. Brukaren møter algoritmen i stendig mindre grad. Me har børja få databaseprogram som baserer seg på Query by Example (spørjing ved eksempel). Ein ser også at det snart kjem maskiner som baserer seg på såkalla fuzzy-logikk. For å forstå slike maskiner er den primitive logikken ein finn i t.d. Pascal avsporande. Daglegdagslogikken er eit betre utgangspunkt. Er algoritmetenkjing verkeleg eit viktig hovudprinsipp for edb-brukarar? Kanskje er det lite nyttig, eller unyttig, å læra dei binær-systemets innerste løyndommar?
Om målet med programmeringsundervisninga er å forstå verkemåten til program, er eg ikkje sikker på at det er mykje å oppnå gjennom programmering. Årsaka er at dei program ein sjøl kan laga på nokre månader, nødvendigvis må bli svært enkle, og byggja på enkle algoritmar. Etter å ha opplevd kor lang tid og mykje strev desse skaper, blir det ekstra uforståeleg korleis det går an å laga dei store systema. Læring kan koma til å bli ei sperre mot forståing.
Hovudproblemet med prinsipp-læring gjennom programmering, er at det tek svært mykje tid. Programmering er ein god, men kostbar måte å læra prinsipp på. Resultatet er at ein lærer prinsippa og i tillegg litt programmering. Lærer ein prinsipp gjennom t.d. databaseprogram, vil ein kanskje ha litt dårlegare begrep om prinsippa, men i tillegg læra bra mykje om databaseprogram og i tillegg ha tid til andre ting.
Om det viktige med faget er å utdanna motekspertise, er det få gode grunnar til å læra Pascal-programmering. Også her er det snakk om å læra hovudprinsipp. Men det er ikkje algoritmetenkinga. Då er det viktigare å læra databaseprogram, statistikkprogram, administrative system, nettverk osv. Dette trur eg er så sjølsagt at det ikkje ein gong trengs argumenterast for.
Å læra folk å bli systemutviklarar kan delast i to. Ein må læra dei hovudprinsippa for databehandling, og ein må læra dei utviklingsreiskap. Programmering har sin sjølsagde plass i begge samanhengar. Tidlegare har eg argumentert for at programmering er ein brukbar, men lite effektiv måte å læra hovudprinsipp. Men sidan side-effekten her er at ein også lærer eit utviklingsreiskap, vil det kunna forsvarast å bruka programmering i hovudprinsipplæringa. Men framleis står det fast at programmering er ein lite kost-effektiv måte å læra hovudprinsipp, sjøl om det for systemutviklarar knapt kan argumenterast med at algoritmetenkjing ikkje er er eit relevant hovudprinsipp. Spørsmålet blir difor om Pascal-programmering er den beste introduksjonen til utviklingsreiskap for ein kommande systemutviklar. Det er eg ikkje sikker på at det er.
Det er klart at om ein skal utdanna ekspertise, er det på eit eller to semester ikkje mogeleg å gje dei ei fullstendig utdanning. Det kan knapt bli noko anna enn å gje dei eit grunnlag, som dei seinare kan byggja vidare ut på eiga hand, eller innanfor eit anna utdanningssystem. Eg vil til og med gå så langt som å seia at det ein systemutviklar kan læra på eit halvår, er mindre enn ingenting.
Elles er eg ikkje sikker på at ein framtidig systemutviklar vil koma til å bruka korkje Pascal eller noko anna prosedyrespråk. Det er stigande sannsynleg at ein i staden vil bruka eit eller anna fjerdegenerasjonsverktøy. Dreier det seg om språklege problemstillingar, vil ein kanskje koma til å bruka eit listespråk som t.d. Lisp. Men heller ikkje om ein skal bli systemutviklar i eit prosedyrespråk, treng det vera nokon stor omveg først å læra å bruka ein del programsystem. Eg er ikkje i tvil om at dette set ein i stand til seinare å læra seg programmering på ein mykje meir effektiv måte enn om ein skal gå rett laus på Pascal.
Prøver ein å sjå litt framover, er eg ikkje i tvil om at tradisjonelle programmeringsspråk vil tapa terreng til sterke databasespråk. IBM sitt nye Presentation Manager, som dei prøver gjera til standard utviklingsverktøy under OS, er eit slikt system. Om det er dette eller eit anna system som blir det sigrande, skal ikkje eg ha sagt noko om, men verda blir onnorleis.
Men, trass i alt, om det er slik at faget er primært eit første steg for framtidige systemutviklarar, vil programmeringsinnslaget i eit semesteremne kunna forsvarast, elles ikkje. Spørsmålet blir då, er det framtidige systemutviklarar, ekspertar ein tek sikte på å utdanna. Etter mitt syn er svaret eit heilt klart nei. Det er fleire grunnar til dette. Ein er at det er trong for etter måten forholdsvis få systemutviklarar. Eit anna er at det ikkje er råd å byggja ut faga lenger enn til grunnfag. I ein viss periode var dette til og med bevist; folk med altfor høg edb-kompetanse vart kjøpt ut av miljøa. Men du får ikkje utdanna systemutviklarar langs denne vegen. Det du får er folk som blir sett istand til å integrera ferdige edb-system i dei forskjellige humanistiske faga. Ein utdannar brukarar, utan at det er noko gale i det. Dei fleste fag utdannar brukarar av faget. Og det er dette som er målsetninga, uttrykt eller uuttrykt. Slik sett er det ingen forskjell på faga sine målsetningar og studentane sine forventningar. Men dei som fyller faget med programmering, bryt både med eigen målsetningar og studentane sine forventningar. Grunnen til det er svært enkel: mangel på fagleg mogenhet. (Eg gjer merksam på at eg sjøl berre har vore med på å oppretta fag med programmering.) I staden for å spørja kva innhald som best oppfyller målsetningane til faget, let ein seg påverka av realistane sin definisjon av faget informatikk, for 20-25 år sidan. Men det er aldri for seint å ombestemma seg.
Dette vil også gje ein annan fordel. Dei fleste vil seia at det er viktig å få til ein så god integrasjon som mogeleg mellom edb-faget og dei andre faga ved fakultetet. Så vidt eg veit har det vore ein uttrykt målsetning for alle faga. Vel ein programmeringslinja, kan ein nok få til ein slags integrasjon. Men det vil lett bli på eit svært ytre plan. Ein vel algoritmar av spesiell interesse for humanistiske fag osv. Vel ein programpakkeløysinga, vil ein i realiteten kunna gjera forholdsvis omfattande forskningsoppgåver som del av faget. Eg vil våga påstanden at slike studentar vil vera sett i stand til ta edb i bruk i faga på ein heilt annan måte enn om dei har lært programmering. Og treng dei det siste, finst det tilbod om å læra det.
Jan Oldervoll er 1.amanuensis ved Institutt for samfunnsvitskap, Universitetet i Tromsø.