Action!
From Atariki
Wersja z dnia 07:17, 29 gru 2006 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 08:10, 29 gru 2006 KMK (Dyskusja | wkład) (przepisałem z en.wiki) Next diff → |
||
Linia 1: | Linia 1: | ||
{{grafr|action.gif}} | {{grafr|action.gif}} | ||
- | Strukturalny, kompilowany język programowania dla ośmiobitowych Atari. Dzieło firmy Action Computer Systems. Język łączy w sobie cechy [[C]] i [[Pascal]]a, czyli wygodę programowania z całkiem szybkim kodem wynikowym. Niemałą zaletą Action! jest dość wygodny, pełnoekranowy edytor. W języku tym napisano sporo programów użytkowych (np. [[DiskRx]]) i gier, np. [[Problem Jasia]]. | + | Strukturalny, kompilowany język programowania dla ośmiobitowych Atari. Dzieło programisty [[OSS]] nazwiskiem Clinton Parker, sprzedawane od 1983 roku pod marką ''Action Computer Services''. Właścicielem praw autorskich było kolejno [[OSS]], [[ICD]], a w końcu [[FTe]]. |
+ | |||
+ | Action! łączy w sobie cechy [[C]] i [[Pascal]]a, czyli wygodę programowania z całkiem szybkim kodem wynikowym. Składnia Action! była wzorowana na języku [http://en.wikipedia.org/wiki/ALGOL_68 ALGOL 68]. Niemałą zaletą Action! jest dość wygodny, pełnoekranowy edytor. W języku tym napisano sporo programów użytkowych (np. [[DiskRx]]) i gier, np. [[Problem Jasia]]. | ||
Oryginalna wersja języka występuje na [[cartridge]]'u, ale krążyła też niemal w pełni funkcjonalna wersja dyskowa. Ciekawostką jest spora biblioteka procedur krążąca w sieci, dzięki czemu Action! stał się bardzo rozbudowanym i elastycznym narzędziem pracy dla programistów. | Oryginalna wersja języka występuje na [[cartridge]]'u, ale krążyła też niemal w pełni funkcjonalna wersja dyskowa. Ciekawostką jest spora biblioteka procedur krążąca w sieci, dzięki czemu Action! stał się bardzo rozbudowanym i elastycznym narzędziem pracy dla programistów. | ||
Znane osobistości używające Action! to: [[Jakub Husak]], [[Gizmo Magic]]. | Znane osobistości używające Action! to: [[Jakub Husak]], [[Gizmo Magic]]. | ||
+ | |||
+ | == Typy danych == | ||
+ | |||
+ | W Action! występują trzy typy danych numerycznych: BYTE, CARD i INT. BYTE to ośmiobitowa liczba całkowita bez znaku, CARD - 16-bitowa liczba całkowita bez znaku, INT - 16-bitowa liczba całkowita ze znakiem. Pozostałe typy to CHAR, ARRAY, POINTER i typy deklarowane przez użytkownika, np. | ||
+ | |||
+ | <pre> | ||
+ | TYPE CORD=[CARD x,y] | ||
+ | CORD point | ||
+ | point.x=42 | ||
+ | point.y=23 | ||
+ | </pre> | ||
+ | |||
+ | == Lista słów kluczowych == | ||
+ | |||
+ | 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 | ||
+ | |||
+ | == Cechy języka == | ||
+ | |||
+ | Program pisze się w edytorze, kompiluje natomiast w tzw. monitorze, który ma tez pewne funkcje ułatwiające debugging. Edytor jest pełnoekranowy, pole edycyjne można podzielić na dwa niezależne "okna". Możliwości edytora obejmują kopiowanie bloków, wyszukiwanie i zastępowanie tekstów itp. | ||
+ | |||
+ | Kompilator Action! jest jednoprzebiegowy, kod źrodłowy jest kompilowany z pamięci, co dodatnio wpływa na szybkość kompilatora, ujemnie natomiast na maksymalną wielkość programu. | ||
+ | |||
+ | Wszystkie obliczenia dokonywane są w trybie liczb całkowitych ze znakiem. Język nie przewiduje wstawek w asemblerzez w postaci mnemonikół, podprogramy maszynowe musza być załączane w postaci tablicy wypełnionych stałymi szesnastkowymi. | ||
+ | |||
+ | Z braku dynamicznego zarządzania pamięcią w Action! niemożliwa jest rekurencja. | ||
+ | |||
+ | == Przykład kodu == | ||
+ | |||
+ | Przykładowa procedura na sito Eratostenesa napisana w Action!: | ||
+ | |||
+ | <pre> | ||
+ | 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 ; only one timer needed | ||
+ | |||
+ | COUNT=0 ; init count | ||
+ | FOR I=0 TO 8190 ; and flags | ||
+ | DO | ||
+ | FLAGS(I)='T | ||
+ | OD | ||
+ | |||
+ | FOR I=0 TO 8190 ; and flags | ||
+ | DO | ||
+ | IF FLAGS(I)='T THEN | ||
+ | PRIME=I+I+3 | ||
+ | K=I+PRIME | ||
+ | WHILE K<=8190 | ||
+ | DO | ||
+ | FLAGS(K)='F | ||
+ | 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 | ||
+ | </pre> | ||
+ | |||
== Linki zewnętrzne == | == Linki zewnętrzne == | ||
* [http://www.cyberroach.com/analog/an16/action.htm Oficjalny opis języka] | * [http://www.cyberroach.com/analog/an16/action.htm Oficjalny opis języka] |
Wersja z dnia 08:10, 29 gru 2006
Strukturalny, kompilowany język programowania dla ośmiobitowych Atari. Dzieło programisty OSS nazwiskiem Clinton Parker, sprzedawane od 1983 roku pod marką Action Computer Services. Właścicielem praw autorskich było kolejno OSS, ICD, a w końcu FTe.
Action! łączy w sobie cechy C i Pascala, czyli wygodę programowania z całkiem szybkim kodem wynikowym. Składnia Action! była wzorowana na języku ALGOL 68. Niemałą zaletą Action! jest dość wygodny, pełnoekranowy edytor. W języku tym napisano sporo programów użytkowych (np. DiskRx) i gier, np. Problem Jasia.
Oryginalna wersja języka występuje na cartridge'u, ale krążyła też niemal w pełni funkcjonalna wersja dyskowa. Ciekawostką jest spora biblioteka procedur krążąca w sieci, dzięki czemu Action! stał się bardzo rozbudowanym i elastycznym narzędziem pracy dla programistów.
Znane osobistości używające Action! to: Jakub Husak, Gizmo Magic.
Spis treści |
Typy danych
W Action! występują trzy typy danych numerycznych: BYTE, CARD i INT. BYTE to ośmiobitowa liczba całkowita bez znaku, CARD - 16-bitowa liczba całkowita bez znaku, INT - 16-bitowa liczba całkowita ze znakiem. Pozostałe typy to CHAR, ARRAY, POINTER i typy deklarowane przez użytkownika, np.
TYPE CORD=[CARD x,y] CORD point point.x=42 point.y=23
Lista słów kluczowych
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
Cechy języka
Program pisze się w edytorze, kompiluje natomiast w tzw. monitorze, który ma tez pewne funkcje ułatwiające debugging. Edytor jest pełnoekranowy, pole edycyjne można podzielić na dwa niezależne "okna". Możliwości edytora obejmują kopiowanie bloków, wyszukiwanie i zastępowanie tekstów itp.
Kompilator Action! jest jednoprzebiegowy, kod źrodłowy jest kompilowany z pamięci, co dodatnio wpływa na szybkość kompilatora, ujemnie natomiast na maksymalną wielkość programu.
Wszystkie obliczenia dokonywane są w trybie liczb całkowitych ze znakiem. Język nie przewiduje wstawek w asemblerzez w postaci mnemonikół, podprogramy maszynowe musza być załączane w postaci tablicy wypełnionych stałymi szesnastkowymi.
Z braku dynamicznego zarządzania pamięcią w Action! niemożliwa jest rekurencja.
Przykład kodu
Przykładowa procedura na sito Eratostenesa napisana w Action!:
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 ; only one timer needed COUNT=0 ; init count FOR I=0 TO 8190 ; and flags DO FLAGS(I)='T OD FOR I=0 TO 8190 ; and flags DO IF FLAGS(I)='T THEN PRIME=I+I+3 K=I+PRIME WHILE K<=8190 DO FLAGS(K)='F 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
Linki zewnętrzne
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.