EIGENSCHAFTEN VON SPRACHEN

Ähnliche Dokumente
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Definitionen/Vorarbeit zum Thema Java

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken

EWS, WS 2016/17 Pfahler I-1

Werkzeuge zur Programmentwicklung

2. Programmierung in C

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

2. Programmierung in C

Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

1 Programmiersprachen 1.1 1

Einführung in die Programmiertechnik

Übersicht über 1. Vorlesungsabschnitt Form und Darstellung von Informationen

Einführung in die Web-bezogenen Sprachen Wintersemester 2015/16 Klausur 1,

Einführung. (Compiler) Prof. Dr. Oliver Braun. Letzte Änderung: :49. Einführung 1/26

Syntax von Programmiersprachen

2. Programmierung in C

Ein Fragment von Pascal

2.2 Syntax, Semantik und Simulation

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Compiler. Einführung. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:

Compiler: Einführung

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Algorithmen und Datenstrukturen (für ET/IT)

Inhalt. Einführung in die Strukturierte Programmierung 15

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Compilerbau für die Common Language Run-Time

Einführung in die Informatik I (autip)

Einstieg in die Informatik mit Java

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken. Kontextfreie Grammatik. Vorlesung Modellierung WS 2011/12 / Folie 601

Es gibt immer einen Schlüssel und einen zugehörigen Wert,

Überblick. Ausdrücke. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Ausdrücke

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:

3.4 Struktur von Programmen

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48

Einführung Grundbegriffe

III.1 Prinzipien der funktionalen Programmierung - 1 -

Alphabet, formale Sprache

XML. XML: Extensible Markup Language. Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler

Elementare Konzepte von

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Programmierkurs II. C und Assembler

Einführung in die Informatik. Programming Languages

Grundlagen der Informatik 0

Kapitel 2. Methoden zur Beschreibung von Syntax

Konzepte der Programmiersprachen

Einführung in die Programmierung

Form und Darstellung von Informationen

XHTML. Lernfragen zu XHTML. Was ist HTML? Überblick

Präzedenz von Operatoren

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Syntax von Programmiersprachen

Syntax von Programmiersprachen

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

Berichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

Beispiel: Schriftliche Addition

C-Grundlagen. Einführung von Tronje Krabbe 1/21

Theoretische Informatik I

Erstellen von Web-Seiten HTML und mehr...

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

HTML Scripting. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 06. Dezember 2017

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Einstieg in die Informatik mit Java

Interpreter - Gliederung

Java I Vorlesung Imperatives Programmieren

Programmiersprachen und Übersetzer

ECDL MODUL COMPUTING. Syllabus Version 1.0

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

C - PRÄPROZESSOR. Seminar effiziente C Programmierung WS 2012/13. Von Christian Peter

Syntax von Programmiersprachen

Thomas Theis PHP4. Webserver-Programmierung für Um- und Einsteiger. Galileo Press

GTI. Hannes Diener. 18. Juni. ENC B-0123,

den Einsatz von generierenden Werkzeugen und Theorien und von Software-Engineering-Methoden

Interdisziplinäre fachdidaktische Übung: Sprache und Modelle. SS 2015: Grossmann, Jenko

Syntax von Programmiersprachen

1 Funktionale vs. Imperative Programmierung

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza)

3.1 Reservierte Wörter

Transkript:

Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler EIGENSCHAFTEN VON SPRACHEN EWS, WS 2016/17, Pfahler C-1 Einführung Sprachen in der Informatik werden für bestimmte Zwecke entwickelt. hier relevant: Auszeichnungssprachen (HTML, XML) Skriptsprachen (PHP, Javascript) Je nach Zweck und Niveau verfügen Sprachen über einfache oder komplexe, wenige oder zahlreiche Sprachkonstrukte. Sie sind durch Regeln formal oder informell definiert. Diese legen fest: Notation der Symbole (Lexeme), Struktur der Sätze (Syntax), Bedeutung der Konstrukte (Semantik) Sprachen werden von Software-Werkzeugen übersetzt oder interpretiert. Die Verbreitung der Sprachen wird beeinflusst durch Erlernbarkeit und Handhabbarkeit, Marketing und die Verfügbarkeit von Werkzeugen. EWS, WS 2016/17, Pfahler C-2

