Файл: История возникновения и развития языка программирования Си (С++) и Java ( Программирование на С и С++).pdf
Добавлен: 30.03.2023
Просмотров: 294
Скачиваний: 1
Введение
Если задаться вопросом, с каким языком связано начало современной эпохи программирования, ответ будет прост – с языком С. Данный язык разработал Д.Ритч в 70х прошлого столетия для компьютера PDP 11 компании DEC (Digital Equipment Corporation), где применялась ОС UNIX. В то время именно язык С, несмотря на присутствие развитых определенных языков программирования, определил направление всего будущего программирования.
Язык С++ разработали в 80е годы в Bell Laboratories. По своей сути, С++ - это расширение языка С, его главное преимущество от своего предшественника, и от языков более высшего уровня в том, что в С++ присутствует поддержка объектно-ориентированного программирования, перегруженных операций, а также наличие возможности разработать полномасштабные windows-приложения.
Как известно, современные приложения должны быть, в первую очередь, безопасны, отличаться высокой производительностью, быть работоспособными в распределенной среде, нейтральными к архитектуре.
Данные факторы способствовали пересмотру взглядов на сам процесс создания и распределения приложений на множестве ЭВМ различной архитектуры. Требования к переносимости создали необходимость отказаться от обычного принятого способа создания и доставки бинарных файлов, которые содержали машинные коды и, следовательно, были привязаны к определенной платформе. Тогда компания SunMicrosystems создает систему разработки Java, которая удовлетворяет всем вышеперечисленным требованиям.
Цель данной работы – ознакомиться с историей возникновения и развития языков программирования С и С++ и Java.
В ходе поставленной цели будут решены следующие задачи:
- изучено программирование на С и С++: дано понятие языков программирования С и С++ их краткая история развития и базовые понятия;
- изучено программирование Java: дано понятие языка программирования Java, 11 история и базовые понятия.
Курсовая работа состоит из введения, двух глав, заключения и списка литературы.
Глава 1 Программирование на С и С++
1.1 Краткая история развития языков С и С++
Причины, послужившие созданию нового языка программирования. Основные отличия С++ от других известных языков, его положительные и отрицательные характеристики.
С++ - один из наиболее популярных языков программирования, используемый для разработки программного обеспечения, поддерживающий процедурное (при котором последовательно выполняемые команды можно собрать в подпрограммы), объектно-ориентированное (стиль кодирования, который позволяет группировать задачи в классы), обобщенное программирование (написание кода, который может быть многократно использован с объектами различных типов), сочетающий свойства высокоуровневых и низкоуровневых языков. С++ используется для создания программ, рассчитанных на выполнение определенных задач в разных сферах жизни человека, игр, драйверов, операционных систем и прочего. Он образован на основе языка С. Многие программы на С исправно работают и с компилятором С++ из-за тесной связи.
Название C++ происходит от языка программирования C, в котором унарный оператор ++ обозначает увеличение значения переменной на 1. Сначала этот язык носил имя С с классами, затем стал называться C++. После буквы С добавлено именно два плюса, потому что один образует синтаксическую ошибку в языке С, а также это имя уже было занято.
С++ возник в начале 1980-х годов. Бьёрн Страуструп, сотрудник фирмы Bell Laboratories, усовершенствовал язык С под свои нужды. То есть, изначально создание нового языка он не планировал. Но в конце 70-х годов программист начал работать над задачами теории очередей (в моделировании телефонных вызовов), он обнаружил, что попытки применения действующих тогда языков моделирования, таких, как Симула и BCPL, оказываются неэффективными, а применение высокоэффективных машинных языков слишком сложно. Так, язык Симула имеет полезные для разработки большого программного обеспечения возможности, но все работает чересчур медленно, а язык BCPL достаточно быстр, но сильно близок к низкоуровневым языкам, он не подходит для разработки больших программ.
По объяснению Страуструпа, для создания нового языка программирования самой лучшей основой послужил язык С, так как он универсален, прост, переносим, быстр и функционален в исполнении многих задач, стыкуется со средой программирования UNIX. Страуструп добавил к С возможность работы с типами данных (классами) и объектами. Благодаря быстродействию С практические задачи моделирования оказались доступными для решения по времени разработки и вычислений. В первую очередь в C были добавлены типы данных, их наследование, проверка типов и аргументы по умолчанию. Первые версии языка, изначально называвшегося Си с классами, стали доступны с 1980 года. Затем Страуструп создал компилятор cfront, который перерабатывал код С++ в код простого С, что позволило сразу применять его на практике.
Язык стал невероятно популярен. К 1983 году в него были добавлены различные константы, виртуальные функции, ссылки, перегрузка функций и операторов, контроль пользователя над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев //. В 1985 году вышло издание Языка программирования C++, это было первое описание языка, что из-за отсутствия официального стандарта было очень важно. В 1989 году состоялся выход второй версии C с новыми возможностями наследования, функциями и классами. В 1998 году был утвержден международный стандарт языка C++. Он является свободным, никто не обладает правом на владение им.
Стандарт C++ состоит из двух основных частей: описание стандартного сборника подпрограмм или объектов, используемых для разработки программ, и описание ядра языка. Кроме того, существует огромное количество нестандартных библиотек C++ . В программах на C++ можно использовать многие библиотеки C.
Нововведениями C++ в сравнении с C являются:
- поддержка объектно-ориентированного программирования;
- поддержка обобщённого программирования;
- новые типы данных;
- исключения - реакции программы на ошибки;
- пространства имён (хранилища для группировки уникальных идентификаторов);
- встраиваемые функции;
- перегрузка операторов (существования в одной области видимости нескольких различных вариантов применения оператора);
- перегрузка имён функций;
- ссылки и операторы управления свободно распределяемой памятью;
- дополнения к стандартной библиотеке.
Также часто сравниваются Java и C++ как языки, которые унаследовали синтаксис Си, несмотря на большие различия на всех уровнях. Java используется в конкретном секторе промышленности: безопасный язык с низким порогом вхождения для разработки прикладных приложений широкого рынка с высокими показателями адаптации к другой среде. С++ претендует на универсальное применение во всех задачах для всех категорий программистов, но не удовлетворяет в полной мере требованиям ни одной из заявленных сфер применимости. Базовая библиотека С++ в сравнении с Java имеет меньше ресурсов, но предоставляет свободу выбора сторонних библиотек.
Дальнейшее развитие языка будет идти путем дополнения в существующие стандартные библиотеки. Планом развития С++ на будущее является расширение обобщенного программирования.
1.2 Базовые понятия языка
C++ (читается си-плюс-плюс) — компилируемый, статически типизированный язык программирования общего назначения, на котором можно создавать программы любого уровня сложности.
Более 20 лет этот язык находится в тройке самых популярных и востребованных языков программирования. (В этом можно убедиться, посетив сайт TIOBE).
Алфавит языка (п. 3.1.1)
Алфавит языка C++ составляют символы включенные в 7-битную кодировку ISO 646/ECMA-6:
space, !, ", %, &, (, ), *, +, -, ., /, 0..9, :, ;, <, =, >, ?, A..Z, _, a..z.
Тем не менее, часть символов, используемых в алфавите C++, не входит в кодовую базу этой кодировки: {, }, [, ], #, \, ^, |, ~.
Лексема
Символы алфавита образуют лексемы. Лексема (token) – это минимальная единица языка, имеющая самостоятельный смысл. Лексемы – формируют базовый словарь языка, понятный компилятору. Всего существует пять видов лексем:
- Ключевые слова (keywords)
- Идентификаторы (identifiers)
- Литералы (literals)
- Операции (operators)
- Знаки пунктуации (разделители, punctuators)
Лексемы (как и слова в естественном языке) разделяются непечатаемыми (пробельными) символами (пробел, символы табуляции, перевода строки, возврат каретки, перевода страницы) и знаками пунктуации: [, ], (, ), {, }, *, ,, :, =, ;, ..., #.
Ключевые слова
Ключевые слова (уч. – служебные слова) – это лексемы специального назначения. Они зарезервированы, использовать их в качестве идентификаторов (имен объектов программы) запрещено. Список ключевых слов см. в методичке (Таблица 3).
Идентификаторы
Идентификатор – это имя программного объекта: переменной, константы, массива, функции, класса и т. п. В идентификаторах могут использоваться латинские буквы, цифры и знак нижнего подчеркивания ( _ ). В C++ различаются строчные и прописные буквы (т. е. имена регистро-зависимы), так: Name, name и NAME – это разные идентификаторы. Правила использования идентификаторов:
- можно использовать латинские символы: A..Z, a..z;
- можно использовать арабские цифры: 0..9 и символ нижнего подчеркивания, но не в начале;
- пробелы в имени не допускаются;
- не рекомендуется начинать с нижнего подчеркивания или с двух нижних подчеркиваний и заглавной буквы, например: _S (такие идентификаторы имеют специальное назначение);
- двойное подчеркивание используется только для служебных целей to__boo
- не допускается использования ключевых слов;
- необходимо воздерживаться от использования ключевых слов, как части имени, например: for_and_if (за исключением наименования типов)
При составлении имен желательно придерживаться какого-либо стиля, например, стиля CamelCase: имена пишутся слитно, каждое слово, описывающее назначение идентификатора, пишется с заглавной буквы. Этот стиль используется в двух вариантах: UpperCamelCase и lowerCamelCase. Первый используется для именования классов, второй для прочего: переменных, методов и т.п.
Литералы
Литералы, иначе константы – это неизменяемые величины. Примеры различных констант:
Целые
0, -1, 10000
По умолчанию целочисленные лексемы имеют тип int.
Представление целых литералов в различных системах счисления:
Двоичной: 0b1010, 0B111100111
Восьмеричной: 01, 020, 07155
Шестнадцатеричной: 0xA, 0x1B8, 0X00FF
Действительные
С фиксированной точкой: 5.7, .001, -35., 0.0
С плавающей точкой (экспоненциальный): -0.2E6, .11e-3, 5E10, 2.e-10
По умолчанию они имеют тип double.
Примечание: стандарт C++14 ввёл использование апострофа для произвольного разделения разрядов в числовых литералах:
0b0100’1100’0110, 0.000’015’3
Символьные
Один или два символа заключенные в апострофы: 'S', 'щ', '\t', '\012', '\x07\x07', 'db'
Примечание: к символьным константам относятся специальные управляющие символы (escape-последовательности).
Escape-последовательности
Escape-последовательности (или управляющие последовательности) используются для описания определённых специальных символов внутри строковых литералов, то есть внутри ограничителей "". Полный список приведен в методичке . Вот некоторые из них:
\n – новая строка
\t – горизонтальная табуляция
\v – вертикальная табуляция
\0 – нулевой символ
Например: "Ветер на море гуляет\nИ кораблик подгоняет;\nОн бежит себе в волнах\nНа раздутых парусах."
Строковые
Последовательность символов, заключенные в кавычки:
"Hello world!", "Здесь был Вася :-))"
В стандарте C++17 символьные литералы представлены в единой кодировке UTF-8.
Примечание: к строковому литералу автоматически добавляется признак конца строки ('\0').
Прочие
Булевские (логические): false, true
и другие, с которыми мы познакомимся позднее.
В заключение добавим, что целые, действительные и строковые литералы используют специальные суффиксы, приказывающие компилятору изменить представление типов данных (используемых по умолчанию), примеры использования суффиксов мы покажем во время более близкого знакомства с типами данных.
Комментарии
Комментарии служат для описания и документирования исходного кода. В C++ применяются два вида комментариев: многострочный и однострочный. Например:
/* Многострочный комментарий часто используется
для заголовков в описании исходного кода */
// Однострочный комментарий используется в пределах одной строки
// но также может быть использован для описания алгоритма
В комментариях можно использовать любые, доступные в среде, символы – компилятор игнорирует содержимое закомментированного блока или строки.