Concepts for C++

Wieder mal ist ein Semester zu Ende, und ich habe auch wieder ein Seminar belegt und ein zugehöriges Paper geschrieben. Hier das Abstract:

C++ templates are a powerful language construct that enable generic programming techniques without impacting runtime performance. A problem when using templates is the lack of an explicit contract between the user and the definition of a template. This leads to difficult to understand error messages and inhibits separate checking of template code.

Concepts are part of the next C++ standard and mitigate these problems. Concepts express explicit requirements to template argument types, thus allowing separate checking. Other benefits include syntactical adaption of existing types, making code more reusable.

This paper introduces concepts and shows how existing code can be refactored to use concepts, making the code easier to understand.

Das ganze Paper.

7 comments »

Favicon Parade

Fragt mich nicht, wie ich auf die Idee gekommen bin.

montage +frame +shadow +label -geometry 16x16+0+0 /var/tmp/kdecache-`whoami`/favicons/*.png ~/montage.png


(Klicken um zu vergrössern.)

ImageMagick ist einfach genial!

Weiss jemand, wo Firefox die Favicons ablegt?

6 comments »

MSE Modulbewertungen

Im MSE wird jeweils pro Modul eine Umfrage durchgeführt, in welcher verschiedene Aspekte des Moduls evaluiert werden sollen. Taugt meiner Meinung nach nicht sehr viel das ganze, vor allem wenn man mehrere Dozenten mit nur einem Kreuzchen bewerten muss und die Bewertung so früh im Semester gemacht hat, dass man noch nicht mal alle Dozenten erlebt hat.

Naja, darum solls aber nicht gehen, eigentlich wollte ich euch nur mit einigen lustigen Zitaten aus dem Feedback zum Software Engineering and Architecture-Modul unterhalten.

Auf die Frage “Was hat mir an diesem Modul gefallen?”:

  • schlechte Begleittexte,
  • völlig unmöglicher Aufbau.

Viel witziger aber, was nicht gefallen hat:

  • Herr Sommerlad unterrichtet mit einer besserwisserischen Haltung, die ekelhaft ist. (Hallo? Was hat das denn für einen Sinn, wenn der Dozent es nicht besser weiss als ich?)
  • Weniger ist oft mehr!!!
  • Nicht so viel common-sense blabla.
  • z.T. Vorkentnisse verlangt, die nicht in Modulbeschrieb standen. (Hier ist wohl Unit-Testing gemeint.. oder ist es Lesen und Schreiben? Das stand nämlich auch nirgends.)
  • Nicht alle sind gut in C++. (Soweit ich mich erinnere, gab es 1-2 Mal ein C++ Beispiel.)
  • Verhalten gegenüber Studenten war etwas arrogant. Sie unterrichten vor MSE-Studenten, nicht vor Primarschülern. (Der muss eine unangenehme Kindheit gehabt haben.)
  • Nicht kritikfähig, nicht cooperativ, zufest von seiner Meinung überzogen. (Zu Sommerlad. Schreibfehler sind nicht von mir.)

Wens interessiert, das Ganze ist öffentlich.

Ein weiterer Kritikpunkt ist auch von vielen, dass nicht die “Lernplattform” (was für ein Wort!) Moodle verwendet wird, sondern ein Wiki. Ich fand es eigentlich sehr angenehm, per RSS über Aenderungen informiert zu werden als sich bei Moodle anzumelden und durch jedes Modul durchzuklicken um zu sehen, ob etwas geändert hat. Auch um Feedback und Aufgaben abzugeben und Feedback zu erhalten fand ich ein Wiki sehr angenehm.

No comment »

Gelesen: Die Grundlagen der Arithmetik

Frege geht der Frage nach, wie eigentlich eine Zahl zu definieren ist. Die Antwort: Die Anzahl, welche dem Begriffe F zukommt, ist der Umfang des Begriffes “gleichzahlig dem Begriffe F”. So, wer das nicht versteht, der soll gefälligst das Buch lesen.

Nein, natürlich nicht. Ich versuche, Freges Definition mit meinen eigenen Worten auszudrücken. Dabei wird wahrscheinlich einiges verloren gehen und die Definition ist nichts mehr wert, und vielleicht habe ich das ganze auch gar nicht verstanden, aber mit diesem Risiko muss ich umgehen können. :-) Nun denn..

Eine Zahl kann nicht einem konkreten Gegenstand zugeordnet werden, das gäbe zu viele Probleme, sondern einem Begriff. Ein Begriff “ist ein Ausdruck, den wir von einem oder mehreren Gegenständen aussagen”, beispielsweise eine Eigenschaft. Ein Beispiel: Der Mond umkreist die Erde. Eine Eigenschaft des Mondes ist also “die Erde umkreisend”. Dem Begriff “die Erde umkreisend” weisen wir die Anzahl 1 zu, da wir unter diesem Begriff uns den einen Mond vorstellen. (Und dass jetzt nicht der Einwand kommt, es gäbe auch andere Dinge die die Erde umkreisen! Dann müssten wir den Begriff halt weiter einschränken.)

Weisen wir nun dem Begriff “die Erde umkreisend” eine Zahl zu? Nein! Wir benötigen ein zweites Beispiel.

Ich lebe an der Metzgergasse 15 im zweiten Stock. Ein Begriff um mich zu beschreiben ist also “an der Metzgergasse 15 im zweiten Stock lebend”. Wenn wir Zahlen Begriffen zuordnen würden, dann bekämen beide Begriffe je die Anzahl 1. Dann hätten wir aber das Problem, dass es verschiedene 1en geben würde, was nicht sein darf. Was kann man tun? Man fasst die beiden Begriffe zusammen und gibt diesem Meta-Begriff eine Anzahl! Diese Menge an Begriffen nennt Frege den Umfang (man bedenke, das war vor über 100 Jahren).

Zurück zu Freges Satz: Die Anzahl, welche dem Begriffe F zukommt, ist die Menge aller Begriffe, die zu F gleichzahlig sind. Oder mit einem Beispiel: “Die Anzahl 5, welche dem Begriffe “Finger einer Hand” zukommt, ist die Menge aller Begriffe, die gleichzahlig zu “Finger einer Hand” ist.”

Eine Zahl ist also eine Menge aller Begriffe, die diese Anzahl haben.

Nun, ich hoffe das war irgendwie nachvollziehbar. Falls jemand eine einfachere Erklärung findet, bitte mich wissen lassen. Abschliessen möchte ich mit einem Zitat aus dem Buch, und zwar “dass wir ohne sinnliche Eindrücke dumm wie ein Brett wären”.

6 comments »

Verwendung von AOP in Refactoring

With AspectJ, you can write code that will intercept calls in an existing application without modification. You can use it to log results. Then, when you refactor, you can run again and see if the new set of results differs from the old one. If it does, you’e modified behavior. It’s time to roll back and start over again.

Aus Working Effectively With Legacy Code von Michael Feathers.

No comment »

Gelesen: I Am a Strange Loop

Was für ein Buch! Nach dem Mega-Hit Gödel Escher Bach von Hofstadter ist dies das zweite Buch das ich von ihm gelesen habe.

Ein Strange Loop ist, laut Wikipedia:

A strange loop arises when, by moving up or down through a hierarchical system, one finds oneself back where one started.

Auf Deutsch könnte man auch Selbst-Referenz sagen, also irgend ein Ding, das auf sich selbst zeigt. Dies kann zum Beispiel ein Quine sein, ein Bild von M.C. Escher, oder eben auch ein Mensch.

Hofstadter glaubt (und ich habe keine Ahnung, ob das nur seine Ansicht ist oder eine generell akzeptierte Theorie), dass jeder Mensch ohne Bewusstsein geboren wird und sich dieses im Lauf seines Lebens mit den erlebten Erfahrungen aneignet. Dabei umfasst unser Gehirn Symbole für alle möglichen Dinge. Wir können auch neue Symbole erlernen und so unser Wissen erweitern (etwas, was den meisten Tieren fehlt). Die ganzen Symbole werden in Kategorien zusammengefasst und bilden Muster und Strukturen, was wiederum zu neuen Symbolen und Strukturen und so weiter führt. Die Summe aller dieser Konzepte – also von allem Erlebten, Wissen und Erfahrungen – ist dann das I, oder auch die Seele eines Menschen.

Allerdings gibt es auch schwächere Formen von I, so habe ich von den Leuten die ich kenne eine Kopie ihres Is in mir. Je nach dem ist dieses unterschiedlich stark ausgeprägt, und Hofstadter überlegt, ob so ein Teil eines Menschen in einem anderen weiterleben kann. Ich nehme an, diese fremden Is sind nicht so reich, dass sie ein Bewusstsein darstellen.

Ich hoffe, ich konnte das korrekt und einigermassen verständlich zusammenfassen. Hofstadter gelingt dies mit vielen Metaphern, Wortspielen und Analogien wunderbar. Nebenbei geht es natürlich auch noch darum, wie denn unser Gehirn aufgebaut ist. Kleinste Teile die irgendwie rumschwirren und zusammen, ähnlich einem Ameisenhaufen (sollte aus GEB bekannt sein), diese Symbole bilden.

Immer wieder drängt auch Hofstadters Faszination für Gödel durch, der Gödelsche Unvollständigkeitssatz wird über mehrere Kapitel erklärt, und immer wieder muss die Principia Mathematica für Vergleiche und Beispiele herhalten.

Das Buch ist weniger überzeugend als Gödel Escher Bach. Zum einen ist I Am a Strange Loop eine Art Fortsetzung, oder Klarstellung der Ideen aus Gödel Escher Bach. Es wirkt aber auch an vielen Stellen ein wenig sprunghaft, holperig, lebendiger, nervöser, nicht so sauber durchdacht und strukturiert. Allerdings dringt dadurch auch Hofstadters I mehr durch, man könnte meinen, man sitze mit ihm zusammen und er erzähle einem alles. Auch sehr nett sind die vielen Notizen und Anmerkungen im Anhang des Buches.

Trotzdem ist es immer noch ein sehr gutes und interessantes Buch, aber zuerst unbedingt Gödel Escher Bach lesen um zu erleben, wofür Hofstadter einen Pulitzer-Preis bekommen hat.

2 comments »

Neue Blogs

Ich habe einige neue Blogs (naja, besser wäre Feeds) entdeckt. Zugegeben, neu wohl nur für mich, aber vielleicht ja auch für den einen oder anderen für euch.

Gilad Bracha, Designer von Newspeak. Thema sind Programmiersprachen, bzw. meistens was Mainstream Sprachen falsch machen und wie es in Newspeak besser ist.

Mark Chu-Carroll, “PhD Computer Scientist, who works for Google as a Software Engineer”, hatte in letzter Zeit einiges interessantes zum Thema Statistik und Visualisierung, aber auch Logik und anderes.

Microsoft Research, vieles das zu hoch ist für mich, aber ab und zu was passendes. Lese ich vor allem, um nichts von Erik Meijer zu verpassen.

No comment »