Skip to content

Leseridee für Programmierwettbewerb

Letztes erreichte die freiesMagazin-Redaktion eine E-Mail mit einer Idee zu einem neuen Programmierwettbewerb. Es ging darum, eine KI zu Ricochet Robots zu entwickeln.

Ich habe dem Leser abgesagt, weil es mit Robo Ralley ja schon mal ein ähnliches Thema gab. Daneben stelle ich mir vor, dass eine KI dazu sehr simpel aussieht.

Aufgabe: Von der Startposition aus muss der Roboter in möglichst wenig Zügen zum Ziel. Dabei kann er sich in jede Richtung bewegen, dann aber immer so weit, bis er gegen ein Hindernis prallt.

Meine Lösung wäre aus dem Spielbrett einen gerichteten Graphen zu machen, dann den Dijkstra-Algorithmus laufen zu lassen und schon wäre man fertig.

Sieht da jemand einen Denkfehler oder ist das wirklich so simpel? Oder hat jemand einen anderen Lösungsvorschlag?

Full Circle Magazine 60 erschienen

Am Donnerstag ist die Geburtstagsausgabe des englischsprachigen Magazins Full Circle Magazine erschienen. Themen dieser 60. Ausgabe sind unter anderem

  • Command and Conquer: TIpps & Tricks II
  • Python – Teil 32
  • Libre Office – Teil 14
  • Prey
  • GIMP-Tutorial – Teil 1
  • Inkscape – SVG
  • Linux Lab: Serielle Verbindungen
  • Windows-Äquivalente unter Linux – Teil 7: Soundeinstellungen
  • Review: Desura
  • Ubuntu Games: SNES Emulation und Trine 2 FAQ
  • News, Leserbriefe und mehr

Links: Webseite, Forum und Wiki

Humble Botanicula Bundle

In der Meldung zum letzten Humble Bundle hatte ich noch gewitzelt, dass zwischen den beiden letzten Bundles lange sechs Wochen lagen. Die Humble-Bundle-Macher haben diesen scherzhaften Ausruf wohl gehört und nach dem Ende der letzten Aktion am 02.04. genau 17 Tage später ein neues Humble Bundle veröffentlicht.

Das Humble Botanicula Bundle enthält per Standard drei Spiele von Aminata Design. Zum einen das seit 2009 bekannte Machinarium, welches bereits in den Humble Bundles 2 und 3 zu finden war. Dann das Spiel Samorost 2, welches mit dem Humble Bundle 1 und 2 verkauft wurde. Und als echtes neues Spiel den Namensgeber Botanicula.

Wer mehr als den aktuellen Durchschnittspreis zahlt (im Vergleich zu anderen Bundles recht hohe 8,76 Euro) bekommt noch den recht gut aussehenden tschechischen Film Kooky von 2010 dazu und das Experimentalspiel Windosill, was man auf der Webseite auch testen kann.

Botanicula sieht sehr interessant und spannend aus und rechtfertigt in meinen Augen einen hohen Preis. Nun das recht große Aber: Schaut man sich die Systemanforderungen an, merkt man, dass man Adobe AIR benötigt, um Botanicula spielen zu können. Nicht nur, dass Adobe AIR proprietär ist, hat Adobe den Support sowieso eingestellt und zeigt damit, was es von Linux hält.

Für mich ist das ein klarer Grund, das Spiel nicht zu unterstützen, damit die Macher bei Aminata Design nicht auf den Gedanken kommen, die Linux-Nutzer finden Adobe AIR ganz toll und noch mehr Spiele damit produzieren. Nicht nur ich denke so, auch die aktuellen Verkaufszahlen zeigen eine unterdurchschnittliche Linux-Beteiligung.

Dies ist dann also wohl das dritte Humble Bundle, was ich nicht kaufen werde. Aber insgesamt wirft die Aktion immer noch genügend Geld ab, sodass die Macher sicherlich noch eine Weile so weitermachen werden.

Open Film „Tube“ in der Entstehung

Und der dritte Beitrag zum Thema Kickstarter ...

Bassam Kurdali, Regisseur von Elephants Dream, arbeitet an einem neuen Open Movie mit dem Namen Tube. Der Film basiert auf dem Gilgamesh-Epos und soll Ende 2012 fertiggestellt sein.

Zum Ziel von 22.000 US-Dollar fehlen noch knapp 7500 USD, aber es sind auch noch 26 Tage Zeit. Da es aber Kickstarter ist, darf man ohne Kreditkarte leider nicht mit unterstützen.

via Karl-Tux-Stadt

Linux-Spiele und Crowdfunding

Crowdfunding wird ja immer beliebter. Das positive daran ist, dass wirklich die Kunden bestimmen, was „produziert“ wird und nicht irgendwelche Marktforscher oder Analysten. Daneben haben so auch kleinere Projekte eine Chance etwas auf die Beine zu stellen. Alle positiven Aspekte hat Extra Credits zusammengefasst.

Auswirkungen hat das auch auf die Spielewelt. Zum einen sind die Spielestudios nicht von Publisher abhängig, die ihnen ggf. reinreden wollen. Zum anderen kann man auch Märkte erschließen, die einem sonst verwehrt bleiben wie z.B. den Linux-Markt. Bei LinuxGames gibt es daher eine schöne Liste mit verschiedenen Kickstarter-Projekten, die ein Spiel für Linux erstellen wollen. (Aber auch hier gilt: Kickstarter verlangt Amazon Payments und eine Kreditkarte. Ohne die geht es nicht ...)

Buch: C++11 programmieren

Titel

C++11 programmieren

Autor

Torsten T. Will

Sprache

Deutsch

Genre

Sachbuch

Herausgeber

Galileo Computing, 2012

Seitenanzahl

414

Das Buch „C++11 programmieren“ von Torsten T. Will wirbt mit dem Untertitel „60 Techniken für guten C++11-Code“. Die Rezension soll zeigen, ob das stimmt.

Hintergrund

Der neueste C++-Standard sollte eigentlich im letzten Jahrzehnt veröffentlicht werden, nachdem die letzte Standardisierung 2003 stattfand. Der Prozess zog sich aber hin, sodass auch dem angedachten C++0x irgendwann ein C++11 wurde. Im Oktober 2011 wurde der Standard dann offiziell verabschiedet.

Das Buch „C++11 programmieren“ liefert einen Überblick über einen Teil der Neuerungen von C++11 und richtet sich damit vorrangig an erfahrene C++-Programmierer, die auf dem neuesten Stand der Technik gehalten werden wollen. Auch wenn das Buch keine vollständige Liste der Neuerungen beinhaltet, kann es sicherlich auch als Nachschlagewerk benutzt werden. Für den Einstieg in die C++-Programmierung ist es aber gänzlich ungeeignet.

Aufbau

Wer sich das Inhaltsverzeichnis anschaut, dem fällt auf, dass der erste Teil erst bei Seite 27 beginnt. Was treibt der Autor die 26 Seiten davor? Etwas, was man sich von mehr technischen Bücher wünschen würde: ein Vorwort, in dem die Zielgruppe klar definiert wird, sowie ein Beispielkapitel, in dem der Aufbau und die Syntax der späteren echten Kapitel erklärt wird (S.17 ff). So hat man keine Probleme, den Text und die Auszeichnungen zu verstehen.

Der Aufbau eines Kapitels beginnt mit einer kurzen Einleitung, in dem man auch mithilfe von kurzen Codebeispielen das neue Thema klar und verständlich erläutert bekommt. Danach folgt ein Abschnitt mit detaillierten Hintergründen, die sehr genau auf die Beispiele eingehen und alles erklären. Am Ende des Kapitels steht ein Mantra, welches noch einmal ganz kurz in ein, zwei Sätzen zusammenfasst, was die Essenz des Kapitels ist.

Thematisch gliedert sich das Buch in fünf Teile. Der erste Teil soll dabei an C++03 erinnern (also den C++Standard aus 2003), damit man die Neuerungen von C++11, die in anderen Teilen beschrieben werden, besser versteht. Prinzipiell ist das eine gute Idee, wenn der Autor dies konsequent eingehalten hätte. So vermischen sich in dem Teil C++03- und C++11-Syntax, was das Verständnis der Beispiele nicht erleichtert. Ständig fragt man sich: „Hm, das kannte ich ja gar nicht. Ist das schon C++11 oder kenne ich nur den C++03-Standard nicht gut genug?“

Was vielleicht auch nicht so praktisch, aber teilweise verständlich ist: So gut wie nichts wird mit Klassen definiert, sondern es werden nur Strukturen genutzt. Der Autor weist aber am Anfang darauf hin, dass dies für eine echte Programmierung sehr schlechter Stil wäre und man sich daran kein Beispiel nehmen sollte (S. 22).