Vier Ebenen der Spracheigenschaften Ein Satz einer Sprache ist eine Folge von Zeichen eines zu Grunde liegenden Alphabetes Beispiel: ein PHP-Programm ist ein Satz der Sprache PHP, hier ein Ausschnitt daraus: $line = fgets ($fp, 64); Die Struktur eines Satzes wird in 2 Ebenen definiert: Notation von Grundsymbolen Syntaktische Struktur Die Bedeutung eines Satzes wird in 2 weiteren Ebenen: statische Semantik Eigenschaften, die vor der Ausführung bestimmbar und prüfbar sind. dynamische Semantik Eigenschaften, die erst während der Ausführung auftreten. Auf jeder der 4 Ebenen gibt es Regeln, die korrekte Sätze erfüllen müssen. EWS, WS 2016/17, Pfahler C-3 Ebene 1: Notation der Grundsymbole Ein Grundsymbol wird aus einer Folge von Zeichen des Alphabets gebildet. $line = fgets ( $fp, 64 ) ; Typische Grundsymbole in Programmiersprachen (Beispiele aus PHP): Bezeichner (identifier) Namen für Variable, Funktionen,... $line fgets Literale (literals) Wortsymbole (keywords) Spezialzeichen Zahlwerte, Zeichenreihen 64 "telefonbuch.txt" kennzeichnen Sprachkonstrukte while if Operatoren, Separatoren <= = ; { } Formale Definition: Reguläre Ausdrücke Zwischenräume, Tabulatoren, Zeilenwechsel und Kommentare zwischen den Grundsymbolen trennen diese voneinander, dienen der Lesbarkeit und sind ansonsten (meist) bedeutungslos. Beispiel: /* Kommentar in JavaScript Notation */ EWS, WS 2016/17, Pfahler C-4

Ebene 2: Syntaktische Struktur Ein Satz einer Sprache wird in seine Sprachkonstrukte gegliedert. Diese syntaktische Struktur wird durch einen Strukturbaum dargestellt. Die Grundsymbole sind Blätter in diesem Baum. Formale Definition: Kontextfreie Grammatik EWS, WS 2016/17, Pfahler C-5 Ebene 3: Statische Semantik Eigenschaften von Sprachkonstrukten, die ihre Bedeutung (Semantik) beschreiben, soweit sie an der Programmstruktur festgestellt werden können (statisch ), ohne das Programm auszuführen. Typische Eigenschaften der statischen Semantik: Bindung von Namen: Regeln, die einer Anwendung eines Namens seine Definition zuordnen. Zu dem Funktionsnamen in einem Aufruf muss es eine Funktionsdefinition mit gleichem Namen geben. Typregeln: Sprachkonstrukte wie Ausdrücke und Variable liefern bei ihrer Auswertung einen Wert eines bestimmten Typs. Er muss im Anwendungskontext zulässig sein. Die Operanden des * Operators müssen Zahlwerte sein. In der Sprache PHP gehören die Namensregeln zur statischen Semantik, die Typregeln aber zur dynamischen Semantik, da sie erst bei der Ausführung des Programms angewandt werden können (dynamisch typisierte Sprache ). EWS, WS 2016/17, Pfahler C-6

Ebene 4: Dynamische Semantik Eigenschaften von Sprachkonstrukten, die ihre Wirkung beschreiben und erst bei der Ausführung (dynamisch) bestimmt oder geprüft werden können. Typische Regeln der dynamischen Semantik beschreiben welche Voraussetzungen für eine korrekte Ausführung eines Sprachkonstruktes erfüllt sein müssen, z. B. Ein numerischer Index einer Array-Indizierung, wie der Wert von $i in $var[$i] darf nicht kleiner als 0 sein. welchen Effekt die Ausführung eines Sprachkonstruktes verursacht, z. B. Eine Zuweisung der Form Variable = Ausdruck wird wie folgt ausgewertet: Die Speicherstelle der Variablen auf der linken Seite wird bestimmt. Der Ausdruck auf der rechten Seite wird ausgewertet. Das Ergebnis dieser Auswertung ersetzt dann den Wert an der berechneten Speicherstelle. EWS, WS 2016/17, Pfahler C-7 Übersetzung von Sprachen Ein Übersetzer transformiert jeden korrekten Satz (Programm) der Quellsprache in einen gleichbedeutenden Satz der Zielsprache. Die meisten Programmiersprachen zur Software-Entwicklung werden übersetzt. Zielsprache ist dabei meist eine Maschinensprache eines realen Prozessors oder einer abstrakten Maschine. Übersetzte Sprachen haben eine stark ausgeprägte statische Semantik: Der Übersetzer prüft die Regeln der statischen Semantik, wie Bindungs- und Typregeln. Er findet viele Arten von Fehlern vor der Ausführung. EWS, WS 2016/17, Pfahler C-8

