UTVIKLING

Derfor er det forskjell på store og små bokstaver

Vi går tilbake i antikkens Roma når vi vil forklare hvorfor det er forskjell på å skrive Javascript og JavaScript.

Illustrasjon.
Illustrasjon.
Jesper Stein Sandal, <a href="https://www.version2.dk/">Version2.dk</a>
13. juni 2017 - 18:00

Denne artikkelen begynner med en stor D. Men hvorfor gjør den egentlig det? Når det kommer til stykket, representerer sammensetningen av lydene til bokstavene det som oppfattes som ord, og her er det ingen forskjell på store og små bokstaver. Men likevel gjør vi mye ut av reglene for hvor det skal brukes d eller D.

Dette begynte med en leser som klaget over at jeg skrev Javascript i stedet for JavaScript. Det førte til at jeg ville skrive noe om CamelCase (bruk av store bokstaver midt inne i ord. Red. anm.) og gjengse stavemåter i it-bransjens firma- og produktnavn. Men så falt jeg rett ned i et researchhull, og det følgende er min fortelling nede fra hullet.

Store bokstaver ville ikke hatt noen mening for en borger i antikkens Rom – hvis da ikke ting skulle forstås så bokstavelig som den fysiske størrelsen på bokstavene for at det ville gi noen mening, siden de 2000 år gamle inskripsjonene på romerske byggverk har temmelig store bokstaver. Og utformingen av disse store bokstavene tilsvarer det vi i dag betegner som store bokstaver.

ROM: STORE BOKSTAVER

Romerne hadde ikke slått på Caps Lock. De skrev bare på den eneste måten de kjente til. Bortsett fra at når de brukte håndskrift, så det litt annerledes ut. Og de så til de grader at begrepet kråketær – eller i hvert fall det språklige bilde av en sporene til en fugl – kan spores tilbake til romertiden. Men det var ikke slik at det var en stor og en liten utgave av den samme bokstaven.

Altså forstått på den måten at det i den samme teksten finnes to varianter av den samme bokstaven. Som for eksempel en stor P og en liten p.

Akkurat denne bokstaven er en av dem som antyder at opprinnelsen av store og små bokstaver henger mer sammen med noe estetisk, enn at man kunne skjelne tydelig mellom en stor og en liten utgave. Formen til P og p er nesten identisk, og den vesentligste forskjellen er at den lille p-en går under linjen, mens den store P-en går over linjen. Linjen er her forstått som det området som er avgrenset av over- og underkanten av bokstavene i et ord som 'sensommer'.

Normalt har alle store bokstaver, som i det romerske alfabetet, samme høyde, som i 'SENSOMMER', men likevel hadde den mest berømte utgaven av det romerske eller latinske alfabetet  en Q som gikk under linjen.

Nytt kapittel

Store bokstaver som skilte seg ut fra resten, dukket opp i bøker fra cirka år 600, hvor de store bokstavene igjen var veldig bokstavelig større enn resten, siden de ofte var dekorerte og nærmest illustrasjoner til teksten. Dette var en tradisjon som fortsatte selv etter at Gutenberg begynte å trykke bibler. Forskjellen fra 600-tallet til 1400-tallet, var at i manuskriptene fra 600-tallet var de store bokstavene stadig bare store utgaver av de normale bokstavene.

Men i Gutenbergs bibel blir store bokstaver brukt på en moderne måte, der de store bokstavene som for eksempel B er forskjellig fra en liten b. Samtidig er det i løpet av middelalderen oppstått egentlig rettskrivning, for Gutenberg bruker de store bokstavene som stor forbokstav etter punktum.

Det ser vi også i for eksempel den Jyske Lov fra 1241. Her er det bare ved nye kapitler eller underkapitler at det brukes stor forbokstav, så det brukes ikke store bokstaver etter punktum. Det endrer seg altså på slutten av middelalderen med utviklingen av en rettskrivning.

Dermed blir det en viss betydningsforskjell mellom de store og små bokstavene. De har gått fra å være ren dekorasjon til å være noe som brukes for å hjelpe leseren, akkurat slik som punktum og mellomrom gjorde det. Ja, selv mellomrom har ikke alltid vært en del av skriftspråkene.

Nå nærmer vi oss kjernen til hvorfor romerne og Gutenberg er relevante i datalogien, men først skal vi klare oss gjennom pest og kolera på 1700- og 1800-tallet. Det er nemlig i denne perioden at de store og små bokstavene får en spesiell betydning.

Ting med stort i Tyskland

