We hebben reeds besproken hoe programma's werken. Ieder programma moet uiteindelijk als een stroom bytes, die uit instructies in de machinetaal van je computer bestaan, worden uitgevoerd. Maar menselijke wezens kunnen niet zo erg goed met machinetaal overweg; dit is inmiddels zelfs onder hackers een zeldzame zwarte magie.
Bijna alle Unix code behalve een kleine hoeveelheid directe hardware-interface ondersteuning in de kernel zelf is tegenwoordig geschreven in een hogere programmeertaal. (Het `hogere' in deze term is een historisch overblijfsel om het te onderscheiden van `lagere' assembleertalen, wat in wezen doorzichtige verpakkingen om machinecode heen zijn.)
Er zijn verscheidene verschillende soorten hogere programmeertalen. Teneinde hierover te kunnen meepraten, is het handig om in gedachten te houden dat de broncode van een programma (de door de mens gemaakte, te wijzigen versie) een soort vertaalslag moet ondergaan naar machinecode om het door de machine uit te kunnen laten voeren.
De meest gebruikelijke soort programmeertaal is een gecompileerde programmeertaal. Gecompileerde talen worden omgezet naar uitvoerbare bestanden met uitvoerbare machinecode door een speciaal programma dat (logisch genoeg) een compiler wordt genoemd. Als het uitvoerbare bestand éénmaal is aangemaakt, kun je het direct opstarten zonder nog naar de sourcecode te kijken. (De meeste software wordt geleverd met gecompileerde uitvoerbare bestanden aangemaakt aan de hand van code die je niet ziet.)
Gecompileerde programmeertalen geven een uitstekende performance en hebben complete toegang tot het OS, maar zijn ook moeilijk om in te programmeren.
C, de programmeertaal waarin Unix zelf is geschreven, is hiervan verreweg de belangrijkste (met z'n variant C++). FORTRAN is een andere gecompileerde programmeertaal, nog steeds in gebruik door technici en wetenschappers, maar jaren ouder en veel primitiever. In de Unix wereld zijn er in belangrijke mate geen andere gecompileerde programmeertalen in gebruik. Daarbuiten wordt COBOL op velerlei gebied gebruikt voor financiële en zakelijke software.
Er werden veel andere gecompileerde programmeertalen gebruikt, maar de meeste daarvan zijn uitgestorven of zijn strikte onderzoekshulpmiddelen. Als je een nieuwe Unix ontwikkelaar bent die een gecompileerde programmeertaal gebruikt, zal dit zeer waarschijnlijk C of C++ zijn.
Een geïnterpreteerde programmeertaal is afhankelijk van een interpreter programma dat de broncode inleest en vertaalt in berekeningen en system calls. De bron moet iedere keer dat de code wordt uitgevoerd, opnieuw worden geïnterpreteerd (en de interpreter moet aanwezig zijn).
Geïnterpreteerde programmeertalen hebben de neiging langzamer te zijn dan gecompileerde talen en hebben vaak beperkte toegang tot het onderliggende besturingssysteem en de hardware. Aan de andere kant zijn ze gericht op gemakkelijker programmeren en vergevingsgezinder betreft codeerfouten dan gecompileerde talen.
Veel Unix utility's, inclusief de shell en bc(1) en sed(1) en awk(1), zijn doeltreffende kleine geïnterpreteerde talen. BASIC varianten zijn gewoonlijke geïnterpreteerde talen. Zo ook Tcl. Historisch gezien, is de belangrijkste geïnterpreteerde programmeertaal LISP geweest (een belangrijke verbetering ten opzichte van zijn meeste opvolgers). Tegenwoordig wordt Perl op velerlei gebied gebruikt en wint zo langzamerhand meer aan populariteit.
Sinds 1990 is een soort hybride programmeertaal die zowel van compilatie als interpretatie gebruik maakt, in toenemende mate belangrijk geworden. Bij P-code programmeertalen wordt net als bij gecompileerde programmeertalen de bron vertaald naar een compacte uitvoerbare bestandsvorm, hetgene wat je in feite uitvoert, maar die vorm is geen machinecode. In plaats daarvan is het pseudocode (of p-code), die gewoonlijk veel eenvoudiger maar krachtiger is dan echte machinetaal. Als je het programma draait, interpreteer je de p-code.
P-code kan bijna zo snel worden uitgevoerd als een gecompileerd uitvoerbaar bestand (p-code interpreters kunnen zeer eenvoudig, klein en snel zijn) Maar p-code programmeertalen kunnen de flexibiliteit en kracht van een goede interpreter behouden.
Belangrijke p-code talen zijn onder andere Python en Java.