Язык программирования Go
Содержание:
1.Философия и возможности (Вы читаете данный раздел);
2. Компиляторы;
3. IDE и утилиты;
4. Документация.
Язык программирования Go (http://qoianq.org/) появился в 2007 году в недрах корпорации Google. Своими корнями он восходит к языку Limbo, разработанному для малоизвестной операционной системы Inferno (наследницы более известной Plan 9). Официальный анонс языка состоялся в 2009, а с 2010 года Go официально используется в Google для «реальных вещей», но что конкретно на нем реализовано, пока не разглашается. Официальная поддержка гигантской корпорацией отличает Go от всех других языков «новой волны», которые разрабатываются либо сообществом энтузиастов (как Vaia), либо небольшими компаниями (как D). Сам язык Go, его компиляторы и все утилиты изначально являются полностью кроссплатформенными и распространяются по свободной BSD-подобной лицензии. Компиляторы работают в Linux, FreeBSD и Mac OS. Порт для Windows, использующий MinGW, тоже практически закончен, хотя некоторые возможности еще не реализованы.
Учитывая, что языку Go всего два года, его популярность можно без преувеличения назвать феноменальной. На странице http://go-iang.cat-v.org/go-code собрано около сотни программ, написанных на Go. Среди них утилиты для облачных вычислений, игры, интерпретаторы, web-серверы и разнообразные web-приложения, р2р-клиенты, музыкальные плееры и даже рейтрейсеры. Для Go уже написано множество готовых модулей и привязок к внешним библиотекам. Язык хорошо документирован, о нем уже написано несколько книг, а сообщество разработчиков очень активно. Без сомнения такая популярность является прямым следствием пристального внимания ко всему, что делает Google и достаточно агрессивной рекламы нового языка. Попробуем разобраться, так ли хорош язык Go на самом деле.
Go - типичный язык «новой волны». По заявлению разработчиков Go сочетает эффективность компилируемого языка с простотой программирования, присущей динамическим скриптовым языкам. Go - строго типизированный язык, который компилируется в родной машинный код. Основными его «фишками» являются эффективное автоматическое управление памятью с помощью «сборщика мусора», встроенная поддержка конкурентного программирования и очень быстрая компиляция. Go - достаточно «маленький» язык. Количество встроенных функций и конструкций в нем невелико и по этому параметру он похож на Си. Однако, в отличие от Си, Go не предназначен для низкоуровневого системного программирования. По своим возможностям язык находится где-то между Си и скриптовыми языками, такими как Python. В Go есть многие элементы языков «сверхвысокого» уровня:
- встроенные строки с поддержкой Unicode;
- динамические массивы со срезами;
- ассоциативные массивы;
- анонимные функции и замыкания;
- прекрасная поддержка многопоточности;
- отложенное (deferred) выполнение кода.
В то же время объектная модель языка очень необычна, а многие продвинутые возможности «больших» языков (таких как С++, Java или D) отсутствуют:
- нет наследования;
- нет шаблонов, обобщенных классов и функций;
- нет средств метапрограммирования;
- нет утверждений;
- нет перегруженных операторов и методов; нет арифметики указателей;
- нет системы перехвата ошибок с помощью исключений.
Go позиционируется как язык, ориентированный в первую очередь на написание серверных частей web-приложений (именно для этих целей он используется в Google). Он не является универсальным системным языком, таким как С++ или D. Основная ниша Go - программы, в которых нужно порождать множество взаимодействующих друг с другом потоков (что, как правило, и нужно для web-сервисов). В какой-то степени Go - это императивный аналог функционального языка Erlang.
Создатели языка упорно утверждают, что Go - это «Си-подобный» язык, однако он не имеет практически ничего общего с Си кроме фигурных скобок для обозначения блоков кода и пары управляющих конструкций. Общее впечатление от языка совершенно иное и он не похож ни на один из распространенных сейчас языков. Синтаксис Go не отличается внутренней элегантностью и продуманностью, так что, не изучив язык осно-вательно, понять написанные на нем программы очень сложно. В синтаксисе имеются и странные детали в «эзотерическом» стиле Perl и TCL (достаточно упомянуть управление областью видимости символов с помощью их капитализации, непонятные ограничения на форматирование кода и возврат функциями нескольких значений).
1.
2. Компиляторы;
3. IDE и утилиты;
4. Документация.
Язык программирования Go (http://qoianq.org/) появился в 2007 году в недрах корпорации Google. Своими корнями он восходит к языку Limbo, разработанному для малоизвестной операционной системы Inferno (наследницы более известной Plan 9). Официальный анонс языка состоялся в 2009, а с 2010 года Go официально используется в Google для «реальных вещей», но что конкретно на нем реализовано, пока не разглашается. Официальная поддержка гигантской корпорацией отличает Go от всех других языков «новой волны», которые разрабатываются либо сообществом энтузиастов (как Vaia), либо небольшими компаниями (как D). Сам язык Go, его компиляторы и все утилиты изначально являются полностью кроссплатформенными и распространяются по свободной BSD-подобной лицензии. Компиляторы работают в Linux, FreeBSD и Mac OS. Порт для Windows, использующий MinGW, тоже практически закончен, хотя некоторые возможности еще не реализованы.
Учитывая, что языку Go всего два года, его популярность можно без преувеличения назвать феноменальной. На странице http://go-iang.cat-v.org/go-code собрано около сотни программ, написанных на Go. Среди них утилиты для облачных вычислений, игры, интерпретаторы, web-серверы и разнообразные web-приложения, р2р-клиенты, музыкальные плееры и даже рейтрейсеры. Для Go уже написано множество готовых модулей и привязок к внешним библиотекам. Язык хорошо документирован, о нем уже написано несколько книг, а сообщество разработчиков очень активно. Без сомнения такая популярность является прямым следствием пристального внимания ко всему, что делает Google и достаточно агрессивной рекламы нового языка. Попробуем разобраться, так ли хорош язык Go на самом деле.
Философия и возможности
Go - типичный язык «новой волны». По заявлению разработчиков Go сочетает эффективность компилируемого языка с простотой программирования, присущей динамическим скриптовым языкам. Go - строго типизированный язык, который компилируется в родной машинный код. Основными его «фишками» являются эффективное автоматическое управление памятью с помощью «сборщика мусора», встроенная поддержка конкурентного программирования и очень быстрая компиляция. Go - достаточно «маленький» язык. Количество встроенных функций и конструкций в нем невелико и по этому параметру он похож на Си. Однако, в отличие от Си, Go не предназначен для низкоуровневого системного программирования. По своим возможностям язык находится где-то между Си и скриптовыми языками, такими как Python. В Go есть многие элементы языков «сверхвысокого» уровня:
- встроенные строки с поддержкой Unicode;
- динамические массивы со срезами;
- ассоциативные массивы;
- анонимные функции и замыкания;
- прекрасная поддержка многопоточности;
- отложенное (deferred) выполнение кода.
В то же время объектная модель языка очень необычна, а многие продвинутые возможности «больших» языков (таких как С++, Java или D) отсутствуют:
- нет наследования;
- нет шаблонов, обобщенных классов и функций;
- нет средств метапрограммирования;
- нет утверждений;
- нет перегруженных операторов и методов; нет арифметики указателей;
- нет системы перехвата ошибок с помощью исключений.
Go позиционируется как язык, ориентированный в первую очередь на написание серверных частей web-приложений (именно для этих целей он используется в Google). Он не является универсальным системным языком, таким как С++ или D. Основная ниша Go - программы, в которых нужно порождать множество взаимодействующих друг с другом потоков (что, как правило, и нужно для web-сервисов). В какой-то степени Go - это императивный аналог функционального языка Erlang.
Создатели языка упорно утверждают, что Go - это «Си-подобный» язык, однако он не имеет практически ничего общего с Си кроме фигурных скобок для обозначения блоков кода и пары управляющих конструкций. Общее впечатление от языка совершенно иное и он не похож ни на один из распространенных сейчас языков. Синтаксис Go не отличается внутренней элегантностью и продуманностью, так что, не изучив язык осно-вательно, понять написанные на нем программы очень сложно. В синтаксисе имеются и странные детали в «эзотерическом» стиле Perl и TCL (достаточно упомянуть управление областью видимости символов с помощью их капитализации, непонятные ограничения на форматирование кода и возврат функциями нескольких значений).