Научная статья на тему 'Особенности языка программирования gо'

Особенности языка программирования gо Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
804
129
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЯЗЫК ПРОГРАММИРОВАНИЯ / ТИПЫ ДАННЫХ / PROGRAMMING LANGUAGE DATA TYPES

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Адаменко Юлия Владимировна

В статье рассматривается краткая история возникновения языка программирования Go, приводится краткий сравнительный анализ языка Go с другими популярными языками программирования, описываются основные возможности языка программирования Go.

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

FEATURES OF THE PROGRAMMING LANGUAGE GO

The article deals with a brief history of the Go programming language, brief comparative analysis of Go language with other popular programming languages, describes the main features of the Go programming language.

Текст научной работы на тему «Особенности языка программирования gо»

физико-математические науки

УДК 581.1 Ю.В. Адаменко

Курганский государственный университет

особенности языка программирования go

Аннотация. В статье рассматривается краткая история возникновения языка программирования Go, приводится краткий сравнительный анализ языка Go с другими популярными языками программирования, описываются основные возможности языка программирования Go.

Ключевые слова: язык программирования, типы данных.

Y.V. Adamenko Kurgan State University

features of the programming language go

Annotation. The article deals with a brief history of the Go programming language, brief comparative analysis of Go language with other popular programming languages, describes the main features of the Go programming language.

Keywords: programming language data types.

Введение

Go - один из современных и быстроразвиваю-щихся языков программирования, появившихся за последние 20 лет. Язык программирования Go на-

целен на программистов и компьютеры XXI века. Благодаря эффективному масштабированию Go можно использовать для разработки очень больших приложений и их компиляции за секунды на единственном компьютере. Язык Go создавался как высокоэффективное средство для легкого и простого написания надежных высокоинтеллектуальных программ. Go - практичный язык, в основу которого положены эффективность программ и удобство программиста.

1 История возникновения языка программирования Go

Разработчиками языка программирования Go были Роберт Грисемер (Robert Griesemer), Роб Пайк (Rob Pike) и Кен Томпсон (Ken Thompson) из Google. Это проект с открытым исходным кодом, так что исходные тексты его библиотек и инструментов, включая компилятор, находятся в открытом доступе.

Go заимствует и приспосабливает для своих нужд хорошие идеи из многих других языков, избегая возможностей, которые могут привести к созданию сложного и ненадежного кода. Как и все современные языки, Go обладает эффективным механизмом сбора мусора, хорошо подходит для построения инструментария и систем для работы других программистов.

Go, работает на большом количестве Unix-подобных систем (Linux, FreeBSD, OpenBSD, Mac OS X), а также на Plan 9 и Microsoft Windows; при этом программы, написанные для одной из этих сред, легко можно перенести на другие.

На дизайн Go оказали влияние следующие языки программирования (рисунок 1).

(Грисемер, Пайк, Томпсон, 2009} Рисунок 1 - Иерархия языков, оказавших влияние на дизайн Go

64

Вестник КГУ, 2016. № 4

Go унаследовал от:

- языка С: синтаксис выражений, конструкции управления потоком, базовые типы данных, передачу параметров в функции по значению, понятие указателей; направленность на получение при компиляции эффективного машинного кода, естественное взаимодействие с абстракциями современных операционных систем;

- Modula-2 привнесла концепцию пакетов;

- Oberon использует один файл для определения модуля и его реализации;

- Oberon-2 явился источником синтаксиса пакетов, импорта и объявлений (прежде всего, объявлений методов), которые он, в свою очередь, унаследовал от языка Object Oberon;

- CSP (формальный язык описания фундаментальных концепций параллелизма) основан на концепции взаимодействующих последовательных процессов. CSP программа представляет собой параллельное объединение процессов, не имеющих общего состояния; процессы взаимодействуют и синхронизируются с помощью каналов;

- фактический язык программирования «Squeak» («язык для общения с мышью»), который являлся языком для обработки событий мыши и клавиатуры со статически созданными каналами;

- функциональный язык Newsqueak: в котором С-образные инструкции и синтаксис выражений сочетались с записью типов в стиле Pascal, сборка мусора, направлен на управление клавиатурой, мышью и оконными событиями, каналы динамически создаваемы и хранимы в переменных.

