KI und die Zukunft der Systemprogrammierung

C++
Kris van Rens wirft einen Blick auf die Zukunft der Systementwicklung und darauf, dass die Zufriedenheit der Entwickler ein wichtiger Aspekt der Softwareentwicklung ist

Künstliche Intelligenz im Allgemeinen und große Sprachmodelle (LLMs) im Besonderen verändern unbestreitbar die Art und Weise, wie wir arbeiten und Code schreiben. Insbesondere beim Lernen, Erklären, Refactoring, Dokumentieren und Überprüfen von Code erweisen sie sich als äußerst nützlich.

Für mich ist die Generierung von produktionsreifem Code mit einem LLM im Chat-Stil jedoch immer noch eine gemischte Sache. Die sorgfältig ausgearbeitete Eingabeaufforderung für eine komplexe, eingeschränkte Aufgabe übersteigt den resultierenden Code oft um Größenordnungen, so dass ich die Produktivitätsgewinne in Frage stelle. Manchmal ertappe ich mich dabei, wie ich die Eingabeaufforderung iterativ bekämpfe, um den richtigen Code für mich zu generieren, nur um dann festzustellen, dass sie zufällig vergessen hat, eine meiner früheren Anforderungen zu implementieren. Manchmal erzeugen die LLMs auch Code mit ungültigen Konstrukten: Sie halluzinieren Antworten, und das immer mit großer Sicherheit. Hinzu kommt, dass die LLMs so arbeiten, dass die Antworten jedes Mal, wenn Sie eine ähnliche Abfrage eingeben, völlig anders ausfallen können oder zumindest stark von der jeweiligen Eingabeaufforderung abhängen.

OpenAI-Mitbegründer Andrej Karpathy hat es gut ausgedrückt: „In gewisser Weise ist alles, was LLMs tun, Halluzinationen. Sie sind Traummaschinen.“ Dieses scheinbar ’schwarzmagische‘ Verhalten von LLMs ist mit meinem inneren technikgetriebenen Drang, einem deterministischen Prozess zu folgen, nicht ganz vereinbar. Vielleicht liegt es an meiner völligen Inkompetenz in Sachen Sofortengineering, aber aus meiner Sicht müssen wir trotz der Macht der generativen KI, die uns zur Verfügung steht, immer noch absolut verstehen, was wir tun, anstatt blind auf die Korrektheit des Codes zu vertrauen, der von diesen Traummaschinen erzeugt wurde. Das seltsame Gefühl und die Idiosynkrasie von LLMs werden in Zukunft wahrscheinlich nachlassen, aber ich möchte den Code, den ich produziere und für den ich verantwortlich bin, immer noch wirklich verstehen.

Wahrscheinlich wird die KI in der zukünftigen Softwareentwicklung eine Abstraktionsverschiebung ermöglichen, die es uns erlaubt, auf einer höheren Abstraktionsebene zu entwerfen, als wir es heute oft tun. Das wiederum könnte dazu führen, dass wir weniger Code von Hand schreiben müssen. Ich kann jedoch nicht erkennen, wie die Verwendung von generiertem Code in der Produktion ohne die Korrektheitsgarantien strenger Tests und formaler Verifizierung gut funktionieren soll – das ist heute nicht die Realität.

''An aspect of software engineering where LLMs can make an overall positive difference is interpreting compiler feedback.''

Positiver Unterschied

Ein weiterer Anwendungsbereich von LLMs ist die Inline-Code-Vervollständigung in einem Editor/IDE. Selbst das ist für mich kein durchschlagender Erfolg. Mehr als einmal war ich davon überwältigt, dass die LLM-basierte Code-Vervollständigung eine mehrzeilige Lösung für das vorschlägt, was sie glaubt, dass ich eingeben wollte. Anstatt die Code-Idee direkt aus meiner Vorstellung zu implementieren, muss ich dann einen Klecks generierten Vorschlagscode lesen und mich fragen, was er tut und warum. Diese Vervollständigungen sind nicht einfach und bringen mich oft auf die schiefe Bahn. Ich habe in letzter Zeit mit der Embedded-Entwicklung für Mikrocontroller-Einheiten experimentiert und festgestellt, dass die LLM-basierte Vervollständigung vor allem bei Code in diesem Kontext nur Vermutungen anstellt und manchmal sogar nicht existierende GPIO-Pin-Nummern (General Purpose IO) erfindet, während sie arbeitet. Mir gefällt die Kombination von LLMs zur Codevervollständigung mit einem KI-Modell, das die Bewegungen des Editors beim Refactoring vorhersagt. Refactors sind oft Stapel von ähnlichen kleinen Operationen, die die Modelle gut vorhersagen können.

Ein Aspekt der Softwareentwicklung, bei dem LLMs einen positiven Beitrag leisten können, ist die Interpretation von Compiler-Feedback. C++ zum Beispiel ist berüchtigt für seine schwer lesbaren und oft sehr langen Compilerfehler. Die Einführung von Konzepten in C++20 sollte hier eine drastische Verbesserung bewirken, aber ich habe es nicht erlebt. Vielleicht ist das noch nicht ganz ausgereift, aber bis dahin sind wir gezwungen, uns mit komplexen und oft langen Fehlermeldungen (manchmal sogar Hunderte von Zeilen lang) zu beschäftigen. Aufgrund ihrer Fähigkeit, Compiler-Meldungen zu interpretieren oder zusammenzufassen, in Kombination mit ihren lehrreichen und generativen Funktionen, sind LLMs mit einem großen Kontextfenster geeignet, solche Rückmeldungen zu verarbeiten, was sie zu einem großartigen Begleitwerkzeug für C++-Entwickler macht. Es gibt einen enormen Bestand an bereits existierendem C++-Code und Dokumentation, aus dem man lernen kann, was eine gute Grundlage für das Training eines LLM ist.

Weitere Nachteile von C++ sind die ständig wachsende Komplexität der Sprache und die Tendenz des Compilers, Sie eher zu bekämpfen als Ihnen zu helfen. Ein effektiver Einsatz von LLMs zur Bekämpfung dieser Probleme könnte die Sprache kurzfristig retten. Die Entwicklung der C++-Sprache ist langsam, aber das Potenzial der Werkzeuge ist enorm. Angesichts der schieren Menge an bestehendem C++-Code, der heute verwendet wird, wird die Sprache auf Dauer Bestand haben, und jedes Tool, das Entwicklern bei der Arbeit mit ihr hilft, ist willkommen.

''To me, writing code is a highly creative, educational and enjoyable activity.''

Glück der Entwickler

Die Verwendung von LLMs zur Codegenerierung nimmt mir auch einen Teil der Freude am Programmieren. Für mich ist das Schreiben von Code eine höchst kreative, lehrreiche und unterhaltsame Tätigkeit, bei der ich meine Fähigkeiten verfeinern kann. Wenn ich die Arbeit von einer magischen Box erledigen lasse, wird diese Erfahrung bis zu einem gewissen Grad zunichte gemacht – selbst das manuelle Schreiben der langweiligen Teile und der Tests hat einen gewissen Bildungswert.

Ger Cloudt, ein Kollege aus dem Bereich der Softwareentwicklung, behauptet in seinem Werk über Softwarequalität, dass die organisatorische Qualität, zu der auch die Zufriedenheit der Entwickler gehört, nur die halbe Wahrheit ist. Ihm zufolge ist die organisatorische Qualität der Schlüssel, da sie die Qualität von Design, Code und Produkt ermöglicht. Sicherlich sind ein sauberer Code und eine saubere Architektur wichtig, aber ohne die richtigen Tools, die richtige Einstellung, die richtige Kultur, die richtige Ausbildung usw. wird der Entwicklungsprozess irgendwann zum Stillstand kommen.

