Представлен открытый проект Google - новый язык программирования Go

В официальном блоге компании Google был представлен новый новый язык программирования , ориентированный на высокую производительность, которая почти сопоставима с Си, но имеет более простой синтаксис, обеспечивающий скорость разработки сопоставимую с такими динамическими языками как Python. Перед выполнением исходные тексты компилируются, но процесс компиляции даже для огромных проектов занимает считанные секунды.

По заявлениям разработчиков, Go предлагает выразительную систему типов, быструю компиляцию, хорошую производительность, защиту от выхода за допустимые области выделенных блоков памяти и встроенные возможности языка, которые упрощают многопоточное программирование и реализацию параллелизма. Google выпускает исходный код продукта под лицензией BSD с надеждой, что сообщество будет заинтересовано новым языком программирования и примет участие в дальнейшем его совершенствовании и развитии.

Разработчики Google считают, что язык Go и в текущей реализации является относительно зрелым, но не совсем готов для использования в реальных производственных средах. Сопутствующий инструментарий для нового языка программирования еще находится в стадии разработки. Отсутствует интеграция с какой-либо IDE, стандартные библиотеки не до конца наполнены, и на настоящий момент еще мало реальных примеров работающего кода. Открытие Go для большого сообщества программистов могло бы значительно ускорить процесс развития языка во всех этих важнейших областях.

Компиляторы Go, называемые 6G и 8G (для 64-битных и x86 платформ), ориентированы на высокие скорости компиляции. Существует также альтернативный компилятор под названием Gccgo, основанной на GNU Compiler Collection (GCC). GCC-компилятор менее быстрый и предназначен для генерирования более эффективного кода. Надо отметить, что разработчики отказались от использования LLVM-компилятора, так как его производительность по времени компиляции была признана недостаточной.

Скомпилированные исполняемые файлы являются полностью бинарными файлами, что отличает Go от языков управляемого кода, где компилятор генерирует байт-код для виртуальных машин. Go, тем не менее, имеет некоторые компоненты времени выполнения (runtime), которые могут быть встроены в исполняемые файлы. Фактическая производительность исполнения считается сопоставимой с Cи-кодом.

Примеры кода языка Go кода показывают, что синтаксис является Cи-подобным. Но существуют и отличительные черты. Например, существует сокращенный синтаксис определения переменных, который поддерживает обнаружение простых типов. Имеется также синтаксис анонимных функций, который позволяет вам использовать реальные замыкания (real closures). Есть некоторые Python-подобные особенности, в том числе slicing массивов и map-типы с синтаксисом конструктора, который выглядит наподобие словаря Python.

Одной из отличительных особенностей Go является его необычная система типов. Язык воздерживается от некоторых типичных для объектно-ориентированного программирования концепций, например наследования. Вы можете определить структурные типы, а затем создать методы для работы с ними. Вы можете также определить интерфейсы подобно Java. В Go, однако, не вручную указывается какой интерфейс реализует класс. Разработчики объяснили, что данный механизм интерфейсов предоставляет разработчикам некоторую гибкость неявной типизации (duck-typing), более того он предоставляет преимущества проверки во время компиляции.

Параллелизм — отличительная особенность дизайна Go. Язык вводит понятие "goroutines" — методы, которые выполняются одновременно. Любая функция может быть выполнена как "goroutine" с помощью указания в префиксе вызова функции ключевого слова "go". Язык реализует "channel" механизм, который может быть использован для безопасного обмена данными с "goroutines".

©  OpenNet