Dev Story Умножение без таблицы. История для тех, кто хочет научиться умножать быстрее

Идея приложения возникла летом этого года, когда мой 10-летний сын во время летних каникул решил обучаться программированию. В качестве языка программирования он выбрал язык Java. Я краем глаза посматривал как он ковыряется в среде разработки Eclipse, переписывая код из книжки, и каждый раз дремлющий во мне проджект-менеджер голосом кота Матроскина ворчал: «Ой, чой-то мы зря его кормим не используем этого джуниор-программера, пусть пользу приносит». Надо было срочно придумать задачу по программированию, несложную, но вместе с тем полезную.

Покопавшись в списке отложенных до лучших времен задач, я все-таки смог найти подходящее задание – написать код для «волшебного» умножения чисел от 2 до 12. В свое время, учась в советской средней школе, я интересовался различными математическими фокусами, хитрыми приемами и т.п. Помню, меня просто потрясла история нашего соотечественника Якова Трахтенберга, который, будучи узником нацистского лагеря, чтобы не сойти с ума от окружавшего его ужаса, придумал свою систему быстрых вычислений в уме. Впоследствии эту (или подобную) систему использовали люди-вычислители, которые поражали воображение окружающих, быстро перемножая в уме огромные числа. Помимо основных алгоритмов вычисления эта система содержала также и специальные методы умножения малых чисел от 2 до 12 на произвольные целые числа. С тех давних пор я запомнил только правило «волшебного» умножения 2-значного числа на 11. Например, чтобы умножить на 11 число 43, нужно «раздвинуть» цифры 4 и 3, написав между ними их сумму 7, т.е. результат будет 473.

Вот мы и решили сделать полезное приложение, которое бы обучало подобным правилам умножения без заучивания таблицы. Может, в процессе разработки и сами так умножать научимся!

Технология разработки

Как я уже написал, ребенок хотел учиться писать именно Java-код. Где он такого нахватался – неизвестно, что с этим делать – поначалу было непонятно. Поразмыслив, я решил сделать так:

  1. Сначала код, реализующий правила умножения, пишется на Java.
  2. После небольшой «обработки напильником» делаем из него код JavaScript. В нашем конкретном случае объем «обработки» оказался относительно невелик. Весь остальной код пишется сразу на JavaScript + HTML.
  3. Далее – готовое HTML-приложение «оборачивается» простым native-кодом, вызывающим отображение нашего HTML-приложения внутри WebView-элемента.

Данный подход имеет свои плюсы и минусы.

Читайте также  Dev Story Загадки с маленьким храбрым Лисенком. История про имплементацию

ПЛЮСЫ:

  • одно и то же приложение не нужно переделывать для каждой мобильной платформы отдельно, оно делается один раз для всех платформ;
  • HTML очень хорош для создания «резиновых» экранных форм, прилично выглядящих на устройствах с различными размерами экранов (особенно актуально для Android, в меньшей степени – для iOS);
  • у меня уже был опыт создания подобных приложений.

МИНУСЫ:

  • WebView-элемент не является полноценным браузером и может не поддерживать те или иные особенности HTML. На практике оказалось, что самый капризный – UIWebViewв iOS, а самый беспроблемный – в BlackBerry 10 (там вообще есть штатная поддержка таких HTML-приложений);
  • если увлечься стилями и создать «тяжелый» HTML (с градиентами, полупрозрачностью у многих элементов и т.п.), приложение начинает ощутимо «тормозить».

В общем и целом, данная технология – вполне пригодна для небольших и несложных приложений. И главная цель достигнута – ребенок пишет простой, но полезный код на Java.

«Каша из топора»

Изначально все выглядело радужно – процесс понятен, взрослые и дети хлопают в ладоши делают свою часть работы, все счастливы. В реальности все оказалось не так, как было запланировано.

Во-первых, оказалось, что «простой» код, который должен был писать 10-летний ребенок, не такой уж и простой. Если с самим кодом, реализующим умножение путем преобразования строк, сын справлялся, то код, генерирующий попутные комментарии о применении того или иного правила, был ему не под силу. А без этих комментариев пропадал весь смысл работы – умножить в коде можно было и просто так. Во-вторых, летом дети должны не работать, а отдыхать! Мой, например, закрыл книжку, выключил компьютер и уехал в «Артек». В-третьих, сама задача стала разрастаться – для тренировок и тестирования понадобилась форма, внешне похожая на калькулятор, которая позволяла бы вводить цифры произведения справа-налево, отмечать перенос десятков в следующий разряд и т.п. В-четвертых, я решил сделать сразу поддержку помимо русского еще английского и немецкого языков…

Но главное в программировании – начать! Дальше работа затягивает, как в той сказке – топор в котле, все остальное потихоньку к нему добавляется!