Go часто описывают как «C-подобный язык» или «язык Си XXI века - это компактный и эффективный язык программирования с низкоуровневыми возможностями (указатели). Go обладает особенностями, характерными для высокоуровневых языков (поддержка строк Юникода, высокоуровневые структуры данных, динамическая типизация, автоматическая сборка мусора и высокоуровневая поддержка взаимодействий, основанных на обмен сообщениями, а не на блокировках и разделяемых данных, обширная и всесторонняя стандартная библиотека).

2 сравнение языков программирования Go, C++ и Java

Высокая скорость компиляции обеспечивается, с одной стороны, простотой синтаксического анализа программ на языке Go, с другой, особенностями управления зависимостями. Появляется возможность использования языка Go вместо языков сценариев, благодаря высокой скорости компиляции программ написанные на языке Go. Еще одно направление использования языка Go - это создание веб-приложений с применением Google App Engine.

Проведем сравнительный анализ языков Go, С (C++) и Java (таблица 1). СЕРИЯ «ЕСТЕСТВЕННЫЕ НАУКИ», ВЫПУСК 9

Таблица 1- Сравнение языков Go, C (C++) и Java

Go С (C++) Java

Сложность конструкций языка

простой и понятный синтаксис сложные и замысловатые конструкции

Типизация

строгая статическая, поддержка синтаксиса объявления переменных одновременно с их инициализацией, наличие мощного и удобного механизма динамической типизации строгая статическая

Управление памятью

механизм сборки мусора; сложности, связанные с учетом ресурсов, берут на себя компилятор и среда выполнения «интеллектуальные» указатели (поддержка многопоточной модели выполнения включена в стандартную библиотеку) библиотека поддержки многопоточной модели выполнения, механизм сборки мусора

необходимость в обеспечении своевременного приобретения и освобождения ресурсов

Параллелизм

механизм взаимодействующих последовательных процессов потоки выполнения

go-подпрограммы

легковесные процессы, выполнение которых автоматически будет распределяться по доступным процессорам и ядрам нет нет

Парадигмы программирования

процедурный язык, поддержка объектно-ориентированного стиля программирования процедурное про-граммиро-вание объектно-ориентированный стиль про-граммирова-ния

Генерики (generics)

нет шаблоны обобщения

3 Особенности языка программирования

Go

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

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

Проект Go включает в себя сам язык, его инструментарий, стандартные библиотеки и культуру радикальной простоты. В Go имеются сборка мусора, система пакетов, полноценные функции, лексическая область видимости, интерфейс системных вызовов и неизменяемые строки, текст в которых кодируется с использованием кодировки UTF-8.

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

Язык программирования Go гарантирует обратную совместимость: старые программы на Go можно компилировать и запускать с помощью новых версий компиляторов и стандартных библиотек.

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

На практике Go дает программистам преимущества безопасности и производительности времени выполнения относительно строгой системы типов без излишней сложности.

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

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

раллельными вычислительными машинами, Go обладает возможностями параллельности. Стеки переменного размера легких потоков (или go-подпрограммы (goroutines)) Go изначально достаточно малы.

Стандартная библиотека Go предоставляет строительные блоки и API для ввода-вывода, работы с текстом и графикой, криптографические функции, функции для работы с сетью и для создания распределенных приложений. Библиотека поддерживает множество стандартных форматов файлов и протоколов.

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

Обсуждение результатов

По результатам обзора возможностей языка программирования Go можно сделать вывод, что:

- Go - компилируемый многопоточный язык программирования, разработанный компанией Google;

- Go - язык со строгой статической типизацией;

- Поддержка указателей;

- Встроенная поддержка юникода.

- Использование динамических массивов, хэш-таблиц, срезов (слайсов), вариант цикла для обхода коллекции;

- Средства функционального программирования;

- Средства объектно-ориентированного программирования без поддержки наследования реализации;

-Средствапараллельногопрограммирования;

- Достаточно простой синтаксис, основанный на Си.

Список литературы

1 Саммерфилд М. Программирование на Go. Разработка приложений XXI века /пер. с англ. А. Н. Киселёв. М. : ДМК Пресс, 2013. 580 с.

2 Донован, Алан А. А., Керниган, Брайан, У. Язык программирования Go / пер. с англ. М.: ООО «И.Д. Вильямс», 2016. 432 с.

Вестник КГУ, 2016. № 4

i Надоели баннеры? Вы всегда можете отключить рекламу.