Donnerstag, 29. Februar 2024

4 Wochen 4 Sprachen: Rust


Wir starten diese Mini-Serie mit der Programmiersprache Rust. Angekündigt wurde Rust das erste Mal 2010, seit 2015 gibt es eine stabile Version. Die Sprache ist entsprechend relativ jung. Entwickelt wurde die Sprache ursprünglich von Graydon Hoare bei der Mozilla Fondation. Rust ist unter der Apache-Lizenz verfügbar und wird heute von der Rust-Stiftung (weiter-) entwickelt. Die Rust-Stiftung wurde von namhaften Firmen gegründet und getragen: AWS, Google, Huawei, Microsoft und Mozilla. Rust ist eine Low-Level oder Systemprogrammiersprache.

Die grossen Tech-Firmen Microsoft und Google führen bis zu 70 % aller schwerwiegenden Sicherheitslücken in ihren jeweiligen Windows- und Chrome-Projekten auf Speicherprobleme zurück (www.zdnet.com).

Unternehmen von Microsoft bis Amazon betrachten die Sprache (Rust) als Schlüssel für ihre Zukunft. Die Chat-Plattform Discord nutzt Rust, um ihr System zu beschleunigen, Dropbox verwendet es, um Dateien mit Ihrem Computer zu synchronisieren, und Cloudflare verarbeitet damit mehr als 20 % des gesamten Internetverkehrs… Sogar die US-Regierung wirbt eifrig für Software in Rust, um ihre Prozesse sicherer zu machen.“ – Clive Thompson, MIT Technology Review (www.linkedin.com).

Eine AWS-Forschungsgruppe fand angeblich heraus, dass in Rust geschriebener Code zweimal weniger Strom verbraucht als in Java geschriebener Code. Zum Stromverbrauch verschiedener Sprachen zu unterschiedlichen Problemen gibt es diverse Tests und Berichte.

Für was soll die Sprache verwendet werden?
Hardwarenahe Entwicklung, Betriebssystem-Komponenten, Treiber, IoT oder auch im Blockchain-Umfeld etc.

Was macht die Sprache so stark?
Die Stärken von Rust liegen in der strikten statischen Typisierung und dem Borrowing-System, das Sicherheit und Kontrolle über Speicherressourcen bietet, ohne auf Garbage Collection zurückzugreifen. Es kompiliert zu binärem Code, was sich positiv auf die Performance auswirkt. Seine Nebenläufigkeit unterstützt zudem gleichzeitige Zugriffe. Dadurch, dass Speicherfehler mit einer sehr hohen Wahrscheinlichkeit vermieden werden (100 % gibt es nicht), gilt Rust als sehr robuste und sichere Systemprogrammiersprache.

Beispiele:
Die Syntax ist in einfachen Beispielen wie dem folgenden relativ intuitiv. Die Realität ist aber nicht so einfach und das Programmieren mit Rust mit zunehmender Komplexität nicht ganz trivial. Die Lernkurve ist bei vielen am Anfang ordentlich steil, flacht dann aber bald ab. Rust-Experte wird man nicht in ein paar Tagen. Es erfordert Ausdauer und Übung. Das richtige Erlenen von Rust ist daher sicher ein mittelfristiges Projekt.

Hier ein einfaches Beispielprogramm, welches Wörter in einem String sortiert. Aber Vorsicht: Versuchen Sie es damit nicht mit Wörtern in korrekten Grossbuchstaben ("Meine Worte sind sortiert"). Vielleicht würden Sie vom Ergebnis überrascht werden:
Warum hat die Sprache Zukunft und warum soll ich sie lernen?
Tech-Giganten und Firmen im Hardware-Bereich setzen auf Rust. So sind bspw. Teile vom Google-Betriebssystem Fuchsia in Rust geschrieben (fuchsia.googlesource.com). Auch Microsoft hat begonnen, Teile vom Windows-Betriebssystem in Rust umzuschreiben (www.theregister.com). Und seit der Version 6.1 ist Rust auch im Linux-Kernel angekommen (www.zdnet.com). Kurz: Die Sprache ist gekommen um zu bleiben.

Wer künftig im Hardware nahen Bereich Programmieren will, kommt um Rust wohl nicht (ganz) herum. Wenn auch nicht alle Rust lieben.

Buchempfehlung: Link 
Sie wollen schnell mit Rust spielen? Hier finden Sie einen Playground.

#rust #programming

Freitag, 23. Februar 2024

Cloud Serie: GCP führt den Papierkorb bei Cloud Storage ein


Ganze 29 Jahre nach Microsoft (damals mit der Veröffentlichung von Windows 95) führt Google per 1. März 2024 den Papierkorb beim Cloud Storage ein: Google-Mitteilung

Das nennt sich "soft delete" und dürfte eine nützliche Funktion sein. Überrascht ist man ab der Ankündigung der Funktion wohl eher, weil man bislang insgeheim davon ausging, dass es diese Funktion standardmässig schon gibt. Was auf den ersten Blick als rein positive Nachricht ohne notwendige Massnahmen aussieht, entpuppt sich bei genauerer Betrachtung als doch nicht ganz so trivial. Google schreibt in der Mitteilung: "At launch, soft delete will be enabled on all new and existing buckets with seven days of default protection." Sehr praktisch, das man nichts unternehmen muss.

