Blog Archiv - Jahr 2012

Scala-Kurs auf Coursera

Veröffentlicht am 25. November 2012

Scala-Kurs auf Coursera

Ich habe kürzlich die Gelegenheit genutzt, an einem Online-Kurs für die Programmiersprache Scala auf der Plattform Coursera teilzunhemen. Der Kurs wurde gehalten von dem Computerwissenschaftler Martin Odersky, dem “Erfinder” von Scala, der außerdem eine wichtige Rolle bei der Entwicklung von Java gespielt hat.

Zunächst kurz etwas zu Coursera. Coursera ist ein Plattform für E-Learning, bei der verschiedene Universitäten der ganzen Welt frei zugängliche Online-Kurse anbieten. Die Spanne an Fachbereichen ist sehr groß; man findet interessante Kurse aus Informatik, Mathematik, Medizin, Jura, Geschichte, Biologie, Wirtschaftslehre und vielen mehr.

Die Plattform bietet die Möglichkeit, wöchentlich Lehrvideos der Dozenten zu den jeweiligen Kursen anzusehen und heruterzuladen, sowie Übungsaufgaben zu den Lehrinhalten zu bearbeiten und die Ergebnisse hochzuladen (natürlich nicht mit persönlicher, sondern maschineller Rückmeldung). Außerdem gibt es Foren, in denen die Studenten untereinander oder mit den Dozenten über die Lehrinhalte und Übungsaufgabene sprechen können. Ein so genannter “Honor Code” unter den Studenten ruft dazu auf, keine Lösungen zu Übungsaufgaben öffentlich zu machen, um andere Studenten nicht zu “spoilern”.

Insgesamt als eine sehr gelungene und angenehme Plattform für E-Learning, die ich nur empfehlen kann!

Zu Scala muss man erklären, dass es sich hierbei um eine funktionale Programmiersprachen handelt. Das heißt, die Sprache verwendet nicht das klassische imperative/objektorientierte Programmierparadigma, wie man es von Java oder C++ gewohnt ist, sondern bietet dem Programmierer die Möglichkeit, seine Ziele über andere Programmierkonzepte zu erreichen.

Das wichtigste an der funktionalen Programmierung von Scala ist das Konzept, möglichst alle Programmlogik als mathematische Funktionen aufzufassen, also:

  • Es gibt keine (kaum) globalen Variablen
  • Das Ergebnis einer Funktion hängt nur von ihren Parametern ab, nicht vom aktuellen Zustand des restlichen Programms
  • Jede Funktion ist im wesentlichen ein Ausdruck, der den Rückgabewert aus den Parametern berechnet
  • Komplexere Berechnung werden nicht durch Kontrollstrukturen (for/while) und iterative Rechenschritte durchgeführt, sondern durch Rekursion und Hilfsfunktionen
  • Alle Daten sind immutable (unveränderlich), das heißt, ein Funktionsausruf ändert die Eingabewerte nie, sondern agiert nur durch seinen Rückgabewert (was Methoden mit Rückgabetyp “void” sinnlos macht)
  • Funktionen sind Objekte. Es kann also Funktionen geben, die andere Funktionen als Parameter übergeben bekommen (sog. “Funktoren” oder Funktionen höherer Ordnung)
  • Es gibt Ausdrücke, die nicht zur Definitionszeit ausgewertet werden, sondern erst zur Zeit, wo ihr Wert abgefragt wird (um Berechnungszeit bei ungenutzten Werten zu sparen)

Dieses Konzept ist für einen Programmierer, der immer nur imperativ/objektorientiert programmiert hat, nicht leicht zu verinnerlichen, aber es bietet eine Reihe von Vorteilen:

  • Einfaches Aufteilen von Berechnungen auf mehrere Kerne/Prozessoren/Computer, da es keine globalen Stati gibt, die synchron gehalten werden müssen. Es kann also eine hohe Parallelisierungsfähigkeit erreicht werden, falls sich das Problem in parallel ausführbare Teilprobleme zerlegen lässt
  • Bei geschickter Programmieung hohe Performanz
  • Leichtes Realisieren einfacher mathematischer Probleme möglich, die bei imperativer Programmierung umständlich umzusetzen wären
  • Erlaubt Einsatz von Funktionen höherer Ordnung, was bei Sprachen wie Java nur schwer umgesetzt werden kann (siehe Event-Handler, oder Callback-Klassen)

Soviel zunächst zum funktionalen Programmierparadigma. Scala selbst hat noch einige Spezialitäten. Zum einen ist da die große Nähe zur Sprache Java: Scala-Code wird in das gleich Bytecode Format kompiliert wie Java. Daher lassen sich Scala-Programme und -Module direkt in Java einbinden und verwenden. Zudem wird es dadurch ebenso Plattformunabhängig wie es Java ist.

Es gibt außerdem ein schönes Plugin für die Eclipse-IDE, welches die Verwendung von Scala in die IDE einbindet.

