Лекция 01. С – универсальный алгоритмический язык

МП2. Введение в C

Тема 1. Введение в язык

Лекция 01. С – универсальный алгоритмический язык

С: Немного истории

· 1970г., Денис Ритчи, AT&T Bell Laboratories.

Авторство языка С принадлежит Денису Ритчи, сотруднику AT&T Bell Laboratories (1970 г.).

– UNIX PDP-11: A (ассеблер) – B – C

Сначала язык программирования С был написан для создания и поддержки операционной системы UNIX. До того времени все программы операционной системы UNIX были написаны либо на языке ассемблера, либо на языке В, разработанном Кеном Томпсоном - создателем системы UNIX.

– Первый продукт - компилятор

Первым программным продуктом, написанным почти полностью на Си, был компилятор с языка Си в код машинных команд компьютера РDР-11/20 (прототип миниЭВМ СМ-4). В 1973 г. Д.Ритчи и К.Томпсон переписали на Си большую часть операционной системы Unix.

Из 13000 машинных команд для РDР-7, на которой появилась первая версия Unix, только 800 пришлось вручную перевести в ассемблер РDР-11. В процессе перевода Unix из однопользовательской операционной системы, ориентированной на работу в конкретной ЭВМ, превратилась в мобильную операционную систему коллективного пользования. Успех этой операции, в значительной мере, предопределил популярность новой операционной системы и ее базового инструмента – языка Си.

– 1976 г. – перенос Unix на Interdata 8/32 . . . . .

В 1976 г. Д.Ритчи и К.Томпсон перенесли Unix с ЭВМ фирмы DEC на компьютеры другой архитектуры (Interdata 8/32), практически ничего не изменив в ядре операционной системы, написанном на Си. Точно таким же образом система Unix распространялась на десятки машин различных типов.

– 1978 г. (85) – первая книга

В 1978 г. появилась первая книга, посвященная описанию Си и технике программирования на этом языке, которая с большим запозданием была переведена на русский язык (Б.Керниган, Д.Ритчи, А.Фьюэр. Язык программирования Си. Задачи на языке Си. - М.: Финансы и статистика, 1985). От фамилий двух первых авторов произошло сокращенное обозначение первого, никем не утверждавшегося, но принятого всеми программистами стандарта языка Си – K&R.

– 1987 г. – стандарт ANSI C

Дальнейшая работа по совершенствованию языка Си и принятию в 1987 г. первого настоящего стандарта ANSI C была выполнена на общественных началах рабочей группой при Американском Национальном Институте Стандартов. Возглавлял эту работу Лэрри Рослер – сотрудник Bell Labs.

– UNIX – OS IBM – MS DOS - . . .

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

C++: Продолжение С

· 1980г., Бьярн Страуструп AT&T Bell Laboratories

Бьярн Страуструп из AT&T Bell Laboratories в году разработал на его основе язык программирования C++.

– С++ включает С

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

– С++ расширяет С за счет ООП

Основное отличие языка C++ от С заключается в реализации объектно-ориентированного подхода программирования - чрезвычайно мощного современного способа программирования.

– Visual C++, Borland C++ x.x, Borland C++ Builder

В настоящее время широкое распространение получили реализации языка в системах Visual C++, Borland C++ x.x, Borland C++ Builder x и др.

Общая характеристика С

· Основные свойства

– С – язык низкого уровня

ü компьютерные типы данных (байт, слово)

ü логические операции над битами, сдвиги, работа с адресами и регистрами

– С – язык высокого уровня

ü Структуры данных и операторы структурного программирования

ü Необычно большой набор операций

ü Указатели и функции

– Простой компилятор:

ü Эффективность, экономичность, переносимость

Эти преимущества Си обеспечивают хорошее качество разработ­ки почти любого вида программного продукта. Использование Си в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке ас­семблера. При этом они имеют лучшую наглядность и их более просто сопровождать.

– Препроцессор

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

– Стандартные библиотеки

Си сочетает эффективность и мощность в относительно малом по размеру языке. Хотя Си не содержит встроенных компонент языка, выполняющих ввод-вывод, распределение памяти, манипуляций с экра­ном или управление процессами, тем не менее, системное окружение Си располагает библиотекой об"ектных модулей, в которой реализо­ваны подобные функции. Библиотека поддерживает многие из функций, которые требуются.

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

· Недостатки

– Трудность чтения низкоуровнего кода

ü a++ << --b | 4

– «Слабый» синтаксис: ‘aba’ + baba

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

Алгоритмический язык

Что такое алгоритмический язык? Ответ типа: это язык для записи программ - вообще говоря верен, но порождает… Что такое алгоритм?

Литература

В настоящее время вышло очень много книг по C и C++ различной степени сложности и понятности. Главное достоинство рекомендованного списка – возможность скачать эти книги из Internet:

Основная:

1. Страустрап. Справочное руководство по C++. (509 Кб. 45 c.) http://www.helloworld.ru/texts/comp/lang/c/c4/

Очень краткое , но четкое пособие для «продвинутых» для выяснения как общих, так и «тонких» вопросов

2. Страустрап. Введение в язык С++. (1502Кб. 166 c.) http://www.helloworld.ru/texts/comp/lang/c/c3/aglav.htm

Развернутый аналог «Справочного руководства». Читать уже легче, но дольше.

3. Липпман. C++ для начинающих. (3344Kб. 1198 c.). http://c-plus-plus.narod.ru/docs/books.html

Ну, о-о-о-чень подробная книга с разжевыванием всего, что можно. Хотя читается легко и с интересом (если есть время).

Дополнительная

Классическая книга, с которой все начиналось. Авторы книги – авторы языка. Снимите шляпу! 5. Кетков Ю.Л., Кетков А.Ю., Практика программирования: Бейсик, Си, Паскаль.… Книга – введение в универсальные алгоритмические языки. Интересна сравнением Си с Паскалем и Бейсиком. Написана живо и…