Übung - Modellierung & Programmierung II

Mathias Goldau, Stefan Koch, Wieland Reich

[email protected] [email protected] [email protected] Organisatorisches

• Anmeldung: 1. Lernserver: http://informatik.uni-leipzig.de/ifi/studium/lernserver.html 2. Moodle: https://moodle2.uni-leipzig.de/ Einschreibeschlüssel: mup2_0XX, XX ∈ {01,02,..,10} • Problem? Neuigkeiten auf Lehrstuhlseite! Immernoch? Übungsleiter kontaktieren! • Übungsserien via Moodle: • 5 Serien je 4 Aufgaben + 1 Zusatzaufgabe • Abgabe per Moodle • Alle Lösungen in ein Archiv zusammenfassen (bspw. ZIP) • Alle Gruppen haben einen gemeinsamen Ausgabe- und Abgabetermin, jeweils zu Beginn und Ende des Übungsblocks • Besprechung im nächsten Seminar soweit als möglich. • Problem mit Kontrolle? Kontrolleur kontaktieren! Immernoch? Übungsleiter kontaktieren!

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Organisatorisches

• Zulassungsvoraussetzung für Klausur: mindestens 30 Punkte • Konsulationen zu Sprechstunden • Neugikeiten auf Lehrstuhlseite: Lehre > MuP2

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Outline

1 Einleitung

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Programmiersprachen

• Dienen zur Kommunikation von Menschen mit einem Computer • Synthetisch und exakt • Es gibt mehr als 8500 Programmiersprachen 1 • Historischer Abriss: http://en.wikipedia.org/wiki/History_of_programming_languages • Gibt es die “beste” Programmiersprache? • Eine Sprache ist Turing-Vollständig gdw Sie alle Funktionen berechnen kann welche auch eine Turing-Maschine berechnen kann.2 • Die meisten Programmiersprachen sind Turing-Vollständig

1 Thomas J. (Tim) Bergin. “A history of the history of programming languages”. In: Com. ACM 50.5 (2007), S. 69–74 2 Vgl. Berechenbarkeitstheorie.

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II 1954 1957 1960 1965 1970 1975 1980 1985 1990 1995 2000

PostScript PostScript level 2 PostScript level 3 1982 1992 september 11, 1996 OO Forth 1987 Forth FIG-Forth Forth-83 ANS Forth ISO Forth 1968 1978 1983 1986 1997

Logo Object Logo Tcl Tcl/Tk Tcl/Tk 8.1 Tcl/Tk 8.2.3 Tcl/Tk 8.3 1968 1986 mid 1988 end 1988 april 1999 dec. 16, 1999 october 22, 2001 I FORTRAN II FORTRAN III FORTRAN IV FORTRAN IV FORTRAN V Fortran 90 ISO FORTRAN (Fortran 66 ANS) (Fortran 77 ANSI) Fortran 95 ISO november 1954 october 1956 1957 end-1958 1962 1991 december 15, 1997 1966 april 1978 A A+ Prolog II Prolog III 1988 1992 Prolog IV 1970 october 1982 1984 1997 J K Sharp APL 1990 1996 JOSS TELCOMP MUMPS MUMPS (ANSI) MUMPS (FIPS) MUMPS ISO M M ANSI Open M M ISO 1964 1965 1966 september 15, 1977 1986 1992 1994 dec 8, 1995 1999 Modula 3 Delphi dec 11, 1995 Delphi 5 Delphi 6 1988 march 2, 1995 august, 1999 may 1, 2001 APL APL 2 APL96 1960 august 1984 1996 B ABC 1981 1987 Python Python 1.5.2 Python 1.6 Python 2.0 Python 2.1 Python 2.2 1991 april 13, 1999 april 17, 2001 Object Pascal Borland september 5, 2000 october 16, 2000 december 21, 2001 1985 Turbo Pascal B-O Flow-Matic COBOL COBOL 61 COBOL 61 COBOL COBOL 68 ANS COBOL 74 ANSI COBOL 85 ISO/ANSI OO COBOL 1957 1958 1959 1961 Extended 1965 1968 1974 1985 1997 1962 Rex 1.00 Rex 2.00 Rex 3.00 Rexx 3.20 ANSI Rexx Object Rexx may 1979 1980 1982 1984 february 25, 1997 Pascal Pascal AFNOR 1970 1983 Oberon Oberon-2 Active Oberon 1987 1991 Modula-2 ISO 2001 PL/M Modula Modula 2 Modula-2 ISO 1972 1979 june 1, 1996 Generic Extension 1975 Ada Ada 83 ANSI Ada ISO Ada 95 december 19, 1998 january 1983 1995 1979 1987 NetRexx # PL/I PL/1 ANS NetRexx 1.150 C# 1964 1976 1991 july 23, 1999 (ECMA) Concurrent C june 26, 2000 december 13, 2001 1984 ISO C CPL BCPL B C (K&) ANSI C ISO C ISO C (C99) C Classic C (C89) (C90) (C95) 1963 july 1967 1969 1971 1978 december 1, 1999 1989 december 15, 1990 april 1, 1996 JScript JScript JOVIAL JOVIAL I JOVIAL II JOVIAL 3 Objective-C may 1996 1959 1960 1961 1965 1983 LiveScript JavaScript 2.0 Cmm JavaScript JavaScript 1.5 (draft 1) CORAL 64 CORAL 66 1992 1995 december 1995 C with Classes C++ ARM C++ C++98 ANSI/ISO february 18, 1999 1964 1966 april 1980 1989 1998 CLU july 1983 ECMAScript ECMAScript ed3 1974 june 1997 december 1999 I Simula 67 Java 2 (v1.3) Java 2 (v1.4) Oak Java 1 Java 2 (v1.2) early access 1964 1967 june 1991 may 23, 1995 december 8, 1998 may 8, 2000 ALGOL W Mesa february 6, 2002 1977 Ruby IAL ALGOL 58 ALGOL 60 1966 ALGOL 68 Cedar Ruby 0.95 Ruby 1.1 alpha 0 Ruby 1.3.2 february 24, 1993 august 13, 1997 Ruby 1.6.1 Ruby 1.6.5 1958 1958 1960 december 1983 december 1995 april 2, 1999 september 27, 2000 september 19, 2001 1968 GOGOL GOGOL III Smalltalk-72 Smalltalk-74 Smalltalk-76 Smalltalk-78 Smalltalk-80 ANSI Smalltalk 1964 1967 1971 1972 1974 1976 1978 1980 may 19, 1998 sed Self Self 4.0 Self 4.1 Sail 1973 Mainsail Eiffel Eiffel 2 Eiffel 3 july 10, 1995 Eiffel 4 Eiffel 4.2 ISE Eiffel 5 august 7, 2001 1968 1975 1986 1988 1993 december 11, 1996 february 6, 1998 2001 ISWIM awk nawk PHP/FI PHP 2.0 PHP 3.0 PHP 4.0 PHP 4.1.0 1966 1978 1985 1995 june 6, 1998 may 22, 2000 KRC Sather 0.1 Sather 1.0 Sather 1.1 nov. 13, 1997 Sather 1.2.1 december 8, 2001 1981 june 1991 mid-1994 september 1995 csh november 4, 1999 october 1978 SASL 2.000 Perl 3.000 Perl 4.000 Perl 5.000 Perl 5.005_50 Perl 5.6.0 Perl 5.7,0 Perl 1.000 july 26, 1998 1976 Miranda december 18, 1987 january 5, 1988 october 18, 1989 march 21, 1991 october 18, 1994 march 28, 2000 september 2, 2000 1982 Objective Caml O’Caml 2 O’Caml 3.00 O’Caml 3.02 O’Caml 3.03 O’Caml 3.04 sh 1996 O’Caml 1.0.7 1969 december 11, 1997 1998 june 2000 july 30, 2001 dec 10, 2001 dec 12, 2001 MS Basic 2.0 BASICA GW-Basic QuickBasic 1.0 QuickBasic 4.5 MS Basic PDS 7.0 MS PDS 7.1 Visual Basic 3.0 Visual Basic 4.0 Visual Basic 5.0 Visual Basic 6.0 VB.NET BASIC 1989 Visual Basic 1.0 Visual Basic 2.0 may 1, 1964 july 1975 1981 1983 1985 1988 1990 may 20, 1991 march 1992 june 93 september 1995 april 1997 june 16, 1998 (Visual Basic 7.0) Clos 2001 Lisp Lisp 1 Lisp 1.5 Common Lisp 1989 Common Lisp ANSI 1958 1959 1962 1984 december 8, 1994

Scheme Scheme MIT Scheme 84 Scheme IEEE Scheme R5RS 1975 1978 1984 1990 1998 Haskell 1.0 Haskell 1.1 Haskell 1.2 Haskell 1.3 Haskell 1.4 Haskell 98 1987 april 1, 1990 march 1992 may 1996 april 1997 february 1999 ML SML SML ‘90 SML ‘97 1973 1984 1990 1997 SL5 Icon Unicon Languages SNOBOL SNOBOL 2 SNOBOL 3 SNOBOL 4 1976 1977 Caml 2-6.1 2001 february 27, 2011 Caml Caml 3.1 1962 april 1964 1965 1967 1987 1991 1993 © Éric Lévénez 1999-2011

2002 2003 2004 2005 2006 2007 2008 2009 2010 2011

PostScript level 3 PostScript level 3 v 3016 v 3017 2003 september 11, 2005

Tcl/Tk 8.4 Tcl/Tk 8.4.1 Tcl/Tk 8.4.2 Tcl/Tk 8.4.3 Tcl/Tk 8.4.4 Tcl/Tk 8.4.5 Tcl/Tk 8.4.6 Tcl/Tk 8.4.7 Tcl/Tk 8.4.8 Tcl/Tk 8.4.9 Tcl/Tk 8.4.11 Tcl/Tk 8.4.12 Tcl/Tk 8.4.13 Tcl/Tk 8.4.14 Tcl/Tk 8.4.15 Tcl/Tk 8.5 Tcl/Tk 8.5.5 Tcl/Tk 8.5.6 Tcl/Tk 8.5.7 Tcl/Tk 8.5.9 september 10, 2002 october 22, 2002 march 3, 2003 may 20, 2003 july 22, 2003 november 24, 2003 march 1, 2004 july 25, 2004 nov. 22, 2004 december 7, 2004 june 28, 2005 december 6, 2005 april 19, 2006 october 19, 2006 may 25, 2007 december 20, 2007 october 15, 2008 january 2009 april 15, 2009 september 8, 2010 Fortran 2000 Fortran 2003 Fortran 2008 (draft) september 2010 september 30, 2002 november 30, 2004

M ISO january 6, 2005 Delphi 7 Delphi 8 Delphi 2005 Delphi 2006 Delphi 2007 Delphi 2009 Delphi 2010 october 30, 2005 march 2007 august 2008 august 2009 august 6, 2002 november 2003 november 2004 Python 3.0a2 Python 3.0.1 Python 3.1 Python 3.2 december 7, 2007 Python 3.0 june 27, 2009 december 3, 2008 february 13, 2009 february 20, 2011 Python 2.2.1 Python 2.2.2 Python 2.3a2 Python 2.2.3 Python 2.3 Python 2.3.1 Python 2.3.2 Python 2.3.3 Python 2.3.4 Python 2.4 Python 2.4.1 Python 2.4.2 Python 2.5 Python 2.5.1 Python 2.6 Python 2.6.1 Python 2.6.2 Python 2.6.3 Python 2.7 Python 2.7.1 april 10, 2002 october 14, 2002 february 19, 2003 may 30, 2003 july 29, 2003 september 23, 2003 october 3, 2003 december 19, 2003 may 27, 2004 november 30, 2004 march 30, 2005 september 28, 2005 september 19, 2006 april 19, 2007 october 1, 2008 december 4, 2008 april 14, 2009 october 2, 2009 july 4, 2010 november 27, 2010

COBOL 2002 ISO/ANSI december 2002

Ada 2006 (draft) Ada 2005 2005 C# C# 2.0 march 9, 2007 (beta) C# 2.0 (ISO) november 2005 march 28, 2003 july 2003 C# 3.0 (beta) C# 3.0 C# 3.5 C# 4.0 september 2005 november 6, 2006 november 19, 2007 april 12, 2010 Objective-C 2.0 Objective-C 2.1 august 7, 2006 august 28, 2009 JavaScript 2.0 Java 2 (v6.0 beta) Java 6 update 2 Java 6 update 7 Java 6 update 11 Java 6 update 14 Java 6 update 24 (draft 4) Java 6 july 11, 2008 december 2004 december 11, 2006 july 5, 2007 december 2, 2008 june 10, 2009 february 15, 2011 april 26, 2002 C++03 ISO/IEC C++0x draft 2003 C++1x draft ECMAScript ed4 (draft) 2008 july 22, 2009 Java 2 (v1.5.0) 2002 Java 2 Java 2 (v5.0 update 3) Java 2 (v5.0 update 12) Java 2 (v5.0 update 16) Java 2 (v5.0 update 17) Java 2 (v5.0 update 18) Java 2 (v1.4.0_01) Java 2 (v1.4.1_03) (beta 1) Java 2 (v5.0) (beta 2) Java 2 (v5.0) Java 2 (v5.0 update 8) Java 2 (v5.0 update 21) Java 2 (v1.4.1) (v1.4.1_02) june 11, 2003 june 28, 2004 september 30, 2004 april 28, 2005 august 11, 2006 may 31, 2007 july 11, 2008 december 2, 2008 march 24, 2009 september 11, 2009 june 4, 2002 september 2002 february 27, 2003 Java 2 (v1.4.2) Java 2 (v1.4.2_01) Java 2 (v1.4.2_02) february 5, 2004 Java 2 (v1.4.2_18) Java 2 (v1.4.2_03) Java 2 (v1.4.2_04) Java 2 (v1.4.2_05) Java 2 (v1.4.2_06) Java 2 (v1.4.2_19) april 29, 2003 august 26, 2003 october 22, 2003 december 13, 2003 july 11, 2008 december 2, 2008 Ruby 1.9.2 preview 1 Ruby 1.6.7 Ruby 1.6.8 march 8, 2004 june 30, 2004 november 23, 2004 Ruby 1.8.2 Ruby 1.8.3 Ruby 1.8.4 Ruby 1.8.5 Ruby 1.8.6 Ruby 1.8.7 Ruby 1.9.1 Ruby 1.9.2 Ruby 1.8 Ruby 1.8.1 march 13, 2007 may 31, 2008 july 18, 2009 august 18, 2010 march 1, 2002 december 24, 2002 august 4, 2003 december 25, 2003 december 25, 2004 september 21, 2005 december 24, 2005 august 25, 2006 january 30, 2009

Self 4.1.6 Self 4.2.1 Self 4.3 september 2002 april 3, 2004 ECMA Eiffel june 30, 2006 june 2005 PHP 4.2.0 PHP 4.2.2 PHP 4.2.3 PHP 4.3.0 PHP 4.3.1 PHP 4.3.2 PHP 4.3.3 PHP 4.3.4 PHP 4.3.5 PHP 4.3.6 PHP 4.3.7 PHP 4.3.8 PHP 4.3.10 PHP 4.4.1 PHP 4.4.2 PHP 4.4.4 PHP 4.4.7 PHP 4.4.8 PHP 4.4.9 april 22, 2002 july 22, 2002 september 6, 2002 december 27, 2002 feb. 17, 2003 may 29, 2003 august 25, 2003 november 3, 2003 march 26, april 15, june 3, july 13, 2004 december 15, 2004 october 31, 2005 january 13, 2006 august 17, 2006 may 3, 2007 january 3, 2008 august 7, 2008 2004 2004 2004 PHP 5.0.0 PHP 5.3.5 PHP 5.0.3 PHP 5.0.4 PHP 5.0.5 PHP 5.1.0 PHP 5.1.6 PHP 5.2.0 PHP 5.2.3 PHP 5.2.4 PHP 5.2.5 PHP 5.2.6 PHP 5.2.7 PHP 5.2.8 PHP 5.3 july 13, 2004 december 15, 2004 PHP 5.2.9 january 6, 2011 april 3, 2005 september 6, 2005 november 24, 2005 august 24, 2006 november 2, 2006 may 31, 2007 august 30, 2007 november 9, 2007 may 1, 2008 december 4, 2008 december 8, 2008 february 26, 2009 june 30, 2009 Perl 5.8.0 Perl 5.8.1 Perl 5.8.2 Perl 5.8.3 Perl 5.8.4 Perl 5.8.5 Perl 5.8.6 Perl 5.8.7 Perl 5.8.8 Perl 5.10 Perl 5.11.0 Perl 5.12.0 Perl 5.12.3 july 18, 2002 september 26, 2003 november 5, 2003 january 1, 2004 april 23, 2004 july 21, 2004 november 30, 2004 june 3, 2005 february 2, 2006 december 18, 2007 october 2, 2009 april 12, 2010 january 21, 2011 O’Caml 3.05 O’Caml 3.06 O’Caml 3.07 O’Caml 3.08.0 O’Caml 3.08.2 O’Caml 3.09.2 O’Caml 3.10.0 O’Caml 3.10.2 O’Caml 3.11.0 O’Caml 3.11.1 O’Caml 3.12.0 july 29, 2002 august 20, 2002 september 29, 2003 july 13, 2004 november 2004 april 14, 2006 may 16, 2007 february 29, 2008 december 4, 2008 june 12, 2009 august 2, 2010

Scheme R6RS (draft) Scheme R6RS Haskell 98 september 14, 2006 august 28, 2007 Haskell 2010 Haskell HP 2010.2.0.0 (revised) (announced) july 2010 december 2002 november 2009 http://www.levenez.com/lang/ 1954 1957 1960 1965

Forth 1968

Logo 1968 FORTRAN IV FORTRAN FORTRAN I FORTRAN II FORTRAN III FORTRAN IV october 1956 1957 end-1958 1962 (Fortran 66 ANS) november 1954 1966

JOSS TELCOMP MUMPS 1964 1965 1966

APL 1960

B-O Flow-Matic COBOL COBOL 61 COBOL 61 COBOL COBOL 68 ANS 1957 1958 1959 1961 Extended 1965 1968 1962

PL/I 1964

CPL BCPL B 1963 july 1967 1969 JOVIAL JOVIAL I JOVIAL II JOVIAL 3 1959 1960 1961 1965

CORAL 64 CORAL 66 1964 1966

Simula I Simula 67 1964 1967 ALGOL W IAL ALGOL 58 ALGOL 60 1966 ALGOL 68 1958 1958 1960 december 1968 GOGOL GOGOL III 1964 1967

Sail 1968 ISWIM 1966

sh 1969 BASIC may 1, 1964

Lisp Lisp 1 Lisp 1.5 1958 1959 1962

Languages SNOBOL SNOBOL 2 SNOBOL 3 SNOBOL 4 february 27, 2011 1962 april 1964 1965 1967 © Éric Lévénez 1999-2011 http://www.levenez.com/lang/ 1960 1965 1970 1975

Forth FIG-Forth 1968 1978

Logo 1968 FORTRAN IV FORTRAN IV FORTRAN V 1962 (Fortran 66 ANS) (Fortran 77 ANSI) 1966 april 1978 Prolog 1970

JOSS TELCOMP MUMPS MUMPS (ANSI) 1964 1965 1966 september 15, 1977

APL 1960

COBOL 61 COBOL 61 COBOL COBOL 68 ANS COBOL 74 ANSI 1961 Extended 1965 1968 1974 1962 Rex 1.00 Pascal may 1979 1970

PL/M Modula Modula 2 1972 1979 1975 Ada PL/I PL/1 ANS 1979 1964 1976

BCPL C (K&R) CPL B C Classic C 1963 july 1967 1969 1971 1978 JOVIAL I JOVIAL II JOVIAL 3 1960 1961 1965