Zuletzt möchte ich noch einige Wort zum Kurs von Martin Odersky verlieren. Man merkt, dass der Dozent sich große Mühe gibt, “seine” Programmiersprache gut rüberzubringen und den Studenten das Konzept der funktionalen Programmierung zu vermitteln.

Die Programmierbeispiele beginnen ganz von vorne bei “Hello World” (was sich in Scala durchaus schon deutlich von Java unterscheidet) und arbeitet sich langsam, aber stetig in die verschiedenen Konzepte von Scala ein.

Es sind wöchentliche Übungsaufgaben fällig, die als Eclipse-Projekt heruntergeladen werden können und bereits mit einem Code-Grundgerüst und verschiedenen JUnit-Testklassen ausgestattet sind. Die Stundenten müssen meist einige zentrale Funktionen des Übungsprogrammes implementieren und damit die neu gelernte Inhaltes des Kurses anwenden. Wurden die Aufgaben gelöst, können die Lösungen über ein Tool auf den Coursera-Server hochgeladen werden, wo sie automatisch korrigiert und mit bei zu 10 Punkten bewertet werden.

Die Übungsaufgaben beinhalten zwar oft nur wenige Zeilen Code, die geschrieben werden müssen, doch das funktionale Programmieren erfordert - gerade bei den fortgeschrittenen Aufgaben - ein genaues Nachdanken und bringt auch schon mal gestandene Java-Programmierer ins Schwitzen. Letztendlich sind aber alle Aufgaben mit etwas Nachdenken zu lösen und bringen oft den “Aha”-Effekt, wenn man die Lösung endlich gefunden hat.

Der Kurs ist zwar schon zuende, aber so wie ich das verstanden habe, werden die Kurse auf Coursera regelmäßig wiederholt.

Wer also Interessan funktionaler Programmierung hat, dem kann ich eine absolute Empfehlung für den Kurs aussprechen!

Kategorie: Scala
Schlagworte:

Ein paar Podcast-Empfehlungen

Veröffentlicht am 18. March 2012

Seit ich ein entsprechendes Abspielgerät habe, nutze ich die Wartezeit während Zugfahrten und Ähnlichem meist für Podcasts.

Hier möchte ich eine kleine Auswahl meiner meistgehörten Sendungen vorstellen. Obwohl das bei einigen wohl nicht nötig ist, weil sie sowieso zu den meistgehörten deutschen Podcasts zählen.

Wer redet, ist nicht tot (WRINT)

WRINT ist ein weitere Podcast mit Holgi, der ja auch als Radiomoderator bei Radio Fritz arbeitet. In diesem Podcast ruft Holgi verschiedene Leute an, die sich vorher beworben haben, und macht quasi ein Radiointerview mit diesen Leuten über ein Thema mit dem sie sich besonders gut auskennen oder in dem sie Erfahrung haben.
Die meisten Themen sind schon sehr interessant und Holgi hat eigentlich immer coole Leute an der Strippe. Sehr zu empfehlen.

http://www.wrint.de

Not Safe For Work (NSFW)

NSFW ist die “völlig neuartige, reaktionäre Unterhaltungsgala” mit den feinen Herren Tim Pritlove (@timpritlove) und Holger Klein (@holgi). Man kann Tim und Holgi dabei mehrere Stunden lang dabei zuhören, wie sie über den Kunstgehalt diverser Filme streiten, verrückte Youtube-Videos anspielen, aktuellen Blödsinn im Netz und in Deutschland kommentieren, Geschenke auspacken und die beinhalteten Nahrungsmittel verkonsumieren oder sich über unanständige Themen amüsieren.

Update: Leider mittlerweile abgesetzt, es gibt nur ganz selten (ca. 1x/Jahr) noch eine Sondersendung

http://not-safe-for-work.de

Logbuch: Netzpolitik

Logbuch: Netzpolitik ist ein Podcast von Tim Pritlove und Linus Neuman, in dem es - wie der Name schon vermuten lässt - um netzpolitische Themen geht. Linus schreibt unter anderem für das bekannte deutsche Blog netzpolitik.org. Zusammen bringen die beiden immer wieder einen Überblick über aktuelle Ereignisse, Debatten und Gesetzesänderungen in diesem Bereich.

http://logbuch-netzpolitik.de

Alternativlos

Inspiriert durch das Mantra der “Alternativlosigkeit” aller Beschlüsse der Bundesregierung, ist Alternativlos ein Podcast von Fefe (blog.fefe.de) und Frank Rieger (frank.geekheim.de) vom CCC, in dem die beiden in extrem gut recherchierter Weise in unregelmäßigen Abständen politische Themen auseinandernehmen.
Ab und zu sind auch Spezialisten zum Thema eingeladen, was die Sendungen noch gehaltvoller macht. Sehr zu empfehlen!

http://alternativlos.org

Kategorie: Podcast