Wie stehen die Chancen, dass Go von Google zur Standardsprache wird? [geschlossen]


58

Wer lernt hier Go? Erwägen andere Unternehmen, es zu nutzen? Wird es wahrscheinlich weit verbreitet sein?


21
Ruby wird beliebt nach Rails, Objective-C nach iPhone, was ist afterlos?
Ohho

1
Schrecklich, es löst für die meisten Menschen nichts.
Daniel Little

6
Die Chancen liegen zwischen 0 und 1. Alles, was spezifischer ist, würde einen Doktortitel in Prognostication erfordern, den ich nicht besitze.
Rein Henrichs

1
@Rein Henrichs - Sie erhalten eine, obwohl das Komitee einige Änderungen an der Abschlussarbeit vornehmen muss
Martin Beckett

3
Google sollte sich wirklich überlegen, ein Android SDK für Go zu entwickeln. Zumindest als Anfang.
Setzamora

Antworten:


46

Wenn es um Programmiersprachen geht, gilt auf jeden Fall das alte Sprichwort: "Es ist nicht wer du bist, es ist wer du kennst". C und C ++ wurden von AT & T gesponsert, Java wurde von Sun zu uns gebracht, die .NET-Familie kam von Microsoft und alle wurden sehr schnell sehr beliebt. Dann haben wir Objective-C und Python, die eine ganze Weile da waren und so lange im Dunkeln blieben, bis sie von Apple bzw. Google entdeckt und hochgejubelt wurden und dann plötzlich richtig losfuhren. Aber Sprachen ohne einen großen Sponsor neigen dazu, im Dunkeln zu liegen, egal wie gut sie sind.

Go wird von Google gesponsert. Es ist nicht schwer, hier zum richtigen Ergebnis zu kommen. Geben Sie es fünf Jahre und es wird riesig sein.


13
@ixtmixilix: Ist das dein Ernst? App Engine und GWT sagen etwas anderes.
imgx64

4
@ixtmixilix - Guice (ein Java-basiertes IoC-Framework) wurde von Google geschrieben und im AdWords-Frontend und in Wave verwendet. Google-Naht, um mehrere Sprachen zu verwenden.
mlk

3
+1 Ich bin mit Ihrem Hauptargument einverstanden (FORTRAN, COBOL und C sind gut und lebendig), aber ich bin nicht mit Go einverstanden, da es nur ein Experiment ist, bei dem es sich um ein Unternehmenssponsoring handelt.
Apalala

2
AT & T hat C oder C ++ nicht wirklich gedrückt. C wurde populär, weil es die Sprache von Unix war, und später, weil es für größere Programme besser als Pascal war. C ++ verbreitete sich laut Stroustrups Buch "Design and Evolution of C ++". Normalerweise benötigen Sprachen eine Killer-App oder ein großes Firmen-Sponsoring, um erfolgreich zu sein, aber Sprachen können erfolgreich sein, ohne dies zu tun oder es zu verpassen.
David Thornley

3
Es ist fünf Jahre her - was denkst du jetzt?
Hippietrail

17

Ich glaube nicht, dass Go so erfolgreich sein wird. Ein Grund, warum es die große Masse nicht erreichen wird, ist, dass es eine Sprache für die Systemprogrammierung sein soll.


17
Ich stimme dir nicht zu. Schauen Sie sich den Linux-Quellcode für 'echo' an und dann die Go-Implementierung von echo. Wenn die Sprache mit einem einfachen Befehl wie diesem Tausende von Zeilen entfernen kann, kann sie wahrscheinlich auch Zeilen entfernen, die aus Elementen wie Grafikverarbeitungsbibliotheken stammen. Und wenn es Zeilen aus Grafikverarbeitungsbibliotheken entfernen kann, werden es die Leute von id software (zum Beispiel) vielleicht eines Tages nützlicher finden als C / C ++. Und da id die Gewohnheit hat, Quellcode für ihre Spiele zu veröffentlichen, könnte die 3D-Grafik in Go innerhalb von 5 Jahren enorm sein.
ixtmixilix

14
@ixtmixilix Linux hat nichts mit Echo zu tun, das ist ein Teil von GNU.
Alternative

3
hast du jemals etwas in erlang geschrieben gesehen? das ist nicht gott schrecklich
Der Unix-Hausmeister

2
Ich denke, Go wird C / C ++ als Systemsprache nur übertreffen, wenn Googles Betriebssystem startet. Wenn Googles Betriebssystem nicht startet, wird es meiner Meinung nach viel schwerer, den Mainstream zu erreichen.
Jordan Parmer

