Randomly Found Software: Zeta

Mon, 30 Nov 2009 23:13:56 +0000

Actually, when I read this freshmeat announcement, I wondered whether to admire the person writing that project, or consider him crazy: „it was created for the sole purpose of having a new target to which the Linux kernel, GNU bintutils, and GNU gcc can be ported„. And visiting the website, I read that they have already ported a huge amount of the GNU binutils and the Linux Kernel and the GCC onto it – which I assume was a lot of work.

So I wondered what all that is actually good for – and as far as I read, it is good for „people interested in learning linux kernel internals„. So there seems no practical use aimed. That is, somebody used his spare time to create a virtual architecture and create a linux-port for it, just for fun. Thats definitely cool.

But ok, they could have ported linux to run under the JVM or under SPIM, too, then they wouldnt have to build their own architecture.

On the other hand, the architecture seems to be comparably easy – as far as I see. As well easy to use as easy to reimplement. Thus, as soon as linux is being ported there completely, one has a platform to reimplement and do experiments. Therefore – very interesting.


WindowWrangler – Endlich ein einigermaßen gescheiter freier Window Manager für Mac OS

Sun, 29 Nov 2009 03:21:35 +0000

Zufällig hier gefunden – warum auch immer ich es bisher noch nicht gefunden hatte. WindowWrangler. Das Programm hat keine imba Keyboard Shortcuts um sich irgendwelche Fensterpositionen zu merken. Aber dafür hat es genau die Funktionalität die ich will: Fenster per Keyboard resizen und verschieben. Und es ist Donationware – die Bezahlung ist freiwillig. Da sitzen bei mir die Euros gleich viel Lockerer, wenn man mich nicht zwingt zu bezahlen – vielleicht werde ich, wenn ich mir VMWare Fusion kaufe, den preis aufrunden, und den Rest für diesen Fenstermover bezahlen. So als Trinkgeld quasi.

Am Liebsten würde ich natürlich mal eine API-Dokumentation durchlesen um zu sehen wie ich mir selber ein entsprechendes Programm schreiben kann – aber wenn das nur halb so schwer ist wie einen X11-Window-Manager zu schreiben kann ich glaub ich gleich sagen, dass ich keine Zeit dafür habe.

VMWare Fusion werd ich mir auch nur deshalb kaufen weil ich wahrscheinlich die nächsten Monate immer wieder eine Windows-Umgebung brauche, und keine Zeit habe, zu schaun, wie ich das Ganze mit VirtualBox hinbekomme – ich meine man kann sicher einige features mit VirtualBox auch hinbekommen, auch das Booten einer BootCamp-Partition dürfte principiell kein Ding der Unmöglichkeit sein. Aber es ist … Arbeit.


VMWare Fusion – die wahrscheinlich erste Mac-Software die ich mir kaufen werde…

Sat, 28 Nov 2009 03:14:49 +0000

… Denn wie ich schon schrub benutze ich atm hauptsächlich Windows. Und ich bin mir relativ sicher, dass das noch häufiger der Fall sein wird, bzw. dass häufiger die Notwendigkeit bestehen wird, mehrere Betriebssysteme zu nutzen. Denn es gibt immer, für so ziemlich jede Aufgabe, irgendeine Sache die mich an irgendeinem der drei Betriebssysteme wirklich nervt.

Nun kann man aber VMWare so wunderschön nutzen um BootCamp-Partitionen virtuell zu Booten, die man aber auch gleichzeitig nativ booten kann. Ein klarer Vorteil zu VirtualBox – wo man das zwar auch hinbekommt, aber nicht ohne erheblich größere Anstrengungen (aber vielleicht schreibt ja irgendwann mal jemand sowas).

Momentan renne ich die Testversion. Mal schaun wo ich günstig eine Lizenz kaufen kann.

Sobald ich Zeit habe richte ich mir dann vielleicht unter Windows noch einen VMWare Player ein, sodass ich eine Linux-VM unter beiden Systemen verwenden kann. Auf ein natives Linux muss ich dann leider verzichten, aber ich denke, das kann ich auch ganz gut, denn Linux ist so modular eingerichtet, dass es die Vorteile der Virtualisierungslösungen auch wirklich ausnutzen kann. Außerdem ist es ohnehin nicht ganz trivial Linux auf dem Mac nativ laufen zu lassen – es geht, und ich fand es auch ganz gut, aber es kann, wie man mir sagte, der Hardware schaden, da Apple der Software ziemlich viel Einfluss überlässt – was ich persönlich übrigens sehr unschön finde, denn Softwarefehler passieren nunmal immer wieder.

