Действие! (язык программирования) - Action! (programming language)
Действие! редактор | |
Оригинальный автор (ы) | Клинтон Паркер |
---|---|
Разработчики) | Оптимизированное системное программное обеспечение |
изначальный выпуск | Август 1983 г. |
Окончательный релиз | v3.6 / 4 ноября 1983 г. |
Платформа | Семейство 8-битных Atari |
Размер | Картридж с переключением банка 16K |
Действие! является процедурным язык программирования похожий на АЛГОЛ который предназначен для создания высокопроизводительных программ для Семейство 8-битных Atari. Язык был написан Клинтоном Паркером и распространен в ПЗУ картридж от Оптимизированное системное программное обеспечение (OSS), начиная с 1983 года. Это был один из первых OSS переключение банка «Суперкартриджи» с общим кодом 16 КБ.
Работать с Генри Бейкер, Паркер ранее разработал Micro-SPL, язык системного программирования для Xerox Alto. Действие! был в основном переносом концепций Micro-SPL на Atari с необходимыми изменениями для более непосредственного управления лежащими в основе MOS 6502 процессор и добавить редактор и отладчик.
Действие! был использован для разработки как минимум двух коммерческих продуктов - HomePak пакет производительности и Игры, в которые играют компьютеры клиентская программа - и многочисленные программы в АНАЛОГОВЫЕ вычисления и Античный журналы. Часть редактора также использовалась в качестве основы для Скрепка для бумаг текстовый редактор. Язык не переносился ни на какие другие платформы.
Исходный код программы Action! На ассемблере 6502. был доступен в рамках Стандартная общественная лицензия GNU автором в 2015 году.[1]
История
Микро-SPL
Во время учебы в аспирантуре Паркер начал подрабатывать в Xerox PARC работа над драйверы принтера. Позже он переехал в Xerox Alto проект, где он написал несколько игр для системы.[2] Его докторская степень была в естественный язык синтаксический анализ, и он работал над теорией компиляторов во время своей дипломной работы.[2]
Генри Бейкер и Parker выпустили Micro-SPL в сентябре 1979 года. Micro-SPL предназначался для использования в качестве язык системного программирования на Xerox Alto рабочая станция, который обычно программировался в BCPL. Альт использовал микрокод система, которую выводит компилятор BCPL. Micro-SPL выводит тот же формат, что позволяет программам BCPL вызывать программы Micro-SPL.[3]
Помимо различий в синтаксисе, основное различие между Micro-SPL и BCPL и причина его существования заключались в том, что Micro-SPL создавал код, который был во много раз быстрее, чем собственный компилятор BCPL. В целом, программы Micro-SPL должны были работать примерно в десять раз быстрее, чем BCPL, и примерно вдвое быстрее, чем хороший рукописный микрокод. По сравнению с микрокодом, они утверждали, что на его запись уйдет вдвое меньше времени, а на отладку - 10%.[3]
Действие!
Именно в этот период Паркер приобрел Atari для использования дома и был разочарован отсутствием систем разработки для этой платформы. Это послужило толчком к развитию Action![2]
Первоначально Паркер думал о выпуске системы сам, но позже решил сотрудничать с Оптимизированное системное программное обеспечение (OSS) для продаж и распространения. OSS ориентирован на утилиты и языки программирования, такие как БАЗОВЫЙ XL, так что это было естественно для Action![2] Продажи были достаточно высокими, чтобы Паркер мог зарабатывать на жизнь за счет гонораров в течение нескольких лет.[2]
В IBM PC было C доступны компиляторы, и Паркер решил, что переносить Action! на эту платформу.[2] Когда продажи 8-битных платформ Atari пошли на убыль, по крайней мере, в Северной Америке, OSS тоже прекратила свое существование. Поздно в своей истории Действие! распространение перенесено из OSS в Electronic Arts, но они мало что сделали с языком, и вскоре после этого продажи прекратились.[2]
В интервью 2015 года Паркер выразил удивление по поводу уровня поддержки, которую язык продолжает получать, предполагая, что тогда к нему проявился больший интерес, чем в конце 1980-х.[2]
Среда разработки
Действие! был одним из первых примеров формата OSS SuperCartridge. Картриджи ПЗУ на Atari обычно ограничивались 8 КБ, что ограничивало его способность поддерживать более крупные программы. Суперкартридж имел 16 КБ, организованных в виде четырех блоков по 4 КБ, два из которых были видны в любое время. Нижние 4 КБ не изменились, и система могла переключатель банка между тремя другими блоками, изменив значение в адресе $ AFFF.[4][5]
Действие! использовал этот дизайн, разбив систему на четыре раздела: редактор, компилятор и монитор для тестирования кода и переключения между редактором и компилятором, а также библиотекой времени выполнения.[5] Библиотека времени выполнения хранится в самом картридже. Для распространения автономных приложений требуется отдельный пакет времени выполнения, который продавался OSS как Действие! Инструментарий.[6]
Действие! конструкции были разработаны для точного сопоставления с 6502 коды операций, чтобы обеспечить высокую производительность без необходимости сложной оптимизации в однопроходный компилятор.[7] Например, локальным переменным назначаются фиксированные адреса в памяти, а не в стеке записи активации. Это устраняет значительные накладные расходы, связанные с управлением стеком, что особенно сложно в случае 256-байтового стека 6502. Однако это исключает использование рекурсия.[6]
В отличие от интегрированного Atari BASIC и Редактор ассемблера Atari среды, Действия! редактор не использует номера строк. Он имеет полноэкранный дисплей с прокруткой, способный отображать два окна, а также операции блока и глобальный поиск и замену.[6]
Монитор служит отладчиком, позволяя запускать целую программу или отдельные функции, отображать и изменять память, а также отслеживать выполнение программы.[6]
Типы данных
Действие! имеет три основных типы данных, все из которых являются числовыми.
БАЙТ
Внутренне представлен как беззнаковый 8-немного целое число. Диапазон значений от 0 до 255.
Ключевое слово CHAR также можно использовать для объявления переменных BYTE.
БАЙТ возраст = [21]; объявить возраст и инициализировать его значением 21 BYTE leftMargin = 82; объявить leftMargin по адресу 82
CARDinal
Внутренне представлен как беззнаковый 16-немного целое число. Значения варьируются от 0 до 65 535.
CARD население = 600 $; декларировать население и хранить его по адресам 1536 и 1537 CARD prevYear, curYear, nextYear; используйте запятые для объявления нескольких переменных
INTeger
Внутренне представлен как подписанный 16-немного целое число. Значения варьируются от -32 768 до 32 767.
INT veryCold = [-10] INT прибыльQ1, прибыльQ2,; объявление нескольких переменных может: profitsQ3, profitsQ4; охватить несколько строк
Действие! также есть Массивы, УКАЗАТЕЛИ и определяемые пользователем ТИПЫ. Нет плавающая точка предоставляется поддержка.
Пример пользовательского ТИПА:
ТИП CORD = [CARD x, y] CORD point point.x = 42 point.y = 23
Зарезервированные слова
А зарезервированное слово - любой идентификатор или символ, которым действие! компилятор распознает как нечто особенное. Это может быть оператор, имя типа данных, инструкция или директива компилятора.
AND FI OR UNTIL = (ARRAY FOR POINTER WHILE <>) BYTE FUNC PROC XOR #. CARD IF RETURN +> [CHAR INCLUDE RSH -> =] DEFINE INT SET * <"DO LSH STEP / <= 'ELSE MOD THEN & $; ELSEIF MODULE TO% ^ EXIT OD TYPE! @
Пример кода
Ниже приведен пример кода для Сито Эратосфена написано в действии !. Чтобы повысить производительность, отключается АНТИК графический сопроцессор, предотвращая его DMA движок от "воровства" тактов ЦП во время вычислений.
BYTE RTCLOK = 20,; адрес системного таймера SDMCTL = 559; DMA controlBYTE ARRAY FLAGS (8190) CARD COUNT, I, K, PRIME, TIMEPROC SIEVE () SDMCTL = 0; отключить Antic RTCLOK = 0; сбросить часы на ноль COUNT = 0; счетчик инициализации FOR I = 0 ДО 8190; и флаги DO FLAGS (I) = 'T; «'T» - предоставленная компилятором константа для True OD FOR I = 0 TO 8190; теперь запустите сито. DO IF FLAGS (I) = 'T THEN PRIME = I + I + 3 K = I + PRIME WHILE K <= 8190 DO FLAGS (K) =' F; «'F» - предоставленная компилятором константа для False K == + PRIME OD COUNT == + 1 FI OD TIME = RTCLOK; получить чтение таймера SDMCTL = 34; восстановить экран PRINTF ("% E% U PRIMES IN", COUNT) PRINTF ("% E% U JIFFIES", TIME) RETURN
Прием
Брайан Мориарти, в обзоре за февраль 1984 г. АНАЛОГОВЫЕ вычисления, пришел к выводу, что Action! был «одним из самых ценных инструментов разработки, когда-либо опубликованных для Atari». Он сослался на руководство как на единственное слабое место пакета, заявив, что оно «страдает от недоверия, неуверенной организации и нехватки хороших, точных технических данных».[8]
Лео Лапорт рассмотрел действие в выпуске за май / июнь 1984 г. Hi-Res. Он начал обзор: «Это лучшее, что случилось с Atari с тех пор, как Нолан Бушнелл понял, что люди будут играть пинг-понг на экране телевизора. »Лапорт похвалил редактора, отметив его возможности разделения экрана, вырезания и вставки и охарактеризовав его как« полную систему обработки текстов, которая очень отзывчива ». Он сказал, что Action! Работает примерно в 200 раз быстрее, чем Atari BASIC, заключив, что «Этот язык подобен точно настроенному гоночному автомобилю».[9]
БАЙТ в 1985 году хвалили скорость компиляции и выполнения программ, написанных на Action! Используя свои Байт Сито В качестве теста десять итераций сита были выполнены за 18 секунд в Action !, по сравнению с 10 секундами для сборки и 38 минутами в BASIC. Журнал также похвалил редактора языка. БАЙТ сообщил, что этот язык достаточно похож на C, чтобы «регулярно преобразовывать программы между ними», и одобрил поддержку указателей. Журнал пришел к выводу, что «Action! Прост в использовании, быстр и эффективен. Он может использовать всю мощь Atari. Action! Переводит программирование для Atari в совершенно новое измерение».[10]
Ян Чедвик написал в Отображение Atari что «Action!», вероятно, лучший язык для Atari; он немного похож на C и Pascal, с примесью Forth. Я рекомендую его ».[11]
Смотрите также
- Скрепка для бумаг, 8-битный текстовый процессор Atari от другого автора и компании, основанный на Action! редактор
использованная литература
Цитаты
- ^ Действие! Исходный код - страница 2, Альфред (командир Чоппера) Отправлено 2 февраля 2015 г., 13:38, Форумы AtariAge, Это оригинальный экшн! источник, как я получил его от ICD. Он использует кросс-ассемблер ICD, который не включен в zip. Его легко конвертировать в другие форматы
- ^ а б c d е ж г час Паркер 2015.
- ^ а б Бейкер и Паркер 1979, п. 1.
- ^ «Управление RAM / ROM на компьютере XL / XE». AtariWiki.
- ^ а б Мориарти 1984, п. 55.
- ^ а б c d Мориарти 1984.
- ^ АКЦИЯ! в Атарики (PL)
- ^ Мориарти 1984, п. 60.
- ^ Лапорт, Лео (май – июнь 1984 г.). "Свет, камера, мотор!". Hi-Res. п. 72.
- ^ Шнифлок, Эд (март 1985 г.). "Действие! C бедняги?". БАЙТ. п. 273. Получено 19 марта 2016.
- ^ Чедвик, Ян (1985). «Предисловие автора к переработанному изданию». Отображение Atari. Гринсборо, Северная Каролина: Вычислить! Publications, Inc., стр. V – vi. ISBN 0-87455-004-1.
Список используемой литературы
- Бейкер, Генри; Паркер, Клинтон (сентябрь 1979 г.). Микро-SPL (PDF) (Технический отчет). Компьютерные услуги Synapse. CiteSeerX 10.1.1.126.6877.CS1 maint: ref = harv (ссылка на сайт)
- Паркер, Клинтон (31 декабря 2015 г.). «ANTIC Interview 111, Клинтон Паркер, Action!» (подкаст). Беседовал Рэнди Киндиг.CS1 maint: ref = harv (ссылка на сайт)
- Мориарти, Брайан (февраль 1984). «Действие! - Новый язык для Atari!». АНАЛОГОВЫЕ вычисления. № 16. С. 54–61.CS1 maint: ref = harv (ссылка на сайт)
внешние ссылки
- Действие! (язык программирования) на SourceForge.net
- Действие! Язык программирования версии 3.6 - Исходный код, компанией Optimized Systems Software на сайте archive.org
- Действие! информация на Retrobits.com
- Действие! Архив
- Действие! ссылка на язык
- Кросс-компилятор Effectus