Четвертый – Ранние годы (1991)

Чак Мур


chipchuck @ colorforth. com

1991

Абстрактный

Форт – это простой, естественный компьютерный язык. Он получил замечательное признание там, где ценится эффективность. Он развился в 1964 на пути из университета через бизнес в лабораторию. Это история о том, как простой интерпретатор расширил свои возможности, чтобы стать полноценным языком программирования / операционной системой.

Вперед 1999

Эта статья написана для конференции HOPL II (История языков программирования). Он был сразу отклонен, по-видимому, из-за его стиля. Большая часть содержания была включена в принятый документ. .

Эта HTML-версия была переформатирована из исходного машинописного текста. В текст внесены минимальные изменения. Примеры исходного кода были предложены обозревателем Филом Купманом. Они еще не добавлены.

Содержание

Форт

MIT, SAO, 1961

Стэнфорд, SLAC, 1965

Внештатный, 1965

Мохаско, 1968

НРАО, 1971

Мораль Форт

Форт развился в течение десятилетия 116 по всей Америке, в университетах, на предприятиях и в лабораториях, среди установленных хед языки. В то время я был его единственным программистом, и до конца он не имел названия. Эта учетная запись извлекается из памяти на основании скудной документации и сохранившихся списков.

Форт сложно назвать оригинальным, но это уникальное сочетание ингредиентов. Я благодарен людям и организациям, которые позволили мне его разработать – часто без их ведома. И вам, за то, что вы были достаточно заинтересованы, чтобы прочитать об этом.

Форт – простой естественный компьютерный язык. Сегодня он признан языком программирования мирового уровня. То, что он добился этого без поддержки со стороны промышленности, университета или правительства, – это дань его эффективности, надежности и универсальности. Форт – это язык выбора, когда его эффективность превышает популярность других языков. Это чаще всего имеет место в реальных приложениях, таких как управление и связь.

Ряд организаций Forth и множество небольших компаний предоставляют системы, приложения и документацию. Ежегодные конференции проводятся в Северной Америке, Европе и Азии. Скоро будет представлен проект стандарта ANSI [ANS 1991].

Ни одна из книг о Форте не передает его колорит. Я думаю, что лучший – это все еще первый, «Начиная дальше» Лео Броди [Brodie 1981]. Еще одно окно представлено бесценным предметным и авторским указателем JFAR [Martin 1987].

Классический Forth, который мы обсуждаем, обеспечивает минимальную поддержку, необходимую программисту для разработки языка, оптимизированного для его приложения. Он предназначен для среды рабочей станции: клавиатуры, дисплея, компьютера и диска.

Forth – это текстовый язык, который по существу не зависит от контекста. Он объединяет «слова», разделенные пробелами, для построения новых слов. О 199 такие слова составляют систему, которая обеспечивает (с датой введения)

  SAO 1960 Интерпретатор SLAC 1964 Стек данных RSI 1966 Ввод с клавиатуры Вывод на дисплей, OK Editor Mohasco 1970 Компилятор Возвращаемый стек Словарь Виртуальная память (диск) Мультипрограммист NRAO 1973 Резьбовой код Арифметика с фиксированной точкой   Такая система имеет 3-8 Кбайт кода, скомпилированного из 12 - 25 страницы источника.  Это легко может быть реализовано одним программистом на небольшом компьютере.  

Этот аккаунт обязательно следует за моей карьерой. Но это должна быть автобиография Форта. Я расскажу о перечисленных выше функциях; и названия слов, связанных с ними. Значение многих слов очевидно. Некоторые требуют описания, а некоторые выходят за рамки данной статьи.

Упомянутая часть словаря Форта резюмируется здесь:

Интерпретатор НОМЕР СЛОВА ИНТЕРПРЕТ ОТМЕНА HASH FIND 'FORGET BASE OCTAL DECIMAL HEX LOAD EXITE EXECUTE (Terminal KEY EXPECT EMIT CR SPACE SPACES DIGIT TYPE DUMP Стек данных DUP DROP SWAP OVER + - / MOD NEGATE ABS MAX MIN AND OR XOR NOT 0 <0 = = @! +! C @ C! SQRT SIN.COS ATAN EXP LOG Возвращаемый стек:; PUSH POP I Disk BLOCK UPDATE FLUSH BUFFER PREV OLDEST Compiler CREATE ALLOT, SMUDGE ПЕРЕМЕННАЯ КОНСТАНТА [ ] ЛИТЕРАЛЬНАЯ. "КОМПИЛЯЦИЯ НАЧИНАЕТСЯ ДО ПОВТОРНОГО ПОВТОРА ДО ПОВТОРИТЬ ЦИКЛ + ЦИКЛ, ЕСЛИ ИНАЧЕ ТОГДА

