23.3.2005 00:23
Kurz nach der Freigabe der funktionalen Programmiersprache F# für .NET folgte die Ankündigung von Brainfuck#. "Mit Brainfuck# unterstreicht Microsoft nicht nur die Programmiersprachen-Unabhängigkeit von .NET, die ja bereits von so vielen Sprachen wie C#, J# und F# gezeigt wird, sondern lockt auch viele 'potentiell zukünftige Kunden', auch Freaks genannt, zurück zur Windowswelt". Bisher nutzten Fans von seltsamen Programmiersprachen vor allem die freien Betriebsysteme wie die BSDs oder Debian, welches beispielsweise whitespace direkt mit ausliefert. Doch mit der Integration von Brainfuck# in die Entwicklungsumgebungen von Microsoft samt Debugger und Unittests bietet der Softwareriese eine verlockende Alternative.
Brainfuck# ist abgeleitet von Brainfuck, einer esoterischen Kleinstprogrammiersprache von dem Schweizer Urban Müller. Brainfuck ist trotz seiner nur 8 Befehle eine Turing-vollständige Sprache, kann also allgemein jedes programmatisch lösbare Problem auch lösen. Die Entwicklungsabteilung von Microsoft erweiterte die Sprache nun so, dass andere .NET-Methoden aufrufbar sind. Dies wird über den ☠-Operator, auch Priate-Flag-Operator genannt, ausgelöst. Dieser erwartet unter dem Pointer den ASCII-Codierten Namen der aufzurufenden Methode, gefolgt von allen nötigen Paramtern in der .NET-internen Darstellung. Gerüchteweise ist die Operation allerdings nicht implementiert, da keiner sich die Mühe machen würde, diese Aufrufe tatsächlich in Brainfuck zusammenzustellen
Neben den großen Entwicklungsumgebungen, die in der nächsten Version volle Brainfuck#-Unterstützung enthalten werden, bietet Microsoft für interessierte einen kleinen Brainfuck#-to-Bytecode-Compiler an, das 32-MB-große Paket ist kostenlos herunterzuladen.
Alternative Implementationen gibt es noch keine, allerdings plant das Mono-Projekt, diese in wenigen Tagen nachzureichen. Bereits jetzt wurden mehrere Vorschläge auf der Mailingliste untersucht, darunter zwei Compiler in C# geschrieben (2KB und 1402 Bytes groß), sowie einer, der selbst in Brainfuck geschrieben wurde. Auch wird wohl die Virtual Machine von Perl 6, genannt Parrot, Brainfuck# unterstützen. Der Compiler besteht hier lediglich aus einem Perl-6-kompatiblen Substitutionsoperator und ist 53 Bytes groß. (jb/Flattr)