Dabei fällt mir zufällig wieder eine Idee ein, die ich als enthusiastischer Informatik-Erstie (oder Zweitie) mal hatte: Einen POSIX-Layer für die Java-VM. Im Moment wird ziemlich viel für die Java-VM entwickelt, und sie ist recht gut optimiert, es gibt sogar C-Compiler dafür. Und mir geht es häufig so, dass ich lieber ein ineffizientes Programm habe, als gar keines. Nun, ein POSIX-Layer für Java, auf dem man viele Programme compilieren kann, das würde einem die Möglichkeit geben, sehr viele Software quasi plattformunabhängig zu compilieren. Ich meine damit soetwas wie „Cygjava“ – die Speicherung von Java Bytecode in ELF-Dateien, eine Syscall-Infrastruktur, und was eben sonst noch so dazu gehört. Kann das mal bitte jemand Programmieren?


Weekly Game Music: Wario Land 3 – Rudy The Clown

Sat, 28 Nov 2009 02:42:48 +0000

I have actually never played Wario Land 3,  but according to the things I have seen it is quite similar to Wario Land 2 which I have played and enjoyed. It was comparably easy but had a lot of secrets to find. You cannot die in that game (as far as I know you cannot die in Wario Land 3 either), but enemies cost you coins and may change you into some other form (like making you fat or turning you into a zombie) – as you can see when watching the cover in the video below, where a few forms of Wario seem to be drawn. Anyway, the music which I will link here sounds typical for Wario Games. Enjoy!

(direct link)


Things C could have – in my opinion

Fri, 27 Nov 2009 15:04:49 +0000

For portable imperative low-level programming, my favourite programming language ist still C. Basically because there is no real alternative to it so far – there may be projects aiming it, but a big advantage of C is simply the huge codebase and portability, mostly without having to do anything at all. For example, you can even rely on most POSIX-Functions even under windows, if you dont mind using the Cywgin-DLLs, etc. On the other hand – of course – C is not good for hacking. When writing software in C, one should have a clear perception of what he wants to code and how he wants to structure his code.

But I dont want to discuss this by now. C has its advantages and disadvantages, there is no doubt about that. What I want to point out right now is, that C has a few disadvantages, of which I actually do not understand why they are still existing (or whether they are still existing at all). I would like to point out a few of them and explain why I dont understand that they are existing.

Probably I will be wrong with some assumptions, since I have never actually viewed a code of a complex C compiler. So, if I am wrong, feel free to comment this post.

Turing-Complete Macro System

The first thing that C lacks of is a turing-complete macro-system. The template-system from C++ is – as far as I heard – turing complete meanwhile, but its comparably hard to actually code with it. I tried to understand it, but to me this system seems really ugly for actually programming something with it.

C has the #define statement, and most C-Compilers support inline functions. I myself try to use inline functions whenever possible, because they are easier to debug and seem to be a more modern approach. On the other hand, in some cases, they are simply not sufficient. Luckily, #define statements can even have arguments. But there is no recursion, they are not turing-complete, and there is no possibility (I know of) to modify the contents of the arguments before putting them in the code.

Ok, so you could just put some kind of recursive calls for #define statements, and maybe some basic string-operations in your C-Compiler. Then one could for example implement a simple JSON-Parser, etc., to handle that code and have something that is comparably mighty. Would be one solution which should not be too hard to implement, improves usability of the compiler, and doesnt make the actual code which is generated slower, since anything that happens happens at compile-time. This possibility would be better than what we have right now, but I wouldnt really consider it being a good alternative to the macro-systems I know from Lisp.

A better possibility would be to actually use code-generating functions written directly in C. You could then pass them the arguments either as strings or in some kind of syntax-tree – syntax-tree would be better since in most cases you would use some parser anyway, so why not using the one the compiler has. One would have to find a good format of these syntax trees, there are a few possibilities for that, but that part shouldnt be too hard. This function then returns either a string or a syntax tree which is then placed into the code, where the macro was called.

This is the possibility I would actually prefer. But of course, it is harder to implement. One main difference between C and most functional languages is that in C, compilation time and runtime are strictly separated, so you cannot just call functions you have already compiled while still compiling (which you actually can do in most lisp dialects). Of course, one could consider this a misfeature of C compilers, and in fact, it should be possible to have the same thing in C, too, but on the other hand, many things are harder to optimize then, and since C is very low level, this could produce a lot of problems when it comes to memory management like managing syntax trees, buffer overflows, etc.

Maybe an alternative would be some statement – lets call it #macroinclude – where you can include a file which explicitly must be runnable (i.e. in most cases compiled) before the actual file can be compiled, because it relies on the macros defined in that file. Then, the compiler could take that file, compile it (maybe with lesser optimizations, etc.), and use it for compiling the actual file. To prevent the compiler from flaws, it could fork and let only one subprocess actually call these functions, while the other subprocess asks it for macroexpansion whenever needed.

