Schlagwort-Archive: programmierung

Was bedeutet WebAssembly für IT-Projekte?

Eine der jüngsten Entwicklungen in der Weblandschaft ist WebAssembly – ein Binärformat, das unter Web- und App-Entwicklern längst in aller Munde ist. Völlig zu Recht, denn es zeichnet sich ab, dass WebAssembly über kurz oder lang neue Maßstäbe in der Softwareentwicklung setzen wird. Doch was bedeutet das für zukünftige IT-Projekte?

Basics first: Was kann WebAssembly?

WebAssembly (Wasm) ist eine Low Level Assemblersprache, die nativ in Webbrowsern kompiliert werden kann. Im Vergleich zu JavaScript liegt das Format sehr viel näher am Maschinencode und unterscheidet sich in seiner Leistung kaum von nativen Apps. Es läuft in allen großen Browsern – Chrome, Firefox, Safari und Edge – und ist vom W3C als offizieller Web Standard anerkannt. Das Besondere an WebAssembly ist, dass man in der Regel nicht direkt damit programmiert, sondern dass es als Kompilierziel für andere Sprachen fungiert. Da es bereits im Binärformat vorliegt, erfolgt das Parsing deutlich schneller als bei JavaScript.

Konkret heißt das: WebAssembly bietet die Möglichkeit, gängige Hochsprachen (z.B. C, C++, Java, Python) in ein ladezeitoptimiertes Format zu kompilieren, das crossbrowser und crossplatform Einsätze möglich macht. Jede Desktop Anwendung, die sich in WebAssembly kompilieren lässt, können Sie auf diese Weise ohne Leistungseinbußen im Browser ausführen. Damit dient WebAssembly als ideale Ergänzung zu JavaScript, um dessen Overheads auszubügeln und auch komplexe, rechenintensive Anwendungen im Browser auszuführen.

Was bedeutet das für IT-Projekte?

Seit WebAssembly ist JavaScript nicht mehr einzige Option, um Code für den Browser zu schreiben. Und das hat Folgen: Denn statt sich auf die bisherigen Objektprototypen von JavaScript zu beschränken, haben Entwickler zum ersten Mal eine Auswahl. Im Grunde können Sie jede Funktion Ihrer Anwendung in einer beliebigen Sprache programmieren und diese im Anschluss zu Wasm kompilieren. Voraussetzung ist natürlich, dass die gewählte Sprache über einen WebAssembly-Compiler verfügt.

Ein weiterer Vorteil von WebAssembly: Sie können den Wasm Code wiederverwenden und damit eine Brücke zwischen C#-Backend (als Beispiel) und JS-Frontend bilden. Wenn Sie Ihre DLL mit WebAssembly als Ziel kompilieren, sparen Sie sich den Schritt sie in JavaScript zu implementieren – und das spart Entwicklungszeit.

IT-Projekte stehen damit vor ganz neuen Chancen, aber auch Herausforderungen. In Bereichen, in denen die Rechenleistung von JavaScript an ihre Grenzen stößt, kann zukünftig mit Wasm gearbeitet werden – zum Beispiel bei 3D Gaming, Image Editing oder Virtual Reality. Desktop und Mobile Apps, für die bisher keine webbasierte Variante geplant war, können mit Wasm problemlos im Browser kompiliert werden. Und ja, das betrifft auch Java Anwendungen und alle anderen „web-fernen“ Sprachen.

Wird zukünftig nur noch mit WebAssembly programmiert?

WebAssembly wurde mit dem primären Ziel entwickelt, leistungsstärkere Webanwendungen zu ermöglichen. Der Trend hin zu browserbasierten Applikationen wird dadurch natürlich verstärkt, denn der Vorteil ist: Web Apps haben ein breiteres Publikum. Gleichzeitig macht WebAssembly die Programmierung solcher Apps effizienter, schneller und günstiger. Da inzwischen alle großen Browser das Format unterstützen, ist es eigentlich nur eine Frage der Zeit, bis es sich komplett in der Webentwicklung etabliert hat – vor allem in jenen Bereichen, wo Performance eine große, wenn nicht sogar entscheidende Rolle spielt. Wiederum wird es JavaScript nicht ersetzen, allein schon deshalb, weil die Wasm Module mit JavaScript geladen werden. Es ist und bleibt daher eine Ergänzung, die die bisherigen bestehenden Grenzen in der Softwareentwicklung ein großes Stück aufbricht. 

Zusammenfassung

WebAssembly mag in erster Linie für Performancesteigerungen konzipiert worden sein, doch das Format kann weitaus mehr. Entwicklungsteams, die plattformübergreifend oder mit einer Client-Server-Aufteilung arbeiten, profitieren zum Beispiel von kürzeren Lieferzeiten und mehr Flexibilität beim Programmieren selbst. So ist man nicht mehr an die lose Typisierung von JavaScript gebunden, sondern kann jede Hochsprache, die in Wasm kompiliert werden kann, für die gewünschten Funktionen nutzen – von Rust und C bis hin zu Java. Das Web von morgen wird Apps der Desktop-Klasse mit nativer Leistung ausführen, und WebAssembly macht es möglich.

Dokumentation im Code – ja oder nein?

Programmcode wird zwar immer für Maschinen geschrieben, aber wirklich gut ist er erst, wenn ihn auch Menschen ohne Schwierigkeiten lesen können. Doch was heißt „ohne Schwierigkeiten“? Viele Entwickler setzen dazu auf eine mehr oder weniger detaillierte Dokumentation des Codes. Der Gedanke ist klar: Kommentare sollen helfen, den Code besser nachzuvollziehen und Nachfragen oder gar Missverständnisse zu vermeiden. Aber sollte ein guter Code nicht eigentlich selbsterklärend sein? Wir gehen der Frage nach.

Warum Code überhaupt dokumentiert wird

Kommentare zwischen den Codezeilen sind nicht per se schlecht. Sie haben ihre Daseinsberechtigung. Ein Beispiel: Sie möchten komplexe Funktionsabschnitte deklarieren. Oder Sie möchten erwähnen, warum Sie an einer bestimmten Stelle genau diese Parameter verwenden und keine anderen. Problematisch wird es dann, wenn Sie

  • mehr Augenmerk auf die Dokumentation legen als auf den Code selber, und
  • die Funktionalität des Codes statt seiner Intention kommentieren.

Hinter einer übereifrigen Dokumentation steckt oft die Angst, dass andere den Code falsch oder gar nicht verstehen könnten. Denken Sie umgekehrt: Wie lässt sich Code schreiben, damit er keiner weiteren Kommunikation bedarf? Denn dann kommen Sie schnell an den Punkt, an dem Ihnen klar wird, dass 99% aller Kommentare überflüssig sind.

Ein guter Code spricht für sich

Je weniger Sie kommentieren, desto stärker müssen Sie auf klare und strukturierte Anweisungen achten. Clean Code zwingt Sie gewissermaßen ganz von selbst dazu, möglichst simpel und effizient zu coden, weshalb dieses Prinzip in der Softwareentwicklung auch so hochgelobt ist. Versuchen Sie mit Ihren Codezeilen zu kommunizieren, statt sich in ausufernden Dokumentationen zu verlieren. Hier sind vier Gründe, warum Sie zukünftig weniger kommentieren sollten:

1.      Kommentare lenken ab

Ein perfekter Code hat immer einen gewissen Fluss, wenn Sie ihn durchgehen, so als würden Sie einen flüssigen Text lesen. Kommentare unterbrechen diesen Fluss ausnahmslos und erschweren so in vielen Fällen – paradoxerweise – das Verständnis des Codes. Das ist vor allem dann der Fall, wenn es sich um redundante Kommentare handelt, die keine neuen Informationen liefern.

2.      Kommentare kosten Zeit

Zeit ist die kostbarste Ressource in der Softwareentwicklung. Überschlagen Sie einmal in Gedanken, wie viel Zeit Ihnen das Verfassen der Kommentare kostet und wie viel Zeit andere damit verbringen, diese zu lesen und mit dem Code in Einklang zu bringen. Und wer pflegt und aktualisiert die Kommentare, wenn der Code zu einem späteren Zeitpunkt angepasst werden muss? Der Punkt ist: Dokumentieren geht immer zu Lasten der Produktivität. Wenn Sie dauerhaft schneller und effizienter arbeiten wollen, müssen Sie rigoros Kommentare einsparen.

