Bibtex

@InCollection{,
  Year    = "2019", 
  Title    = "Formale Sprache", 
  Author    = "Stary, Univ.-Prof. Dipl.-Ing. Dr.  Christian", 
  Booktitle    = "Gronau, Norbert ; Becker, Jörg ; Kliewer, Natalia ; Leimeister, Jan Marco ; Overhage, Sven (Herausgeber): Enzyklopädie der Wirtschaftsinformatik – Online-Lexikon",
  Publisher    = "Berlin : GITO",
  Url    = "https://wi-lex.de/index.php/lexikon/technologische-und-methodische-grundlagen/sprache/formale-sprache/", 
  Note    = "[Online; Stand 29. March 2024]",
}

Formale Sprache

Eine formale Sprache stellt eine zumeist mit Mitteln der mathematischen Logik bzw. natürlichen Sprache festgelegte künstliche Sprache dar.

Anstoß zur Entwicklung und für den Einsatz formaler Sprachen gaben Forschungen aus dem Bereich der Programmiersprachen (Informatik) sowie der Modellierungssprachen zur Darstellung (Repräsentation) von unternehmensrelevanter Information (Data and Knowledge Engineering, Content Management) und geschäftsbestimmenden Unternehmensabläufen (Geschäftsprozessmodellierung, Business Process Engineering). Die Folgen waren zum einen höhere (abstraktere) Programmiersprachen und zum anderen semantische Modelle. Mit ihrer Hilfe sollen komplexe Systeme wie Anwendungsprogramme oder Unternehmensnetze effektiver und effizienter entwickelt werden können. Semantische Modelle gewinnen durch neuere Anwendungsbereiche wie Industrie 4.0, Internet of Things, und Cyberphysische Systeme vermehrt an Bedeutung. Sie dienen der Erstellung des sogenannten Digitalen Zwillings und bilden eine Referenzrepräsentation ausführbarer Systeme.

Eine formale Sprache wird mit Hilfe von bedeutungstragenden Bausteinen wie Symbolen, Buchstaben oder Ziffern, dem sogenannten Alphabet, sowie Regeln, welche die Zusammensetzbarkeit von Bausteinen betreffen, gebildet. Eine formale Sprache L wird also immer über ein Alphabet A mit endlich oder unendlich vielen Zeichen bestimmt. Die Sprache L ist somit eine Menge von Bausteinen oder Sprachelementen (Ausdrücke, Zeichen) und Bausteinketten, deren Zusammensetzung durch Anwendung einer Menge von Regeln R bestimmt wird. Das Alphabet wird zusammen mit den Regeln als formale Grammatik bezeichnet.

Aus dem Alphabet A = {a,b} kann beispielsweise die Sprache L = {a, b, ab, ba}, also eine endliche Menge von Ausdrücken, mit Hilfe der Regelmenge R = { S -> a | b | K, K -> ab | ba } gebildet werden. Dabei wird der Ausgangspunkt S der Ableitung als Startpunkt bezeichnet. K wird (ebenso wie S) als Nicht-Terminalsymbol bezeichnet, während die Bausteine a und b sowie die Bausteinketten ab und ba Terminalsymbole darstellen. Sämtliche Elemente von Terminalsymbolen müssen dem Alphabet A angehören. | ist das Trennsymbol und wird benutzt, sobald eine Regel mehrere Optionen zur Ableitung von Terminal- oder Non-Terminalsymbolen bietet.

In einem formalen Grammatik-Regelwerk sollten Terminalsymbole nicht durch andere ersetzt werden, Nicht-Terminalsymbole jedoch sehr wohl. Letztere dienen der Reduktion von Komplexität und sollen die Ableitung oder Produktion von Sprachelementen vereinfachen sowie nachvollziehbar gestalten. SO trennt beispielsweise oben erwähnte Regelmenge R die Ableitung zusammengesetzter und einfacherSprachelemente. Im Bereich der Programmiersprachen haben sich die Backus-Naur-Form, reguläre Ausdrücke und Syntaxdiagramme zur textuellen bzw. visualisierten Darstellung von (Produktions-)Regeln durchgesetzt.

Die grammatikalischen Regeln einer formalen Sprache bestimmten ihre Syntax, d.i. das Bildungsgefüge von Sprachelementen und deren Kombinationen, wie etwa zu Sätzen bei natürlicher Sprache. Regeln erlauben somit in formalen Sprachsystemen die Ableitung des gesamten Sprachumfangs. Dieser wird zuweilen als Mächtigkeit einer formalen Sprache bezeichnet. Die Mächtigkeit beispielsweise von Programmiersprachen hat allerdings weder Einfluss auf die Lösbarkeit von technischen Implementierungsproblemen noch auf die Effizienz programmierter Algorithmen. Letztere hängt zum einen vom Gebrauch der Sprache, und damit von den ProgrammiererInnen, und zum anderen von der Laufzeitumgebung bei der computerunterstützten Anwendung ab.

Typische Vertreter formaler Sprachen sind Programmiersprachen wie etwa C. Zum Zweck der Implementierung von Anwendungssystemen werden Syntax und Semantik (Bedeutung) festgelegt. Nur syntaktisch korrekte, d.h. im Sinne der Grammatik ableitbare Sprachelemente besitzen Bedeutung. Es können jedoch auch syntaktisch korrekte Ausdrücke bzw. deren Kombinationen existieren, denen (bislang) keine Bedeutung zugeordnet wurde.

Während bei Programmiersprachen häufig eine geringe Anzahl an Regeln und ein eingeschränkter Sprachumfang genutzt wird, treffen wir bei Modellierungssprachen wie BPMN (Business Process Model and Notation – www.bpmn.org) eine Vielzahl an Regeln und Ableitungsmöglichkeiten von Sprachelementen an. Im Rahmen der Modellierung kommt oft die Zerlegung von Sachverhalten (Dekomposition) zum Einsatz. Dabei wird davon ausgegangen, dass jede Aufgabe, Funktion oder Daten in hierarchisch untergeordnete Teile zerlegbar ist. Demgegenüber steht der assoziative Ansatz, der beliebige Relationen derartiger Betrachtungseinheiten zulässt, um den jeweiligen Kontext mit erfassen zu können. Geschieht dies nicht, kann die sogenannte semantische Lücke, die im Rahmen der Modellierung entsteht, vergrößert werden. Damit wird jener Teil der Umgebung bezeichnet, der nicht im modellierten Ausschnitt derselben abgebildet ist.

Als formale Spezifikation wird im Rahmen der Modellierung als auch Anwendungssystem-Entwicklung die integrative Repräsentation von Aufgaben eines Modells oder eines Software-Systems bezeichnet, die mit Hilfe einer formalen Sprache festgelegt wird. Im Rahmen der Anwendungsentwicklung (siehe Software-Engineering) dient sie der Vorgabe möglichst exakter und umfassender Strukturen und Abläufe für die technische Implementierung. Gegebenenfalls kann ein formaler Beweis geführt werden, dass die Implementierung mit der Spezifikation übereinstimmt



 

Hier weiterverbreiten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert