Файл: Вариант 11. История возникновения и развития языка Си (Си++) и Java..pdf
Добавлен: 29.03.2023
Просмотров: 296
Скачиваний: 1
ВВЕДЕНИЕ
Начало новой эпохи в программирование началось именно с языка С. Именно он определил направление всего будущего программирования.
Язык С++ - это расширение языка С. Его главное преимущество в том, что в С++ присутствует поддержка объектно-ориентированногопрограммирования, перегруженных операций, а также наличие возможности разработать полномасштабные windows-приложения.
Современные технологии не стоят на месте. Тогда компания SunMicrosystems создает систему разработки Java, которая удовлетворяет всем требованиям.
Цель данной работы: ознакомиться с историей возникновения и развития языков программирования С и С++ и Java.
Задачи:
- изучено программирование на С и С++: дано понятие языков программирования С и С++ их краткая история развития и базовые понятия;
- изучено программирование Java: дано понятие языка программирования Java, их история и базовые понятия.
Глава 1 Программирование на С и С++
1.1 История возникновения и развития языка C++
Язык С создан в начале 70х годов, когда Кен Томпсон и Дэннис Ритчи из Bell Labs разрабатывали операционную систему UNDC. (рис. 1)
Рисунок 1. Создатели языка программирования С++
Сначала они создали часть компилятора С, затем использовали ее для компиляции остальной части компилятора С и, наконец, применили полученный в результате компилятор для компиляции UNIX. Операционная система UNIX первоначально распространялась в исходных кодах на С среди университетов и лабораторий, а получатель мог откомпилировать исходный код на С в машинный код с помощью подходящего компилятора С.
Распространение исходного кода сделало операционную систему UNIX уникальной. Программист мог изменить операционную систему, а исходный код мог быть перенесен с одной аппаратной платформы на другую.
По сравнению с более ранним языком — BCPL, С был улучшен путем добавления типов данных определенной длины. Например, тип данных int мог применяться для создания переменной с определенным числом битов (обычно 16), в то время как тип данных long мог использоваться для создания целой переменной с большим числом битов (обычно 32). В отличие от других языков высокого уровня, С мог работать с адресами памяти напрямую с помощью указателей и ссылок. Поскольку С сохранил способность прямого доступа к аппаратному обеспечению, его часто относят к языкам среднего уровня или в шутку называют «мобильным языком ассемблера».
Что касается грамматики и синтаксиса, то С является структурным языком программирования. В то время как многие современные программисты мыслят в категориях классов и объектов, программисты на С думают в категориях процедур и функций. В С можно определить собственные абстрактные типы данных, используя ключевое слово struct. Аналогично можно описывать собственные целые типы (перечисления) и давать другие названия существующим типам данных при помощи ключевого слова typedef. В этом смысле С является структурным языком с зародышами объектно-ориентированного программирования.
Широкое распространение языка C на различных типах компьютеров (иногда называемых аппаратными платформами) привело, к сожалению, ко многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это было серьезной проблемой для разработчиков программ, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на нескольких платформах. Стало ясно, что необходима стандартная версия C. В 1983г. ANSI (Американский Национальный Комитет Стандартов) сформировал технический комитет X3J11 для создания стандарта языка C. В 1989 стандарт был утвержден. ANSI скооперировался с ISO (Международной Организацией Стандартов), чтобы стандартизовать C в международном масштабе. Этот стандарт совершенствуется до сих пор и поддерживается большинством фирм разработчиков компиляторов. В октябре 2011года появился новый стандарт языка С++ [Джесс либерти, «Освой самостоятельно C++ за 21 день», изд. Дом «Вильямс», Москва - Санкт-Петербург - Киев, 2001. - С.14.]
Бьерн Страуструп высвободил объектно-ориентированный потенциал С путем перенесения возможностей классов Simula 67 в С. Первоначально новый язык носил имя «С с классами» и только потом стал называться C++. Язык C++ достиг популярности, будучи разработанным в Bell Labs, позже он был перенесен в другие индустрии и корпорации. Сегодня это один из наиболее популярных языков программирования в мире. C++ наследует как хорошие, так и плохие стороны С.
Название C++ выдумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от C. «++» - это операция приращения в C. Чуть более короткое имя C+ является синтаксической ошибкой. Кроме того, оно уже было использовано как имя совсем другого языка. Знатоки семантики C находят, что C++ хуже, чем ++C. Названия D язык не получил, поскольку он является расширением C и в нем не делается попыток исцеляться от проблем путем выбрасывания различных особенностей.
В языке С++ полностью поддерживаются принципы объектно-ориентированного программирования, включая три кита, на которых оно стоит: инкапсуляцию, наследование и полиморфизм. Инкапсуляция в С++ поддерживается посредством создания нестандартных (пользовательских) типов данных, называемых классами.
Язык С++ поддерживает наследование. Это значит, что можно объявить новый тип данных (класс), который является расширением существующего языка.
Язык программирования C++ в настоящее время считается господствующим языком, используемым для разработки коммерческих продуктов, 90% игр пишутся на С++ с прменением DirectX.
1.2 Достоинства и недостатки языка
В каждом языке есть свои плюсы и минусы. Для работы с языком С++ их необходимо учитывать, тогда трудностей в написании программ не возникнет. Зная все тонкости языка, специалист в этой области всегда будет востребован.
Достоинства языка:
1. Масштабируемость. На языке C++ разрабатывают программы для самых различных платформ и систем.
2. Возможность работы на низком уровне с памятью, адресами, портами.
3. Возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.
4. Кроссплатформенность. Доступны компиляторы для большого количества платформ, на языке C++ разрабатывают программы для самых различных платформ и систем.
5. Эффективность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы.
Недостатки языка:
1. Наличие множества возможностей, нарушающих принципы типобезопасности приводит к тому, что в С++ программы могут легко закрасться трудноуловимая ошибка.
2. Плохая поддержка модульности. Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include) серьёзно замедляет компиляцию, при подключении большого количества модулей.
3. Язык C++ является сложным для изучения и для компиляции.
4. Некоторые преобразования типов неинтуитивны. В частности, операция над беззнаковым и знаковым числами выдаёт беззнаковый результат.
5. Некоторые считают недостатком языка C++ отсутствие встроенной системы сборки мусора. С другой стороны, в C++ имеется достаточно средств, позволяющих почти исключить использование опасных указателей, нет принципиальных проблем и в реализации и использовании сборки мусора (на уровне библиотек, а не языка). Отсутствие встроенной сборки мусора позволяет пользователю самому выбрать стратегию управления ресурсами.
1.3Базовые понятия языка
Алфавитом языка называется совокупность символов, используемых в языке.
Очень важно знать и помнить, что язык С различает прописные и строчные буквы. Язык С, как говорят, является чувствительным к регистру. В языке С имена PEREMANNAY, Peremennay и peremennay имеют три различных имени переменных. При написании программы необходимо внимательно отнестись к использованию регистров для имен переменных. Удобнее всего принять некоторые соглашения относительно использования прописных и строчных букв в идентификаторах. Например, имена переменных содержат только строчные буквы, константы и макросы – прописные буквы.
В языке С++ алфавит можно условно разделить на группы знаков. [Джесс либерти, «Освой самостоятельно C++ за 21 день», изд. Дом «Вильямс», Москва - Санкт-Петербург - Киев, 2001.- С.43.]:
- прописные и строчные латинские буквы (A, B,..., Z, a, b,..., z);
- арабские цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
- специальные знаки: " , { } | [ ] ( ) + - / % \ ; '. : ? < = > _ ! & * # ~ ^
- пробельные символы – это символы пробела, табуляции, перехода на новую строку.
Идентификатор – это имя какого-либо объекта программы. Имя может состоять из латинских букв, цифр и символа _ (символ подчеркивания). Имя может начинаться с буквы или символа подчеркивания, но не с цифры.
Длина имени в большинстве случаев не ограничена, но на длину внешних имён (имён библиотек, функций) может накладывать ограничение операционная система.
Ключевые (зарезервированные) слова – это слова, которые можно использовать в программе только по их прямому назначению, т.е. эти имена нельзя использовать для обозначения, например, своих переменных [Герберт Шилдт. C + + для начинающих. Пер. с англ. М: ЭКОМПаблишерз 2007. - С.34-38.].
В языке С++ имеется 63 ключевых слова. (Рис.2)
Рисунок 2. Ключевые слова языка С++
Константы – это неизменяемые величины. Типы констант в языке C++: целые, вещественные, символьные, строковые и булевые [Подбельский В.В., Фомин С.С. Программирование на языке Си. Учеб. пособие.- М.: Финансы и статистика, 2000.]:
1. Целые константы. Правила языка допускают использование трёх видов целых констант: десятичных, шестнадцатеричных и восьмеричных. Основание определяется префиксом в записи константы. Для десятичных констант префикс не нужен.
Десятичное целое – это последовательность десятичных цифр, начинающаяся не с нуля (если это не число нуль).
Восьмеричное целое – это последовательность цифр, начинающаяся с 0 и не содержащая десятичных цифр старше 7.
Шестнадцатеричное целое – это последовательность шестнадцатеричных цифр (0, 1,…, 9, А, B, С, D, Е, F), перед которой записаны символы 0х или 0Х.
2. Вещественная константа. Константа с плавающей точкой (вещественная константа) всегда представляется числом с плавающей точкой двойной точности, т. е. как имеющая тип double, и состоит из следующих частей:
- целой части — последовательности цифр;
- точки — разделителя целой и дробной части;
- дробной части — последовательности цифр;
- символа экспоненты е или E;
- экспоненты в виде целой константы (может быть со знаком).
Любая часть (но не обе сразу) из нижеследующих пар может быть опущена:
- целая или дробная часть;
- точка или символ е (Е) и экспонента в виде целой константы.
По умолчанию компилятор присваивает вещественному числу тип double. Если программиста не устраивает тип, который компилятор приписывает константе, то тип можно явно указать в записи константы с помощью следующих суффиксов:
- F (или f) — float для простых вещественных констант,
- L (или l) — long double для вещественных констант двойной расширенной точности.
3. Символьные константы
Символьная константа — это один символ, например: ‘z’. В качестве символьных констант также могут использоваться управляющие коды, не имеющие графического представления. При этом код управляющего символа начинается с символа ‘\’ (обратный слеш).
Таблица 1.
Управляющие символы
|
Код |
Обозначение |
Описание |
|---|---|---|
|
0x00 |
‘\0’ |
Нуль-символ, NULL |
|
0x07 |
‘\a’ |
Звуковой сигнал. |
|
0x08 |
‘\b’ |
Возврат на 1 шаг (Backspace) |
|
0x09 |
‘\t’ |
Горизонтальная табуляция (Tab) |
|
0x0A |
‘\n’ |
Перевод строки (Enter) |
|
0x0B |
‘\v’ |
Вертикальная табуляция (в консоли аналогична переводу строки) |
|
0x0C |
‘\f’ |
Смена страницы |
|
0x0D |
‘\r’ |
Возврат каретки |
При нажатии клавиши Enter генерирует сразу два управляющих символа – перевод строки (0x0A) и возврат каретки (0x0D).
Все символьные константы имеют тип char и занимают в памяти 1 байт. Значением символьной константы является числовое значение её внутреннего кода.
4.Строковые константы
Строковая константа — это последовательность символов, заключенная в кавычки, например: