Jump to content

Действие! (язык программирования)

Действие!
Оригинальный автор(ы) Клинтон Паркер
Разработчик(и) Оптимизированное системное программное обеспечение
Первоначальный выпуск август 1983 года ; 41 год назад ( 1983-08 )
Финальный выпуск
v3.6 / 4 ноября 1983 г .; 40 лет назад ( 1983-11-04 )
Платформа 8-битные компьютеры Atari
Размер Картридж 16K с переключением банков

Действие! — процедурный язык программирования и интегрированная среда разработки , написанный Клинтоном Паркером для 8-битных компьютеров Atari . Язык, похожий на ALGOL , компилируется в высокопроизводительный код для MOS Technology 6502 компьютеров Atari. Действие! распространялся на картридже ПЗУ компанией Optimized Systems Software, начиная с 1983 года. Это был один из первых с переключением банков «Суперкартриджей» объемом 16 КБ . Библиотека времени выполнения хранится в картридже; для создания автономного приложения требуется Action! Набор инструментов , который продавался OSS отдельно.

Паркер, работая с Генри Бейкером , ранее разработал Micro-SPL, язык системного программирования для Xerox Alto . Действие! По сути, это порт концепций Micro-SPL для Atari с изменениями для поддержки процессора 6502 и добавлением встроенного полноэкранного редактора и отладчика.

Действие! использовался для разработки как минимум двух коммерческих продуктов — пакета повышения производительности HomePak и клиентской программы Games Computers Play , а также множества программ для журналов ANALOG Computing и Antic . Редактор вдохновил на создание PaperClip текстового процессора . Язык не портировался на другие платформы.

Исходный код Action! на языке ассемблера. был предоставлен под лицензией GNU General Public License в 2015 году. автором [1]

Среда разработки

[ редактировать ]

Действие! является одним из ранних примеров формата OSS SuperCartridge. Хотя картриджи ПЗУ для Atari могли поддерживать 16 КБ, [2] OSS выбрала 16 КБ с переключением банков, организованных в виде четырех блоков по 4 КБ, сопоставленных с 8 КБ адресного пространства . Нижние 4 КБ не изменились, и система могла переключаться между остальными тремя блоками, изменяя значение адреса $AFFF. [3] [4] Это позволило увеличить объем оперативной памяти , доступной для пользовательских программ. [5]

Действие! использовал эту конструкцию, разбив систему на четыре раздела: редактор, компилятор, монитор для тестирования кода и переключения между редактором и компилятором, а также библиотеку времени выполнения. [4] Библиотека времени выполнения хранится в самом картридже. Для распространения автономных приложений требуется отдельный пакет времени выполнения, который продавался OSS как Action! Инструментарий. [6]

Действие! конструкции были разработаны для четкого сопоставления с 6502 кодами операций , чтобы обеспечить высокую производительность без необходимости сложной оптимизации в однопроходном компиляторе . [7] Например, локальным переменным назначаются фиксированные адреса в памяти, а не размещаются в стеке записей активации . Это устраняет значительные накладные расходы, связанные с управлением стеком, что особенно сложно в случае 256-байтового стека 6502. Однако это исключает использование рекурсии . [6]

В отличие от интегрированных сред Atari BASIC и Atari Assembler Editor , Action! редактор не использует номера строк. Он имеет полноэкранный дисплей с прокруткой, способный отображать два окна, и включает в себя блочные операции, а также глобальный поиск и замену. [6]

Монитор служит отладчиком, позволяя запускать всю программу или отдельные функции, отображать и изменять память, а также отслеживать выполнение программы. [6]

Типы данных

[ редактировать ]

Действие! имеет три основных типа данных , все из которых являются числовыми.

BYTE внутренне представлен как беззнаковое 8- битное целое число. Значения варьируются от 0 до 255.
Ключевое слово CHAR также можно использовать для объявления переменных BYTE.

 BYTE age=[21]      ; declare age and initialize it to the value 21
 BYTE leftMargin=82 ; declare leftMargin at address 82

Входное значение CARD внутренне представляется как беззнаковое 16- битное целое число. Значения находятся в диапазоне от 0 до 65 535.

 CARD population=$600             ; declare population and store it at address 1536 and 1537
 CARD prevYear, curYear, nextYear ; use commas to declare multiple variables

INT eger внутренне представляется как целое число со знаком 16- битное . Значения варьируются от -32 768 до 32 767.

 INT veryCold = [-10]
 INT profitsQ1, profitsQ2,  ; declaring multiple variables can 
     profitsQ3, profitsQ4   ; span across multiple lines

Действие! также имеет МАССИВЫ, УКАЗАТЕЛИ и определяемые пользователем ТИПЫ. не Поддержка плавающей запятой предусмотрена.

Пример определяемого пользователем TYPE:

 TYPE CORD=[CARD x,y]
 CORD point
 point.x=42
 point.y=23

Зарезервированные слова

[ редактировать ]

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

 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       !        @

Пример кода

[ редактировать ]

Ниже приведен пример кода Решета Эратосфена, написанного в Action!. Чтобы повысить производительность, он отключает графический сопроцессор ANTIC , не позволяя его механизму DMA «укравать» циклы ЦП во время вычислений.

BYTE RTCLOK=20, ; addr of sys timer
     SDMCTL=559 ; DMA control

BYTE ARRAY FLAGS(8190)

CARD COUNT,I,K,PRIME,TIME

PROC SIEVE()

  SDMCTL=0 ; shut off Antic
  RTCLOK=0 ; reset the clock to zero

  COUNT=0         ; init count
  FOR I=0 TO 8190 ; and flags
    DO
    FLAGS(I)='T ; "'T" is a compiler-provided constant for True
    OD

  FOR I=0 TO 8190 ; now run the sieve
    DO
    IF FLAGS(I)='T THEN
      PRIME=I+I+3
      K=I+PRIME
      WHILE K<=8190
        DO
        FLAGS(K)='F ; "'F" is a compiler-provided constant for False
        K==+PRIME
        OD
      COUNT==+1
    FI
    OD
  TIME=RTCLOK ; get timer reading
  SDMCTL=34   ; restore screen

  PRINTF("%E %U PRIMES IN",COUNT)
  PRINTF("%E %U JIFFIES",TIME)
RETURN

Микро-СПЛ

[ редактировать ]

Во время учебы в аспирантуре Паркер начал подрабатывать в Xerox PARC, занимаясь драйверами принтеров . Позже он перешел в проект Xerox Alto , где написал несколько игр для этой системы. [8] Его докторская степень была посвящена анализу естественного языка , а во время аспирантуры он работал над теорией компиляторов. [9]

Генри Бейкер и Паркер выпустили Micro-SPL в сентябре 1979 года. Micro-SPL предназначался для использования в качестве языка системного программирования на Xerox Alto компьютере рабочей станции , который обычно программировался на BCPL . Alto использовал систему микрокода , которую выдавал компилятор BCPL. Micro-SPL выводит тот же формат, что позволяет программам BCPL вызывать программы Micro-SPL. [10]

Помимо различий в синтаксисе, основное различие между Micro-SPL и BCPL и причина его существования заключались в том, что Micro-SPL создавал код, который был во много раз быстрее, чем собственный компилятор BCPL. В целом ожидалось, что программы Micro-SPL будут работать примерно в десять раз быстрее, чем BCPL, и примерно вдвое быстрее, чем хороший рукописный микрокод. Они утверждали, что по сравнению с микрокодом на его написание уйдет вдвое меньше времени, а на его отладку потребуется 10% времени. [10]

Действие!

[ редактировать ]

Именно в этот период Паркер приобрел компьютер Atari для использования дома. Его разочаровало отсутствие систем разработки для него, что и послужило толчком к созданию Action! [11] Паркер подумывал о выпуске системы самостоятельно, но решил сотрудничать с Optimized Systems Software (OSS) для продаж и распространения. OSS сосредоточилась на утилитах и ​​языках программирования, таких как BASIC XL , поэтому это было естественно для Action! [12] Продажи были достаточно высокими, чтобы Паркер несколько лет зарабатывал на жизнь за счет гонораров. [13]

На IBM PC были доступны компиляторы C , и Паркер решил, что портировать Action! на эту платформу. [14] Поскольку продажи 8-битных компьютеров Atari в Северной Америке пошли на убыль, OSS тоже пошла на убыль. В конце своей истории Action! распространение перешло от OSS к Electronic Arts , но они мало что сделали с языком, и вскоре после этого продажи прекратились. [15] В интервью 2015 года Паркер выразил удивление по поводу продолжающегося интереса к этому языку, предположив, что он стал выше, чем в конце 1980-х годов. [16]