LLMs helfen zweifellos bei den Werkzeugen und der Ausbildung, aber es gehört mehr zum Programmieren, als nur Code wie ein Roboter zu produzieren. Ein Teil des Handwerks der Softwareentwicklung ist – wie bei jedem Handwerk – die Freude und der Stolz auf Ihre Arbeit und die Ergebnisse, die Sie produzieren. Halten Sie mich für verrückt, aber ich empfinde eine große Befriedigung, wenn ich mit meinen eigenen Händen schön aussehenden Code erstellen kann.

Überdenken Sie den Zustand von Rust

C++
Ende 2022 schrieb Kris van Rens über den Aufstieg der Programmiersprache Rust, und zwar weitgehend in demselben Anwendungsbereich, der von C und C++ dominiert wird. Hat sich die Landschaft der traditionellen Systemprogrammierung wirklich verändert oder war das alles nur viel Lärm um nichts?

Laut dem Tiobe-Index steht Python mit 23 Prozent einsam an der Spitze der „beliebtesten Programmiersprachen“. Es folgen C++ (10 Prozent), Java (ebenfalls 10 Prozent) und C (9 Prozent). Der Index versucht, Erkenntnisse darüber zu gewinnen, wonach Menschen in Suchmaschinen suchen, wobei man davon ausgeht, dass dies ein Maß für die Popularität ist. Als relativ junge Sprache liegt Rust mit etwas mehr als 1 Prozent auf Platz 14.

In einer abschließenden Zusammenfassung schreibt der CEO von Tiobe, Paul Jansen, über Rust, dass „seine steile Lernkurve es leider nie zur Lingua Franca des gewöhnlichen Programmierers machen wird.“ Die steile Lernkurve einer Sprache als Hindernis auf dem Weg zu einem großen Erfolg zu nennen, erscheint mir etwas zweifelhaft, wenn man bedenkt, wie beliebt C++ in Kombination mit seiner Komplexität in großem Maßstab ist. Ich denke auch, dass die Überschätzung und Betonung der Lernkurve einer Sprache die Entwickler unterschätzt – viele Unternehmen, die Rust in der Produktion einsetzen, haben bereits gezeigt, dass es sehr leicht zu handhaben ist.

''When it comes to learning in general, I always tend to keep a positive attitude: people are much more capable than we might think.''

Einzigartiges Kunststück

In den letzten Jahren hat sich Rust als würdige Alternative im Bereich der produktionsgerechten Systemprogrammierung etabliert. Es demonstriert erfolgreich, wie eine Sprache gleichzeitig modern, performant und sicher sein kann. Sie wird kontinuierlich alle sechs Wochen veröffentlicht, so dass es immer etwas Neues gibt – zum Zeitpunkt der Erstellung dieses Artikels sind wir bei v1.85. Neue Funktionen kommen, wenn sie fertig sind, und die meisten Änderungen an der Sprache oder der Bibliothek erfolgen eher stückweise.

Da Rust immer ausgereifter wird, hat seine Beliebtheit und Akzeptanz im Laufe der Zeit allmählich zugenommen. Der Risikofaktor für die Einführung als Produktionssprache der Wahl hat nachgelassen, wie man aus den Berichten vieler Unternehmen schließen kann. Google hat Teile von Android in Rust umgeschrieben, um die Sicherheit zu verbessern, Microsoft schreibt zentrale Windows-Bibliotheken in Rust um und Amazon verwendet Rust schon seit langem in seiner AWS-Infrastruktur.

Eine weitere erwähnenswerte Besonderheit ist, dass Rust neben C Teil des Mainline-Linux-Kernels ist. Es muss gesagt werden, dass die Bemühungen, die Unterstützung für Rust auf alle Kernel-Subsysteme auszuweiten, nicht unumstritten sind, aber mit dem Segen von Linus Torvalds werden Fortschritte erzielt . Es wird sehr interessant sein zu sehen, wie sich dieses Experiment entwickeln wird.

''One of my main observations is that switching back from Rust to C++ makes me feel as if I’m being flung back into the dark ages of systems software development.''

Glückliche Entwickler

Ich habe in den letzten Jahren viel mit Rust und C++ gearbeitet. Eine meiner wichtigsten Beobachtungen ist, dass der Wechsel von Rust zu C++ mir das Gefühl gibt, in das dunkle Zeitalter der Systemsoftwareentwicklung zurückgeworfen zu werden. Das mag hart klingen, aber ehrlich gesagt fühlen sich die meisten Programmieraufgaben selbst bei der Verwendung der neuesten Version, C++23, mühsam und eingeschränkt an, verglichen mit dem, was in Rust möglich wäre. In den ersten Tagen habe ich manchmal die Möglichkeit vermisst, geschriebenen Code direkt mit dem ausgegebenen Maschinencode zu korrelieren, wie es in C++ möglich ist, aber das ist in 99 Prozent der Fälle absolut unnötig, und moderne Compiler sind bei der Optimierung ohnehin viel kompetenter als Menschen.

Was das Tooling-Ökosystem und die Integration angeht, ist Rust auf einer ganz anderen Ebene und viel mehr auf der Höhe der Zeit in der heutigen Web-Entwicklungswelt. Während ich mit der C++-Sprache und dem Compiler oft darum kämpfe, die Dinge richtig zu machen, scheinen mich die Strenge von Rust, das Typsystem, die vernünftigen Vorgaben und der Borrow Checker ganz natürlich zu den richtigen Designentscheidungen zu führen – contend vs. guide. Wenn mein Rust-Code erfolgreich gebaut wird und die Tests bestehen, kann ich das Projekt mit der Gewissheit verlassen, dass die Software während der Laufzeit nicht abstürzt und der Code nicht einfach von einem Kollegen gebrochen werden kann. Auch die Rust-Makrosysteme und das hochwertige Paket-Ökosystem mit Bibliotheken sowie Plugin-Tools für das Build-System machen einen großen Unterschied in der Produktivität.

Diese und andere Aspekte machen die Arbeit mit Rust äußerst angenehm. Sie machen Entwickler glücklich. Es gibt einen Grund, warum Rust in der Stack Overflow-Entwicklerumfrage nun schon neun Jahre in Folge die am meisten gewünschte Programmiersprache ist.

Dividenden

Rust ist sehr gut für den Produktionseinsatz geeignet, sogar in kritischen Systemen, die Sicherheitszertifizierungen erfordern (z.B. durch die Verwendung der Ferrocene Toolchain). Ich halte die Einführung von Rust für einen logischen Schritt, um die Vorteile der Speichersicherheit, der hohen Produktivität und der größeren Zufriedenheit der Entwickler schon heute zu nutzen, anstatt zu warten, bis die aktuellen Tools mit dem Rest der Welt Schritt halten. Hinzu kommt die Möglichkeit, durch das Erlernen einer neuen Programmiersprache ein besserer Entwickler in jeder anderen Programmiersprache zu werden.

Wenn es um das Lernen im Allgemeinen geht, neige ich immer dazu, eine positive Einstellung zu bewahren: Die Menschen sind viel fähiger, als wir vielleicht denken. Ja, die Lernkurve für Rust ist steiler als die der meisten anderen Sprachen, aber sie ist es wert und zahlt sich langfristig aus. Ich würde eine steile Lernkurve und vernünftige und strenge Sprachregeln und -garantien jederzeit einem Leben mit Software-Speichersicherheitsfehlern vorziehen.

„Berechnungen, die Sie in fünf Minuten auf einem Bierdeckel durchführen können sollten.“

