Интервью по языку Форт [Чарльз X. Мур] (pdf) читать постранично, страница - 7

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Вам придётся
спуститься до уровня ввода/вывода, чтобы суметь это сделать.
Керниган и Ричи могли бы возразить, что для упрощения портирования им нужен был
такой Си, который стал бы наименьшим общим кратным. Вы решили,что упростить
портирование можно, не придерживаясь такого подхода.
Чак: Я подходил к этому стандартно. У меня было слово - кажется, fetchp, которое получало 8 бит из порта. На разных компьютерах оно определялось
поразному, но в стеке оказывалась одна и та же функция.
Тогда в некотором
ввода/вывода.

смысле

Форт

эквивалентен

Си

со

стандартной

библиотекой

Чак: Да, но когда-то давно я работал со стандартной библиотекой Фортрана, и это
было ужасно. Слова были совершенно не те. Она была очень громоздкой,
неэкономной. Можно было с лёгкостью избавиться от лишней нагрузки готового
протокола, определив полдюжины команд для операций ввода/вывода.
И часто вы занимались такими обходными путями?
Чак: С Фортраном - да. Когда имеешь дело, скажем, с Windows, деваться некуда.
Система не подпустит тебя к вводу/выводу. Я почти намеренно сторонился Windows,
но и без Windows процессор Pentium оказался самым сложным устройством для
размещения Форта. У него слишком много инструкций. И слишком много аппаратных
функций вроде буферов ассоциативной трансляции и разного рода кэшей, которыми
нельзя пренебречь. Пришлось с ними разбираться, и код инициализации для запуска
Форта оказался очень сложным и громоздким. Хотя он должен был выполняться
единственный раз, мне всё же пришлось потратить много времени, чтобы это
делалось правильно. Но мы запустили на Pentium автономный Форт, так что труд
был не напрасен. Эта работа затянулась, наверное, лет на десять, отчасти
потому, что пришлось гнаться за модификациями, которые делала Intel.
Вы сказали, что Форт реально поддерживает асинхронную работу. В каком смысле вы
говорили об асинхронной работе?
Чак: В нескольких сразу. В Форте всегда была возможность мультипрограммности и
многопоточности - средство под названием Cooperative. Есть слово pause. Если
некоторая задача доходит до такого места, где ей не нужно немедленно что-то
делать, она должна сказать pause. Циклический планировщик даст компьютеру
следующую задачу для выполнения. Если не сказать pause, можно полностью

монополизировать компьютер, но этого не произойдёт, потому что это специальный
компьютер. На нём выполняется единственное приложение, и все его задачи
дружественны. Думаю, в прежние времена все задачи были дружественны. Это один
вид асинхронности, когда все эти задачи могли выполняться и заниматься своими
делами без необходимости синхронизации. Опять-таки, одна из особенностей Форта
состоит в том, что слово pause могло находиться в словах нижнего уровня. При
каждой попытке чтения или записи диска слово pause выполнялось бы безвашего
участия, потому что разработчики кода для работы с диском знали, что придётся
подождать конца выполнения операции. В новых чипах - тех многоядерных чипах,
которые я разрабатываю, - мы придерживаемся той же философии. Каждый компьютер
работает независимо, и если на одном компьютере выполняется одна задача, а на
соседнем - другая, они выполняются одновременно, но обмениваются одна с другой
данными. Так же ведут себя задачи на многопоточном компьютере. Форт лишь удачно
выделяет эти независимые задачи. На самом деле, если это многоядерный
компьютер, я, возможно, буду использовать немного другие программы, но я могу
точно так же структурировать их для параллельного выполнения.
Был ли при кооперативной многопоточности
происходило ли переключение между ними?

у

каждого

потока

свой

стек

и

Чак: При переключении задач иногда всё, что требовалось (в зависимости от
компьютера), это поместить слово на вершину стека и после этого переключить
указатель стека. Иногда, действительно, приходилось копировать стек и загружать
новый, но тогда я старался делать стек очень неглубоким.
Вы намеренно ограничивали глубину стека?
Чак: Да. Сначала стеки были произвольной глубины. У первого проектируемого мной
чипа глубина стека была 256, потому что я боялся, что её не хватит. У другого
спроектированного мной чипа был стек глубиной 4. Сейчас я остановился на том,
что глубина стека должна быть около 8 или 10, так что мой минимализм стал
строже.
Я бы предположил, что тенденция была противоположной.
Чак: В моём приложении для проектирования СБИС действительно есть случай
рекурсивной трассировки чипа, где мне пришлось увеличить глубину стека примерно
до 4000. Для этого мог бы потребоваться стек другого типа – программно
реализованный. Но на Pentium такой стек можно сделать и аппаратным.
Разработка приложений
Вы высказали мысль, что Форт - идеальный язык для объединения в сеть множества
малых компьютеров, как в , например. Как вы считаете, для каких
приложений могли бы с успехом использоваться