AmigaBASIC (AmigaBASIC)

Перейти к навигации Перейти к поиску
AmigaBASIC
Тип Microsoft BASIC
Разработчик Microsoft
Операционная система AmigaOS с 1.1 по 1.3
Аппаратные платформы Amiga / m68k
Последняя версия 1.2

AmigaBASIC — диалект языка программирования BASIC для ПК Amiga разработанный и написанный компанией Microsoft. AmigaBASIC поставлялся с ранними версиями AmigaOS с 1.1 по 1.3. Он сменил MetaComCo ABasic который был включён в AmigaOS 1.0 и 1.1, и сам был заменён на ARexx (диалект языка программирования REXX от компании IBM), начиная с AmigaOS 2.0 и старше.

Особенности реализации

[править | править код]

AmigaBASIC стал одной из первых реализаций интерпретатора Бейсик в котором разработчики отказались от поддержки нумерации строк. Это было сделано для поддержки концепции структурного программирования, также реализованной компанией Microsoft в MacBASIC. Пользователи привыкшие к устоявшемуся синтаксису языка Бейсик в дартмутском диалекте не спешили переходить на новые реализации, а поглощение существующей кодовой базы ПО на языке Бейсик новыми реализациями от Microsoft было затруднительным из-за несовместимости. Также, было очевидно что AmigaBASIC от Microsoft практически не позволяет использовать обширные возможности платформы Amiga (по сравнению, например, с AMOS). Программы на AmigaBASIC могут получить доступ к системным библиотекам AmigaOS, однако работа с ними оказывается настолько громоздкой и подверженной ошибкам, что практической ценности эта возможность не представляет.

Ограничения и проблемы

[править | править код]

AmigaBASIC считался сырым программным продуктом, но прежде всего слишком медленным. Производительность алгоритмов описанных на AmigaBASIC была оценочно в 1000 раз медленней, чем при реализации на C++ или ассемблере. Это косвенно подтверждалось тем, что простой холостой цикл на 1000 прогонов выполнялся AmigaBASIC за 800 мс, в то время как Commodore Basic на Commodore 64 (имеющем десятикратно менее производительный процессор по сравнению с Amiga) справлялся с этой задачей за 1000 мс. При этом, AmigaBASIC 1.0 предлагал пользователю от 10 до 25 Кб ОЗУ для хранения программ, что значительно меньше чем даже в базовом Commodore 64, не говоря уже о младшей Amiga 1000 (имевшей 256 Кб в базовой поставке и 512 Кб в расширенной).

Когда в продаже появились ПК Amiga с ОЗУ 1Мб и более, выяснилось что AmigaBASIC ограничен 24-битным адресным пространством, что соответствует 16 Мб ОЗУ и этот факт связан с его портированием на Amiga с Apple Macintosh. Программы на AmigaBASIC вышедшие из-за своего размера за этот искусственный предел просто не выполнялись.

Кроме того, продажи AmigaBASIC пострадали из-за очень плохой репутации языка Бейсик (в академических кругах). Поэтому большинство пользователей Amiga быстро переходили на C++, ассемблер или Модула-2, поскольку уже существовали производительные пакеты компиляторов для этих языков и только таким образом можно было использовать все возможности предоставляемые платформой. Сторонние производители несколько раз пытались обновить поддержку для языка Бейсик на Amiga путём перехода от интерпретатора к компилятору (например, HiSoft Basic Compiler, GFA-BASIC, MaxonBASIC), но с переменным успехом. Однако окончательным «смертным приговором» для AmigaBASIC стал спор о стоимости лицензии возникший когда компания Microsoft выставила счета корпорации Commodore. Поэтому Commodore отказались от дальнейших поставок AmigaBASIC пользователям.

Несмотря на относительно широкое распространение, этот диалект Бейсик никогда не играл коммерческой роли. Тем не менее, AmigaBASIC стал символом того времени, когда исходные коды программ и небольших игр для Amiga печатались в популярных периодических изданиях и газетах. Старые, возможно, любимые программы на AmigaBASIC проще всего переносить на QBasic или FreeBASIC, это требует небольших доработок.

Переход на ACE

[править | править код]

Попытки создания компилятора для Бейсик совместимого с AmigaBASIC завершились с появлением компилятора ACE. Этот бесплатный компилятор был создан австралийцем Дэвидом Бенном из города Лонсестон на острове Тасмания и может создавать исполняемые файлы используя инструментарий a68k (ассемблер) и Blink (компоновщик). Таким образом, стало возможным написание программ с синтаксисом AmigaBASIC, способных использовать графический интерфейс Intuition и превосходящих по производительности оригинальную реализацию Microsoft. Последняя версия 2.4 (17 сентября 1996 г.) доступна для загрузки из хранилища Aminet.

Примеры программ

[править | править код]
' Hello World for AmigaBASIC
PRINT "Hello world!"

Программист может получить больше используя следующий синтаксис:

SAY TRANSLATE$ ("HELLO WORLD")

В этом случае Amiga не только напечатает текст на экране, но и произнесёт "Hello world" используя речевой синтезатор AmigaOS.

dr=3.14/180

FOR r=30 TO 330 STEP 2
FOR t=0 TO 355 STEP 5
x=r*COS(t*dr)*.5
y=r*SIN(r*dr)*.3
z=r*SIN(t*dr)*.5
xp=xp+(COS(15*dr)*z)
yp=yp+(SIN(15*dr)*z)
xp=xp+320
yp=50-yp
PSET (xp,yp)
NEXT t
NEXT r

Пример инженерной графики AmigaBASIC (построение 3d-поверхности)