PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was haltet Ihr von Google Go (Golang)?


Gast
2024-02-15, 20:07:34
Go wurde aus Unzufriedenheit über die bestehenden Sprachen zur Softwareentwicklung wie C++ oder Java im Kontext heutiger Computersysteme, insbesondere im Hinblick auf skalierbare Netzwerkdienste, Cluster- und Cloud Computing, entwickelt.[3] Im Vergleich zu C++ hat Go weit weniger Keywords. Eines der Probleme, das Go lösen möchte, ist die Compiler-Ineffizienz in C und C++. Wichtige Ziele bei der Entwicklung waren unter anderem die Unterstützung von Nebenläufigkeit mit nativen Sprachelementen und die Erleichterung der Softwareentwicklung mit großen Entwicklerteams und großen Codebasen.[4] Go besitzt einen eigenen Garbage Collector, erlaubt die Verwendung von Zeigern, verzichtet jedoch auf Zeigerarithmetik.[5] Go ist eine kompilierte Sprache, bei der Wert auf eine hohe Übersetzungsgeschwindigkeit gelegt wurde.

Go orientiert sich syntaktisch an der Programmiersprache C mit einigem Einfluss aus der Wirthschen Sprachfamilie (Pascal, Modula und insbesondere Oberon). Die Unterstützung für Nebenläufigkeit wurde nach Vorbild der von Tony Hoare eingeführten Communicating Sequential Processes (CSP) gestaltet und steht in Tradition der Programmiersprachen Newsqueak, Alef und Limbo.[6]

Quelle: https://de.wikipedia.org/wiki/Go_(Programmiersprache)


Habt ihr mit Google GO bereits gearbeitet? Seid ihr damit in Berührung gekommen?

Ich habe eine Zeit lang GO angewendet und einige Nebenprojekte damit gemacht, aber ich verwende GO aktuell nicht mehr aktiv. Diese Antwort basiert auf persönlichen Erfahrungen...

Sprachfunktionen:

Go bietet kuratierte, aber begrenzte Sprachfunktionen. Es sieht aus wie eine erweiterte C-Sprache mit einem einfachen Objektsystem. Ich finde nicht, dass Go im Vergleich zu anderen modernen Hochsprachen besonders gut abschneidet.

Hier sind einige Punkte:

Keine Generika: Viele Gophers versuchen einige Tricks wie leere Schnittstellen oder Codegenerierungsprogramme. Keiner davon stellt mich zufrieden.
Keine Vererbung: OO-Code-Basis muss umgestaltet werden.
Kein funktionales Überladen
Kein Überladen von Operatoren
Erzwungener Codestil: Gut für die Technik, aber manchmal zu restriktiv.

Keiner der Punkte ist wirklich kritisch, aber manche Programmierer mögen es einfach nicht.

Bibliothek

Das hängt von den Zielanwendungen ab. Für Serveranwendungen ist es wunderbar geeignet. (Google-Anwendungen sind meist webbasiert.) Für andere Bereiche ist es nicht so gut. Zum Beispiel fehlt GO immer noch eine de facto GUI-Bibliothek.

Toolchain

GO bietet eine gute integrierte Toolchain. Es gibt einige Entwicklungswerkzeuge von Drittanbietern; ich bevorzuge integrierte Werkzeuge, wenn möglich. Ich glaube nicht, dass eine moderne Hochsprache ohne eine anständige Toolchain überleben würde.

Anwendung

Go ist gut in einigen Bereichen, aber nicht gut in anderen. Im folgenden einige Punkte:

Konsolendienstprogramm: Go ist eine einfache Sprache im Vergleich zu C und C++, also eine gute Alternative für Kommandozeilenprogramme. Die meisten Endbenutzer werden jedoch nicht an CLI-Programmen interessiert sein.

GUI-Anwendungen: Google scheint an diesem Bereich nicht interessiert zu sein. Derzeit müssen wir auf Community-Pakete zurückgreifen.

Serveranwendungen (z. B. Webanwendungen): Aus diesem Grund hat Google GO(LANG) kreiert. Die Unterstützung ist großartig.

Mobile Anwendungen: Go Mobile ist noch experimentell. Zudem ist ja noch "Kotlin" im Spielfeld der Android-Entwicklung unterwegs. Die Zukunft von Go mobile bleibt unklar. (Brauchen wir noch eine weitere Sprache für Android?)

Datenanalytik: Nicht so gut. Es gibt einige Community-Pakete.

Fazit: Obwohl GO eine Allzwecksprache ist, liegt seine Stärke immer noch hauptsächlich bei Serveranwendungen.

Zudem: https://winfuture.de/news,121508.html

Exxtreme
2024-02-16, 12:28:31
Also ich halte Go für eine der überflüssigsten Sprachen ever. Würde das nicht von Google kommen dann würde das weitgehend ignoriert werden. Weil diese Sprache absolut nichts sinnvolles auf die Waage bringt, was es in anderen Sprachen in sehr ähnlicher Form auch nicht gibt. Aber gut, so farmt Google auch noch ein paar cargo cult-Opfer ab, die meinen, sie seien jetzt modern und hipp weil sie was von Google verwenden.

Shink
2024-02-16, 14:04:20
Go ist (erst? schon?) 15 Jahre alt und heute ungefähr so verbreitet wie Delphi oder Visual Basic. In diesem Alter hatten Fortran, C oder Java schon "die Welt erobert".
Da glaube ich eher an Rust oder Java.
Kotlin seh ich als nicht mehr als syntactical sugar für die JVM.

