Montag, 30. März 2009

Die Zukunft der Programmierung

Ich habe mir in letzter Zeit wieder einige Gedanken zur Zukunft der Programmierung gemacht.
Dabei spielten Java, Mono und auch .Net eine große Rolle.
Auch andere Programmiersprachen habe ich in meinen Gedanken mit eingezogen.

Ich bin zu einem interessanten Ergebnis gekommen.
Wie es im Moment stark zu bemerken ist, spielen Java, Mono und .Net bereits große Rollen.
Auch wenn diese 3 Großen unterschiedliche Ideen verfolgen, so ist ihre Grundidee fast gleich.

Alle 3 Sprachen nutzen eine Laufzeitumgebung und eine Ziwschensprache/Bytecode für diese Laufzeitumgebung.
Somit sind sie theoretisch sowohl Architektur als auch Plattform unabhängig.

Nehmen wir mal Java als Beispiel.
Java gibt es auf fast allen Systemen vorinstalliert.
Egal ob Windows, Linux oder Unix.
Es benötigt zwar eine an die Plattform sowie an die Architektur angepastet Version des JDK sowie der JRE aber insgesamt betrachtet, ist der Bytecode komplett unabhängig von der Plattform und der Architektur.
Dieser wird später auch per JIT Compiler in nativen Code umgewandelt was dem ganzen noch einen dicken Performance Sprung gibt.
Java ist nicht mehr so langsam wie früher :p

Auch Monto mit der CIL(Common Intermediat Language) verhält sich wie .Net.
Der Vorteil von Mono ist wie bei .Net die Kapselung von Systemfunktionen aus C ind C# :)
Mono an sich macht verdammt viel Spaß.
Leider hat es den kleinen Nachteil, dass es nicht ganz zu .Net kompartibel ist.
Liegt aber nicht direkt am C# Code sondern an den Abhängigkeiten unter Mono.
Dort gibt es, zu mindestens bei mir und Debian, kein Win.Forms.
Hier wird auf ein C# Binding für GTK Zurückgegriefen.
Dies nennt sich dann auch GTK#.

Aber nun der Vergleich mit nativen Sprachen wie C++.
Diese haben natürlich den Vorteil so oder so schneller zu sein, da diese natürlich nativ sind.
Aber einen großen Nachteil habe ich mit C++ immer noch.
Anpassungen an andere Plattformen sind keine schöne Sache.
Gutes Beispiel ist die Einleseroutine bei gINI.
Hier klappt getline unter Linux ohne Probleme perfekt.
Unter Windows, mit MinGW sei dazu gesagt, musste ich ein Workaround bauen.
Dies ist natürlich unschön.
Desweiteren muss der Code für jede Architektur sowie jede Plattform erneut übersetzt werden.
Dank Bytecode oder Zwischensprache ist dies kein Thema für Java und co.

Das Fazit ist aber immer noch einfach und Kurz.
Java, Mono und .Net sparen viel Zeit bei Anpassungen, wärend C++ und co. doch mehr Arbeit und Sicherheitsprobleme haben.
Trotzdem muss man für sich entscheiden was man gerne macht :)

Keine Kommentare: