Какими решениями занимается Go?

Кажется, что Go разработан как замена для проблем, которые вы ранее решили с помощью С++. Это точное утверждение? Какими решениями занимается Go?

Ответ 1

Я думаю, что MarkCC подводит итоги:

Goroutines и каналы обеспечивают лучшую поддержку, которую я видел за пределами Erlang для использования concurrency. И, честно говоря, я думаю, что Go намного менее уродливый, чем Эрланг. (Извините, поклонники Erlang, но мне действительно не нравится Erlang.) По сравнению с Java, который, по моему мнению, является главным конкурентом Go в этой области, Go goroutines и каналы работают гораздо проще, чем Java-потоки и блокировки, просто абсолютно никакого сравнения. Идти в значительной степени разрушает конкуренцию в этой области.

Ответ 2

Из собственного FAQ Google по теме: Какова цель проекта?:

Отсутствует основной язык систем в течение более десятилетия, но за это время вычислительный ландшафт изменился чрезвычайно. Есть несколько тенденции:

  • Компьютеры намного быстрее, но разработка программного обеспечения не быстрее.
  • Управление зависимостями - большая часть разработки программного обеспечения сегодня, но "файлы заголовков" языков в Традиции C противоречат чистоте анализ зависимостей - и быстро сборник.
  • Существует растущее восстание против громоздких систем типа, таких как те из Java и С++, подталкивая людей к динамически типизированным языкам таких как Python и JavaScript.
  • Некоторые фундаментальные понятия, такие как сбор мусора и параллельные вычисление не поддерживается популярные языки систем.
  • Появление многоядерных компьютеров вызвало беспокойство и спутанность сознания.

Мы считаем, что стоит попробовать снова с новым языком, параллельным, собранный мусором язык с быстрым сборник. Что касается пунктов выше:

  • В течение нескольких секунд можно скомпилировать большую программу Go одиночный компьютер.
  • Go представляет собой модель для построения программного обеспечения, которая делает зависимость легко анализировать и избегать Накладные расходы на C-стиль включают файлы и библиотеки.
  • Система типа Go не имеет иерархии, поэтому времени нет определяя отношения между типы. Кроме того, хотя Go имеет статический типы, на которые пытается типы чувствуют себя легче, чем в типичные языки OO.
  • Go полностью собран с мусором и обеспечивает фундаментальную поддержку для одновременное выполнение и коммуникации.
  • По своей конструкции Go предлагает подход к построению системное программное обеспечение на многоядерных машинах.

Ответ 3

Они нацелены на проекты, которые могут и нуждаются в высоком уровне concurrency. Несмотря на их часто задаваемые вопросы, говорящие, что Google НЕ использует это внутренне, вы определенно можете видеть, что на него повлияли их собственные потребности и желания.

Ответ 4

В дополнение к ответам Ben из FAQ Google, я считаю, что Go предназначен как язык интегрированный с Native Client, чтобы упростить разработку для предстоящей Chrome OS.

Ответ 5

Я думаю, что ваше утверждение является частично точным, но можно утверждать, что ранее вы использовали Erlang для высококонкурентных приложений, таких как телефонии и т.д. Это то, что разработал Erlang для Ericsson. Я не использую Erlang и не знаю его недостатков, но, вероятно, некоторые из них могут объяснить, почему Google решил создать свой собственный параллельный язык.

Интересен факт, что Erlang не упоминается на странице Faq, и поэтому предложение о том, что более быстрые компьютеры должны привести к более быстрой разработке программного обеспечения. Мой компьютер не поддерживает меня: -).

Ответ 6

Проект Go был задуман проще писать серверы и другое программное обеспечение Google использует внутренне, но реализация пока недостаточно развит для крупномасштабное производство использование. В то время как мы продолжать развитие, мы также делаем эксперименты с языком как среда-кандидат. Это попасть туда. Например, сервер за http://golang.org является Программа Go; на самом деле это просто Сервер документов Godoc работает в конфигурации производства.

Источник: Часто задаваемые вопросы о Go - Google использует Go внутри?