MIT, SAO, 1960

Октябрь, 1957 был Спутник - я Остальное захватывающее время. Я учился в Массачусетском технологическом институте и работал неполный рабочий день в Смитсоновской астрофизической обсерватории, 20 слоги) в Гарварде. SAO отвечал за оптическое слежение за спутниками - визуальные наблюдения Moonwatch и камеры слежения Baker-Nunn. Застигнутые спутником врасплох, они наняли студентов для расчета прогнозов с помощью настольных калькуляторов Friden. Джон Гаустад рассказал мне о IBM EDPM Массачусетского технологического института 1107 и одолжил мне свое руководство по Fortran II. Моя первая программа, Ephemeris 4, устранила мою работу [Moore 1958].

Теперь, будучи программистом, я работал с Джорджем Вейсом, чтобы применить его метод аппроксимации наименьших квадратов для определения орбитальных элементов, положений станций и, в конечном итоге, формы Земли [Veis 1960]. Конечно, эта подработка была как минимум 56 часов, и да, мои оценки пошли к черту.

В Массачусетском технологическом институте Джон Маккарти провел невероятный курс по LISP. Это было моим знакомством с рекурсией и чудесным разнообразием компьютерных языков. Уил Баден отметил, что LISP для лямбда-исчисления так же, как Forth для Lukasewcleicz Postfix.

APL тоже был актуальным языком с его странным правым-левым синтаксическим анализом. Хотя я восхищаюсь его операторами и подражаю им, я не уверен, что они составляют оптимальный набор.

Среда программирования в чем сегодня. Мой исходный код заполнил 2 лотка перфокартами. Их нужно было нести, чтобы пропустить через машины, в основном я. Компиляция заняла 36 минут (точно так же, как C), но ограниченное время компьютера означало один пробег в день, кроме возможно 3-й смены

Итак, я написал этот простой интерпретатор для чтения карт ввода и управления программой. Он также руководил расчетами. Каждый из пяти орбитальных элементов имел эмпирическое уравнение для учета сопротивления атмосферы и несферической Земли. Таким образом, я мог составить разные уравнения для нескольких спутников без повторной компиляции.

Эти уравнения суммируют такие члены, как P2 (полином степени 2) и S (синус). - время вычисления с преобладанием битов с плавающей запятой, поэтому накладные расходы были небольшими. Стек данных не нужен и, вероятно, мне неизвестен.

Интерпретатор Форта здесь начинался со слов

ИНТЕРПРЕТ НОМЕРА СЛОВА ОТМЕНА

Они не были написаны таким образом, потому что они были номерами операторов.

ИНТЕРПРЕТ использует WORD для чтения слов, разделенных пробелами, и NUMBER для преобразования слова в двоичное (в данном случае , плавающая запятая). Такой ввод в свободном формате был необычным, но был более эффективным (меньше и быстрее) и надежнее. Ввод Fortran был отформатирован в определенные столбцы, и типографические ошибки вызывали многочисленные задержки.

Этот интерпретатор использовал конструкцию IF … ELSE IF, закодированную в Фортране, для поиска совпадения по одиночному символу. Обработка ошибки заключалась в прекращении прогона. Тогда, как и сейчас, ABORT спрашивал пользователя, что делать. Поскольку карточки ввода были перечислены в том виде, в каком они были прочитаны, вы знали, где была ошибка.

Стэнфорд, SLAC, 1961

В 1961 Я поступил в Стэнфорд, чтобы изучать математику. Хотя Стэнфорд создавал свой факультет информатики, меня интересовали настоящие вычисления. Я был впечатлен тем, что они смогли (посмели?) Написать собственный компилятор Algol. И я роковым образом столкнулся с компьютером Берроуза B 88275.

