Научная статья на тему 'СРАВНИТЕЛЬНЫЙ АНАЛИЗ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ GO И C++'

СРАВНИТЕЛЬНЫЙ АНАЛИЗ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ GO И C++ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
790
39
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
GOLANG / C++ / ПРОГРАММИРОВАНИЕ / КОМПИЛИРОВАННОСТЬ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Бузыкова Юлия Сергеевна, Зуфарова Анна Сергеевна

В последнее время довольно новый язык программирования Go приобретает популярность среди программистов и корпораций. Она проста, компактна и не имеет специфического назначения, поэтому может быть использована для решения большого спектра проблем. В то же время, Go часто сравнивают с языком C++ из-за их сходства в синтаксисе, статической типизации, компилированности, общего назначения и некоторых других общих черт. Поскольку эти языки похожи, существует проблема выбора языка программирования и целесообразности его использования для написания конкретных программных решений в зависимости от цели и потребностей разработчика и типа разрабатываемой программы. Целью данной работы является сравнение языков программирования С++ и Go по критериям доступности, скорости работы и компиляции, безопасности и сферы применения; выявление сильных и слабых черт каждого языка и ситуаций, где их целесообразно использовать. Основными источниками информации для данного исследования является «Спецификация языка программирования Go» от 14.01.2020, Стандарт SO/IEC 14882:2017 Programming languages - C++» и статья с официального сайта языка Go для программистов С++.

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

COMPARATIVE ANALYSIS OF THE GO AND C++ PROGRAMMING LANGUAGES

Recently, a fairly new programming language, Go, has been gaining popularity among programmers and corporations. It is simple, compact and has no specific purpose, so it can be used to solve a wide range of problems. At the same time, Go is often compared to the C++ language because of their similarities in syntax, static typing, compilation, general purpose and some other common features. Since these languages are similar, there is a problem of choosing a programming language and the expediency of using it to write specific software solutions, depending on the purpose and needs of the developer and the type of program being developed. The purpose of this work is to compare the C++ and Go programming languages according to the criteria of accessibility, speed of operation and compilation, security and scope of application; to identify the strengths and weaknesses of each language and situations where it is advisable to use them. The main sources of information for this study are the "Specification of the Go programming Language" from 14.01.2020, the Standard SO/IEC 14882:2017 Programming languages - C++" and an article from the official website of the Go language for C++ programmers.

Текст научной работы на тему «СРАВНИТЕЛЬНЫЙ АНАЛИЗ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ GO И C++»

Научная статья Original article УДК 681.3.06

DOI 10.55186/27131424 2023 5 2 3

СРАВНИТЕЛЬНЫЙ АНАЛИЗ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ GO

И C++

COMPARATIVE ANALYSIS OF THE GO AND C++ PROGRAMMING

LANGUAGES

Бузыкова Юлия Сергеевна, доцент кафедры математического обеспечения и стандартизации информационных технологий, Федеральное государственное бюджетное образовательное учреждение высшего образования "МИРЭА -Российский технологический университет" (119296 Россия, г. Москва, ул. проспект Вернадского, д. 78, стр. 4), тел. +7(495)506-44-55, juliaserg_buz@mail.ru Зуфарова Анна Сергеевна, старший преподавать кафедры «Высшая математика», Тихоокеанский государственный университет (680035 Россия, г. Хабаровск, ул. Тихоокеанская, д. 136), тел. +7(495)588-22-47, zoof_anna@mail.ru

Yulia S. Buzykova, Associate Professor of the Department of Mathematical Support and Standardization of Information Technologies, Federal State Budgetary Educational Institution of Higher Education "MIREA - Russian Technological University" (78 prospekt Vernadskogo st., p. 4, Moscow, 119296 Russia), tel.

+7(495)506-44-55, juliaserg_buz@mail.ru

Anna S. Zufarova, Senior lecturer of the Department of "Higher Mathematics", Pacific NationalUniversity (136 Pacific Street, Khabarovsk, 680035 Russia), tel. +7(495)588-22-47, zoof_anna@mail.ru

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

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

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