CORAL 64 CORAL 66 1964 1966 CLU 1974 Simula I Simula 67 1964 1967 ALGOL W Mesa ALGOL 60 1966 ALGOL 68 1977 1960 december 1968 GOGOL GOGOL III Smalltalk Smalltalk-72 Smalltalk-74 Smalltalk-76 Smalltalk-78 1964 1967 1971 1972 1974 1976 1978 sed Sail 1973 Mainsail 1968 1975 ISWIM awk 1966 1978

csh SASL october 1978 1976

sh 1969 BASIC MS Basic 2.0 may 1, 1964 july 1975

Lisp 1.5 1962

Scheme Scheme MIT 1975 1978

ML 1973 SL5 Icon SNOBOL SNOBOL 2 SNOBOL 3 SNOBOL 4 1976 1977 1962 april 1964 1965 1967

http://www.levenez.com/lang/ 1970 1975 1980 1985

PostScript 1982 OO Forth FIG-Forth Forth-83 ANS Forth 1987 1978 1983 1986

Object Logo Tcl Tcl/Tk 1986 mid 1988 end 1988 FORTRAN V (Fortran 77 ANSI) april 1978 A Prolog Prolog II Prolog III 1988 1970 october 1982 1984 Sharp APL MUMPS (ANSI) MUMPS (FIPS) september 15, 1977 1986 Modula 3 1988 APL 2 august 1984 B ABC 1981 1987

Object Pascal Borland Turbo Pascal COBOL 74 ANSI COBOL 85 ISO/ANSI 1985 1974 1985 Rex 1.00 Rex 2.00 Rex 3.00 Rexx 3.20 may 1979 1980 1982 1984 Pascal Pascal AFNOR 1970 1983 Oberon 1987 PL/M Modula Modula 2 1972 1979 1975 Ada Ada 83 ANSI Ada ISO january 1983 1987 PL/1 ANS 1979 1976 Concurrent C 1984 ANSI C C C (K&R) 1978 Classic C (C89) 1971 1989 Objective-C 1983

C with Classes C++ ARM C++ april 1980 1989 CLU july 1983 1974

Mesa 1977 Cedar 1983

Smalltalk Smalltalk-72 Smalltalk-74 Smalltalk-76 Smalltalk-78 Smalltalk-80 1971 1972 1974 1976 1978 1980 sed Self 1973 Mainsail Eiffel Eiffel 2 1975 1986 1988 awk nawk 1978 KRC 1985 1981 csh october 1978 SASL Perl 1.000 Perl 2.000 Perl 3.000 1976 Miranda december 18, 1987 january 5, 1988 october 18, 1989 1982

MS Basic 2.0 BASICA GW-Basic QuickBasic 1.0 QuickBasic 4.5 MS Basic PDS 7.0 july 1975 1981 1983 1985 1988 1989 Clos Common Lisp 1989 1984

Scheme Scheme MIT Scheme 84 1975 1978 1984 Haskell 1.0 1987 ML SML 1973 1984 SL5 Icon 1976 1977 Caml 1987 http://www.levenez.com/lang/ 1980 1985 1990

PostScript PostScript level 2 1982 1992 OO Forth Forth-83 ANS Forth 1987 1983 1986

Object Logo Tcl Tcl/Tk 1986 mid 1988 end 1988 Fortran 90 ISO 1991 A A+ Prolog II Prolog III 1988 1992 october 1982 1984 J Sharp APL 1990 MUMPS (FIPS) MUMPS ISO M 1986 1992 Modula 3 1994 1988 APL 2 august 1984 B ABC 1987 1981 Python 1991 Object Pascal Borland Turbo Pascal COBOL 85 ISO/ANSI 1985 1985 Rex 2.00 Rex 3.00 Rexx 3.20 1980 1982 1984 Pascal AFNOR 1983 Oberon Oberon-2 1987 1991

Ada 83 ANSI Ada ISO january 1983 1987 NetRexx 1991 Concurrent C 1984 ANSI C ISO C (C89) (C90) 1989 december 15, 1990 Objective-C 1983 Cmm 1992 C with Classes C++ ARM C++ april 1980 july 1983 1989

Oak june 1991 Ruby Cedar february 24, 1993 1983 Smalltalk-80 1980 Self Eiffel Eiffel 2 Eiffel 3 1986 1988 1993 nawk KRC 1985 Sather 0.1 Sather 1.0 1981 june 1991 mid-1994

Perl 1.000 Perl 2.000 Perl 3.000 Perl 4.000 Perl 5.000 Miranda december 18, 1987 january 5, 1988 october 18, 1989 march 21, 1991 october 18, 1994 1982

BASICA GW-Basic QuickBasic 1.0 QuickBasic 4.5 MS Basic PDS 7.0 MS PDS 7.1 Visual Basic 3.0 1989 Visual Basic 1.0 Visual Basic 2.0 1981 1983 1985 1988 1990 may 20, 1991 march 1992 june 93 Clos Common Lisp 1989 Common Lisp ANSI 1984 december 8, 1994

Scheme 84 Scheme IEEE 1984 1990 Haskell 1.0 Haskell 1.1 Haskell 1.2 1987 april 1, 1990 march 1992 SML SML ‘90 1984 1990

Caml Caml 2-6.1 Caml 3.1 1987 1991 1993 http://www.levenez.com/lang/ 1990 1995

PostScript level 2 PostScript level 3 1992 september 11, 1996 ISO Forth 1997

Tcl/Tk 8.1 Tcl/Tk 8.2.3 april 1999 dec. 16, 1999

Fortran 90 ISO Fortran 95 ISO 1991 december 15, 1997 A+ 1992 Prolog IV 1997 J K 1990 1996 MUMPS ISO M M ANSI Open M M ISO 1992 1994 dec 8, 1995 1999 Delphi dec 11, 1995 Delphi 5 march 2, 1995 APL96 august, 1999 1996

Python Python 1.5.2 1991 april 13, 1999 OO COBOL 1997 ANSI Rexx Object Rexx february 25, 1997 Oberon-2 1991 Modula-2 ISO Modula-2 ISO june 1, 1996 Generic Extension Ada 95 december 19, 1998 1995 NetRexx NetRexx 1.150 1991 july 23, 1999

ISO C ISO C ISO C (C99) (C90) (C95) december 1, 1999 december 15, 1990 april 1, 1996 JScript may 1996 JavaScript 2.0 Cmm LiveScript JavaScript 1995 JavaScript 1.5 (draft 1) 1992 december 1995 C++98 ANSI/ISO february 18, 1999 1998 ECMAScript ECMAScript ed3 june 1997 december 1999 Oak Java 1 Java 2 (v1.2) june 1991 may 23, 1995 december 8, 1998 Ruby Ruby 1.1 alpha 0 february 24, 1993 Ruby 0.95 Ruby 1.3.2 december 1995 august 13, 1997 april 2, 1999 ANSI Smalltalk may 19, 1998 Self 4.0 Eiffel 3 july 10, 1995 Eiffel 4 Eiffel 4.2 1993 december 11, 1996 february 6, 1998 PHP/FI PHP 2.0 PHP 3.0 1995 june 6, 1998 Sather 0.1 Sather 1.0 Sather 1.1 nov. 13, 1997 Sather 1.2.1 june 1991 mid-1994 september 1995 november 4, 1999

