Einführung in die Programmiersprache Borgo
- Gewünscht war eine Sprache zum Schreiben von Anwendungen, die ausdrucksstärker als Go ist, aber nicht so komplex wie Rust
- Go ist einfach und intuitiv, man wünscht sich jedoch oft mehr Typsicherheit
- Rust macht Spaß beim Arbeiten (zumindest bei Single-Thread-Code), ist aber zu umfangreich und komplex und mitunter schmerzhaft
- Borgo ist eine neue Sprache, die nach Go transpiliert wird, und vollständig mit bestehenden Go-Paketen kompatibel ist
- Die Borgo-Syntax ähnelt Rust, wobei Semikolons optional sind
Hauptfunktionen
- Algebraische Datentypen und Pattern Matching
- Verwendung von Option statt
nil
- Verwendung von Result statt mehrerer Rückgabewerte
- Fehlerbehandlung mit dem
?-Operator
Lokal ausführen
- Borgo ist in Rust geschrieben, daher wird cargo benötigt
- Um alle
.brg-Dateien im aktuellen Ordner zu kompilieren:
- Der Compiler erzeugt
.go-Dateien, die sich ganz normal ausführen lassen
Meinung von GN⁺
- Rust ist eine leistungsstarke Sprache, hat aber eine steile Lernkurve und eine hohe Einstiegshürde. Borgo wirkt daher wie ein interessanter Versuch, die Vorteile von Rust im Go-Ökosystem nutzbar zu machen. Da sich das Projekt noch in einer frühen Phase befindet, ist allerdings mit einem noch schwachen Ökosystem zu rechnen
- Dass
nil und Fehlerbehandlung durch Option und Result verbessert werden und die Fehlerbehandlung mit dem ?-Operator vereinfacht wird, dürfte einige Punkte lösen, die Go-Entwickler oft als umständlich empfinden
- Dass bestehende Go-Bibliotheken unverändert weiterverwendet werden können, ist ein großer Vorteil. Da jedoch Rust-Syntax übernommen wurde, könnte die Eingewöhnung für Go-Entwickler Zeit brauchen
- Da es sich um einen Transpile-Ansatz handelt, könnte Borgo beim Debugging oder bei der Laufzeit-Performance gegenüber nativem Go-Code im Nachteil sein. Für den Einsatz in groß angelegtem Produktionscode wirkt es noch etwas zu früh
- So wie Kotlin seinen Anteil im JVM-Ökosystem ausgebaut hat, braucht Borgo fortlaufende Verbesserungen bei Codequalität, Entwicklerproduktivität, Lernkurve und weiteren Aspekten, um eine echte Lösung für Go zu werden. Wenn es sich weiterentwickelt, könnte es zu einer attraktiven Alternative im Go-Umfeld werden
1 Kommentare
Hacker-News-Kommentare
Zusammenfassung:
Optionalimpl, Syntax für Channels und Goroutinen, die eingebaute FunktionzeroValue()usw.pubundprivateeingeführt wurden