Nun der vorliegende Blog behandelt hin und wieder Compliance-Themen und bei all der Begeisterung für die neue Funktion und die Standardeinstellung hebt die Compliance-Stimme in mir mahnend den Zeigefinger.

Es gibt nämlich durchaus Situationen und vertragliche Verpflichtungen, dass Daten unmittelbar gelöscht werden müssen. Aus wirtschaftlichen Gründen sind Backups meist davon ausgenommen, weil man einzelne Daten nur schwer und daher nicht wirtschaftlich sinnvoll, aus einem Backup entfernen kann. Eine Papierkorb-Funktion fällt da in der Regel nach dem Verständnis der Legals aber nicht darunter. Ist man vertraglich oder gar gesetzlich zur unverzüglichen Löschung verpflichtet, muss der Papierkorb nach dem Löschen auch geleert werden oder aber die Einstellung für das oder die betroffenen Buckets in Cloud Storage müssen von Beginn weg ohne "soft delete" konfiguriert werden.

Sie nutzen Cloud Storage? Dann empfehle ich die Records Management-Richtlinien zu konsultieren um herauszufinden, ob es solche Löschverpflichtungen für Ihre Unternehmung gibt. Je nach Anforderungsanalyse müssen Sie die Konfigurationen der betroffenen Buckets in der GCP entsprechend anpassen und sicherstellen, dass künftige neue Buckets bei der Erstellung die für Sie richtige Konfiguration bekommen. Organization Policies können da unter Umständen ein nützliches Werkzeug sein.

Die Ankündigung von Google kommt aus meiner Sicht relativ knapp. Google war sich wohl ab der Freude der nützlichen Funktion nicht bewusst, dass Firmen jetzt in kurzer Zeit eine Betroffenheits- und Risikoanalyse machen müssen und allenfalls sogar noch Anpassungsbedarf an Ihren IaC-Scripts oder gar Applikationen haben.




Donnerstag, 22. Februar 2024

4 Wochen 4 Sprachen: Prolog

Programmiersprachen gibt es wie Sand am Meer. Manchmal beschleicht einem das Gefühl, dass jede technische Universität und jede grosse IT-Firma, die etwas auf sich hat, hin und wieder eine eigene neue Programmiersprache entwickeln muss. Die Liste bekannter Programmiersprachen ist entsprechend lang. Dabei hat jede ihre Vor- und Nachteile, Stärken und Schwächen. Es gibt allgemeine Programmiersprachen und solche, die für einen spezifischen Zweck entwickelt wurden. Es gibt dabei Sprachen, die über Jahrzehnte recht stabil sind, während andere einem durchaus schnelleren Änderungszyklus unterworfen sind.

Welche Programmiersprache soll man nun erlernen und welche Sprache soll für welchen Einsatzweck verwendet werden? Und warum spielt das überhaupt eine so grosse Rolle?

Zäumen wir das Pferd von Hinten auf. Die Wahl der falschen Sprache kann ins Geld gehen. Stellen Sie sich vor, Sie haben sich im Jahr 2000 für Visual Basic Classic (VB6) entschieden und in 4 Jahren Entwicklungszeit ihr komplettes System damit programmiert. Im Frühjahr 2005 war Schluss mit dem offiziellen Support (für die Entwicklungsumgebung). Wenn Sie konnten, mussten Sie halbautomatisch auf .Net Migrieren oder den Code (teilweise) neue schreiben. Hätten Sie damals das Backend in C oder C++ und das Frontend mit HTML erstellt, würde es selbst heute noch mehr oder weniger unverändert laufen. Extrembeispiele, richtig. Aber reale. Die Technologiewahl kann für eine Firma durchaus entscheidend sein. Selbstverständlich ist die Programmiersprache beim Technologie-Stack nur ein Teil. Daneben gibt es viele weitere Entscheide für Frameworks, Libraries, Datenbanksysteme etc. zu treffen.

In dieser Miniserie der kommenden Wochen geht es aber einzig um Programmiersprachen. Und damit zurück zur ersten Frage: Welche Sprache soll für welchen Einsatzweck verwendet werden?

Ich habe auch keine Glaskugel. Und wie immer wiedergebe ich hier meine persönliche Meinung, ohne Gewähr. Es gibt etliche Statistiken zu den beliebtesten und am meisten verwendeten Sprachen. Wahrscheinlich kennen Sie diese alle bereits. In den nächsten Wochen werde ich vier Sprachen vorstellen, welche die folgenden Gebiete abdecken:
  • Systemnahe Entwicklung: Betriebssystemkomponenten, Treiber etc.
  • Frontend, Mobile, GUI allgemein
  • Backend, Business-Logik, kurze Tasks, einfache Logiken
  • Backend, Business-Logik, aufwändige Berechnungen/komplexe Logiken
  • Maschine Learning, Prozesssteuerungen, Datenbearbeitungen

Es sind meine aktuellen persönlichen (Zukunfts-) Favoriten für den jeweilige Einsatzzweck. Hat man 3 davon in seinem Werkzeugkasten, ist man aus meiner Sicht sehr gut für die Zukunft gerüstet und Firmen tun gut daran, sich diese einmal für ihre künftigen Technologie-Stack anzusehen.

Und wer weiss, vielleicht gibt es am Ende noch eine Bonus-Sprache als Überraschung. Die erste wird die letzte sein.