Perl 4.000 Perl 5.000 Perl 5.005_50 march 21, 1991 october 18, 1994 july 26, 1998 Objective Caml O’Caml 2 1996 O’Caml 1.0.7 december 11, 1997 1998 MS PDS 7.1 Visual Basic 1.0 Visual Basic 2.0 Visual Basic 3.0 Visual Basic 4.0 Visual Basic 5.0 Visual Basic 6.0 1990 may 20, 1991 march 1992 june 93 september 1995 april 1997 june 16, 1998 Common Lisp ANSI december 8, 1994

Scheme IEEE Scheme R5RS 1990 1998 Haskell 1.1 Haskell 1.2 Haskell 1.3 Haskell 1.4 Haskell 98 april 1, 1990 march 1992 may 1996 april 1997 february 1999 SML ‘90 SML ‘97 1990 1997

Caml 2-6.1 Caml 3.1 1991 1993

http://www.levenez.com/lang/ 1995 2000

PostScript level 3 september 11, 1996 ISO Forth 1997

Tcl/Tk 8.1 Tcl/Tk 8.2.3 Tcl/Tk 8.3 april 1999 dec. 16, 1999 october 22, 2001

Fortran 95 ISO december 15, 1997 Prolog IV 1997 K 1996 M ANSI Open M M ISO dec 8, 1995 1999 Delphi dec 11, 1995 Delphi 5 Delphi 6 march 2, 1995 APL96 august, 1999 may 1, 2001 1996

Python 1.5.2 Python 1.6 Python 2.0 Python 2.1 Python 2.2 april 13, 1999 september 5, 2000 october 16, 2000 april 17, 2001 december 21, 2001 OO COBOL 1997 ANSI Rexx Object Rexx february 25, 1997 Active Oberon 2001 Modula-2 ISO Modula-2 ISO june 1, 1996 Generic Extension Ada 95 december 19, 1998 1995 C# NetRexx 1.150 C# july 23, 1999 (ECMA) june 26, 2000 december 13, 2001 ISO C ISO C (C99) (C95) december 1, 1999 april 1, 1996 JScript JScript may 1996 JavaScript 2.0 LiveScript JavaScript 1995 JavaScript 1.5 (draft 1) december 1995 C++98 ANSI/ISO february 18, 1999 1998 ECMAScript ECMAScript ed3 june 1997 december 1999 Java 2 (v1.4) Java 1 Java 2 (v1.2) Java 2 (v1.3) may 8, 2000 early access may 23, 1995 december 8, 1998 february 6, 2002 Ruby 0.95 Ruby 1.1 alpha 0 Ruby 1.3.2 august 13, 1997 Ruby 1.6.1 Ruby 1.6.5 december 1995 april 2, 1999 september 27, 2000 september 19, 2001 ANSI Smalltalk may 19, 1998 Self 4.0 Self 4.1 july 10, 1995 Eiffel 4 Eiffel 4.2 ISE Eiffel 5 august 7, 2001 december 11, 1996 february 6, 1998 2001 PHP/FI PHP 2.0 PHP 3.0 PHP 4.0 PHP 4.1.0 1995 june 6, 1998 may 22, 2000 Sather 1.1 nov. 13, 1997 Sather 1.2.1 december 8, 2001 september 1995 november 4, 1999

Perl 5.005_50 Perl 5.6.0 Perl 5.7,0 july 26, 1998 march 28, 2000 september 2, 2000

Objective Caml O’Caml 2 O’Caml 3.00 O’Caml 3.02 O’Caml 3.03 O’Caml 3.04 1996 O’Caml 1.0.7 december 11, 1997 1998 june 2000 july 30, 2001 dec 10, 2001 dec 12, 2001 Visual Basic 4.0 Visual Basic 5.0 Visual Basic 6.0 VB.NET september 1995 april 1997 june 16, 1998 (Visual Basic 7.0) 2001

Scheme R5RS 1998 Haskell 1.3 Haskell 1.4 Haskell 98 may 1996 april 1997 SML ‘97 february 1999 1997 Unicon 2001

http://www.levenez.com/lang/ 2000 2002

Tcl/Tk 8.3 Tcl/Tk 8.4 Tcl/Tk 8.4.1 Tcl/Tk 8.4.2 Tcl/Tk 8.4.3 october 22, 2001 september 10, 2002 october 22, 2002 march 3, 2003 may 20, 2003 Fortran 2000 (draft) september 30, 2002

Delphi 6 Delphi 7 may 1, 2001 august 6, 2002

Python 1.6 Python 2.0 Python 2.1 Python 2.2 Python 2.2.1 Python 2.2.2 Python 2.3a2 Python 2.2.3 september 5, 2000 october 16, 2000 april 17, 2001 december 21, 2001 april 10, 2002 october 14, 2002 february 19, 2003 may 30, 2003 COBOL 2002 ISO/ANSI december 2002

Active Oberon 2001

C# C# C# (ECMA) june 26, 2000 (ISO) december 13, 2001 march 28, 2003

JScript

JavaScript 2.0 (draft 4) april 26, 2002 ECMAScript ed4 (draft) Java 2 (v1.4) 2002 Java 2 Java 2 (v1.3) Java 2 (v1.4.0_01) Java 2 (v1.4.1) (v1.4.1_02) may 8, 2000 early access february 6, 2002 june 4, 2002 september 2002 february 27, 2003 Java 2 (v1.4.2) april 29, 2003 Ruby 1.6.1 Ruby 1.6.5 Ruby 1.6.7 Ruby 1.6.8 september 27, 2000 september 19, 2001 march 1, 2002 december 24, 2002

Self 4.1 Self 4.1.6 ISE Eiffel 5 august 7, 2001 september 2002 2001 PHP 4.0 PHP 4.1.0 PHP 4.2.0 PHP 4.2.2 PHP 4.2.3 PHP 4.3.0 PHP 4.3.1 PHP 4.3.2 may 22, 2000 december 8, 2001 april 22, 2002 july 22, 2002 september 6, 2002 december 27, 2002 feb. 17, 2003 may 29, 2003

Perl 5.6.0 Perl 5.7,0 Perl 5.8.0 march 28, 2000 september 2, 2000 july 18, 2002

