The phrase "I know it when I see it" is a colloquial expression by
which a speaker attempts to categorize an observable fact or event,
although the category is subjective or lacks clearly defined
parameters. The phrase was famously used by United States Supreme
Court Justice Potter Stewart to describe his threshold test for
obscenity in Jacobellis v. Ohio (1964).
- "Lo so quando lo vedo" articolo di Wikipedia
Come l'oscenità, penso che tutti conosciamo un linguaggio di programmazione quando ne vediamo uno. Chiaramente l'OP, dal momento che hai già giudicato il C ++ come linguaggio di programmazione, e HTML non esserlo.
Quindi qual è esattamente l'obiettivo di perseguire una definizione formale? Yannis ha già dato una grande carrellata di motivi per cui la definizione più popolare, la completezza di Turing, è imperfetta: porta a una categorizzazione che sfidano il test "Lo so quando lo vedo".
Ti ho detto che la qualsiasi definizione che puoi ottenere porterà ad alcune lingue che tutti noi riteniamo siano non "programming" le lingue saranno classificate come così; o in alcune lingue che tutti noi riteniamo sono le "lingue di programmazione" saranno classificate come non come tali.
Perché non vai solo con l'intestino? Uso una euristica semplice: un linguaggio di programmazione è una lingua il cui scopo principale, secondo me e secondo le mie osservazioni, è scrivere programmi. Non contrassegnare il contenuto. Non trasformare XML. Per scrivere programmi per scopi generali. Preferirei semplicemente saperlo quando lo vedo piuttosto che cercare di definire una definizione formale, e non vedo alcun vero valore che possa venire dal tentativo di una tale definizione.