Добавлен: 22.04.2023
Просмотров: 237
Скачиваний: 1
Развитие языков программирования происходило быстрыми темпами. С момента появления первого поколения языков программирования в начале 1950-х годов сформировалось пять поколений языков программирования. Последнее поколение было нацелено на то, чтобы «заставить компьютер решить данную задачу без участия программистов» [5.]. Однако, согласно индексу TIOBE Programming Community, который указывает на популярность языков программирования [12.], третье поколение языков программирования все еще широко распространено и активно используется.
В соответствии с [12.], в качестве объектов для изучения в данной работе были выбраны языки C, C++, C#, которые являются одними из наиболее популярных языков программирования на сегодняшний день. Технические характеристики этих трех языков программирования были обобщены и сравнены друг с другом. Один из языков программирования был выбран в качестве приоритетного языка для разработки программного обеспечения, затем были подробно изучены некоторые из наиболее популярных интегрированных сред для создания программ на выбранном языке. Одна из рассмотренных сред была выбрана в качестве основной рабочей среды для разработки программного обеспечения.
Си – язык программирования, который появился в Bell Laboratories в США в 1972 году. Он был написан Деннисом Ритчи. Этот язык был создан для определенной цели, а именно для разработки операционной системы UNIX (которая долго время использовалась на многих компьютерах). После этого Си стал использоваться все большим и большим количеством людей за пределами Bell Laboratories, потому что в то время он более эффективен, чем другие языки программирования. В конце 70-х годов Си занял доминирующее положение языков программирования. Комитет, образованный Американским национальным институтом стандартов (ANSI), одобрил версию Си в 1989 году, известную как ANSI C. Этот стандарт был впоследствии одобрен Международной организацией по стандартизации (ISO) в 1990 году. Язык получил название Си (англ. «C») потому, что его предшественник назывался Би (англ. «B») и был также разработан Кеном Томпсоном из Bell Laboratories.
Во времена появления языка Си большой популярностью пользовались процедурные языки, которые позволяли разбивать задачи на шаги и решать их за шагом, причем возможность определять каждый шаг в процессе решения задачи была предоставлена программисту. Эти языки использовали императивную парадигму, но последовательно выполняемые операторы могли быть собраны в подпрограммы, то есть более крупные целостные единицы кода, с помощью самого языка. Согласно некоторым классификациям, такой подход выделяется в самостоятельную парадигму, получившую название процедурной [2.]. Язык Си – процедурный язык программирования. К процедурным языкам программирования относятся также Паскаль, Алгол, Кобол и Фортран.
Существуют различные преимущества для выбора языка Cи в качестве основного инструмента для разработки [3.]:
- Строительный блок для многих других языков программирования
Си считается наиболее фундаментальным языком, который необходимо изучать, вне зависимости от первого изучаемого языка программирования. Многие языки программирования, такие как Python, C ++, Java и т. д. построены на основе языка Си.
- Мощный и эффективный язык
Cи – надежный язык, так как он содержит много типов данных и операторов, чтобы предоставить обширную платформу для выполнения всех видов операций.
- Переносимый язык
Си очень гибок – иными словами, можно сказать, что он не является машинно-зависимым, что помогает запускать код на любом компьютере без внесения каких-либо изменений в исходном коде.
- Встроенные функции
В ANSI C всего 32 ключевых слова, имеющих много встроенных функций. Эти функции полезны при создании программы на Си.
- Язык структурированного программирования
Это означает, что проблемы или сложные проблемы делятся на более мелкие блоки или функции. Такая модульная структура облегчает тестирование и поддержку программ
- Язык среднего уровня
Си – это язык программирования «среднего» уровня. Это означает, что он поддерживает программирование высокого уровня, а также программирование низкого уровня. Он поддерживает как использование ядер и драйверов в низкоуровневом программировании, так и также системные программные приложения на языке программирования высокого уровня.
- Реализация алгоритмов и структур данных
Использование алгоритмов и структур данных в Си сделало вычисления программ очень быстрыми и плавными. Таким образом, язык Си может использоваться в сложных вычислениях и операциях.
- Процедурный язык программирования
Поскольку Си использует процедурное программирование, для языка становится легче идентифицировать структуру кода и решить любую проблему на его определенном участке. В процедурном программировании переменные и функции Си объявляются перед использованием.
- Динамическое распределение памяти
Си обеспечивает динамическое распределение памяти – это означает, что память можно выделять во время выполнения
К сожалению, программирование на Си также сопряжено с рядом недостатков, которые не позволяют рекомендовать его для использования в некоторых проектах. Вот основные из них [2.]:
- Концепция ООП
Си – очень богатый язык, но он не поддерживает концепцию объектно-ориентированного программирования (наследование, полиморфизм, инкапсуляция, абстракция, сокрытие данных)
- Проверка во время выполнения
В языке программирования Си ошибки или баги не обнаруживаются после каждой строки кода. Вместо этого компилятор показывает все ошибки после написания программы. Это делает проверку кода очень сложной в больших программах.
- Понятие пространства имен
Си не реализует концепцию пространств имен. Пространство имен структурировано как цепочка команд, допускающая повторное использование имен в разных контекстах. Без пространств имен невозможно объявить две переменные с одинаковыми именами.
- Отсутствие обработки исключений
Обработка исключений – одна из важнейших функций языков программирования. При компиляции кода могут возникать различные аномалии и ошибки. Обработка исключений позволяет перехватить ошибку на этапе обнаружения и принять соответствующие меры. Однако язык Си не допускает эту важную особенность.
- Конструктор или деструктор
Си не имеет конструкторов или деструкторов.
Конструкторы и деструкторы поддерживают базовую функциональность объектно-ориентированного программирования. Оба являются функциями-членами, которые создаются тогда, когда создается объект класса.
- Низкий уровень абстракции
Си имеет минимальное сокрытие данных и исключительную видимость, что влияет на безопасность этого языка.
C++ был написан Бьерном Страуструпом в Bell Labs в 1983-1985 гг. C++ является расширением Си. До 1983 года Бьерн Страуструп добавил функции в C и сформировал то, что он назвал «C с классами». Он объединил использование классов и объектно-ориентированных функций из языка Simula с мощью и эффективностью языка Си [11.].
Преимущества C++ [3.]:
- Портативность
C++ предлагает функцию переносимости или независимости от платформы, которая позволяет пользователю легко запускать одну и ту же программу в разных операционных системах или интерфейсах
- Объектно-ориентированность и мультпарадигменность
Одним из самых больших преимуществ C++ является особенность объектно-ориентированного программирования, которое включает в себя такие понятия, как классы, наследование, полиморфизм, абстракция данных и инкапсуляция, которые позволяют многократно использовать код и делают программу еще более надежной. Более того, это помогает решать реальные проблемы, рассматривая данные как объект.
C++ является языком программирования с несколькими парадигмами. Термин «парадигма» относится к стилю программирования. Парадигмой программирования называют используемый различными языками подход к программированию, то есть, проще говоря, набор идей и понятий, определяющих стиль написания программ. Среди основных парадигм программирования выделяют объектно-ориентированную, императивную, декларативную, структурную, функциональную и логическую. Большинство языков программирования, активно используемых в современной разработке прикладных программ, являются мультипарадигменными.
- Манипуляции низкого уровня
Поскольку C++ тесно связан с Си, который является процедурным языком, тесно связанным с машинным языком, C++ допускает низкоуровневое манипулирование данными на определенном уровне. Встроенные системы и компилятор создаются с помощью C++.
- Управление памятью
C++ дает программисту полный контроль над управлением памятью. Это можно рассматривать как ценное качество, так и как повышенную ответственность, поскольку такая возможность увеличивает ответственность пользователя за управление памятью, а не за управление сборщиком мусора. Эта концепция реализована с помощью динамического распределения памяти с использованием указателей.
- Поддержка большого сообщества
C++ имеет большое сообщество, которое поддерживает его, предоставляя онлайн-курсы и лекции, как платные, так и бесплатные. С точки зрения статистики, C++ является 6-м наиболее часто используемым тегом на StackOverflow и GitHub.
- Совместимость с Си
C++ в значительной степени совместим с C. Практически каждая скомпилированная и отлаженная программа на языке Си является допустимой программой на C++. В зависимости от используемого компилятора каждая программа C++ может запускаться в файле с расширением .cpp.
- Масштабируемость
Масштабируемость относится к способности программы масштабироваться. Это означает, что программа на C++ способна работать как в небольших масштабах, так и на больших объемах данных. Также можно создавать приложения, которые являются ресурсоемкими.
- Производительность
Как язык со статической типизацией, C++, как правило, более производительный, чем языки с динамической типизацией, потому что код проверяется перед выполнением. Java набирает обороты с точки зрения скорости, но, в конце концов, в зависимости от того, насколько талантлив разработчик C++, C++ все еще может быть быстрее, чем Java.
- Карьерные перспективы
Для разработки популярных видеоигр, скорее всего, придется использовать C++. Многие мобильные бестселлеры также были созданы с Cocos2d-x, который является свободно распространяемым кроссплатформенным игровым движком с открытым исходным кодом. Игры Cocos2d-x разрабатываются на C++, хотя Cocos2d теперь также поддерживает другие языки.
Недостатки языка C++:
- Использование указателей
Указатели в C / C++ довольно сложны для понимания и занимают много памяти. Неправильное использование указателей, известное как «висячие указатели», может привести к сбою системы или неправильному поведению системы.
- Проблема безопасности
Хотя объектно-ориентированное программирование обеспечивает большую безопасность обрабатываемых данных по сравнению с другими языками программирования, которые не являются объектно-ориентированными, такими как Си, некоторые проблемы безопасности все еще существуют из-за доступности дружественных функций, глобальных переменных и указателей.
- Отсутствие сборщика мусора
Как обсуждалось ранее, C++ дает пользователю полный контроль над управлением памятью компьютера с помощью динамического управления. В C++ отсутствует функция сборщика мусора для автоматической фильтрации ненужных данных.
Подводя итоги, можно сделать вывод о том, что язык C++ в качестве основного инструмента для разработки программного приложения является подходящим выбором для опытных разработчиков [7.].
C# был разработан в качестве конкурента языка Java; подразумевалось, что он будет чистым объектно-ориентированным языком программирования [9.]. C# дебютировал в 2000 году на конференции профессиональных разработчиков, где основным докладчиком был основатель Microsoft Билл Гейтс. В то же время была представлена среда разработки Visual Studio .NET.
Высокоуровневый язык программирования C# является флагманом разработки от Microsoft. Можно выделить следующие плюсы языка, отличающие его от конкурентов:
- Доступность
Если для Java необходимо отдельно устанавливать виртуальную машину, то .NET-разработка требует только .NET-платформы, которая есть на большинстве компьютеров с ОС Windows. Соответственно, оптимизация исполняемого кода ложится на платформу, что облегчает жизнь разработчика.
- Универсальность
Приложения C# функционируют на всех компьютерах с ОС Windows – притом можно указывать версию .NET Framework для работы с более ранними версиями. Среда разработки Xamarin также распространяет C# на Unix-системы, C# отныне является кроссплатформенным языком.