O’Caml 3.00 O’Caml 3.02 O’Caml 3.03 O’Caml 3.04 O’Caml 3.05 O’Caml 3.06 june 2000 july 30, 2001 dec 10, 2001 dec 12, 2001 july 29, 2002 august 20, 2002 VB.NET (Visual Basic 7.0) 2001

Haskell 98 (revised) december 2002 Unicon 2001

http://www.levenez.com/lang/ 2002 2003 2004

PostScript level 3 v 3016 2003

Tcl/Tk 8.4 Tcl/Tk 8.4.1 Tcl/Tk 8.4.2 Tcl/Tk 8.4.3 Tcl/Tk 8.4.4 Tcl/Tk 8.4.5 Tcl/Tk 8.4.6 september 10, 2002 october 22, 2002 march 3, 2003 may 20, 2003 july 22, 2003 november 24, 2003 march 1, 2004 Fortran 2000 (draft) september 30, 2002

Delphi 7 Delphi 8 august 6, 2002 november 2003

Python 2.2.1 Python 2.2.2 Python 2.3a2 Python 2.2.3 Python 2.3 Python 2.3.1 Python 2.3.2 Python 2.3.3 Python 2.3.4 april 10, 2002 october 14, 2002 february 19, 2003 may 30, 2003 july 29, 2003 september 23, 2003 october 3, 2003 december 19, 2003 may 27, 2004

COBOL 2002 ISO/ANSI december 2002

C# C# 2.0 (ISO) (beta) march 28, 2003 july 2003

JavaScript 2.0 (draft 4) april 26, 2002 C++03 ISO/IEC 2003 ECMAScript ed4 (draft) Java 2 (v1.5.0) 2002 Java 2 Java 2 (v1.4.1_03) Java 2 (v5.0) (beta 2) Java 2 (v1.4.0_01) Java 2 (v1.4.1) (v1.4.1_02) (beta 1) june 11, 2003 february 5, 2004 june 28, 2004 june 4, 2002 september 2002 february 27, 2003 Java 2 (v1.4.2) Java 2 (v1.4.2_01) Java 2 (v1.4.2_02) Java 2 (v1.4.2_03) april 29, 2003 august 26, 2003 october 22, 2003 Java 2 (v1.4.2_04) Java 2 (v1.4.2_05) december 13, 2003 march 8, 2004 june 30, 2004 Ruby 1.6.7 Ruby 1.6.8 Ruby 1.8 Ruby 1.8.1 march 1, 2002 december 24, 2002 august 4, 2003 december 25, 2003

Self 4.1.6 Self 4.2.1 september 2002 april 3, 2004

PHP 4.2.0 PHP 4.2.2 PHP 4.2.3 PHP 4.3.0 PHP 4.3.1 PHP 4.3.2 PHP 4.3.3 PHP 4.3.4 PHP 4.3.5 PHP 4.3.6 PHP 4.3.7 april 22, 2002 july 22, 2002 september 6, 2002 december 27, 2002 feb. 17, 2003 may 29, 2003 august 25, 2003 november 3, 2003 march 26, april 15, june 3, 2004 2004 2004

Perl 5.8.0 Perl 5.8.1 Perl 5.8.2 Perl 5.8.3 Perl 5.8.4 july 18, 2002 september 26, 2003 november 5, 2003 january 1, 2004 april 23, 2004

O’Caml 3.05 O’Caml 3.06 O’Caml 3.07 july 29, 2002 august 20, 2002 september 29, 2003

Haskell 98 (revised) december 2002

http://www.levenez.com/lang/ 2003 2004 2005

PostScript level 3 PostScript level 3 v 3016 v 3017 2003 september 11, 2005

Tcl/Tk 8.4.4 Tcl/Tk 8.4.5 Tcl/Tk 8.4.6 Tcl/Tk 8.4.7 Tcl/Tk 8.4.8 Tcl/Tk 8.4.9 Tcl/Tk 8.4.11 Tcl/Tk 8.4.12 july 22, 2003 november 24, 2003 march 1, 2004 july 25, 2004 nov. 22, 2004 december 7, 2004 june 28, 2005 december 6, 2005 Fortran 2003 november 30, 2004

M ISO january 6, 2005 Delphi 8 Delphi 2005 Delphi 2006 november 2003 november 2004 october 30, 2005

Python 2.3 Python 2.3.1 Python 2.3.2 Python 2.3.3 Python 2.3.4 Python 2.4 Python 2.4.1 Python 2.4.2 july 29, 2003 september 23, 2003 october 3, 2003 december 19, 2003 may 27, 2004 november 30, 2004 march 30, 2005 september 28, 2005

Ada 2006 (draft) 2005 C# 2.0 (beta) C# 2.0 july 2003 november 2005 C# 3.0 (beta) september 2005

Java 2 (v6.0 beta) december 2004 C++03 ISO/IEC 2003 Java 2 (v1.5.0) Java 2 (v1.4.1_03) Java 2 (v5.0) (beta 2) Java 2 (v5.0) Java 2 (v5.0 update 3) (beta 1) april 28, 2005 june 11, 2003 february 5, 2004 june 28, 2004 september 30, 2004 Java 2 (v1.4.2_01) Java 2 (v1.4.2_02) Java 2 (v1.4.2_03) Java 2 (v1.4.2_06) august 26, 2003 october 22, 2003 Java 2 (v1.4.2_04) Java 2 (v1.4.2_05) december 13, 2003 march 8, 2004 june 30, 2004 november 23, 2004 Ruby 1.8 Ruby 1.8.1 Ruby 1.8.2 Ruby 1.8.3 Ruby 1.8.4 august 4, 2003 december 25, 2003 december 25, 2004 september 21, 2005 december 24, 2005

Self 4.2.1 april 3, 2004 ECMA Eiffel june 2005 PHP 4.3.3 PHP 4.3.4 PHP 4.3.5 PHP 4.3.6 PHP 4.3.7 PHP 4.3.8 PHP 4.3.10 PHP 4.4.1 august 25, 2003 november 3, 2003 march 26, april 15, june 3, july 13, 2004 december 15, 2004 october 31, 2005 2004 2004 2004 PHP 5.0.0 PHP 5.0.3 PHP 5.0.4 PHP 5.0.5 july 13, 2004 PHP 5.1.0 december 15, 2004 april 3, 2005 september 6, 2005 november 24, 2005 Perl 5.8.1 Perl 5.8.2 Perl 5.8.3 Perl 5.8.4 Perl 5.8.5 Perl 5.8.6 Perl 5.8.7 september 26, 2003 november 5, 2003 january 1, 2004 april 23, 2004 july 21, 2004 november 30, 2004 june 3, 2005 O’Caml 3.07 O’Caml 3.08.0 O’Caml 3.08.2 september 29, 2003 july 13, 2004 november 2004

http://www.levenez.com/lang/ 2005 2006 2007

PostScript level 3 v 3017 september 11, 2005

Tcl/Tk 8.4.7 Tcl/Tk 8.4.8 Tcl/Tk 8.4.9 Tcl/Tk 8.4.11 Tcl/Tk 8.4.12 Tcl/Tk 8.4.13 Tcl/Tk 8.4.14 Tcl/Tk 8.4.15 Tcl/Tk 8.5 july 25, 2004 nov. 22, 2004 december 7, 2004 june 28, 2005 december 6, 2005 april 19, 2006 october 19, 2006 may 25, 2007 december 20, 2007

Fortran 2003 november 30, 2004

M ISO january 6, 2005 Delphi 2005 Delphi 2006 Delphi 2007 march 2007 november 2004 october 30, 2005 Python 3.0a2 december 7, 2007

Python 2.4 Python 2.4.1 Python 2.4.2 Python 2.5 Python 2.5.1 november 30, 2004 march 30, 2005 september 28, 2005 september 19, 2006 april 19, 2007

Ada 2006 (draft) Ada 2005 2005 march 9, 2007 C# 2.0 november 2005 C# 3.0 (beta) C# 3.0 C# 3.5 september 2005 november 6, 2006 november 19, 2007 Objective-C 2.0 august 7, 2006 Java 2 (v6.0 beta) Java 6 Java 6 update 2 december 2004 december 11, 2006 july 5, 2007

Java 2 (v5.0) Java 2 (v5.0 update 3) Java 2 (v5.0 update 8) Java 2 (v5.0 update 12) september 30, 2004 april 28, 2005 august 11, 2006 may 31, 2007 Java 2 (v1.4.2_06) november 23, 2004 Ruby 1.8.2 Ruby 1.8.3 Ruby 1.8.4 Ruby 1.8.5 Ruby 1.8.6 december 25, 2004 september 21, 2005 december 24, 2005 august 25, 2006 march 13, 2007

Self 4.3 ECMA Eiffel june 30, 2006 june 2005 PHP 4.3.8 PHP 4.3.10 PHP 4.4.1 PHP 4.4.2 PHP 4.4.4 PHP 4.4.7 july 13, 2004 december 15, 2004 october 31, 2005 january 13, 2006 august 17, 2006 may 3, 2007 PHP 5.0.0 PHP 5.0.3 PHP 5.0.4 PHP 5.0.5 PHP 5.1.6 july 13, 2004 PHP 5.1.0 PHP 5.2.0 PHP 5.2.3 PHP 5.2.4 PHP 5.2.5 december 15, 2004 april 3, 2005 september 6, 2005 november 24, 2005 august 24, 2006 november 2, 2006 may 31, 2007 august 30, 2007 november 9, 2007 Perl 5.8.5 Perl 5.8.6 Perl 5.8.7 Perl 5.8.8 Perl 5.10 july 21, 2004 november 30, 2004 june 3, 2005 february 2, 2006 december 18, 2007 O’Caml 3.08.0 O’Caml 3.08.2 O’Caml 3.09.2 O’Caml 3.10.0 july 13, 2004 november 2004 april 14, 2006 may 16, 2007

Scheme R6RS (draft) Scheme R6RS september 14, 2006 august 28, 2007

http://www.levenez.com/lang/ 2006 2007 2008 2009

Tcl/Tk 8.4.13 Tcl/Tk 8.4.14 Tcl/Tk 8.4.15 Tcl/Tk 8.5 Tcl/Tk 8.5.5 Tcl/Tk 8.5.6 Tcl/Tk 8.5.7 april 19, 2006 october 19, 2006 may 25, 2007 december 20, 2007 october 15, 2008 january 2009 april 15, 2009

Delphi 2007 Delphi 2009 march 2007 august 2008 Python 3.0a2 Python 3.0.1 Python 3.1 december 7, 2007 Python 3.0 june 27, 2009 december 3, 2008 february 13, 2009 Python 2.5 Python 2.5.1 Python 2.6 Python 2.6.1 Python 2.6.2 september 19, 2006 april 19, 2007 october 1, 2008 december 4, 2008 april 14, 2009

Ada 2005 march 9, 2007

C# 3.0 C# 3.5 november 6, 2006 november 19, 2007 Objective-C 2.0 august 7, 2006 Java 6 update 2 Java 6 update 7 Java 6 update 11 Java 6 update 14 Java 6 july 11, 2008 december 11, 2006 july 5, 2007 december 2, 2008 june 10, 2009 C++0x draft 2008 Java 2 (v5.0 update 8) Java 2 (v5.0 update 12) Java 2 (v5.0 update 16) Java 2 (v5.0 update 17) Java 2 (v5.0 update 18) august 11, 2006 may 31, 2007 july 11, 2008 december 2, 2008 march 24, 2009 Java 2 (v1.4.2_18) Java 2 (v1.4.2_19) july 11, 2008 december 2, 2008 Ruby 1.8.5 Ruby 1.8.6 Ruby 1.8.7 Ruby 1.9.1 august 25, 2006 march 13, 2007 may 31, 2008 january 30, 2009

Self 4.3 june 30, 2006

PHP 4.4.2 PHP 4.4.4 PHP 4.4.7 PHP 4.4.8 PHP 4.4.9 january 13, 2006 august 17, 2006 may 3, 2007 january 3, 2008 august 7, 2008

PHP 5.1.6 PHP 5.2.0 PHP 5.2.3 PHP 5.2.4 PHP 5.2.5 PHP 5.2.6 PHP 5.2.7 PHP 5.2.8 PHP 5.2.9 PHP 5.3 august 24, 2006 november 2, 2006 may 31, 2007 august 30, 2007 november 9, 2007 may 1, 2008 december 4, 2008 december 8, 2008 february 26, 2009 june 30, 2009 Perl 5.8.8 Perl 5.10 february 2, 2006 december 18, 2007 O’Caml 3.09.2 O’Caml 3.10.0 O’Caml 3.10.2 O’Caml 3.11.0 O’Caml 3.11.1 april 14, 2006 may 16, 2007 february 29, 2008 december 4, 2008 june 12, 2009

Scheme R6RS (draft) Scheme R6RS september 14, 2006 august 28, 2007

http://www.levenez.com/lang/ 2008 2009 2010 2011

Tcl/Tk 8.5.5 Tcl/Tk 8.5.6 Tcl/Tk 8.5.7 Tcl/Tk 8.5.9 october 15, 2008 january 2009 april 15, 2009 september 8, 2010 Fortran 2008 september 2010

Delphi 2009 Delphi 2010 august 2008 august 2009 Python 3.0.1 Python 3.1 Python 3.2 Python 3.0 june 27, 2009 december 3, 2008 february 13, 2009 february 20, 2011 Python 2.6 Python 2.6.1 Python 2.6.2 Python 2.6.3 Python 2.7 Python 2.7.1 october 1, 2008 december 4, 2008 april 14, 2009 october 2, 2009 july 4, 2010 november 27, 2010

