Aby stworzyć jakąkolwiek taksonomię, musisz najpierw zadać sobie kilka pytań:
- Czy przedmioty, które zamierzam umieścić w jakichkolwiek relacjach, są odpowiednio zdefiniowane?
- Jeśli tak, to czy faktycznie istnieją?
- Czy ograniczam się tylko do określonego rodzaju relacji między obiektami, czy też istnieje określony wymóg, aby system używał tylko legalnych relacji?
Zazwyczaj, gdy słyszy się pytanie takie jak zadane, oczekiwana odpowiedź zawiera kilka założeń. Na przykład naturalne jest założenie, że ponieważ wszystkie są językami, muszą one tworzyć hierarchię na podstawie bardziej ogólnej koncepcji języka, lub że dzielą przestrzeń między wszystkimi językami lub że są one podzbiorami.
Języki programowania
Niestety żadne z powyższych nie wydaje się prawdą. Być może tylko języki programowania mają definicję, która jest najbardziej zgodna. Języki programowania to języki, które kodują programy. Kodowanie oznacza, że słowo w języku może być interpretowane jako program (sekwencja działań). Języki programowania komputerowego są ich podzbiorem. Przykłady nie-komputerowych języków programowania: lista zakupów, interpretowana jako wskazówki dla kupującego w supermarkecie, DNA interpretowane przez transkrypcję peptydów, analogowa płyta muzyczna służąca jako program do magnetofonu.
Języki programowania komputerowego są zatem tymi, które programują komputery.
Języki skryptowe
Nie są dobrze zdefiniowane. Można interpretować, co oznacza ten termin. Historycznie wydaje się, że tak nazywano języki programowania, które nie miały kompilatora do tworzenia kodu maszynowego. Według dzisiejszych standardów umieściłby w tej kategorii każdy popularny język programowania bez asemblerów. Nawet tak zwane języki niskiego poziomu, takie jak C, wymagają środowiska wykonawczego z wcześniej istniejącymi procedurami, dlatego pliki binarne uzyskane przez kompilację programu C nie są całkowicie kodem maszynowym, ale także od czasu do czasu wywołują środowisko uruchomieniowe.
Języki znaczników
Nie są dobrze zdefiniowane. Ilekroć używa się tego terminu, wydaje się, że intencją jest opisanie języka programowania z bardzo ograniczonym leksykonem, używanego głównie do generowania obrazu wizualnego lub dźwiękowego. XML może być trudne do programowania, ale jeśli spojrzysz na znaczniki Man lub TexInfo, zobaczysz, że „znaki specjalne” są w rzeczywistości instrukcjami interpretera.
Można również podać interpretację „programowania” dla języka XML, co może wyglądać następująco:
< := put interpreter in the reading node mode
! := if reading node, start CData/Comment mode
else if not in read text mode, signal error
-- := if in start CData/Comment mode, start comment
else if in comment, put in end comment mode
else if in end comment mode, signal error
...
Podsumowując: ten podział na dzień dzisiejszy nie wydaje się bardzo znaczący, może jedynie dać ci intuicję co do tego, z jakim językiem masz do czynienia, ale nie zapewni ci ścisłej definicji.