2
Ich denke, dass Go sehr schnell wachsen wird. Meine Gründe: 1. Syntax ist ziemlich seltsam 2. Zu viel Limbo 3. Bibliothek nicht erschöpfend 4. Nebenläufigkeitsmodell ist besser auf Erlang
Daniel Voina

15

Es besteht ein dringender Bedarf an einer Systemsprache mit moderneren Funktionen. C und C ++ sind hier zu stark an Legacy-Code und Abwärtskompatibilität gebunden, um viel zu verbessern. Trotzdem glaube ich nicht, dass Go diese Rolle in seiner jetzigen Form erfüllt. Das Design ist zu minimalistisch. Das Modell der Parallelität ist zwar aufregend, bringt aber nur wenige andere Funktionen aus höheren Sprachen in die Systemwelt. (Das letzte Mal, als ich nachgesehen habe, was zugegebenermaßen vor einiger Zeit war, hatte es nicht einmal Ausnahmen.) Außerdem ist das Computersprachen-Benchmark-Spiel zumindest in dem Maße eine gute Maßnahme (es ist zugegebenermaßen ein sehr grober Indikator), nicht fast so schnell wie eine "echte" Systemsprache sein muss.

Ich denke , die Sprache mit der besten Chance , die Lücke einer moderneren Systemen Sprache zu füllen D . D ist technisch viel stärker als Go, aber politisch schwächer. Es wird nicht von einem großen Unternehmen unterstützt. Was es wirklich braucht, sind einige Bibliotheken (dies wird schnell angegangen, da die Sprachspezifikation stabil ist) und eine Killer-App.


7
Es wurde eine wichtige Entscheidung getroffen - golang.org/doc/go_faq.html
user151019

1
@Mark: Interessant. Panik und Erholung sehen aus wie abgeschnittene Ausnahmen. D hat Gültigkeitsbereichsanweisungen, die mit defer () in etwa identisch sind, jedoch mit normalen Ausnahmen.
Dsimcha

3
Es gibt keine Ausnahmen, aber es braucht sie nicht. Stattdessen werden mehrere Rückgabewerte zugelassen, was foo, err := SomeFunc()allgemein üblich ist. Bei größeren Problemen oder Stellen, an denen Fehler nicht gut funktionieren, können Sie panic()und verwenden recover(). Diese werden jedoch absichtlich sehr selten eingesetzt; Wenn der Stapel sehr kurz ist, können Ausnahmen nicht weitergeleitet werden, und kurze Stapel sind an der Tagesordnung, wenn viele Threads gleichzeitig ausgeführt werden.
crazy2be

3
"D ist technisch viel stärker als Go", "sein Design ist zu minimalistisch". Interessant, wie du das sagst, als wäre es eine Tatsache. Es ist nur deine Meinung, sei ehrlich.
Moshe Revah

10

Ich lerne Go und ja, es wird neben Google und Heroku produktiv eingesetzt.

Go ist definitiv eine schöne Sprache für die Systemprogrammierung. Einfacher Code wie in C, leistungsfähige Strukturen wie in C ++ und Sicherheitsfunktionen wie in Java. Da es eine sehr junge Sprache ist, wurden viele nette Dinge aus anderen Sprachen geerbt:

  • Iteration über Bereiche
  • Kanäle (Mutexe etc. vergessen)
  • Keine Typhierarchie, nur Schnittstellenvererbung
  • Tatsächlich kennt Go nicht einmal Klassen, sondern flexiblere "Typen": Schnittstellen werden automatisch vererbt, wenn definierte Methoden übereinstimmen
  • weniger Boilerplate: i := 1statt int i = 1, func f(x, y, z int)statt void f(int x, int y, int z), type Foo struct { a, b int }; bar := Foo{1, 2}stattclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
  • Ausnahmen ("Panik") nur für wirklich außergewöhnliche Fälle: In den anderen Fällen kann eine fehleranfällige Funktion einen zusätzlichen Fehlerparameter zurückgeben, den Sie leicht ignorieren können

Angesichts all dieser netten Dinge und der Sicherheit und Leistung, die nur von statisch getippten Sprachen bekannt sind, haben viele Leute aus der Community der dynamischen Sprachen begonnen, Go zu mögen. In den meisten Fällen ist der Go-Code nicht viel länger als der Ruby-Code, aber in jedem Fall sicherer und besser strukturiert.

Aber am Ende denke ich, dass das Killerargument für Go die Parallelität ist. Es ist eine C-ähnliche Sprache, die eine leistungsstarke Parallelitätsunterstützung bietet, die nur von funktionalen Sprachen bekannt ist.


