Denne artikel begynder med et stort D. Men hvorfor gør den egentlig det? Når det kommer til stykket, repræsenterer sammensætningen af bogstaverne lyde, som opfattes som ord, og her er der ingen forskel på store og små bogstaver. Alligevel gør vi meget ud af regler for, hvor der skal bruges d eller D.
Det begyndte med en læser, som klagede over, at jeg skrev Javascript i stedet for JavaScript. Det førte til, at jeg ville skrive noget om CamelCase og trælse stavemåder i it-branchens firma- og produktnavne. Men så faldt jeg i et researchhul, og det følgende er min fortælling nede fra hullet.
Store bogstaver ville ikke have givet mening for en borger i antikkens Rom. Medmindre det skulle forstås så bogstaveligt som den fysiske størrelse på bogstaverne, for det ville give fin mening, da 2.000 år gamle inskriptioner på romerske bygningsværker er temmelig store bogstaver. Og disse store bogstavers udformning svarer til det, vi i dag betegner som store bogstaver.
ROM: STORE BOGSTAVER
Romerne havde ikke slået Caps Lock til. De skrev bare på den eneste måde de kendte. Altså bortset fra, at når de skrev i hånden, så det noget anderledes ud - i et omfang, så begrebet kragetæer, eller i hvert fald det sproglige billede af en fugl, der fører pennen, kan spores tilbage til romertiden - men det var ikke sådan, at der var en stor og en lille udgave af det samme bogstav.
Altså forstået på den måde, at der i den samme tekst optræder to varianter af det samme bogstav. Som eksempelvis et stort P og et lille p.
Lige netop dét bogstav er ét af dem, der antyder, at oprindelsen af store og små bogstaver hænger mere sammen med noget æstetisk, snarere end at kunne skelne tydeligt mellem en stor og en lille udgave. Formen af P og p er næsten identisk, og den væsentligste forskel er, at det lille p går under linjen, mens det store P går over linjen. Linjen her forstået som det område, der er afgrænset af over- og underkanten af bogstaverne i et ord som 'sensommer'.
Normalt har store bogstaver som i det romerske alfabet alle samme højde, som i 'SENSOMMER', om end den mest berømte udgave af det romerske eller latinske alfabet havde et Q, som gik under linjen.
Nyt kapitel
Store bogstaver, der skilte sig ud fra resten, dukkede op i bøger fra cirka år 600, hvor de store bogstaver igen var meget bogstaveligt større end resten, da de ofte var dekorerede og nærmest illustrationer til teksten. Det var en tradition, som fortsatte selv efter Gutenberg var begyndt at trykke bibler. Forskellen fra 600-tallet til 1400-tallet var, at i manuskripterne fra 600-tallet var de store bogstaver stadig blot store udgaver af de normale bogstaver.
Men i Gutenbergs bibel bliver store bogstaver brugt på en moderne måde, hvor de store bogstaver som eksempelvis B er forskellig fra et lille b. Samtidig er der i løbet af middelalderen opstået egentlig retskrivning, for Gutenberg bruger de store bogstaver som stort begyndelsesbogstav efter punktum.
Det ses også i eksempelvis Jyske Lov fra 1241. Her er det kun ved nye kapitler eller underkapitler, som får et stort begyndelsesbogstav, så der bruges ikke store bogstaver efter punktum. Det ændrer sig altså i slutningen af middelalderen med udviklingen af retskrivning.
Dermed er der en vis betydningsmæssig forskel mellem de store og små bogstaver. De er gået fra at være ren dekoration til at være noget, som bruges til at hjælpe læseren, nøjagtigt lige som punktum og mellemrum gjorde det. Ja, selv mellemrum har ikke altid været en del af skriftsprogene.
Nu nærmer vi os, hvorfor romerne og Gutenberg er relevante i datalogien, men først skal vi lige klare os gennem pest og kolera i 1700- og 1800-tallet. Det er nemlig i denne periode, at de store og små bogstaver får særlig betydning.
Ting med stort i Tyskland
I Tyskland - og i Danmark som sprogligt var meget under indflydelse af tysk sprog på dette tidspunkt - begyndte man at skrive ikke blot egennavne, men alle navneord med stort begyndelsesbogstav. Det forudsatte, at man allerede var i stand til at tale om grammatiske ordklasser.
Tyskerne begyndte også - i modsætning til eksempelvis englænderne - at sammenskrive ord. Og ja, Danmark gjorde det samme. Og reglen for sammensatte navneord blev 'Navneord' og ikke 'NavneOrd'.
Da Ada Lovelace skrev sit første computerprogram brugte englænderne også stort begyndelsesbogstav i navneord, men Ada Lovelaces kode var mest i matematisk notation, så vi ved ikke, om Ada var til CamelCase eller foretrak rene versaler ligesom i de første programmeringssprog, der dukkede op cirka 100 år efter hendes død.
Sprog som FORTRAN brugte udelukkende store bogstaver. Eller helt præcist brugte tidlige computere blot 6 bit til tegnsættet og havde derfor kun plads til enten store eller små bogstaver - og det mest almindelige var at bruge store bogstaver. Senere sprog brugte store bogstaver til alle nøgleord, og derfra gik det stærkt med stilvalg i programmering.
Jeg har tidligere skrevet om tabulator vs. mellemrum, men det er blot at kradse i overfladen af en byld ved navn 'style guides'.
Sprog, der ikke blev oversat af en compiler, var begrænset af, at koden helst ikke måtte fylde for meget. Der var begrænsninger på længden af nøgleord og variabelnavne. Dengang, en computer hed en datamat og en app hed programmel, var det altså mere passende at kalde 'JavaScript' for 'JS'.
Maskinen læser forskellige tegn
Men der opstod også en meget mere væsentlig forskel. På tryk var H og h mest en æstetisk forskel, og ud fra sammenhængen tager man sjældent fejl af Hans og hans. Men på computeren er H og h to forskellige tegn.
Det er trivielt at lade computeren være ligeglad, men det blev snart en fordel at have flere forskellige tegn til rådighed - også det at have store og små bogstaver. Eksempelvis til kodeord. I lang tid kunne et kodeord maksimalt være på otte tegn, og for at øge entropien, altså det mulige antal kombinationer, så var det oplagt at skelne mellem tegnene for et stort P og et lille p, så 'Password' og 'password' var to forskellige kodeord.
Dermed var kimen også lagt til den måske mest almindelige supporthenvendelse om loginproblemer.
I udviklingen af programmeringssprogene blev der også truffet et vigtigt valg. Mellemrum var ikke blot lidt større afstand mellem grupper af bogstaver for at gøre det lettere at skelne mellem enkelte ord. Mellemrum blev adskillelsen mellem nøgleord i koden. Et nøgleord, variabelnavn eller metodenavn kan ikke spænde over et mellemrum.
For en tysker eller dansker er det helt trivielt at læse et ord som 'kirsebærtærte'. Men for den engelsktalende er 'cherry pie' i to ord, så hvis man som engelsktalende objektorienteret programmør skal bage en ny kirsebærtærte så fungerer 'new cherrypie' ikke rigtigt, og programmeringssproget forstår ikke 'new cherry pie'.
string eller String?
De store og små bogstaver fik også særlig betydning i mange programmeringssprog. En 'Kirsebærtærte' med stort K signalerer eksempelvis, at der er tale om en klasse i mange objektorienterede sprog. Og så opstod balladen. For nu stod vi en situation, hvor store bogstaver fik en særlig betydning, og samtidig var der en teknisk forskel mellem G og g.
Ligesom typografen skulle finde det lille t i én skuffe og det store T i anden for at opsætte avisteksten, så er de to tegn også forskellige koder for computeren. Når den læser ordet 'Type', så er det en sekvens af tegnkoder. Ændrer man det til 'type', så er det en anden sekvens af tegnkoder. Og ligesom at udskifte et ciffer i et telefonnummer, så kan den anden tegnsekvens ende med at pege på noget helt andet end planlagt.
På den måde kan man opleve, at der i et programmeringssprog er forskel på at skrive 'String' og 'string'. Her er konventionen, at det ene henviser til klassen ved navn 'String', som kan indeholde nogle metoder og egenskaber, der kan manipulere et objekt. Tilsvarende er 'string' en mere primitiv type, som blot rummer en sekvens af tegn, der tilsammen udgør en tekststreng.
Men store og små bogstaver i samme alfabet, også kaldet 'bicameral', giver visse komplikationer, også uden for programmering. På dansk har vi eksempelvis 'I' og 'i' eller 'De' og 'de', hvor de store bogstaver ændrer betydningen og brugen af et ord.
Georgisk programmering med små bogstaver
Sådan behøver det ikke være. Der findes alfabeter, som er rent 'majuscule' eller 'unicase', hvor alle bogstaver er store bogstaver. Men der findes også enkelte alfabeter, der udelukkende består af små bogstaver - her forstået som at ikke alle bogstaver er lige høje, og nogle bogstaver går under linjen. Eksempelvis georgisk skrift.
Så hvis programmering var opfundet i Georgien, ville der kun være 'string'. Endnu mere anderledes havde det været, hvis programmering var opstået i eksempelvis Kina, hvor alfabetet - eller rettere skriftsystemet - består af tegn, som dækker stavelser eller sammensætninger af stavelser, og hvor der hverken er store eller små bogstaver. Forskellen er så stor, at det er muligt at være ordblind på dansk, men ikke kinesisk. Til gengæld er der op mod 5.000 forskellige tegn, så entropien for et kodeord på kinesisk ville være betydeligt større for et kodeord på otte tegn.
Hvordan hænger det så sammen med CamelCase? Jo, for det første har vi i de fleste vestlige sprog forskel på store og små bogstaver. For det andet har mellemrum en særlig funktion i mange programmeringssprog. Og endelig læser computeren de store og små bogstaver som forskellige tegn.
Derfor får man en fejl, hvis man skriver 'Camelcase' ét sted i sit program og 'CamelCase' andre steder. Og man får en anden fejl, hvis man skriver 'Camel Case'.
Læsehjælp
For programmøren har de store bogstaver en særlig funktion, ligesom de fik da de blev brugt ved begyndelsen af et nyt kapitel i et manuskript eller til at vise, at eksempelvis et kongenavn var noget særligt i teksten. Dels kan store bogstaver signalere, at noget er en klasse - det svarer til kongenavnet. Men det kan også være en læsehjælp, ligesom det store bogstav efter et punktum.
I kildekode ser man derfor konventioner som 'getCake' eller 'GetCake', hvilket kan variere mellem de forskellige programmeringssprog. Her bruges de store bogstaver til at vise, at ordet er sammensat og gøre det lettere at identificere de dele, det er sammensat af. Det er også muligt for læseren at skelne mellem 'OnDemand' og 'OndeMand'.
Men hvad så med 'Javascript' og 'JavaScript'? Det er en kombination af to ting. Rettelig ville den normale engelske skrivemåde være 'Java Script', og så ville der ikke være nogen tvivl. Men måske inspireret fra programmeringssproget selv, så blev ordet sat sammen. Det er ikke enestående, og i dag er der mange varemærker og firmanavne, som er sammenskrevne ord.
På dansk ville sproget måske være født som 'Javaskript' (som i 'manuskript') i ét ord og med stort begyndelsesbogstav. Den store udfordring er så, hvad man gør, når et ord importeres til dansk?
Dansk retskrivning siger, at generelt kan navne på steder, personer og firmaer bryde med de almindelige regler for eksempelvis brug af store bogstaver. Det er også derfor, at alle der hedder 'Kierkegaard' ikke skal skrive det som 'Kirkegård'.
Dermed er vi fremme ved, at JavaScript hedder JavaScript på engelsk, fordi der er forskel på store og små bogstaver, og fordi mellemrum ganske vist er normalt på engelsk, men ikke går i programmering, samt at vi efter dansk retskrivning burde skrive Javascript, men at det er accepteret at skrive JavaScript, fordi det er sådan, afsenderen ønsker det stavet.
Tilbage i Rom ville diskussionen ikke have givet mening, for der kodede de bare i IAVASCRIPT (de havde ikke J som selvstændigt bogstav, så måske havde dét i stedet været balladen for VERSION II).

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.