Программируем на КПК: обзор программ

 | 20.29

Мой Компьютер, №9, 25.02.2008

Зачем писать программы на КПК, если это можно делать с большим успехом на настольном компьютере или ноутбуке? Очень просто: хороший ноутбук дорого стоит и по карману далеко не всем (почему нет смысла покупать плохой, думаю, и так ясно — вспомним хотя бы английскую пословицу: «Мы не настолько богаты, чтобы покупать дешевые вещи»). Остается десктоп — он стоит куда дешевле ноутбука той же конфигурации. Но он лишает нас мобильности. Свободы перемещения, другими словами. Той самой свободы, которая является одной из основных идей, провозглашаемых платформой Pocket PC и ради которой мы готовы жертвовать производительностью — основной характеристикой компьютера. Так почему бы не использовать мобильность в программировании? Это первая и основная причина, почему написание программ на PDA имеет смысл.

Практически этот смысл выглядит, например, как написание домашней работы по информатике в автобусе по дороге в школу. Или воплощение внезапно озарившей голову идеи, как можно улучшить qsort, прямо в вагоне метро. Можно придумать сколько угодно примеров, но все они демонстрируют одно: возможность не отрываться от любимого дела из-за перемещений в пространстве. Вторая причина — удовольствие, получаемое от программирования, усиливается по мере увеличения сложности задачи (да-да, я не говорил, что все будет просто :)). Третья причина… да попросту нужно же чем-то занять время! Я, например, не могу долго читать, играть, смотреть видео на покете. Во-первых, глаза утомляются от длительного неморгания, во-вторых, просто надоедает. Тогда на помощь приходят ОНИ. Нет, не героические стоматологи из рекламы, а средства программирования на PDA, описанные ниже. Ну и, конечно же, запуск программы на наладоннике — прекрасная возможность поупражняться в шаманстве с использованием ямайского бубна (необходимого атрибута при программировании на PGCC, к примеру; а уж про ARMASM я вообще молчу — он без бубна в руках даже не скачивается).

Кстати, если вы напишете хотя бы по helloworld’у в каждом из средств разработки, означенном ниже, то получите два сертификата: «Шаман-2008» и «Мазохист года» :).

Теперь, когда вы всей душой прониклись идеей необходимости программирования на КПК, можно продолжать.

 

Небольшой глоссарий

КПК aka карманник aka карманец — карманный персональный компьютер. Небольшой девайс, оснащенный, как правило, 64 или 128 Мб оперативной памяти, процессором Intel XScale с частотой до 624 МГц и сенсорным дисплеем с диагональю 3–3.5 дюйма. Управляется операционной системой Windows Mobile (программирование под которую, точнее, на которой и рассматривается в этой статье), PalmOS или (редко, но бывает), а также специальными сборками Linux под ARM-архитектуру (наиболее известная и популярная — FamiliarLinux).

PDA — Pocket Digital Assistant. Синоним КПК.

Windows Mobile — компактная операционная система на базе Windows CE, установлена на многие КПК, коммуникаторы и смартфоны.

PalmOS (в январе 2007 года переименована в GarnetOS) — операционная система для наладонных компьютеров и коммуникаторов от компании Palm, Inc. Конкурент Windows Mobile.

ARM-архитектура — архитектура 32-разрядных RISC-процессоров, специально ориентированная на использование в мобильных устройствах. Наиболее популярное на данный момент в Pocket PC семейство процессоров Intel Xscale основано на доработанной архитектуре ARM9.

RISC (англ. Reduced Instruction Set Computing) — вычисления с сокращенным набором команд. Это философия проектирования процессоров, которая во главу угла ставит следующий принцип: более компактные и простые инструкции выполняются быстрее. Простая архитектура позволяет как удешевить процессор, так и поднять тактовую частоту.

Pocket PC aka PPC aka покет — 1) стандарт от Microsoft, устанавливающий ряд требований к мобильному устройству, среди которых работа под управлением операционной системы на базе Windows CE, архитектура процессора — ARM, MIPS или SH3, наличие сенсорного экрана; 2) устройство, соответствующее этому стандарту.

ББ — «Большой Брат», на сленге владельцев мобильных устройств — настольный компьютер.

Runtime aka рантайм — тут: библиотека, необходимая для выполнения программы, написанной с помощью некоторых средств разработок. К примеру, NSBasic.

Microsoft .NET — программная технология для создания как обычных программ, так и web-приложений (в качестве платформы для разработок впервые предложена фирмой Microsoft). Для выполнения программ использует свой компонент .NET Framework, которым является неким подобием рантаймов, только более сложно устроенным.

