Файл: Вариант 11. История возникновения и развития языка Си (Си++) и Java..pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

ВВЕДЕНИЕ

Начало новой эпохи в программирование началось именно с языка С. Именно он определил направление всего будущего программирования.

Язык С++ - это расширение языка С. Его главное преимущество в том, что в С++ присутствует поддержка объектно-ориентированногопрограммирования, перегруженных операций, а также наличие возможности разработать полномасштабные windows-приложения.

Современные технологии не стоят на месте. Тогда компания SunMicrosystems создает систему разработки Java, которая удовлетворяет всем требованиям.

Цель данной работы: ознакомиться с историей возникновения и развития языков программирования С и С++ и Java.

Задачи:

  1. изучено программирование на С и С++: дано понятие языков программирования С и С++ их краткая история развития и базовые понятия;
  2. изучено программирование 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.Строковые константы

Строковая константа — это последовательность символов, заключенная в кавычки, например: