Tabulator eller mellemrum? Silicon Valley-serien rammer et ømt punkt
Mellemrum eller tabulator? HBO's tv-serie Silicon Valley stak i tredje sæsons sjette afsnit hånden ned i den hvepserede, der hedder 'code style guides'. Skulle der sidde læsere derude, der ikke er bekendt med, hvorfor det er et følsomt emne, eller måske er for ophidsede til at kunne forklare det for pårørende, så kommer forklaringen her.
Programmører tilbringer mere tid på at læse kode end på at skrive den. Derfor er det vigtigt, at koden er til at læse. De fleste programmeringssprog er konstrueret, så koden er til at læse for mennesker og ikke kun for computere. Derfor skriver man noget i stil med 'HVIS solen.skinner SÅ is' - altså noget, der til forveksling ligner et naturligt sprog.
Men når flere programmører skal skrive kode til det samme program, så bliver de små forskelle mellem, hvordan koden skal se ud, pludselig vigtig.
Eksempelvis skal man være enige om, hvordan man navngiver variable i koden. Skal den hedde solenSkinner eller b_solen_skinner? De fleste programmeringssprog har en mere eller mindre officiel vejledning til, hvordan man formaterer sin kode, ligesom mange softwarefirmaer også har skrevet ned, hvordan deres kode skal se ud.
Så hvad er problemet med mellemrum og tabulator? Inden vi når så langt, så er det nødvendigt lige at slå fast, at vi her taler om de sprog, hvor indrykning af teksten kun har kosmetisk betydning. Der findes flere ældre programmeringssprog, hvor det bestemt ikke er ligegyldigt. I de moderne sprog er indrykning normalt kun af hensyn til programmøren.
Indrykning bruges til at vise, at de indrykkede linjer er noget, der hører ind under den ovenstående linje. Det, der foregår inde i en funktion, rykkes derfor lidt ind, så man kan se, at koden er en del af funktionen.
function MakeDevelopersAngry() { developers.SetMood(Angry); }
Det er hér, det kontroversielle begynder. For hvordan skal teksten rykkes ind? I Pythons style guide er det fire mellemrumstegn. Google foretrækker derimod to mellemrums indrykning i C++ - og bestemt ingen tabulator. Mozilla foretrækker også to mellemrum - undtagen for Python, hvor det skal være fire.
Google holder fast i sine to mellemrum, så i Chromium-projektet anbefales udviklerne at bruge Pythons stil - bortset fra det med fire mellemrum til indrykning.
I et sprog som PHP er der delte meninger. PSR-2-guiden siger fire mellemrum og tabulator forbudt, mens WordPress siger tabulator for PHP-kode.
Google siger også to mellemrum i Java, mens den originale specifikation for Java sagde fire tegn eller tabulator sat til otte tegn.
Mange udviklingsværktøjer håndterer formateringen for dig. Microsofts Visual Studio sørger for eksempel for at lave indrykninger på fire tegn, når det er nødvendigt, og hvis man bruger tabulatortasten, så bliver det ikke gemt som tabulator, men som fire mellemrum. Det samme gør en lang række af de øvrige værktøjer til kodning.
Men hvis man er typen, der ikke vil lade et IDE (integrated development environment) blande sig, mens man koder, så er der faktisk forskel på tabulator og mellemrum.
Både tabulator og mellemrum er specialtegn, whitespace characters, men de opfører sig forskelligt og kan i udgangspunktet ikke bare byttes rundt. Mellemrum svarer altid til én blank plads, hvor der kunne stå et tegn. I programmering arbejder man næsten altid med skrifttyper, hvor alle tegn har samme faste bredde.
Tabulator er lidt mere kringlet, da indrykningen kan variere. Tabulator er som regel sat til otte tegn, men kan være helt ned til et enkelt tegn eller op til en linje.
Men der er altså tale om to forskellige tegn. Mellemrum er nummer 32 i ASCII, mens tabulator er tegn nummer 9. Compileren er, som det også påpeges i Silicon Valley-afsnittet, ligeglad. Den kan godt håndtere både mellemrum og tabulator og er også ligeglad med, hvor meget linjerne er indrykket.
For udviklerne er det derimod mere kildent. Ud over ren irritation over at læse kode, en anden har skrevet med 'forkert' indrykning, så kan indstillingen af tabulator også give problemer med, hvordan koden vises. Derfor lyder argumentet fra mellemrumssiden, at man skal bruge mellemrum, for det ser ens ud alle steder.
Fra tabulatorsiden lyder argumenterne derimod, at tabulator for det første klarer indrykningen med færre tastetryk, og for det andet kan man justere, hvor meget tabulatoren skal rykke koden ind, uden at ændre noget i koden, lidt ligesom at ændre skriftstørrelse, baggrundsfarve eller linjeafstand.
Indrykning er et klassisk stridspunkt i stilvejledninger for programmering, og Silicon Valley-forfatterne har angiveligt også hentet inspirationen fra den virkelig verden. Ligesom den kildekode, der blev vist i første afsnit af tredje sæson, er C-kode, der kan kompileres.
Desværre er det med mellemrum og tabulator ligesom med Dansk Sprognævn. Der er ofte valgfrihed, snarere end klokkeklare regler. Mange vælger derfor at se stort på traditioner inden for et programmeringssprog og vælger den stil, de finder mest tiltrækkende, uanset om det så handler om æstetik eller effektivitet.
