Які шанси Google Go перетворитися на основну мову? [зачинено]


58

Хто тут навчається Go? Чи інші компанії дивляться на його використання? Можливо, вона набуде широкого застосування?


21
Рубін стає популярним після рейок, об’єктивним-с після iphone, що ж afterробити?
оххо

1
Жахливо, це не вирішує нічого для більшості людей.
Деніел Малий

6
Шанси становлять від 0 до 1. Що б то не було більш конкретного, потребував би доктор наук з питань прогнозування, якими я не володію.
Рейн Генріхс

1
@Rein Henrichs - ви отримаєте її, хоча комітет вимагатиме декількох змін до остаточної тези
Мартін Беккет

3
Google дійсно повинен розглянути можливість розробки Android SDK для мови Go. Принаймні як старт.
сетзамора

Відповіді:


46

Що стосується мов програмування, то старе прислів’я "це не ти хто, це хто знаєш", безумовно, відповідає дійсності. C і C ++ були спонсоровані AT&T, Java нам привела Sun, сім'я .NET вийшла з Microsoft, і всі вони отримали велику популярність дуже швидко. Тоді у нас з'являються Objective-C і Python, які довгий час були навколо і залишалися дуже незрозумілими, поки Apple і Google не виявили їх, а потім раптом дійсно зняли. Але мови без головного спонсора, як правило, знемагають у невідомості, незалежно від того, наскільки вони хороші.

Google спонсорує Google. Тут не важко дійти правильного висновку. Дайте йому п’ять років, і це буде величезно.


13
@ixtmixilix: Ви серйозно? App Engine і GWT говорять інакше.
imgx64

4
@ixtmixilix - Guice (IoC-базу на базі Java) написаний Google і використовується у передній частині та хвилі AdWords. Google швом для використання декількох мов.
mlk

3
+1 Я погоджуюсь з вашим основним аргументом (FORTRAN, COBOL і C живуть добре), але я не погоджуюся з Go, тому що це лише експеримент, що стосується корпоративного спонсорства.
Апалала

2
AT&T насправді не натискав C або C ++. C отримав популярність тому, що це була мова Unix, а пізніше тому, що вона була кращою, ніж Pascal для великих програм. C ++ - це просто розповсюдження, згідно книги Stroustrup "Дизайн та еволюція C ++". Зазвичай для мов потрібен додаток-вбивця або велике корпоративне спонсорство, щоб досягти його великого розміру, але мови можуть перетворити його на велике без цього або пропустити його.
Девід Торнлі

3
Минуло п’ять років - що ти думаєш зараз?
hippietrail

17

Я насправді не думаю, що Go буде таким успішним. Причиною, чому вона не досягне великих мас, є те, що вона призначена для мови системного програмування.


17
Я не погоджуюсь. Погляньте на вихідний код Linux для 'echo', а потім подивіться на Go реалізацію echo. Якщо мова може відтіняти тисячі рядків з простої такої команди, вона, ймовірно, може відтіняти рядки з речей, таких як бібліотеки графічної обробки. І якщо він може стригти рядки бібліотек для обробки графіки, можливо, люди з програмним забезпеченням id (наприклад) коли-небудь вважають його кориснішим, ніж C / C ++. А оскільки у id є звичка випускати вихідний код для своїх ігор, 3D-графіка в Go може бути величезною протягом 5 років.
ixtmixilix

14
@ixtmixilix Linux не має нічого спільного з ехо, це частина GNU.
альтернатива

3
ви коли-небудь бачили щось написане на ерланге? це не боже жахливо
Двірник Unix

2
Я думаю, що Go перевершить лише C / C ++, оскільки системна мова - це якщо ОС Google відключиться. Якщо ОС Google не вилітає, я думаю, що їй буде набагато важче потрапляти в мейнстрім.
Джордан Пармер

2
Нейтер Я думаю, що Go буде рости дуже швидко. Мої причини: 1. Синтаксис досить дивний 2. Занадто багато Лімбо 3. Бібліотека не вичерпна 4. Модель одночасності краща на Ерланг
Даніель Война

15

Існує реальна потреба в системній мові з більш сучасними функціями. C і C ++ тут ​​занадто пов'язані застарілим кодом та зворотною сумісністю, щоб значно покращити. Однак, я не думаю, що Go виконує цю роль у своєму теперішньому вигляді. Його дизайн занадто мінімалістичний. Незважаючи на те, що його модель одночасності є захоплюючою, вона приносить мало інших функцій від мов вищого рівня до системного світу. (Востаннє я перевіряв, що, правда кажучи, деякий час тому, у нього навіть не було винятків.) Крім того, принаймні, настільки, наскільки комп'ютерна мова з орієнтиром є хорошою мірою (це, мабуть, дуже приблизний показник), це не так майже так само швидко, як і "справжніми" системами мови.

Я вважаю , що мова з найкращим шансом , щоб заповнити порожнечу більш сучасних систем мови D . D технічно набагато сильніший за Го, але політично слабший. Це не підтримується великою корпорацією. Що йому дійсно потрібно, це деякі бібліотеки (це швидко вирішується зараз, коли мовна специфіка є стабільною) та додаток-убивця.


