Lassen Sie mich zuerst auf Ihre Frage kommen. Ein gutes Nicht-Beispiel für eine formale Sprache sind die natürlichen Sprachen. Englisch und Slowenisch sind Beispiele. So sind Tagalog und Tarifit Berber. Unglücklicherweise scheinen Linguisten keine Definition der natürlichen Sprache zu haben, über die sich alle einig wären.
Noam Chomsky versuchte in seiner 1956er Arbeit Three Models for the Description of Language bekanntermaßen, natürliche Sprache mit kontextfreien Gammaren zu modellieren. Er erfand (oder entdeckte, wenn Sie es vorzogen) sie in dieser Zeitung; obwohl er sie nicht so nannte; Während sie nicht nützlich waren, um die englische Sprache zu modellieren, revolutionierten sie die Informatik.
Formal ist eine formale Sprache nur eine Reihe von Strings über ein endliches Alphabet. Das ist es.
Beispiele hierfür sind alle gültigen C-Programme, alle gültigen HTML-Dateien, die alle gültigen XML-Dateien, alle Saiten der „balanced“ Klammern (zB (),()(), ((()))()(()), ...
), den Satz (Codes unter einer Codierung) alle deterministischen Turing-Maschinen, die immer halt, die Menge aller einfachen Graphen, die mit k
-Farben (tatsächlich ihre Codes unter irgendeiner Kodierung) gefärbt werden können, die Menge aller binären Zeichenketten, die enden und mit einer 1
beginnen, usw.
Einige sind leicht zu erkennen mit Regex (oder, gleichwertig, DFA); einige sind unter Verwendung von DFAs nicht zu erkennen, können jedoch mit PDA erkannt werden (oder können äquivalent mit einer kontextfreien Grammatik beschrieben werden); Andere geben eine solche Beschreibung nicht zu, können aber von einer Turing-Maschine erkannt werden; manche sind selbst mit einer Turing-Maschine (uncomputable) nicht zu erkennen.
Deshalb ist die Definition so nützlich. Viele Dinge, die uns in CS evey day begegnen, können in formale Sprachen übersetzt werden.
Für eine gute Einführung in das Thema, empfehle ich das hervorragende Buch Einführung in Automatentheorie, Sprachen und Berechnung von Hopcroft et al.
Ich stimme diese Frage als off-topic zu schließen, weil es nicht um Programmierung im Rahmen der Anwendung dieses Begriffs hier auf SO geht. –
@HighPerformanceMark, das ist schade, weil es meiner Meinung nach in letzter Zeit einen großen Mangel an interessanten Fragen zu SO gibt. –