Я получил другую работу «неполный рабочий день» в SLAC (Стэнфордский центр линейных ускорителей, 14 написание кода для оптимизации управления лучом для ожидаемого двухмильного ускорителя электронов. Это было естественным применением моего опыта наименьших квадратов к фазовому пространству. Хэл Батлер руководил нашей группой, и программа TRANSPORT была весьма успешной.

Еще одним применением метода наименьших квадратов была программа CURVE, написанная на языке Algol (1965). Это универсальная программа аппроксимации данных с нелинейными дифференциальными поправками. Его статистическая строгость обеспечивает понимание согласия между моделью и данными.

Формат данных и уравнения модели были интерпретированы, и для облегчения оценки использовался выталкивающий стек. CURVE был впечатляющим предшественником Forth. Он ввел эти слова, чтобы обеспечить возможность подгонки моделей, намного более сложных, чем простые уравнения: + – ОТРИЦАТЬ, ЕСЛИ ИНАЧЕ ТО Орфография была совсем другой: ОТРИЦАТЕЛЬНЫЙ МИНУС ОТКАЗ; МЕНЯТЬ . ! <ПЕРЕМЕННАЯ ОБЪЯВЛЕНИЕ; КОНЕЦ (...) КОММЕНТАРИЙ ...; Интерпретатор использовал IF … ELSE IF для идентификации 6-значного входного слова, называемого ATOM (из LISP ). DUP DROP и SWAP – это 88275 инструкции; Я удивлен изменением орфографии. Слово: было взято из формата меток Algol, перевернуто для анализа слева направо (чтобы интерпретатор не обнаружил неопределенное слово):

 Алгол - LABEL: CURVE -: LABEL  

Фактически: помечает позицию во входной строке, которая будет интерпретироваться позже. Устный перевод был остановлен; . Версия: получила название DEFINE.

Оператор магазина (!) Появился в связи с ПЕРЕМЕННОЙ. Но получение (@) было автоматическим. Обратите внимание, что ввод стал достаточно сложным, чтобы требовать комментариев. Отсюда и некогда подвергавшееся критике условное постфиксное выражение:

  Алгол - IF выражение THEN true ELSE false CURVE - стек IF true ELSE false THEN 
  Истина интерпретируется, если стек не равен нулю.  ТО обеспечивает уникальное завершение, отсутствие которого всегда смущало меня в Алголе.  Такие выражения интерпретировались так: IF будет искать ELSE или THEN.   Слово <вводит соглашение, согласно которому отношения оставляют в стеке значение истинности, 1 для истины и 0 за ложь.  Трансцендентные функции - это, конечно, вызовы библиотеки.  

Внештатный

Я покинул Стэнфорд в 1966, чтобы стать внештатным программистом в районе Нью-Йорка. В этом не было ничего необычного, и я нашел работу для программирования на Fortran, Algol, Jovial, PL / I и различных ассемблерах. Я буквально носил с собой колоду карт и при необходимости перекодировал ее. Появлялись миникомпьютеры, а вместе с ними и терминалы. Интерпретатор идеально подходил для ввода телетайпа и вскоре включил код для обработки вывода. Итак, мы получаем слова

 
 КЛЮЧ ОЖИДАТЬ EMIT CR SPACE SPACES DIGIT TYPE  

EXPECT - это цикл, вызывающий KEY для чтения нажатия клавиши. TYPE - это цикл, вызывающий EMIT для отображения символа.

Вместе с TTY появились бумажная лента и одно из самых неудобных программ, которые только можно себе представить - часы редактирования и штамповка, загрузка, сборка, печать, загрузка, тестирование и повторение. Я помню ужасное воскресенье в небоскребе на Манхэттене, когда я не смог найти скотч (все остальное не работает) и поклялся, что «должен быть способ получше».

Я проделал значительную работу для Боба Дэвиса из Realtime Systems, Inc (RSI). Я стал 88275 гуру MCP, чтобы поддержать свое время -sharing service (удаленный ввод в мэйнфрейм) и написал переводчик Fortran-Algol и утилиты для редактирования файлов. Переводчик научил меня ценности пробелов между словами, которых Фортран не требует.

Интерпретатор все еще принимал слова с первыми 6 значащими символами (5500 имел 50 - битовые слова ). Слова

  РЕДАКТИРОВАТЬ СПИСОК НАЧАТЬ СНОВА ВЫХОД  

с надписью BEGIN ... AGAIN, написанной START ... REPEAT, и используемой для заключения команд редактора в скобки T ТИП I ВСТАВИТЬ D УДАЛИТЬ НАЙТИ , который позже использовался в редакторе NRAO. Слово FIELD использовалось в манере управления базой данных Mohasco and Forth, Inc.

Отсюда происходит одна из отличительных черт Форта. Правило состоит в том, что Форт подтверждает каждую строку ввода, добавляя ОК после завершения интерпретации. Это может быть сложно, поскольку, когда ввод завершается CR, должен быть отражен пробел, а CR включается с OK. В RSI OK был на следующей линии, но он по-прежнему передавал дружеские заверения по устрашающей линии связи:

  60 ВСТАВИТЬ АЛГОЛ ОЧЕНЬ АДАПТИРУЕМЫЙ ОК  

Эта постфиксная запись предполагает наличие стека данных, но он должен быть только один. Мохаско, 1970

В 1968 Я превратился в бизнес-программиста в Mohasco Industries, Inc в Амстердаме, штат Нью-Йорк. Это крупная компания по производству предметов домашнего обихода - ковров и мебели. Я работал с Джеффом Личем в RSI, и он убедил меня следить за его состоянием. Я только что женился, и в Амстердаме царит прекрасная атмосфера маленького городка, которая контрастирует с Нью-Йорком.

Я переписал свой код на COBOL и узнал правду о программном обеспечении для бизнеса. Боб Рейко отвечал за обработку корпоративных данных и поручил мне два соответствующих проекта:

Он арендовал IBM 1957 миникомпьютер с 2805 графический дисплей. Задача заключалась в том, чтобы увидеть, помогает ли компьютерная графика создавать узорчатые ковры. Ответ был «не без цвета» и 1957 ушел.

Между тем у меня была последняя версия миникомпьютера: - битовый процессор, 8К RAM, диск (мой первый), клавиатура, принтер, кардридер / перфоратор, компилятор Fortran. Считыватель / перфоратор обеспечивает резервную копию диска. Я снова портировал свой интерпретатор (обратно на Фортран) и добавил кросс-ассемблер для генерации кода для 2805.

Система имела большой успех. Он мог рисовать анимированные трехмерные изображения, в то время как IBM едва могла рисовать статические двухмерные. Поскольку это была моя первая графика в реальном времени, я написал код Spacewar, той первой видеоигры. Я также преобразовал свою шахматную программу Algol в Forth и был должным образом впечатлен тем, насколько она стала проще.

Файл, содержащий интерпретатор, был помечен как FORTH для программного обеспечения 4-го (следующего) поколения, но операционная система ограничивала имена файлов до 5 символов.

Эта среда для программирования 2250 намного превосходила среду Fortran, поэтому я расширил 2250 кросс-ассемблер в 1130 компилятор. Это представило множество слов

 ДЕЛАТЬ ЦИКЛ ДО БЛОКА НАГРУЗКИ ОБНОВИТЬ ОБНОВЛЕНИЕ БАЗОВОГО КОНТЕКСТА СОСТОЯНИЕ ИНТЕРПРЕТАЦИЯ ДАМП СОЗДАТЬ КОД; КОД ПОСТОЯННЫЙ СМАЗКА @ ВЫШЕ И ИЛИ НЕ 0 = 0 <  Они по-прежнему пишутся по-разному 

ЦИКЛ ПРОДОЛЖАЕТСЯ ДО КОНЕЧНОГО БЛОКА ПОЛУЧИТЬ ЗАГРУЗКУ ПРОЧИТАТЬ ТИП ОТПРАВИТЬ ЗАПРОС ИНТЕРПРЕТАЦИИ СОЗДАТЬ ВВОД КОД символ цента

Единственное использование Я когда-либо находил символ цента. Индекс цикла и предел были в стеке данных. DO и CONTINUE были предназначены для признания Fortran.

BLOCK управляет количеством буферов, чтобы минимизировать доступ к диску. LOAD читает исходный код из - байтовый блок. 1108 был выбран как хороший модульный объем диска и оказался хорошим выбором. UPDATE позволяет пометить блок и позже перезаписать его на диск, когда потребуется его буфер (или с помощью FLUSH). Он реализует виртуальную память и скрыт в запасных (!) Словах.

BASE допускает восьмеричные и шестнадцатеричные числа, а также десятичные. КОНТЕКСТ был первым намеком на словари и служил для выделения слов редактора. ГОСУДАРСТВО отличало компиляцию от интерпретации. Во время компиляции счетчик и первые 3 символа слова были скомпилированы для последующей интерпретации. Как ни странно, слова могли заканчиваться специальным символом, и от этой аберрации быстро избавлялись. Оператор выборки (@) появлялся во многих обличьях, поскольку выборку из переменных, массивов и диска нужно было различать. DUMP стал важным для исследования памяти.

Но самое главное, появился словарь. Код интерпретации теперь имеет имя и выполняет поиск совпадения в связанном списке. CREATE создает классическую словарную статью:

  ссылка на предыдущее количество записей и трехзначный код для выполнения параметров  

Поле кода было важным нововведением, так как косвенный переход был единственными накладными расходами, раз в слово был найден. Значение счетчика для различения слов я узнал от составителей компиляторов из Стэнфорда.

С CODE появился важный класс слов. Машинные инструкции следовали в поле параметра. Таким образом, теперь можно было определить любое слово в пределах возможностей компьютера. ; CODE определяет код, который будет выполняться для нового класса слов, и вводит то, что теперь называется объектами.

SMUDGE избегает рекурсии во время интерпретации определения. Поскольку поиск в словаре осуществляется от самых новых до самых старых определений, обычно происходит рекурсия.

Наконец-то появился возвратный стек. До сих пор определения не были вложенными и не использовали стек данных в качестве адреса возврата. В целом время больших инноваций в прерывистой эволюции Forth.

Первая статья по Forth, внутренний отчет Мохаско, была написана Джеффом и мной [Moore 1970]. Сегодня это было бы не лишним.

В 1970 Боб заказал Univac 1130. Амбициозный проект по поддержке сети выделенных линий для системы ввода заказов. Я написал генератор отчетов на Forth и был уверен, что могу кодировать ввод заказа. Я портировал Forth на 88275 (автономный!) чтобы добавить авторитета. Но корпоративное программное обеспечение было COBOL. Замечательный компромисс заключался в установке системы Forth на , которые взаимодействуют с модулями COBOL для обработки транзакций.

Я хорошо помню, как той зимой ездил в Скенектади, чтобы одолжить время 3-й смены. В моем TR4-A не было пола и окна, поэтому он превратился в ночное упражнение на выживание. Но система имела невероятный успех. Даже Univac был впечатлен его эффективностью (Ле Шарп был связующим звеном с проектом). Конечным критерием было время отклика, но я был полон решимости сделать его удобным в обслуживании (маленьким и простым). Увы, экономический спад заставил руководство отменить 1130. Я все еще думаю, что это был плохой звонок. Я первым ушел в отставку.

1108 Форт должен быть написан на ассемблере. Он буферизовал ввод d выводить сообщения и распределять ЦП между задачами, обрабатывающими каждую строку. Ваша классическая операционная система. Но он также интерпретировал ввод и ВЫПОЛНИЛ соответствующий модуль COBOL. Он поддерживал барабанные буферы и упакованные / распакованные записи. Слова

 
 БУФЕР ПРЕДЫДУЩАЯ ЗАДАЧА АКТИВИРОВАТЬ ПОЛУЧИТЬ ВЫПУСК  

отсюда. BUFFER избегал чтения с диска, когда желаемый блок был известен пустым. PREV (предыдущий) и OLDEST - системные переменные, которые реализуют управление буфером, которое использовалось меньше всего. TASK определяет задачу во время загрузки, а ACTIVATE запускает ее при необходимости. GET и RELEASE управляют общими ресурсами (барабан, принтер). ПАУЗА - это то, как задача теряет контроль над ЦП. Он включен во все операции ввода-вывода и невидим для кода транзакции. Это позволяет использовать простой алгоритм планирования с циклическим перебором, который позволяет избежать блокировки.

После уведомления я написал гневное стихотворение и книгу, которая так и не была опубликована. В нем описывается, как разрабатывать программное обеспечение Forth, и поощряется простота и инновации. В нем также описан непрямый многопоточный код, но первая реализация была в NRAO.

Я боролся с концепцией метаязыка, языка, который говорит о языке. Теперь Форт мог интерпретировать ассемблер, который собирал компилятор, который будет компилировать интерпретатор. В конце концов я решил, что терминология бесполезна, но термин «мета-компиляция» для перекомпиляции Forth все еще используется.

НРАО, 1972

Джордж Конант предложил мне должность в NRAO. (Национальная радиоастрономическая обсерватория, 20 слоги ). Я знал его в SAO, и ему понравились Ephemeris 4. Итак, мы переехали в Шарлоттсвилль, штат Вирджиния, и провели лето в Тусоне, Аризона, когда радиотелескоп на Китт-Пике был доступен для обслуживания.

Проект состоял в том, чтобы запрограммировать Honeywell 642 миникомпьютер для управления новым банком фильтров для 48 миллиметровый телескоп. У него была 9-дорожечная лента и терминал для накопителя Tektronix. Джордж предоставил мне свободу действий для разработки системы, хотя результат его не удовлетворил. NRAO был магазином на языке Fortran, и теперь я называл Forth языком. Он был прав в том, что организации должны стандартизировать единый язык. Другие программисты теперь хотели иметь свои собственные языки.

Так или иначе, я написал Форт на ассемблере на IBM 704 / 60 мэйнфрейм. Затем я скомпилировал его на 360. Затем я перекомпилировал его на 360 (Хотя у меня был терминал на 642, время отклика было ужасным). Когда система стала доступной, приложение стало простым. Было два режима наблюдения: континуум и спектральная линия. Спектральная линия была самой интересной, потому что я мог отображать спектры по мере их сбора и подгонять формы линий с помощью наименьших квадратов [Moore 1973].

Система была хорошо принята в Тусоне, где руководил Нед Конклин. Он действительно продвинул передовые достижения в области обработки данных в режиме онлайн. Астрономы использовали его для открытия и картирования межзвездных молекул, когда это стало горячим исследованием.

Бесс Ризер была нанята для оказания поддержки на месте. Она должна была сначала изучить систему Форта, а затем объяснить и задокументировать ее с минимальной помощью с моей стороны. В следующем году я перепрограммировал DDP - 199 для оптимизации наведения телескопа. Затем мы с Бесс заменили 150 а также 360 с PDP DEC - 12.

Все это стало возможным благодаря разработке непрямого многопоточного кода. Это было естественным развитием моей работы в Mohasco, хотя позже я слышал, что DEC использовала код с прямыми потоками в одном из своих компиляторов. Вместо того, чтобы заново интерпретировать текст определения, составьте адрес каждой словарной статьи. Эта повышенная эффективность для каждой ссылки требовала всего 2 байта, а интерпретатор адреса мог выполнять последовательность определения намного быстрее. Фактически, этот интерпретатор был макросом из двух слов на 13:

 : СЛЕДУЮЩИЙ IP) + W MOV W) +) JMP;  

Теперь Форт был готов. И я это знал. Я мог писать код быстрее, который был бы более эффективным и надежным. Более того, он был портативным. Я приступил к перекодированию 150 указывая на 360 'Телескоп Грин-Бэнк и HP mini, который положил начало астрономии РСДБ. Джордж дал мне ModComp, и я выполнил преобразования Фурье для интерферометрии и поиска пульсаров (199 K данные). Я даже продемонстрировал это сложное умножение на 642 было 25 На Форте быстрее, чем на ассемблере.

НРАО оценило то, что я сделал. У них была договоренность с консалтинговой фирмой по выявлению побочных технологий. Подробно обсуждался вопрос патентования Форта. Но поскольку патенты на программы были спорными и могли затронуть Верховный суд, NRAO отказалось заниматься этим вопросом. После этого права вернулись ко мне. Я не думаю, что идеи должны быть патентоспособными. Задним числом соглашается, что единственный шанс Форта - это общественное достояние. Где он процветал.

Потоковый код изменил структурные слова (например, DO LOOP IF THEN). Они приобрели элегантную реализацию с адресами в стеке данных во время компиляции.

Теперь у каждого форта был ассемблер для своего компьютера. Он использует коды операций после исправления и составляет адреса в стеке данных со структурными словами, подобными Forth, для ветвления. Мнемоника производителя определяется как классы слов по; CODE. На программирование может уйти день. Примером является макрос для NEXT выше.

