Каковы шансы Google Go стать основным языком? [закрыто]


58

Кто здесь учится го? Другие компании хотят использовать его? Это может стать широко используемым?


21
ruby становится популярным после рельсов, target-c после iphone, что afterза ход?
Ох,

1
Ужасно, это ничего не решает для большинства людей.
Даниэль Литтл

6
Скорее всего, от 0 до 1. Для чего-то более конкретного потребуется докторская степень в области прогнозирования, которой у меня нет.
Рейн Хенрикс

1
@ Рейн Хенрикс - вы получите один, хотя комитету потребуется внести несколько изменений в окончательный тезис
Мартин Беккет

3
Google действительно должен рассмотреть вопрос о разработке Android SDK для языка Go. По крайней мере, для начала.
Сетзамора

Ответы:


46

Когда дело доходит до языков программирования, старая поговорка «это не тот, кто вы есть, а тот, кого вы знаете», безусловно, верна. C и C ++ были спонсированы AT & T, Java была предоставлена ​​нам Sun, семейство .NET произошло от Microsoft, и все они стали очень популярными очень быстро. Затем у нас есть Objective-C и Python, которые были довольно долгое время и оставались неясными, пока их не обнаружили и не раскритиковали Apple и Google соответственно, а затем внезапно они действительно взлетели. Но языки без основного спонсора имеют тенденцию томиться в безвестности, независимо от того, насколько они хороши.

Go спонсируется Google. Здесь нетрудно прийти к правильному выводу. Дайте ему пять лет, и это будет огромно.


13
@ixtmixilix: ты серьезно? App Engine и GWT говорят иначе.
imgx64

4
@ixtmixilix - Guice (основа IoC на основе Java) написана Google и используется во внешнем интерфейсе AdWords и в Wave. Google шов, чтобы использовать несколько языков.
MLK

3
+1 Я согласен с вашим основным аргументом (FORTRAN, COBOL и C живы и здоровы), но я не согласен с Go, потому что это всего лишь эксперимент для получения корпоративного спонсорства.
Апалала

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

3
Прошло пять лет - что вы думаете сейчас?
Hippietrail

17

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


17
Я не согласен. Взгляните на исходный код Linux для 'echo', затем посмотрите на реализацию echo на Go. Если язык может сбрасывать тысячи строк с помощью простой команды, подобной этой, он, вероятно, может сбрасывать строки с таких вещей, как библиотеки обработки графики. И если он может сбить линии с библиотек графической обработки, возможно, люди из программного обеспечения id (например) когда-нибудь найдут его более полезным, чем C / C ++. А поскольку у id есть привычка выпускать исходный код для своих игр, трехмерная графика в Go может быть огромной в течение 5 лет.
ixtmixilix

14
@ixtmixilix Linux не имеет ничего общего с echo, это часть GNU.
альтернатива

3
Вы когда-нибудь видели что-нибудь написанное на эрланге? это не ужасно
Дворник Unix

2
Я думаю, что Go превзойдет только C / C ++ как системный язык, если ОС Google взлетит. Если ОС Google не взлетит, я думаю, что будет гораздо сложнее попасть в мейнстрим.
Джордан Пармер

2
Я думаю, что Go будет расти очень быстро. Мои причины: 1. Синтаксис довольно странный 2. Слишком много неопределенности 3. Библиотека не является исчерпывающей 4. Модель параллелизма лучше в Erlang
Даниэль Война

15

Существует реальная потребность в системном языке с более современными функциями. C и C ++ слишком ограничены унаследованным кодом и обратной совместимостью, чтобы улучшать их значительно. Тем не менее, я не думаю, что Go выполняет эту роль в ее нынешнем виде. Его дизайн слишком минималистичен. В то время как его модель параллелизма впечатляет, она приносит немного других функций из языков более высокого уровня в мир систем. (В прошлый раз, когда я проверял, что, правда, было некоторое время назад, у него даже не было исключений.) Кроме того, по крайней мере, в той степени, в которой игра «Сравнение компьютерных языков» является хорошей мерой (по общему признанию, это очень грубый показатель), это не так. почти так же быстро, как должен быть «настоящий» системный язык.