I Tyskland – og i Danmark, som språklig var under sterk innflytelse av tysk språk på denne tiden – begynte man å skrive ikke bare egennavn, men alle substantiv, med stor forbokstav. Det forutsatte at man allerede var i stand til å snakke om grammatiske ordklasser.

Tyskerne begynte også – i motsetning til for eksempel britene – å sammenskrive ord. Og i Danmark gjorde man det samme. Og regelen for sammensatte substantiv («navneord» på dansk) ble 'Navneord' og ikke ''NavneOrd'.

Da Ada Lovelace skrev sitt første dataprogram brukte også britene stor forbokstav i substantiv, men Ada Lovelaces kode var mest med matematiske symboler, så vi vet ikke om Ada bikket mot CamelCase eller foretrakk rene versaler slik som i de første programmeringsspråkene som dukket opp omkring 100 år etter hennes død.

Språk som FORTRAN brukte utelukkende store bokstaver

Språk som FORTRAN brukte utelukkende store bokstaver. Eller helt nøyaktig brukte tidlige datamaskiner bare 6 bit til tegnsettet og hadde derfor bare plass til enten store eller små bokstaver – og det vanligste var å bruke store bokstaver. Senere språk brukte store bokstaver til alle nøkkelord, og derfra ble det fart i stilvalget innen programmering.

Jeg har tidligere skrevet om tabulator kontra mellomrom, men det er bare å skrape på overflaten av en byll med navnet 'style guides'.

Språk som ikke ble oversatt av en kompilator, var begrenset av at koden helst ikke måtte ta for mye plass. Det var begrensninger på lengden av nøkkelord og variabelnavn. Den gangen en datamaskin kaltes en EDB-maskin og en app het et dataprogram, var det altså mer passende å kalle 'JavaScript' for 'JS'.

Maskinen leser forskjellige tegn

Men det oppstod også en mye mer vesentlig forskjell. På trykk var H og h stort sett en estetisk forskjell, og ut fra sammenhengen tar man sjeldent feil av Hans og hans. Men på PC-en er H og h to forskjellige tegn.

Det ble raskt en fordel å ha flere forskjellige tegn til rådighet – også det å ha store og små bokstaver. For eksempel til kodeord. I lang tid kunne et kodeord maksimalt være på åtte tegn, og for å øke entropien – altså det mulige antallet kombinasjoner – var det opplagt at man ønsket å skjelne mellom tegnene for en stor P og en liten p, slik at 'Password' og 'password' var to forskjellige kodeord.

Dermed var også kimen lagt for den kanskje vanligste supporthenvendelsen om innloggingsproblemer.

I utviklingen av programmeringsspråkene ble det også gjort et viktig valg. Mellomrom var ikke bare en litt større avstand mellom grupper av bokstaver for å gjøre det lettere å skjelne mellom enkelte ord. Mellomrom ble skillet mellom nøkkelord i koden. Et nøkkelord, variabelnavn eller metodenavn kan ikke strekkes over et mellomrom.

For en tysker eller danske er det helt normalt å lese et ord som 'kirsebærpai'. Men for en engelsktalende er 'cherry pie' i to ord, så hvis man som engelsktalende objektorientert programmerer skal bake en ny kirsebærpai, fungerer 'new cherrypie' ikke helt bra, og programmeringsspråket forstår ikke 'new cherry pie'.

string eller String?

De store og små bokstavene fikk også spesiell betydning i mange programmeringsspråk. En 'Kirsebærpai' med stor K signalerer for eksempel at det er snakk om en klasse i mange objektorienterte språk. Og så kom ståheien. For nå hadde vi en situasjon der store bokstaver fikk en spesiell betydning, og samtidig var det en teknisk forskjell mellom G og g.

Akkurat slik typografen måtte hente den lille t-en i én skuff og den store T-en i en annen for å sette avisteksten, er de to tegnene også forskjellige koder for datamaskinen

Akkurat slik typografen måtte hente den lille t-en i én skuff og den store T-en i en annen for å sette avisteksten, er de to tegnene også forskjellige koder for datamaskinen. Når den leser ordet 'Type', er det en sekvens av tegnkoder. Endrer man det til 'type', blir det en annen sekvens av tegnkoder. Og akkurat som å bytte ut et siffer i et telefonnummer, kan den andre tegnsekvensen ende med å peke på noe helt annet enn planlagt.