Feinmechanik
Erik Manders und Marc Vermeulen übernehmen eine führende Rolle in der Schulung„Design Principles for Precision Engineering“ (DPPE). Das Duo tritt die Nachfolge von Huub Janssen an, der sieben Jahre lang das Gesicht der Schulung war. Teil zwei einer zweiteiligen Serie: Ausbildung, Trends und Ausbilder.

Wenn es um den Wissensaustausch in der Region Eindhoven geht, gilt die Schulung„Design Principles for Precision Engineering“ (DPPE) als eines der Kronjuwelen. Der Kurs hat seinen Ursprung in den 1980er Jahren im Philips Center for Manufacturing Technology (CFT), wo der renommierte Professor Wim van der Hoek mit seinen Konstruktionsprinzipien den Grundstein legte. Persönlichkeiten wie Rien Koster, Piet van Rens, Herman Soemers, Nick Rosielle, Dannis Brouwer und Hans Vermeulen bauten darauf auf.

Der aktuelle DPPE-Kurs, der von der Mechatronics Academy (MA) über das High Tech Institute angeboten wird, wird von mehreren Experten unterstützt. Die Leitfiguren unter ihnen haben die besondere Aufgabe, die Branchentrends im Auge zu behalten. „Unsere Leitfiguren signalisieren Trends, neue Themen und bewährte Praktiken in der Präzisionstechnologie“, sagt Adrian Rankers, ein für die DPPE-Schulung verantwortlicher Partner bei Mechatronics Academy.

Auf die Frage nach seinen ‚Fingerabdrücken‘ auf der DPPE-Ausbildung verweist Janssen auf seine große Inspiration, Wim van der Hoek. „Ich bin weder ein Dozent noch ein Professor mit langen Geschichten. Ich lege gerne einen Fall dar, arbeite gemeinsam daran und diskutiere ihn dann. Mit Van der Hoek saßen wir um ein großes weißes Blatt Papier herum und legten dann die Probleme auf den Tisch.“

Virtuelles Spiel

Janssen sagt, dass er als Leitfigur in der Lage war, die DPPE-Schulung zu gestalten. Er entschied sich dafür, den Teilnehmern mehr praktische Aufgaben zu geben und diese Fälle im Unterricht zu diskutieren. Rankers: „Gleich am ersten Morgen. Nachdem wir das Konzept des virtuellen Spiels erklärt haben, bitten wir die Teilnehmer, damit zu arbeiten.“ Janssen: „Jeder denkt nach unserer Erklärung: Ich habe es verstanden. Aber wenn sie die ersten Skizzen zu Papier bringen, stellt sich heraus, dass es nicht so einfach ist. Das ist der Punkt: Denn wenn sie die Berechnungen selbst durchführen, bleibt es wirklich hängen.“

Am letzten Tag der Schulung haben die Teilnehmer die Aufgabe, in Vierergruppen ein optisches Mikroskop zu entwerfen. Janssen: „Sie erhalten die Spezifikationen: den Positioniertisch mit einem Hub von mehreren Millimetern, eine bestimmte Auflösung, Stabilität innerhalb eines Zehntelmikrometers in einer Minute, usw. Alles, was in diesem Fall behandelt wird, haben wir in den Tagen zuvor besprochen: Plastizität, Reibung, thermisches Zentrum und mehr.“

Vermeulen: „Das Schöne daran ist, dass die Leute zusammenarbeiten müssen , sonst schaffen sie es nicht.“

Janssen: „Wir schieben vier Tische zusammen, und sie müssen wirklich alle vier als Team arbeiten. Dann sehen Sie, wie einige Leute nach superstabilem Zerodur oder elektromagnetischer Führung oder einem Luftlager greifen, und jemand anderes sagt: ‚Bedenken Sie auch den Kostenaspekt.'“

'With Wim van der Hoek, we would all sit around a large white sheet of paper, and then the problems would be laid on the table.''

Nicht einfach

Die Teilnehmer empfinden den Schwierigkeitsgrad sehr unterschiedlich, unabhängig von ihrem Bildungshintergrund, stellt Janssen fest: „Es hängt von ihren Vorkenntnissen ab, aber es ist für alle eine Herausforderung. Die Leute sind fast immer hochgebildet, aber wenn sie ein Design entwerfen müssen, wissen sie oft nicht, ob sie es von links oder von rechts angehen sollen.“

Er glaubt jedoch, dass es keine Raketenwissenschaft ist. „Es ist nicht komplex. Es geht um Berechnungen, die Sie in fünf Minuten auf einem Bierdeckel durchführen können sollten.“

Alle vier sind sich einig, dass es darum geht, ein Gefühl für das Material zu bekommen. „Sie sollten auch in der Lage sein, es zu quantifizieren, es schnell zu berechnen“, betont Vermeulen.

Janssen bietet ein einfaches Gedankenexperiment an: „Nehmen Sie zwei Gummibänder. Halten Sie sie parallel und ziehen Sie daran. Dann verknoten Sie sie in Reihe und ziehen erneut. Was ist der Unterschied? Was passiert? Wo müssen Sie am stärksten ziehen, um sie ein paar Zentimeter zu dehnen? Nicht jeder hat ein intuitives Gespür dafür.“

Rankers: „Es ist eine Kombination aus Kreativität und analytischen Fähigkeiten. Sie müssen sich etwas einfallen lassen und dann grobe Berechnungen anstellen, um zu sehen, wie es funktioniert. Manche Leute gehen analytisch vor, andere können wunderbar konstruieren. Sie wissen vielleicht nicht genau, warum es funktioniert, aber sie haben ein gutes Gespür dafür.“

Berechnungs-Tools

Kreativität und Design-Intuition können nicht durch Berechnungswerkzeuge ersetzt werden, da sind sich alle einig. „Man kann einen Computer die Berechnungen machen lassen“, sagt Janssen, „aber dann muss man sie immer noch bewerten. Was, wenn es nicht richtig ist? Es gibt Tausende von Parametern, die Sie verändern können. Es geht darum, ein Gespür für die Konstruktion zu haben und zu wissen, wo die Schmerzpunkte liegen. Dafür brauchen Sie kein Berechnungsprogramm.“

''For every design question, you must go all the way back to the beginning, keep your feet on the ground, and start simple.''

Manders: „Wir sprechen über den sprichwörtlichen Bierdeckel, weil Sie in wenigen Minuten eine erste Skizze oder Berechnung machen wollen. Wenn Sie einen Computer rechnen lassen, sind Sie tagelang damit beschäftigt. Der Bau eines ersten Modells dauert sehr lange. Aber ein guter Konstrukteur kann diese Berechnung in ein paar Minuten auf Papier bringen. Wenn Sie danach eine Stunde lang beschäftigt sind, haben Sie ein gutes Gefühl dafür, in welche Richtung es geht. Ich denke, das ist der Kern des Konstruktionsprinzip-Kurses: einfache Berechnungen, nicht zu kompliziert, eine Richtung wählen und sehen, wohin es geht.“

Weißes Blatt Papier

Manders stellt fest, dass sehr analytische Menschen oft Angst davor haben, die ersten Zeilen auf ein leeres Blatt Papier zu schreiben. Mit einem Konzept zu beginnen. „Oft sind sie so sehr auf die Details konzentriert, dass sie sofort stecken bleiben. Kreative fangen an zu zeichnen und sehen, wohin es führt.“

Für Manders ist die Weiterbildung eine Möglichkeit, mit dem Baugewerbe verbunden zu bleiben. „In meiner Karriere habe ich mich in weitere Bereiche hinein entwickelt, auch in Richtung Mechatronik. Aber mein Ankerpunkt ist die Feinmechanik. Indem ich mich weiterbilde, kann ich mein Wissen vertiefen und den Leuten die Grundlagen vermitteln. Das schärft auch mich. Wenn ich Konstruktionsprinzipien auf etwas andere Weise erkläre, hilft mir das bei meiner Arbeit als Coach.“

