Если вы знаете какой-либо C, вы будете знать, что Брайан Керниган — половина команды, ответственной за основополагающую книгу The C Programming Language или просто K&R (R для Денниса Ричи), о которой большинство из нас слышали, если на самом деле не читали.
Мне повезло. Я выучил C у K&R и разобрался с его логикой и низкоуровневой природой всего за несколько страниц. Сегодня подобная книга, вероятно, насчитывала бы гораздо больше страниц. Это был и остается примером спаренной презентации — вполне достаточно. Хотя сегодня K&R по той или иной причине подвергается сильной критике, это все еще классика и актуальность.
Деннис Ричи и Кен Томпсон были двумя людьми, которым приписывают работу над C и Unix, и действительно Керниган открыто признает, что он не принимал участия в разработке C. Однако он отвечал за многие хорошо известные программы Unix — например, cron и AWK — и приписывается термин «Unix».
Computerphile недавно взял интервью у Керниган о былых временах. В видео он объясняет, откуда появился C — и да, это правда, что C был разработан из B.
Смотрите — это всего 8 минут или около того.
Что трудно понять с нашей нынешней «изощренной» точки зрения, так это то, что операционные системы когда-то были написаны естественным образом на ассемблере и определенно не использовали язык высокого уровня.
Также идея начальной загрузки компилятора банальна, ну почти обычна.
Напишите крошечный фрагмент компилятора на C и вручную переведите его на ассемблер. Однако вам нужно выбрать правильный фрагмент C. Не слишком много, иначе задача вручную собрать это слишком много. Не слишком мало, потому что вы хотите, чтобы он сам компилировался. Получив это, вы можете начать расширять то, что делает компилятор, путем написания языковых расширений. Вы начинаете с компилятора 0, который может компилировать язык 0. Затем вы пишете программу, используя язык 0, который может компилировать немного больший язык 1. Вы передаете это через компилятор 0, чтобы получить компилятор 1, и продолжаете так, пока не получите полный язык. используя только язык.
Что вы можете сказать об идее, что книга C также была основана на B и ранее? И мысль о том, что они не были уверены, что книга на C существует на рынке, дает вам четкое представление о прошлом положении вещей!
Один фактор, который вы могли упустить, — это то, что Unix был создан с целью запуска программы обработки текста. Команда troff была портом программы форматирования текста Runnoff, а PDP-11, на которой была написана Unix, была приобретена Томпсоном и Ричи под предлогом создания системы форматирования документов. Вряд ли они знали, что система форматирования будет использоваться для создания K&R и превращения Си в популярный язык.