Der zweite Teil ist dann der interessanteste des Buch, denn es wird auf die neuen Sprachmechanismen von C++11 eingegangen. So kommen unter anderen die neue Art der Initialisierung, Typsicherheit, const_expr, finale Klassen und Ableitungen, die neue Verschiebesemantik und RValues sowie Templates vor. Ob auf alles Wichtige des C++11-Standards eingegangen wird, kann ich nicht beurteilen, die 200 Seiten lesen sich aber sehr informativ und man bekommt ein sehr guten Einblick in die neue Syntax. Vor allem kann man sehr leicht herausfiltern, was für einen selbst wichtig erscheint und welches Sprachfeature man eher nicht sinnvoll einsetzen kann. Interessant wäre noch zu wissen, ob die Dreierregel mit der neuen Verschiebesemantik in einer Fünferregel umgeschrieben werden muss. Torsten T. Will deutet so etwas jedenfalls an, zumal C++ nun noch weniger Standard-Konstruktoren und -Operatoren erstellt, wenn man es nicht explizit sagt.

Mir selbst haben vor allem die neuen const-Möglichkeiten gefallen (S.102), in die auch in Teil 1 (S.39) eingegangen wird. So kann durch ein const an der richtigen Stelle ein fehlerhaftes Design entlarvt werden. Aber auch die neuen Eigenschaften für Klassenoperationen wie override und final (S.139 ff) bzw. delete und default (S.196 ff) finden sicherlich sinnvolle Verwendung.

Der dritte Teil beschäftigt sich ausgiebig mit Containern, Pointern und Algorithmen. Die Aussage am Anfang des Buches (S.36), dass man in C++ auf void-Pointer oder Pointer-Casts verzichten kann, wird beispielsweise durch die neuen unique_ptr und shared_ptr unterstrichen (S. 275 ff). Insgesamt ist das Kapitel sehr sinnvoll für alle, die bereits einige Hilfsmittel der STL (Standard Template Library) einsetzen.

Und in Teil 4 geht es auch mit der STL weiter, denn es werden die Features beschrieben, die dort neu Einzug gehalten haben. Vorrangig ist das sicherlich das Thema Multithreading (S.321), welches auf knappen 34 Seiten abgehandelt wird. Dennoch bekommt man einen guten Einblick in die Möglichkeiten, die C++ hier bietet. Aber auch reguläre Ausdrücke werden nun direkt in C++ unterstützt sowie Einheiten und Umrechnungen.

Im Anhang findet man zum einen eine kurze Übersicht, was man in C++11 nicht mehr tun sollte, da einige Sprachelemente wie register als veraltet deklariert wurden. Noch sinnvoller ist aber die Compilerübersicht in Anhang C (S. 402), die aufzeigen soll, welche C++11-Features welcher Compiler alles umsetzt. Da es sich natürlich um eine gedruckte Liste handelt, ist sie im Buch veraltet, im Apache-Wiki findet man aber den aktuellen Stand. Nur für den GNU-Compiler GCC gibt es diese Liste bei gnu.org.

Fazit

Hält das Buch, was es mit „60 Techniken für guten C++11-Code“ verspricht? Zuerst sei gesagt, dass die 60 sich aus den 62 Kapiteln im Buch ableitet, ansonsten aber keine Bewandtnis hat. Und ob es wirklich guter Code, den Torsten T. Will zeigt, soll gar nicht beurteilt werden, da Programmierer wie Künstler sind jeder seinen eigenen Stil pflegt. Daher lautet die Frage eher: Wird einem Leser aber der neue C++-Standard verständlich beigebracht? Und hier ist die Antwort definitiv ja.

Der Aufbau der Kapitel ist sehr klar und strukturiert. Teilweise Popkultur-Referenzen auf Star Wars, Star Trek oder Herr der Ringe regen zum Schmunzeln an (wenn man mit der Thematik vertraut ist). Sehr schön ist auch, dass die Kapitel zu einem Thema gut ineinander übergehen und sich gegenseitig referenzieren. Die Aufteilung wirkt dadurch sehr gut durchdacht.

Autor Torsten T. Will schafft es auch, die Leser in eine fremde Thematik einzuführen. So gehören Lambda-Funktionen, RValues oder Multithreading nicht zum Alltagsfragen eines Programmierers, dennoch schafft man es auch ohne viel Wissen in dem Gebiet (fast) alles zu verstehen. Daneben gibt es auch viele Hinweise auf guten Programmierstil bzw. Hintergrundinformationen, die sich etwas von C++11 entfernen, aber dennoch nicht jedem C++-Programmierer bekannt sind. So wissen viele nicht, was ein const in Zusammenhang mit Zeigern an der richtigen Stelle für Auswirkungen hat (S. 39).

Eigentlich selbstverständlich, aber leider immer wieder erwähnenswert ist die Fehleranzahl im Buch. Obwohl es sich um die erste Auflage handelt, findet man erfreuliche wenige Fehler im Buch. An einigen Stellen gibt es zwar Buchstabendreher, aber in der Regel erschließt sich sofort aus dem Kontext, wie es richtig lauten muss.

