Tail Recursion with GCC, Church-Numbers with clang

Wed, 30 Sep 2009 00:58:27 +0000

I just noticed that it is possible to do tail-recursion in C with gcc. Now that is really nice! For example, the following (comparably useless) program can be made working properly:

#include <stdio.h>

int evenp (int x) {
return (x < 2) ? x : evenp (x-2);
}

int main (void) {
printf("%d\n", evenp(10000001));
}

when compiled with the -O2 flag. Without that flag, it causes a segmentation fault, because the compiler doesnt do tail-call-optimization. Well, I am not sure whether this is really useful, and you can really begin to think functional, because C is still very low level.

Since clang is gcc-compatible, it also has the -O2 flag, and also optimizes tail calls away. And it has this cool new language extension, called Blocks. Its a sort of function pointers. The following is a bit hard to compile, but it works:

#include <Block.h>
#include <stdio.h>

void* (^churchZero) (void*) =  ^ (void* x) {
void* (^id) (void*) = ^ (void* y) { return y; };
return (void*) Block_copy(id);
};

void* (^churchSucc) (void*) = ^ (void* n) {
void* (^nf) (void*) = ^ (void* f) {
void* (^nfx) (void*) = ^ (void* x) {
return (void*)(((void*(^)(void*))f)
(((void*(^)(void*))(((void*(^)(void*))n)(f)))(x)));
};
return (void*) Block_copy(nfx);
};
return (void*) Block_copy(nf);
};

void*(^toChurchNumber(int i, void*(^begin)(void*)))(void*) {
if (i == 0)
return begin;
else
return toChurchNumber(i-1, (void*(^)(void*)) churchSucc ((void*) begin));
}

int main (void) {
int(^incf) (int x) = ^ (int x) { return x+1; };
void*(^tentimes)(void*) = toChurchNumber(10, churchZero);
int (^plus100) (int) = (int(^)(int))tentimes(tentimes(incf));

printf("%d\n", plus100(0));
}

Very Nice!


Mehrheit im Bundesrat

Mon, 28 Sep 2009 00:53:25 +0000

Schwarzgelb hat Bundesratsmehrheit deutlich verfehlt! Doch sei es jetzt Inkompetenz oder Vorsatz: Die Presse will den Bürgern etwas anderes vorgaukeln und berichtet von einer Mehrheit! 37 von 69 Sitzen werden Schwarzgelb an verschiedenen Stellen zugeschrieben! (Beispiele: Welt, ZDF, Wiener Zeitung und Financial Times Deutschland).

Nachdem ich es jetzt schon mehrmals gelesen habe, muß ich vehement widersprechen: Nein, Schwarz-Gelb hat keine Mehrheit im Bundesrat. Selbst wenn sie (was von vornherein so gut wie ausgeschlossen war), in Brandenburg auch gewonnen hätten. Nein. Es ist wahr, Schwarzgelb hat momentan 33 von 69 Sitzen im Bundesrat, Schleswig-Holstein entsendet 4. Wenn man jetzt nicht nachdenkt und zusammenzählt, macht das 37, eine Mehrheit. Aber: Bis die Regierung in Schleswig-Holstein zusammengetreten ist, haben sich sowohl in Thüringen, wie auch im Saarland neue Regierungen gebildet. Es ist zwar noch nicht ganz sicher, wie sie aussehen werden, jedoch weiß man schon, wie sich nicht aussehen werden: Schwarzgelb hat in beiden Ländern keine Mehrheit. Damit hat Schwarzgelb in absehbarer Zeit im Bundesrat: 33+4-7=30 von 69 Stimmen. Und 2010 wird sich das kaum ändern: Aller Voraussicht nach gibt es 2010 genau eine Landtagswahl: In Nordrhein-Westfalen, dort gibt es jetzt eine Schwarzgelbe Regierung, dh. danach hat Schwarzgelb entweder weiterhin 30, oder nur noch 23 Stimmen. Ich hoffe, daß dann die Nachrichtenmagazine besser rechnen, als diesmal.


Was Mac OS im moment fehlt …

Mon, 28 Sep 2009 00:04:26 +0000

Tja, ich habe ja mal ne Zeit lang jetzt Mac OS X benutzt. Schlichtweg, weil es für meine Zwecke ausreichte.

Vielleicht hat den Einen oder Anderen ja gewundert, dass ich plötzlich von Ubuntu geschrieben habe, vor ein paar Tagen. Und ja, in der Tat, ich benutze momentan Ubuntu auf meinem MacBook. Das liegt nicht an irgendeinem blinden Hass auf Mac OS X. Im Moment reicht Mac OS X einfach nicht für meine Zwecke aus, weil ich momentan zur Abwechslung mal einen Rechner brauche, der funktioniert.