2
Ich habe mich kürzlich in Go verliebt, als ich es für die AppEngine-Programmierung gelernt habe, und ich hätte es nicht besser sagen können als Sie. Gut gemacht.
Adam Crossland

5

Ich würde sagen, dass dies hauptsächlich von den Bibliotheken / Diensten / Software abhängt, die in / für / mit Go erstellt werden. Menschen benutzen etwas in drei Situationen (Ordnungsfragen): wenn sie praktisch keine andere Wahl haben (Ziel-C), wenn ihre Umgebung es benutzt (FORTRAN), wenn es ihnen das Leben erleichtert (Ruby).


5

Es ist vielleicht etwas spät dafür, aber Go wird jetzt eine beliebte Sprache und wird wahrscheinlich mit Google in den Mainstream aufgenommen, um es voranzutreiben. Es wird als eine Sprache für Systeme und Produkte innerhalb von Google gepusht und als eine Sprache für die Verwendung mit Google App Engine. Es gibt einige sehr scharfe Leute im Backend von Go, die es bauen und verbessern. Es gibt einige sehr clevere und einfallsreiche Leute, die an Bibliotheken von Drittanbietern für Go arbeiten.

Go füllt eine Lücke, die andere Sprachen nicht ganz gefüllt haben. Für mich habe ich versucht, diese Lücke mit Perl und einer Reihe von Workarounds und Tricks zu füllen. Ich glaube nicht, dass es die perfekte Sprache für alle Situationen und alle Menschen ist, aber es ist sicherlich ein Kandidat für eine ganze Reihe von Situationen. Zum Beispiel funktioniert es hervorragend für Web-Apps, während es auch hervorragend für Desktop-Apps oder serverbasierte Apps funktioniert. Mit HTTP und WebSocket (was bedeutet, dass Sie Apache oder Nginx komplett überspringen können) ist dies ein fantastischer Job, während er auch unter Windows, Linux und OS X sowohl für Daemons als auch für reguläre alte Desktop-Apps sehr gut läuft. Momentan ist die einzige Situation, in der dies für mich fehlschlägt, Android-Apps, von denen ich hoffe, dass sie bald behoben werden. Ich verwende es für Windows-Desktop-Apps, Linux-Desktop-Apps und Linux-basierte Web-Apps.

Ich glaube, es wird einige Jahre dauern, bis es wirklich in den Mainstream kommt, aber es wird dort ankommen. Ich denke, es muss mehr Bibliotheken von Drittanbietern erstellt werden, ähnlich wie die Anzahl und Auswahl, die Perl mit CPAN hat. Es wird dort ankommen.


3

Was bedeutet "Mainstream" überhaupt? Ohne das zu wissen, ist es so schwer, diese Frage zu beantworten. Schauen wir uns das mal an.

Es gibt viele mögliche Definitionen. Hier sind ein paar:

Management-Ansicht:

  • Lassen Sie sich von Kunden fordern, dass Sie es verwenden
  • Lassen Sie sich von der Geschäftsleitung fordern, dass Sie es verwenden
  • Wird vom Management nicht dafür kritisiert, dass es verwendet wird

Entwicklersicht:

  • Allgemein verfügbare Sprachtools (z. B. in Linux-Distributionen)
  • Sprachwerkzeuge sind in der Regel 10 Jahre lang verfügbar
  • Erstellt Software-Artefakte, die mindestens 10 Jahre lang verwendet werden

Karrieristischer Standpunkt:

  • Sprachspezifische Fähigkeiten können auf andere Berufe übertragen werden
    • Personalvermittler fragen danach

Angesichts all dessen würde ich argumentieren, dass die einzige ehrliche Antwort wahrscheinlich "zu früh zu sagen" ist, aber ich glaube, der beste Indikator für eine echte Langlebigkeit ist die Anzahl der kleinenUnternehmen, die die Sprache verwenden. Große Organisationen sind alle sehr gut - sie sind aufgrund des Umfangs der Investitionen, die sie tätigen können, möglicherweise sogar für das Wachstum einer Sprache oder eines Systems von Tools von entscheidender Bedeutung -, aber sie neigen eher dazu, Moden zu überholen (mit wenigen Ausnahmen). Im Gegensatz dazu möchten kleine Unternehmen, die die Sprache für die Bereitstellung von Produkten und Dienstleistungen einsetzen, mit großer Wahrscheinlichkeit dazu beitragen, dass dies auch in Zukunft möglich ist. Sie bilden auch das Fundament eines starken Arbeitsmarktes in der Region und auch die Nachfrage nach Werkzeugen. Witzigerweise sind dies mehrere Indikatoren für Mainstreaming auf meiner Liste (möglicherweise mehr, abhängig von den Launen des Managements).