TkInter — библиотека базовых элементов графического интерфейса, поставляемая вместе с Питоном.

Helloworld — программа, с помощью которой, как правило, знакомят новичков с языком программирования, и с которой начинается почти любой самоучитель по оным. Не делает ничего, кроме вывода надписи «Hello, world!».

 

Скрипты

nScriptm

Страница программы: http://s-k.al.ru/nscript.html.

Оригинальная версия особого интереса не представляет, для наших шаловливых ручек больше подойдет модифицированная от S-K, называющаяся nScriptm. Синтаксис похож на С, но намного проще. Среди основных функций: работа с переменными (поддерживаются два типа: целое и строка), арифметические операции (в том числе и с плавающей точкой), 18 тригонометрических функций, разбор и другие операции со строками, массивы, условия, циклы из С, создание функций, доступ к функциям и переменным из другого скрипта, операции с системным временем и датой, проигрывание звуковых файлов, выведение сообщений и стандартных диалогов открытия/сохранения/выбора папки, отключение питания, работа с файловой системой, работа с реестром, работа с хешами, преобразование строк из одной кодировки в другую, работы с базами данных, управление окнами, эмуляция нажатий стилусом, запуск программ, работа с сокетами, работа с буфером обмена и еще некоторые вещи.

Распространяется совершенно бесплатно.

Не знаю как модифицированная версия, а исходная доступна в исходниках. Вместе с интерпретатором поставляется хороший мануал на русском и английском языках, а также довольно много (20–25) примеров.

Обратите внимание, что автор программы честно предупреждает: «Скачивая программу, вы берете на себя всю возможную ответственность за последствия ее применения!»

 

MortScript

Страница программы: http://www.hpc.ru/soft/software.phtml?id=7813

(Скриншота нет по причине полного отсутствия интерфейса 🙂 )

Возможности MortScript несколько менее обширны — запуск, активация, минимизация, завершение и прерывание программ, функции ожидания, таймер, ожидание события, эмуляция нажатий кнопок или виртуальной клавиатуры, эмуляция нажатий стилусом.

Файловые операции — копирование, перемещение, удаление, работа с директориями, чтение и запись реестра.

Условия, циклы, подпрограммы и функции, системные настройки — громкость, яркость экрана и т.п., переменные и выражения.

Лично мне понравился больше, чем nScriptm — в силу большей простоты в использовании и, как мне показалось, большей скорости работы. Также абсолютно бесплатен и поставляется с мануалом на английском и немецком языках (впрочем, автор «не откажется от маленькой (или большой :)) премии»).

 

SymbolicTools PocketConsole

Распространяется в комплекте с Pocket C# и PGCC, без них его ставить практически нет смысла. Если все же хотите поэкспериментировать, сначала установите Microsoft CMD с http://www.hpc.ru/soft/download.phtml?id=20087, а потом уже и PocketConsole с http://wiki.pocketz.ru/wiki/PocketConsole.

Командная строка (аналог cmd.exe из настольной Винды), понимает скрипты с расширением .bat, имеющие синтаксическое сходство с настоящими batch-файлами.

В принципе, полноценным аналогом и/или заменителем nScriptm’a или mortscripta она быть не может, но необходима для работы консольных приложений, написанных, например, в Pocket C# или PGCC.

 

PythonCE

Скачать: http://sourceforge.net/project/showfiles.php?group_id=104228

Примеры кода (на английском языке):

http://aspn.activestate.com/ASPN/Python/Cookbook

Туториал (также англоязычный): http://docs.python.org/tut/tut.html

Итак, многими любимый и жалуемый Питон прополз и на КПК. Немного о самом языке. Он портирован на многие платформы, в том числе Windows (настольный и CE), все варианты Unix, MacOS, MacOS X, OS/2, PalmOS, Symbian. Более того, существуют специальные версии Питона, обеспечивающие его интеграцию с виртуальной машиной Java и платформой .NET. Язык поддерживает концепцию объектно-ориентированного программирования, имеет очень строгий синтаксис (впрочем, последствиями этой строгости являются внятность и читабельность кода). Его используют такие организации, как Google и NASA. Развивается он давно — появился в 1990 году, с тех пор для него выпущено много различных библиотек.

Лично у меня отношения с этим языком не сложились, поэтому сил и особого желания разбираться в его реализации на PPC не было, к тому же в то время я «баловался» с Pocket C#, в котором не надо особо париться по поводу поиска документации на TkInter и т.п. Вывод: ИМХО, не очень — из-за моей нелюбви к языку и слабоватого быстродействия, но уверен, ярые фанаты «летно-цирковых» экспериментов оценят этот порт по достоинству.

 

Не скрипты

PocketDOS + TurboPascal (и не только).

Официальный сайт программы PocketDOS http://www.pocketdos.com (возьмите там плагины и файл, необходимый для поддержки русских шрифтов в DOS-приложениях).

Эта связка — мое любимое средство программирования на Pocket PC. К тому же бесплатное: разработчики PocketDOS, очевидно, очень добрые люди, и единственное ограничение в триал-версии — приходится каждые 5 минут рассматривать 30-секундную заставку с логотипом программы.

Поскольку пишу я в CEdit’e и компилирую консольным tpc, меня это почти не напрягает, тем более что эмулятор действительно хорош. Подключив плагин для эмуляции 486DX (по умолчанию — 286), можно даже играться в старые DOS’овские игрушки типа UFO, Dune 2, Civilization. Вывод: однозначно, must have. На закуску: загляните на vetusware.com/

tree.php, там куча старого софта, в том числе Turbo C++, различные версии Винды, много Бейсиков, игрушек разных и т.п.

 

Pocket C#

(См. статью Lenivetc’a «Плюсы для карманника» в номере 42 (369) от 19.10.2005.)

Скачать: http://www.hpc.ru/soft/software.phtml?id=7541, в комплекте компилятор + IDE.

По моему мнению, самая юзабельная штука из не-скриптов. Требует Compact Framework 1.0 SP3!

С# — язык сам по себе язык довольно-таки простой для освоения. Pascal, конечно, «человечнее», но его на покете не будет, увы, никогда (имеется в виду компилятор или интерпретатор, работающий непосредственно под Windows Mobile; запуск же, к примеру, TurboPascal возможен и сейчас с помощью эмулятора MS DOS’a). По крайней мере, пока его не оптимизируют под ARM-архитектуру и не разберутся с лицензиями :).

Но вернемся к нашим баранам. Как уже было сказано, данное средство (имеется в виду компилятор C#, а не IDE) довольно-таки удобно в использовании. IDE имеет редактор с подсветкой синтаксиса, представление файлов проекта в виде дерева, да и багов замечено при работе почти не было (исключения — невозможность, или, скорее, очень редкая возможность запуска программ из самой IDE, а также неудобства при редактировании текста во встроенном редакторе). Но при всех своих достоинствах этот инструмент мне не понравился.

Не по-человечески как-то оно устроено, так что для редактирования исходников я юзал CEdit (см. конец статьи). Кстати, маленький хинт: если вы не хотите компилировать программу из IDE, то установите компилятор ПОСЛЕ установки IDE (или вообще ее не устанавливайте). Тогда в реестре пропишется ассоциация файлов проекта С# (.csant) с компилятором, а не с IDE, и вы сможете компилировать программу по одному клику на файл проекта в вашем файл-менеджере.

 

PocketGCC

Скачать: http://www.hpc.ru/soft/software.phtml?id=5600

Скриншота нет, т.к. состоит из нескольких консольных приложений.

Как бы это странно ни звучало — компилятор С++, работающий прямо на наладоннике (почему-то вспоминается фраза «Я простой бывший Великий Инквизитор» из «Понедельник начинается в субботу» Стругацких — столь же жуткие вещи произносятся столь же обыденным тоном :)). А теперь по теме.

Этот продукт является в некоторой мере противоположностью PC#. В последнем легкость программирования сопоставима с Delphi’йской, но скорость выполнения программы достаточно низкая, по причине использования .NET Framework’a. Тут же, наоборот, программа, по сравнению с C#, просто летает, но IDE нету, и все приходится делать самому — и файлики разные ручками создавать, и компилятор с нужными ключиками запускать. Впрочем, где наша не пропадала, так что как минимум, повозиться с PGCC стоит. В качестве оффтопа: загляните на http://forum.pocketz.ru/index.php?showtopic=2222. Там GCC, запускающийся на ББ, но компилирующий под PPC. Гораздо юзабельнее и полезнее.

PPL (Pocket Programming Language)

Pocket Programming Language (PPL) — это обьектно-ориентированный язык программирования, позволяющий разрабатывать программное обеспечение для смартфонов и КПК на базе Windows Mobile. Профессиональные разработчики и любители смогут использовать этот продукт для создания мобильного ПО почти любой степени сложности, вплоть до игр и приложений с графическим интерфейсом.

