Når vi programmerer skriver vi instrukser til vores computere. Instrukserne indlæses i hukommelsen og eksekveres af processoren. Det er basale instruktioner som at indlæse data og lave simple beregninger på tal. Der er ikke de abstrakte begreber i processoren som der er i mange programmeringssprog.
C er et sprog der lægger meget tæt op af en generalisering over de fleste processorarkitekturer. Der er ingen datatyper mere avancerede end forskellige datastørrelser og en understøttelse af decimaltal, men C gør det let at danne nye abstrakte datatyper ud fra de basale datatyper der er. Når man skriver C har man en idé om hvilke instruktioner koden bliver oversat til og hvordan data er arrangeret i hukommelsen. Det er tæt på maskinen og effektivt. Det er let at tage andre folks C kode og med en kompilator omforme det til maskinkode uden at skulle sætte et stort udviklingsmiljø op. Det er simpelt og let at arbejde med.
Når jeg derudover synes godt om PHP og i særdeleshed Perl, udover deres individuelle egenskaber som sprog, er det på grund af et fællestræk de deler med C. De er bagudkompatible. Forstået på den måde at kode der er skevet én gang også virker i fremtidige udgaver af sproget. Jeg hader at skulle skrive min kode om fordi en anden udvikler ændrer noget i et andet program.
Da der i Perl-miljøet blev stemning for at prøve at udvikle videre på sproget, på en måde der ikke var bagudkompatibel, droppede man ikke bagudkompatibiliteten i Perl. Man begyndte i stedet på en frisk med et nyt sprog og kaldte det Raku og kun som kælenavn Perl 6. Perl fik lov at leve videre som sit eget sprog. PHP er mere på vippen hvad det angår, men har indtil videre været rimelig omkring bagudkompatibilitet. Grunden til at Perl og PHP går så godt sammen med C er at den officielle implementering af sprogene er lavet med C og i begge sprog et det let at lave udvidelser med C. Det er også ligetil at udvide et program skrevet i C til at kunne eksekvere Perl eller PHP scripts.
Et godt sprog kan desværre ikke gøre så meget ved at det er op til den enkelte programmør at holde sin kode simpel, minimere afhængigheder af softwarebiblioteker til det absolut nødvendige og sikre sig at de afhængigheder man har er stabile. Gør man det er man sikret langtidsholdbare programmer, der er lette at vedligeholde.