Praktisches & Grundsätzliches zur Informatik


Zur Wahl einer passenden Programmiersprache

Wer heute (2013) eine unternehmenskritische Anwendung zu implementieren hat, die
  • weder virtuelle Maschine
  • noch Gerätetreiber,
sein wird, macht einen schweren Fehler, wenn er für die Teile der Anwendung, die nicht im Web Client, d.h. im Browser arbeiten, irgend eine andere Programmiersprache verwendet als


Java oder C#


Begründung:

  • Jede Anwendung besteht zu etwa 70% aus Hilfsfunktionen (sog. Infrastruktur).
    • Wer Java oder C# wählt, bekommt etwa 90% davon geschenkt,
    • wohingegen man mit jeder anderen Programmiersprache maximal 15% davon geschenkt bekommt.

    Konsequenz daraus: Java oder C# zu wählen
    • reduziert den sonst notwendigen Programmieraufwand auf weniger als 40% (!)
    • und verringert stark die Gefahr fehlerhafter Implementierung.

    Das liegt einfach daran, dass nur in Java und C# Standard-Bibliotheken zur Verfügung stehen,
    die funktional umfassend und von bester Qualität sind. Alle anderen Programmiersprachen stellen nur ganz rudimentäre Standard-Bibliotheken zur Verfügung.

    Nochmals also: Möglichst wenig Code selbst schreiben zu müssen, spart hohe Kosten und ist wichtig, weil nur Standardcode i.A. keine Fehler enthalten wird.
  • In Java oder C# implementierte Anwendungen sind deutlich stabiler als alle anderen, da nur diese beiden Programmiersprachen von Hand geschriebenen Code daran hindern, irrtümlich auf Speicher­stellen zuzugreifen, die ihm verboten sind.
  • Nur wer Java oder C# verwendet, bekommt bei Absturz der Anwendung die komplette Aufruf-Hierarchie gemeldet (so dass die Zeile im Code, die zum Absturz geführt hat, sofort bekannt ist). Dies kann dem Entwickler sehr viel Arbeit ersparen und verhindert zudem, dass die Ursache gewisser Fehler lange nicht gefunden wird.
  • Für Java steht eine direkt über sein Collection API ansprechbare, sehr performante Open Source, file-basierte NoSQL Datenbanklösung zur Verfügung: MapDB, siehe auch die Idee dazu.
  • Most popular Java EE Servers
  • C# auf Unix erfordert .NET Core: das nicht an MS Windows gebundene, optimierte .NET



Wer heute eine erste Programmiersprache erlernen möchte,
für den ist mit Sicherheit

C# die beste Wahl


Begründung:

  • Nur Java und C# berücksichtigen alles, was man bis heute über Entwurf und wünschenswerte Eigenschaften universell einsatzbarer Programmiersprachen gelernt hat.
  • Nicht zuletzt deswegen sind diese beiden Sprachen einander auch sehr ähnlich (so dass, wer eine gelernt hat, sicher auch die andere wird nutzen können).
  • Deutliche Unterschiede zwischen Java und C# finden sich nur dort, wo es darum geht, von Hand geschriebenen Code mit automatisch erstelltem Code zu integrieren. Dieses Feature aber werden nur Chefprogrammierer wirklich im Detail zu verstehen haben.
  • Einziger Nachteil von C# ist, dass man sich damit an Microsofts .NET bindet. Das aber spielt keine Rolle für alle, die nur Programmieren lernen wollen. Für sie ist C# die eindeutig bessere Wahl, da Microsofts kostenlos erhältliche interaktive Programmierumgebung — MS Visual Studio Express — eher einfacher zu handhaben ist als das weit allgemeinere Eclipse.
  • Wer Android Apps schreiben oder sich an kein bestimmtes Betriebssystem binden möchte, wird an Java nicht vorbeikommen.

Wer über C# hinaus neue Wege sucht, effizienter zu programmieren (z.B. ad-hoc-Werkzeuge, die man so hin und wieder braucht, die eigene Arbeit zu beschleunigen), dem empfehle ich, sich mit F# auseinander­zusetzen. [was] und [wie] könnten gute Startpunkte hierfür sein.

Zur Programmierung web-basierter Anwendungen verallgemeinert Microsoft JavaScript zu TypeScript. Google versucht Ähnliches mit dem wohl etwas mächtigeren Dart. Beide werden per Preprozessor nach JavaScript abgebildet (MS JavaScript = WinJS plus GUI Elemente).
Wer noch nie mit JavaScript zu tun hatte, aber seine Möglichkeiten kennenlernen möchte, dem empfehle ich die Lektüre des Buches Express.js.

Mit einer der zahlreichen älteren Skriptsprachen (VBScript vielleicht ausgenommen) sollte man sich besser gar nicht mehr befassen — sie alle sind Sackgassen.

Was Microsofts neueste (.NET basierte) Skriptsprache betrifft — die Powershell — so hatte ich bisher stets den Eindruck, es sei besser, stattdessen gleich C# zu verwenden. Wer anders denkt: Als beste kostenlos nutzbare Entwicklungsumgebung dazu gilt Idera Powershell Plus. Zweitbeste sei, schon mit einigem Abstand, PowerGUI.

Note: Der Wert von VBScript und Powerscript wäre deutlich höher, wenn Dokumentation der Schnitt­stellen, die man damit typischerweise aufzurufen wünscht (die COM-Schnittstellen vor allem auch von Micro­softs eigener Software) schnell zu finden wäre — sie ist es nicht ...


Wie extrem wichtig die Wahl einer zum Vorhaben passenden Programmiersprache oder Notation sein kann, zeigt die Entstehungsgeschichte von AngularJS: 17.000 Zeilen Javascript zur Implementierung von Google Feedback konnten der Angular Makros wegen ersetzt werden durch nur 1.500 (knapp 9% also).

Wer je C++ programmiert hat, wird wissen, wie extrem weit sich Code über Makros reduzieren und besser wartbar machen lässt. Steht kein geeigneter Preprozessor zur Verfügung, ist man gut be­raten, sich selbst einen zu schreiben. Der wenige Aufwand dafür macht sich stets sehr schnell bezahlt.

Für Java nutze man hierfür z.B. Lombok. Seine @Data Directive ist überzeugendes Beispiel dafür, was Lombok an handgeschriebenen Code einsparen kann und um wie viel verständlicher (für Dritte) — und damit auch weniger fehleranfällig — der von Hand zu schreibende Code dadurch wird.

Den Code zum Zugriff auf relationale DBMS-Systeme drastisch zu reduzieren, dient JPA.


Lese auch:


Wer große Anwendungen in Java schreiben möchte, hat es i.A. nicht leicht, schnell zu sehen, welches der vielen verfügbaren GUI Frameworks für sein Projekt denn wohl das günstigste sein könnte. Ihm mag es dann helfen, zu erfahren, wie sich Vaadin mit bis zu 8 anderen GUI Frameworks vergleicht. Über Spring MVC — das in 2012 (mit 30%) vorwiegend genutzte GUI Framework — sagt jene Seite aber leider gar nichts.

Der Trend geht eindeutig dahin, GUIs nur noch in HTML5 + CSS + JavaScript zu implementieren.

Wer HTML nutzt, sollte HTML5 nutzen (denn diese Version ist allen älteren vorzuziehen und flexibler als XHTML). Wer Zweifel hat, wie weit gängige Browser HTML5 unterstützen, frage HTML5 Test.
Wissenswertes zu "Wahl Programmiersprache" zusammengestellt durch Gebhard Greiter.
tags: stw2899P: Programmiersprachengegreit