RattuS
2024-02-16, 20:52:09
Ich habe vor zwei Jahren einen Webservice rund um Datenschutz und Consent Management in Go gebaut. Precompiled und mit eingebetteter Library ist so eine Single Binary für einen HTTP-Server schon echt nett fürs schnelle Deployment. Ob man das im Zeitalter von Containern unbedingt braucht, sei mal dahingestellt.

Ansonsten sind die offensichtlichen Vorteile das Concurrency-Modell ("Goroutines") und die Möglichkeit mit Pointern zu arbeiten, ohne gleich das gesamte Memory Management machen zu müssen (Go kommt mit einer GC).

Bei Syntax und Entwicklerfreundlichkeit bin ich gespalten. Für mich persönlich nicht gerade die intuitivste Sprache, aber es geht auch schlimmer.

Die Community ist in den letzten Jahren gewachsen und es gibt mittlerweile deutlich mehr Packages. Die Sprache hat sich ebenso kontinuierlich weiterentwickelt. Generics gibt es übrigens mittlerweile auch schon.

Ich würde Go jetzt nicht als "typisches Google Ding" abstempeln (im Gegensatz zu Angular), aber weltbewegend ist die Sprache auch nicht - das stimmt wohl.

myMind
2024-02-16, 23:35:06
Das Eingangsposting liest sich so, als ob man eine Sprache anhand eines Featuresets bewerten müsste. Es ist aber eher so wie bei vielen anderen Dingen im Leben, dass mehr Featurehäkchen nicht unbedingt "besser" bedeutet. Und genau das ist die Zielrichtung von Go: Einfachheit. Und dann mal schauen was passiert. Und da passieren zum Teil ganz gute Dinge.

Beispiel 1: Die Tendenz z.B. in Java immer noch eine Abstraktionsschicht und noch einen Wrapper um das herumzubauen, was man eigentlich erreichen will, scheint man in Go plötzlich nicht mehr zu brauchen. Strukturell werden die Programme einfacher. Ähnlicher zu C-Programmen. Viel weniger aufgeblasen. Mehr auf das Problem fokussiert. In gewisser Weise mehr Skript-like. Und das kann eine sehr gute Sache sein, muss es aber nicht immer.

Beispiel 2: Das Kompillieren und Ausführen eines Go-Programms geschieht unfassbar schnell. Es fühlt sich eher wie ein Interpreter an, ist aber so schnell wie C. Der Kompiliervorgang ist quasi instant und das auch bei größeren Projekten. Container laufen from Scratch, also ohne irgendwas in das Image zu packen.

Beispiel 3: Die Abwärtskompatibilität ist hervorragend. Seit ich Go benutze muss ich mir über Kompatiblitätsfragen keinen Kopf mehr machen. Go ist bei Version 1.22, d.h. die letzten 22 Releases waren abwärtskompatibel.

Beispiel 4: Go hat ein supereinfaches und superenges Errorhandling. Ähnlich zu C. Einfach: Das Errorhandling selbst ist so simpel, dass es selbst keine Fehler produziert. Eng: Bei einem Fehler kommt man sofort auf die Fehlerquelle. Es ist sehr einfach den Fehlern auch den Datenkontext mitzugeben.

Beispiel 5: Nebenläufigkeit ist sehr elegant implementiert und viel effizienter als z.B. Betriebssystemthreads.

Go füllt den Raum zwischen langsamen Skriptsprachen und den fetten Hochsprachen wunderbar aus. Es ist extrem schnell und hat sehr wenige schnell zu erlernende Sprachkonstrukte.

Den größten Nachteil von Go sehe ich darin, dass der Schlankheitswahn häufig auch zu Lasten der Intuitivität geht. Wenn ich in C# eine Duration zwischen zwei Zeitpunkten berechnen möchte, dann bekomme ich das selbst nach jahrelanger C#-Abstinenz mühelos ohne viel Googeln hin. Das ist in Go nicht so. Da ist das Leben schon etwas rauher. Eine typische Logging-Bibliothek in Go kann z.B. weit weniger als eine in Java. Ist dafür einfach zu erlernen und rasend schnell. Hat aber typischerweise auch weniger Komfortfeatures. Ein anderes Beispiel hierfür wären Runes in Go. Das ist konzeptionell nicht wirklich einfach zugänglich.

Jedenfalls, ohne den eigenen Programmierstil der Sprache anzupassen, wird es definitiv nichts mit Go. Wer C kennt, hat es vergleichsweise leicht. Wer nur Java, C# oder ähnliches kennt, der wird eine Weile brauchen, um sich umzustellen. Die Sprache ist syntakisch einfach, aber damit gute Programme zu schreiben zu können, erfordert erhebliche Einarbeitung. Die Maus sagt: Klingt widersprüchlich, ist aber so.

Go ist eine Tolle Sprache für die dazu passenden Probleme. Desktopanwendungen gehören - wie oben richtig bemerkt - nicht dazu. Schlanke Webanwendungen >> Yessss

6gwF8mG3UUY

"I've had a lot of fun programming the grug language versus the 600 IQ floating guy language"

samm
2024-03-27, 07:39:20
Oh, noch ein Go-Thread im 3DC, yeah!

Ich bin ja ein sehr glücklicher Nutzer davon gewesen und wäre es gern noch heute beruflich, bin es aber nur noch privat. Der berufliche Aspekt war übrigens genau eine Desktop-Anwendung, cross-plattform (verschiedene OS und Prozessorarchitekturen), das UI war offensichtlich nicht in Go.