Google Go — Еще один язык!


Google теперь использует свой новый язык — Go — для реальных задач программирования. Настоящий вопрос в том, почему?

Всегда остается загадкой, почему один компьютерный язык взлетает, а другой просто никогда не приближается к взлетно-посадочной полосе. Почему Руби? Почему именно Java? Почему Питон?

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

Конечно, одна из причин, по которой язык завоевывает популярность, заключается в том, что его продвигает какой-то крупный коммерческий концерн. Это было очевидно в случае с C# — Microsoft представила его вместе с Visual Basic .NET и почти в одночасье создала сообщество программистов, которого просто не существовало за день до запуска. Теперь Google, похоже, мечтает о своем шансе ввести новый язык в мир программирования.

Язык Google называется Go, но есть, по крайней мере, еще один язык (и хорошо известная игра) с очень похожим названием, так что это, возможно, придется изменить. С другой стороны, Go соответствует-oogle, который может быть именем для будущей IDE или отладчиком для языка!

В настоящее время язык представляет собой беспорядок различных компиляторов командной строки, каждый из которых имеет свою целевую платформу, плюсы и минусы. Не ждите удобной IDE в ближайшее время.

Так почему же другой язык?

Существует точка зрения, которая говорит, что у вас действительно должна быть очень веская причина для введения еще одного языка, и, честно говоря, трудно увидеть обоснование для Go. Если вы читаете заявленные цели языка, то все они похвальны — сокращенный синтаксис, легкий ввод кода, быстрая компиляция и быстрый запуск.

Как и почти во всех других современных языках, синтаксис похож на C с несколькими вариациями. Утверждается, что синтаксис был очищен по сравнению с C с меньшим количеством скобок и ключевым словом в начале каждого объявления, чтобы указать тип объявляемой вещи — var, func, type и т. Д.

В основном это довольно сокращенный язык, по-видимому, в попытке сделать его быстрым. Функции, которые были опущены, включают обработку исключений, наследование, обобщения, перегрузку и арифметику указателей. Обратите внимание, что у него есть указатели, просто нет арифметики указателей.

Он даже не особенно объектно-ориентирован в классическом смысле. Объекты Go совместимы, если один реализует подмножество интерфейса другого и, следовательно, может использоваться вместо него.  Поскольку типы могут реализовывать несколько интерфейсов, это своего рода множественное наследование, даже если язык даже не поддерживает наследование типов любого рода. Это создает неявную зависимость типа, а не иерархию классов, которая является новой особенностью Go. Еще одна отсутствующая функция-перегрузка метода. Метод Go вызывается только по имени, и подпись просто должна быть правильной. Все эти дизайнерские решения ускоряют компиляцию и запуск языка.

Основные типы данных включают карты (они же ассоциативные массивы) и строки. О единственной заметной особенностью базового языка является возможность возвращать несколько значений, которые могут быть получены с помощью нескольких назначений, например:

x,y = myFunc();

В чем язык, по-видимому, силен, так это в параллелизме. В нем нет нитей, но есть гороутины — игра на сопрограммах. Goroutines работают одновременно на множестве потоков. Каждая гороутина получает свой собственный стек и по существу изолирована от других гороутин. Чтобы разрешить связь, Go предоставляет каналы, которые могут быть переданы в качестве параметров. Это делает создание параллельных программ в стиле производителя-потребителя довольно простым.

Итак, в конце концов, что у нас есть? Легкий язык системного программирования, которому не на что жаловаться, с несколькими особенностями и быстрой компиляцией и выполнением. Достаточно ли этого, чтобы оправдать его существование? Лично я думаю, что нет, но, похоже, я в меньшинстве, поскольку индекс TIOBE показывает, что он находится на 18-м месте и быстро растет. Конечно, есть и другая небольшая деталь о языке Go — на данный момент он плохо работает под Windows. Существует порт Windows, но он плохо документирован и с ним трудно начать работу, но у него есть преимущество в том, что это двоичная установка.

Если вы хотите попробовать свои силы в Go, см. раздел Начало работы с Google Go

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


Добавить комментарий