7
повторно "у нього навіть не було винятків". Основне рішення було прийнято - golang.org/doc/go_faq.html
користувач151019

1
@Mark: Цікаво. Паніка та одужання виглядають як стиснуті винятки. D має оператори області, які приблизно еквівалентні defer (), але за звичайними винятками.
дзимча

3
Він не має винятків, але не потребує їх. Натомість він дозволяє кілька повернутих значень, що робить foo, err := SomeFunc()звичайним явищем. Для основних проблем або місць, де помилка працює не дуже добре, ви можете використовувати panic()і recover(). Однак вони навмисно використовуються дуже рідко; Немає способу передавати винятки до стека, якщо стек дуже короткий, а короткі стеки - це звичайне явище, де є багато одночасних потоків.
crazy2be

3
"D технічно набагато сильніше, ніж" Go "," Його дизайн занадто мінімалістичний ". Цікаво, як ти це кажеш так, що це факт. Це лише ваша думка, зіткнетесь із цим.
Моше Рева

10

Я вчу Go і так, це продуктивно використовується, окрім Google та Heroku.

Go, безумовно, приємна мова для системного програмування. Простий код, як у C, потужні структури, як у C ++ та функції безпеки, як у Java. Оскільки це дуже молода мова, багато приємних речей з інших мов успадковано:

  • ітерація діапазонів
  • Канали (забудьте мутекси тощо)
  • немає ієрархії типів, лише успадкування інтерфейсу
  • насправді Go навіть не знає класів, але більш гнучкі "Типи": інтерфейси автоматично успадковуються, коли визначені методи відповідають
  • менше котла: i := 1замість int i = 1, func f(x, y, z int)замість void f(int x, int y, int z), type Foo struct { a, b int }; bar := Foo{1, 2}замістьclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
  • винятки ("паніка") лише для дійсно виняткових випадків: в інших випадках функція, схильна до помилок, може повернути додатковий параметр помилки, який ви можете легко проігнорувати

Враховуючи всі ці приємні речі та безпеку та продуктивність, відомі лише зі статистично набраних мов, багатьом людям з динамічних мовних спільнот почали подобатися Go. У більшості випадків Go-код не набагато довший, ніж Ruby-код, але у кожному випадку більш безпечний і краще структурований.

Але врешті-решт я здогадуюсь, що вбивчий аргумент для Go - це паралельність. Це мова, схожа на С, яка має потужну підтримку паралельних можливостей, яка відома лише з функціональних мов.


2
Нещодавно я закохався в Go, вивчаючи його для програмування AppEngine, і я не міг би сказати, що краще, ніж ти. Молодці.
Адам Кросленд

5

Я б сказав, що це головним чином залежить від бібліотек / служб / програмного забезпечення, які будуть створені в / для / з використанням Go. Люди використовують щось у трьох ситуаціях (питання порядку): коли у них практично немає іншого варіанту (Objective-C), коли їх оточення використовує це (FORTRAN), коли це полегшує їх життя (Ruby).


5

Можливо, це буде трохи пізно, але Go стає популярною мовою зараз і, швидше за все, увійде в мейнстрім, коли Google висуває її вперед. Його висувають як мову, яка використовується для систем і продуктів у Google, і її застосовують як мову для використання з Google App Engine. На бекенді будівлі Go є кілька дуже гострих людей, що покращують її. Є кілька дуже розумних і творчих людей, які працюють над сторонніми бібліотеками для Go.

Go заповнює порожнечу, яку інші мови ще не зовсім заповнили. Для мене я намагався заповнити цю порожнечу Перлом і купою обхідних шляхів і хитрощів. Я не вірю, що це ідеальна мова для всіх ситуацій і всіх людей, але, безумовно, це кандидат для досить великої кількості ситуацій. Наприклад, він чудово працює для веб-додатків, а також відмінно працює для настільних програм або додатків на сервері. Він робить таку фантастичну роботу з HTTP та WebSocket (це означає, що ви можете пропустити Apache або nginx взагалі), а також працює дуже добре на Windows, Linux та OS X як для демонів, так і для звичайних програм для настільних ПК. Зараз єдина ситуація, яка мені не вдається - це додатки для Android, які, сподіваюся, незабаром виправляться. Я використовую його для настільних додатків Windows, настільних додатків Linux та веб-додатків на базі Linux.

Я вірю, що пройде кілька років, перш ніж він дійсно потрапить у мейнстрім, але він дістанеться. Я думаю, що для цього потрібно створити більше сторонніх бібліотек, як і кількість та вибір, які Perl має у CPAN. Він туди потрапить.


3

Що все-таки означає "мейнстрім"? Не знаючи цього, відповісти на це питання завжди важко. Давайте трохи розберемося в цьому.

Існує багато можливих визначень. Ось декілька:

Вид управління:

  • Запропонуйте клієнтам, які вимагають його використання
  • Запропонуйте менеджменту вимагати, щоб ви його використовували
  • Не буде критикуватися керівництвом за його використання

