Jakie są szanse, że Google Go stanie się głównym językiem? [Zamknięte]

58

Kto się tutaj uczy Go? Czy inne firmy chcą z niego korzystać? Czy to może być szeroko stosowane?

interstar
źródło
21
ruby staje się popularny po szynach, cel-c po iPhone'ie, co jest afterdo zrobienia?
ohho,
1
Okropne, to nie rozwiązuje niczego dla większości ludzi.
Daniel Little
6
Szanse są w przedziale od 0 do 1. Wszystko bardziej szczegółowe wymagałoby doktoratu z prognozowania, którego nie posiadam.
Rein Henrichs
1
@ Rein Henrichs - dostaniesz jeden, choć komitet będzie wymagał kilku zmian w końcowej pracy dyplomowej
Martin Beckett
3
Google powinien naprawdę rozważyć opracowanie zestawu Android SDK dla języka Go. Przynajmniej na początek.
setzamora

Odpowiedzi:

46

Jeśli chodzi o języki programowania, stare powiedzenie: „to nie jest to, kim jesteś, tylko to, kogo znasz” zdecydowanie się sprawdza. C i C ++ były sponsorowane przez AT&T, Java została nam sprowadzona przez Sun, rodzina .NET wyszła z Microsoftu i wszystkie stały się bardzo popularne bardzo szybko. Potem mamy Objective-C i Python, które istniały już od dłuższego czasu i pozostały naprawdę niejasne, dopóki nie zostały odkryte i podbite przez odpowiednio Apple i Google, a potem nagle naprawdę wystartowały. Ale języki bez głównego sponsora skłaniają się w ciemności, bez względu na to, jak dobrze są.

Go jest sponsorowany przez Google. Nie jest trudno dojść tutaj do właściwego wniosku. Daj mi pięć lat, a będzie ogromnie.

Mason Wheeler
źródło
13
@ixtmixilix: Mówisz poważnie? App Engine i GWT mówią inaczej.
imgx64,
4
@ixtmixilix - Guice (framework IoC oparty na Javie) jest napisany przez Google i używany w interfejsie AdWords i Wave. Szew Google do używania wielu języków.
mlk
3
+1 Zgadzam się z twoim głównym argumentem (FORTRAN, COBOL i C są na żywo i mają się dobrze), ale nie zgadzam się co do Go, ponieważ jest to po prostu eksperyment dotyczący sponsorowania korporacyjnego.
Apalala
2
AT&T tak naprawdę nie wypychał C ani C ++. C zyskał popularność, ponieważ był to język Uniksa, a później, ponieważ był lepszy niż Pascal dla większych programów. C ++ po prostu się rozprzestrzenia, zgodnie z książką Stroustrupa „Design and Evolution of C ++”. Zazwyczaj języki potrzebują aplikacji typu killer lub dużego sponsora korporacyjnego, aby osiągnąć sukces, ale języki mogą bez niej osiągnąć sukces lub nie skorzystać z niej.
David Thornley,
3
Minęło pięć lat - co teraz myślisz?
hippietrail
17

Właściwie nie sądzę, że Go odniesie taki sukces. Powodem, dla którego nie dotrze do dużych mas, jest to, że ma on być językiem programowania systemowego.

Jonas
źródło
17
Nie zgadzam się. Spójrz na kod źródłowy Linuksa dla „echo”, a następnie spójrz na implementację echa Go. Jeśli język może ogolić tysiące wierszy za pomocą takiego prostego polecenia, prawdopodobnie prawdopodobnie zgoli linie od takich rzeczy, jak biblioteki przetwarzania grafiki. A jeśli uda mu się zgolić linie z bibliotek przetwarzania grafiki, być może ludzie z oprogramowania id (na przykład) kiedyś okażą się bardziej przydatni niż C / C ++. A ponieważ id ma zwyczaj wydawania kodu źródłowego do swoich gier, grafika 3D w Go może być ogromna w ciągu 5 lat.
ixtmixilix
14
@ixtmixilix Linux nie ma nic wspólnego z echem, to część GNU.
alternatywny
3
Czy widziałeś kiedyś coś napisanego w języku Erlang? to nie bóg okropny.
The Unix Janitor,
2
Myślę, że Go przewyższy C / C ++, ponieważ językiem systemowym jest start systemu operacyjnego Google. Jeśli system operacyjny Google'a nie wystartuje, myślę, że będzie mu dużo trudniej trafić do głównego nurtu.
Jordan Parmer
2
Neiter Myślę, że Go wzrośnie bardzo szybko. Moje powody: 1. Składnia jest dość dziwna 2. Zbyt dużo otchłani 3. Biblioteka nie jest wyczerpująca 4. Model współbieżności jest lepszy na Erlangu
Daniel Voina
15

Istnieje prawdziwa potrzeba języka systemowego z bardziej nowoczesnymi funkcjami. C i C ++ są zbyt ograniczone starszym kodem i kompatybilnością wsteczną, aby znacznie poprawić. To powiedziawszy, nie sądzę, że Go spełnia tę rolę w swojej obecnej formie. Jego konstrukcja jest zbyt minimalistyczna. Chociaż jego model współbieżności jest ekscytujący, wnosi do systemu kilka innych funkcji z języków wyższego poziomu. (Ostatnim razem, gdy sprawdzałem, co było dawno temu, nie było nawet wyjątków.) Ponadto, przynajmniej do tego stopnia, że gra Benchmark Computer Language jest dobrą miarą (co prawda bardzo przybliżony wskaźnik), to nie jest prawie tak szybko, jak musi być „prawdziwy” język systemu.

Myślę, że język z największą szansę, aby wypełnić pustkę bardziej współczesnego języka Systems jest D . D jest technicznie znacznie silniejszy niż Go, ale politycznie słabszy. Nie jest wspierany przez dużą korporację. To, czego naprawdę potrzebuje, to niektóre biblioteki (jest to szybko rozwiązywane, gdy specyfikacja języka jest stabilna) i aplikacja typu killer.

dsimcha
źródło
7
re „nie ma nawet wyjątków” Podjęto poważną decyzję - golang.org/doc/go_faq.html
użytkownik151019
1
@ Mark: Interesujące. Panika i powrót do zdrowia wyglądają jak sparaliżowane wyjątki. D ma instrukcje zakresu, które są mniej więcej równoważne defer (), ale z normalnymi wyjątkami.
dsimcha
3
Nie ma wyjątków, ale ich nie potrzebuje. Zamiast tego pozwala na wielokrotne zwracanie wartości, co jest foo, err := SomeFunc()powszechne. W przypadku poważnych problemów lub miejsc, w których err nie działa bardzo dobrze, możesz użyć panic()i recover(). Są one jednak celowo stosowane bardzo rzadko; nie ma możliwości przekazania wyjątków w górę stosu, jeśli stos jest bardzo krótki, a krótkie stosy są powszechne, gdy istnieje wiele współbieżnych wątków.
crazy2be
3
„D jest technicznie znacznie mocniejszy od Go”, „Jego konstrukcja jest zbyt minimalistyczna”. Ciekawe, jak to mówisz, jakby to był fakt. To tylko twoja opinia, spójrz prawdzie w oczy.
Moshe Revah,
10

Uczę się Go i tak, jest produktywnie wykorzystywany oprócz Google i Heroku.

Go jest zdecydowanie dobrym językiem dla programowania systemowego. Prosty kod jak w C, potężne struktury jak w C ++ i funkcje bezpieczeństwa jak w Javie. Ponieważ jest to bardzo młody język, odziedziczono wiele fajnych rzeczy z innych języków:

  • iteracja ponad zakresami
  • Kanały (zapomnij o muteksach itp.)
  • brak hierarchii typów, tylko dziedziczenie interfejsu
  • w rzeczywistości Go nie zna nawet klas, ale bardziej elastyczne „typy”: interfejsy są automatycznie dziedziczone, gdy zdefiniowane metody są zgodne
  • mniej i := 1płyty kotłowej: zamiast int i = 1, func f(x, y, z int)zamiast void f(int x, int y, int z), type Foo struct { a, b int }; bar := Foo{1, 2}zamiastclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
  • wyjątki („paniki”) tylko w naprawdę wyjątkowych przypadkach: w innych przypadkach funkcja podatna na błędy może zwrócić dodatkowy parametr błędu, który można łatwo zignorować

Biorąc pod uwagę wszystkie te miłe rzeczy oraz bezpieczeństwo i wydajność znane tylko z języków o typie statycznym, wiele osób z dynamicznej społeczności języków zaczęło lubić Go. W większości przypadków kod Go jest niewiele dłuższy niż kod Ruby, ale w każdym przypadku jest bezpieczniejszy i lepiej zorganizowany.

Ale ostatecznie wydaje mi się, że argumentem zabójcy dla Go jest współbieżność. Jest to język podobny do C, który ma potężną obsługę współbieżności, znaną tylko z języków funkcjonalnych.