В версии 1.30 разработчики обещают более производительный загрузчик откомпилированных файлов (.PPC), потребляющий минимум ресурсов памяти, доработанный интерфейс для работы с графикой GameAPI, поддержку формата PNG, поддержку СУБД SQLite 3 и звуковых библиотек FMOD и BASS, новую библиотеку Phone API Library для предоставления доступа к уникальным функциям смартфонов, усовершенствованные механизмы управления ресурсами памяти.

Начиная с ранних версий, есть визуальный редактор форм. Я тестировал версию 1.03, неизвестно откуда взявшуюся в файловых закромах моего винчестера, т.к. в данное время сайт разработчика лежит, и насладиться прелестями 1.30 я не смог. Вывод — действительно, неплохо. ИМХО, почти must have.

 

PocketZeus

Скачать: http://www.hpc.ru/soft/software.phtml?id=13289.

Синтаксис языка похож на Basic. Среди возможностей — работа с графикой, звуковыми эффектами, математические функции, операции с файлами, неплохие инструменты для дебага программ. На сайте разработчика доступно некоторое количество библиотек и подсказки. Хотя на hpc.ru и написано, что программа бесплатная, имеется в виду урезанная версия (Lite).

Полная же (с возможностью создания exe-шников и другими вкусными функциями, увы, недоступными в урезанной, распространяемой как freeware) стоит $34.98. Если вы готовы выложить такую сумму за вышеописанный функционал — пожалуйте на http://www.krmicros.com, официальный сайт разработчика. Лично у меня после тестирования lite-версии желания платить не возникло — все-таки не хватает прозрачности и удобства в использовании.

 

Вход в уголок маньяка

(Содержание его, ИМХО, мало поможет в работе — так, чисто для удовлетворения теоретического интересу.)

vkACL.ewe

Скачать: http://www.hpc.ru/soft/data/15442/vkACLp.zip

Примечание: сначала надо установить Ewe JVM — это программа-интерпретатор языка Java.

Среда разработки программ на языке ACL — Advanced Command Language. Вместе с интерпретатором поставляются мануалы, содержащие описание возможностей среды и команд языка на английском и русском языках, а также набор готовых программ. Возможности языка включают операции с файлами, графикой, вычисления и многое другое, причем все программируется очень просто. Есть много готовых модулей, в том числе научной графики. Простые операции могут быть выполнены очень быстро в режиме командной строки. А теперь, так сказать, недокументированные возможности :). Данный интерпретатор можно без преувеличения назвать выдающимся тормозом современности. На моей машинке (iPAQ hx2750, 624-МГц процессор, 128 Мб RAM) скорость выполнения программ была сопоставима со скоростью передвижения хромой улитки, так что, ИМХО, — не юзабельно абсолютно.

И для супер-мега извращенцев — Ассемблер на покете! Да, это не шутка и не кошмарный сон Фредди Крюгера :). Встречайте — MSARMASM. (Не MARASM :), хотя ход мыслей верный.)

Неплохая статья на эту тему находится по адресу http://wasm.ru/article.php?article=pocketpc.

Глубину и изощренность извращения подчеркивает и гармонично дополняет качество документации, поставляемой вместе с Ассемблером. Кое-что можно найти в MSDN, кое-что есть в документации к eVC.

В общем, если вам еще хочется иметь это чудо, прошу: http://wasm.ru/pub/11/files/asm_ce.zip (все необходимые файлы выдраны из настольной eVC). Однако Минздрав предупреждает об опасности данного программного продукта для вашего мозга :).

 

Выход из уголка маньяка

З.Ы. Из редакторов, что я видел под Pocket PC, мне наиболее понравился CEdit. Официальный сайт разработчика: http://www.logicalsky.com.

Довольно удобен в использовании, есть подсветка синтаксиса C#, C++, Java, HTML, XML, PHP и т.д. Поддерживает подключение внешнего компилятора. Одним (двумя) словами — must have для истинного врага своего здоровья, программирующего на КПК :).

З.З.Ы. Если заинтересовались сабжем, читайте http://forum.pocketz.ru/index.php?showtopic=19552, узнаете много интересного, в том числе и о том, что в статью не вошло (по разным причинам — к примеру, такие интересные проекты как Prolog, Perl для Pocket PC, OnBoardC просто умерли; NSBasic я не счел нужным рассматривать, так как объем рантаймов, необходимых для выполнения, и глубина задач, на которые он рассчитан, несоизмеримы).

З.З.З.Ы. Все эксперименты вы проделываете на свой страх и риск. Никакой ответственности за ваши действия я не несу. Впрочем, моему зверьку никакого вреда вышеупомянутые программные продукты не причинили :).

mydoom

Robo User
Web-droid editor

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *