Опубликован: 05.07.2006 | Уровень: для всех | Доступ: платный
Лекция 1:

Аннотация и введение

Лекция 1: 123 || Лекция 2 >

Язык "C" не является языком со строгими типами в смысле паскаля или алгола 68. Он сравнительно снисходителен к преобразованию данных, хотя и не будет автоматически преобразовывать типы данных с буйной непринужденностью языка PL/1. Существующие компиляторы не предусматривают никакой проверки во время выполнения программы индексов массивов, типов аргументов и т.д.

В тех ситуациях, когда желательна строгая проверка типов, используется специальная версия компилятора. Эта программа называется lint очевидно потому, она выбирает кусочки пуха из вашей программы. Программа lint не генерирует машинного кода, а делает очень строгую проверку всех тех сторон программы, которые можно проконтролировать во время компиляции и загрузки. Она определяет несоответствие типов, несовместимость аргументов, неиспользованные или очевидным образом неинициализированные переменные, потенциальные трудности переносимости и т.д. Для программ, которые благополучно проходят через lint, гарантируется отсутствие ошибок типа примерно с той же полнотой, как и для программ, написанных, например, на АЛГОЛЕ-68. Другие возможности программы lint будут отмечены, когда представится соответствующий случай.

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

Содержание книги организовано следующим образом. "Лекция № 1" : является учебным введением в центральную часть языка "C". Цель - позволить читателю стартовать так быстро, как только возможно, так как мы твердо убеждены, что единственный способ изучить новый язык - писать на нем программы. При этом , однако, предполагается рабочее владение основными элементами программирования; здесь не объясняется, что такое ЭВМ или компилятор, не поясняется смысл выражений типа n=n+1. Хотя мы и пытались, где это возможно, продемонстрировать полезную технику программирования. Эта книга не предназначается быть справочным руководством по структурам данных и алгоритмам; там, где мы вынуждены были сделать выбор, мы концентрировались на языке.

В "лекциях № 2" , "№ 3" , "№ 4" , "№ 5" и "№ 6" различные аспекты "C" излагаются более детально и несколько более формально, чем в "лекции № 1" , хотя ударение по-прежнему делается на разборе примеров законченных, полезных программ, а не на отдельных фрагментах.

В "лекции № 2" обсуждаются основные типы данных, операторы и выражения. В "лекции № 3" рассматриваются управляющие операторы: if - else, while, for и т.д. "Лекция № 4" охватывает функции и структуру программы - внешние переменные, правила определеных областей действия описания и т.д. В "лекции № 5" обсуждаются указатели и адресная арифметика. "Лекция № 6" содержит подробное описание структур и объединений.

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

В "лекции № 8" описывается интерфейс между "C" - программами и операционной системой "UNIX". Упор делается на ввод-вывод, систему файлов и переносимость. Хотя некоторые части этой лекции специфичны для операционной системы "UNIX", программисты, не использующие "UNIX", все же должны найти здесь полезный материал, в том числе некоторое представление о том, как реализована одна версия стандартной библиотеки и предложения для достижения переносимости программы.

"Приложение А" : содержит справочное руководство по языку "C". Оно является "официальным" изложением синтаксиса и семантики "C" и (исключая чей-либо собственный компилятор ) окончательным арбитром для всех двусмысленностей и упущений в предыдущих лекциях.

Так как "C" является развивающимся языком, реализованным на множестве систем, часть материала настоящей книги может не соответствовать текущему состоянию разработки на какой-то конкретной системе. Мы старались избегать таких проблем и предостерегать о возможных трудностях. В сомнительных случаях, однако, мы обычно предпочитали описывать ситуацию для системы "UNIX" PDP-11 , так как она является средой для большинства программирующих на языке "C". В "приложении А" также описаны расхождения в реализациях языка "C" на основных системах.

Лекция 1: 123 || Лекция 2 >
Ярослав Воробей
Ярослав Воробей
Россия
Дмитрий Левин
Дмитрий Левин
Россия