Multi-Line Strings

I dont see any reason why it is not possible to declare a string that has newline-symbols with proper newline-symbols inside the code, i.e. declaring a string in multiple lines inside the code, as it can be done in Scheme and Common Lisp for example. It shouldnt be too much harder to parse (in fact, it should be easier I think).

Compile-Time Type-Dispatching, Operator Overloading

Actually, C++ already does have these features in some cases. But C apparently doesnt. And actually, of course, I see simple reasons for that – functions in shared libraries must have a pre-defined unique name. On the other hand, one could easily define a simple naming-scheme for such functions. The reason why one may want this is that it is simply extremely useful and can enhance code-readability. Lets say for example you want to define an additional numeric type, say Countable Ordinal (I explicitly dont use Complex Numbers here, because there are C-Compilers supporting them, as far as I heard), and you want to define an addition for them. You would have to add a new function name like „addOrdinals“. But it also makes sense to add integers to ordinals, since they are a special case of ordinals. So you would also have to add a function „addOrdinalToInteger“. With Compile-Time Type-Dispatching, you would be able to just define a function „add“ twice, with different types. Now, with operator overloading, you could also add an additional definition for +, which can also enhance readability. Important: All of this can (and should) be done at compile-time.

User-Defined Infix Operators

Even though I like Lisp, in languages like C which are not optimized for coding with prefix-ops, additional infixes can be a nice thing to have. Many languages (haskell, sml, afaik also perl 6) have them, so it shouldnt be too hard to add them to C.

Structure Introspection

C has no type information on runtime. And thats a good thing, I suppose. Its a design decision whether or not to have type information on runtime, and since C is low-level and you want to be able to do such „bad“ things like casting integers into strings to send them through sockets, etc. – with a turing-complete macro-system you could of course add something like type-information to some structures, if you want it, but C is a low-level-language, and it should stay that. If I really need a complex object system, I would maybe switch to GLib if I have to use C, or use Common Lisp.

Anyway, structure introspection is something that could really be easily provided, at least on compile-time, for example inside macros, but I actually dont see why not also on runtime. For any structure A, you could – for example – add a function void* readFieldA(A* object, char* fieldname) which returns a pointer to the beginning of the given field for the given object. This is a simple function that could be easily implemented. If you already have Compile-Time-Dispatching as mentioned above, you wouldnt even have to use an own function name for any type. Additionally, maybe one would like to have a function like size_t fieldLength (A* object, char* fieldname) to know the length of the field, and functions int fieldNum(A* object) and void getDeclaredFieldNames(A* object, char** names) to get all names of declared fields.

Well, this is one possibility I could think of. One of many. A problem with this possibility is when it comes to tings like unions or bitshifts. For this, maybe it would be a good thing to let readField return an appropriate function pointer which you can pass the given object to extract the desired data, instead of a pointer onto the data itself.

Templates

Templates are a nice thing to have. As far as I know, they are already planned to add to a new C standard. And well, why not?

Lambda-Forms, Closures

As well clang as gcc as some new C++-Drafts are trying to define a lambda-syntax and lambda-forms for C/C++. In fact, it shouldnt be too hard to get something like that, at the moment, I like clang’s block-syntax most, but its still very complicated to use imho. Whats the problem with a syntax like just lambda (arglist) { <code> ; return <...>; }. The type can be inferred by looking at the return-statements. Lambda-Forms are not to use for huge functions, that is, normally they should stay small enough such that not only the compiler but also the code writer should be able to determine its type. And what about the ugly function pointer syntax als clang’s block syntax has? Why cant there just be type-declarations like (int,int->int) or some similar syntax? In the end, its just syntax, for the parser it shouldnt be too much additional work, for the programmer, it should become easier to code.

With lambda-forms comes – of course – the problem with closures. Small objects like integers can be directly copied into the code of the lambda-form (or some additional data structure naming the initial stack frame). But sometimes, you have pointers to work with, pointers to stack objects which may be already deleted when calling this function. That is a problem of which I dont know a proper solution (except when changing the memory management – which is something you usually dont want when working with C). Well, you will – as with all structures you define inside C – have to take care that your pointers stay valid yourself. I guess thats a price you have to pay for low-level-programming. In many cases, the compiler should be able to detect if a pointer references onto the stack or onto something else, so it could warn the programmer.

Tail Recursion, Loop-Recur

GCC also supports tail call optimization, and in my oppinnion, this should be the default, since I see no reason why one wouldnt want to have it in most cases – and in the few cases when it would make sense, maybe one could add a keyword or compiler-flag to suppress it.