Основными источниками информации для данного исследования является «Спецификация языка программирования Go» от 14.01.2020, Стандарт SO/IEC 14882:2017 Programming languages — C++» и статья с официального сайта языка Go для программистов С++.

Abstract. Recently, a fairly new programming language, Go, has been gaining popularity among programmers and corporations. It is simple, compact and has no specific purpose, so it can be used to solve a wide range of problems. At the same time, Go is often compared to the C++ language because of their similarities in syntax, static typing, compilation, general purpose and some other common features.

Since these languages are similar, there is a problem of choosing a programming language and the expediency of using it to write specific software solutions, depending on the purpose and needs of the developer and the type of program being developed. The purpose of this work is to compare the C++ and Go programming languages according to the criteria of accessibility, speed of operation and compilation, security and scope of application; to identify the strengths and weaknesses of each language and situations where it is advisable to use them.

The main sources of information for this study are the "Specification of the Go programming Language" from 14.01.2020, the Standard SO/IEC 14882:2017 Programming languages — C++" and an article from the official website of the Go language for C++ programmers.

Ключевые слова: GoLang, C++, программирование, компилированность Keywords: GoLang, C++, programming, compilation

Первоначальная версия Go была выпущена в 2012 году Робом Пайком, Робертом Гриземером и Кеном Томпсоном специально для Google. Golang выразительный, лаконичный, чистый и эффективный язык общего назначения [1]. В ней предусмотрены механизмы параллелизма позволяют легко писать программы, которые максимально используют возможности многоядерных и сетевых машин. "Это быстрый, статически типизированный, компилированный язык, который ощущается как динамически типизированный, интерпретируемый язык", - гласит документация языка [1]. Компилятор языка первоначально был написан на C, но теперь он также написан на Go, что обеспечивает языку независимость развертывания.

Язык C++ существует с 1980-х годов и до сих пор широко используется. Один из философских принципов С++, изложенных Бьорном Страуструпом в книге «Дизайн и эволюция C++», звучит следующим образом: «Непосредственно и всесторонне поддерживать множество стилей программирования, в том числе процедурное программирование, абстракцию данных, объектно-

ориентированное программирование и обобщенное программирование» [4], следовательно, этот язык также имеет не имеет специфического назначения. Этот принцип удалось полностью реализовать на практике: на языке С++ написано множество программ от видеоигр до компиляторов и интерпретаторов для других языков программирования, она является стандартом разработки во многих доменных областях, корпорациях и компаниях. Доступность.

Язык программирования С++ не имеет большого количества встроенных функций. Предполагается, что программист собственноручно пишет необходимые функции, а язык программирования предоставляет для этого необходимые средства. Однако С++ считается языком среднего уровня, поэтому он не так интуитивно понятен, как языки высокого уровня, но и не похож на язык ассемблера. Итак кодировать на нем сложнее, чем на языке более высокого уровня, а код имеет больший объем и сложнее читается.

Язык программирования Go относят к языкам высокого уровня абстракции. Код на языке Go меньше по количеству строк, компактнее, в Go предусмотрено меньше скобок, что делает его более наглядным и понятным. Кроме того, она имеет больше встроенных функций, в сравнении с С++ (например, функции для уборки мусора, которые в С++ должны быть реализованы собственноручно). За это Go легче для изучения.

Типы переменных в обоих языках программирования объявляются явно (статическая типизация). В отличие от языка С++, в Go никогда не используется неявное приведение типов. Структура.

Структура данных в языках программирования Go и С ++ различна. С++ Считается объектно-ориентированным языком, тогда как Go-это язык процедурного и параллельного программирования. В Go нет классов с конструкторами или деструкторами. Вместо виртуальных функций, иерархии наследования и методов класса, в Go есть интерфейсы. Интерфейсы в языке

программирования Go являются приблизительным аналогом шаблонов в языке программирования с++ [3]. Скорость компиляции.

Языки программирования Go и с++ также отличаются временем компиляции. С++ обычно компилируется дольше Go, а время компиляции влияет на скорость написания кода, потому что код нужно компилировать после каждого внесенного изменения [5]. Производительность.

Язык программирования С++ почти не имеет конкурентов по скорости. Поскольку это язык среднего уровня, он ближе к машинному коду и, соответственно, любой язык высокого уровня. Долгое написание кода и компиляция возвращаются в виде программ, которые работают очень быстро. В сравнении с языком программирования С++, Go значительно медленнее при выполнении программ, однако, по сравнению с языками высокого уровня абстракции, Go демонстрирует высокие результаты производительности и скорости (почти в четыре раза быстрее, чем интерпретируемые языки) благодаря таким средствам, как компиляция, статические типы и эффективный сборщик мусора (которого нет в С++ и который делает Go значительно медленнее С++ ) [5]. Как и в С++, в Go могут быть использованы указатели вместо ссылок, и это отличает Go среди других высокоуровневых языков. В языке программирования Go предусмотрены хэш-таблицы (словари), чего нет в языке программирования с++.

Следует отметить, что разница в производительности и скорости работы языков программирования С++ и Go не так велика, чтобы быть заметной при выполнении простых программ, однако при выполнении вычислений большого объема, обработки большого количества данных эта разница будет критической. Безопасность.

Значительные уязвимости безопасности в программах на языке С++ связаны с переполнением буфера: буфер загружается слишком большим количеством

информации, и эта информация записывается в соседнюю память. Программа расходует герметичность и работает некорректно [5].

Язык программирования Go имеет встроенные ограничения, которые помогают предотвратить эту проблему. Для этого используются следующие средства: ограничение на перемещение по массивам, используя значения указателей (следует обращаться используя индекс); ограничение на Go арифметические операции с указателями [3]. С помощью этих ограничений Go уменьшает вероятность переполнения буфера. Применение.

Значимым преимуществом языка программирования С++ является широкая сфера применения. В ней также нет встроенных функций для включения или выключения, она открыта для создания программ и систем и обеспечивает доступ ко всем частям системы. Таким образом, язык программирования С++ дает возможность создавать все от простых программ до операционных систем и математических симуляций, поэтому язык С++ является очень мощным средством разработки программных систем [5].

Кроме того, язык программирования с++ существует уже сорок лет, а потому большое количество программного обеспечения уже написано на С++ и нуждается в поддержке и обновлении. Это увеличивает спрос на программистов, которые пишут код на С++.

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

Доступность и понятность языка программирования Go совместимо со скоростью и производительностью являются причинами того, что этот язык так часто используют в корпорациях: она имеет ограничения в синтаксисе и логике, которые не дают даже неопытным программистам делать критические ошибки и писать плохой код [5].

Исследования востребованности языков программирования в мире показывают, что язык программирования с++ более популярен и востребован в 1Т-сфере. Например, рейтинг Северо-Восточного университета Бостона, США за 2020 год предоставляет следующие данные: С++ занимает шестое место (9 тыс. должностей), Go занимает седьмое место (1,7 тыс. должностей) [6]. Разница в количестве должностей обусловлена тем, что на С++ существует много проектов для поддержки и обновления, написанных за многие годы существования языка программирования.

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

Литература

1. Городняя Л. В. О Неявной мультипарадигмальности параллельного программирования // Труды XXIII Всероссийской научной конференции (20-23 сентября 2021 Г., Онлайн). М.: ИПМ им. М. В. Келдыша. 2021. С. 104116. doi: 10.20948^^^-2021-6

2. Информатика. 10 класс. Базовый и углублённый уровни. Часть 2. Поляков К.Ю., Еремин Е.А. Издательство: Бином. 2019.

3. Касьянов В. Н., Гордеев Д. С., Золотухин Т. А. Система облачного параллельного программирования CPPS: визуализация и верификация Cloud Sisal программ. Новосибирск: НГУ, 2020, Конструирование и оптимизация программ.

