Skip to content

Neue Scheibe „auch“ von Die Ärzte

Die Ärzte haben am 13. April 2012 eine neue CD namens „auch“ veröffentlicht. Das wäre in so weit nicht berichtenswert, wenn die Band nicht alle 16 Lieder und zugehörige Videos auf YouTube komplett veröffentlicht hätte.

In der heutigen Zeit ist es kein Problem, aus den YouTube-Liedern MP3s zu erstellen, so ist es ein mutiger Schritt, weil es fast gleichbedeutend mit einem kostenlosen Download steht ... Und genau das ist der Grund, wieso ich mir die CD jetzt erst recht im DÄ-Shop bestellen werde.

Man kann nur hoffen, dass noch mehr Bands und vor allem Labels mitziehen und das Potential erkennen, welches in der kompletten Verfügbarkeit der Musik im Netz (egal in welcher Art) steckt. Es muss ja nicht gleich CC-lizenzierte Musik sein, aber nur so können sich potentieller Hörer einen umfassenden Eindruck schaffen und die CD bei Gefallen kaufen. Die Katze im Sack kauft heute aber kaum jemand, wenn der (illegale) Download nur ein paar Klicks weit weg ist.

via Kaliban

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.

Rezept: Pizza (Grundrezept)

Rezept

Pizza (ein Blech für 4-6 Personen)

Zutaten

Pizzateig:

270 g Mehl

150 ml lauwarmes Wasser

5 EL Öl

1 Pk. Trockenhefe

1 Tl Salz

Grundbelag:

150 g Tilsiter am Stück

100 g geriebenen Käse (Gouda, Edamer etc.)

200 g (halbe Dose) Pizza-Tomatensauce

etwas Oregano, Majoran und Basilikum

Salz

erweiterter Belag:

nach Belieben :), z.B.

halbe rote Paprika

halbe Zucchini

100 g gekochten Schinken in Scheiben

Zeit

90 min

Pizza mache ich schon länger immer selbst, es hat aber etwas gedauert, bis ich das Rezept so hatte, wie es mir am besten zusagt. Vorab: Mehr Öl macht den Teig lockerer, mehr Wasser etwas härter.

In einer Schüssel das Mehl, Hefe und Salz gut vermischen. Dann das Öl und das Wasser hinzugeben. Alles mit einem Knethaken gut durchkneten. Normalerweise bleibt der Teig etwas krümelig, was okay ist. Diesen dann mit der Hand weiterkneten, bis ein schöner, elastischer Klumpen entsteht, der nicht klebt. Auf den Boden der Schüssel etwas Mehl geben, Teig hineinlegen, mit einem Tuch abdecken und für 30 Minuten an einem warmen Ort (z.B. auf der Heizung) gehen lassen.

Währenddessen den Tilsiter in 10 gleich große, längliche Stücke schneiden. Die Paprika entkernen und die Hälfte in schmale Streifen schneiden, diese noch einmal halbieren. Die Zucchini schälen, die Hälfte in schmale Scheiben schneiden, die Scheiben quer halbieren. Das restliche Gemüse kann man roh essen.

Wenn der Teig gegangen ist, diesen auf Backpapier rechteckig flach mit einem Nudelholz ausrollen. Von der Größe her sollte der Teig ca. 3 cm in alle Richtungen breiter sein als das Blech. Die länglichen Tilsiter-Streifen ca. 1 cm vom Rand entfernt auf den Teig legen, sodass ein geschlossenes Rechteck entsteht, was auch aufs Blech passt. Den außenstehenden Rand mit etwas Wasser anfeuchten und dann nach innen über den Käse schlagen. Innen den Teig fest andrücken.

Die Pizzasauce auf den Teig geben und gut verteilen. Gewürze nach Wahl hinzugeben, dann Schinken, Paprika und Zucchini nach Wunsch darauf verteilen. Zum Schluss den geriebenen Käse über alles geben, sodass es nicht zu dicht bedeckt ist.

Den Ofen auf 200°C Ober-/Unterhitze vorheizen und die Pizza für 30 Minuten backen. Fertig!

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.

Lizenzwechsel bei OpenStreetMap

Nicht jeder hat es mitbekommen, aber bei OpenStreetMap wird die Lizenz gewechselt. Die Wikiseite erklärt, wieso ein Wechsel von der Creative Commons Attribution Share Alike 2.0 zur Open Data Commons Open Database License notwendig erscheint.

Da die Daten in OSM aber nicht direkt dem OSM-Projekt gehören, sondern dem Nutzer, der sie eingetragen hat, müssen alle OSM-Beitragenden der Lizenz zustimmen. Stimmt jemand nicht zu, werden dessen Eintragungen gelöscht. Laut Heise kann das große Löcher in die Karten reißen.

Die Aussage von Heise (Zitat: „Bis das fehlende Material nachgetragen ist, […], werden Dienste, die auf die Daten von OpenStreetMap zurückgreifen, […] massive Probleme bekommen. […] Das gleiche gilt für Systeme von Garmin, auf die Nutzer das offene Kartenmaterial aufgespielt haben.“) halte ich für Unsinn. Auf die Geräte spielt man die Daten, sie werden nicht online von der OSM-Seite geholt. Da die Lizenz von OSM nicht rückwirkend geändert werden kann, stehen diese alten aufgespielten Daten nach wie vor unter CC-Lizenz und sind vollständig (siehe z.B. die Radkarte von Johannes Formann).

Gleiches für alle Dienste (auch online), die einfach das „alte“ Kartenmaterial von OSM gesichert haben und benutzen. Wenn also Online-Dienste wie OpenRouteService die OSM-Daten vom März spiegeln, wird es zur Umstellung bzw. bis zur Zeit des Nachtragens der Daten keine Probleme geben. (OpenRouteService nutzt z.B. aktuell die Daten vom 11.03.2012.)

Sicherlich sind die Löcher anfangs unschön, aber das OSM-Projekt wird es überleben. Zumal es wohl nur wenige Beitragende sind, die sich gegen die Umstellung wehren.