Zu Delphi und "Experten"
Dieser Beitrag entstand vor einiger Zeit, als wieder einmal selbsternannte Experten versuchten, die von uns verwendete Entwicklungsplattform Delphi schlecht zu reden.
Das nervt uns inzwischen mächtig, denn wir beobachten, dass diese selbsternannten Experten mit unqualifizierten Beiträgen bei Anwendern für unnötige Verunsicherung sorgen, ohne jemals überhaupt eine richtige Anwendung entwickelt zu haben, zumindest keine, die sich an hunderten von Arbeitsplätzen in völlig heterogenen Umgebungen im 7/24 Betrieb bewähren muss.
Delphi ist ein Entwicklungssystem, das historisch aus der Erstellung reiner Windows Anwendungen kam, seit langem aber auch die Entwicklung mobiler Apps und Anwendungen für die Apple und Linux Welt ermöglicht. Die Programmiersprache von Delphi ist Object Pascal, das sich natürlich wie alle Sprachen weiterentwickelt und anderen modernen Sprachen ebenbürtig ist und alle Features moderner Sprachen beherrscht. Delphi wird permanent weiterentwickelt und wir setzen immer die neuste Version ein.
Die EMIL Plattform ist 100% in Delphi geschrieben. Also in der Sprache Delphi, nicht in dem antiken Delphi, wie das Bild möglicherweise suggeriert ...
Diskussionen um Programmiersprachen werden leider oft unsachlich, ebenso wie die Debatte um Automarken oder der Disput, ob Apple oder Android Smartphones die besseren sind. Was bedeutet denn überhaupt besser?
ITC nimmt bei dieser Frage grundsätzlich die Perspektive der potenziellen Anwender ein. Nach unserer Erfahrung zählen für Anwender diese Eigenschaften einer Anwendung:
- Zuverlässigkeit
- Intuitive Bedienung
- Integration in die Arbeitsumgebung
- Guter Service
- Schnittstellen
- Performance
All dies bieten wir durch die Wahl des passenden Entwicklungswerkzeugs. Es gibt zudem nur vereinzelte Anwender, die mal aus Interesse danach fragen, welche Sprache oder Technik hinter einem System steckt. Denn anders als bei Autos und Mobilgeräten ist prangt diese auch nicht als prestigeträchtiges Logo auf dem System sondern ist im Idealfall völlig unsichtbar.
Natürlich spielt die Programmiersprache eine Rolle. Erst leistungsfähige Programmiersprachen ermöglichen den konsequenten Einsatz moderner, objektorientierter Konzepte und Sprachkonstrukte. Das aber unterstützen heute eigentlich alle modernen Sprachen, Object-Pascal (Delphi) steht da in Nichts nach, hat vielen Sprachen sogar einiges voraus. Erfahrungsgemäß kennen viele der Experten nicht einmal Sprachkonzepte wie Generics, Lambda Funktionen und abstrakte Methoden und Klassen, mit denen wir konsequent arbeiten, um schlanken und leistungsfähigen Code zu entwickeln, der auch nach Jahrzehnten noch verständlich und wartbar ist.
Erheblich wichtiger als marginale Unterschiede zwischen modernen Programmiersprachen sind aber tragfähige Konzepte und die Entwickler-Skills. Ein guter Tischler kann auch mit einfachem Werkzeug brauchbare Möbel bauen. Umgekehrt aber kann selbst das beste Werkzeug der Welt einen unfähigen Tischler nicht dazu befähigen, etwas Gutes herzustellen. Genau das selbe gilt auch in der Softwareentwicklung.
Besonders diesen Experten fallen die Ökosysteme von Java, Python und auch Node/JS schnell auf die Füße, da man schon bei kleineren Projekten keinerlei Überblick mehr hat, welche Kaskaden von Abhängigkeiten existieren und welche Bibliotheken unbemerkt eingebunden werden. Die böse Sicherheitslücke in Log4J (siehe BSI) machte so sehr viele Java Systeme angreifbar, ohne dass vielen Entwicklern bewusst war, dass diese Bibliothek überhaupt eingebunden wurde. Natürlich hat das unsere Systeme nicht betroffen, da wir einen sehr genauen Überblick über die eingesetzten Bibliotheken haben und auch vieles mit genau den Features selbst schreiben, die wir brauchen.
ITC hat in über 20 Jahren in der Industrie und im Medizinbereich eine Vielzahl unprofessioneller Bastel-Anwendungen durch professionelle Entwicklungen abgelöst, da den Bastellösungen jedwedes tragfähige Konzept fehlte. Besonders im Bereich der Datenbanken standen und stehen uns immer wieder die Haare zu Berge. Man sieht selbst renommierte Hersteller die meinen, dass alleine der Einsatz eines professionellen Datenbanksystems wie Oracle ausreicht, im Design der Datenbank aber nicht einmal elementarste Datenbank-Konzepte wie Fremdschlüssel-Constraints eingesetzt werden - so z.B. ein sehr großer Praxissystem-Hersteller (dessen Namen ich besser nicht nenne, da dieser uns in einem anderen Kontext bereits mit einer Klage gedroht hat).
Das Buzz-Word Web-Anwendung kennen wir auch aus den Mündern solcher Experten, die oft nur diese Technologie kennen und meinen, dass zum einen alles damit realisierbar ist und einfache Pflegbarkeit und eine leichte Zusammenführbarkeit von Daten nur damit erreichbar sei, während Aspekte wie DS-GVO Anforderungen, Integration und Schnittstellen sowie Einrichtungs-Richtlinien bei potenziellen Anwendern einfach unter den Tisch gekehrt werden.
Wir entwickeln sowohl komplexe Web-Anwendungen, native mobile Apps und natürlich PC Anwendungen mit verschiedenen Sprachen und Frameworks und kennen daher Java, PHP, Javascript, C++, C#, Delphi und die Palette der SQL Dialekte von Oracle über SQL-Server bis MariaDB und einige Web-Frameworks sehr gut. Natürlich nutzen wir nicht immer Delphi und nicht immer Firebird, sondern das jeweils passende Tool für die Aufgabe.
Das Team aus Delphi und Firebird-Datenbank hat sich in über 20 Jahren jedoch als das Ideal für mittelgroße dreischichtige Anwendungen im Windows dominierten Desktop-Umfeld herausgestellt. Unsere Kunden und deren Zufriedenheit geben uns recht. Und viele Funktionen unserer Systeme lassen sich in anderen Sprachen nicht so elegant, performant und passend umsetzen. Die Tatsache, dass es mehr JAVA als Delphi Entwickler gibt, macht JAVA nicht professioneller und auch nicht besser. Um auf unseren Tischler zurück zu kommen: Ein guter Tischler kann mit jedem Werkzeug arbeiten, ebenso kann ein guter Softwareentwickler mit allen modernen Sprachen entwickeln bzw. diese rasch erlernen. Die grundlegenden Konzepte sind schließlich nahezu identisch. Hinzu kommt, dass sehr viel Funktionalität einer Anwendung über Betriebssystemfunktionen oder über Schnittstellen realisiert wird, die mit der Programmiersprache selbst nichts zu tun haben.
However: Wenn wir heute ganz von vorne beginnen würden, würden wir möglicherweise nicht Delphi wählen, da die Wartung unserer Lizenzen inzwischen sehr teuer geworden ist und es heute tolle Open Source Alternativen mit preiswerten Entwicklungsumgebungen gibt. Möglicherweise wäre Kotlin die Sprache der Wahl und wir würden vielleicht eine dokumentorientierte Datenbank verwenden. Es ergibt aber absolut keinen Sinn, vorhandene und über viele Jahre erprobte Konzepte und Bibliotheken aus vielen hunderttausend Zeilen Code ohne Not und nur der Sprache wegen neu zu entwickeln. Denn technisch ist Delphi 12 absolut auf der Höhe der Zeit und unsere Konzepte sind tragfähig und mit sehr viel Weitblick erstellt . Und darauf kommt es an.
Michael Schumann