3.      Schlechte Kommentare verwirren Ihre Kollegen

Vielleicht kennen Sie das Szenario selbst: Jemand kommentiert etwas völlig Offensichtliches und Sie fragen sich insgeheim: Warum wird das kommentiert? Steckt noch mehr dahinter? Lässt sich das auch anders interpretieren? Redundante oder irreführende Kommentare können eine ganze Menge Probleme verursachen, die völlig unnötig sind. Vertrauen Sie Ihren Programmierfertigkeiten und denen Ihrer Kollegen. So oder so werden Kommentare Ihren Code nicht besser machen.

4.      Kommentare überlagern die Neutralität des Codes

Programmiersprachen sind neutral, eigene Kommentare nicht. Denken Sie immer daran, dass Ihre Kommentare Teil des Quellcodes sind und von jedem, der damit arbeitet, eingesehen werden können. Besonders relevant ist dieser Punkt für jeden, der dazu neigt, Kommentare auch als eine Art Notizen zu verwenden. Gestern Nacht noch kurz etwas vermerkt, am nächsten Morgen längst vergessen – und Ihr Kollege amüsiert sich prächtig. Darum sollten Sie sich angewöhnen, so wenige Kommentare wie nur möglich zu hinterlassen.

Fazit: Gute Programmierer kommunizieren mit ihrem Code

Schreiben Sie Programmiercode so, dass man ihn auch ohne oder nur mit wenigen Kommentaren verstehen kann. Damit sparen Sie selbst und anderen eine Menge Zeit, arbeiten produktiver und fokussieren sich auf klare, einfache Strukturen. Erfahrungsgemäß lässt dies auch das Vertrauen in die eigenen Fähigkeiten wachsen, weil Sie lernen, ausschließlich mit Ihrem Code zu kommunizieren.

GitHub Copilot: Eine leistungsfähige, umstrittene Autovervollständigung für Entwickler

Aus dem Englischen übersetzt von Darryl K. Taft. (Quelle: thenewstack.io)

Ich beschäftige mich schon seit langem mit der Anwendungsentwicklung und habe viele Durchbrüche erlebt. Einige fallen mir mehr ins Auge als andere, und Copilot von GitHub ist einer dieser Hingucker.

GitHub bezeichnet Copilot als seinen KI-Begleiter für das Pair-Programming für Entwickler.

Die Technologie ist wirklich vielversprechend. „GitHub Copilot zieht Kontext aus dem Code, an dem Sie arbeiten, und schlägt ganze Zeilen oder Funktionen vor“, erklärt GitHub-CEO Nat Friedman in einem Blogbeitrag zur Einführung der Technologie.

Copilot hilft Entwicklern, schnell alternative Wege zur Problemlösung zu finden, Tests zu schreiben und neue APIs zu erforschen, ohne mühsam auf Seiten wie Stack Overflow und im Internet nach Antworten suchen zu müssen, so Friedman. Und da es auf maschinellem Lernen basiert, lernt es bei der Benutzung. „Während Sie tippen, passt es sich an die Art und Weise an, wie Sie Ihren Code schreiben – damit Sie Ihre Arbeit schneller erledigen können“, sagte er.

Die Technologie befindet sich derzeit in der technischen Vorabversion und wird von den Nutzern innerhalb und außerhalb von Microsoft/GitHub sehr positiv bewertet, aber auch kritisiert.

„Ich bin beeindruckt davon, wie GitHub Copilot genau zu wissen scheint, was ich als nächstes eingeben möchte“, sagte Feross Aboukhadijeh, Gründer von Socket, einem Hersteller von Datenschutz- und Sicherheitssoftware, in einer Stellungnahme. „GitHub Copilot ist besonders hilfreich bei der Arbeit an React-Komponenten, wo es unheimlich genaue Vorhersagen macht. GitHub Copilot ist zu einem unverzichtbaren Teil meines Werkzeuggürtels für Programmierer geworden.“

Alex Polozov, ein leitender Forscher bei Microsoft Research, ist zwar nicht sonderlich überparteilich, twitterte aber: „Ich übertreibe nicht, Copilot wird zu den Top-3-Tech-Entwicklungen der 2020er Jahre gehören.“