Я считаю , что язык с лучшим шансом , чтобы заполнить пустоту более современных систем языка D . D технически намного сильнее, чем Go, но политически слабее. Это не поддержано крупной корпорацией. Что действительно нужно, так это некоторые библиотеки (это быстро решается сейчас, когда языковая спецификация стабильна) и приложение-убийца.


7
«Это даже не имело исключений». Было принято важное решение - golang.org/doc/go_faq.html
user151019

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 - параллелизм. Это C-подобный язык, который имеет мощную поддержку параллелизма, известную только из функциональных языков.


2
Недавно я влюбился в Go, изучая его для программирования на AppEngine, и я не мог бы сказать это лучше, чем вы. Отлично сработано.
Адам Кроссленд

5

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


5

Это может быть немного поздно для этого, но Go становится популярным языком сейчас и, вероятно, войдет в мейнстрим с Google, продвигая его вперед. Он выдвигается как язык, используемый для систем и продуктов в Google, и выдвигается как язык для использования с Google App Engine. Есть некоторые очень острые люди на бэкэнде, строящем Го и улучшающем его. Есть некоторые очень умные и изобретательные люди, работающие над сторонними библиотеками для Go.

Go заполняет пустоту, которую не заполнили другие языки. Для меня я пытался заполнить эту пустоту Perl и кучей обходных путей и уловок. Я не верю, что это идеальный язык для всех ситуаций и для всех людей, но он, безусловно, является кандидатом на довольно большое количество ситуаций. Например, он отлично работает для веб-приложений, а также отлично подходит для настольных приложений или серверных приложений. Он делает такую ​​фантастическую работу с 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 и рекламные сети, гораздо шире используют Google Go, чем Ruby On Rails, по крайней мере в некоторых контекстах.


1

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

Я полагаю, что на моем уровне нет ничего плохого в том, чтобы опустить основы, прежде чем прыгать на подножки. Хотя, если я правильно помню, когда я смотрел вверх по Го, меня почему-то очень тянуло к Эрлангу.


1

Я только что посмотрел на Go из-за этого вопроса, поэтому я не могу прокомментировать, будет ли он широко распространённым языком, но одна вещь меня просто по-настоящему взволновала:

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

Я впервые столкнулся с концепцией каналов в Occam-pi, и должен сказать, что это одна из лучших концепций программирования в мире . Это делает параллелизм таким легким, что выполнение одного и того же в языке C-типа иногда может быть затруднительным.

Из того, что я видел (за 10 минут, которые я посмотрел), Go пытается объединить множество различных концепций программирования, но при этом есть риск, что он станет мастером на все руки, а не мастером.


0

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


2
Как системный язык будет полезен для Google App Engine?
ixtmixilix

Я бы сказал, что только потому, что это системный язык, скомпилированный в машинный код в настоящее время, не помешает Google ориентироваться на другие платформы в будущем. Достаточно взглянуть на то, что они сделали с компиляцией Java в JavaScript в случае GWT и назначением dalvik vm для Android. Точно так же Facebook компилирует PHP. Я мог бы представить выход Go, который можно было бы установить в appengine когда-нибудь в будущем.
Крис Бакетт

+1 - главное, чтобы это было чем-то полезно. Просто посмотрите, что iPhone сделал для Objective-C.

3
Ну, это только что произошло . Теперь давайте посмотрим, взлетит ли он ...
Elad

3
Напомним, что в настоящее время я разрабатываю большое амбициозное веб-приложение во время выполнения AppEngine Go. Go чрезвычайно продуктивен и быстр. Код очень удобочитаемый. Это прекрасный язык.
Адам Кроссленд

0

Желаю, чтобы Go стал популярным.

Это мощный в синтаксисе. (Узнайте о преимуществах Python, C, Java). Это хорошо для многоядерных процессоров. (Функция канала намного лучше, чем программирование потоков). Конструкция предотвращает многие ловушки программиста. (неверный указатель, тот же стиль кодирования инструментом gofmt, предотвратить ошибку неинициализированной переменной. Сначала я пробую сначала, так как это python + C, но со скоростью около 1/2 скорости C.

Но, после глубокого изучения я обнаружил, что это может быть подходящим для разработки отказоустойчивости и масштабируемой архитектуры

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.