МП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. Кетков Ю.Л., Кетков А.Ю., Практика программирования: Бейсик, Си, Паскаль.… Книга – введение в универсальные алгоритмические языки. Интересна сравнением Си с Паскалем и Бейсиком. Написана живо и…