Кажется, что 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 внутри?