MobileBASIC

MobileBASIC
Класс языка язык программирования
Тип исполнения Интерпретируемый
Появился в 2003
Автор David J Firth
Расширение файлов .bas, .lis
Выпуск
  • Phone Edition: 1.9.1 by kiriman & dzanis (последняя официальная - 1.92);
  • Desktop Edition: 2.3;
  • Android Edition: 3.1
  • LITE for iOS : 1.2
Испытал влияние Basic
Логотип Викисклада Медиафайлы на Викискладе

MobileBASIC — интерпретируемый язык программирования, используемый для мобильных телефонов с поддержкой MIDP-2.0. Позволяет вам легко писать программы непосредственно на вашем телефоне или планшете с Андроидом. Существует в 4 реализациях: как среда программирования для компьютера, как обычный мидлет для мобильных устройств, как приложение для устройств под управлением Android и iOS.

Появился язык в 2002 году благодаря программисту Дэвиду Фёрту (англ. David J Firth), как легкое и удобное средство разработки программного обеспечения для мобильных телефонов.

Официальные версии нумеруются следующим образом:

  • 1.x - версии для мобильных телефонов (Mobile BASIC for J2ME Phone Edition), а также версии для iPad и iPhone (Mobile BASIC LITE for iOS)
  • 2.x - версии для компьютеров (Mobile BASIC for J2ME Desktop Edition)
  • 3.x - версии для устройств на базе Android (Mobile BASIC for Android)

MobileBASIC Phone Edition

MobileBASIC 1.8.6.1

Синтаксис мобильной версии очень похож на старые версии бейсика. Во-первых, используется обязательная нумерация строк, во вторых не используются пользовательские процедуры и функции (вместо них используется команда GOSUB). Вот пример кода на MobileBASIC:

10 INPUT "Введите своё имя", NAME$
20 PRINT "Привет, " + NAME$ + "!"
30 IF NOT INKEY(0) THEN GOTO 30
40 END

Из строки 30 видно, что в этом языке хорошо продумана работа с клавиатурой. А вот с другими важными телефонными особенностями: формами и канвасом все обстоит гораздо хуже. Начнем с того, что нельзя уместить больше одного элемента управления на форму. Во-вторых, на канвасе и в формах на большинстве телефонов используются разные кодировки. И то, что на канвасе будет выглядеть натурально, «Привет, мир!», на форме может превратиться в кракозябры (в последних версиях исправлено). Также из-за двойной интерпретации (кода программы интерпретатором на Java и самого интерпретатора через Java-машину) код выполняется относительно медленно. Тем не менее, этот язык является довольно простым в освоении и хорошим средством ознакомления с основами программирования. Начиная с версии 1.8.4 развитием проекта стал заниматься Mumey, вследствие чего программа обзавелась дружественным интерфейсом, несколькими новыми командами и возможностью создавать полноценные Java-приложения, работающие без оболочки программатора (эта возможность была там и раньше, для этой цели нужно было запаковать готовый bas-файл (Autorun.bas) и ресурсы в архив с самим программатором). Последней актуальной версией являлась 1.8.6.2 by aNNiMON. Сам же Дэвид Фёрт, в декабре 2010 года выпустил новую версию, 1.9, но все изменения заключались только в добавлении функции POWER для дробных чисел, в остальном же все осталось как в версии 1.8, поэтому разработчики продолжают использовать модификации[1]. Если версия 1.9 была выпущена вместе с исходными кодами, то 1.91 уже снова закрыта и продается по цене £4.99. Т.к. исходники модификации Mumey утеряны, в 2013 году разработчик под ником kiriman с помощью декомпилятора и официальных сорцов успешно восстановил их. Таким образом бейсик переродился в версию 1.9.1 by kiriman & dzanis (недоступная ссылка). В ней исправлены многочисленные баги, такие как сборка в мидлет и открытие файлов lis, bas на телефонах Nokia, а также добавлено 5 новых команд, самая важная из которых REPAINT. Увеличена скорость интерпретации за счет изменения формата bas(прошлые версии бейсика его не поддерживают) и того, что переписали работу с переменными типа Float. Ранее числа с плавающей точкой эмулировались - это было слишком медленно. Что касается хранения кода, то MobileBASIC может хранить исходные коды программ в двух вариантах - как обычный текстовый файл, либо как байт-код. В первом случае файлу принято давать расширение .lis (от команды бейсика LIST), во втором - .bas.

Структура BAS-файла и обфускация кода

Возможность свободной распаковки jar-архива и открытия любого модуля программы с помощью самого MobileBASIC настораживает программистов. Ведь тогда кто угодно может посмотреть и изменить код, причем не прикладывая особых усилий. В начале 2010 года появился обфускатор BAS-файлов. Его работа заключалась в затирании имен переменных, используемых в программе. Это стало толчком к изучению структуры байт-кода. Спустя некоторое время обфускатор перешел на новый уровень - теперь он "портит" файл так, что средствами MobileBASIC его не открыть, в то же время в собранном виде код абсолютно рабочий. На сегодняшний день структура раскрыта полностью, и уже используется - сделан декомпилятор BAS=>LIS и компилятор LIS=>BAS, возможно еще одно применение - интерпретатор, который понимает больше функций.

История версий

Версия Изменения
1.8.0 Текстовый интерфейс, нет возможности работы с ФС
1.8.3 Добавлена возможность работы с ФС, добавлена возможность работы в полноэкранном режиме
1.8.4, 1.8.5, 1.8.6 Добавлен удобный интерфейс, возможность создания мидлета без ручной запаковки
1.8.6 for Miles Исправлена работа на телефонах Sony Ericsson 5 поколения
1.8.6.1 Исправлена работа с формами на телефонах Sony Ericsson 5 поколения
1.8.6.2 Исправлена работа на телефонах Sony Ericsson 5 поколения
1.9 Официальная версия от 28 декабря 2010. Стал доступен исходный код. Незначительные изменения от 1.8.
1.91 Официальная версия от 6 ноября 2011. Закрыт исходный код. Незначительные изменения.
1.9.1 by kiriman & dzanis[2] Исправлены баги.

Добавлены команды: REPAINT; RAND(MIN%,MAX%); ALPHAGEL GEL$,A%; COLORALPHAGEL GEL$,A%,R%,G%,B%; SENDSMS(NUMBER$,TEXT$)

1.9.1 by vlavolk&garfild63[3] Изменения пользователя vlavolk:

1) Добавлены новые функции: sound, soundinfo, soundset, drawpolygon, fillpolygon, shot, gelzoom, gelrot, getcolor, pointpres, pointdrag, pointhold, pointx, pointy, lower, upper, indexof, vibr.

2) Исправлены баги с print'ом и menuitem'ом в runtime'е.

3) Исправлены баги с получением дисков в readdir$'е и с парсированием из string во float.

4) Теперь некоторые функции (readdir$, val, input) кидают бейсиковские ошибки.

5) Теперь гели можно загружать и из Интернета!

6) В playtone добавлен новый аргумент - громкость!

7) Исправлен баг с rand'ом.


Изменения пользователя garfild63:

1) Переименовал lower и upper в lower$ и upper$, т.к. они возвращают строковые переменные.

2) Переименовал pointpres в pointpress, т.к. в английском языке нет слова pres!

3) Исправил баг с getcolor'ом и добавил ему сокращение(gc).

4) Принцип действия shot изменён: теперь он сохраняет не весь экран, а только часть экрана.

1.9.1.1 by garfild63[4] 1) Добавлены 3 новые функции - inputtext, printtext и btsh$. Информацию о них читайте в справке (в файлах Files.txt и Bluetooth.txt в архиве Help.zip).

2) Добавлена работа с Bluetooth (всё ещё работает нестабильно, имеются баги).

3) Пофикшен баг, при котором при отрисовке многоугольника, закрашенного цветом, дополнительно отрисовывалась горизонтальная линия, разделяющая его пополам.

1.9.1.2 by garfild63[5] 1) Пофикшена функция btsh$ - теперь BlueTooth можно использовать без багов.

2) Добавлена работа с акселерометром.

3) Добавлены функции IMEI$(0) и GELMIRROR(GEL$).

4) Исправлены баги тригонометрических функций при градусных вычислениях (теперь если вы напишете "10 DEG : PRINT SIN(90) : REPAINT", будет выведено "1.0")

5) Пофикшена работа функции FILLPOLYGON.

6) Добавлена экранная клавиатура. Для того, чтобы её включить, необходимо в манифесте заменить "On-Screen-Keypad: no" на "On-Screen-Keypad: yes".

7.) Исправлена и обновлена справка. В архиве Help.zip лежит программа Program1.pas, которая в PascalABC'е собирает текстовые файлы в бинарник.

MobileBASIC Desktop Edition

MobileBASIC 2.2 под Ubuntu 10.10 Maverick

Вторым средством разработки приложений для телефонов является компьютерная среда разработки MobileBASIC. Но код, написанный на нем сильно отличается от мобильной версии языка. Теперь он больше напоминает Quick Basic. Номера строк превратились в необязательные метки, программа легко делится на модули. Главной является процедура Main (Sub Main()). Но он все равно остается интерпретируемым языком, пусть и более быстрым в исполнении. Добавлена работа с картами и тайлами, для которых есть встроенные редакторы. Вообще, обе вариации среды разработки неплохо заточены именно под создание игр, о чем свидетельствует возможность работы с графическими элементами (гелями) и спрайтами.

Среда разработки включает в себя помимо редактора кода с подсветкой синтаксиса еще несколько специализированных редакторов: редактор тайлов (Tile Editor), редактор карт (Map Editor), средство изменения размеров изображения (Image Resize), средство подбора цвета (Color Chooser), а также встроенный эмулятор. Программа написана на Java SE, что позволяет её запускать на любой операционной системе, на которой есть виртуальная Java-машина.

Последней версией является 2.3 от 8 ноября 2011[6].

MobileBASIC for Android

MobileBASIC for Android 1.0

В июне 2011 года в свет вышла очередная версия среды разработки. В этот раз - для платформы Android. Синтаксис сильно похож на синтаксис компьютерной версии, есть поддержка многомерных массивов, пользовательских процедур и функций. В программу включена удобная справка по языку и более 100 примеров использования различных возможностей языка[7]. Существует две версии среды разработки: бесплатная (минусы - показ рекламы[8]) и полная, доступная по цене £2.99. Последняя версия - 4.9.11.

MobileBASIC LITE for iOS

MobileBASIC LITE for iOS 1.2

В 2012 году MobileBASIC распространился еще на одну платформу - iOS. Новая версия получила название MobileBASIC LITE. В неё включены многие функции, специфичные для устройств на базе iOS, такие как определение местоположения, работа с акселерометром и гироскопом, поддержка встроенных карт, работа с базами данных и многое другое [9]. В среду разработки встроен подробный справочник по языку с примерами.

JsMobileBasic

JsMobileBasic - JavaScript библиотека, реализующая механики MobileBASIC от сообщества MobileBasicPRO. Внутри использует HTML5 Canvas, но есть реализации на SDL2. Позже были выпущены реализации библиотеки для языков C++, Node.js и Python.

Обновлено: 25 января 2018 года исходники JsMobileBasic были открыты[10] и теперь их может просмотреть любой желающий [11]. Другие исходники проектов сообщества MobileBasicPRO можно посмотреть в их GitHub репозитории[12]

Примечания

  1. MobileBASIC 1.91 Homepage. Дата обращения: 29 сентября 2011. Архивировано из оригинала 27 сентября 2011 года.
  2. Mobile Basic 1.9.1 by kiriman & dzanis | Annimon.com. annimon.com. Дата обращения: 11 апреля 2020. Архивировано 15 января 2022 года.
  3. MobileBasic 1.9.1 by vlavolk&garfild63 | Annimon.com. annimon.com. Дата обращения: 11 апреля 2020.
  4. MobileBASIC 1.9.1.1 by garfild63 | Waper. waper.ru. Дата обращения: 11 апреля 2020. (недоступная ссылка)
  5. MobileBASIC 1.9.1.2 by garfild63 | Waper. waper.ru. Дата обращения: 11 апреля 2020. (недоступная ссылка)
  6. MobileBASIC Desktop Edition Homepage. Дата обращения: 29 сентября 2011. Архивировано из оригинала 27 сентября 2011 года.
  7. MobileBASIC for Android Homepage. Дата обращения: 29 сентября 2011. Архивировано из оригинала 27 сентября 2011 года.
  8. MobileBASIC for Android 3.1 на Android Market. Дата обращения: 11 декабря 2011. Архивировано 16 августа 2011 года.
  9. MobileBASIC LITE на iTunes. Дата обращения: 29 сентября 2017. Архивировано 28 марта 2017 года.
  10. JsMobileBasic (JsMB) открывает исходники! | ВКонтакте. m.vk.com. Дата обращения: 10 апреля 2020.
  11. JsMB | The main JsMobileBasic repository | Github. — 2018-03-13. Архивировано 27 ноября 2020 года.
  12. MobileBasicPRO | Github (англ.). GitHub. Дата обращения: 10 апреля 2020.

См. также

Ссылки

  • http://www.mobilebasic.com/ - официальный сайт проекта, подробная справка по языку (на английском языке) (недоступная ссылка)
  • http://ide.mbteam.ru/ - MobileBASIC IDE (Online, Offline)