Название приложения

Когда приложение уже было готово, я задумался над названием. С одной стороны, я хотел, чтобы название содержало фамилию Якова Трахтенберга, придумавшего все эти правила. С другой стороны, сейчас эта фамилия вызывает ассоциации с чем угодно, но только не с математикой. Русскоязычные пользователи мобильных устройств, скорее всего, вспомнят шоумена Романа Трахтенберга. Англоязычные – американскую актрису Мишель Трахтенберг. Назвать просто по фамилии будет явно недостаточно – неясно, что речь именно о профессоре математики, а не о прочих Трахтенбергах.

Читайте также  Apple представила официальный видеоролик, посвященный строительству Campus 2

Подумав, я решил сделать несколько названий:
1. На устройстве – приложение называется «Трахтенберг» (Trachtenberg), это самый короткий вариант названия.

2. На главном экране внутри приложения – «Умножение без таблицы» (Multiply Without Times Table), это отражает смысл приложения.

3. В AppStore – используется полное название, позволяющее, помимо прочего, использовать дополнительные ключевые слова – «Яков Трахтенберг – Система быстрого счета – Научись выполнять умножение чисел от 2 до 12 без знания таблицы умножения» (по-английски короче – Trachtenberg Speed System – Basic Multiplication Without Times Table).

В процессе перевода названия, я узнал, что по-немецки таблица умножения называется Einmaleins, что переводится как «одиножды один». А еще говорят, что у немцев нет чувства юмора!

Для кого это приложение

Приложение может быть полезно многим:

  • Детям – многие дети испытывают трудности при механическом запоминании каких-то фактов, цифр и т.п. Проблемы могут быть вызваны, в том числе, и расстройством развития – «синдромом рассеянного внимания», которым в той или иной форме страдают 3–5% процентов людей (статистика по США, данные из Википедии). Система Трахтенберга предлагает вместо заучивания чисел запомнить и применять набор правил вида: «Добавить к текущей цифре ее соседа справа».
  • Пожилым людям – с годами у человека возрастает необходимость проводить «тренировки для мозга». Решение головоломок, тренировка памяти, устный счет помогают мозгу оставаться «в форме», замедляют процесс его старения. С этой точки зрения, система Трахтенберга – один из возможных «тренажеров» для извилин.
  • Взрослым людям – среди нас немало тех, кто сохранил интерес или даже любовь к различным математическим фокусам и развлечениям. «Умножение без таблицы» – это разновидность таких развлечений. Данным методом можно проверить – сколько будет 7×8 или 6×9 в случаях, когда сомневаешься или подзабыл. Я, работая над приложением, лично для себя запомнил правила умножения на 11 и на 12. Во-первых, эти правила оказались очень простыми, а во-вторых, таблица на 11 и 12 не входила в школьный курс, это было для меня новым знанием.

Сколько стоит и кто покупает

Изначально я планировал сделать приложение бесплатным, добавив несколько in-app покупок, для того, чтобы можно было сделать donate. Но сын настоял на том, чтобы приложение было платным (а то нам вообще ничего не заплатят). В итоге, установили цену в $0.99. Приложение размещено в магазинах для 3-х мобильных платформ:

Читайте также  App Store Quipio. Мысли в картинках

1. iOS – AppleAppStore (универсальное приложение).
2. Android – Google Play, Amazon, Samsung Apps, Barnes & Noble.
3. BlackBerry 10 – BlackBerry World (универсальноеприложение).

Продажи пока невелики. Приятно, что большая часть покупок делается нашими соотечественниками. Ниже – фрагмент отчета из сервиса AppAnnieс процентами продаж по странам в App Store.

Вместо заключения

В данном приложении рассмотрены лишь специальные методы для умножения маленьких чисел (до 12). Ознакомиться с полной системой можно в книге Э. Катлер, Р. Мак-Шейн «Система быстрого счета по Трахтенбергу», изданной в издательстве «Просвещение», Москва, 1967. Настоятельно рекомендую эту книгу всем, кто заинтересовался системой быстрого счета. Книга содержит еще очень много материала, не попавшего в приложение. Соответственно, в качестве развития приложения в будущем можно рассматривать реализацию того, что еще есть в этой книге – основного метода быстрого умножения (уже с использованием таблицы), быстрого деления, возведения в квадрат и взятия квадратного корня. В идеале, приложение должно стать кратким справочником и тренажером для отработки правил, изложенных в книге. Надеюсь, приложение будет востребовано. Спасибо!

iPhone: 33 руб. [Скачать из App Store] + сайт приложения

Данная история опубликована в рамках рубрики Developer Story, где разработчики делятся секретами своей внутренней кухни.
Источник: iphones.ru

RIOS