Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Ähnliche Dokumente
Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Computergrundlagen Programmieren Fortran77/90

Computergrundlagen Programmieren in C

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

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

Grundlagen der Informatik 0

10. Programmierungs-Phase: Objektorientierung Software Engineering

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

JAVA als erste Programmiersprache Semesterkurs

Funktionale Programmiersprachen

Compiler: Einführung

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Die Programmiersprache C Eine Einführung

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

Modellierung und Programmierung 1

Motivation und Überblick

Einführung in PROLOG. Christian Stocker

Informatik Programmiersprachen eine kurze Übersicht

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Klassenvariablen, Klassenmethoden

Lösungsvorschlag zu 1. Übung

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Zahlenraten: Ein Spiel in Java.

Guile Die Erweiterungssprache des GNU-Projekts

Informatik-Seminar. Auftakt. Informatik. Grundlagen

Organisatorisches/Einstieg

Algorithmen und Programmierung II

Grundlagen. Kapitel 1

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

FORTRAN77. eine höllische Programmiersprache. Christian Sternecker. Sommersemester TU-München

Manfred Schüttengruber. Objektorientierte Programmierung mit Visual Basic 2005

Definition Compiler. Bekannte Compiler

Grundlagen der Programmierung UE

Vorlesung C-Kurs 9:15-10:45 Mathe 11:15-12:45 1. Woche Hörsaal 1 2. Woche Hörsaal 7

1.3 Geschichte der Programmiersprachen

Kapitel 1: Einführung

Java: Eine kurze Einführung an Beispielen

Grundlagen der Programmierung UE

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

Vorlesung Informatik I

Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung

Praktische Informatik 1

Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 5A. Lösung zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler)

Algorithmen und Datenstrukturen"

Programmieren lernen mit Perl

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

VBA-Programmierung: Zusammenfassung

Einführung in die Programmierung 1

Lösungsvorschlag Serie 2 Rekursion

Programmierkurs Python I

Vorlesung Programmieren

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Modellierung und Programmierung 1

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 -

Einführung in die Informatik

Bash-Skripting Linux-Kurs der Unix-AG

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Programmiersprachen und Programmierkonzepte

Informatik I (D-MAVT)

Programmieren in Haskell Debugging

6. Funktionen, Parameterübergabe

Grundlagen der Informatik für Ingenieure I

Algorithmus: Kochrezept

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

1 Klassen und Objekte

2 Grundlagen der Programmierung

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Grundlagen der Objektorientierung :

Grundlagen von Python

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Assembler - Einleitung

Handout zur Vorlesung DBSP PHP I Unit 4 DBSP. Unit PHP I. Programmierparadigma Grundlegende Elemente eines PHP Programms (I)

Die Unified Modeling Language (UML)

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Java Einführung Vererbung und Polymorphie. Kapitel 13

Die Programmiersprache C

Einführung in die C-Programmierung

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

Einleitung und Begriffliches. Einleitung. Programmiersprachen. Software-Komplexität ist inhärent und hat vor allem folgende Ursachen

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 Tel: 07531/ Oliver Haase Hochschule Konstanz 1

Analyse und Modellierung von Informationssystemen

Aufgabenblatt 4 IT-Security Angewandte Informatik WS 2016/17

Kontrollstrukturen - Universität Köln

Transkript:

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11

Was sind Programme? In dieser Vorlesung: Python, C, L A T E X, bash Sind das alle Typen von Programmiersprachen? Wie kann man Programmiersprachen klassifizieren? Kein Prozessor versteht Python-, C- oder Shell-Befehle Was muss alles passieren, um ein Programm laufen zu lassen? Wie wird aus unserem Programm etwas, dass der Prozessor ausführen kann? Axel Arnold Computergrundlagen 2/1

Programmiersprachen Imperative Sprachen Beispiele: Python, C, Shell, BASIC... Die meisten Sprachen sind imperativ Programme erklären, wie ein Problem gelöst werden soll Umsetzung des von Neumann-Rechners: Befehle und Schleifen prozedural heißen Sprachen, die Prozeduren kennen Beispiele: alle außer einfachem BASIC Deklarative Sprachen Keine von Neumann-artigen Befehle, kein innerer Zustand Rekursion anstatt Schleifen funktional, basierend auf Funktion im mathematischen Sinn Beispiele: Haskell, Erlang, Scheme... logisch, basierend auf Fakten, Axiomen und logischer Ableitung Beispiele: Prolog Axel Arnold Computergrundlagen 3/1

Funktionale Sprachen: Haskell Beispiel: Berechnung der Fakultät fakultaet :: Integer -> Integer -- rekursive Definition fakultaet 0 = 1 fakultaet n = n * fakultaet(n - 1) -- oder als Produkt fakultaet n = product [1..n] Rekursive Definition der Fakultät, impliziter Abbruch durch Spezialisierung oder mit Hilfe eines endlichen Produkts Variablen im mathematischen Sinn x = x + 1 ist daher unzulässig bzw. falsch Beschreibt, was berechnet wird, nicht wie Axel Arnold Computergrundlagen 4/1

Logische Sprachen: Prolog Beispiel: Ahnentafel ahn(x,z) :- elter(x,z). ahn(x,z) :- elter(x,y), ahn(y,z). elter(axel,alfred). elter(alfred,alexander).?- ahn(axel,alexander). yes. Eingabe sind Fakten p(x): X hat Eigenschaft p Regeln p(x) :- p1(v,...,x,...), p2(w,...,x,...): X hat Eigenschaft p, wenn es V,W,... gibt, so dass p1(v,...,x,...) und p2(w,...,x,...) gilt. Entwickelt für die Forschung an künstlicher Intelligenz Axel Arnold Computergrundlagen 5/1

Objektorientierte Sprachen Person +name: String +getname(): String +gettitel(): String Dozent -vorlesungen: Liste von Vorlesungen +haltevorlesung(vorlesung:vorlesung) +halteprüfung(vorlesung:vorlesung): Note +gettitel(): String +kurs: Kurs Student +vorlesungen: Liste von Vorlesungen +hoertvorlesung(vorlesung:vorlesung) +macheprüfung(vorlesung:vorlesung) +gettitel(): String Objektorientierung (OO) ist ein sprachunabhängiges Programmiermodell Ziel ist die bessere Wartbarkeit und Austauschbarkeit von Software durch starke Isolation von Teilproblemen Speziell darauf ausgelegt sind z.b. C++, Java, Python,... UML (Unified Modelling Language) beschreibt OO-Modelle Axel Arnold Computergrundlagen 6/1

Terminologie Klasse: beschreibt Eigenschaften und Methoden von Objekten Beispiel: Klassen sind z.b. Dozent, Student, Person Objekt: eine Instanz einer Klasse. Ein Objekt hat stets eine Klasse, aber es kann viele Instanzen geben Beispiel: Axel Arnold ist ein Dozent, Christian Holm auch Eigenschaften: Datenelemente von Objekten Beispiel: Dozent hat Name, Titel und zu haltende Vorlesungen Methoden: Funktionen einer Klasse Beispiel: Personen können ihren Namen sagen Datenkapselung: Eigenschaften werden nur durch Funktionen der Klasse verändert Beispiel: der Name einer Person kann nicht geändert werden Vererbung: Klassen können von anderen abgeleitet werden, erben dadurch deren Eigenschaften und Funktionen Beispiel: Jede Person hat einen Namen Axel Arnold Computergrundlagen 7/1

Interpreter- und Compilersprachen Python-Skript C-Quellcode übersetzt interpretiert C-Compiler+Linker Python-Interpreter erzeugt Binärprogramm produziert produziert Ausgabe Ausgabe Interpretersprachen Z.B. Python, Java, C#, Basic, PHP, Shellsprachen Das Programm wird vom Interpreter gelesen und ausgeführt Es wird nie in Maschinencode für den Prozessor übersetzt Ausnahme: Just-in-Time (JIT) Compiler Axel Arnold Computergrundlagen 8/1

Interpreter- und Compilersprachen Python-Skript C-Quellcode übersetzt interpretiert C-Compiler+Linker Python-Interpreter erzeugt Binärprogramm produziert produziert Ausgabe Ausgabe Compilersprachen Z.B. C/C++, Fortran, Pascal/Delphi Compiler übersetzt in maschinenlesbaren Code Nicht portabel, erschwerte Fehlersuche, deutlich schneller Interpreter selbst müssen compiliert werden Axel Arnold Computergrundlagen 8/1

