Анализ и сравнение характеристик си-подобных языков
Автор: Киржаев Д.А., Рогачева Ю.И.
Журнал: Экономика и социум @ekonomika-socium
Рубрика: Информационные и коммуникативные технологии
Статья в выпуске: 7 (74), 2020 года.
Бесплатный доступ
В современном программировании языки высоко уровня занимают важное место. Каждый язык рассчитан на различные задачи и имеет свои особенности. Из-за особенностей написания синтаксиса, реализации конструкций, набора определенных инструментов каждый язык имеет свою собственную индивидуальность, в следствии чего имеет свои положительные и отрицательные стороны, которые были рассмотрены в данной статье.
Высокоуровневые языки программирования, си-подобные языки программирования, парадигмы языков
Короткий адрес: https://sciup.org/140252835
IDR: 140252835
Текст научной статьи Анализ и сравнение характеристик си-подобных языков
Языки программирования делятся на две ключевые категории: высокого и низкого уровня. Языки высокого уровня дают возможность представления задачи в наглядном, простом для восприятия виде, удобном для программиста. Он не зависит от внутренних машинных кодов ЭВМ любого типа. Вследствие того программы, написанные на языках высокого уровня, требуют перевода в машинные коды программами транслятора либо интерпретатора.
Каждый месяц языки программирования поддаются оценке популярности среди относительно всех существующих, составляется индекс TIOBE (TIOBE programming community index) — индекс, образующийся на основе подсчёта результатов поисковых запросов, содержащих название языка. На момент июля 2020 года Си-подобные языки занимают лидирующие места. Теснит их только язык Python, занимающий 3 место и не имеющий отношение к этому семейству.
В настоящий момент язык Java считается одним из наиболее известных языков программирования. Java подразумевался как универсальный язык программирования, который возможно использовать в различных целях. В процессе своего развития, язык превратился из просто универсального языка в целую платформу и экосистему, которая связывает разнообразные технологии.
Ключевой особенностью языка Java является то, что его код сначала транслируется в специальный байт-код, а затем этот байт-код выполняется виртуальной машиной JVM. Подобная архитектура обеспечивает кроссплатформенность и аппаратную переносимость программ.
Еще одной ключевой особенностью Java является то, что она поддерживает автоматическую сборку мусора, т.е. периодическое освобождение памяти от ранее использовавшихся объектов, как в С++.
Определенным недостатком данного языка является его платное коммерческое использование. Вторым по значимости идет низкая производительность из-за компиляции, абстракции с помощью виртуальной машины и работы сборщика мусора. Также минусом является отсутствие нативного дизайна. Когда дело доходит до пользовательского интерфейса на ПК, Java-инструмента для создания нативного дизайна нет.
Язык программирования Си — универсальный язык программирования, который сочетает возможности языков программирования высокого и низкого уровней.
Си предоставляет возможность программисту реализовывать прямой доступ к ячейкам памяти и регистрам компьютера. Для этого необходимо иметь знания особенностей функционирования ЭВМ. Эта особенность имеет схожесть с языком низкого уровня — ассемблером, однако Си является значительно более мощным инструментом для решения нелегких задач и построения сложных программных систем. Си имеет свойство кроссплатформенности, но в некоторых случаях требуется внести определенные модификации.
У данного языка встречаются следующие особенности: язык не утрачивает свою надобность спустя долгое время; имеет высокую производительность; Несложная структура языка.
Язык Си имеет как особенности, так и недостатки. Например, высокий порог вхождения (относительно мало обучающей литературы). Также язык не используется в современной веб-разработке (создание сайтов, сервисов и.т.д) и имеет малую популярность среди молодежи.
Си++ — компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования.
Из особенностей можно выделить: возможность разработки проектов для самых различных платформ и систем; возможность работы на низком уровне с адресами, памятью, портами; возможность реализации обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.
Особенности данного языка наталкивают на следующие недостатки: нарушение безопасности типов; плохая поддержка модульности; недостаток информации о типах при компиляции; примитивный предпроцессор; трудная отладка кода связанная с метапрограммированием; псевдофункциональное программирование.
При заполнении таблицы сравнения языков, проверяя наличии парадигм, ниже учтены только фактические данные, при том, что наличие возможности не обязательно является преимуществом языка, а отсутствие — недостатком.
Условные обозначения для таблиц ниже
Таблица 1
+ |
Указанная возможность присутствует |
Указанная возможность отсутствует |
|
+/- |
Возможность поддерживается не полностью |
-/+ |
Возможность поддерживается очень ограниченно |
Парадигма программирования - это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию). Это способ концептуализации, определяющий организацию вычислений и структурирование работы, выполняемой компьютером.
Существующие парадигмы зачастую пересекаются друг с другом в деталях (например, модульное и объектно-ориентированное программирование).
Таблица 2
Возможность |
C |
C++ |
Java |
Python |
Императивная |
+ |
+ |
+ |
+ |
Объектно-ориентированная |
-/+ |
+ |
+ |
+ |
Функциональная |
+/- |
-/+ |
-/+ |
+ |
Рефлексивная |
- |
-/+ |
-/+ |
+ |
Обобщённое программирование |
+ |
-/+ |
+ |
+ |
Логическая |
- |
- |
- |
- |
Список литературы Анализ и сравнение характеристик си-подобных языков
- TIOBE Index for June 2020. [Электронный ресурс] / 2020 - Режим доступа: https://www.tiobe.com/tiobe-index/, свободный - Загл. с экрана
- Языки программирования. [Электронный ресурс] / 2020 - Режим доступа: http://www.gpntb.ru/win/book/4/Doc4.HTML, свободный - Загл. с экрана
- Сравнение языков программирования. [Электронный ресурс] / 2020 - Режим доступа: https://ru.wikipedia.org/wiki/ сравнение_языков_программирования, свободный - Загл. с экрана
- Парадигма программирования. [Электронный ресурс] / 2020 - Режим доступа: https://ru.wikipedia.org/wiki/ парадигма_программирования, свободный - Загл. с экрана