Philip
źródło
2
Niedawno zakochałem się w Go podczas nauki programowania AppEngine i nie mogłem powiedzieć lepiej niż ty. Dobra robota.
Adam Crossland,
5

Powiedziałbym, że zależy to głównie od bibliotek / usług / oprogramowania, które zostaną utworzone w / for / using Go. Ludzie używają czegoś w trzech sytuacjach (kolejność ma znaczenie): kiedy praktycznie nie mają innej opcji (Cel-C), kiedy ich otoczenie używa tego (FORTRAN), kiedy to ułatwia im życie (Ruby).

mbq
źródło
5

Może to być trochę za późno, ale Go staje się obecnie popularnym językiem i prawdopodobnie wejdzie do głównego nurtu z Google, który popycha go do przodu. Jest pchany jako język używany w systemach i produktach w Google i jest pchany jako język używany w Google App Engine. Na zapleczu budynku Go jest kilka bardzo ostrych ludzi. Istnieje kilka bardzo sprytnych i pomysłowych osób pracujących nad bibliotekami stron trzecich dla Go.

Idź wypełnia pustkę, której inne języki nie do końca wypełniły. Dla mnie starałem się wypełnić tę pustkę Perlem i szeregiem obejść i sztuczek. Nie wierzę, że jest to idealny język dla wszystkich sytuacji i dla wszystkich ludzi, ale z pewnością jest to kandydat na dość dużą liczbę sytuacji. Na przykład działa świetnie w aplikacjach internetowych, a także świetnie działa w aplikacjach komputerowych lub aplikacjach serwerowych. Wykonuje tak fantastyczną pracę z HTTP i WebSocket (co oznacza, że ​​można całkowicie pominąć Apache lub nginx), a jednocześnie działa bardzo dobrze w systemach Windows, Linux i OS X zarówno dla demonów, jak i zwykłych aplikacji komputerowych. W tej chwili jedyną sytuacją, która mi się nie udaje, są aplikacje na Androida, które, mam nadzieję, zostaną wkrótce usunięte. Używam go do aplikacji komputerowych z systemem Windows, aplikacji komputerowych do systemu Linux i aplikacji internetowych opartych na systemie Linux.

Wierzę, że minie kilka lat, zanim naprawdę trafi do głównego nurtu, ale dotrze tam. Myślę, że trzeba zbudować więcej bibliotek innych firm, podobnie jak liczba i wybór Perla z CPAN. Dotrze tam.

Emmaly Wilson
źródło
3

Co w ogóle oznacza „główny nurt”? Nie wiedząc o tym, bardzo trudno jest odpowiedzieć na to pytanie. Spójrzmy na to trochę.

Istnieje wiele możliwych definicji. Tu jest kilka:

Widok zarządzania:

  • Niech klienci domagają się korzystania z niego
  • Poproś kierownictwo o jego użycie
  • Nie zostanie skrytykowany przez kierownictwo za korzystanie z niego

Widok programistów:

  • Narzędzia językowe powszechnie dostępne (np. W dystrybucjach Linuksa)
  • Narzędzia językowe będą powszechnie dostępne przez 10 lat
  • Tworzy artefakty oprogramowania, które będą się utrzymywać i będą używane przez co najmniej 10 lat

Widok kariery

  • Umiejętności specyficzne dla języka można przenieść na inne stanowiska
    • Osoby rekrutujące proszą o to

Biorąc pod uwagę wszystkie powyższe argumenty, twierdzę, że jedyną uczciwą odpowiedzią jest prawdopodobnie „zbyt wcześnie, aby powiedzieć”, ale uważam, że najlepszym wskaźnikiem prawdziwej długowieczności jest liczba małychfirmy używające tego języka. Duże organizacje mają się bardzo dobrze - mogą nawet być niezbędne do rozwoju języka lub systemu narzędzi ze względu na skalę inwestycji, które mogą zastosować - ale są raczej podatne na maniery (z kilkoma wyjątkami). Natomiast jeśli mała firma zbudowała się wokół używania języka do dostarczania produktów i usług, bardzo prawdopodobne jest, że będą chcieli przyczynić się do zapewnienia, że ​​nadal będą mogli to robić w przyszłości. Stanowią one również podstawę silnego rynku pracy w tym obszarze i popytu na narzędzia. Co ciekawe, na mojej liście jest kilka wskaźników głównego nurtu (być może więcej, w zależności od kaprysów zarządzania).

