Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






История создания и особенности языка С






Язык C (СИ) был разработан в 1972 г. Д. Ритчи (Dennis M. Ritchie) в фирме Bell Laboratories. Истоком языка принято считать язык BCPL (Basic Combined Programming Language), разработанный M. Ричардсом (Martin Richards) в Кембридже. В 1970 г. в Bell Labs Кеном Томпсоном (Ken Thompson) был разработан вариант языка BCPL – язык B (БИ) для ранней версии операционной системы (ОС) Unix (компьютер PDP-11, Digital Equipment). Недостатки языка B, в частности, отсутствие типов данных привели к созданию на его основе нового языка C.

Язык C первоначально создавался для разработки ОС Unix, слабо зависящей от конкретной архитектуры ЭВМ и обладающей развитыми инструментальными возможностями. Достоинства ОС Unix вывели ее на одно из первых мест в мире по популярности среди специалистов в области информационных технологий. Все основные компоненты ОС Unix, транслятор и обслуживающие программы написаны на языке C.

Традиционно для разработки операционных систем и их компонентов используют Ассемблеры. Программирование на Ассемблере очень трудоемко и ориентировано на конкретную архитектуру ЭВМ, что не соответствовало задаче, поставленной перед разработчиками ОС Unix. Язык C, как язык программирования высокого уровня, свободен от этих недостатков. Он не связан с конкретной архитектурой ЭВМ. Компиляторы языка функционируют на разных по архитектуре ЭВМ под управлением ОС Unix, MS-DOS и т. д. Технология подготовки и отладки программ на C характерна для языков высокого уровня (Fortran, Pascal, Ada). В то же время ему присущи многие черты языков “низкого уровня” (доступ к адресам объектов и работа с ними, работа с битовыми величинами), позволяющие организовать эффективное управление устройствами и программами. По объему занимаемой памяти и времени выполнения программы на C близки программам на Ассемблере. В определенном смысле C занимает промежуточное положение между языками высокого уровня и машинно-ориентированными языками.

Для выработки определения языка С институтом американских национальных стандартов (ANSI) учрежден специальный комитет (1983). Результатом его работы явился стандарт ANSI-C (1989). Международная организация по стандартизации (International Standard Organization, ISO) приняла свой стандарт ISO C (1990), практически совпадающий с ANSI C. Стандартизированная версия языка описана в [1], а решения к упражнениям в [2].

Новый международный стандарт языка C ISO/IEC 9899: 1999, получивший название C 99, принят в 1999 г. Новый стандарт преследует цели расширения области применения языка, его интернационализации и устранения явных недостатков, выявленных программистами-практиками. Так, в целях интернационализации языка внедряются способы обработки международных наборов символов. Появление стандарта C 99 говорит о большом значении языка C в международном программировании [3, 4].

Язык C обеспечивает разнообразие типов данных. Базовыми типами являются целые, вещественные числа и символы (литеры). Язык разрешает модификацию базовых типов данных, а также создание пользовательских типов. В языке используются стандартные типы данных int, char, float, double; применяются массивы, структуры (записи), файлы; имеется возможность конструирования очередей, списков.

Язык располагает управляющими инструкциями, позволяющими создавать хорошо структурированные программы:

  • составная инструкция или блок
{…}
  • ветвление по условию
if – else
  • выбор одного из многих вариантов
switch
  • циклы с предусловием
while, for
  • циклы с постусловием
do
  • прерывание и продолжение цикла
break, continue

Однако в C отсутствуют многие средства, присущие другим языкам программирования, в частности:

  • встроенные средства ввода/вывода, методы доступа к файлам;
  • средства работы с символьными строками;
  • средства работы с составными объектами (массивы, структуры).

Все это – механизмы высокого уровня, которые в C реализуются с помощью явно вызываемых функций.

Программа на C состоит из программных единиц одного типа – функций. Аргументы могут передаваться функциям посредством копирования значений этих аргументов; при этом вызванная функция не может изменить фактический аргумент в вызывающей подпрограмме.

Возможен иной вариант – передача параметра по ссылке, когда явно передается указатель, т. е. адрес, при этом функция сможет изменить объект, на который ссылается указатель.

В C предусмотрен ряд операций низкого уровня: прямой доступ к памяти, операции над битами данных и адресной арифметики.

Программы на языке C компактны и гибки. Язык C доверяет программисту и разрешает ему практически все; из-за этого C нельзя считать языком надежного программирования, и вся ответственность за качество программы лежит на программисте, который должен знать особенности языка и его реализации.

1.2. Язык C ++ как развитие языка C

Язык C++ был разработан Бьерном Страуструпом (Bjarne Stroustrup) в Bell Labs в конце 70-х годов [5]. Новый язык явился расширением языка C. Включив в язык C ряд дополнительных возможностей, Б. Страуструп еще в 1980 г. создал то, что первоначально было названо “C с классами”. Было произведено объединение классов и возможностей объектно-ориентированного программирования из языка Simula с мощью и эффективностью языка C.

Стандарт языка C++ реализован фирмой Borland в компиляторе Borland C++ версий 3.0 и 3.1 [6].

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

Пользовательские типы данных используются для создания в программе объектов. Тип объекта может быть установлен во время компиляции или на этапе выполнения программы. Программирование с применением таких объектов называют объектно-ориентированным.

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

При разработке C++ большое внимание было уделено совместимости с языком C. Ряд понятий был заимствован из других языков, так, из BCPL взят знак комментария, из Simula 67 – концепция классов, из Algol 68 – свобода расположения описаний.

Название C++ появилось летом 1983 г. Выбор такого имени должен был показать эволюционный переход от языка C (++ операция приращения). Принятие имени C+ явилось бы синтаксической ошибкой. Некоторые знатоки утверждают, что было бы лучше использовать имя ++С. Имя D язык не получил, поскольку он является расширением языка C. Интересно отметить, что плана разработки С++ на бумаге никогда не было; проект, документация и реализация производились одновременно.

Отметим ряд причин, по которым в качестве базы C++ был выбран язык C:

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

Почему была сохранена совместимость с языком C, хотя, отказавшись от определенной части наследия, можно было бы избежать ряда проблем:

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

Позднее была специально проведена проверка определения C++, чтобы удостовериться в том, что любая конструкция, допустимая в C, действительно означает то же самое и в С++. Стандартом языка C++ является ISO/IEC 14882 “Standard for the C++ Programming Language” (1998).






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.