Pull to refresh

Comments 5

"обмениваясь простым текстовым выводом одной программы как входом для другой" - я понимаю, что простой текст экономнее json, но если бы еще тогда была заложена возможность вывода машиночитаемых данных - было бы только лучше. А то парсить машинами вывод для человека - так себе идея

Справедливости ради, в ту эпоху был популярен колоночный ввод и вывод - и printf/scanf во все поля. Данные в таком формате были и для людей, и легко читались scanf (а про buffer overflow тогда ещё настолько не думали).

И вот в 1973 году Томпсон и Ритчи принимают решение, которое на тот момент выглядит крайне рискованным. Переписать ядро самого Unix с ассемблера на язык C.

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

И вот почему это решение оказывается революционным. Впервые операционная система становится переносимой. Тот же, или почти тот же, код Unix можно скомпилировать и запустить на принципиально другом семействе процессоров, просто написав новый компилятор C для этой архитектуры, вместо того чтобы переписывать всю операционную систему с нуля под каждую машину.

Сказанное в этих трёх абзацах сомнительно. Упомянутый ранее Multics уже был написан на высокоуровневом языке — ПЛ/1. А если открыть хотя бы Википедию, то выяснится, что:

Multics также явилась одной из первых операционных систем, написанных на языке высокого уровня PL/I (самой первой такой системой была MCP для компьютеров Burroughs B5000, которая использовала диалект Алгола).

Надо полагать, Multics и MCP были исключениями, которые лишь подтверждают общее правило, но исходное категоричное «Впервые операционная система становится переносимой» — тоже явно неверно.

Два человека, оставшись без официального проекта после институционального провала, на списанном оборудовании создали систему и язык, которые полвека спустя лежат буквально под интерфейсом каждого смартфона на планете. Независимо от того, произведён он Apple или любой другой фирмой, использующей Android.

Я не эксперт в истории Unix, но мне кажется, роль именно Ритчи и Томпсона (при всём их величии, конечно), в тексте несколько переоценена. Как написано в самой статье:

Идею конвейера годами продвигал коллега Томпсона и Ритчи по Bell Labs, Дуглас Макилрой - ещё в 1964 году он сравнивал будущую связку программ с садовым шлангом: подкрутил ещё один отрезок, когда нужно обработать данные иначе.

То есть идею конвейера — основы Unix way — придумал Макилрой, а не Ритчи и Томпсон. И, как следует из продолжения абзаца, изначально системные утилиты не могли комбинироваться друг с другом так просто, потому что не умели читать вывод друг друга.

Кроме того, многие другие идеи Unix, например иерархическая ФС, напрямую следуют из Multics.

Не стоит также забывать о том, что работали Ритчи и Томпсон не где-то, а под крылом Bell Labs. Достаточно прочесть первую главу упомянутой вами «Unix. History and memoir» чтобы понять, что Unix зародился в очень свободной и научно зрелой среде, основной которой были огромные денежные вливания. История Unix явно сложнее типичной «гаражной истории»: взяли списанный компьютер и сделали.

Дополнение

Это тем более важно, если учесть дальнейшие слова:

Насколько часто в истории технологий важнейшие прорывы случаются именно в подобных «внеплановых», низкобюджетных условиях?

Вряд ли можно говорить о «низкобюджетных условиях». Читаем Кёрнигана:

In effect, Bell Labs was paid for by a modest tax on every phone call in the country. According to a paper by A. Michael Noll, AT&T spent about 2.8 percent of its revenues on research and development, with about 0.3 percent on basic research.

Stable funding was a crucial factor for research. It meant that AT&T could take a long-term view and Bell Labs researchers had the freedom to explore areas that might not have a near-term payoff and perhaps never would.

Последнее предложение особенно важно. Bell Labs не была типичной галерой. Это был исследовательский центр, работники которого имели огромную свободу. Основой этой свободы был огромный поток налогов.

Поэтому дальнейший вопрос:

И что это говорит о природе институционального управления инновациями?

Выглядит вопросом к самой статье. Особенности культуры и атмосферы Bell Labs, того как в ней работали с инновациями не раскрыты. Больше того: кажется, что Unix родился вопреки системе управления Bell Labs, хотя всё как раз наоборот.

Переоценка, как мне кажется, видна и далее:

Если вещи, описываемые в статьях про Тьюринга, фон Неймана и Шеннона дали теоретический фундамент - вычислимость, архитектура, логика схем, то Томпсон и Ритчи первые в нашем цикле создают практический, массово используемый системный инструментарий, доживший до наших дней практически без концептуальных изменений.

Выделенное курсивом сомнительно. В первенстве с Ритчи и Томпсоном могут посоревноваться хотя бы Бэкус (Фортран), Хоппер (FLOW-MATIC, MATH-MATIC, Кобол), Маккарти (Лисп). Если перестать называть фамилии, то сразу можно вспомнить Алгол, влияние которого, надо полагать, ещё значительнее влияния Си.

Думаю, однако, что вы будете правы, если сделать акцент именно на системном инструментарии, т. е. инструментарии для системного программирования. Здесь первенство Си может оспорить только Паскаль, однако это отдельная тема.

Почему-то упомянут PDP-7, но не упомянут PDP-11, архитектурные особенности которого непосредственно повлияли на язык C. И переписывался Unix на C уже на PDP-11.

Sign up to leave a comment.

Articles