Математический пакет для Android “Микро-Математика”: что нового?
Вот и пролетело полгода с тех пор, как я перевёл свой математический пакет на Андроид, «Микро-Математику», в статус свободных приложений с открытым исходным кодом и опубликовал код на github. Благодаря такому шагу, «Микро-Математика» получила мощный импульс для развития, а я сам — ценный и весьма позитивный опыт общения с сообществом. В данной небольшой заметке я хочу представить новую версию приложения, которая сейчас готовится к релизу, а также поделиться всем тем позитивом, который был получен в рамках работы над релизом. Эта заметка для тех, кто интересуется как общими вопросами разработки под Андроид и ПО с открытым исходным кодом, так и прикладными вопросами, связанными с математическими вычислениями.
Основные результаты за полгода
Отзывы на Google Play, звёздочки, а все такое — это, конечно интересно, но, как я для себя понял, не очень информативно по сравнению с активностью энтузиастов в репозитории github. Благодаря таким людям, как @KOLANICH, @Symbian9, @tianxiaogu, @plottar удалось не только исправить досадные ошибки, но и поддать газу и реализовать много новых функций, например:
- Приложение теперь опубликовано на F-Droid дополнительно к Google Play
- Реализована автоматическая сборка и публикация приложения на github после каждого коммита с использованием Travis CI, о чем я писал тут
- Реализована поддержка цветовых профилей и добавлены несколько нескучных тем оформления.
@afmachado по собственной инициативе перевёл приложение на португальский. Подобный перевод — дело непростое, так как помимо текстовых ресурсов, приложение содержит очень объёмную документацию, без перевода которой подобная деятельность не имеет большого смысла. Но @afmachado совершил подвиг и перевёл и и её тоже. Наличие большого объёма сопроводительной документации с точки зрения мультиязычной поддержки является проблемой — из-за неё «зависли» переводы приложения на украинский, французский и испанский. Но, с другой стороны, я не могу представить себе достаточно сложный математический пакет без подобной документации.
Интеграция с SMath Studio
@Symbian9 добавил простой, на первый взгляд, запрос: возможность работы с документами SMath Studio. Когда я только начинал разрабатывать «Микро-Математику», я ничего подобного не планировал. Но сейчас я вижу, что сила — она не в разрозненных приложениях, а в некоторой экосистеме, пусть и небольшой. И подобные запросы пользователей буквально вынудили меня переосмыслить вопросы интеграции с другими системами и связаться с автором SMath Studio, Андреем Ивашовым.
Длительное, детальное и очень критическое совместное обсуждение наших продуктов подтолкнули нас к мысли о координации развития наших систем. Андрей реализовал со свой стороны μMath плагин, который позволяет открывать файлы «Микро-Математики» в SMath Studio.
Я же добавил возможность открытия файлов SMath Studio в «Микро-Математике», благо оба формата реализованы на базе XML. И именно эта интеграция и является ключевой особенностью новой версии, которая сейчас готовится к релизу.
Итак, начиная с версии 2.17, в «Микро-Математике», на мобильном устройстве, можно открыть документ SMath Studio, продолжить работу в дороге, сохранить результат (в формате «Микро-Математики»), а при наличии большого ПК, спрятаться на чердак открыть этот документ уже на нём в SMath Studio, и работать, работать.
Естественно, в силу исторически сложившегося независимого развития этих двух продуктов, имеются серьёзные ограничения. «Микро-Математика» пока ещё не поддерживает циклы, матрицы, строковые функции, а также всю функциональность, реализованную сторонними разработчиками в плагинах SMath Studio. Есть отличия в наборе поддерживаемых единиц измерений, в представлении графиков функций, индексации массивов (в SMath Studio они начинаются с единицы, а в «Микро-Математике» с нуля). Из всех стандартных примеров, поставляемых с SMath Studio, без ошибок открывается только один, так как все остальные содержат либо циклы, либо матрицы. Хорошее представление о совместимости даёт этот документ — в нём собраны все конструкции, которые поддерживаются обеими системами.
В общем, есть масса направлений, по которым можно (и нужно) проводить унификацию. В версии 2.17, некоторые шаги в этом направлении уже сделаны:
- в «Микро-Математику» добавлены новые встроенные функции
- некоторые встроенные функции удалены или переименованы так, как в SMath Studio
- Так как встроенных функций становится все больше и больше, появилась возможность настройки математической палитры, чтобы скрывать из неё неиспользуемые функции
- Реализована поддержка единиц измерений. Поддерживаемые единицы измерений собраны в этом документе. Очень помогла в этом отличная библиотека JScience. Она хоть и устарела, но полностью покрывает весь связянный с единицами измерений функционал.
Теперь со всей очевидностью видна та масса математического функционала, которого не хватает в «Микро-Математике». Есть куда расти. Чтобы этот рост не создавал новых проблем, в версии 2.17 я немного причесал вычислительное ядро. Добавлять новые встроенные функции теперь стало намного проще. Все встроенные функции собраны здесь и сгруппированы в тематических классах, например, тригонометрические, степенные, логические и т.д. Каждая встроенная функция, помимо свойств (тип, иконка, описание, количество параметров) содержит также метод вычисления значения и опциональные методы проверки аргументов и вычисления первой производной. Если есть желающие расширить список встроенных функций (добавить, например, статистику, спектральный анализ, специальные функции) — милости прошу. Теперь это стало ещё проще, благо, многое из этого уже реализовано в используемой библиотеке The Apache Commons Mathematics Library. Грубо говоря, осталось только правильно подключить имеющиеся там реализации и написать тесты. Хотя могут возникнуть нюансы.
Планы
С учётом всего вышесказанного, а также обсуждений «Микро-Математики» с разными людьми, я вижу три основных направления дальнейшего развития:
- Улучшение интерфейса: реализация перетаскивания формул, изменение размеров объектов не только через окно настроек, но и через масштабирование, настраиваемые цвет, размер и стили текста. Ещё больше нескучных тем оформления. До сих пор открыт запрос, чтобы добавить высококонтрастные черно-белые темы. В силу наличия большого количества используемых цветов, это сложно. Возможно, придётся изменить, например, индикацию ошибок. В любом случае, приглашаю тех, кто чувствует в себе дизайнерскую жилку, помочь как советом, так и делом.
- Дальнейшая интеграция с SMath Studio. Унификация вычислений, автоматического тестирования, пользовательского интерфейса (насколько это возможно с учётом принципиальных отличий мобильной платформы и ПК). Если кто является счастливым обладателем коллекции расчётов SMath Studio, милости прошу попробовать их в «Микро-Математике» (с учётом тех ограничений, о которых я писал выше).
- Расширение математического функционала: векторы и матрицы и все, что с этим связано (умножение, сложение, вычитание, транспонирование, инвертирование). Функции статистики, спектральный анализ, специальные функции. Циклы. Быть может, элементы аналитических вычислений на базе сторонних библиотек, той же Symja, например упростить, выделить общее, взятие производной.
Разное
Произошёл интересный случай. Есть один очень неспокойный энтузиаст, он взял ядро рисования формул из «Микро-Математики», приделал к нему библиотеку аналитических вычислений Symja, и получился очень забавный калькулятор. Сложно сказать, насколько такой калькулятор будет популярен, но прямое использование кода другими разработчиками не может не радовать.
На этом, пожалуй, завершу мой рассказ. Спасибо.