Кодеры за работой. Размышления о ремесле программиста | страница 10
Разработка систем на Лиспе была особенно запутанной, поскольку GDB был совершенно неприменим к Лисп-коду, который не содержал никакой отладочной информации. Причина была в том, что интерпретатор Лиспа был разработан с помощью компилятора, о котором GDB не имел ни малейшего понятия. Думаю, для некоторых платформ создавались стековые фреймы, которых отладчик GDB просто не понимал. На этом этапе GDB был способен лишь на пошаговый прогон ассемблерного кода. Поэтому мы хотели избавиться от него как можно скорее.
Сейбел: А потом у вас появился отладчик Лиспа, и вы оказались во всеоружии.
Завински: Ага.
Сейбел: И примерно в то же время компания Lucid сменила курс, решив создавать интегрированную среду разработки для C++.
Завински: Это началось еще до меня: когда я пришел туда, интегрированная среда разработки уже создавалась. Люди начали переходить с Лиспа на Energize - так называлась эта среда разработки. Это был отличный продукт, но он появился на два-три года раньше, чем нужно. Никто - по крайней мере, никто среди пользователей UNIX - не думал, что им вообще это нужно. Сейчас все используют такие возможности, но тогда мы тратили кучу времени, объясняя, почему эта штука лучше, чем vi[9] и GCC. Еще я делал кое-что для Emacs. Кажется, тогда я уже переписал компилятор байт-кода[10]. Зачем мне это было нужно? Правильно, потому что я делал что-то вроде адресной книги.
Сейбел: Базу данных для Большого Брата?
Завински: Ага. Но работала она ужасно медленно. Я стал выяснять, почему, и понял, что компилятор ни к черту не годится. Я переписал компилятор, что и привело к моей первой ссоре с непримиримым Стеллменом. Тогда я много чего узнал о Emacs.
Сейбел: А изменения в компиляторе коснулись формата байт-кода или только процесса компиляции?
Завински: Я сделал несколько изменений: внес исправления в интерпретатор байт-кода, написанного на Си, а также добавил несколько новых инструкций для повышения производительности. Но компилятор мог быть сконфигурирован, чтобы генерировать байт-код в старом формате или использовать преимущества нового.
Так вот, я написал новый компилятор, а Стеллмен заявил: “Не вижу необходимости в этих изменениях”. А я ему в ответ: “Да что вы? Теперь генерируется более быстрый код”. А он: “О'кей, тогда пришли мне все изменения исходников и объясни каждую измененную строку”. Тогда я ответил: “Нет, я не буду этого делать. Я полностью переписал старый компилятор, потому что он был дерьмовым”. Это ему не понравилось. Мой компилятор был добавлен только потому, что я выпустил его, тысячи людей начали им пользоваться, компилятор им понравился, и они надоедали Стеллмену два года. Вот он и добавил мой компилятор, чтобы его больше не доставали.