TRAC (язык программирования)
Парадигма | макропроцессор общего назначения |
---|---|
Разработано | Кэлвин Мурс |
Впервые появился | 1964 |
Стабильная версия | |
Под влиянием | |
Макро SAP [3] | |
Под влиянием | |
SAM76 , ML/I [3] |
TRAC (для и ) компиляции расчета текста разработанный PDP — Язык это язык программирования, в 1959–1964 годах Кэлвином Мурсом и впервые реализованный на -1 в 1964 году Л. Питером Дойчем . [4] Это был один из трех «первых языков», рекомендованных Тедом Нельсоном в Computer Lib . TRAC T64 использовался как минимум до 1984 года, когда Мурс обновил его до TRAC T84. [4]
Описание языка
[ редактировать ]TRAC — это чисто текстовый язык, своего рода макроязык . В отличие от традиционных специальных макроязыков того времени, например, используемых в ассемблерах, TRAC хорошо спланирован, последователен и во многих смыслах завершен. Он имеет явные операторы ввода и вывода, в отличие от типичного неявного ввода-вывода на самом внешнем макроуровне, что делает его одновременно более простым и универсальным, чем старые макроязыки.
Он также отличается от традиционных макроязыков тем, что числа TRAC представляют собой строки цифр, а целочисленная арифметика (без определенных ограничений на максимальные значения) обеспечивается посредством встроенных («примитивных») функций. Возможно, одним из аспектов его полноты является то, что концепция ошибки ограничивается такими событиями, как нехватка файлового пространства и запрос расширения строки, длина которой превышает рабочую память интерпретатора; то, что на многих языках было бы описано как незаконные операции, в TRAC рассматривается путем определения результата (часто нулевой строки) для каждой возможной комбинации строк аргументов функции.
TRAC — это язык обработки текста, [5] также называется языком обработки строк. [6]
Акцент на строках как на строках настолько силен, что TRAC предоставляет механизмы для обработки собственных синтаксических символов языка либо в их синтаксической роли, либо как любой другой символ, а самомодифицирующийся код больше напоминает естественное следствие типичных методов программирования TRAC, чем быть особенной особенностью.
TRAC, как и APL или LISP , является языком, ориентированным на выражения (в отличие от более типичных процедурно-ориентированных языков), но в отличие от APL в нем полностью отсутствуют операторы. Во многих отношениях это случай чистого функционального программирования .
TRAC гомоиконичен . [7] [8] [9]
TRAC и LISP имеют общий синтаксис, который обычно предполагает наличие многих уровней вложенных круглых скобок.
Основным источником вдохновения для TRAC послужили три статьи Дугласа Макилроя . [7] [10] [11] [12]
Интеллектуальная собственность
[ редактировать ]Мурс зарегистрировал торговую марку TRAC, чтобы сохранить контроль над определением языка, что было необычным и новаторским шагом в то время. иск о нарушении прав интеллектуальной собственности В какой-то момент он подал против DEC , утверждая, что контракт на поставку мини-компьютера с интерпретатором TRAC нарушает его права. «В первом выпуске « Журнала доктора Добба» , одной из первых публикаций в области персональных компьютеров, содержится язвительная редакционная статья, направленная против Муерса и его жадности в попытках взимать с людей плату за его компьютерный язык». [13] [14] С тех пор это имя несколько раз использовалось для несвязанных проектов в области информационных технологий , включая текущую с открытым исходным кодом систему управления проектами под названием Trac .
Влияние и использование
[ редактировать ]Позже TRAC был реализован на PDP-8 , PDP-10 и PDP-11 .
TRAC вдохновил различные языки. Чтобы избежать проблем с Mooers, они переименовали примитивы и/или использовали другие метасимволы. В случае с SAM76 примитивы были добавлены, по словам Клода Кагана, «потому что TRAC — это детский лепет». В случае с MINT примитивы были добавлены, чтобы предоставить доступ к сложному механизму текстового редактора.
- Одним из очевидных недостатков TRAC было отсутствие полной расширяемости: некоторые примитивные функции TRAC чувствительны к различию между нулевым (нулевым символом) аргументом и несуществующим (не ограниченным) аргументом, но помимо его последнего ненулевого аргумента пользователь -определенная функция не может провести различие. SAM76 был языком, подобным TRAC, который устранил это ограничение.
- Расс Нельсон реализовал emacs под названием MINT ( MINT I s Not T язык расширения RAC ). Этот язык используется FreeDOS редактором FreeMACS .
- Джон Уокер (программист) реализовал встраиваемую языковую библиотеку расширений DIESEL. [15] ( Язык тупых интерпретативно оцениваемых предназначенный первоначально строковых выражений , AutoCAD . для обработки макросов меню ) в [16]
TRAC использовался FTP Software в своем продукте для ПК/TCP в качестве языка сценариев модемного дозвона.
TRAC также использовался в качестве внешнего интерфейса в рендерере Digital Productions Cray для фильмов, включая «Последний звездный истребитель» .
Пример программы
[ редактировать ]Это пример простой программы, которая запрашивает имя пользователя и существует, написанная на TRAC T64: [17]
#(DS,PROG.A,( #(PS,(WHAT IS YOUR NAME? )) #(DS,NAME,##(RS)) #(PS,( GOODBYE)) ))'
TRAC T84 использует немного другой синтаксис и другие имена для своих примитивов. Ниже приведен сценарий для вычисления чисел Фибоначчи, написанный на TRAC T84: [18]
:(s,fibo,( :(ei,<1>, 1, 0,( :(ei,<1>, 2, 1,( :(aa, :(ri,fibo,:(as, <1>,1)),:(ri,fibo,:(as, <1>,2))) )) )) ))` :(mw,fibo)'
См. также
[ редактировать ]- TTM (язык программирования) — язык программирования, вдохновленный TRAC.
Ссылки
[ редактировать ]- ^ Спецификация языка программирования TRAC T2001 (в архиве)
- ^ TRAC T2001 на Sourceforge
- ^ Jump up to: а б «TRAC — человеко-машинный язык манипулирования строками» . HOPL: Интернет-историческая энциклопедия языков программирования . Архивировано из оригинала 13 августа 2009 года.
- ^ Jump up to: а б «Поставка кода — все, что нужно программисту» . Архивировано из оригинала 8 апреля 2001 г.
- ^ Дэвид Уолден. «Макровоспоминания, 1964–2013» . 2014.
- ^ Кэрол Леб Мир. «Сравнение обработки строк в четырех языках программирования» . 1972.
- ^ Jump up to: а б Мурс, Китай ; Дойч, LP (1965). «TRAC, язык обработки текста». Труды ACM '65 Материалы 20-й национальной конференции 1965 года . стр. 229–246. дои : 10.1145/800197.806048 . S2CID 40013081 .
- ^ Кей, Алан (1969). Реактивный двигатель (доктор философии). Университет Юты.
- ^ Клаас ван Шелвен. «Не говорите «гомоиконический»» .
- ^ Макилрой, доктор медицинских наук , Расширения макроинструкций языков компилятора. CACM 3, № 4 (1960), 214–220.
- ^ Иствуд, DE и Макилрой, доктор медицинских наук, Модификация макрокомпилятора SAP. Вычислительный центр Bell Telephone Laboratories, 1959 год.
- ^ Макилрой, доктор медицинских наук, Использование макросов SAP для управления символьными выражениями. Вычислительный центр Bell Telephone Laboratories (1960)
- ^ Мурс, Кальвин (22 июня 1993 г.). «Устное историческое интервью с Кэлвином Н. Мурсом и Шарлоттой Д. Мурс» . Институт Чарльза Бэббиджа .
- ^ «Журнал доктора Добба - Том 1» . 1976.
- ^ https://www.fourmilab.ch/diesel/
- ^ https://www.fourmilab.ch/nav/topics/comComponents.html#diesel
- ^ Руководство для начинающих по языку TRAC (1972) (в архиве) Кэлвина Н. Мурса.
- ^ Информационная страница TRAC (в архиве) в The History of Computing Project с небольшим примером кода и фотографией К.М. Мурса.
Внешние ссылки
[ редактировать ]- Фонд TRAC (в архиве)
- TRAC, язык описания процедур для реактивной пишущей машинки в «Сообщениях ACM», том 9, выпуск 3, март 1966 г.
- Информационная страница TRAC Эндрю Уокера
- Запись TRAC в HOPL Энциклопедии компьютерных языков
- Проект внедрения TRAC на SourceForge .
- Интервью по устной истории с Кэлвином Н. Мурсом и Шарлоттой Д. Мурс в Институте Чарльза Бэббиджа . В интервью обсуждаются исследования в области поиска информации и языков программирования со времен Второй мировой войны до начала 1990-х годов.