Преимущества и недостатки языка программирования С++ - Разработка видеолекций по программированию С++
У каждого языка программирования есть свои преимущества и недостатки, и их стоит рассматривать в контексте тех принципов, на которых строился язык, а так же предъявляемых к нему требований.
С++ содержит средства для создания программ практически любого назначения, от низкоуровневых до сложных программных комплексов разного назначения.
Достоинства языка:
- - С++ поддерживает разные технологии и стили программирования, включая объектно-ориентированное, обобщенное и метапрограммирование; - более надежное освобождение ресурсов путем автоматического вызова деструкторов при уничтожении объектов; - возможность создавать пользовательские функции-операторы, позволяющие записывать выражения над пользовательскими типами в алгебраической форме; - важным достоинством является предсказуемое выполнение программ, что является важным для систем реального времени; - при помощи шаблонов можно создавать обобщенные контейнеры и алгоритмы для разных типов данных; - при помощи шаблонов и множественного наследия можно имитировать классы-примеси и комбинаторную параметризацию библиотек; - поддержка понятия физической и логической константности, что делает программу надежнее, так как позволяет диагностировать ошибочные попытки изменения переменных; - C++ - кросплатформенный язык, его стандарт накладывает минимальные требования на компьютер для запуска скомпилированной программы. На С++ разрабатывают программы для различных платформ и систем с помощью компиляторов для большого количества платформ; - в С++ существует возможность низкоуровневой работы с адресами памяти, однако, при неосторожном использовании это легко может превратиться в недостаток; - язык С++ спроектирован так, чтобы у программиста был максимальный контроль над всеми аспектами структуры и порядка выполнения программы; - существующий код на C может с минимальными изменениями использоваться в С++.
Часть недостатков С++ унаследовал от C, это:
- - синтаксис, вызывающий ошибки - операцию сравнения и присваивания легко перепутать, тем более присваивание возвращает значение, поэтому конструкция с присваиванием вместо выражения не будет восприниматься компилятором как ошибка, в циклах и ветвлениях так же существует такая ошибка; - макросы являются потенциально опасным средством, несмотря на то что их необходимость не велика, ввиду наличия шаблонов и встроенных функций; - неинтуитивные преобразования некоторых типов; - примитивный, унаследованный от С препроцессор; - плохая поддержка модульности. Подключение внешнего модуля через заголовочную вставку серьезно замедляет компиляцию при большом количестве модулей, что решено во многих компиляторах прекомпиляцией заголовочных файлов.
У языка С++ имеются так же и собственные недостатки:
- - В С++ существует много возможностей, нарушующих принципы типобезопасности, что приводит к труднонаходимым ошибкам. Частой проблемой в С++ являются проблемы "переполнения буфера"; - C++ является слишком сложным и большим языком, из за чего есть трудности с его изучением; - недостаточность информации о типах данных во время компиляции программы; - шаблоны могут привести к коду очень большого объема; - многие схожие конструкции с С, выполняющие те же самые функции могут сбить с толку программиста; - сложность и ограниченность метапрограммирования на основе шаблонов С++; - при заявлении, что С++ мультипарадигменный язык, в нем отсутсвует явная поддержка функционального программирования. Отчасти это решено различными библиотеками, использующими средства метапрограммирования для расширения языка; - некоторые считают отсутствие встроенной системы сборки мусора недостатком языка.
Для того чтобы выявить сильные и слабые стороны языка, необходимо так же сравнить его с другими популярными и известными языками программирования, как С, C#, Objective-C, Java, Python.
Для начала нужно провести сравнение С++ с языком-предком Си:
- -в С++ поддержка объектно-ориентированного программирования через классы; - в С++ поддержка через шаблоны функций и классов обобщенного программирования; - стандартная библиотека С++ содержит в себе стандартную библиотеку С и библиотеку шаблонов, предоставляющую широкий выбор обобщенных контейнеров и алгоритмов; - дополнительные типы данных; - существует обработки исключений; - виртуальные функции; - пространство имен; - встраиваемые inline функции; - перегрузка операторов; - перегрузка имен функций; - ссылки и операторы управления памятью.
Язык Java. Большинство архитектурных решений, при создании языка Java были продиктованы желанием предоставить синтаксис, сходный с С и С++. В Java используются используются схожие объявления переменных, передача параметров, операторов и управление потоком выполнения кода. В языке Java были добавлены все хорошие черты C++ и исключены его недостатки. Знания, относительно С++ с успехом могут быть применены в Java.
Основные различия в языках:
- - C++ - машинный код, а Java - это интерпретируемый код (необходим интерпретатор), вследствие чего у Java есть платформанезависимость в обмен на зависимость от интерпретатора JVM; - В Java отсутствуют файлы заголовков; - С++ типы не определены точно и зависят от компилятора, а в Java типы на всех платформах одинаковы; - Java - полностью объектно ориентированный язык; - в C++ программист полностью сам контролирует состояние программы, в Java этим занимается сборщик мусора и среда Runtime; - в С++ возможно все, чего пожелает программист: "перегрузка операторов, наследование, и так далее", в языке Java - только то, что разработчики языка посчитали логически безопасным; - С++ имеет множество различных библиотек, Java - стандартные библиотеки, которые распространяются с JVM.
С# (Си шарп), как и C++ является языком общего назначения, а так же кроссплатформенным языком. С# разработан компанией Microsoft как язык для разработки приложения для платформы Microsoft. NET Framework и во многом похож на Java. Он компилируется в байт-код, который выполняется на виртуальной машине, что отличает его от С++. Хотя С# и заимствует некоторые синтаксические элементы из С и С++, он не имеет технического родства с ними.
Отличия C# и C++:
- - в С#, в отличие от C++ (с расширением CLI) нет возможности смешивать неуправляемый код (native), с управляемым; - в С# существует возможность определять псевдонимы для классов. - в С++ псевдонимы могут ссылаться только на другие пространства имен, но не на классы; - отличия в определении типов; - отличия в выведении типов; - отличия в объявлении методов класса.
Следует так же упомянуть о таком объектно-ориентированном языке программирования, как Objective-C, используемые Apple и основанный на языке Си с парадигмами Smalltalk.
- - Objective C является message-oriented языком, в отличие от С++, который является function-oriented, это значит что в ObjC код не "вызывает метод объекта", а "отправляет сообщение" с именем и аргументами объекту; - в ObjC описания методов сильно отличаются от С++, и больше похожи на описание методов на языке Smalltalk; - ObjC не допускает множественного наследования; - в ObjC принято работать с указателями на объекты; - в ObjC отсутсвуют шаблоны, пространства имен, типы данные, присущие С++; - в ObjC отсутсвуют перегрузки функций по возвращаемому типу данных; - ObjC не позволяет создвавть объекты в стеке.
Но самое большое различие - в синтаксисах языка.
Python
- - обычно предполагается, что Python программы выполняются медленнее, но они, в то же время, требуют намного меньше времени для разработки. Эта разница может быть объяснена за счет встроенных высокоуровневых; - программы на С++ обычно в 5-10 раз длиннее, нежели аналогичные на языке Python; - Python подходит как "склеивающий" язык, объединяя в программе код на нескольких языках;
Похожие статьи
-
Завершив выбор схемы работы системы и общего принципа работы ее частей и выбрав тип базы данных, следует перейти к выбору языка программирования....
-
В используемой мной версии "MS Visual Studio" (версия 10 доступна технология. NET4.0) доступно несколько языков программирования: - C#; - C++; - F#; -...
-
Объектно ориентированный подход - Разработка видеолекций по программированию С++
Основной идеей объектно-ориентированного подхода является объединение данных и действий, которые производятся над этими данными в одно целое, которое...
-
Особенности языка программирования С++ - Разработка видеолекций по программированию С++
Язык С++ был создан Бьерном Страуструпом в 1979 году в компании Bell Laboratories и сначала имел название "С с классами". Страуструп утверждает, что...
-
Алгоритм работы декодера кода Рида - Маллера будем разрабатывать на основе уже приведенных выше уравнений. Алгоритм приведен на рисунке 12. В начале...
-
Разработка приложения на языке C++ - Программирование на языке C++
C++ - объектно-ориентированный язык программирования. Разработан в 1998--2001 годах группой инженеров под руководством Андерса Хейлсберга в компании...
-
Преимущества, которые дает тестировщику автоматизация тестирования: - Исключен "человеческий фактор". Существует некоторая гарантия того, что не один...
-
Поскольку в проекте ИИС "Шлаковые расплавы" используется реляционная модель в ходе проведения исследования были выделены и рассмотрены следующие РСУБД:...
-
Технология программирования Для реализации поставленной задачи наиболее удобной парадигмой программирования будет являться объектно-ориентированная...
-
Выбор видеоредактора и среды разработки - Разработка видеолекций по программированию С++
Для записи и монтажа видео нам потребуется воспользоваться программой, включающей набор инструментов, позволяющих редактировать видеофайлы. Для работы с...
-
Выбор языка программирования Язык С++ является в настоящее время наиболее распространенным и перспективным языком промышленного программирования. Он...
-
Введение, Язык программирования - Разработка игры "Морской бой"
Игра интерфейс компьютерный приложение Стремительное развитие компьютерной техники в последние годы, появление мощнейших графических ускорителей и...
-
Введение - Разработка видеолекций по программированию С++
Видео обучение является одной из форм дистанционного обучения, представляющая собой набор систематически подобранных видеолекций по заданной теме,...
-
Платформа. NET Framework - Программирование на языке C++
.NET Framework - программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Заключение - Основные свойства функциональных языков программирования
Основной особенностью функционального программирования, определяющей как преимущества, так и недостатки данной парадигмы, является то, что в ней...
-
История функционального программирования - Основные свойства функциональных языков программирования
Широко известно, что теоретические основы императивного программирования были заложены еще в 30-х годах XX века учеными Аланом Тьюрингом и Джоном фон...
-
Для программирования агентов могут применяться: универсальные языки (Java, C++ , Visual Basic и др.), языки представления знаний (SL, KIF), языки...
-
Синтаксис объявления класса в языке С++ имеет следующий вид: Class<имя класса>: <спецификатор доступа><имя базового класса> { Элементы класса...
-
Преимущества и недостатки видеолекций - Разработка видеолекций по программированию С++
С распространением интернета стало меняться отношение к образованию. Получили распространение такие форму обучения, как дистанционное обучение и...
-
Кроме поддержки интерпретатора порождающих правил, описанного в главе 5, CLIPS обладает следующими функциональными возможностями: - для определения...
-
Языки и методы параллельного программирования - Администрирование параллельных процессов
Применение параллельных архитектур повышает производительность при решении задач, явно сводимых к обработке векторов. Автоматическое распараллеливание...
-
Введение - Основные свойства функциональных языков программирования
Созданная в 1998 году спецификация языка Haskell (названного так в честь ученого Хаскелла Карри, одного из основоположников функционального...
-
В нашей курсовой работе была поставлена задача создания обучающей программы по информатике, с помощью которой студенты смогут проверить свои знания в...
-
Языки и системы программирования, их эволюция - Автоматизация решения задач пользователя
Язык программирования - это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме. Процессор компьютера непосредственно...
-
Разработка сайта, Среда разработки web-сайта - Разработка сайта для компании
Среда разработки web-сайта При разработке web-сайта используются: - HTML - язык разметки web-страниц; - CSS - формальный язык описания внешнего...
-
Языки программирования высокого уровня - Инструментальные средства разработки экспертных систем
Языки высокого уровня являются в руках опытного программиста прекрасным средством быстрого создания прототипа экспертной системы, позволяют обеспечить...
-
- Не требует прокладки новых линий связи. - Непрерывность. После включения питания компьютеры остаются постоянно подключенными к сети, электронная почта...
-
Преимущества и недостатки сервиса Ucoz - Разработка Web-сайта предприятия (ООО "Полтава")
Начнем мы, конечно же, с преимуществ. Первое и главное преимущество сервиса Ucoz -- бесплатность и доступность. Вам не придется платить за хостинги...
-
Подпрограммы - Язык программирования PERL. Сфера применения
Как и все структурированные языки программирования, Perl поддерживает подпрограммы. Подпрограмма может быть определена с помощью ключевого слова sub, как...
-
При создании программ и формировании структур баз данных нередко применяются формальные способы их представления - формальные нотации, с помощью которых...
-
Языки программирования баз данных - Теоретические основы информационных технологий
Эта группа языков отличается от алгоритмических языков, прежде всего решаемыми задачами. База данных - это файл (или группа файлов), представляющий собой...
-
Обзор языков программирования высокого уровня - Теоретические основы информационных технологий
Fortran (Фортран) Это первый компилируемый язык, созданный в 50-е годы. Программисты, разрабатывавшие программы исключительно на ассемблере, выражали...
-
Инструментарий технологии программирования - программные продукты поддержки (обеспечения) технологии программирования. В рамках этого направления...
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
Среда объектно-ориентированного программирования Delphi Delphi - это комбинация нескольких важнейших технологий, высокопроизводительный компилятор в...
-
Для того, чтобы строить диаграммы в соответствии с рисунком 2.7, необходимо реализовать алгоритм соединения двух объектов линией. Для отображения линии...
-
"WWWSQLDesigner" позиционируется как абсолютно бесплатный, доступный для пользователей, универсальный веб-редактор, значительно упрощающий процесс...
-
В главе рассмотрены существующие решения веб-редакторов, позволяющих создавать разного типа диаграммы и генерировать на их основе программный код. Так же...
-
Преимущества и недостатки системы Windows - Операционная система Windows
В заключение нужно упомянуть о преимуществах и недостатках системы Windows. К преимуществам Windows относят: - Удобство и поддержка устройств . Основное...
Преимущества и недостатки языка программирования С++ - Разработка видеолекций по программированию С++