javascript

Я до сих пор бомблю от редизайна DuoLingo. Настолько, что сделал свой велосипед

  • суббота, 14 февраля 2026 г. в 00:00:08
https://habr.com/ru/articles/996022/

Если кратко - упрощение изучения до "прямой", в которой нет альтернатив, а также сброс прогресса с Золотой Совы до 2-го чекпоинта изрядно подожгло мою пятую точку настолько, что я просто забил.

Однако уже через пару месяцев стало очевидно - я вновь начал делать грамматические ошибки, и нуждался в "тренировках", но играть по новым правилам мне решительно не хотелось.

Первое, что я решил, если я делаю для себя (и, возможно, кого-то еще, у кого такое же видение на проблему Совы), то я хочу иметь возможность выбрать любой урок в любой момент времени. Если препод сказала, что я за урок дважды употребил не тот предлог - значит, повторяем предлоги.
К счастью или к несчастью, предлогов довольно много, как и ситуаций, в которых они пишутся. Поэтому те же предлоги разделил по темам, и все темы открыты сразу. Это был первый принцип моего приложения: любая грамматическая тема доступна сразу.

Во-вторых, меня всегда не устраивало количество теории (если она вообще была) перед уроками. Отсюда я сформировал второй принцип - в моём приложении будет возможность ознакомиться с теорией перед уроком или прямо в карточке. К сожалению, из-за природной лени, саму теорию добавил не везде, но по крайней мере я сделал такую возможность.

Нельзя просто так взять и добавить теорию к упражнениям
Нельзя просто так взять и добавить теорию к упражнениям

Причин тому несколько:
1) теорию нельзя списать один-к-одному из учебника. Авторское право все-таки.
2) не всегда теория в учебнике изложена компактно. Поскольку приложение было скорее мобильным, чем настольным, то компактность изложения стала важным пунктом.
3) на каждое правило существует куча исключений, уточнений, и тому подобного. Написать всё — забыть о компактности. Сделать компактно — породить кучу вопросов "а почему так?"*

* "Почему так?" является важным вопросом. Именно поэтому раньше во всех сколько-нибудь сложных и неоднозначных случаях приходилось идти на форум DuoLingo (/F, покойся с миром), чтобы понять логику того, что здесь, собственно, произошло в этой конкретной карточке. Сейчас добавили кнопку EXPLAIN, но не во все языковые пары.

Предлагаю посмотреть, что же я натворил (в хорошем смысле этого слова).
1. Свободный выбор тем. Нет ни последовательностей, ничего.
2. Генератор карточек из шаблонов. Есть шаблон, есть шаблонизатор, есть конкретная карточка в результате.

 {"question":"I usually write articles ... weekends",
  "answer": ["at", "on"],          # correct answers
  "radios": ["on", "at", "in"],    # options to choose
  "comment": "ON is acceptable in US English",
  "minor": "yes",                  # prints the comment, if 2nd answer is selected
 },


Следующий шаблон интереснее:

{"question":"I left %arg1 ... %arg2",
  "answer": "at",
  "radios": ["in", "by", "with", "at"],
  "arg1": ["school","university", "school","university"], # options to template
  "arg2": [17, 22, "the age of 17", "the age of 21"],     # options to template
  "tied": "yes", # zips arg1 and arg2 together; otherwise - multiplies both to 16 options
 },

Тут у нас подставляются варианты в карточку на этапе ее подготовки. Могло бы получиться до 16 вариантов (4 варианта для первой переменной, 4 для второй, 4*4 = 16, но благодаря опции tied они используются только в той же последовательности).

По такой логике я сделал упражнения к следующим темам:

  • Prepositions

    • Prepositions of time

    • Prepositions of place

    • Prepositions in time/on time, at the end/in the end

    • To/at/in/into

    • On/in/at

    • By prepositions

    • Prepositions with nouns

    • Prepositions with adjectives

    • Prepositions with verbs

  • Irregular verbs

  • Do or Make

  • Negative prefixes

  • Adjectives

  • Phrasal verbs

  • Articles (basic, advanced, with countries)

Исходный код лежит здесь: https://github.com/Areso/English-exercises
Попробовать можно тут: https://english.areso.pro/index.html

P.S.: статья пролежала в черновиках Обсидиана пару лет, могут быть какие-то артефакты от этого =\