Брайан Мориарти в обзоре для ANALOG Computing за февраль 1984 года пришел к выводу, что Action! был «одним из самых ценных инструментов разработки, когда-либо опубликованных для Atari». Он назвал руководство единственным слабым местом пакета, заявив, что оно «страдает от неуверенности, неуверенной организации и нехватки хороших, точных технических данных». [17]

Лео Лапорт сделал обзор Action в выпуске Hi-Res за май/июнь 1984 года . Он начал обзор так: «Это лучшее, что случилось с Atari с тех пор, как Нолан Бушнелл понял, что люди будут играть в пинг-понг на экране телевизора ». Лапорт похвалил редактор, отметив его возможности разделения экрана, вырезания и вставки и назвав его «полноценной системой обработки текста, которая очень отзывчива». Он сказал, что Action! работал примерно в 200 раз быстрее, чем Atari BASIC , и пришел к выводу, что «этот язык подобен точно настроенному гоночному автомобилю». [18]

В 1985 году компания BYTE высоко оценила скорость компиляции и выполнения программного обеспечения, написанного на Action! Используя в качестве теста тест Byte Sieve , десять итераций сита были выполнены за 18 секунд в Action! по сравнению с 10 секундами для сборки и 38 минутами в BASIC. Журнал также похвалил редактора языка. BYTE сообщил, что этот язык достаточно похож на C, чтобы «обычно конвертировать программы между ними», и одобрил поддержку указателей. Журнал пришел к выводу, что «Action! прост в использовании, быстр и эффективен. Он может использовать всю мощь Atari. Action! выводит программирование для Atari в совершенно новое измерение». [19]

Ян Чедвик написал в Mapping the Atari , что «Action! — это, наверное, лучший язык для Atari; он немного похож на C и Pascal, с примесью Forth. Я рекомендую его». [20]

  1. ^ Действие! Исходный код — страница 2 , Альфред (Chopper Commander) Опубликовано 2 февраля 2015 г., 13:38, Форумы AtariAge, Это оригинальный Action! источник, как я получил его от ICD. Он использует кросс-ассемблер ICD, который не включен в zip-архив. Его можно легко конвертировать в другие форматы.
  2. ^ Чедвик, Ян (1983). Карта Атари . Вычислите! . п. 103. ИСБН  9780874550047 .
  3. ^ «Управление RAM/ROM на компьютере XL/XE» . АтариВики .
  4. ^ Перейти обратно: а б Мориарти 1984 , с. 55.
  5. ^ «Информационный бюллетень ОСС» (PDF) . atariwiki.org . 1983 год . Проверено 24 мая 2024 г.
  6. ^ Перейти обратно: а б с д Мориарти 1984 .
  7. ^ АКЦИЯ! в Атарики (Польша)
  8. ^ Паркер 2015 , 6:00.
  9. ^ Паркер 2015 , 6:30.
  10. ^ Перейти обратно: а б Бейкер и Паркер 1979 , с. 1.
  11. ^ Паркер 2015 , 7:00.
  12. ^ Паркер 2015 , 28:00.
  13. ^ Паркер 2015 , 20:00.
  14. ^ Паркер 2015 , 21:30.
  15. ^ Паркер 2015 , 2:45.
  16. ^ Паркер 2015 , 1:00.
  17. ^ Мориарти 1984 , с. 60.
  18. ^ Лапорт, Лео (май – июнь 1984 г.). «Свет, камера, ДЕЙСТВИЕ!» . Привет-Разрешение . п. 72.
  19. ^ Шнифлок, Эд (март 1985 г.). «Действие! Си для бедняков?» . БАЙТ . п. 273 . Проверено 19 марта 2016 г.
  20. ^ Чедвик, Ян (1985). «Авторское предисловие к переработанному изданию» . Карта Атари . Гринсборо, Северная Каролина: Вычислите! Publications, Inc., стр. v – vi. ISBN  0-87455-004-1 .

Библиография

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 634116ebc4066ccde8b419ceaa4751dd__1716542460
URL1:https://arc.ask3.ru/arc/aa/63/dd/634116ebc4066ccde8b419ceaa4751dd.html
Заголовок, (Title) документа по адресу, URL1:
Action! (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)