Beim Training lernt er oft neue Dinge. „Dann bekomme ich Fragen, die mich wirklich zum Nachdenken bringen. Wenn es wirklich schwierig ist, komme ich außerhalb des Kurses darauf zurück. Ich denke dann zu Hause darüber nach und bereite eine Ersatzfolie für das nächste Mal vor.

Vermeulen sagt, dass es ihm viel Befriedigung verschafft, eine neue Generation von Technikern auszubilden. „Das gibt mir Energie. Für das derzeitige Wachstum in der High-Tech-Branche ist es auch notwendig, Wissen zu teilen. Das gilt für ASML, aber auch für VDL und andere Zulieferer. Wenn wir unser Wissen nicht weitergeben, werden wir alle gegen eine Wand laufen.“

''We could emphasize considering the costs of production methods more.''

Selbstzufriedenheit

Janssen stellt fest, dass unter den Designern eine gewisse Voreingenommenheit oder Selbstgefälligkeit verbreitet ist. „Wenn viele ASML-Teilnehmer in der Klasse sind, ziehen sie sofort ein Magnetlager hervor, wenn wir nach einer reibungslosen Bewegung fragen. Aber in manchen Fällen reichen auch ein Luftlager oder zwei Rollen aus. Ich übertreibe, aber Designer sind manchmal aufgrund ihrer eigenen Erfahrung oder ihres Arbeitsumfelds voreingenommen. Bei jeder Designfrage müssen sie wirklich zu den Grundlagen zurückkehren, mit den Füßen auf dem Boden stehen und einfach anfangen.“

Vermeulen: „Die einfachste Lösung ist meist die beste. Viele Designer sind nicht dafür ausgebildet. Ich sehe oft, dass sie das Verhalten kopieren. Aber die Designwahl, die sie bei ihrem Nachbarn sehen, ist nicht unbedingt die beste Lösung für ihr eigenes Problem. Sie könnten durchaus eine Stahlplatte anstelle einer komplexen Blattfeder verwenden. Es funktioniert in beide Richtungen, aber wenn Sie sich für die teure Variante entscheiden, sollten Sie einen guten Grund haben.“

Quartal

„Es macht immer wieder Spaß zu sehen, wie Marc anfängt“, sagt Rankers über Vermeulens Ansatz bei der Schulung. „Wenn er über Luftlager spricht, fragt er die Teilnehmer, ob sie sie benutzen, was ihre größte Herausforderung ist, wo sie auf Probleme stoßen. In einer Viertelstunde erkundet er das Thema und weiß, was ihnen bekannt ist. Wer weiß viel, wer weiß nichts, oder wer wird bald in einem Projekt damit arbeiten.“

Vermeulen: „In meiner Vorschau gehe ich das gesamte Material durch, ohne tief in die Materie einzutauchen. Dieser Prozess gibt mir Energie. Eigentlich ist die ganze Klasse motiviert, aber die Herausforderung besteht darin, sie am Anfang wirklich einzubinden. Sie kennen sich noch nicht. Aber ich möchte in der Lage sein, sie sozusagen zu lesen, um sie zu beteiligen. Sie müssen begierig sein und mitfiebern.“

Es geht also nicht um die Folien, betont Vermeulen noch einmal. „Es geht darum, dass die Teilnehmer mit ihren eigenen Fragen kommen. Sie haben alle bestimmte Dinge im Kopf und fragen sich, wie sie diese umsetzen können.“ Das ist der Grund für die ausführliche Fragerunde zu Beginn. „Ich frage nach den verschiedenen Themen, auf die sie stoßen. Dann verwende ich diese als Rahmen. Wenn eine Folie zu einem Thema auftaucht, das sie erwähnt haben, gehe ich ein wenig darauf ein. Das macht es für sie viel einfacher, dem Vortrag zu folgen. Sie bleiben konzentriert.“

Grundausbildung

DPPE ist eine Grundausbildung. Manders und Vermeulen erwarten keine großen Änderungen des behandelten Materials, sehen aber Möglichkeiten, den Inhalt aktueller zu gestalten.

Dennoch müssen die Teilnehmer grundlegende Kenntnisse und Prinzipien erlernen. Janssen über Steifheit, Spiel und Reibung – die Themen, die er unterrichtet: „Ich verbringe eineinhalb Tage damit, aber das sind drei entscheidende Dinge. Wenn Sie diese nicht begreifen, werden Sie nie ein guter Designer sein. Das ist die Grundlage.“ Konzepte wie die passive Dämpfung werden kurz angesprochen, aber das ist ein komplexes Thema. Kein Wunder, dass die Mechatronik-Akademie dafür einen eigenen dreitägigen Kurs anbietet.

Das Thema „Freiheitsgrade“, das Manders unterrichtet, ist ein weiteres grundlegendes Element. „Das braucht einfach etwas Zeit. Sie müssen es durchgehen“, sagt Manders.

Vermeulen: „Dann kommt die Umsetzung in Hardware. Sobald die Teilnehmer mit der Funkenerosion vertraut sind, müssen sie die Kreativität haben, sich in manchen Fällen billigeren Lösungen zuzuwenden. Wir könnten die kritische Bewertung der Kosten der Produktionsmethode stärker betonen. Wenn Sie in einem System mit Funkenerosion einen Freiheitsgrad erreichen, sollten Sie beim nächsten Mal nicht automatisch zu dieser teuren Produktionsmethode greifen. Wir könnten uns mehr mit der Übertragung auf Hardware befassen. Es ist auch gut, dort nach Einfachheit zu streben.“

''The core is simple calculations, not too complicated, choose a direction and see where it leads.''

Überdeterminiert

Übrigens hat sich Wim van der Hoek auch kritisch mit den Kosten auseinandergesetzt. Rankers: „Eine großartige Aussage von ihm war, dass viele Kosten in der Montage dadurch verursacht werden, dass die Dinge überdeterminiert sind.“

Die Begriffe „determiniert“ oder „überdeterminiert“ in der Präzisionskonstruktion beziehen sich im Wesentlichen darauf: Ein starrer Körper hat sechs Freiheitsgrade (3 Translationen und 3 Rotationen), die seine Position und Ausrichtung vollständig definieren. Wenn Sie dieses Objekt mit einem Aktuator in eine Richtung bewegen möchten, müssen Sie die anderen Freiheitsgrade mit einem Rollenlager, einem Luftlager oder einer Blattfederkonfiguration fixieren.

Wenn Sie als Designer eine Konfiguration von Beschränkungen wählen, die mehr als fünf Freiheitsgrade festlegt, können sich die Beschränkungen gegenseitig behindern. Rankers: „Das nennt man statisch überdeterminiert, und Sie haben vielleicht Glück, wenn es funktioniert, solange alles sauber ausgerichtet ist. Die Leute, die das machen, haben ‚goldene Hände‘, wie Wim van der Hoek es ausdrückt. Aber die saubere Ausrichtung kann sich nicht ändern, wie bei thermischen Ausdehnungsunterschieden.“ Vor allem die Gradienten und Unterschiede in der Ausdehnung der verschiedenen Komponenten spielen eine große Rolle.

Rankers: „Natürlich ist es unmöglich, alles perfekt auszurichten. Außerdem verändert es sich im Laufe der Zeit während des Gebrauchs. So entstehen innere Kräfte innerhalb des Objekts, das Sie halten oder positionieren wollten, aufgrund des ‚Kampfes‘ zwischen den Zwängen. Wenn dieses Objekt ein empfindliches Stück Optik ist, das sich nicht verformen darf, haben Sie ein großes Problem. Das bedeutet, dass Sie eine Überbestimmung in Ultrapräzisionsmaschinen vermeiden müssen.“

Vermeulen: „Wenn Sie es also so konstruieren, dass es besser bestimmt werden kann, ist es einfacher zu montieren, und das gibt Ihnen eine Brücke zu den Kosten.“

Rankers merkt auch an, dass der Kostenaspekt mehr Aufmerksamkeit als bisher erhalten sollte. Seiner Meinung nach könnten Gastredner die Schulung mit praktischen Beispielen bereichern. Er zeigt Beispiele für günstige und teure Versionen. Vermeulen bringt sofort ein Beispiel, bei dem Sie ein Objektiv führen müssen. „Wenn Sie eine normale lineare Führung machen, sinkt die Linse ein wenig auf der Nanometerskala. Sie können das mit einer zweiten Führung kompensieren, aber dann ist die Lösung vielleicht doppelt so teuer und doppelt so komplex. Ist das wirklich notwendig? Als Designer können Sie also den Optik-Ingenieur herausfordern: „Sie wollen es perfekt machen, aber das ist mit hohen Kosten verbunden. Wir müssen auf diese Dinge achten.'“

Dieser Artikel wurde von René Raaijmakers geschrieben, dem technischen Redakteur von Bits&Chips.

Recommendation by former participants

By the end of the training participants are asked to fill out an evaluation form. To the question: 'Would you recommend this training to others?' they responded with a 9.5 out of 10.

Die Magie der Feinmechanik

Feinmechanik
Erik Manders und Marc Vermeulen übernehmen eine führende Rolle bei der Schulung „Design Principles for Precision Engineering“ (DPPE). Das Duo tritt die Nachfolge von Huub Janssen an, der sieben Jahre lang die Leitung innehatte. Teil eins einer zweiteiligen Serie: Trends bei Konstruktionsprinzipien.

Präzisionstechnologie ist kein feststehendes Konzept; dieser Werkzeugkasten für High-Tech-Ingenieure entwickelt sich mit der Zeit weiter. Um einen Einblick in dieses Thema zu erhalten, hat das High Tech Systems Magazin Huub Janssen, Erik Manders, Adrian Rankers und Marc Vermeulen zu einem Gespräch über die Welt der Präzision, die sich ändernden Trends und Anforderungen in der Hochtechnologie und die Arbeit in diesem Bereich eingeladen. Im zweiten Teil werden wir uns mit den Auswirkungen auf die Schulung Design Principles for Precision Engineering (DPPE) beschäftigen.

Wie Janssen sind auch Manders und Vermeulen seit Jahrzehnten in der High-Tech-Branche tätig, auch wenn sich ihre Aufgaben und Interessen unterscheiden. Janssen ist Inhaber eines Hightech-Ingenieurbüros und war sieben Jahre lang die Galionsfigur der DPPE-Ausbildung. Das neue Duo, das die allgemeine Richtung vorgibt, arbeitet jetzt bei ASML, Manders als Principal Systems Architect für Mechatronik und Vermeulen als Principal Mechanical System Architect. Adrian Rankers, der zuvor als Leiter der Mechatronik-Forschung bei Philips CFT tätig war, ist jetzt Partner bei der Mechatronics Academy (MA) und verantwortlich für die DPPE-Ausbildung, die MA über das High Tech Institute anbietet.

 

„Vor dreißig Jahren war die Positionierung mit dem Mikrometer ein Feld von einem anderen Planeten“, sagte Janssen 2019, als er das Gesicht des DPPE wurde. Als er Mitte der achtziger Jahre seinen Abschluss machte, arbeiteten die Designer noch mit Mikrometern. „Im Laufe der Jahre hat sich das zu Nanometern verlagert“, stellt er heute fest.

Seit Anfang der neunziger Jahre entwickelt er mit seinem Unternehmen JPE mechatronische Module für Hightech, wissenschaftliche Instrumente für die Forschung und neuerdings auch Systeme für Quantencomputer. „Wenn Sie jetzt mit diesen Physikern sprechen, reden sie über Pikometer, ohne mit der Wimper zu zucken. Für mich fühlt sich das fast philosophisch an.“

Erik Manders und Marc Vermeulen sind seit Jahren als Trainer an der Schulung Design Principles for Precision Engineering beteiligt. Das Training wurde ursprünglich am Philips Center for Manufacturing Technology (CFT) entwickelt, wo beide ihre Karriere begannen. Vermeulen gehört seit mehreren Jahren zu einer Gruppe von DPPE-Trainern an der Mechatronics Academy. Manders unterrichtete den Kurs viele Jahre lang zusammen mit Herman Soemers bei Philips Engineering Services, bis die Mechatronikgruppe dieser Aktivität 2023 an ASML übertragen wurde.

Nicht gerade einfach

Das Konzept der Präzisionstechnologie ist schwer zu definieren. Es ist ein Werkzeugkasten, der Designern einen großen Spielraum für Kreativität bietet. Geben Sie zehn Designern dasselbe Problem und Sie erhalten unterschiedliche Lösungen, die sich sowohl in der Richtung als auch im Detail unterscheiden. Der Designansatz ist je nach Anwendung sehr unterschiedlich, unterliegt aber auch Trends und veränderten Anforderungen. In ein paar Jahren mögen sich die Anforderungen und Ansätze kaum ändern, aber in zehn Jahren können die Entwürfe und die Methoden, mit denen sie umgesetzt werden, ganz anders aussehen.

''You keep running into new physical phenomena that previously had no influence and suddenly appear.''

Interferometer-Aufhängung

Es gibt keinen heiligen Gral oder allgemeingültige Designregeln in der Präzisionstechnologie. Die besten Praktiken unterscheiden sich je nach Markt, System oder Anwendung. Huub Janssen stellte dies fest, als er frisch von der Schule zu ASML kam. „Zuerst lernte ich von Wim van der Hoek, wie man etwas statisch bestimmt baut“, sagt er. „Aber bei ASML stellte ich fest, dass dieser Ansatz nicht immer funktionierte. Für den PAS2500 Wafer Stepper entwickelten wir zunächst eine neue Interferometeraufhängung, um die Position des Tisches in x- und y-Richtung zu messen. Diese Konstruktion folgte den Prinzipien von Van der Hoek, mit elastischen Elementen und so weiter. Aber als wir es testeten, stellten wir fest, dass es keine Dämpfung gab. Es ist reproduzierbar, aber alles schwingt weiter. Es war eine Katastrophe. Ich habe gelernt, dass man bestimmte Konstruktionsprinzipien von Van der Hoek nicht einfach überall anwenden kann; man muss wissen, wann man sie einsetzen muss.“

Steigende Anforderungen

Die ständig steigenden Anforderungen an die Präzision beeinflussen die Designentscheidungen stark. Vermeulen erklärt: „Mit zunehmender Genauigkeit steigt auch die Komplexität. Jedes Mal müssen Sie das Problem ein wenig weiter entschlüsseln. Sie stoßen immer wieder auf neue physikalische Phänomene, die vorher keine Rolle spielten, jetzt aber Auswirkungen haben. Sie müssen dann zum Kern vordringen: Was passiert hier physikalisch?“

Vermeulen nennt als Beispiel die Anwendung der passiven Dämpfung auf der Kurzhub-Waferstufe von lithografischen Scannern. Das war eine ziemliche Hürde, die wir 2015 nehmen mussten, denn was Sie entwerfen, muss vorhersehbar sein. Wenn Sie in Bezug auf Steifigkeit und Masse denken, ist das immer noch möglich. Aber am Anfang wussten wir nicht, wie sich ein Dämpfer verhalten würde.

