Увидел свет язык программирования Go 1.4
11 декабря 2014 года
Компания Google представила релиз языка программирования Go 1.4, который позиционируется как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.
Синтаксис Go базируется на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.
Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора.
Основные новшества, представленные в выпуске Go 1.4:
- Реализована официальная поддержка разработки приложений для платформы Android. Для подобных приложений можно использовать как штатные библиотеки, так и библиотеки из отдельного репозитория для мобильных систем, но библиотечные средства для мобильных приложений пока находятся в состоянии активной разработки и оставляют желать лучшего. Исполняемые файлы для Android пока могут генерироваться только для архитектуры ARM;
- Поддержка организации работы циклов for-range без определения параметров сохранения текущего значения ("for range x {" в дополнение к "for i := range x {" и "for i, v := range x {"), что может быть востребовано в случаях, когда необходимо лишь прокрутить цикл для всех элементов набора, но сами элементы не представляют интереса.
- В команду go добавлена новая подкоманда "generate", позволяющая автоматизировать запуск инструментов для генерации исходных текстов до начала компиляции. Например, таким способом можно сгенерировать методы объекта String для типизированных констант, воспользовавшись утилитой stringer;
- Поддержка генерации исполняемых файлов для окружения Native Client (NaCl), работающего на системах с процессорами ARM. NaCl позволяет организовать выполнение не заслуживающего доверия кода в sandbox-окружении, изолированном от остальной системы. Ранее поддержка была ограничена только генерация платформозависимых файлов для 32- и 64-разрядных процессоров Intel;
- Поддержка сборки исполняемых файлов для операционной системы Plan 9 на процессорах с архитектурой AMD64;
- Большинство runtime-компонентов, таких как сборщик мусора, обработчики строковых операций и код для организации распараллеливания, переписаны с языка Си на язык Go. В сборщике мусора появилась возможность сканирования стека программы во время её исполнения, точной оценки степени использования переменных и полного контроля за местоположением активных указателей, что сказалось на сокращении использования памяти в куче на 10%-30%. С точки зрения производительности немного ускорена сборка мусора и скорость выполнения приложений за счёт внесения дополнительных оптимизаций при выполнении операций развёртывания кода (inlining). Значительные оптимизации ожидаются в следующем выпуске.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.