22. Januar 2008

Java (alleine) macht dumm

...sagt Professor Robert Dewar: Who Killed the Software Engineer?

Universitäten, die nur auf Studentenzahlen schielen, statt auf fundierte Ausbildung, tendieren nach seiner Aussage dazu, die schwierigen Themen wegzulassen. Man würde eher Java/C# unterrichten und kein C/C++. Eher Grafikeffekte, als Algorithmen, eher Point and Click, als Commandline und Batchscripte.

Anscheinend gibt es inzwischen diplomierte Softwareingenieure, die nicht wissen was "Stack Overflow" bedeutet und was man dagegen tut. Wie wärs mit Studenten, die nicht wissen was ein Compiler macht oder sogar dass es einen gibt. Oder dass Algorithmen viel schneller sind, wenn sie in den Prozessorcache passen. Oder wie HTTP funktioniert und dass da TCP/IP und sogar Ethernet-Frames darunter und außenherum sind.

Und wenn das wirklich so ist, dann hat er Recht. Nur die schönen Seiten des Programmierens zu lehren ist sicher falsch. Wenn die Studenten nur highlevel lernen werden sie anständige Java-Coder oder Projektleiter, aber nie brilliante Softwareingenieure, die jedes Problem selbständig lösen, Projekte durchführen und nicht nur daran arbeiten.

Manche Leute meinen man muss die Matrix nicht kennen, um unsere Welt zu verstehen. Aber wenn was Komisches passiert ist es ziemlich nützlich zu wissen wie die Matrix funktioniert. Es gibt eben nicht nur Blue Pill, noch nicht.

_happy_coding()

18. Januar 2008

Just commented Cory Ondrejkas blog

http://ondrejka.blogspot.com/2008/01/javascriptreplacejava-c.html#c9010177294114126155

I admire the Netscape people for choosing a prototype language. It just took 10 years for the world to learn how to use it correctly. Today I really wonder why we (me included) programmed such a crappy JS style for years, when everything was already there, just because we did not understand it. On the other hand, despite its beauty, it may be a mistake to design a language such that the world needs an eon to grok it. Slow interpreters mean only that no one put a billion $ into it, as they did for Java and C#. JS could be JITed as well.

I am a fan of PHP and I hate it. I am using PHP for large projects an I love its deterministic nature. Even on 100 web servers with memcache and mysql I understand completely what happens. A Java app server of this size produces more surprises.

The funny thing with Smarty templates is that everyone uses them, although they do not need them. Yes, you need a template engine. Separation of code and design, etc., but PHP IS A TEMPLATE ENGINE. Before you start learning Smarty-script, give this a try: http://phpsavant.com/docs/. Savant engine is not another template engine. It is just a wrapper for PHP's native template engine. You can easily build your own engine in a few hours. The Savant site explains it well. Smarty is only useful in the rare case that you do not trust your template writers. If you are the template writer, then you better use PHP as template script rather than learn another, that will be "compiled" into PHP. Speed: Smarty caching ends where PHP starts. That said, my C++ programmer heart cries comparing PHP/Apache/Linux to a C++ server. PHP speed ends where Java/C# start and they both end where C/C++ start.

Algorithms are Fun

Die meiste Zeit beim Programmieren ist eher normal (langweilig?): Datenstrukturen initialisieren, Objekte new-en und verknüpfen, Variablen zuweisen, Sortieren, Einlesen, Ausgeben, Logging, Konfiguration, Fehlerbehandlung, Datenbankzugriff, Userinterface Code und immer wieder Wrapper, einfache Schleifen, Daten umformatieren, Testen, Testcode schreiben, usw.

Aber manchmal, ja manchmal schreibt man einen echten Algorithmus. Ein Stück Code dass eine schwierige, nicht so offensichtliche Sache macht, auf coole Arte, effizient und mit möglichst wenig Code. Das sind dann die Sternstunden im Programmiererinnenleben.

_happy_coding()

12. Januar 2008

MMORPG, MOG, MMOG?

Heissen virtuelle Game-Welten eigentlich MMORPG, MMOG, oder MOG? Traditionell sind es MMORPG "Massive(ly) Multiplayer Online Role Playing Game". Aber die 6 Buchstaben sind ziemlich unhandlich. Deshalb geht der Trend zu den beiden kürzeren Bezeichnungen.

Es immer mehr virtuelle Game-Welten in dem der Rollenspiel-Charakter schwach ist. RP im engeren Sinn ist aus dem Mainstream verschwunden. RP heisst heute Leveln, Questen, Raiden. Die Buchstaben RP verschwinden langsam aus dem Sprachgebrauch. Bleibt MMOG. Doppel M: "Massive Multiplayer". Gibt es auch Multiplayer-Games ohne Massive? Antwort: Ja, aber immer weniger. Viele Einzelspieler-Games hatten auch einen Online Modus in dem man mit anderen spielen konnte, meistens kleine Gruppen. Also Online=Multiuser-Online, weil Singleuser-Online wenig sinnvoll ist. Wenn Online schon multiuser impliziert kann man ein M weglassen und das einzige M in "MOG" bezeichnet den Massive-Character.

Ich vermute sogar, dass später sogar das "Online" in Gefahr gerät, weil 1. M immer O impliziert und 2. die meisten Spiele Online sein werden, manche zusätzlich mit einem Offline-Modus.

Es gibt sogar Leute, die behaupten, dass Singleplayer Games ein temporärer Irrweg waren, der nur durch fehlende Onlineverbindung enstanden ist. Im RL sind Games fast immer Multiplayer, von Solitaire mal abgesehen. Aber von Brettspiel bis Sportspiel gibt es im RL immer mehrere Spieler. Vielleicht sind Computerspiele bald wieder Synonyme für MMOG, weil immer online und selbstverständlich mit mehrern Spielern. Dann heisst es einfach nur noch "Spiel" oder "Welt". Spiele im RL sind dann ein bisschen retro und heissen "Brettspiel" so wie es "Pen and Paper" RPGs schon jetzt ergangen ist.

_happy_coding()