Slik kan man oppleve at det er forskjell på å skrive 'String' og 'string' i et programmeringsspråk. Her er regelen at det ene henviser til klassen med navnet 'String', som kan inneholde noen metoder og egenskaper som kan manipulere et objekt. Tilsvarende er 'string' en mer primitiv type, som bare rommer en sekvens av tegn som til sammen utgjør en tekststreng.

Men store og små bokstaver i samme alfabet, også kalt 'bicameral', gir visse komplikasjoner, også utenfor programmering. På norsk har vi for eksempel 'De' og 'de', hvor de store bokstavene endrer betydningen og bruken av et ord.

Georgisk programmering med små bokstaver

Slik trenger det ikke å være. Der finnes alfabeter som er rent 'majuscule' eller 'unicase', hvor alle bokstaver er store bokstaver. Men det finnes også enkelte alfabeter som bare består av små bokstaver – her forstått slik at ikke alle bokstaver er like høye, og noen bokstaver går under linjen. For eksempel georgisk skrift.

Så hvis programmering hadde blitt funnet opp i Georgia, ville det bare være 'string'. Enda mer annerledes ville det vært hvis programmering hadde oppstått i for eksempel Kina, hvor alfabetet – eller rettere sagt skriftsystemet – består av tegn som dekker stavelser eller sammensetninger av stavelser, og hvor det verken er store eller små bokstaver. Forskjellen er så stor at det er mulig å være ordblind på norsk, men ikke kinesisk. Til gjengjeld har de opptil 5000 forskjellige tegn, så entropien for et kodeord på kinesisk ville vært betydelig større for et kodeord på åtte tegn.

Så hvordan henger dette sammen med CamelCase? Jo, for det første har vi i de fleste vestlige språk forskjell på store og små bokstaver. For det andre har mellomrom en spesiell funksjon i mange programmeringsspråk. Og til slutt leser datamaskinen de store og små bokstavene som forskjellige tegn.

Derfor får du en feil hvis du skriver 'Camelcase' ett sted i programmet ditt, og 'CamelCase' andre steder. Og du får en annen feil hvis du skriver 'Camel Case'.

Lesehjelp

For programmereren har de store bokstavene en spesiell funksjon, akkurat slik de fikk det da de ble brukt i begynnelsen av et nytt kapittel i et manuskript, eller for å vise at for eksempel et kongenavn var noe spesielt i teksten. Dels kan store bokstaver signalisere at noe er en klasse – det tilsvarer kongenavnet. Men det kan også være en lesehjelp, som den store bokstaven etter et punktum.

I kildekode ser man derfor regler som 'getCake' eller 'GetCake', noe som kan variere mellom de ulike programmeringsspråkene. Her brukes de store bokstavene for å vise at ordet er sammensatt, og dermed gjøre det lettere å identifisere de delene som det er sammensatt av. Det er også mulig for leseren å skjelne mellom 'OnDemand' og 'OndeMand'.

Men hva med 'Javascript' og 'JavaScript'? Det er en kombinasjon av to ting. Grammatikalsk ville den normale engelske skrivemåten være 'Java Script', og så ville så ville det ikke være rom for tvil. Men så – kanskje inspirert av selve programmeringsspråket – ble ordet satt sammen. Det er ikke enestående, og i dag er det mange varemerker og firmanavn som er sammenskrevne ord.

På norsk ville språket kanskje blitt født som 'Javaskript' (som i 'manuskript') i ett ord og med stor forbokstav. Den store utfordringen er dermed hva man gjør når et ord importeres til oss?

Norsk rettskrivning sier at generelt kan navn på steder, personer og firmaer stride mot de vanlige reglene for eksempelvis bruk av store bokstaver. Derfor er det slik at alle som heter 'Kierkegaard' ikke er nødt til å skrive 'Kirkegård'.

Da har vi kommet fram til at JavaScript heter JavaScript på engelsk, fordi det er forskjell på store og små bokstaver, og fordi mellomrom ganske riktig er normalt på engelsk, men ikke fungerer i programmering, samt at vi etter norsk rettskrivning burde skrive Javascript, men at det er akseptert å skrive JavaScript, fordi det er sånn avsenderen ønsker at det staves.

Men i Romerriket ville dermed diskusjonen vært meningsløs, for der kodet de bare i IAVASCRIPT (de hadde ikke J som en egen bokstav), i sine spesielle, små rom som kaltes IAVASCRIPTORIVM. Eller kanskje ikke …

Denne saken er levert av Version2.dk

Del
Kommentarer:
Du kan kommentere under fullt navn eller med kallenavn. Bruk BankID for automatisk oppretting av brukerkonto.