C++ ist die Programmiersprache meiner Wahl, wenn es darum geht, effizient arbeitende Software beispielsweise für grafische Visualisierung zu erstellen. Für C++ gibt es für sehr viele Systeme und Plattformen sehr stark optimierte und ausgereifte Compiler, die stabilen und leistungsfähigen Binärcode generieren. Im Grafikbereich ist C++ die Programmiersprache der ersten Wahl und es existieren zahlreiche Bibliotheken dafür, die Plattformabstraktionen ermöglichen.
An Objective C führt bei der Entwicklung von iOS Anwendungen für das iPhone und iPad kein Weg vorbei. Leider ist es ausschließlich auf Apple-Plattformen verbreitet, was meiner Philosophie der plattformunabhängigen Softwareentwicklung widerspricht. Aus diesem Grunde programmiere ich normalerweise nur die betriebssystemspezifischen Elemente in Objective C und halte alle andere Funktionalitäten mittels C++ unabhängig von System und Plattform. Auf die Art und Weise kann der Code später auch für andere Systeme und Plattformen weiterverwendet werden.
C# setze ich bei der Entwicklung von Unity 3D Anwendungen ein, um beispielsweise ein individuelles Verhalten an 3D Objekte zu verknüpfen, Nutzereingaben zu verarbeiten oder Menüs zu individualisieren. C# besitzt sehr viele Gemeinsamkeiten zu Java, aber auch C.
Java wird häufig bei der Backend Entwicklung eingesetzt, aber unter Android. Android Apps setzen voraus, dass diese in Android programmiert werden. Leider ist Java trotz der plattformunabhängigen Konzeption nicht auf allen Systemen verfügbar, da Java eine entsprechende Virtual Machine auf dem jeweiligen System voraussetzt, damit Code ausgeführt werden kann.
Obwohl Java einige herausragende Stärken besitzt, die es unter anderem dem Programmierer erleichtern, typische Fehlerquellen zu vermeiden und daher für den Entwickler in vielerlei Hinsicht komfortabel einsetzbar ist, hat es sich im Bereich der Grafikprogrammierung nicht durchgesetzt.
Unter anderem ist beispielsweise auf der iOS-Plattform keine Java VM verfügbar, so dass es nicht möglich ist, in Java Apps für iOS zu programmieren.
Um Code zu entwickeln, der auf unterschiedlichen Smartphone-Systemen einsetzbar ist, habe ich den Weg eingeschlagen, systemübergreifende Komponenten in C++ zu entwickeln und diese für Android mittels JNI einzubinden. Auf diese Weise bewahrt man die hohe Leistungsfähigkeit des kompilierten C++ Codes und bindet diesen problemlos in Java ein. Damit kann man elegant das Problem umgehen, Code in einer zweiten Programmiersprache duplizieren zu müssen.
Nichtdestotrotz programmiere ich Java-Komponenten wie beispielsweise die für die Android API notwendigen Systemeinbindungen.
PHP ist meine erste Wahl bei der raschen Entwicklung von serverseitigen Skripten. PHP hat sich im Laufe der Jahre von der einfachen Skriptsprache zu einer professionellen Programmiersprache weiterentwickelt, mit der inzwischen auch eleganter objektorientierter Code programmiert werden kann, um Komplexität zu abstrahieren. Für PHP existieren in der Webentwicklung zahlreiche vorgefertigte Bibliotheken, auf die zurückgegriffen werden kann ohne das Rad ein zweites Mal erfinden zu müssen. Jedoch muss der PHP-Entwickler bei der serverseitigen Softwareentwicklung (wie natürlich auch bei anderen serverseitigen Programmiersprachen!) gut geschult sein, was mögliche potentielle Sicherheitslücken betrifft, da an der Client-Server-Schnittstelle naturgemäß häufig Sicherheitsschwachpunkten auftreten.
HTML5 ist keine Programmiersprachen im herkömmlichen Sinne, sondern eine Markup Language ("Computersprache zur Auszeichnung und Vernetzung von Texten, Dokumenten und Inhalten"). Mit CSS wird das Design und die visuelle Gestaltung der Seite beschrieben ohne dass dieses direkt an den HTML-Code gebunden wird. Die visuellen Anforderungen haben sich in den letzten Jahren stark geändert. Während früher ausschließlich Desktop PCs verwendet wurden, um Webseiten aufzurufen, steigen die Aufrufzahl durch mobile Geräte wie Smartphones und Tablets deutlich an. In Zukunft werden möglicherweise Bedienzugriffe über Fernseher bzw. SetTop-Boxen zunehmen. Selbst über VR-Brillen sollen Webseiten sinnvoll dargestellt werden und ergonomisch bedienbar sein.
Der Einsatz von größeren Weichen wie separaten Webseiten für Desktop- und Mobildarstellung wird hier als sehr unschön angesehen. Anstatt dessen haben sich so genannte "Responsive Webseiten" etabliert. Dabei handelt es sich um Mechanismen für eine dynamische Anpassung der Webseite ans aufrufende Gerät bzw. die gewählte Darstellungsgröße auf dem Bildschirm oder innerhalb eines Fensters.
Auch wenn ich auf diesen Bereich nicht explizit spezialisiert bin, decke ich als Grafikprogrammierer diese Segmente natürlich mit ab.
JavaScript wird für die Front-End-Entwicklung im Webbrowser eingesetzt. Nach dem Laden einer Webseite kann innerhalb des Webbrowser lokal client-seitig Programmcode ausgeführt werden, um bspw. Nutzereingaben einzulesen und darauf die lokal dargestellte Webseite zu beeinflussen.
Ich setze JavaScript je nach Bedarf innerhalb von dynamischen Webseiten für speziell benötigte Funktionalitäten ein, die mit reinen HTML-Mitteln nicht durchführbar sind. Um komplexen JavaScript-Code handhabbarer zu machen, ist oftmals der Einsatz eines entsprechenden Frameworks ratsam.
In JavaScript bin ich vor allem auf die Implementation komplexerer grafischer Bedienelemente spezialisiert.