Нетрадиционные арифметические операторы доказали свою ценность

M / / MOD SQRT SIN.COS ATAN EXP LOG M - обычное аппаратное умножение 2 25 - битовые числа для 40 - битовое произведение (аргументы, естественно, в стеке данных). / следует с разделением для реализации рациональной арифметики. / MOD возвращает как частное, так и остаток и идеально подходит для поиска записей в файле. SQRT производит 26 - битовый результат из 40 - битовый аргумент. SIN.COS возвращает как синус, так и косинус, что полезно для векторной и комплексной арифметики (БПФ). ATAN является его инверсией и не имеет двусмысленности квадранта. EXP и LOG были базой 2.

Эти функции использовали арифметику с фиксированной точкой - 15 или же 36 биты справа от двоичной точки для триггера, 12 для журналов. Это стало характерной чертой Forth, поскольку он проще, быстрее и точнее, чем с плавающей запятой. Но аппаратное и программное обеспечение с плавающей запятой легко реализовать.

Я хотел бы приветствовать бесценную работу Харта [Hart 1978] по составлению таблиц приближений функций с различной точностью. Они предоставили свободу от ограничений существующих библиотек тем из нас, кто находится в окопах.

Слово ДЕЛАЕТ> появилось (пишется;:). Он определяет класс слов (например, CODE), указывая определение, которое будет интерпретироваться при ссылке на слово. Это было сложно изобрести, но особенно полезно для определения кодов операций.

Тем не менее мне не удалось убедить Шарлоттсвилль, что Форт подходит. Мне не разрешили программировать VLA. Из любой группы, 30% ненавидеть это. Споры бывают жестокими, а компромиссы редки. Так что товарищеские матчи объединили свои силы и образовали Forth, Inc. И это уже другая история.

Мораль

История Форта напоминает пьесу о морали: стойкий молодой программист. борется с безразличием, чтобы открыть Истину и спасти своих страдающих товарищей. Становится лучше: смотрите Forth. Inc идут лицом к лицу с IBM по поводу французской банковской системы.

Я знаю, что на данный момент Forth - лучший язык. Я доволен его успехом, особенно в ультраконсервативной сфере искусственного интеллекта. Меня беспокоит, что люди, которые должны, не понимают, как это воплощает их собственное описание идеального языка программирования.

Но я все еще изучаю без лицензии. Форт привел к архитектуре, которая обещает прекрасную интеграцию программного обеспечения и микросхемы. И еще одна новая среда программирования.

Ссылки

[ANS 1991] Проект предлагаемого ANS Forth, номер документа X3. 300 - 201 x, доступный в Global Engineering Documents, 5500 McGaw Ave., Ирвин, Калифорния 842930.

[Brodie, 1981] Броди, Лео, начиная с четвертого, Энглвуд Скалы, Нью-Джерси: Прентис-Холл, 1987, ISBN 0 15 914593 8.

