Geschichte der Programmiersprachen

Ähnliche Dokumente
Taschenbuch Programmiersprachen

1 Einleitung. 1.1 Definition und Geschichte. Holger Vogelsang und Peter A. Henning

Handbuch Programmiersprachen

1.3 Geschichte der Programmiersprachen

Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013

Programmiersprachen und Programmierkonzepte

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Softwaretechnik. Wesentliche Inhalte der Vorlesung

Stichworte zur Ideengeschichte der Programmiersprachen

Informatik Programmiersprachen eine kurze Übersicht

Teil 1: Einführung 1.5 Programmierparadigmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt

Einführung in die Programmierung WS 2014/ Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

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

6. Programmiersprachen im Überblick

Übung - Modellierung & Programmierung II

WS 2011/2012. Georg Sauthoff 1. November 10, 2011

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise?

Einführung in die Programmiertechnik

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

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE

Wie entsteht ein Computerprogramm?

Algorithmen und Programmieren II Einführung in Python

Selda Garip MatrikelNr.: Kennzahl: 533

1. Einführung. Grundbegriffe: Programm vs. Software. 1.1 Programmierung & Software 1.2 Programmiersprachen

Modellierung und Programmierung 1

In den weiterführenden Vorlesungen

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

Semantik von Programmiersprachen

Fachinformatiker/Fachinformatikerin

2 Grundlagen der Programmierung

Operatoren. Programmiersprachen. Programmablaufplan und Struktogramm.

Funktionale Programmierung (in Clojure)

Organisatorisches/Einstieg

Grundlagen der Informatik

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Objektorientiertes Software-Engineering

Einführung in die Informatik für Schülerinnen SS Margarita Esponda Warum Java? Geschichte der Programmiersprachen

Grundlagen der Informatik für Ingenieure I

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

Hochschule Darmstadt Prof.Dr. H.P.Weber. Informatik Pearson Education, Inc. All rights reserved.

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

Hochschule Darmstadt Prof.Dr. H.P.Weber. Programmieren Pearson Education, Inc. All rights reserved.

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Programmiersprachen und ihre Übersetzer

Einführung in die Programmierung mit Java

Algorithmen und Datenstrukturen"

Organisatorisches. Einführung in die Programmierung in C Hochschule Regensburg Universitätsstraße 31, Regensburg

1. Entwicklung der Datenverarbeitung

Programmieren in Haskell Einführung

Grundlagen der Modellierung und Programmierung, Übung

1. Einführung Grundlagen der Programmierung 1 (Java)

Informatik-Ausbildung Basis: I-CH Modulbaukasten R3 I-CH-M103-CC. Autoren: Ulrike Böttcher, Christian Münster

Einführung in die Programmierung

Einführung in das objektorientierte Programmieren

Sprachen und Programmiersprachen

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

Wie kann man die Korrektheit reaktiver Systeme gewährleisten?

Geschichte der Informatik 1/5

Computerorientierte Physik

INP (1) Prof. Dr.-Ing. S. Gössner. University of Applied Sciences Lippe & Höxter

Programmierkurs Python I

Konzepte hinter Microsoft's.NET. Ein Hauptseminarvortrag von Michael Voigt

Online-Publishing mit HTML und CSS für Einsteigerinnen

Einführung in die Programmiersprache Python

Programmierung: Ein erster Überblick

Einführung in PROLOG. Christian Stocker

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

Vorlesung 2: Programmieren mit C

Vergleich CLR von.net mit JVM:

2. Programmierung in C

12.Vorlesung Grundlagen der Informatik

5.1 Algorithmen Der Algorithmenbegriff

2. Erstellung einfacher Programme

E vs. F. BeF E vs. F - BeF - ICMP5 [redirect to reallife]

Glossar. SVG-Grafiken in Bitmap-Grafikformate. Anweisung Eine Anweisung ist eine Folge aus Schlüsselwörtern, Variablen, Objekten,

Der Computer von Neumann

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe

Problemorientierte Programmiersprachen Nachteile von Programmen in Maschinensprache sehr aufwendig bei komplexeren Aufgabenstellungen fehleranfällig

Objektorientierte Programmierung

Java. Warum Programmierung? Programmierung Beispiel Taschenrechner

Smalltalk vs. Java c Chris Burkert Smalltalk versus Java

Java Schulung. Objektorientierte Programmierung in Java. Prof. Dr. Nikolaus Wulff

Einführung ins Programmieren

X-Technologien. Ein Überblick. Ulrike Henny. IDE Summer School 2013, Chemnitz

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Objektorientierte Programmierung. 1. Einführung. Dresden, 10. April 2008

2 Grundlagen der Programmierung

Berater-Profil SW-Entwickler/-Designer (Rational Rose, ClearCase, J2EE, C++, CORBA -TAO/Orbix-)

Transkript:

Erster Vorläufer: das Plankalkül, 1942 von K. Zuse, erst 1975 erstmals vollständig beschrieben und implementiert, keine praktische Relevanz Sprachen der 1. Generation (1.GL): Maschinensprachen: binär, prozessorspezifisch Operationen: Verschieben von Daten zwischen Speicher und Registern, einfache arithmetische Operationen Bsp.: 10110000 01100011 (hex) B0 63 Operand 0x63 wird in AL-Register geladen

Sprachen der 2.Generation (2.GL): Assemblersprachen: Operationen des Prozessors in lesbarerem Text, registerorientiert, symbolische Abkürzungen für (Programm-) Adressen Sprünge und Schleifen, Übersetzer: Assemblerprogramm Maschinensprache Bsp. in Assembler: mv 63h, al

Assemblerprogramm: MOV SIZE,R2 MOV #ARRAY,R1 MOV (R1)+,R0 JSR PC,COMP HALT SIZE:.WORD 6 ARRAY:.WORD 137,10,205,647,53,122 COMP: DEC R2 BEQ RETURN CMP (R1)+,R0 BLT REPEAT MOV -(R1),R0 REPEAT: JSR PC,COMP RETURN: RTS PC.END

Assemblerprogramm: MOV SIZE,R2 //Größe des Feldes unter SIZE -> R2 MOV #ARRAY,R1 //Anfangsadr. des Feldes -> R1 MOV (R1)+,R0 //1.Feldlement nach R0 laden JSR PC,COMP //Sprung an Marke COMP HALT SIZE:.WORD 6 //Feldgröße wird hier festgelegt ARRAY:.WORD 137,10,205,647,53,122 //das Feld COMP: DEC R2 //R2 um1 erniedrigen (Restfeldgröße) BEQ RETURN //wenn 0: Feld abgearbeitet, Rückspr. CMP (R1)+,R0 //Vergleich akt. Elem mit nächstem BLT REPEAT //((R1)-R0 < 0: Sprung zu REPEAT MOV -(R1),R0 //(alten) Wert von R1 nach R0 REPEAT: JSR PC,COMP //Sprung nach COMP RETURN: RTS PC //Zurücksetzen des Programmzählers.END Symbolische Programmadressen

Sprachen der 3. Generation (3. GL) höhere Programmiersprachen genannt, ab Anfang der 60ger Jahre, Abstraktion von konkreter Hardware: nicht länger Befehlssatz eines speziellen Prozessors mehrere konzeptuelle Ausrichtungen: prozedurale Sprachen objektorientierte Sprachen funktionale Sprachen logische Sprachen die 4 großen Sprachparadigmen

Prozedurale Sprachen: problemorientiert, strukturiert theoretische Grundlage: Von-Neumann-Maschine erster, am weitesten verbreiteter Vertreter: FORTRAN (FORmular TRANslation), ab 1954, zur Berechnung mathematischer/physikalischer Formeln ALGOL (ALGOrithmic Language), ab 1960, erstmals Blockstruktur COBOL (COmmon Business Oriented Language), ab 1960 PASCAL, ab 1970, entwickelt von N. Wirth, strukturierte Programmierung statt GOTOs C, Modula-2, Basic, Ada,

Objektorientierte Sprachen: ab 1970 erster Vertreter (Ursprung): SMALLTALK, entwickelt am Palo Alto Research Center von Xerox weitere: C++, Eiffel, Java, seit 1990 Erweiterung vieler prozeduraler Sprachen um o.-o. Konzepte (sog. Hybride, wie z.b. C++) prozedurale und objektorientierte Sprachen: imperative Sprachen

Funktionale Sprachen: auch als deklarative Sprachen bezeichnet beruhen auf dem λ-kalkül Programm: nur Funktionendeklarationen, keine Handlungsabläufe Anwendungsbereiche: KI, Compilerbau, Computeralgebra erster Vertreter: LISP weitere: HOPE, ML, Haskell, Scheme, Miranda

Logische Sprachen: Datenbasis bestehend aus Fakten und Regeln Fakten: wahre Aussagen, in Form von Prädikaten Regeln: Horn-Klauseln Resolutionsverfahren leitet neue Aussagen aus Fakten und Regeln ab bekanntester Vertreter: Prolog (PROgramming in LOGic), Anfang der 70ger Jahre Logische und funktionale Sprachen werden oftmals als deklarative Sprachen bezeichnet: Problembeschreibung statt Algorithmusimplementation

Sprachen der 4. Generation (4.GL): keine speziellen Sprachparadigmen, oftmals Sprachen mit höherem Abstraktionsniveau, 4.GL als Marketinginstrument genutzt Beispiele: Skriptsprachen: SQL (Datenbankabfragesprache) TeX, LateX (Seitenlayoutsprache) awk, Perl, Tcl,. deskriptive Sprachen (ohne Programmlogik): XML, IDL, HTML,..

es gibt viele hundert Programmiersprachen nur wenige Dutzend sind heute wichtig/von praktischer Relevanz Sprache Ada ALGOL ANSYS APL APT Assembler AutoCAD awk Kurzbeschreibung Für sicherheitskritische Anwendungen Vorgänger vieler imperativer Sprachen Analysis Systems, für Finite-Elemente-Bereich für Großrechner Sprache für Werkzeugmaschinen Prozessornahe Programmierung 4GL-Sprache für CAD Stringverarbeitung unter UNIX

BASIC Allzweckprogrammiersprache für Anfänger BCL Vorläufer von C C Hardwarenahe Universalprogrammiersprache C* C-Dialekt zur Parallelprogrammierung C# C-Derivat von Microsoft C++ o.-o. Erweiterung von C CLOS Erweiterung von LISP um o.-o. Konzepte CLP Constrainted Logic Programming COBOL Im Bankenbereich von weit verbreitet CSP Communicating Sequential Processes, von Hoare Delphi o.-o. Programmiersprache DSL Vorläufer von PostScript Dylan Dynamic Language, Abkömmling von Scheme Eiffel o.-o. Programmiersprache Erlang Echtzeitfähige Sprache mit funktionalem Paradigma FORTRAN (ursprünglich) im wissenschaftlichen Bereich Haskell funktionale Sprache, auf λ-kalkül und Miranda basierend HTML deskriptive Sprache für Web-Seiten

IDL Java JavaScript LISP Logo Mathematica MATLAB Miranda Modula-2 Oberon Objective-C Occam Pascal PEARL Perl PHP PL/1 PostScript Interface Definition Language, abst. Beschreibg verteilter Objekte Universelle o.-o.sprache Skriptsprache, hauptsächlich zur Einbettung in HTML-Seiten symbolorientierte Sprache, basiert auf λ-kalkül, Einsatz: KI LISP-Abkömmling, kindgerechte Umsetzung einer Interpreterspr. programmierbares Computeralgebrasystem MATrix LABoratory, math.software für comp.gestützte Simulation leichte Skriptsprache, ab 1985,wird nicht mehr gepflegt Erweiterung von Pascal um modulare Konzepte, 1978 von Wirth Nachfolger von Modula-2 und Pascal, Einsatzbereich: Lehre SMALLTALK-ähnliche Erweiterung von C Sprache zur Parallelprogrammierung von Transputern Prozedurale Sprache von Wirth, ab 1968, früher Hauptlehrsprache Sprache für Echtzeit- und Multitaskingsysteme Universelle Skriptsprache, Grundlage vieler Webanwendungen Hypertext Preprocessor, dynamische Erstellung von Webseiten Programming Language 1, Vorläufer von C Seitenbeschreibungssprache, von Adobe

PROLOG Programming in Logic, von Alain Colmerauer Python Skriptsprache, für verteiltes BS Amoeba entworfen Ruby Skriptsprache, ähnlich Python, mit funkt. und o.-o. Elementen Scheme LISP-Dialekt SGML Standard Generalized Markup Lang., deskr. Spr. zur Textmarkierung Simula Vorläufer von SMALLTALK, 1966 SMALLTALK objekt-orientierte Programmiersprache, von Kay, Ingalls und Goldberg SNOBOL Sprache zur Manipulation von Zeichenketten SQL Structured Query Language, Datenbankabfragesprache, seit 1980 Tcl Tool Command Language, Skriptsprache mit Einflüssen von C u. LISP Visual Basic auf Basic basierende Sprache von Microsoft VRML Virtual Reality Modeling Language, zur Modellierung 3-dim.Welten XML extensible Markup Language, Metasprache zur Definition deskr. Spr. XSLT Funktionale PS zur Transformation von XML-Dokumenten

TIOBE Programming Community Index Sept. 2012 Position Sept. 2012 Position Sept. 2011 Position Sept 2010 Delta in Position Sprache Rating Sept 2012 Delta zu Sept 2011 1 2 2 + C 19,295% +1,29% 2 1 1 - Java 16,267% -2,49% 3 6 8 +++ Objective-C 9,770% +3,61% 4 3 3 - C++ 9,147% +0,30% 5 4 6 - C# 6,596% -0,22% 6 5 4 - PHP 5,614% -0,98% 7 7 5 = (Visual)Basic 5,528% +1,11% 8 8 7 = Python 3,861% -0,14% 9 9 9 = Perl 2,267% -0,20% 10 11 10 + Ruby 1,724% +0,29% 11 10 11 - JavaScript 1,328% -0,14% 12 12 12 = Delphi/ObjectPascal 0,993% -0,32% 13 14 13 + Lisp 0,969% -0,07% 15 39 18 -- Visual Basic.NET 0,840% +0,53% 16 16 14 = Pascal 0,830% -0,02% 25 33 Cobol 0.431% 32 Prolog 0,336%

TIOBE Programming Community Langzeit-Index Sprache Position Sept. 2012 Position Sept. 2009 Position Sept. 1997 Java 2 1 5 - C 1 2 1 1 C++ 3 3 2 6 PHP 6 5 - - (Visual) Basic 7 6 3 5 C# 5 7 - - Python 8 8 29 - Objective-C 3 44 - - Perl 9 4 7 - Ruby 10 25 - - Lisp 13 14 10 3 Ada 18 17 16 2 Position Sept. 1987

TIOBE Programming Community Index 2001-2012

Ziel der Vorlesung ist es nicht herauszufinden, welches die beste oder schönste Programmiersprache ist die einzig wahre Programmiersprache zur Beseitigung aller anderen Programmiersprachen zu finden oder zu konstruieren alle Programmiersprachen zu lernen, die es gibt sondern die verschiedenen Paradigmen (besser) kennen zu lernen und zu verstehen exemplarisch Vertreter dieser Paradigmen zu lernen

Aber Keine Programmiersprache dieser Welt macht das Programmieren letztlich einfach. Keine Sprache kann verhindern, dass jemand darin schlechte Programme schreibt.