Kto się tutaj uczy Go? Czy inne firmy chcą z niego korzystać? Czy to może być szeroko stosowane?
Kto się tutaj uczy Go? Czy inne firmy chcą z niego korzystać? Czy to może być szeroko stosowane?
Odpowiedzi:
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.
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.
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.
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.
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:
i := 1
pł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);
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.
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).
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.
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:
Widok programistów:
Widok kariery
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.)
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.
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.
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.
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.
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
after
do zrobienia?