Z:gnu-www-ja-rms-lisp--184634-At that point, people began to/ru

В этот момент люди начали размышлять, как получить что-то вроде этого на платформе, где у них не было полнофункциональной реализации Лиспа. У MacLisp для Multics был как компилятор, так и интерпретатор &mdash; это была полностью оснащенная система Лисп &mdash; но люди хотели реализовать что-то подобное на других системах, где у них не было уже написанного компилятора Лиспа. Ну, если у вас нет компилятора Лиспа, вы не можете написать весь редактор на Лиспе &mdash; он был бы слишком медленным, особенно перерисовка, если бы пришлось выполнять Лисп на интерпретаторе. Так что мы разработали гибридную технику. Идея состояла в том, чтобы писать интерпретатор Лиспа и низкоуровневые части редактора вместе, так что части редактора были встроенными средствами Лиспа. Это были бы любые части, в оптимизации которых мы ощущали необходимость. Это была техника, которую мы уже сознательно практиковали в первоначальном Emacs, потому что были определенные весьма высокоуровневые функции, которые мы перереализовали на машинном языке, переделав их в примитивы TECO. Например, был примитив TECO для заполнения абзаца (на самом деле для основной работы по заполнению абзаца, потому что некоторые из наименее ресурсоемких частей работы выполнялись на более высоком уровне программой TECO). Можно было выполнять всю работу, написав программу на TECO, но она была слишком медленной, так что мы оптимизировали ее, перенеся часть ее на машинный язык. Здесь (в гибридной технике) мы воспользовались той же идеей: большая часть редактора будет написана на Лиспе, но определенные его части, которые нужно было выполнять особенно быстро, будут написаны на низком уровне.