In addition, it would be nice to have some loop-recur-statement as scheme and clojure do have, like loop (arglist) { <code>; recur args; <code>; return ...;}. I think it would be convenient to have two possibilities, either recur (arguments) as a function call (for the cases you dont have tail recursion – which may sometimes occur), or recur arguments as a replacement for return recur(arguments), but thats a matter of taste. And of course, you could do the same thing (except for non-tail-calls) using a while-form – but thats not the point.

Namespaces

I never quite understood why there are no namespaces in C. Namespaces have – in my opinion – nothing to do with the fact that the language is low-level. Namespaces are useful for structuring code, and they are something that can be handled during compile-time. The main problem would be which naming-scheme to use in libraries, but since most systems have common naming-schemes for that, since as far as I know in most systems there exist C++-Compilers and mostly different C++-Compilers are trying to act similar to each other, I dont see any problem with that.

Another possibility would be to just define prefixes of names which can be omitted when declaring it. In the end, thats about what namespaces are. Thats not that beautiful, but who cares, its simple.

Conclusion

So these are a few simple language extension requests by me. I think most of them would not break the spirit of C but would be extremely useful. Discuss!


Ausziehen

Fri, 27 Nov 2009 05:01:44 +0000

Thats what she said


Windows 7 – Miranda IM

Wed, 25 Nov 2009 04:38:04 +0000

Im Moment arbeite ich aus drei Gründen nach langer Zeit wieder hauptsächlich unter Windows:

  1. Mac OS nervt mich und ich kann damit nicht produktiv arbeiten.
  2. Ich habe nunmal ein MacBook, damit muss ich jetzt leben. Unter Ubuntu wird dieses aber immer sehr heiß, während Windows offiziell unterstützt wird.
  3. Ich muss – MSDNAA sei Dank – nichts dafür bezahlen.

Zu Windows 7 kann ich nur sagen: Bisher habe ich große Anstrengungen unternommen, um nicht unter Windows arbeiten zu müssen. Windows 7 ist allerdings seit Windows 98 das erste Windows, mit dem ich wenigstens dann arbeiten würde, wenn es mich nichts kostet – bezahlen würde ich dafür freilich nichts.

Microsoft hat anscheinend aus einigen Fehlern gelernt, und so erscheint in Windows 7 zum Beispiel eine Hybridlösung zwischen Taskleiste und Dock – gut, die Fenstergruppierung auf der das basiert haben sie sich wohl ein wenig von KDE abgeschaut, aber warum auch nicht.

Ich hab Windows im klassischen Look, wie unter Windows 98, ich finde, dieser Look ist zeitlos und übersichtlich, während die vielen Desktop-Effekte von Mac OS mich meistens abgelenkt haben. Als Umgebung fand ich KDE 3.5 wunderbar. Leider leider, KDE 4 ist grässlich, und bisher habe ich nicht gesehen dass diese Grässlichkeit sich verbessert hat – die Programme passen nicht mehr so gut zueinander, die UI ist überladen, und überhaupt hat man sich hier zu sehr darum bemüht, wie Windows Vista zu werden – während Windows 7 wieder eher in Richtung KDE 3.5 geht. Dolle Sache.

Nunja, nun gibt es den Chatclient Pidgin, den ich unter Linux normalerweise Nutze, zwar auch für Windows, aber ich entschloss mich, den Chatclient zu benutzen, den ich als letztes zu meinen Windows 98 Zeiten schon benutzt hatte: Miranda IM.

Miranda IM hat klar den Nachteil, dass das Interface zur Konfiguration nicht das Einfachste ist. Der klare Vorteil ist die große Fülle an Plugins und Konfigurationsmöglichkeiten. Eigentlich finde ich es sehr schade, dass Miranda IM nicht auch eine Linux-Version hat, bzw. dass sich offenbar auch niemand darum kümmert, eine solche zu Maintainen. Unter Wine soll das Ganze angeblich einigermaßen gehen, aber nunja, da es open source ist sollte man es eigentlich auch gegen die Wine-Lib linken können, aber zu einem richtigen Linux-Programm machen.

Nunja, jetzt gewinne ich das Programm erstmal wieder lieb, und warte bis ich wieder zu Linux wechsle. Dann werde ich wohl, wenn ich gerade Zeit habe, diese liebendgern benutzen, um mich dieser Sache näher anzunehmen.


Heubisch im Audimax – „Das ist halt Demokratie“

Mon, 23 Nov 2009 23:19:54 +0000