Ile osób spoza Google używa Go do swojej pracy? Nie mam pojęcia. (Nie jestem. Moje potrzeby są obecnie dobrze zaspokajane przez połączenie Java, C i Tcl. YMMV.)

Donal Fellows
źródło
Świetne podsumowanie tego, co oznacza „główny nurt”. Myślę, że Go ma to wszystko, z wyjątkiem „klientów żąda, abyś go używał”
Wildcard,
2

Jest już bardziej popularny niż niektóre języki.

Możliwe, że Go jest najważniejszym językiem od ponad 20 lat. To naprawdę przynosi ogromne korzyści pod względem ogromnych zbiorów danych, które prezentują strony mediów społecznościowych, przetwarzanie w chmurze, wyszukiwanie i urządzenia mobilne.

Witryny takie jak Facebook, Twitter, Linkedin, YouTube i sieci wyświetlania reklam mają znacznie więcej zastosowań dla Google Go niż Ruby On Rails, przynajmniej w niektórych kontekstach.

mrhassell
źródło
1

Spojrzałem na Go, kiedy o tym usłyszałem. Jako kompletny początkujący wciąż uczę się języków dla początkujących (w moim przypadku Java, C #, Python i Scheme), co jest bardzo wymagające, ale gdybym nie był pochłonięty tak wieloma różnymi językami, poważnie bym to rozważył.

Liczę na moim poziomie, nie ma nic złego w zapoznaniu się z podstawami przed wskoczeniem na bandwagony. Chociaż, jeśli dobrze pamiętam, kiedy patrzyłem w górę Go, Erlang z jakiegoś powodu bardzo mnie pociąga.

SnowMonkey
źródło
1

Właśnie spojrzałem na Go z powodu tego pytania, więc nie mogę naprawdę wypowiedzieć się na temat tego, czy będzie on głównym językiem, ale jedna rzecz naprawdę mnie podnieciła:

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

Po raz pierwszy zetknąłem się z koncepcją kanałów w Occam-pi i muszę powiedzieć, że jest to jedna z najlepszych koncepcji programistycznych w historii . Sprawia, że ​​współbieżność wydaje się tak łatwa, gdy robienie tego samego w języku typu C może być czasem uciążliwe.

Z tego, co widziałem (w ciągu 10 minut, które szukałem), Go próbuje połączyć wiele różnych koncepcji programowania, ale istnieje ryzyko, że stanie się Jackiem wszystkich branż, mistrzem żadnego.

Richard
źródło
0

Podejrzewam, że to, czy zostanie ono włączone do głównego nurtu, będzie zależeć od tego, czy Google przyjmie go jako obsługiwany język dla appengine i / lub GWT.

Chris Buckett
źródło
2
W jaki sposób język systemu byłby przydatny dla Google App Engine?
ixtmixilix
Powiedziałbym, że tylko dlatego, że jest to obecnie język systemowy skompilowany z kodem maszynowym, nie powstrzyma Google przed atakowaniem innych platform w przyszłości. Wystarczy spojrzeć na to, co zrobili z kompilacją java do JavaScript w przypadku GWT i tafgetowaniem dalvik vm na Androida. Podobnie Facebook kompiluje PHP. Mogę sobie wyobrazić wyjście Go, które może być zainstalowane w aplikacji w przyszłości.
Chris Buckett,
+1 - ważne, żeby coś się przydało. Wystarczy spojrzeć na to, co iPhone zrobił dla Objective-C.
3
Tak się właśnie stało . Zobaczmy teraz, czy startuje ...
Elad
3
Dla przypomnienia, obecnie opracowuję dużą, ambitną aplikację internetową w środowisku wykonawczym AppEngine Go. Go jest niezwykle produktywny i szybki. Kod jest bardzo czytelny. To wspaniały język.
Adam Crossland,
0

Chciałbym, żeby Go stał się popularny.

Ma potężną składnię. (Poznaj zalety Python, C, Java). Jest dobry dla procesorów wielordzeniowych. (Kanał działa znacznie lepiej niż programowanie wątków). Konstrukcja zapobiega pułapce wielu programistów. (zły wskaźnik, ten sam styl kodowania według narzędzia gofmt, zapobiegaj niezainicjowanym błędom zmiennym, za pierwszym razem próbuję go za pierwszym razem, ponieważ jest to Python + C, ale z prędkością bliską 1/2 prędkości C.

Ale po dogłębnym nauczeniu się odkryłem, że odpowiednie może być opracowanie tolerancji na błędy i skalowalnej architektury

Daniel YC Lin
źródło