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-поверхности)
См. также
[править | править код]Источники
[править | править код]- Amiga Basic, автор Paul Fellows, издательство Dabs Press, декабрь 1992, ISBN 978-1-870336-87-1
- Amiga Basic, автор Henning Horst Rainer, издательство Jackson Libri, 1989, ISBN 978-88-7056-966-7
- Amiga Basic Inside and Out, авторы Christian Spanik и Hannes Rugheimer издательство Abacus Books (Abacus Software Inc.), январь 1988, ISBN 978-0-916439-87-3
- Elementary Amiga BASIC, автор C. Regena, издательство Compute! (Compute! Publications Inc.,U.S.), апрель 1987, ISBN 978-0-87455-041-2
- Advanced Amiga Basic, авторы Tom R. Halfhill и Charles Brannon, издательство Compute! (Compute Library Selection) июль 1986, ISBN 978-0-87455-045-0
Ссылки
[править | править код]- COMPUTE!, August 1987, pg 89 Fractal Mountains For Amiga – Исходные коды генератора фрактальных гор.
- COMPUTE!, October 1987, pg 71 A Button Command – Исходные коды процедур отрисовки кнопок и переключателей.
- COMPUTE!, November 1987, pg 86 Masked Input For The Amiga – Исходные коды процедуры поля для ввода скрытых данных (паролей и т.п.).
- Amiga Coding! – Много информации про AmigaBASIC.
- AmigaBASIC manual – Руководство пользователя.