4. Эволюция Go [Электронный ресурс] URL: https://habr.com/ru/post/262295/

5. Язык Rust и почему его надо съесть [Электронный ресурс] URL: https:// gb.ru/posts/why_rust

6. Язык программирования С#: история, специфика, место на рынке [Электронный ресурс] URL: https://gb.ru/posts/yazyk-programmirovamya-c-sharp-istoriya-specifika-mesto-na-rynke

7. Дагмирзаев О.А. ИЗУЧАЕМ ЯЗЫК ПРОГРАММИРОВАНИЯ С++ // Colloquium-journal. 2021. №3 (90). URL: https://cyberleninka.ru/article/n7izuchaem-yazyk-programmirovaniya-s (дата обращения: 03.02.2023).

8. Ландик Л.В., Пестренина И.В. УЧЕБНЫЕ ДЕМОНСТРАЦИОННЫЕ ПРОГРАММЫ НА C++ В BORLAND C++ BUILDER 6 // Вестник Пермского университета. Серия: Математика. Механика. Информатика. 2018. №4 (43). URL: https://cyberleninka.ru/article/n7uchebnye-demonstratsionnye-programmy-na-c-v-borland-c-builder-6 (дата обращения: 03.02.2023).

9. Тарасов В. Л. Локализация консольных приложений в языке C++ // Вестник ННГУ. 2011. №3-2. URL: https://cyberleninka.ru/article/n/lokalizatsiya-konsolnyh-prilozheniy-v-yazyke-c (дата обращения: 03.02.2023).

References

1. Gorodnya L. V. On the implicit multiparadigmality of parallel programming // Proceedings of the XXIII All-Russian Scientific Conference (September 20-23,

2021, Online). Moscow: IPM named after M. V. Keldysh. 2021. pp. 104-116. doi: 10.20948/abrau-2021 -6

2. Computer science. 10th grade. Basic and advanced levels. Part 2. Polyakov K.Yu., Eremin E.A. Publishing House: Binomial. 2019.

3. Kasyanov V. N., Gordeev D. S., Zolotukhin T. A. CPPS Cloud Parallel Programming System: Visualization and verification of Cloud Sisal programs. Novosibirsk: NSU, 2020, Program design and optimization.

4. Evolution of Go [Electronic resource] URL: https://habr.com/ru/post/262295/

5. Rust language and why it should be eaten [Electronic resource] URL: https:// gb.ru/posts/why_rust

6. C# programming language: history, specifics, place on the market [Electronic resource] URL: https://gb.ru/posts/yazyk-programmirovamya-c-sharp-istoriya-specifika-mesto-na-rynke

7. Dagmirzaev O.A. LEARNING THE C++ PROGRAMMING LANGUAGE // Colloquium-journal. 2021. No.3 (90). URL: https://cyberleninka.ru/article/n7izuchaem-yazyk-programmirovaniya-s (accessed: 03.02.2023).

8. Landik L.V., Pestrenina I.V. EDUCATIONAL DEMONSTRATION PROGRAMS IN C++ In BORLAND C++ BUILDER 6 // Bulletin of Perm University. Series: Mathematics. Mechanics. Computer science. 2018. No.4 (43). URL: https://cyberleninka.ru/article/n/uchebnye-demonstratsionnye-programmy-na-c-v-borland-c-builder-6 (accessed: 03.02.2023).

9. Tarasov V. L. Localization of console applications in C++ // Bulletin of the UNN. 2011. No.3-2. URL: https://cyberleninka.ru/article/n/lokalizatsiya-konsolnyh-prilozheniy-v-yazyke-c (accessed: 03.02.2023).

© Бузыкова Ю.С., Зуфарова А.С., 2023 Международный журнал прикладных наук и технологий "Integral" №2/2023

Для цитирования: Бузыкова Ю.С., Зуфарова А.С. СРАВНИТЕЛЬНЫЙ АНАЛИЗ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ GO И C++ // Международный журнал прикладных наук и технологий "Integral" №2/2023

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