Programmering

c, c++, "qt", java, javascript, tcl/tk

En hobby

Jeg har en uheldig tendens til at vælge hobbier, der kræver mit hoved. Således også programmering af computer. Det skulle være rigtigt - ikke noget med at snyde og genbruge andres hovsaløsninger.
Det har jeg måttet høre meget for. For folk tror, at computer er noget, der går stærkt. Og så må man også kunne skrive et program i en fart. Nuvel, det kan der siges meget om. Jeg har fra starten vidst, at jeg måtte lære mig principperne for objektorienteret programmering først. Og noget er der om princippet: Først går man så grueligt meget igennem, og så bliver man en svane. (Eller en and, siger Rune T. Kidde).
Jeg spurgte engang en programmør, hvilke projekter han f.eks. havde. Han snakkede om projektgruppe, skitsering af opgave og at det skulle tage op til et halvt år at lave en lønseddel. Jeg var målløs. Et halvt år for en lønseddel!

På landet

Min interesse for computere begyndte på landet. Jeg var organist i weekenderne og kedede mig bravt fra lørdag eftermiddag til søndag middag (hm! - nogle gange ikke under gudstjenesterne). Resultatet blev, at jeg meget ofte kom til at sidde oppe den halve nat ved computerskærmen. Samtidig drak jeg op til to kander kaffe (- og det er jo noget skidt at gøre).
Jeg brugte lang tid på at finde ud af, hvordan man kunne få en printer i Microsoft Windows version 3.1 DK til at skrive ud med alle de skrifttyper, som der var i skriveprogrammet Microsoft Word version 2.0, sidenhen version 6.0. Det var min første sejr. Min mors arbejdsplads belønnede mig med en taske for min gerning.
Så kom turen til Word Basic, som allerede dengang var temmelig avanceret omend uendelig langsomt! Det gik jeg hurtigt kold i. Matematikken, som ligger bag sproget, var vanskeligt at fatte. Og dermed virkede programmerne ikke. Enkelte funktioner var nemme at bruge. Andre gange brugte programmet variablerne forkert, og det lærte jeg aldrig at forstå. Men jeg lavede få nyttige funktioner eller makroer, der sparede min mor for meget. I det hele taget var computeren i den tid meget et bindeled mellem mig og mine forældre. Det var teenage-tid, men computeren var noget konkret, så det kunne vi mødes over.

?Stilstand?

Herefter gik der lang tid med ikke rigtig noget. Evt. lidt javascript. Der skete først noget, da jeg fik fat i nogle bøger, jeg kunne lave selvstudium ud fra. Her kom mit tyske mig til nytte: På tysk kunne jeg få gode og billige introduktionsbøger til html, c, java og javascript. Så var jeg godt igang.
Det var et stort øjeblik, da jeg fik mit første c-program til at virke: Det kunne udskifte et komma med et punktum. Og det er jo absurd, at det overhovedet er et program. Jeg havde det problem, at mange af mine programmeringsbøger omhandlede taloperationer, mens jeg gerne ville arbejde med tekst. Siden har streng-biblioteket vokset sig stort i både c++ og java, og det letter jo opgaven en del.

De store armbevægelser

Og så var jeg ved at være klar (troede jeg): Nu kunne jeg skrive et helt kartoteksprogram med oplysninger om mit børnekor f.eks. Og jeg gik igang. Programmet er selvfølgelig ikke færdig endnu, men det er på vej!

I perioder

Programmering har altid foregået i de perioder, hvor der var tid til det. Og det har betydet lange perioder med fokus på helt andre ting i mit liv, som oftest musik (og musik) eller sprog. Men når jeg så havde en periode, rykkede det som regel voldsomt i starten. Jeg blev grebet af det, indtil jeg mødte et uovervindeligt stort problem, som jeg så sad og grublede over i dagevis, indtil jeg tabte interessen.

Linux

Interessen for linux kom parallelt med, at jeg fik mere indsigt i at programmere. Dvs. jeg kendte efterhånden alle grundelementerne i ethvert sprog. Pointere er en kendt problematik i c og c++, og det kæmper jeg stadig med. Af samme grund har flere igennem årene rådet mig til at vælge et andet sprog. Men c og c++ er for mig meget "rene" sprog, med en dejlig syntaks. Det er rart at programmere i. Basic og Microsoft Foundation Classes og mere af samme skuffe ser derimod hæsligt ud. Java har ikke pointer-problemet, men det er ikke hurtigt. C# kan jeg ikke lide. Det er skabt af imperialistiske Microsoft, og så ved man på forhånd, at det på et eller andet tidspunkt koster en hulens bunke penge.
Linux styresystemet er kendt for at have åben kildekode. Og så kan alle og enhver jo bare rette i det, tror man. Der er nok ingen tvivl om, at pengene ikke ville våre endt i Redmond, hvis Microsoft havde været "open source". Men så kommer det store spørgsmål, om vi ville have haft en bedre verden hvis... Moralen er uden tvivl højere i "open source"-miljøet, end den er hos M*.

Åben kildekode

På grund af det med åben kildekode (engelsk: open source) var det oplagt for mig at installere linux, kigge kildekoden efter i sømmene, og lære af det. Igen må jeg sige: troede jeg. Jeg blev klogere: Først og fremmest fordi det er nogle virkelig dygtige programmører, der har lavet linux og programmerne til det. Og den slags programmører benytter sig af løsninger, der er mindre gennemskuelige for en nybegynder. Dertil kommer, at det er svært at gennemskue et program med 7 header-filer og hvad ved jeg måske 50 funktioner og 12 klasser. Så i første omgang lærte jeg først og fremmest, at god programmering ikke er så gennemskueligt endda.
Men linux bygger også på, at man skal dele det bedste, man har, med sin næste. Det lyder helt bibelsk, men det er sådan internettet er bygget op. Nogle vil kalde det anarkistisk, men for mig er det kristent, selv om brådne kar som M* m.fl. (engelsk: derivatives) forsøger at ødelægge den gode stemning med patenter og forsøg på at være åbne på den lukkede måde. Ja, jura er svært! Først ser det hele så enkelt ud. Så er der nogle, der vil have mere, end de har krav på, og så må juraen til.

Richard Stallman

Selve opfinderen af GNU , Richard Stallman, hørte jeg på Odense Universitet. Det var et fabelagtigt foredrag. Og at den man forsynes med en livsrente af en rig amerikaner, er vi mange, der kun kan være glade for.

Platformsuafhængig programmering

Ud af min interesse for linux voksede også interessen for "platformsuafhængig programmering". Det lyder flottere end virkeligheden. Men det er ikke bare en luftig idé. I løbet af de sidste par år er mulighederne vokset. Især efter at også MacOS blev til MacOS-X, dvs. blev UNIX-kompatibelt. Nu kunne man pludselig dele verden op i en UNIX-verden og en WINDOWS-verden. Sådan som det var, før Windows voksede sig stort, og blev til Bill Gates' store vision. I min verden blev bå windows, mac og linux nødt til at være understøttede, ellers gjaldt det ikke.

Java

Og i vore dage bliver computerne jo til stadighed hurtigere og hurtigere, og så har java jo også en chance! SUN har virkelig kæmpet en heroisk kamp for UNIX og open source. Bl.a. har de købt StarOffice , som oprindeligt var et tysk foretagende. Og relativt kort tid efter blev hele denne fantastiske kontorpakke lagt ud som "open source" under navnet OpenOffice . Komplet med skriveprogram, regneark, opsætnings og tegneprogram. Personligt bruger jeg enten skrive- eller tegnedelen til at skrive plater og brochurer med.

Den grafiske programmering

Efter at være kommet relativt langt med min programmering, var turen nu kommet til "den grafiske programmering". Jeg har virkelig været irriteret på mange programmeringsbøger over, at det sjove står til sidst. Eller rettere det der ser sjovest ud, for jeg ved ikke lige om brugerflade-programmering er det sjoveste, når det kommer til stykket. Men i dagens Danmark (og verden) er det et nødvendigt gode (eller onde).
Og her begyndte så min jagt på et platformsuafhængigt "framework". Jeg har mange gange savnet at kunne putte mine egne makroer ind i mit eget lille Clauses MakroProgram med menuer og hele pivtøjet. Jeg har endnu ikke fundet det, hvor man kan gøre det i et snuptag. Men jeg har fundet java og qt.
GUI står for Grafic User Interface - brugerflade-programmering. For at kunne skrive den slags skal man bruge en række skabeloner - klasser der definerer menuer, ikoner, museklik med meget mere.

Brugervenlighed

Først skriver man sit program, og derefter putter man alt det smarte på, som gør programmet brugbart og let at have med at gøre. Inden M* sendte sin kontorpakke på gaden i version "2000", sendte de en masse spørgeskemaer rundt, og lavede dermed en kæmpe undersøgelse. Hvis nogle af svarene havde indeholdt ordet "platformsuafhængigt, var det nok blevet ignoreret. For "platformsuafhængigt på M*'sk hedder "windows-baseret". Men det korte af det lange er, at programmører nogle gange kan have svært ved at forstå, hvad der er et "bruger-venligt" program. - Derfor denne slags undersøgelser.
Min mor fik et program til sit arbejde, som var et skræddersyet database-program. Jeg glemmer aldrig, da jeg skulle forsøge at hjælpe hende med at lære at bruge dette umulige program.
En anden væsentlig ting ved programmer er, at de bør kunne udvides med et skript-sprog af en eller anden art, så de kan tilpasses den enkelte bruger. Mennesker er forskellige. Og for mange er det væsentligt, at man kan nøjes med at trykke én gang i stedet for fem. Og den slags tilpasning opnås med en "overbygning" til det oprindelige program.

Denne hjemmeside er lavet med...

Og nu vi er ved det: Denne hjemmeside er lavet for størstedelen på en bærbar Siemens-Nixdorf 486DX-75 fra 1994. Skriveprogrammet er GVim version 6.1 for Windows . - Et dejligt program, som kun gør, hvad der hjælper - modsat stort set alle Microsoft "freeware" programmer.
Siden er testet i Internet Explorer og Mozilla 1.6 til linux. Grafikken er lavet i GIMP under linux, og til indscanning er brugt en bedaget skanner.
En sidste ting jeg vil sige omkring min programmering: Det er en god træning for den logiske tænkning og hjernen.