C# 4.0 april 12, 2010 Objective-C 2.1 august 28, 2009 Java 6 update 7 Java 6 update 11 Java 6 update 14 Java 6 update 24 july 11, 2008 december 2, 2008 june 10, 2009 february 15, 2011 C++0x draft C++1x draft 2008 july 22, 2009 Java 2 (v5.0 update 16) Java 2 (v5.0 update 17) Java 2 (v5.0 update 18) Java 2 (v5.0 update 21) july 11, 2008 december 2, 2008 march 24, 2009 september 11, 2009 Java 2 (v1.4.2_18) Java 2 (v1.4.2_19) july 11, 2008 december 2, 2008 Ruby 1.8.7 Ruby 1.9.1 Ruby 1.9.2 preview 1 Ruby 1.9.2 may 31, 2008 january 30, 2009 july 18, 2009 august 18, 2010

PHP 4.4.8 PHP 4.4.9 january 3, 2008 august 7, 2008

PHP 5.2.6 PHP 5.2.7 PHP 5.2.8 PHP 5.3 PHP 5.3.5 PHP 5.2.9 january 6, 2011 may 1, 2008 december 4, 2008 december 8, 2008 february 26, 2009 june 30, 2009 Perl 5.11.0 Perl 5.12.0 Perl 5.12.3 october 2, 2009 april 12, 2010 january 21, 2011 O’Caml 3.10.2 O’Caml 3.11.0 O’Caml 3.11.1 O’Caml 3.12.0 february 29, 2008 december 4, 2008 june 12, 2009 august 2, 2010

Haskell 2010 Haskell HP 2010.2.0.0 (announced) july 2010 november 2009

http://www.levenez.com/lang/ Klassifizierung von Programmiersprachen mit Paradigmen

• Imperative: Beschreibt das WIE • Strukturiert (if, else,. . . aber kein GOTO) • Prozedural (Es gibt Prozeduren) • Modular (Prozeduren in Module zusammengefasst) • Abstrakte Datentypen (bspw. Objektorientiert) • Deklarative: Beschreibt das WAS • Funktional • Logikbasiert • Bedingungsbasiert (Vor- und Nachbedingungen)

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Einstieg in eine (neue) Programmiersprache

• Oftmals ein minimales Programm bspw. Hello World!3 • Daher zum Einstieg am Besten keine Integrierte Entwicklungsumgebung (IDE), sondern ein Texteditor! • Hello World! nicht immer direkt möglich, bspw. OpenCL • Unterschiede zwischen Sprachen: Syntax, Anweisungen, Variablen, Operatoren, Datentypen, Bibliotheken

3 http://en.wikipedia.org/wiki/List_of_Hello_world_program_examples

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Mehrsprachige Programme (polyglott)

1 /*The following is in C, Pascal, FORTRAN, and PHP.*/ 2 3 const a = ’\’’; void b()/*’; var b:string;{ 4 c */ { /* 5 c document.fgColor=’#ffffff’"; 6 cos(1);print "Merry Christmas" ?> 7 17 format(’Merry Christmas’) 8 write(6, 15) 9 stop 10 end 11 c */ 12 char *a = "}begin b\coloneqq’{"; } int main () { /*’; writeln{*/ 13 char cbuf[64]; sprintf(cbuf, "}(’Merry Christmas’) end. {"); 14 cbuf[29] = ’\0’; printf(cbuf+3); return 0; }

http://www.gnu.org/fun/jokes/merry-xmas.html

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Mehrsprachige Programme (polyglott)

1 /*The following is inC, Pascal,FORTRAN, andPHP.*/ 2 3 consta=’\’’; void b()/*’; varb:string;{ 4 c*/{/* 5 c document.fgColor=’#ffffff’"; 6 cos(1);print"Merry Christmas" ?> 7 17 format(’Merry Christmas’) 8 write(6, 15) 9 stop 10 end 11 c*/ 12 char *a="}beginb\coloneqq’{";} int main () {/*’; writeln{*/ 13 char cbuf[64]; sprintf(cbuf,"}(’Merry Christmas’) end.{"); 14 cbuf[29] =’\0’; printf(cbuf+3); return 0; }

http://www.gnu.org/fun/jokes/merry-xmas.html

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Mehrsprachige Programme (polyglott)

1 /*The following is inC, Pascal,FORTRAN, andPHP.*/ 2 3 const a =’\’’; void b()/*’; varb:string;{ 4 c*/{/* 5 c document.fgColor=’#ffffff’"; 6 cos(1);print"Merry Christmas" ?> 7 17 format(’Merry Christmas’) 8 write(6, 15) 9 stop 10 end 11 c*/ 12 char *a ="}beginb\coloneqq’{"; } int main () {/*’; writeln{*/ 13 char cbuf[64]; sprintf(cbuf,"}(’Merry Christmas’) end.{"); 14 cbuf[29] =’\0’; printf(cbuf+3); return 0; }

http://www.gnu.org/fun/jokes/merry-xmas.html

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Mehrsprachige Programme (polyglott)

1 /*The following is in C, Pascal, FORTRAN, and PHP.*/ 2 3 const a =’\’’; voidb()/*’; var b:string;{ 4 c */ { /* 5 c document.fgColor=’#ffffff’"; 6 cos(1);print"Merry Christmas" ?> 7 17 format(’Merry Christmas’) 8 write(6, 15) 9 stop 10 end 11 c*/ 12 char*a="}begin b\coloneqq’{";} int main(){/*’; writeln{*/ 13 char cbuf[64]; sprintf(cbuf,"}(’Merry Christmas’) end.{"); 14 cbuf[29] =’\0’; printf(cbuf+3); return 0; }

http://www.gnu.org/fun/jokes/merry-xmas.html

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II Mehrsprachige Programme (polyglott)

1 /*The following is in C, Pascal, FORTRAN, andPHP.*/ 2 3 consta=’\’’; voidb()/*’; var b:string;{ 4 c*/{/* 5 c document.fgColor=’#ffffff’"; 6 cos(1);print"Merry Christmas" ?> 7 17 format(’Merry Christmas’) 8 write(6, 15) 9 stop 10 end 11 c*/ 12 char*a="}begin b\coloneqq’{";} int main(){/*’; writeln{*/ 13 char cbuf[64]; sprintf(cbuf,"}(’Merry Christmas’) end.{"); 14 cbuf[29]= ’\0’; printf(cbuf+3); return 0;}

http://www.gnu.org/fun/jokes/merry-xmas.html

Mathias Goldau, Stefan Koch, Wieland Reich Übung - Modellierung & Programmierung II