Погляд розробників:

  • Загальнодоступні мовні засоби (наприклад, у дистрибутивах Linux)
  • Мовні інструменти будуть доступні 10 років
  • Створює програмні артефакти, які зберігатимуться та будуть використовуватися принаймні 10 років

Перегляд кар'єри:

  • Мовні навички можна перенести на інші робочі місця
    • Рекрутери просять про це

Враховуючи все вищесказане, я стверджую, що єдиний чесний відповідь, ймовірно, "занадто рано, щоб сказати", але я вважаю, що найкращим показником будь-якого реального довголіття є кількість малихпідприємства, які використовують мову. У великих організацій все дуже добре - вони навіть можуть бути важливими для зростання мови або системи інструментів через масштаби інвестицій, які вони можуть застосувати, - але вони досить схильні до прийняття моди (за кількома винятками). На відміну від цього, якщо малий бізнес створив мову, яка використовує мову для доставки продуктів та послуг, вони, ймовірно, хочуть внести свій внесок у забезпечення того, що вони зможуть зробити це в майбутньому. Вони також становлять основу сильного ринку праці в цій галузі, і попит на інструменти теж. Цікаво, що це декілька індикаторів мейнстриму в моєму списку (можливо, більше, залежно від примх управління).

Отже, скільки людей за межами Google використовують Go для своєї роботи? Я поняття не маю. (Я ні. Мої потреби в даний час добре обслуговуються сумішшю Java, C і Tcl. YMMV.)


Чудовий підсумок того, що означає "мейнстрім". Я думаю, що у Go є все це, за винятком "клієнти вимагають, щоб ви це використовували".
Wildcard

2

Це вже популярніше, ніж деякі мови.

Можливо, Go - це найважливіша мова за 20+ років. Це справді дає великі переваги в плані масових наборів даних, які представляють сайти соціальних медіа, хмарні обчислення, пошук та мобільний телефон.

Сайти, такі як мережі Facebook, Twitter, Linkedin, YouTube та Ad-Serving, мають набагато більше користі для Google Go, ніж Ruby On Rails, принаймні в деяких контекстах.


1

Я зазирнув у Го, коли почув про це. Як повний початківець я все ще вивчаю мови для початківців (у моєму випадку Java, C #, Python та Scheme), які можна багато взяти на себе, але якби я не захопився такою кількістю різних мов, я б серйозно подумав

Я думаю, що на своєму рівні немає шкоди в тому, щоб знизити основи перед стрибком на естакадах. Хоча, якщо я добре пам’ятаю, коли я дивився вгору, я чомусь дуже приваблював Ерланг.


1

Я тільки що дивився на Go через це питання, тому я не можу коментувати, чи не буде він виходити як основна мова, але одна річ мене дуже схвилювала:

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

Я вперше натрапив на концепцію каналів в Occam-pi, і мушу сказати, що це одна з найкращих концепцій програмування коли-небудь . Це робить одночасність здається такою простою, коли робити те саме на мові типу С іноді може бути болем.

З того, що я бачив (за 10 хвилин, які я подивився), Go виглядає, що намагається поєднати багато різних програм програмування, але це ризикує бути Джеком всіх торгів, майстрам жодної.


0

Я підозрюю, що чи стане вона мейнстрімом, залежатиме від того, чи сприйнять Google її як підтримувану мову для аппендину та / або GWT.


2
Чим мовна система може бути корисною для Google App Engine?
ixtmixilix

Я б сказав, що лише тому, що це системна мова, складена для машинного коду в даний час, не зупинить Google від націлювання на інші платформи в майбутньому. Подивіться, що вони зробили з java- компіляцією на JavaScript у випадку з GWT та тафтуванням dalvik vm для android. Так само і Facebook, що компілює PHP. Я міг би передбачити вихід Go, який можна було б встановити в апенгін в якийсь момент в майбутньому.
Кріс Бакетт

+1 - важливо, щоб воно було для чогось корисним. Подивіться, що iPhone зробив для Objective-C.

3
Добре, що щойно сталося . Тепер давайте подивимось, чи злетить ...
Елад

3
Для завершення я зараз розробляю великий, амбітний веб-додаток на час виконання програми AppEngine Go. Їхати надзвичайно продуктивно і швидко. Код дуже читабельний. Це чудова мова.
Адам Кросленд

0

Бажаю, щоб Go став популярним.

Він сильний у синтаксисі. (Дізнайтеся про переваги у python, C, Java). Це добре для багатоядерного процесора. (Канал функціонує набагато краще, ніж програмування потоків). Дизайн запобігає падінню багатьох програмістів. (неправильний вказівник, той самий стиль кодування інструментом gofmt, запобігання змінному неініціалізованому помилку. Спочатку я спершу спробую це як python + C, але зі швидкістю близько 1/2 швидкості C.

Але, після глибокого вивчення, я виявив, що це може бути зручним для розвитку відмовостійкості та масштабованої архітектури

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.