So. Heute habe ich leider keine Zeit meinen Beitrag mit allzu viel selbst gezeichnetem und Bildmaterial zu untermauern. Mein Handy hat außerdem eine schlechte Kamera-Qualität und hat einige Videos die ich gemacht habe nicht gespeichert, warum auch immer. Egal, die die es gemacht hat sind so schlecht, dass man es eh vergessen kann.

Also, wie ich schon geschrieben habe, und man auch sonst an ausreichend vielen Stellen mitbekommen konnte, heute war Wolfgang Heubisch bei der Besetzung des Audimax, und hat sich den Fragen der Studenten gestellt. Und heute stellte sich auch ein ganz anderes Bild des Audimax ein, als ich vor Kurzem bloggte: der Raum war überfüllt, so überfüllt, dass sie sogar einen Livestream in einen zweiten Raum eingerichtet haben, damit jeder alles mitbekommen kann. Ich hab hier mal ein Foto gemacht, da sieht das ganze leider sehr klein aus, weil der Blickwinkel recht schlecht war.

Update: Danke an den freundlichen Kommentator Michi für das folgende erheblich bessere Bild (hier in voller Größe – ich muss mir unbedingt ne bessere Kamera zulegen)

Ok, vorweg, nur damit da keine Missverständnisse entstehen: Der folgende Blogpost erhebt nicht den Anspruch journaistisch zu sein. Er stellt meine Meinung und Sicht der Dinge dar – auch wenn ich das im Einzelnen nicht explicit dazu sage.

Nunja, als ich in den Raum kam, eine dreiviertel Stunde zu früh, dachte ich eigentlich, in Anbetracht dessen, was ich das letzte Mal gesehen hatte, er wäre ziemlich leer, habe aber bereits keinen Sitzplatz mehr bekommen, aber wenigstens noch einen guten Stehplatz. Andererseits waren einige Leute der Auffassung, sie müssten in einem ohnehin schon vollen Raum irgendwelchen Leuten Plätze freihalten. Unmöglich sowas!

Naja, später sind dann einige Leute gegangen und ich hab doch noch einen Sitzplatz bekommen, bin aber eine ganze Zeit lang gestanden.

Dann erstmal großes Lob an Herrn Heubisch, dass er sich dieser Masse an Studenten gestellt hat. Aber auch großes Lob an die Studenten die das Ganze moderiert haben, und konsequent für eine gute disziplinierte Diskussion gesorgt haben, obwohl es ein paar Schreihälse leider gab.

Ansonsten war das Bild sehr seltsam: Nachdem die Presse ihre Gerätschaften erstmal ne Zeit lang überall herumgeschleift hat, trat der Minister ein, und ließ sich erstmal minutenlang Fotografieren. Ich fand das höchst seltsam. Es ist ja nicht so als könnte man sich nicht auch bei Wikipedia Bilder von Heubisch herunterladen. Naja, was solls.

Nach kurzer Vorstellung ging dann also erstmal die Diskussion los. Bis auf ein paar Schreihälse und dämliche Kommentatoren zwischendurch verlief sie recht geordnet und diszipliniert, das hat der Minister sogar angemerkt. Zum Inhalt will ich irgendwie nichts sagen. Bis auf ein „Basta“ zu Studiengebühren, ein Versprechen, sich in drei Monaten mal zum Mitbestimmungsrecht der Studenten in anderen Bundesländern schlau zu machen, und die Erkenntnis, dass er zum Bachelorsystem eigentlich die meisten Kritiken akzeptiert und nur letztendlich nicht wirklich was ändern kann, war eigentlich das meiste ziemlich offensichtlich und nicht wirklich überraschend.

Der Minister hat korrekt begründet, dass er legitim gewählt wurde, und somit die Bevölkerung hinter seiner Auffassung steht. „Das ist halt Demokratie“. Deshalb – liebe Leute – richtet euch nicht nur gegen die Politiker. Richtet euch vor allem mal gegen die ganzen Wahlzombies, die sie immer wieder in die Regierung wählen.

Ich bin ja gespannt wo das Ganze hinführt. Sehr interessant ist es allemal.


Heubisch kommt ins Audimax

Mon, 23 Nov 2009 12:13:28 +0000

Sososo … Die Demonstratoren haben es geschafft ein Video zu machen. Wie Nett. Die Performance ist ganz lustig, die sie da zeigen, und ich sehe einen deutlichen Fortschritt zu der schläfrigen „Besetzung“ die ich vor ein paar Tagen gesehen habe. Aber stellt besser erstmal den Ton ab:

Ja, der Ton, diese grässliche unmelodische Gitarrenmusik. Es mag ja Leute geben, die solche Musik mögen, mir tun bei sowas aber die Ohren weh – wenn nicht durch die triviale Melodie, die schlechte Stimme und die krampfhaft untergebrachten Pseudoemotionen, dann durch den grässlichen uninspirierten Text. Ich frag mich wer das gesungen hat.