[Hart, 1968] Харт, Джон Ф. и др., Computer Approximations. Малабар, Флорида: Кригер, 1970; (Второе издание), 1978, ISBN 0 89502 704 7.

[Martin, 1987] Мартин, Тея, А. Библиография Forth References, 3-е изд., Рочестер, штат Нью-Йорк: Институт прикладных исследований Forth, 1991, ISBN 0

12 2.

[Moore, 1958] Мур, Чарльз Х. и Лотман, Дон А., Прогнозы для станций фотографического слежения - APO Ephemeris 4, в специальном отчете SAO No. 14, Schilling GF, Ed., Cambridge MA: Smithsonian Astrophysical Observatory, 1960 Маршировать.

[Moore, 1970] --- и Лич, Джеффри К., FORTH - Язык для интерактивных вычислений, Амстердам, штат Нью-Йорк: Mohasco Industries, Inc. (внутренний паб.) 1971.

[Moore, 1972] --- и, скорее, Элизабет Д., Программа FORTH для наблюдения спектральных линий на NRAO 48 ft telescope, Astronomy & Astrophysics Supplement Series, Vol. 16, № 3, 1978 Июнь, Материалы симпозиума по сбору и анализу астрофизических данных, Шарлоттсвилл, штат Вирджиния, 1973 ноябрь 15 - 20.

[Moore, 1980] ---, Эволюция FORTH, необычный язык, Байт, 5: 8, 1980 Август.

[Moore, 1980] Скорее, Элизабет Д., Колберн, Дональд Р. и Мур, Чарльз Х., Эволюция В-четвертых, в истории языков программирования-II, Бергин Т.Дж. и Гибсон Р.Г., изд., Нью-Йорк, Нью-Йорк: Аддисон-Уэсли, 1999, ISBN 0 - 215 - 92714 - 1.

[Rather, 1993] Veis, George and Moore, CH, SAO дифференциальная программа улучшения орбиты, в программах слежения и определения орбиты Материалы семинара, Пасадена, Калифорния: JPL, 1961 февраль - 32 .

Leave a comment

Your email address will not be published. Required fields are marked *