Maschinensprache Zahlenkolonnen, z.b. Aber was versteht nun der Prozessor? AD 34 12 18 69 2A 8D 34 12 AD 35 12 69 00 8d 35 12 Maschinencode für den 6502-Mikroprozessor Addiert 42 zur 16-bit-Zahl an Speicherstellen 1234h und 1235h Wie hängt das mit x += 42 zusammen? Wie wird aus einem Programm Maschinencode? Axel Arnold Computergrundlagen 9/1

Assembler X = $1234 AD 34 12 LDA X 18 CLC 69 2A ADC #42 8D 34 12 STA X AD 35 12 LDA X+1 69 00 ADC #00 8d 35 12 STA X+1 Assembler ist die menschenlesbare Form der Maschinensprache Im Beispiel bezeichnet das Label X die Speicherzelle 1234h Assembler bezeichnet auch das Programm, das die Befehle in Zahlen übersetzt und Labels an Speicherzellen knüpft Zeitkritische Anwendungen werden auch heute noch manchmal in Assembler geschrieben Axel Arnold Computergrundlagen 10/1

Vom Sourcecode zum Programm Compiler programm.c Präprozessor Parser Zwischencode-Generator Optimierer Code-Generator Assembler Objekt-Datei Linker Binärprogramm Ein Programm durchläuft viele Schritte bis zur fertigen ausführbaren Datei Präprozessor, Compiler, Assembler und Linker sind meist separate Programme meist mehrere Objektdateien aus verschiedenen Quelltextdateien Axel Arnold Computergrundlagen 11/1

Vom Sourcecode zum Programm Compiler programm.c Präprozessor Parser Zwischencode-Generator Optimierer Code-Generator Assembler Objekt-Datei Linker Binärprogramm Präprozessor Im Prinzip sprachunabhängig, rein textbasiert Bindet weitere Quelltextdateien ein Erlaubt den Einsatz von Makros (Ersetzungen) Beispiel: TEST(...) wird überall durch if (...) ersetzt Axel Arnold Computergrundlagen 11/1

Der Compiler Parser übersetzt den Quellcode in einen Syntaxbaum a = 2 b + 3 c = a + int 3 c int 2 b Zwischencode-Generator erzeugt daraus Pseudocode, etwa: r1 = b r2 = r1 2 r3 = c r4 = r3 3 r5 = r2 + r4 a = r5 Optimierer versucht, diesen zu verbessern, z.b. durch Prozessorregisterzuweisung Einfügen kurzer Funktionen, Entrollen von Schleifen Suche nach gemeinsamen Termen,... Code-Generator erzeugt Assembler aus dem Zwischencode Axel Arnold Computergrundlagen 12/1

Der Assembler programm.c Präprozessor Compiler Parser Zwischencode-Generator Optimierer Code-Generator Assembler Objekt-Datei Linker Binärprogramm obj1.o:... call 0000 Defined: Undefined: blupp obj2.o:... Defined: blupp Undefined: Der Assembler erzeugt eine Objektdatei mit Maschinencode den Speicherpositionen von globalen Variablen und Funktionen Stellen, an denen Stellen Information über solche Positionen aus andere Objektdateien benötigt wird Axel Arnold Computergrundlagen 13/1

Der Linker Compiler programm.c Präprozessor Parser Zwischencode-Generator Optimierer Code-Generator Assembler Objekt-Datei Linker Binärprogramm obj1.o:... call 0000 Defined: Undefined: blupp obj2.o:... Defined: blupp Undefined: Verbindet mehrere solcher Objektdateien zu einer ausführbaren Datei (Binary) oder einer Bibliothek Bibliotheken sind Sammlungen von Objektdateien Der Linker verbindet Zugriffe zwischen Objektdateien Nur wenn alle Zugriffe aufgelöst wurden, entsteht ein Binary Axel Arnold Computergrundlagen 13/1

Dynamisches Linken Compiler programm.c Präprozessor Parser Zwischencode-Generator Optimierer Code-Generator Assembler Objekt-Datei Linker Binärprogramm obj1.o:... call 0000 Defined: Undefined: blupp obj2.o:... Defined: blupp Undefined: Beim dynamischen Linken wird das Linken gegen die Bibliotheken erst beim Starten des Programms erledigt. Dadurch können Teile des Programms geupdated werden Und mehrfach benutzte Bibliotheken werden nur einmal geladen Erfordert spezielle dyanamische Bibliotheken (.so,.dylib oder.dll) Axel Arnold Computergrundlagen 13/1