Informatik eine kurze Übersicht Seite 1
natürliche Sprachen (nach Wikipedia) ca 6500 gesprochene Sprachen davon etwa die Hälfte im Aussterben etwa 500 Schriftsprachen mit gedruckten Texten P. Bueghel Turmbau zu Babel (Wikipedia) ca 2500 aktiv verwendete (http://people.eecs.ku.edu/~kinners/new_general.html) täglich kommen neue hinzu : Immer das Selbe nur anders? Tiefenstruktur: alle natürlichen Sprachen basieren auf der gleichen tiefen Grammatik nur die Oberflächen-Grammatiken unterscheiden sich. (Noam Chomsky, berühmter Linguist und Informatiker) Tiefenstruktur der? Mit allen kann im Prinzip das Gleiche ausgedrückt werden, aber es gibt Ausdrucksweisen Programmierstile die sich in unterschiedlichen Sprachen /Sprachfamilien unterschiedlich gut ausgedrückt werden können. Seite 2
Klassifikation der nach Worüber spricht ein Programm Imperative Sprachen Objekt-orientierte Sprachen Funktionale Sprachen Deklarative Sprachen Imperative Sprachen älteste und größte Sprachfamilie Programm = Anweisungen: Tue dies, dann dann das, etc. Thema der Anweisungen: Daten die in Variablen organisiert sind Beispiele: Assembler, C, Fortran, Pascal, Objektorientierte Sprachen Erweiterung der imperativen Sprachen Wichtigste Sprachfamilie für die professionelle Software-Entwicklung Programm = Anweisungen: Tue dies, dann dann das, etc. Thema der Anweisungen: Daten und Anweisungen die in Objekten organisiert sind Beispiele: C++, C#, Java, Seite 3
Klassifikation der nach Worüber spricht ein Programm Funktionale Sprachen intellektuellste und aktuell angesagteste Sprachfamilie Programm = Sammlung von Funktionen und Funktionalen (Funktionen auf Funktionen) Beispiele: Mathematica, Lisp, Haskell, Scala, F# Deklarative Sprachen Sprachen für die die nicht programmieren wollen Programm = Das will ich haben, egal wie du das hin bekommst! Beispiele: HTML, Prolog, Datenfluss Sprachen / Systeme Variante der deklarativen Sprachen Programm = Daten die zu / durch Zellen fließen und dabei transformiert werden Beispiel: Spreadsheet-Anwendungen (Excel) Abfrage Sprachen / Systeme Variante der deklarativen Sprachen Programm = Frage an einen Datenbestand Beispiel: SQL Seite 4 sind meist Mischungen aus aus verschiedenen Stil-Elementen.
Klassifikation der nach der Art der Verarbeitung Compilierte Sprachen in Zwischencode übersetzte Sprachen interpretierte Sprachen Compilierte Sprachen Programme werden in Maschinencode übersetzt Maschinencode: Bit-Sequenz die von der CPU verarbeitet werden kann Beispiele: C, C++ In Zwischencode übersetzte Sprachen Moderne Modifikation der compilierten Sprachen Programme werden erst in einen Zwischencode übersetzt (Maschinencode einer gedachten, hypothetischen CPU) dann später vom Zwischencode in den Code der realen CPU Vorteil: Zwischencode kann unabhängig von bestimmten Computern erzeugt und verbreitet werden. Beispiele: C#, Java Interpretierte Sprachen Ein anderes Programm analysiert das Programm und befolgt dessen Anweisungen Beispiele: Mathematica, VisualBasic, Seite 5
Klassifikation der nach Generationen (~ Abstraktionsebenen weg von der Hardware) Maschinensprachen (1-te Generation) Programme werden in der Sprache der Maschine (CPU) formuliert Assemblersprachen (2-te Generation) Programme werden in symbolischem Code formuliert dieser wird zu Maschinencode assembliert Erste höhere (3-te Generation) Programme werden Menschen-orientiert / Problem-orientiert mit Variablen Ausdrücken (Formeln) Kontrollstrukturen (z.b. Schleifen) formuliert und zu Maschinenprogrammen compiliert Weiterentwickelte höhere Der Begriff Generation wird etwa ab 1980 ungebräuchlich Große Vielfalt an basieren teils auf den gleichen, teils auf völlig unterschiedlichen Paradigmen. Seite 6
Klassifikation der nach Verwendungsart Professionelle Allzwecksprachen Komplexe Konstrukte Reichhaltige Bibliotheken mit vielen Programm-Bausteinen (> 10 3) Optimiert für die Entwicklung großer Software-Systeme (>104 Zeilen Code, typisch 100000 Zeilen) durch viele Entwickler (>101 Personen, typisch 25 Entwickler) über lange Zeiträume (>101 Monate, typisch 1 Jahr) Übersetzte Sprachen Beispiele: Java, C# Skriptsprachen, ad-hoc-sprachen Einfache Konstrukte Optimiert für kleine Software-Systeme (<104 Zeilen Code, typisch 100 Zeilen) durch wenige Entwickler (<101 Personen, typisch eine Person) über kurze Zeiträume (<101 Monate, typisch ein Tag bis eine Woche) Interpretierte Sprachen Beispiele: alle deklarativen Sprachen, die meisten funktionalen Sprachen Seite 7
Klassifikation der nach Einsatzgebiet Allzwecksprachen Allzwecksprachen geeignet für jede Problemstellung aus jedem Gebiet Beispiele: VB, C, C++, Java, C# Domänenspezifische Sprachen (DSLs domain specic languages) Auf ein Anwendungsfeld speziell zugeschnitten Beispiele: SQL, HTML, Seite 8
: Beispiel deklarative Sprache Beispiele deklarative Programmierung: HTML <html> <head> <title>hello world</title> </head> <body> <h1>mein erstes Hallo Welt Programm</h1> Hallo sag' I! </body> </html> HTML: Hypertext-Markup Language hypertext: verlinkter Text mark-up: Text mit Auszeichnungen = Formatierungsinformation Browser versteht HTML zeigt Text entsprechend an HTML-Datei (Programm) HTML: Sprache zur Programmierung von TextLayout und Verlinkung Programmausführung durch Firefox Seite 9
: Beispiel Skript-Sprache Beispiel Skript-Programmierung: Java-Script <html> <head> <title>hello world</title> </head> <body> <h1>mein zweites Hallo Welt Programm</h1> <script language="javascript"> var i = 0; while (i<5) { document.write('luja Sag i!<br>'); i = i+1; } </script> </body> </html> Java-Script (ECMA-Script) : Skript-Sprache die im Browser ausgeführt wird. HTML-Datei mit eingebettetem JavaScript (Programm) Browser versteht HTML und JavaScript erzeugt / zeigt Text entsprechend an Programmausführung durch Firefox Seite 10
: Beispiel compilierte imperative Sprache Beispiel: C C: #include <stdio.h> #include <stdlib.h> Compilierte Sprache Basis von C++, Java, C# sehr wichtig im Bereich der - Systemprogramme (Hilfs-Programm wie Betriebssystem, etc) - Im Hardware-nahen / embedded Bereich main(){ int i = 0; while (i<5) { printf("hello world!\n"); i = i+1; } } Programm übersetzen und ausführen in einer Konsole > gcc -o helloworld.c > helloworld Hello world! Hello world! Hello world! Hello world! Seite 11
: Beispiel Datenfluß-System Beispiel: Spreadsheet-Anwendung Programme ganz anders: nicht Schrittchen für Schrittchen sondern als Abhängigkeiten der Werte von Variablen (=Zellen); Datenfluss von Zellen zu Zelle. B4 B2 B3 B5 Datenfluss-Prinzip der Programmierung bei Spreadsheet-Anwendungen Seite 12
: Beispiel Abfragesprache Beispiel SQL Fahrzeughersteller Name Land GM USA Toyota Japan VW Deutschland PSA Frankreich Opel Deutschland... Programme ganz anders: Gewinn 2009 1000000 100000 30100 51522 99273 nicht Schrittchen für Schrittchen sondern als Fragen an eine Datenmenge SELECT * FROM FAHRZEUGHERSTELLER WHERE (LAND = 'USA') OR (LAND = 'Frankreich'); Name GM PSA... Land USA Frankreich Gewinn 2009 1000000 51522 SQL = Structured Query Language Sprache zur Formulierung von Abfragen in Datenbanken Seite 13