Programmierparadigmen Programmierparadigmen Gliederung Programmierparadigmen Aktuelle Entwicklungen 1 D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Programmierparadigmen Aktuelle Entwicklungen Aussagen Köpfe c Sommer 2013, 9. Juli 20132009 - 2013 D.Rösner D. Rösner PGP 2013 . . . Programmierparadigmen D. Rösner PGP 2013 . . . 1 Aktuelle Entwicklungen Aussagen Köpfe Programmierparadigmen 2 Aktuelle Entwicklungen Aussagen Köpfe Aussagen Aktuelle Entwicklungen über Prolog die Entwicklung geht weiter hybride Sprachen Yes, I know it s old, but it is also extremely powerful. Solving a Sudoku in Prolog was an eye-opening experience for me. z.B. objektorientiert-funktional wie Scala (Odersky, 2003) immer noch auch Einzelpersonen als Erstimplementatoren I’ve worked hard to solve some difficult problems in Java or C that would have been effortless in Prolog. daneben ’committee languages’ wie Haskell s.a. [Tat10] s.a. [Tat10], Ch. 1.2 D. Rösner PGP 2013 . . . 4 D. Rösner PGP 2013 . . . 6 Programmierparadigmen Aktuelle Entwicklungen Aussagen Köpfe Programmierparadigmen Aussagen Aktuelle Entwicklungen Aussagen Köpfe Aussagen über Erlang über Scala . . . Erlang is gathering steam as a functional language that gets concurrency, distribution, and fault tolerance right. One of a new generation of languages on the Java virtual machine, Scala has brought strong functional concepts to the Java ecosystem. It also embraces OOP. The creators of CouchDB, one of the emerging cloud-based databases, chose Erlang and have never looked back. After spending a little time with this distributed language, you’ll see why. Looking back, I see a striking similarity to C++, which was instrumental to bridging procedural programming and OOP. As you dive into the Scala community, you ll see why Scala represents pure heresy to pure functional programmers and pure bliss to Java developers. Erlang makes designing concurrent, distributed, fault-tolerant applications much easier than you could have ever thought possible. s.a. [Tat10], Ch. 1.2 s.a. [Tat10], Ch. 1.2 D. Rösner PGP 2013 . . . Programmierparadigmen 7 D. Rösner PGP 2013 . . . Aktuelle Entwicklungen Aussagen Köpfe Programmierparadigmen Aussagen 8 Aktuelle Entwicklungen Aussagen Köpfe Aussagen über Clojure über Haskell Another JVM language, this Lisp-dialect makes some radical changes in the way we think about concurrency on the JVM. Of the functional languages in the book, Haskell was the most difficult to learn. The emphasis on monads and the type system made the learning curve steep. Once I mastered some of the key concepts, things got easier, and it became the most rewarding language I learned. As a Lisp dialect, Clojure packs plenty of punch, supporting perhaps the most flexible programming model in the book. But unlike other Lisp dialects, the parentheses are greatly reduced, and you have a huge ecosystem to lean on, including a huge Java library and widely available deployment platforms. Based on the type system and the elegance of the application of monads, one day we’ll look back at this language as one of the most important in this book. s.a. [Tat10], Ch. 8, p. 312 s.a. [Tat10], Ch. 1.2 D. Rösner PGP 2013 . . . 9 D. Rösner PGP 2013 . . . 10 Programmierparadigmen Aktuelle Entwicklungen Aussagen Köpfe Programmierparadigmen Aussagen Aktuelle Entwicklungen Aussagen Köpfe Prolog: Alain Colmerauer über Haskell Haskell plays another role, too. The purity of the approach and the academic focus will both improve our understanding of programming. The best of the next generation of functional programmers in many places will cut their teeth on Haskell. s.a. [Tat10], Ch. 8, p. 312 D. Rösner PGP 2013 . . . Programmierparadigmen 11 Aktuelle Entwicklungen Aussagen Köpfe Programmierparadigmen Prolog: Alain Colmerauer D. Rösner PGP 2013 . . . D. Rösner PGP 2013 . . . 13 Aktuelle Entwicklungen Aussagen Köpfe Prolog: Alain Colmerauer 14 D. Rösner PGP 2013 . . . 15 Programmierparadigmen Aktuelle Entwicklungen Aussagen Köpfe Programmierparadigmen Ruby: Yukihiro Matsumoto Io: Steve Dekorte D. Rösner PGP 2013 . . . Programmierparadigmen Aktuelle Entwicklungen Aussagen Köpfe 16 Aktuelle Entwicklungen Aussagen Köpfe D. Rösner PGP 2013 . . . Programmierparadigmen Io: Steve Dekorte 17 Aktuelle Entwicklungen Aussagen Köpfe Scala: Martin Odersky D. Rösner PGP 2013 . . . 18 D. Rösner PGP 2013 . . . 19 Programmierparadigmen Aktuelle Entwicklungen Aussagen Köpfe Programmierparadigmen Scala: Martin Odersky Erlang: Joe Armstrong D. Rösner PGP 2013 . . . Programmierparadigmen Aktuelle Entwicklungen Aussagen Köpfe 20 Aktuelle Entwicklungen Aussagen Köpfe Programmierparadigmen Erlang: Joe Armstrong D. Rösner PGP 2013 . . . D. Rösner PGP 2013 . . . 21 Aktuelle Entwicklungen Aussagen Köpfe Erlang: Joe Armstrong 22 D. Rösner PGP 2013 . . . 23 Programmierparadigmen Aktuelle Entwicklungen Aussagen Köpfe Literatur: I Bruce Tate. Seven Languages in Seven Weeks – A Pragmatic Guide to Learning Programming Languages. The Pragmatic Bookshelf, Raleigh, NC; Dallas, Texas, USA, 2010. ISBN-13: 978-1-934356-59-3. D. Rösner PGP 2013 . . . 24