Interpretation von Sprachen Ein Interpretierer liest einen Programm Anweisung für Anweisung und führt es aus. Sprachen, die so strikt interpretiert werden: haben einfache Struktur und keine statische Semantik, Namens- und Typregeln werden erst bei der Ausführung geprüft, nicht ausgeführte Programmteile bleiben ungeprüft. Manche Interpretierer erzeugen vor der Ausführung eine interne Repräsentation des Satzes; dann können auch Struktur und Regeln der statischen Semantik vor der Ausführung geprüft werden, z. B. Skriptsprachen PHP, JavaScript Interpretierer können auf jedem Rechner verfügbar gemacht werden und in andere Software (Bsp.: JavaScript in Web-Browsern) integriert werden. Interpretation kann wesentlich zeitaufwändiger sein als die Ausführung von übersetztem Maschinencode. EWS, WS 2016/17, Pfahler C-9 Einsatzgebiete von Sprachen Mehrzweck-Programmiersprachen (General Purpose Languages) Anforderungen: Algorithmen klar und effizient formulieren komplexe Datenstrukturen definieren prüfbare Regeln (statische Semantik) einhalten, dadurch Fehler reduzieren Konsequenzen: umfangreiche, komplexe Sprachen: viele Konstrukte, viele Regeln relativ hoher Schreibaufwand, durch explizite Angaben (z. B. zur Typisierung) übersetzt Nutzen: hoch bei größeren Software-Systemen recht umständlich für kleine, einfache Aufgaben Typische Vertreter: C, C++, C#, Java, klassisch: Fortran, Cobol, Pascal EWS, WS 2016/17, Pfahler C-10

Einsatzgebiete von Sprachen Skriptsprachen (Scripting Languages) Scripting: Zusammensetzen von Kommandos zu einem wiederverwendbaren Drehbuch Anforderungen: kleine, einfache Aufgaben lösen ohne komplexe Algorithmen und Datenstrukturen existierende Funktionen nutzen und verknüpfen Verzicht auf Sicherheit durch prüfbare Regeln zugunsten kürzerer Programme gute Verfügbarkeit und Handhabbarkeit Konsequenzen: ursprünglich: einfache Sprachen: wenige Konstrukte, kurze Programme heute: zum Teil Sprachumfang von Mehrzwecksprachen umfangreiche Bibliotheken dynamische Typisierung interpretiert Typische Vertreter: PHP, Perl, JavaScript, Python, Ruby EWS, WS 2016/17, Pfahler C-11 Einsatzgebiete von Sprachen Auszeichnungssprachen (Markup Languages) Anforderungen: Struktur von Dokumenten beschreiben: Überschriften, Absätze, Listen, Tabellen hierarchische Gliederung, auch Hypertext-Verweise abtrennbare Beschreibung der Darstellung von Menschen schreib- und lesbar keine Programmierung von Abläufen Konsequenzen: Strukturelemente werden mit lesbaren Markierungen gekennzeichnet (markup) geklammerte, geschachtelte Strukturen Menge und Bedeutung der Markierungen festlegbar (SGML, XML) Darstellung getrennt beschreibbar (HTML + CSS) Typische Vertreter: SGML, HTML, XML EWS, WS 2016/17, Pfahler C-12

Entstehungszeit und Verwandtschaft wichtiger Sprachen EWS, WS 2016/17, Pfahler C-13