Ich sehe auch irgendwie die Gefahr dass durch solche Texte ein falsches Bild entsteht, hier wären irgendwelche unterdrückten Revolutionäre am Werk. Ok, ein Raum wird besetzt (sort of), was nicht ganz legal ist, und somit der ganzen Aktion schon mal etwas mehr Nachdruck verleiht, aber weitestgehend gedulded wird, da es friedlich abläuft, und grundsätzlich abgesehen von ein paar Idioten beide Seiten gelernt haben, dass eine Hau-Drauf-Taktik nicht sinnvoll ist.

Allgemein drängt sich mir manchmal der Eindruck auf, neben den vielen seriösen Teilnehmern scheinen sich einige Leute mit Leuten wie Rudi Dutschke oder Sophie Scholl zu identifizieren. Anders als die meisten Leute halte ich den Gedanken dass sich irgendwann eine solche Situation ergeben kann für leider nicht absurd, aber in dieser Sache sind wir doch – zum Glück – weit davon entfernt.

Naja, lassen wir das. Für heute um 18.30 wurde der bayerische Wissenschaftsminister Wolfgang Heubisch im Audimax angekündigt. Nachdem ich um 18.00 sowieso im Hauptgebäude sein werde, werde ich mir das möglicherweise mal ansehen, wenn ich einen Sitzplatz bekomme, twittere ich vielleicht ein wenig davon (das würde dann wohl meine erste sinnvolle Verwendung von Twitter sein).


The most essential thing Mathematics have taught me for real life

Sat, 21 Nov 2009 05:03:08 +0000

When discussing with non-mathematicians about why I want to become a mathematician, what a mathematician’s work at a university is, and what it is good for, I often answer with the counterquestion what art is good for, because usually, there are two kinds of people asking such questions: the ones that like at least some kind of art, be it just folk music or modern films, and the pragmatic people which believe that investing ressources into research that has no immediate practical application means wasting them, of which most are die-hard capitalists or die-hard communists, which is a kind of people I usually dont try to discuss about such things anyway.

Some people say that art is something good because many people like it, and then mostly admit that mathematics can also be good because many people consider it being beautiful. This is my favourite way of that type of discussions. Some discussions lead into a meta-discussion about the meaning of live at all. And well, some of them argue that art rises creativity and helps you to get a different point of view of some things, and may help you to „find yourself“.

There is no doubt about that, as most artists insist on the fact that they want to tell something with their art. While mathematicians usually dont want to do that in the first place. Mathematicians just want to produce knowledge which they consider interesting and beautiful. Anyway, some theories in Mathematics can be applied to philosophy, especially logic – which is one reason why mathematics are important, even if they dont have a direct practical application. Another thing is that the strictly formal kind of thinking in mathematics taught me a lot of real-life facts which I consider essential for my personality.

So, recently, I was asked to give an example which is the fact that I consider the most essential fact mathematics taught me.

I think, the most essential fact mathematics have taught me is, that most problems can be solved by just properly phrasing them. In fact, most of them will vanish completely. To make it clear, I’ll give some examples.

First, lets look at a mathematical example. It is rather hard to find one which can be understood by non-mathematicians. Something that new math students often seem to be confused about is the set theoretical definition of numbers. In general, the question „what is a number“ is a question which is often asked. „How can you be sure that the axioms number theory bases on are really true?“. The answer is very simple, but in fact, not very satisfying: Numbers are defined to be the elements of an arithmetic, and an arithmetic is defined to satisfy my axioms. That is, these axioms are not assumptions about numbers that can be refuted by physics, these axioms are the definition of what numbers are. They may be similar to our intuition of numbers, and in fact, they are motivated by our intuition of numbers. But should our intuition of numbers at any time find something that is not described by these axioms, all the mathematical theorems derived from these axioms will still be correct, they just wont neccessarily describe our intuition on „numbers“ anymore. That is, what a mathematician calls „natural number“ is something else than what an average person would call a natural number. For most mathematicians it is a finite ordinal (i’ll leave this concept unexplained here), for some mathematicians, it is an object of some arithmetic, but thats no problem, since both concepts are isomorphic, i.e. equal when renaming a few things. In our intuition its „the thingies I can count with“. It may not be a coincidence that both things have the same name, but still, it is something different.

