Файл: История возникновения и развития языка программирования C++ и Java (Происхождение языка Java).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 200

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

В 1985 году произошел первый коммерческий выпуск C++ и язык приобрел современное название. А уже в следующем году вышло первое издание книги Страуструпа «The C++ Programming Language»

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

Основными нововведениями С++ в сравнении с C были: новые типы данных, поддержка объектно-ориентированного программирования, поддержка обобщенного программирования, исключения – реакции программы на ошибки, пространства имен (хранилища для группировки уникальных идентификаторов), встраиваемые функции, перегрузка операторов (существование в одной области видимости нескольких различных вариантов применения оператора), перегрузка имен функции, ссылки и операторы управления свободно распределяемой памятью, дополнения к стандартной библиотеке.

В 1989 году вышла новая версия языка C++: 2.0. В нее вошли такие новшества, как множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищенные члены.

Работа по стандартизации C++, которая началась в конце 1989 году, осложнялась тем, что язык долгое время был открыт для расширений. Формулировки правил ARM были недостаточно конкретны, а потому часто требовали уточнений. В итоге язык стал довольно громоздким, и сейчас ни один человек не может точно запомнить все его детали и тонкости. Также с момента стандартизации сама идеология C++ изменилась. Если изначально возможность использования средств динамического определения типов (rtti) отвергалась самим автором языка, то в текущем проекте стандарта эти средства есть.

Одним из важнейших этапов в развитии языка стала публикация в 1990 году его подробного описания, которое назвали «Комментированное справочное руководство по C++». Сокращенно эту книгу часто называют ARM. Впоследствии она была положена в основу стандарта.

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

В 1998 году был опубликован стандарт языка ISO/IEC 14882:1998 (известный как C++98),[8] разработанный комитетом по стандартизации C++ (ISO/IEC JTC1/SC22/WG21 working group). Стандарт C++ не описывает способы именования объектов, некоторые детали обработки исключений и другие возможности, связанные с деталями реализации, что делает несовместимым объектный код, созданный различными компиляторами. Однако для этого третьими лицами создано множество стандартов для конкретных архитектур и операционных систем.


В 2003 году был опубликован стандарт языка ISO/IEC 14882:2003, где были исправлены выявленные ошибки и недочёты предыдущей версии стандарта. 

В 2005 году был выпущен отчёт Library Technical Report 1 (кратко называемый TR1). Данный отчет не является официально частью стандарта, но описывает расширения стандартной библиотеки, которые, как ожидалось авторами, должны быть включены в следующую версию языка C++. На данном этап стала улучшаться степень поддержки TR1 практически во всех поддерживаемых компиляторах языка C++. 

С 2009 года велась работа по обновлению предыдущего стандарта, предварительной версией нового стандарта сперва был C++09, а спустя год C++0x. В итоге в 2011 году вышел новый стандарт C++11, куда были включены дополнения в ядро языка и расширение стандартной библиотеки, в том числе большая часть TR1. 

Именно в С++11 появились важные фичи, благодаря которым, во-первых, C++11 можно считать практически новым языком по сравнению с предыдущим стандартом, а во-вторых, теперь на C++ можно писать такой же чистый и безопасный код, как и в случае других современных языков программирования.

Новшества стандарта C++11.

  • auto: в C++11 auto позволяет не указывать тип переменной явно; компилятор сам определяет тип исходя из типа инициализируемого значения;
  • nullptr: ключевое слово nullptr имеет свой собственный тип std:nullptr_t, что позволяет избежать проблем, которые возникали из-за используемого ранее макроса NULL (который является нулем, т.е. целым типом);
  • новые идентификаторы: override и final, которые позволили избавиться от ошибок, связанные с использованием виртуальных функций и переопределения;
  • strongly-typed enums: новая категория перечислений в C++11 помогла устранить проблемы, которые возникали при экспорте значений перечислений в окружающую область видимости (из-за чего происходил конфликт имен), при преобразовании перечислений в целый тип (т.е. они не могли иметь определенный пользователем тип).
    Новые перечисления определяются ключевым словом enum class. Они больше не экспортируют свои перечисляемые значения в окружающую область видимости, больше не преобразуются неявно в целый тип и могут иметь определенный пользователем тип (эта опция так же добавлена и для «традиционных» перечислений").;
  • интеллектуальные указатели: особенную ценность получили указатели с подсчетом ссылок и автоматическим освобождением памяти;
  • лямбда-выражения;
  • функции begin() и end(), которые работают со всеми контейнерами STL и могут быть расширены для работы с любым типом;
  • static_assert: проверяет утверждение во время компиляции;
  • семантика перемещения: 1 пример: позволяет изменять rvalue(объект, у которого нет имени), что раньше считалось невозможным, 2 пример: конструктор копирования выполняет поразрядное копирование переменных.

2.3 C++ сегодня

В 80-х годах C++ был единственным популярным языком программирования. Со временем C# и Java поглотили корпоративный сектор, а Python, Ruby, PHP заняли web-сектор.

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

После стандарта C++11 появились также C++14 и C++17, которые демонстрируют мощь, производительность, библиотеки и инструменты, необходимые для массовых ферм серверов, а также мобильных приложений с низким уровнем следа.

Заключение

Java и C++ можно рассматривать как два языка-потомка C. Но поскольку разработаны они были из разных соображений и по разным причинам, то и развивались они по разным путям.

Появление С++ было мощным рывком в процессе развития программирования. Этот язык и сейчас многие считают господствующим среди современных языков программирования. Его используют во многих современных проектах. При этом абсолютно ясно, что C++ будет сохранять свое положение еще не один год. Существует много реализаций этого языка: как бесплатные, так и коммерческие для разных платформ.

Язык Java создавался несколько лет и благодаря ему был совершен прорыв в информационных технологиях. Этот типичный объектно-ориентированный язык имеет широкое применение. На нем работают телефоны, медицинские устройства, принтеры, приставки и многое другое.

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

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

  1. Берд Барри. Java для чайников / Барри Берд. - М.: Диалектика / Вильямс, 2013. - 521 c.
  2. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. – 3-е изд.- М.: «Вильямс», 2004.800 с.
  3. Дейтел П.Дж., Дейтел Х.М. Как программировать на C++. Введение в объектно-ориентированное проектирование с использованием UML./ Пер. с англ. – М.: Издательство <Бином>, 2009. 1454 с.
  4. Подбельский В.В. Язык C++: Учебное пособие. - Москва: Финансы и статистика, 1995. 560с.
  5. Секунов Н. Самоучитель Visual C++6. изд. «БХВ-Петербург», Санкт-Петербург, 2003. 925 с.
  6. Страуструп Б. Язык программирования С++. Специальное издание. — М.: Издательство «БИНОМ», 2001.
  7. Страуструп Б. Программирование: принципы и практика использования С++.: Пер. с англ. – М. ООО «И.Д.Вильямс», 2011. – 1248 с.
  8. Фридман А.Л. Основы объектно-ориентированного программирования на языке C++: Учебный курс. – М.: Радио и связь, 1999. – 208 с.
  9. Хабибулин И.Ш. Самоучитель Java 2. СПБ.: БХВ-Петербург, 2007.720 с.
  10. Шилдт Г. Самоучитель C++: Пер. с англ. - Санкт-Петербург: BHV-Санкт-Петербург, 1998. 620с.
  11. Шилдт, Г. Java 8. Руководство для начинающих / Герберт Шилдт. - М.: Вильямс, 2015. - 720 c.
  12. Эккель Б. Философия Java. Библиотека программиста. СПБ.: Питер, 2001. 640 с.