Würde es altern? Kriechen? Wir mussten das vollständig verstehen. Das bedeutete, dass wir modellieren mussten, wie die Dämpfung die Dynamik beeinflusst. Das gelang uns zunächst nicht, aber als wir es schließlich richtig verstanden, konnten wir die Messungen und das Modell abgleichen. Erst als wir einigermaßen sicher waren, dass wir es verstanden hatten, konnten wir den nächsten Schritt machen. Wenn Sie das nicht richtig machen, bleibt es bei Vermutungen, Sie können das Verhalten nicht gut vorhersagen und werden später überrascht sein.‘

Ein weiteres Beispiel sind Probleme, die bei der Steigerung der Produktivität auftreten können. Besonders bei wassergekühlten Komponenten ist es eine Herausforderung, diese unter Kontrolle zu halten. Jeder kennt das Platzen der Wasserleitung, wenn man schnell einen Wasserhahn zudreht. In gleicher Weise erzeugt die Beschleunigung Druckwellen in Systemen mit Wasserkühlung. Sie müssen diese Wellen dämpfen, denn Druckimpulse verursachen Verformungen“, sagt Vermeulen, „Sie müssen verstehen, wie das funktioniert.

Manders fügt hinzu: „Auf einer Mikrometerskala würden Sie dies nicht bemerken, aber auf einer Nanometerskala verformt sich sogar ein Glasblock, wenn sich der Druck ändert. Das ist ein physikalisches Problem auf Systemebene.“

Einfachheit

Der wichtigste Ansatz ist das Streben nach Einfachheit. Dies führt zu robusten und kostengünstigen Konstruktionen. Aber es gibt noch einen weiteren wichtigen Grund, die Dinge einfach zu halten. Wenn eine gewählte Lösung erst einmal in ein Produkt eingebettet ist, können Designer, die darauf aufbauen, dieses Teilsystem nicht mehr so schnell ändern. „Wenn Sie sich für Komplexität entscheiden, können Sie sie nie wieder entfernen“, fasst Rankers zusammen. „Wenn Sie die Einfachheit nicht von Anfang an durchsetzen, werden Sie immer wieder damit kämpfen müssen. Es wird immer wieder an Ihnen nagen.“

Janssen: „Wenn es funktioniert, traut sich niemand, es anzutasten. Wenn Sie Reserven einbauen, wird später niemand vorschlagen, sie zu entfernen. Denn jeder wird erwidern: ‚Sind Sie sicher, dass es dann noch funktioniert? Sie können sich denken, wie das Ergebnis aussehen wird.'“

Vermeulen: „Genau. Niemand wagt es, zurück zu gehen. Man beginnt mit einem Entwurf, baut einen Prüfstand auf und wenn er sich mehr oder weniger bewährt hat, geht man damit weiter.“

Manders: „Sie müssen komplexe Anpassungen oder Kalibrierungen vermeiden, denn sie werden nie verschwinden. Das Projektteam, das danach kommt, wird sagen: ‚Wir werden das einfach kopieren, weil es funktioniert. Wir werden es genauso machen.'“

Das sind schwierige Entscheidungen, sagt Janssen. Die Wahl des Designs kann sehr unterschiedlich sein und hängt von der Anwendung und dem Markt ab. „Bei Halbleiteranlagen wollen Sie alles hundertmal neu berechnen, bevor Sie die Maschine bauen. Die Konstrukteure können eine gewisse Reserve einbauen, damit die Konstruktion funktioniert. Aber kleine Margen in verschiedenen Budgets machen eine Lösung manchmal unmöglich oder übermäßig kompliziert. Manchmal müssen Sie wirklich alle Register ziehen, um das letzte bisschen Präzision zu erreichen. Aber wenn man es einmal geschafft hat, kann man nicht mehr zurück.

In seinem Unternehmen JPE ermutigt Janssen seine Designer dazu, manchmal mehr Risiken einzugehen. „Das kann oft billiger sein. Etwas Dünneres und etwas weniger Steifes kann schneller und billiger fertiggestellt werden. Aber man muss sich wirklich trauen, es zu tun.“

Manders: „Aber manchmal kostet Reserve fast nichts. Durch kluges Design kann Genauigkeit oft ohne viele zusätzliche Fertigungsschritte erreicht werden. Zum Beispiel, indem Sie klugerweise prüfen, ob Sie mehrere Oberflächen in einer Aufspannung fräsen und die Vorteile der heutigen hochpräzisen Fräsmaschinen nutzen können. In jedem Fall ist es wichtig, ein Gefühl dafür zu entwickeln.“

''The process of creating a design is magical. You just can’t design the more complex modules alone.''

Systemarchitekt

Manders begann bei Philips CFT als Designer. In den letzten Jahren hatte er eine eher betreuende Funktion als Systemarchitekt in der Mechatronikabteilung von Philips Engineering Services, die 2023 zu ASML überging, und arbeitete mit einem Team von etwa hundert Kollegen und Technikern bei Zulieferern zusammen. „Ja, dann sind Sie in einer Menge von Bewertungen.“

Er sieht seine Rolle darin, „den Überblick zwischen den Disziplinen zu behalten“. „Ich versuche, der Kitt zwischen den Ziegeln zu sein. Am Ende muss es funktionieren. Das ist das Spiel.“

Zwanzig Bälle

Janssen entschied sich schon früh in seiner Karriere, sein eigenes Unternehmen zu gründen, Janssen Precision Engineering, später JPE. Manders und Vermeulen hingegen arbeiten in einem größeren Unternehmen, wo sie sich mit vielen Kollegen und Lieferanten abstimmen müssen. „Ich muss zwanzig Bälle mit anspruchsvoller Technik in der Luft halten“, beschreibt Janssen, der seinen Job auch als Hobby betrachtet. „Gleichzeitig muss ich darauf achten, was der Markt braucht. Wir sind kein großes Unternehmen, aber wir haben weltweit einen großen Einfluss.“

Wie ist es in einem viel größeren Unternehmen wie ASML? Vermeulen sagt: „Jemand, der gerade erst angefangen hat, wird an einem sehr kleinen Teil arbeiten. Die Herausforderung besteht darin, ihm zu helfen, zu verstehen, wie sein Beitrag in das Gesamtbild passt.“

Manders fügt hinzu: „Tausende von Menschen arbeiten an unseren Maschinen. Als Neuling kann man das nicht sofort begreifen. Die Komplexität ist überwältigend.“

Die Gründer von ASML, so Manders, hatten den Vorteil, dass sie mit einfacheren Geräten anfingen. „Sie konnten diese besser verstehen, und das war ihr Ankerpunkt, als die Maschinen komplexer wurden. Leute, die später einsteigen, können nicht sofort das ganze Bild sehen. Menschen, die erst anfangen zu arbeiten, können zunächst den Wald vor lauter Bäumen nicht sehen. Sie müssen erst hineinwachsen und mit der Zeit die Zusammenhänge entdecken.“

Dirigent

In einem so großen Team hat jeder seine Rolle. „Was die Servologen und Strömungsdynamiker in meinem Team berechnen, könnte ich selbst nicht tun“, sagt Manders, der sich eher als Dirigent sieht. „Ich versuche, weniger erfahrenen Kollegen die Richtung vorzugeben und ein Gefühl für den Kontext zu vermitteln. Warum tun wir das? Wohin gehen wir? Sie versuchen, das Team zusammenspielen zu lassen und etwas Schönes zu schaffen. Aber ein gutes Orchester spielt im Wesentlichen alleine.“

Rankers fügt hinzu: „Alleine können Sie diese komplexen Module nicht bewältigen. Es ist wie bei einer Fußballmannschaft. Der Trainer schießt auch keine Tore.“

