Języki przystosowane do przetwarzania danych symbolicznych. Korzysta z nich sztuczna inteligencja. Dane symboliczne to struktury zbudowane e składników elementarnych zwanych symbolami. Symbol określa znaczenie przypisane elementowi danych w trakcie przetwarzania, odniesione do modelu świata.
Za pewną formę przetwarzania symbolicznego można uznać języki zapytania do baz danych. M.in. PROLOG może zastąpić w pewnym stopniu SQL. Jednak głównym polem jest sztuczna inteligencja.
Podstawowe obiekty i związki modelowanego świata są reprezentowane przez symbole (semantyka). Składniowo, symbole są ciągami znaków. W trakcie przetwarzania są traktowane jako niepodzielne elementy danych. Ciągi znaków pełnią rolę identyfikatorów obiektów przetwarzanych jako reprezentujące pewne obiekty świata rzeczywistego. Decydują o tożsamości.
Symbole to elementy danych używane do reprezentowania obiektów i związków występujących w dziedzinie rozpatrywanego problemu.
W kodzie źródłowym symbol ma postać ciągu znaków - jednak w przetwarzaniu jest traktowany jako niepodzielna jednostka.
Przedstawiona struktura reprezentuje regułę bazy wiedzy systemu eksperckiego
Definicja (zapisana w pseudokodzie)
STRUKTURA reguła
poprzednik: <lista list symboli> następnik: clista symboli>
Przykładowy egzemplarz struktury typu reguła
[zwierzę należy do gromady ssaki]
[zwierzę ma kopyta]
] // poprzednik
[ zwierzę należy do grupy kopytne] // następnik
Symbole to w sumie każdy wyraz z listy. Przetwarzanie polega na: dekomponowaniu, przetwarzaniu, porównywaniu, porządkowaniu. Natomiast nigdy nie polega na operacjach typu zliczanie znaków identyfikatora symboli itp.
Powszechnie znanymi językami używanymi w dziedzinie sztucznej inteligencji są LISP i PROLOG.
Język proceduralny (imperatywny). Zapis problemu i sposobu rozwiązania ma postać algorytmu (sekwencja operacji do wykonania).
Język funkcyjny - każdy identyfikator języka jest funkcją. Przetwarzanie w języku funkcyjnym przebiega na zasadzie : f(g(h(),h()), h()) itp. Przekazywanie danych odbywa się przez wartość funkcji. W LISP nie istnieją parametry wynikowe. Istnieją zmienne globalne (z reguły używamy tylko wtedy, gdy jest to niezbędne).