Now, lets go to some real-life-examples. I have heard a lot of stuff about so-called „UFOs“. And in many discussions, people argue whether there are such „UFOs“ at all, showing and arguing about evidences like photographies of them, forgetting what an UFO is. UFO is an acronym for Unidentified Flying Object, or sometimes Unknown Flying Object. And actually, I wouldnt be surprized, if there are videos of flying objects which cannot be identified uniquely. So yes, there are probably UFOs, because there is simply a lot of stuff flying around out there, and since there is a lot of place to fly around out there, we cannot know everything of it. Whats the big deal? The real problem is that „UFO“ became synonymic with „object from outerspace built by alien life forms“. And of course, that is a question which is more difficult to answer. As far as I know, there is no evidence for the existance of alien life forms, but there is a high probability that some form of live exists out there, which does not imply that it is similar to us in any way, and builds apparatus to fly to visit us. Especially, considering UFOs an evidence for alien life forms of that kind would be like considering the loss of a sock as an evidence for sock-eating gnomes who live in tumble driers.

A similar thing are discussions about the existence of „supernatural“ phenomena. It is quite clear that „supernatural“ means that something is above the nature. But before we can even talk about that, we must make clear what we mean by „nature“. Actually I mostly use the term „nature“ to distinguish between things that the human civilization has produced and things whose existence is mostly independent of the existence of humans. In that sense, even the computer I am typing this in this moment would be supernatural. Another meaning of the word „nature“ can be the sum of everything which exists. But in that case, the existence of supernatural phenomena is absurd, because since anything that exists belongs to nature, anything is natural. I have also heard that some people call a thing „natural“ when it can be expierienced by humans in some way. Actually, that is my definition of „existence“ – something exists when there is some way to expierience it – because if there is something I cannot expierience somehow, it cannot influence my life in any way, and I cannot tell anything about it, so why should I consider its existance? And especially, why should I argue about it? Anyway, since the term „phenomenon“ implies that there must be something that can be expierienced, also here, the question is clearly „no“ – as soon as it can be expierienced, as soon as there is any evidence of it, it wouldnt be supernatural anymore. Wikipedia gives another definition: The term supernatural pertains to an order of existence beyond the scientifically visible universe. At least this is a little more clear, even though we must define what „scientifically visible“ means. There are almost certainly phenomena which cannot be seen with recent scientific methods. Science is not a state, science is a process. So in that sense, there are probably supernatural phenomena – which will become natural as soon as they can be made visible. But I think, talking about the scientifically visible universe in that context means talking about things that can be scientifically detected at all, which means, a supernatural thing is a thing which cannot be detected scientifically at any time in the future. But what does that mean, detecting something scientifically? If humans can expierience it, we should mostly be able to detect it at least through some form of EEG. If humans tell that they have expierienced something, then we can test whether they are lying or believing what they say. Then we can look at their overall healthy, test them for mental diseases, etc., and as soon as we wont find anything, we have detected something which we cannot explain yet – but we have detected it.

Similar to that is the question whether there are miracles. Depends on what you consider being a miracle.

So, back to earth again, well, there are also simpler examples. Lets, for example, talk about a sort of recent topic, gay marriage. What does „marriage“ mean? In the past centuries, as far as I know, „marriage“ referred to the sacramentum of marriage in the catholic church, and later christian churches in general. It was clearly seen as something god likes and wants us to do. And clearly, the christians in those days considered homosexuality as a sin, and in that sense, there is no point of gay marriage. Today, we have basically two kinds of marriage, the civil ones and the religious ones. Since we are secularized, the latter ones have almost no lawful meaning as far as I know. There is a way to combine both kinds of marriage when the religious one comes from a religion to which a huge part of the people belongs, but this is rather pragmatic – many people want it, so they can have it – but this makes no difference before the law. Religious marriage has a religious meaning – the state cannot force any religion to marry people, nor can it forbid that. So, if somebody wants this kind of gay marriage, he just has to find a religion which marries gay couples. So what about civil marriage. What is civil marriage about at all? Civil marriage gives you some tax privileges, because the state wants to encourage people to get married and found a family. So we must make clear why the state wants to encourage marriage at all – and I think that is something which nobody really did so far. One thing are the children which are usually produced by married couples – same-sex-couples wont produce children, so if this was the only reason for the state to encourage marriage, there is no point in having the same thing for gay couples. Another thing is that spouses can be forced to pay social contributions, even after a divorce, which is – in general – something desirable for the state, and for both mates. But, honestly, if that was what gay couples are concerned about, there would be no point about marriage or living together at all when two people dont trust in each other that far. And civil marriage gives you the right to get information about your husband or wife in case of emergency – but you can as well authorize any other person you trust. The only thing that could really be a difference is, as far as I see at the moment, the question whether gay couples should be allowed to adopt children. But thats a completely different question – there can be no „right“ to adopt children, because the welfare of the children is always more important than the happyness of potential parents, so it boils down to the question whether children which are adopted by same-sex-couples have any disadvantages compared to other children, and if so, are they at least less than the disadvantages when growing up in a children’s home – thats a complex topic which unfortunately cannot be solved by phrasing it out, and of course there is a necessity to discuss about that. But this has nothing more to do with marriage than that of course if a couple adopts a child, there should be some formal obstacles ensuring that the couple is really a couple willing to share their life together at least as long as the child grows up. I dont think that such a formal obstacle is what couples want in first place. So in the end, civil marriage is worth nothing more than taxes and social contributions. On the one hand then, I wonder why same sex couples want this so desperately, on the other hand, I wonder what is the problem with it for some politicians.