Vermeulen erkennt dies an. „Ich bin für die Technologie verantwortlich, aber auch dafür, wie wir zusammenarbeiten. Das macht wahrscheinlich die Hälfte meiner Zeit aus: die Führung. Sie haben Einfluss darauf, wie das Team zusammenarbeitet. Als Systemarchitekt bringen Sie alles zusammen und geben die Richtung vor. Sie fragen Ihre Experten, was aus ihrer Sicht die beste Lösung ist, und das führt zu einem ausgewogenen Design. Es können hundert oder hundertfünfzig Leute in einem Team sein, aber wie sie zusammenarbeiten, ist entscheidend.“

''The most important approach is to strive for simplicity.''

Große Projekte

Manders bedauert, dass er nicht mehr selbst konstruiert, aber er findet seine jetzige Rolle genauso herausfordernd. „Jetzt konzentriere ich mich mehr darauf, alles im Gleichgewicht zu halten und bei großen Projekten Systementscheidungen zu treffen.“

Vermeulen bezieht sich auf diese Rolle als Trainer. „Es geht darum, herauszuzoomen und hineinzuzoomen. Das große Ganze im Auge zu behalten.“

Manders erklärt: „Viele Einzelgespräche, neben den Kollegen hocken, Brainstorming, wo wir hinmüssen. Manchmal muss man herauszoomen und feststellen, dass man auf dem falschen Weg ist. Die Herangehensweise muss sich völlig ändern.“

Manders bezeichnet dies als „den Charme des Designs“. „All die Überlegungen, die Sie mit Ihrem Team anstellen, führen zu etwas Schönem, wenn es richtig gemacht wird. Es ist aufregend, das von der Seite als Architekt wachsen zu sehen. Manchmal kommen die Leute an der Kaffeemaschine auf sehr überraschende Ideen. Der Prozess der Gestaltung eines Designs ist magisch. Sie können die komplexeren Module einfach nicht alleine entwerfen.“

Vermeulen fügt hinzu: „Eins plus eins ist gleich drei. Eine Person sagt etwas, was bei einer anderen Person eine Idee auslöst. Einem Dritten fällt dann etwas Überraschendes ein, und so weiter.“

Janssen schlussfolgert: „Aber letztendlich muss sich jemand für eine Richtung entscheiden.“

Dieser Artikel wurde von René Raaijmakers geschrieben, dem technischen Redakteur von Bits&Chips.

Recommendation by former participants

By the end of the training participants are asked to fill out an evaluation form. To the question: 'Would you recommend this training to others?' they responded with a 9.5 out of 10.

Berühmte Software-Fehler

Kostenloses Webinar über den Einsatz von KI bei der Codegenerierung

Kostenloses Webinar

Am 20. Mai 2025, von 15 – 16 Uhr, organisiert das High Tech Institute ein kostenloses Webinar über berüchtigte Softwarefehler. Das Webinar wird präsentiert von Ger Cloudt, Trainer der neuen Kurse„Softwarequalität für Ingenieure“ und„Softwarequalität verstehen für Manager“ und Autor des Buches „Was ist Softwarequalität?“.

Zielsetzung
Ist Ihnen bewusst, wie sehr unsere Gesellschaft von Software abhängt? Haben Sie jemals über die Rolle von Software in Ihrem persönlichen Leben nachgedacht? Ein genauer Blick auf Ihre nähere Umgebung wird Sie davon überzeugen, dass Software allgegenwärtig ist. Ihr Smartphone wird von Software betrieben, Ihr Computer wird von Software betrieben, Ihr Staubsauger wird von Software betrieben, Ihr Fernseher wird von Software betrieben, Ihr Auto wird von Software betrieben. Können Sie sich irgendein Gerät vorstellen, das nicht in irgendeiner Form von Software beeinflusst wird? Was ist, wenn die Qualität dieser Software minderwertig ist? Lassen Sie uns in dieser Sitzung einen Blick auf drei völlig unterschiedliche, berüchtigte Softwarefehler werfen!

Zielgruppe
Jeder, der sich dafür interessiert, was bei Software schief gehen kann.

Programm

  • Was ist Softwarequalität?
  • Das Verschwinden des Mars Climate Orbiter
  • Unbeabsichtigte Beschleunigung, die zum Tod einer Person führt
  • Crowdstrike-Update legt Flughäfen, Bahnhöfe, Krankenhäuser und mehr lahm
  • Fazit

Trainer
Ger Cloudt

 

Überdenken Sie den Stand von C++

C++
Ende 2022 schrieb Kris van Rens über den Stand von C++ zu dieser Zeit und seine Herausforderer. Eine Fortsetzung nach zwei weiteren Jahren.

Im Jahr 2022 zog Google aus Unzufriedenheit mit dem Entwicklungsprozess von C++ einen Großteil seiner Ressourcen aus der Arbeit an C++ und dem Clang-Compiler-Frontend ab. Als Alternative kündigte es das langfristige Projekt Carbon an, eine Nachfolgesprache, die eng mit C++ zusammenarbeiten kann. Dies und die darauf folgenden Ereignisse stellten einen Wendepunkt für C++ dar, da die Sprache wegen der angehäuften technischen Schulden und des relativ langsamen Entwicklungstempos ernsthaft kritisiert wurde. Von diesem Moment an, so schien es, hatte jeder eine (starke) Meinung und verkündete sie lautstark – die Menge an Kritik konnte vom C++-Komitee nicht länger ignoriert werden.

Ein weiterer Aspekt von C++, der unter Beschuss geraten ist, ist die fehlende Speichersicherheit. Speichersicherheit in einer Programmiersprache bezieht sich auf die Fähigkeit, Fehler im Zusammenhang mit unsachgemäßem Speicherzugriff, wie z.B. Pufferüberläufe, Use-after-free-Fehler oder baumelnde Zeiger, durch eingebaute Funktionen und Garantien in der Sprache selbst zu verhindern oder abzufangen. Dies kann zu allgemeiner Sprachsicherheit erweitert werden, bei der alle undefinierten Verhaltensweisen und nicht spezifizierte Semantiken aus der Sprache eliminiert werden. Sprachsicherheit ist ein Konzept, das auf einem Spektrum und nicht als binäre Eigenschaft definiert ist; einige Sprachen sind sicherer als andere. Beispiele für Sprachen, die als sicher gelten und dennoch ein relativ niedriges Niveau haben, sind Swift, Ada und Rust.

Nach der sprichwörtlichen Hitze des Sommers 2022 hat eine Reihe von Schlägen in Form von öffentlichen Empfehlungen zur Speichersicherheit sowohl C als auch C++ explizit ins schlechte Licht gerückt. Ende 2022 meldete sich zunächst die NSA mit einem White Paper zu Wort, in dem sie uns aufforderte, von C und C++ abzurücken. Dann begann die CISA (die US Cybersecurity Infrastructure Security Agency), sich für eine Roadmap zur Speichersicherheit einzusetzen. In den Jahren 2023 und 2024 verkündeten sogar das Weiße Haus und der US-Verbraucherbericht, dass wir die Speichersicherheit ernster denn je nehmen und zu speichersicheren Sprachen übergehen sollten. Es gab noch viele weitere Ereignisse, aber es genügt zu sagen, dass sie alle vom C++ Komitee nicht unbemerkt geblieben sind.

''C is quite a simple language; it’s easy to learn and get started with. However, it’s very hard to become advanced and proficient at it at scale.''

