Введение

Franz Lisp – это система языка программирования Lisp, разработанная в Калифорнийском университете в Беркли профессором Ричардом Фатеманом и несколькими студентами. Она была в значительной степени основана на Maclisp и распространялась вместе с Berkeley Software Distribution (BSD) для мини-компьютера VAX компании Digital Equipment Corporation (DEC). Благодаря популярности пакета BSD, Franz Lisp, вероятно, была самой широко распространенной и используемой системой Lisp в 1970-х и 1980-х годах. Название является игрой слов, отсылающей к композитору и пианисту Францу Листу. Система была специально разработана для запуска компьютерной алгебраической системы Macsyma на VAX. Проект начался в конце 1978 года, вскоре после того, как Калифорнийский университет в Беркли получил свой первый VAX 11/780 (названный Ernie CoVax, в честь Эрни Ковакса – это было первое из множества систем с каламбурными названиями в UCB). Franz Lisp была доступна бесплатно для учебных заведений и также распространялась на Eunice, эмуляторе Berkeley Unix, работавшем на VAX VMS.

История

В то время, когда был создан Франц Лисп, компьютерная система алгебры Macsyma в основном работала на DEC PDP 10. Ограниченное адресное пространство этого компьютера создавало трудности. Предпринимались попытки переноса Maclisp на Multics или Lisp-машины, но даже в случае успеха это было бы решением лишь для Массачусетского технологического института (MIT), поскольку эти машины были дорогими и редкими. Франц Лисп стал первым примером среды, в которой большие программы на Lisp могли выполняться вне окружения Lisp-машин; Macsyma в то время считалась очень большой программой. После переноса на Франц Лисп, Macsyma была распространена примерно на 50 узлах по лицензии, ограниченной стремлением MIT сохранить Macsyma проприетарной. VAX Macsyma, работавшая на Франце Лисп, называлась Vaxima. Когда Symbolics Inc. приобрела у MIT коммерческие права на Macsyma для продажи вместе со своими Lisp-машинами, она в конечном итоге была вынуждена продавать Macsyma также для компьютеров DEC VAX и Sun Microsystems, выплачивая Калифорнийскому университету роялти за использование Франца Лиспа. Другими реализациями Lisp для VAX были NIL от MIT (никогда полностью не функционировавшая), Portable Standard Lisp Университета Юты, VAX Lisp от DEC, Interlisp VAX от Xerox и Le Lisp. В 1982 году начался перенос Франца Лиспа на процессор Motorola 68000. В частности, он был портирован на прототип Sun 1, созданный Sun Microsystems, работавший с вариантом Berkeley Software Distribution (BSD) Unix под названием SunOS. В 1986 году в Университете Пердью Франц Лисп был перенесен на платформу CCI Power 6/32, с кодовым названием Tahoe. Основными разработчиками Франца Лиспа в Калифорнийском университете в Беркли были Джон К. Фодераро, Кит Скловер и Кевин Лейер. Для поддержки Франца Лиспа была создана компания Franz Inc., основанная Ричардом Фатеманом, Джоном Фодераро, Фрицем Кунзе, Кевином Лейером и Китом Склоуэром, все они были связаны с Калифорнийским университетом в Беркли. После этого разработка и исследования Франца Лиспа продолжались несколько лет, но широкое распространение Common Lisp значительно снизило потребность в Франце Лисп. Первым продуктом Franz Inc. был Франц Лисп, работающий на различных рабочих станциях на базе Motorola 68000. Перенос Франца Лиспа был выполнен даже на VAX VMS для Лоуренсовской национальной лаборатории. Однако почти сразу же Franz Inc. начала работу над своей реализацией Common Lisp, Allegro Common Lisp.

Особенности

Интерпретатор Franz Lisp был написан на языках C и Franz Lisp. Он был запущен с использованием только C-компилятора. Компилятор Franz Lisp, полностью написанный на Franz Lisp, получил название Liszt, завершая игру слов, основанную на имени композитора Франца Листа. Среди примечательных особенностей Franz Lisp – массивы, взаимозаменяемые с массивами в Fortran, и интерфейс для работы с функциями на других языках (FFI), обеспечивающий взаимодействие на бинарном уровне. Многие методы реализации были заимствованы из Maclisp: организация памяти bibop (BIg Bag Of Pages), представление небольших целых чисел уникальными указателями на фиксированные значения в полях и быстрая арифметическая обработка.