Wie viele Personen außerhalb von Google verwenden Go für ihre Arbeit? Ich habe keine Ahnung. (Ich bin nicht. Meine Bedürfnisse werden derzeit durch eine Mischung aus Java, C und Tcl. YMMV gut bedient.)


Großartige Zusammenfassung dessen, was „Mainstream“ bedeutet. Ich denke, Go hat all dies, mit Ausnahme von "Kunden verlangen, dass Sie es verwenden".
Wildcard

2

Es ist bereits populärer als einige Sprachen.

Möglicherweise ist Go die wichtigste Sprache seit über 20 Jahren. Es bietet wirklich einige große Vorteile in Bezug auf massive Datensätze, die von Social Media-Sites, Cloud Computing, Search und Mobile bereitgestellt werden.

Websites wie Facebook, Twitter, Linkedin, YouTube und Ad-Serving-Netzwerke werden für Google Go zumindest in einigen Zusammenhängen viel häufiger verwendet als Ruby On Rails.


1

Ich habe in Go geschaut, als ich davon hörte. Als Anfänger lerne ich immer noch die Anfängersprachen (in meinem Fall Java, C #, Python und Schema), was eine Menge zu beachten ist, aber wenn ich nicht in so viele verschiedene Sprachen vertieft wäre, hätte ich ernsthaft darüber nachgedacht

Ich denke, auf meinem Niveau kann es nicht schaden, die Grundlagen zu verbessern, bevor man auf Bandwaggons springt. Wenn ich mich recht erinnere, fühlte ich mich aus irgendeinem Grund sehr von Erlang angezogen, als ich nach oben schaute.


1

Ich habe mich wegen dieser Frage gerade erst mit Go befasst, daher kann ich nicht wirklich beurteilen, ob es sich als Mainstream-Sprache anbietet, aber eines hat mich gerade wirklich aufgeregt:

http://golang.org/doc/go_spec.html#Channel_types

Ich bin zum ersten Mal auf das Konzept der Kanäle in Occam-pi gestoßen und muss sagen, dass es eines der besten Programmierkonzepte überhaupt ist . Dies lässt Parallelität so einfach erscheinen, dass es manchmal mühsam sein kann, dasselbe in einer C-Typ-Sprache zu tun.

Nach dem, was ich gesehen habe (in den 10 Minuten, in denen ich nachgesehen habe), versucht Go, viele verschiedene Programmierkonzepte zu kombinieren, aber das birgt das Risiko, dass es ein Alleskönner ist, ein Meister von nichts.


0

Ich vermute, dass es davon abhängt, ob Google es als unterstützte Sprache für Appengine und / oder GWT einsetzt.


2
Wie wäre eine Systemsprache für Google App Engine nützlich?
ixtmixilix

Ich würde sagen, dass nur, weil es sich um eine Systemsprache handelt, die zur Zeit für Maschinencode kompiliert wurde, Google nicht davon abhält, künftig auf andere Plattformen zuzugreifen. Schauen Sie sich an, was sie mit der Java-Kompilierung in JavaScript im Fall von GWT gemacht haben und tippen Sie den Dalvik-VM für Android. Ebenso Facebook, das PHP kompiliert. Ich könnte mir eine Ausgabe von Go vorstellen, die zu einem späteren Zeitpunkt in appengine installiert werden kann.
Chris Buckett

+1 - Wichtig ist, dass es für etwas nützlich ist. Schauen Sie sich an, was das iPhone für Objective-C getan hat.

3
Nun , das ist gerade passiert . Mal sehen, ob es losgeht ...
Elad

3
Ich entwickle derzeit eine große, ehrgeizige Webanwendung für die AppEngine Go-Laufzeitumgebung. Go ist enorm produktiv und schnell. Der Code ist sehr gut lesbar. Es ist eine wundervolle Sprache.
Adam Crossland

0

Ich wünschte, Go wird populär.

Es ist mächtig in der Syntax. (Lernen Sie die Vorteile von Python, C, Java). Es ist gut für Multi-Core-CPU. (Die Kanalfunktion ist viel besser als die Thread-Programmierung). Das Design verhindert die Gefahr vieler Programmierer. (falscher Zeiger, gleicher Codierungsstil durch Tool gofmt, nicht initialisierter Fehler durch Variable verhindern. Zum ersten Mal versuche ich es zum ersten Mal, da es Python + C ist, aber mit einer Geschwindigkeit nahe 1/2 Geschwindigkeit von C.

Aber nachdem ich gründlich gelernt hatte, fand ich es möglicherweise geeignet, Fehlertoleranz und skalierbare Architektur zu entwickeln

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.