Zugegeben, einige der Bemühungen der Mitglieder des C++-Ausschusses, die öffentlichen Angriffe zu entkräften, wirkten ein wenig verächtlich. Oft wurde die Speichersicherheit als „nur eines der vielen potenziellen Softwareprobleme“ heruntergespielt. Das klingt für mich sehr nach einem logischen Trugschluss. Sicher, viele Dinge können schief gehen, und eine sichere Sprache ist kein Allheilmittel. Allerdings haben sich die Anforderungen an die Softwareentwicklung in den letzten vierzig Jahren drastisch verändert, und heute ist die Speichersicherheit ein gelöstes Problem für viele andere Sprachen, die im gleichen Anwendungsbereich eingesetzt werden können. Offiziell hat die ISO-Arbeitsgruppe 21 (WG21) die Studiengruppe 23 (SG23) für „Safety and Security“ eingesetzt, deren Aufgabe es ist, die besten Wege zu finden, um C++ zu einer sichereren Sprache zu machen und gleichzeitig andere Einschränkungen wie die Abwärtskompatibilität einzuhalten – gar nicht so einfach.

Unbestreitbare Kluft

Ich habe in den letzten Jahrzehnten mit verschiedenen Programmiersprachen gleichzeitig in der Produktion gearbeitet. Was mir bei all meinen Erfahrungen mit C und C++ besonders auffällt, ist die schiere kognitive Belastung, die sie für Entwickler darstellen.

C ist eine recht einfache Sprache, die leicht zu erlernen ist und mit der man leicht anfangen kann. Es ist jedoch sehr schwer, sie in großem Umfang zu beherrschen und weiterzuentwickeln. Da es sich um eine einfache Sprache handelt, sind Sie gezwungen, viele wichtige fehleranfällige technische Aufgaben wie die Speicherverwaltung und die richtige Fehlerbehandlung manuell zu erledigen – wichtige Aspekte einer zuverlässigen, fehlerfreien Software. Es gibt zwar viele Kontrollmöglichkeiten auf niedriger Ebene, aber die Zeremonie und der kognitive Aufwand, um die Dinge richtig zu machen, sind einfach umwerfend.

Das Gleiche gilt weitgehend für C++. Es macht die Dinge besser, indem es Sie beim Schreiben von korrektem Code unterstützt, zum Beispiel mit der Standardbibliothek, die intelligente Zeiger für die Speicherverwaltung enthält. Allerdings macht es die enorme Komplexität der Sprache auch schwer, sie in großem Umfang korrekt zu verwenden.

Hinzu kommt, dass all diese Aspekte der Codierung in C und C++ keine Garantie dafür bieten, dass die Dinge nach der Kompilierung zuverlässig sind. Dies zwingt Entwickler dazu, sich mit bewährten Verfahren zu befassen, Compiler-Sanitizer und statische Analysatoren zu verwenden und umfangreiche Tests durchzuführen, nur um sicherzugehen, dass alles in Ordnung ist. Natürlich sollten die meisten dieser Aktivitäten Teil einer gesunden Denkweise von Softwareentwicklern sein, aber es ist schmerzlich zu erkennen, dass C und C++ die Anforderung, diese Arbeit zu erledigen, auf den Entwickler abwälzen, anstatt sie direkt in der Sprache zu berücksichtigen. Die Entwicklung einer Sprache ist, wie jede technische Herausforderung, eine endlose Abfolge von Kompromissen, aber es gibt eine unbestreitbare Lücke zwischen den Fähigkeiten der ‚alten Sprachen‘ und den aktuellen Bedürfnissen der Softwareentwicklung. Andere, neuere Sprachen zeigen, dass es möglich ist, diese Anforderungen zu erfüllen und gleichzeitig das Leistungspotenzial zu erhalten.

''New features improve the language but also inherently increase the already quite substantial complexity, while all the old footguns and dangers like undefined behavior are still there.''

Jahre entfernt

Die meisten Programmiersprachen werden im Laufe der Zeit ständig verbessert. In der Welt von C wird sich jedoch wahrscheinlich wenig bis gar nichts ändern. Für viele Projekte ist C daher heute nicht mehr die richtige Sprache, wenn Sie überhaupt noch Sicherheit wünschen. Es gibt Alternativen, die für den Zweck besser geeignet sind – wenn dies angesichts Ihrer Projektbeschränkungen und -präferenzen möglich ist.

Bei C++ sieht die Sache anders aus. Die WG21 bereitet sich derzeit auf die Veröffentlichung von C++26 vor, das enorme neue Funktionen mit sich bringen wird, darunter (höchstwahrscheinlich) Verträge, Executors und sogar statische Reflexion. Diese Funktionen werden mit Sicherheit die Spielregeln verändern, aber vor allem das Anwendungspotenzial der Sprache oder, im Falle von Verträgen, die Sicherheit und Korrektheit verbessern, allerdings auf Kosten der manuellen Arbeit des Entwicklers.

Neue Funktionen verbessern die Sprache, erhöhen aber auch die ohnehin schon beträchtliche Komplexität, während all die alten Fußangeln und Gefahren wie undefiniertes Verhalten immer noch vorhanden sind. Wenn Sie als Trainer Anfängern C++ beibringen, bleibt es zum Teil eine Übung, sie von den Fallstricken fernzuhalten – nicht wirklich eine natürliche, bequeme Art zu lehren oder zu lernen.

Das ‚Paralleluniversum‘ der Circle C++-Sprache zeigt, wie die scheinbar schwerfällige Syntax und Sprachdefinition von C++ immer noch in der Lage ist, viele andere großartige Funktionen wie echte Enumeratoren, Pattern Matching, statische Reflexion und sogar einen Borrow Checker zu integrieren. Leider ist diese bemerkenswerte Ein-Mann-Show von Sean Baxter kein standardisiertes C++ (und umgekehrt). Die Chancen sind gering, dass eine dieser hervorragenden Funktionen in absehbarer Zeit in das offizielle C++ aufgenommen wird.

Baxter hat auch einen „Safe C++“-Vorschlag, den er der Safety and Security Study Group im November letzten Jahres vorgelegt hat. Darin schlägt er vor, C++ um eine „rigoros sichere Teilmenge“ der Sprache zu erweitern, die die gleichen Sicherheitsgarantien bietet wie der Rust-Borrow-Checker. Ich begrüße diese Bemühungen, aber es bleibt abzuwarten, ob und in welcher Form dieser Vorschlag seinen Weg durch den oft träge erscheinenden Entwicklungsprozess der Sprache C++ finden wird. Die Arbeiten an C++26 haben sich weitgehend angenähert und C++29 ist noch ein paar Jahre entfernt. Hinzu kommt die Implementierungs-/Industrialisierungszeit dieser Spezifikationsversionen, bevor sie wirklich auf unseren virtuellen Werkbänken landen, und es könnte durchaus noch ein Jahrzehnt dauern – wenn wir Glück haben.

Grünere Weiden

Aber es ist noch nicht alles verloren. Das C++-Komitee leistet großartige Arbeit bei der Weiterentwicklung der Sprache, und der aktuelle Stand der Sprache und des Ökosystems ist besser denn je. Es ist nur so, dass die Kluft zwischen dem, was C++ heute bieten kann, und dem, was bei der Sicherheit der Systemprogrammierung und den integrierten Werkzeugen möglich ist, enorm ist.

Wenn ich ein paar Jahre in die Zukunft blicke, sehe ich nicht, dass diese Lücke geschlossen wird. Inzwischen stehen Sprachen wie Rust und Swift nicht mehr still. Es gibt in der Welt eine große Dynamik und ein früheres Engagement für C++, so dass die Industrie daran festhält, aber wie lange kann sie die Technologielücke aufrechterhalten, bevor Branchen oder Anwendungsbereiche zu grüneren Weiden wechseln?