Menu

[Dev Story] Множення без таблиці. Історія для тих, хто хоче навчитися множити швидше

Нам пише Олександр Мокрушин.


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

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


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

Покопавшись в списку відкладених до кращих часів завдань, я все-таки зміг знайти відповідне завдання - написати код для «чарівного» множення чисел від 2 до 12. У свій час, навчаючись в радянській середній школі, я цікавився різними математичними фокусами, хитрими прийомами і т.п. Пам'ятаю, мене просто вразила історія нашого співвітчизника Якова Трахтенберга, який, будучи в'язнем нацистського табору, щоб не зійти з розуму від оточував його жаху, придумав свою систему швидких обчислень у розумі. Згодом цю (або подібну систему використовували люди-обчислювачі, які вражали уяву оточуючих, швидко перемножая в розумі величезні числа. Крім основних алгоритмів обчислення ця система містила також і спеціальні методи множення малих чисел від 2 до 12 на довільні цілі числа. З тих давніх пір я запам'ятав тільки правило «чарівного» множення 2-значного числа 11. Наприклад, щоб помножити на 11 число 43, потрібно «розсунути» цифри 4 і 3, написавши між ними їх суму 7, тобто результат буде 473.

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

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

Як я вже написав, дитина хотів вчитися писати саме Java-код. Де він такого нахапався - невідомо, що з цим робити - спочатку було незрозуміло. Поміркувавши, я вирішив зробити так:

  • Спочатку код, що реалізує правила множення, пишеться на Java.
  • Після невеликої обробки напилком» робимо з нього код JavaScript. У нашому конкретному випадку обсяг «обробки» виявився відносно невеликий. Весь інший код пишеться відразу на JavaScript + HTML.
  • Далі - готову HTML-додаток «обертається» простим native-кодом, що викликає відображення нашого HTML-додатки всередині WebView-елемента.
  • 
[Dev Story] Умножение без таблицы. История для тех, кто хочет научиться умножать быстрее

    Даний підхід має свої плюси і мінуси.

    ПЛЮСИ:

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

    МІНУСИ:

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

    У загальному і цілому, дана технологія - цілком придатна для невеликих і нескладних додатків. І головна мета досягнута - дитина пише простий, але корисний код на Java.

    «Каша з сокири»

    Спочатку все виглядало райдужно - процес зрозумілий, дорослі і діти плескають у долоні роблять свою частину роботи, всі щасливі. У реальності все виявилося не так, як було заплановано.

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

    По-перше, виявилося, що «простий» код, який повинен був писати 10-річна дитина, не такий вже і простий. Якщо з самим кодом, що реалізує множення шляхом перетворення рядків, син справлявся, то код, який генерує попутні коментарі про застосування того чи іншого правила, було йому не під силу. А без цих коментарів пропадав весь сенс роботи - помножити в коді можна було і просто так. По-друге, влітку діти повинні не працювати, а відпочивати! Мій, наприклад, закрив книжку, вимкнув комп'ютер і поїхав в «Артек». По-третє, сама задача стала розростатися - для тренувань і тестування знадобилася форма, зовні схожа на калькулятор, яка дозволяла б вводити цифри твори справа-наліво, відзначати перенесення десятків у наступний розряд і т.п. по-четверте, я вирішив зробити відразу підтримку крім російської ще англійської та німецької мов...

    Але головне в програмуванні - почати! Далі робота затягує, як у тій казці - сокира в котлі, все інше потихеньку до нього додається!

    Назва додатка

    Коли програма вже було готове, я задумався над назвою. З одного боку, я хотів, щоб заголовок містив прізвище Якова Трахтенберга, придумав всі ці правила. З іншого боку, зараз це прізвище викликає асоціації з чим завгодно, але тільки не з математикою. Російськомовні користувачі мобільних пристроїв, швидше за все, згадають шоумена Романа Трахтенберга. Англомовні - американську актрису Мішель Трахтенберг. Назвати за прізвищем буде явно недостатньо - неясно, що мова саме про професора математики, а не про інших Трахтенбергах.

    Подумавши, я вирішив зробити кілька назв:
    1. На пристрої - додаток називається «Трахтенберг» (Trachtenberg), це найкоротший варіант назви.

    2. На головному екрані всередині програми - «Множення без таблиці» (Multiply Without Times Table), це відображає зміст програми.

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

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

    Для кого це додаток

    Додаток може бути корисно багатьом:

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

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

    Скільки коштує і хто купує

    Спочатку я планував зробити додаток безкоштовним, додавши кілька in-аррпокупок, для того, щоб можна було зробити donate. Але син наполіг на тому, щоб додаток був платним (а то нам взагалі нічого не заплатять). У підсумку, встановили ціну в $0.99. Додаток розміщене в магазинах для 3-х мобільних платформ:

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

    Продаж поки що невеликі. Приємно, що більша частина покупок робиться нашими співвітчизниками. Нижче - фрагмент звіту з сервісу АррАппіес відсотками продажів по країнам в App Store.

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

    Замість висновку

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

    iPhone: 33 руб. [Завантажити з App Store] + сайт додатки

    Дана історія опублікована в рамках рубрики Developer Story, де розробники діляться секретами своєї внутрішньої кухні.
    |