Я спроектировал то, что сейчас бы назвали прикладной операционной системой, то, что работает как надстройка над обычной ОС. К тому времени компьютеры уже заметно подешевели. У нас были норвежские NORD-10 - кажется, они задумывались для конкуренции с PDP-11.
Там я провел почти четыре года, а потом получил работу в Шведской космической корпорации, разработал еще одну прикладную операционную систему для управления “Викингом”, первым шведским спутником. Проект был интересный. Я работал на машине, названия которой не помню, но это был клон компьютера Amdahl. Только строковые редакторы, никаких полноэкранных. Все программы хранились в одном каталоге. Не больше десяти букв в имени файла, не больше трех в расширении. Плюс компилятор Фортрана или ассемблер - вот и вся система.
При этом я думаю, что все эти современные штуки с наворотами вряд ли делают вас продуктивней. Как работа может улучшиться при иерархической файловой системе? Как бы то ни было, программы создаются главным образом в голове. Мне кажется, что работа с такой довольно простой системой дисциплинирует мышление. Если все файлы надо складывать в один каталог, нужна строжайшая дисциплина. Если нет системы управления версиями, нужна строжайшая дисциплина. И если работать дисциплинированно, то, по-моему, нет особой нужды ни в иерархической файловой системе, ни в системе управления версиями. Они не решают главную проблему. Пожалуй, с ними удобнее работать вместе нескольким людям. Если же работать одному, то разницы я не вижу.
Кроме того, сейчас у нас что-то вроде избытка выбора. У меня имелся только Фортран - помнится, не было даже консольных скриптов. Командные файлы для запуска программ, компилятор Фортрана - и все! Ну и ассемблер, наверное, если кому-то он был нужен. Никакого мучительного выбора, как сейчас. Думаю, быть сегодня молодым программистом просто жутко: двадцать языков, десятки фреймворков и операционных систем - можно погибнуть, выбирая. А в то время - ничего подобного. Просто начинаешь работать, потому что язык и программы выбирать не приходится. Просто берешь и работаешь.
Сейбел:Разница еще и в том, что сегодня не понять, как устроена система сверху донизу. Проблема не только в выборе, но и в том, что не во всех используемых “черных ящиках” хочется разбираться.
Армстронг:Ну да. Если “черные ящик” работает неважно и надо что-то в нем подкручивать, то легче взять и написать все самому. А вот что точно не работает, так это повторное использование кода. С этим совсем плохо.
Сейбел:Вы создали не только Erlang, но и Open Telecom Platform - платформу для разработки приложений. Что вы скажете о ее многократном использовании?
Армстронг:В какой-то мере это возможно. Но возникает все та же проблема. Если эта платформа полностью решает вашу задачу, если какой-нибудь программист, ничего не знающий о структуре ОТР, посмотрит на нее через несколько лет и скажет: “Вот именно то, что мне нужно”, - отлично, вы уложились в эту меру повторного использования. Если же этого не случится, проблема останется.
Не так давно мне говорили: “Все это как-то искусственно, мы все время стараемся впихнуть код в этот ОТР”. Я отвечал: “Ну что ж, переделайте ОТР”. Но ведь этого не сделаешь. При этом фреймворк - всего лишь программа, довольно простая по устройству. Действительно простая. Я залезаю в нее, и она делает то, что нужно этим людям, после чего они соглашаются: “И правда, просто”. Но при этом заявляют: “Наши менеджеры не хотят, чтобы мы возились с фреймворком”. Ну так назовите это по-другому, и все.
Сейбел:А как по-вашему, реально ли на самом деле вскрыть все эти “черные ящики”, заглянуть внутрь, понять, как они работают, и приспособить их для своих нужд?
Армстронг:С годами я, кажется, все чаще допускаю вот эту типичную ошибку: боюсь вскрыть “черный ящик”. Он кажется мне таким непроницаемым, таким сложным, что я не хочу открывать его. Один-два я все же открыл; я хотел сделать оконную графическую программу для Erlang и подумал: “А не запустить ли ее на X Windows”. Что такое X Windows? Это сокет с протоколом поверх. Открываешь сокет и транслируешь через него сообщения. Зачем библиотеки? Erlang основан на сообщениях. Идея в чем? Вы посылаете сообщения по какому-то адресу, и там что-то делается. То же и в X Windows - у вас есть окно, вы посылаете сообщение, и начинается выполнение. Если же вы делаете что-то в окне, сообщение вам возвращается. Очень похоже на Erlang. Однако программирование в X Windows происходит при помощи библиотек с обратными вызовами. Это не философия Erlang. Послать сообщение, чтобы начала выполняться команда, - вот философия Erlang. Итак, оставайтесь подключенными и обращайтесь непосредственно к сокету, без библиотек.
Читать дальше
Конец ознакомительного отрывка
Купить книгу