Seit dem Upgrade auf Snow Leopard geht vieles von der Software, die ich brauche, nicht richtig. Da wären z.B. mzscheme, clisp, sbcl, wine. All das geht unter Ubuntu mehr oder weniger tadellos. Ich wollte Mac OS verwenden, um mir Gefrickel zu ersparen, aber Mac OS hat mir irgendwie bisher kaum Gefrickel erspart an den Stellen, die ich wirklich brauche. NTFS-Zugriff war problematisch, das Einrichten einer gescheiten Firewall war problematisch, das Einrichten eines SSH-Servers war problematisch (obgleich ich zugeben muss, der Vine Server, der einen VNC-Server darstellt, ist sehr gut). Aber natürlich, alles geht letztendlich. Es ist nur ähnlich wie unter Ubuntu: Die GUIs haben einfach ihre Grenzen, man muss viel von Hand in Konfigurationsdateien herumfrickeln. Nur wenn eine GUI mir dann ins Handwerk pfuscht, weil sie meine Konfiguration nicht versteht, ist das halt schlecht. Das ist etwas, was Ubuntu langsam lernt.

Weiterhin sind die Partitionstools von Mac OS irgendwie so beschaffen, dass ich denen nicht unbedingt meine wichtigen Daten anvertrauen will. Gut, sie benutzen GPT, müssen also ein wenig Hacken, um Windows zum Laufen zu bringen. Eine gescheite Implementierung eines Bootloaders für Windows, der GPT beherrscht, wäre sicherlich das Beste, den Windows-Bootloader so lange virtualisieren bis GPT keine Probleme mehr machen kann, wäre wohl die Lösung die ich gewählt hätte, wenn ich etwas kommerzielles anbieten würde, aber das geht vermutlich aus rechtlichen Gründen nicht. Etwas ähnliches wie Wubi wäre sicherlich auch möglich gewesen. Letztlich kann ich mich aber darüber an sich nicht beklagen.

Beklagen kann ich mich über BootCamp eher in der Hinsicht, dass BootCamp nicht funktioniert, wenn Mac OS zufällig grade Swapdateien anlegt an Stellen, wo die Partition eigentlich verkleinert werden müsste. Das macht es teilweise unmöglich, BootCamp im laufenden Betrieb zu nutzen. Ich finde, das ist ein Bug. Aber was solls.

Man muss eben von CD booten. Tollerweise kann man mit den Mac OS Partitionierungstools erreichen, dass ebendiese bei jedem Versuch, irgendetwas zu ändern, abstürzen. Zum Glück gibt es Ubuntu-LiveCDs, die alles Wichtige unterstützen, was man braucht, um das Ganze wieder zu reparieren (dann auch noch eine eigene LiveCD zusammenzustellen hätte mich angekotzt), sodass ich wenigstens auf die Daten wieder zugreifen konnte. Ich muss gestehen, egal wo und wie die Mac OS Partition auf der Platte war, ich konnte immer davon booten. Was mir dann aber doch etwas zu riskant war, da offenbar Mac OS nicht so recht mit der Konfiguration zurechtkam. Außerdem war mehr als die Hälfte meiner Festplatte ungenutzt, und ich wollte auch mit Ubuntu nicht zu sehr daran rumpfuschen (ich konnte die Partition zwar wieder vergrößern, und sogar erreichen, dass das Mac OS Tool wieder gelaufen ist, aber BootCamp weigerte sich weiterhin). Also habe ich das System nach einem Backup komplett plattgemacht. Daraus resultierte die jetzige Konfiguration aus einer kleinen Mac-OS, einer kleinen Windows 7, und einer großen Ubuntu-Partition.

Mac OS muss sich in der Beziehung mein Vertrauen erstmal wieder verdienen, ich weiß nicht, ob ich ihm wichtige Daten anvertrauen würde.

Nun, das wäre jedenfalls ein Feature, das Mac OS wirklich fehlt: ein gescheites Partitionierungsprogramm. Das auch funktioniert. Ich finde sowas ist das Minimum.

Dann vielleicht etwas mehr Anstrengung dahingehend, dass mit einem neuen Mac OS Release nicht gleich alle mögliche Software inkompatibel wird. Und vor Allem: Sinnvolle Partitionsverschlüsselung, auch für die Rootpartition. Das geht inzwischen selbst unter Debian ohne Probleme, unter Windows kriegt man es angeblich mit TrueCrypt relativ leicht hin. Wo ist das Problem, Apple?


Gründe für eine Wahlentscheidung

Sun, 27 Sep 2009 23:28:40 +0000

Hallo. Ich bin der Neue hier und fange dann auch gleich meinen ersten Blogeintrag an. Nachdem ich es sinnlos finde zu schreiben, worüber ich schreiben werde (das seht ihr schon), fange ich direkt mal an.

Ich frage mich schon lange, welcher Teil der Wähler weiß, was er da gerade gewählt hat. Damit meine ich jedoch nicht vollständig verstanden, sondern ein wenig bemerkt. Da fallen mir ein paar Kommentare ein, die ich mal zu dem Thema gehört habe, aber nicht an mich gerichtet waren (In Klammern dahinter, was ich mir (damals, einige sind schon einige Jahre her) dabei gedacht habe):

Voten die CDU/CSU betreffend:

  • Ich wähl die CSU, das machen meine Eltern auch so (ein relativ guter Grund für die CSU, mehr fallen mir für die auch nicht ein. Immerhin, besser einer halbwegs vertrauenswürdigen Quelle glauben, als irgendwem, wenn man sich damit schon nicht auseinandersetzen mag).
  • Wir sind in Bayern, da muß man die CSU wählen ((Ich meine jetzt nicht den Kommentar von dem einen CSU-Politiker, ich hab das schon etwa 2002 von jemandem gehört) Das ist so wie: Wir sind in der DDR, da muß man SED wählen).
  • Ich wähl die CDU, ich hab so Mitleid mim Schäuble, daß er im Rollstuhl sitzt (Das ist schon richtig, daß man mit Schäuble Mitleid haben sollte, aber das ist doch kein Grund ihn zu wählen. Und ich glaube nicht, daß wir eine vernünftige Regierung bekommen, wenn wir alle Leute reinstecken, mit denen man Mitleid haben kann).

Voten die SPD betreffend:

  • Der Schröder hat so eine süße Nase, drum hab ich den gewählt (Was ist das denn für ein Argument. Wählt die ihren Zahnarzt auch danach, was der für ein Ohr hat?).

Voten die FDP betreffend:

  • Ich wähl die FDP, die ist für Freiheit (wollen einen die anderen in den Knast stecken, oder was? Und er scheint das FDP-Konzept von Freiheit noch nicht verstanden zu haben. Zumindestens schien der Rest seiner Ansichten sich nicht mit dem FDP-Programm zu decken).

Voten die Piraten betreffend:

  • Ich fand den Namen auch lustig, drum habe ich die gewählt (Gute Partei, schlechter Grund).

Andererseits sind solche Kommentare schon verständlich, viele Parteien befördern solche flachen Denkweisen auf ihren Wahlplakaten. Da fällt mir ein Beispiel der FDP ein: FDP – für klare Verhältnisse (oder so ähnlich). Das ist schon wahr, daß Schwarzgelb momentan eher klarere Verhältnisse schafft, als andere Konstellationen. Aber klare Verhältnisse sind nicht unbedingt besser. In ner Diktatur sind die Verhältnisse schließlich auch klarer, als in einer Demokratie. Aber zumindestens ich finde eine Demokratie trotzdem noch besser.


Dijkstrabühl bekommt Zuwachs

Sun, 27 Sep 2009 22:30:02 +0000

Bereits jetzt hat dieser Blog ja zwei Autoren, obgleich einer davon recht inaktiv ist. Nun kommt ein neuer hinzu. Ein Bekannter von mir, dessen Meinungen und Ansichten ich nicht immer teile, aber auf jeden Fall interessant finde, und den ich jetzt endlich dazu bewegen konnte, zu bloggen.

Allerdings nur unter der Voraussetzung, dass ich den Begrüßungsblogpost schreibe.

Sein Name auf diesem Blog wird „derishkalebt“ sein, daran wird man die von ihm verfassten Blogposts erkennen. Er ist – wie ich und Dieeentelebt – für alles was er schreibt selbst verantwortlich. Seine Mailadresse ist:

Ich freue mich schon auf interessante Beiträge.


Jesus und die CSU

Sat, 26 Sep 2009 19:45:58 +0000

Da Jesus bei Google offenbar irgenwie zu meinem Blog führt, wie ich in meinem letzten Blogeintrag geschrieben habe, und die Bundestagswahl bevorsteht, dachte ich mir, hey, wieso nicht mal beide Themen kombinieren.

Da fiel mir dann spontan ein Zitat von Peter Ramsauer (CSU) ein, das ich auf polit-bash.org gelesen habe, welches wiederum Zeit Online als Quelle angibt. Er wurde dort gefragt, inwiefern die CSU noch christlich sei, da sie doch nur noch für reiche Personen dazusein schien:

„Jesus Christus wäre in die CSU eingetreten.“

Reflektieren wir kurz über diese Aussage.

Jesus ging damals zum Beispiel unter Anderem zu Zöllnern, zum Beispiel Zachäus, also Leute, die mit den Römischen Besatzern zusammenarbeiteten und sich häufig durch zu hohe Zollforderungen etwas dazuverdienten, und dadurch durchaus wohlhabend werden konnten. Warum er das tat, steht zum Beispiel in Lukas 5, Vers 30ff:

„Und die Pharisäer und ihre Schriftgelehrten murrten und sprachen zu seinen Jüngern: Warum esst und trinkt ihr mit den Zöllnern und Sündern? Und Jesus antwortete und sprach zu ihnen: Die Gesunden bedürfen des Arztes nicht, sondern die Kranken. Ich bin gekommen, die Sünder zur Buße zu rufen und nicht die Gerechten.“

Ramsauer hat also recht, es ist durchaus nicht abwegig, dass Jesus tatsächlich in CSU-Kreisen verkehrt hätte.


Suchergebnisse, die laut WordPress hierher geführt haben

Sat, 26 Sep 2009 17:52:36 +0000

Ich finde es manchmal seltsam, welche Suchbegriffe so alles hierher führen. Hier mal ein Screenshot derer, die mir WordPress heute angezeigt hat:

Suchbegriffe