Yet another example is connected to Intelligent Design. Well, there are people believing that live has completely evolved through evolution, and others, who believe in the christian theology of creation (and of course there are a lot of others, but lets name the most important ones). Of course, in the end, its a question of believe. But somehow, people dont want to accept that, and fundamentalists try to find evidences of their believe, and flaws in the scientific theory of evolution. Of course, there is no evidence for a god so far, which is why – by the occam-principle – science doesnt act on the assumption of its existence. Thats what science does – in the end, its a principle which proved itself, when looking at the amazing technical achievements we have made through it, but in the end its nothing more. So, if somebody wants to make science accept the existence of a god, you will have to give evidences for its existence, because even if it does exist, as long as there is no evidence, science will not accept it. On the other hand, nobody forces you to believe in what science sais. Sometimes people argue that evolution cannot form anything as complex as humans. But in fact, evolutionary systems, i.e. systems having some kind of mutation and some kind of selection, can evolve very complex systems, none of them as complex as a human, but at least there is no reason why it shouldnt be possible to create arbitrary complex systems. That is, maybe live didnt evolve through evolution, but at least in theory it could have evolved that way, and since evolution of life forms can be seen on some islands, where animals have been separated, that is, since evolution of live takes place right now at least in some places, it is plausible to consider that it took place before. Same here: find an evidence that evolutionary systems have an upper bound of complexity, and science will accept it and adapt its theories – but when you dont have evidence, well, there is no reason for believing that evolution cannot evolve arbitrarily complex systems. Still, it boiles down to one simple question: If you are not a scientist, why do you want to change the scientists point of view, rather than considering science as a tool which has brought us a lot of benefits, even though it cannot always be right?

Finally, a nice example is the discussion whether humans have a free will or are deterministic. For some people, its the question of whether a human is just a machine. For me, this is a problem that can be solved by phrasing it out. The first question we have to ask is what we mean by a „free will“. Basically, it means that a human can behave however he wants. If he wants to be good, he can be good. If he wants to be bad, he can be bad. Of course, looking at several mental diseases, this concept has some flaws, but of course, we only talk about „healthy“ people in the sense that they act as they are supposed to act. Another thing that is often made wrong is that people dont distinguish between determinism and predictability. Just because something is deterministic, it needs not to be predictable, the calculations for a prediction could be too complex to do them faster than the system itself to give just one example. Some interpretation I have heard was that parts of a human are „outside“ the universe we expierience, and thus do not underly the universal laws, thus have a free will. The question then is, do these parts „outside“ the universe underly any laws? If not, they are just random, that is, humans have an integrated randomizer, and thus, they act randomly, even though maybe not uniquely distributed, but still randomly. In that case, they wouldnt have anything which I would consider a „free will“ – acting randomly has nothing to do with freedom. If these parts outside the universe underly laws, then they are deterministic, and thus, humans would be deterministic – just because something doesnt underly the universal laws we expierience, this doenst mean that it cannot be deterministic. And if humans have no parts outside the universe we expierience, and therefore underlying the universal laws, the question boils down to whether the universe is determined – which is the same as asking if our universe underlies laws and has no random components. If it has random components which influence our decisions, then we would act randomly, like in the above case. If not, we are deterministic. The reader may wonder why I am telling that this problem can be solved by phrasing it out while not giving a real solution. Well, this time, the solution lies in the question itself. The question makes an implicit statement about a coherence between indeterminism and free will. The flaw lies in what we want that „free will“ to be: We dont want it to be something that is restricted by laws we can understand, we dont want it to be something that is restricted by laws we dont understand, but we also dont want it to be random. But there is nothing else. Either something is restricted by laws, or it is not restricted by laws, but then it is random. In fact, free will has nothing to do with that. What I think people really mean by free will is that a human as such can make a decision of changing his behaviour according to his inputs, but he is not stateless, that is, he does not only depend on what he receives, but also on what happens inside his mind.

So. I hope you saw that sometimes it is good to phrase some things out in detail. It often boils down to things that are much less problematic to solve. Not always, of course. But the remaining problems are at least real problems, rather than just problems of phrasing.