Доброко времени суток!
Как я и обещал, начнем мы с краткого экскурса в историю.
Известно, что каждый язык программирования, как и вообще все в этом мире, создается
с некоторой определенной целью. Язык Pascal был создан Н.Виртом для обучения
студентов программированию. Надо сказать, что именно для этих целей - это действительно
прекрасный язык. Но не пытайтесь на нем писать программы размером более 5000
строчек - неблагодарное это занятие :-) Билл Гейтс создал BASIC таким образом,
чтобы его синтаксис был максимально приближен к английскому языку, вследствие
чего языком смогли пользоваться американские студенты (ведь, как это не прискорбно,
центр компьютерной цивилизации до сих пор находится в Штатах), не знакомые с
компьютерами. C был создан в далеком 1972 году в компании Bell Labs Деннисом
Ритчи во время работы над ОС Unix. После окончания разработки вся система была
на нем и написана :-) Обстановка тогда была достаточно интересной: единого стандарта
на операцонную систему и аппаратную платформу не существовало (это теперь все
сидят на IBM PC-производных и MS Windows). Отсюда вытекало первое требование
к языку: C-КОД ДОЛЖЕН БЫТЬ МОБИЛЬНЫМ, то есть программист при желании должен
был иметь возможность создания программ, которые без изменений могли быть откомпилированы
на ЛЮБОЙ системе, на которой реализован компилятор C. Сейчас язык стандартизирован
(если у вас установлен Borland C++ версий от 1.0 до 3.1 (на остальных - не знаю,
не искал), то вы в описании на любую библиотечную функцию можете увибеть таблицу
побберживаемых платформ. Если там отмечен пункт ANSI, то отмечены и все остальные),
и ту его часть, которая включена в этот стандарт, реализована на всех платформах.
С другой стороны, код может и не быть мобильным, а использовать в полной мере
функции той ОС, для которой разрабатывался.
Во-вторых, язык должен был быть достаточно мощным, чтобы на нем писать ОС. В
С нет многих ограничений, введенных для удобства в других языках. Разумеется,
это существенно удобнее и мощнее, но вся ответственность за соблюдение некоторых
правил лежит целиком на программисте. Вообще всегда есть выбор, кому облегчить
жизнь: конечным пользователям некоторой программы или же ее программистам. В
С предпочтение отдается пользователям: программы на нем меньше, быстрее, портативнее,
etc. Но за все в этом мире надо платить: нам с вами придется основательно попотеть,
чтобы создать нечто грандиозное.
Меня могут спросить: а насколько удалось выполнить указанные требования? Оглянитесь
вокруг. С вероятностью 99% те программы, которами вы пользуетесь каждый день,
написаны именно на С. Три самые известные ОС: DOS, Windows и UNIX написаны именно
на C. А из этого следует, что проще всего писать программы под эти системы именно
на С.
Теперь обратимся немного к истории IBM PC, так как, я думаю, все мы будем писать
программы именно для этой платформы.
Если мне не изменяет память, то сие творение было создано в 1983 году фирмой
IBM просто ради попытки освоения новой отрасли. В то время IBM специализировалась
на mainframe'ах, и все остальное ей было попросту неинтересно. Иногда складывается
впечатление, что она просто брала первую попавшуюся деталь и впихивала ее в
разработку, совершенно не заботясь о последствиях. Как следствие, компьютер
вобрал в себе многие очень неудачные решения того времени, например, далекий
от совершенства процессор Intel 8088. О главном его недостатке, до сих пор отравляющем
жизнь программистам под DOS - в следующий раз. О других несовершенствах говорить
вообще не буду (большинству читателей они будут просто непонятны). Кроме того,
Apple незадолго до этого впервые применила технику "открытой программной архитектуры",
опубликовав интерфейс (правила взаимодействия) между операционной системой и
прикладными программами. Это дало возможность другим фирмам производить программное
обеспечение для ее компьютеров. IBM решила переплюнуть Apple и сделала открытой
как программную, так и аппаратную архитектуру, что дало возможность как писать
программы для PC, так и производить устройства. Публике новый компьютер так
понравился, что всех производственных мощностей IBM не хватало для того, чтобы
произвести требуемое их количество. Кончилось все достаточно предсказуемо: спектр
производимых устройств достиг такого масштаба, что из них можно было собирать
клоны PC, вообще не содержащие ни одной IBM-овской детали. Разобидившись на
конкурентов, IBM прекратила выпускать PC и начала линию PS/2. Она была программно
совместима с PC, но имела ряд выгодных преимуществ. Упомяну лишь то, что все
устройства конфигурировались программно (праобраз знаменитого Plug & Play, только
оно работало :-)) и продуманность конструкции - внутри не было ни одной перемычки,
ни одного переключателя, ни одного кабеля и ни одного винта! (и это 1988 год!)
Но секреты аппаратной архитектуры не публиковались, да и комплектующие можно
было использовать только от IBM. Линия не получила поддержки и вскоре зачахла.
Домашнее задание: повторить системы счисления (в следующий раз они нам понадобятся).
За сим все. Тема следующей рассылки - основы архитектуры IBM PC (еще одна и
вроде последний вводный выпуск). До встречи!
Напоминание: если вы только что подписались на рассылку - напишите по адресу
av_13@mail.ru и сообщите примерный уровень ваших знаний (это необходимо мне,
чтобы знать, на какую аудиторю рассчитывать). И еще настоятельно рекомендую
прочитать все выпуски рассылки, начиная с первого.
Ведущий рассылки, av