Einen kleinen Problempunkt sehe ich in der Ansprache der Leser. So wird im Text oft von „wir“ gesprochen, womit der Autor sich und die Lesergemeinde meint. An andere Stelle bezeichnet das „wir“ aber den Autor und ggf. die anderen am Buch beteiligten Personen. Im Text selbst wird der Leser dann mit „Sie“ angesprochen, in den Mantras am Ende eines Kapitels aber immer mit „du“. Dies wirkt noch etwas durcheinander, ist aber nur ein kleiner Kritikpunkt.

Zweiter, kleiner Negativpunkt ist die Mischung des Inhaltes. So setzt Torsten T. Will auch in frühen Kapiteln Syntaxelemente aus C++11 ein, die er erst viel später dem Leser bekannt macht. Für Entwickler, die nicht hundertprozentig den C++03-Standard auswendig kennen – und dies kann wohl keiner – ist damit nicht immer klar, ob es sich um ein C++03- oder ein C++11-Feature handelt.

Insgesamt kann man dem Buch aber eine sehr gute Note ausstellen. Es ist übersichtlich, klar strukturiert und interessant geschrieben. Für C++-Entwickler, die den neuen Standard kennen lernen wollen, kann daher eine klare Empfehlung ausgesprochen werden. Für C++-Einsteiger ist das Buch nicht geeignet, aber auch nicht gedacht.

PCLinuxOS Magazin 04/2012 erschienen

Diese Woche ist die Aprilausgabe 2012 des englischsprachigen Magazins PCLinuxOS Magazine erschienen. Themen dieser Ausgabe sind unter anderem

  • Artikel zu GNOME 2.32
  • Linux-Hardware
  • Alternate OS: PC-BSD – Teil 1
  • Finanzverwaltung mit iFreeBudget
  • Linux File System Hierarchie erklärt
  • … und einiges mehr

Das Magazin steht auch als HTML-Version zum Lesen bereit. Alle Texte werden unter der Creative Commons BY-NC-SA 3.0 veröffentlicht.

Trine 2 für Linux veröffentlicht

Entwicklerstudio Frozenbyte haben gestern ihr neues Werk Trine 2 für Linux vorgestellt. Der Titel ist der Nachfolger des sehr guten Trine, welches bereits in einem Humble Bundle veröffentlicht wurde. Eine Rezension hatte ich damals auch geschrieben.

Die Linux-Version trägt zwar noch den Beta-Titel, ist aber sicherlich schon spielbereit. Bei der Masse an verschiedenen Linux-Systemen und -Konfigurationen ist es aber verständlich, wenn die Hersteller erst einmal vorsichtig sind.

Die Standardedition kostet 14,99 US-Dollar, die Collector's Edition mit Artbook und Soundtrack 24,99 US-Dollar. Bezahlt werden kann über Paypal, Google und Amazon. Danach erhält man den Link zum Humble Store, wo man sich das Spiel herunterladen kann.

Wenn der zweite Teil so grafisch hervorragend, kurzweilig und spannend wird wie der erste Teil, dann freue ich mich sehr auf Trine 2.

freiesMagazin 04/2012 erschienen

freiesMagazin 04/2012 Titelseite

Heute ist die Aprilausgabe von freiesMagazin erschienen und bringt viele spannende Artikel aus den Bereichen Linux und Open Source mit.

Inhalt der Ausgabe 04/2012

  • Der März im Kernelrückblick
  • Objektorientierte Programmierung: Teil 2 – Die richtige Strategie
  • Python – Teil 12: Reguläre Ausdrücke
  • Perl-Tutorium – Teil 6: Objekte der alten Schule
  • Selenium meets Java
  • Dokumentenmanagement mit LetoDMS
  • Fish Fillets – Next Generation
  • DANTE-Tagung 2012 in Leipzig
  • Rezension: jQuery: Novice to Ninja
  • Rezension: LPI-Level 1 – Die LPIC-1-Zertifizierung
  • Rezension: Linux: Das umfassende Handbuch (5. Auflage)

Downloads

Unter der Adresse http://freiesmagazin.de/mobil/ findet man immer die aktuelle und alle bisher erschienenen HTML- und EPUB-Ausgaben. Auf der Magazin-Seite können die letzten drei Ausgaben von freiesMagazin abgerufen werden, ältere Ausgaben findet man im Archiv.

Kontakt

Wer jeden Monat an die neue Ausgabe erinnert werden will, kann auch den RSS-Feed abonnieren. Leserbriefe mit Lob, Kritik, Anregungen oder Fragen und neue Artikelvorschläge können an die Redaktion geschickt werden.