GitHub Copilot ist ein Produkt der Partnerschaft zwischen Microsoft und dem KI-Forschungs- und Einsatzunternehmen OpenAI, in das Microsoft vor zwei Jahren 1 Milliarde Dollar investiert hat.

Friedman erklärte, dass „GitHub Copilot von OpenAI Codex angetrieben wird, einem neuen KI-System, das von OpenAI entwickelt wurde.“

OpenAI Codex verfügt über ein umfassendes Wissen darüber, wie Menschen Code verwenden, und ist bei der Codegenerierung wesentlich leistungsfähiger als GPT-3, unter anderem, weil es auf einem Datensatz trainiert wurde, der eine viel größere Konzentration von öffentlichem Quellcode enthält, erklärte Friedman.

Einige Leute scheinen besorgt zu sein, dass es Code generiert, der mit Code identisch ist, der unter Open-Source-Lizenzen generiert wurde, die keine abgeleiteten Werke zulassen, und der dann von einem Entwickler unwissentlich verwendet wird.

GitHub lehnte es ab, einen Sprecher für diese Nachricht zu interviewen und verwies mich auf die recht ausführliche FAQ der technischen Vorschau. Auf meine Frage nach den Datenquellen, die Copilot verwenden würde, antwortete GitHub beispielsweise wie folgt: „Es wurde auf eine Auswahl von englischem Sprach- und Quellcode aus öffentlich zugänglichen Quellen trainiert, einschließlich (aber nicht beschränkt auf) Code in öffentlichen Repositories auf GitHub.“

But which ones?

„Mit Sicherheit verwenden sie die GitHub-Repos. Und auf jeden Fall die öffentlichen“, sagt Ronald Schmelzer, Analyst bei Cognilytica, das sich auf KI-Forschung und -Analyse spezialisiert hat. „Die Frage ist natürlich, ob sie auch die privaten GitHub-Repos nutzen. Und mit oder ohne Zustimmung der Nutzer? Weitere Quellen könnten vielleicht Stack Overflow und andere Orte sein, an denen Menschen Code zur Kommentierung veröffentlichen. Aber das ist von zweifelhafter Natur, was die Qualität angeht.“

Da Copilot auf öffentlich verfügbarem Quellcode und natürlicher Sprache trainiert wurde, versteht es außerdem sowohl Programmier- als auch menschliche Sprachen. Dies ermöglicht es Entwicklern, eine Aufgabe auf Englisch zu beschreiben, und GitHub Copilot liefert dann den entsprechenden Code, so das Unternehmen.
Unterstützt mehrere Sprachen

Ein attraktives Merkmal von GitHub Copilot ist, dass es mit einer breiten Palette von Frameworks und Sprachen funktioniert, aber diese technische Vorschau funktioniert besonders gut für Python, JavaScript, TypeScript, Ruby und Go, so Friedman.

Und laut der technischen Vorschau-Seite: GitHub Copilot ist derzeit nur als Visual Studio Code-Erweiterung verfügbar. Es funktioniert überall dort, wo Visual Studio Code funktioniert – auf Ihrem Rechner oder in der Cloud auf GitHub Codespaces. Und es ist schnell genug, um es während der Eingabe zu verwenden.

„Copilot sieht wie ein potenziell fantastisches Lernwerkzeug aus – für Entwickler aller Fähigkeiten“, sagte James Governor, ein Analyst bei RedMonk. „Es kann Einstiegshürden beseitigen. Es kann beim Erlernen neuer Sprachen helfen und für Leute, die an polyglotten Codebasen arbeiten. Es setzt wohl das reiche Erbe von GitHub als erstklassiges Lernwerkzeug fort. Es ist noch zu früh, aber KI-gestützte Programmierung wird sich durchsetzen, und wo könnte man diese Erfahrung besser machen als auf GitHub?“
Ja, aber kann es skalieren?

Einige Beobachter sehen Copilot als nützlich für einfache Projekte, aber vielleicht noch nicht reif für die erste Zeit.

„Es ist eine sehr interessante Idee und sollte bei einfachen Beispielen gut funktionieren, aber ich bin gespannt, wie gut es bei komplexen Code-Problemen funktionieren wird“, sagt Eric Newcomer, Chief Technology Officer von Enterprise Infrastructure Software