Action!: Różnice pomiędzy wersjami
Nie podano opisu zmian |
przepisałem z en.wiki |
||
| Linia 1: | Linia 1: | ||
{{grafr|action.gif}} | {{grafr|action.gif}} | ||
Strukturalny, kompilowany język programowania dla ośmiobitowych Atari. Dzieło | 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 29 gru 2006, 10:10
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.
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.
