Суперобучение с помощью карточек
07.11.2024
|
velkin |
Предыдущая тема называлась Обучение с помощью карточек (2020.11.21). В ней затрагивался вопрос можно ли научиться программированию с помощью карточек. С точки зрения спонтанного исследования и попытки создать карточки тема написана достаточно грамотно. В ней так же описаны проблемы возникающие в этом процессе и размышления на этот счёт.
С другой стороны идею карточек я тогда забросил, потому что их сложно набирать. Я пробовал таблицы LibreOffice Calc и массовое преобразование в Anki. Так же мне не хватало обычного редактора текста в качестве ввода ответа. На десктопе я использовал плагин и он был неудобен. А в андроиде пришлось извращаться с псевдоформатом, когда перенос строки представлялся другим символом, например, точкой и идея была испорчена.
Где-то между тем периодом и настоящим днём я создал грубый прототип на C++ с STL назвав его "воспоминания" (memories). В readme.ru там так же было написано следующее.
Я решил переписать и немного изменить прототип. В целом, конечно, неплохая идея для платной программы, но не в текущем функционале.
Объясняю идею формата файла колоды.
1. Первая строка нужна для настроек файла колоды.
Пока она ничего не делает, её можно оставить пустой или чем-то заполнить. Кодировка текста всегда будет восприниматься как utf-8.
2. Следующие четыре строки это разделители. Они могут быть как одинаковые, так и разные, но программа всегда будет искать следующий за предыдущим разделитель, а не перескакивать через один.
а. разделитель пути карты.
б. разделитель передней стороны карты.
в. разделитель задней стороны карты.
г. разделитель отступов карты.
Но эти строки нужны не только программе, по сути это шаблон, который можно использовать для создания новых карт в любом подходящем редакторе текста используя операции копировать и вставить.
3. Далее идёт массив карт по исходному шаблону. Считывается с помощью машины состояний. За раз берёт одну строчку или линию.
Пример файла в комплекте с программой.
По идее эта программа поддерживает не только простой текст, но и html, но есть нюанс. В текущей версии 0.1, а это по сути только проверка идеи формата колоды нет инструментов помогающих править html. Даже я захотел поменять размер изображения, но прямо так в лоб это не сработало. Но когда я скопировал чужой html код, то он почему-то заработал включая изображение svg.
Ответы она выдаёт в строке состояния или цветом фона. Это как говорится "еду, еду, ёлка вижу", то есть интерфейс пользователя не проектировался.
По идее много, что надо, переделывать модель на иерархическую, создать синтезатор речи, редактор содержимого с режимами обучения, повторения и испытания, интерфейс для смартфона, настраиваемую виртуальную клавиатуру и многое другое. Но это дело не быстрое, если в принципе этим займусь.
Вопрос в том нужно ли давать кому-то первый прототип? Это ведь не нормальная программа, а просто на коленке написанная версия чтобы я мог исследовать карточки читая книги и документацию. Но с другой стороны была бы она нормальной, она бы была платной.
Опять же пользы от других людей как всегда никакой. Но может кому интересно попробовать формат файлов, а терять время тоже нет смысла. В конце концов в прошлый раз я писал на эту тему 4 года назад.
Скачать: memories_0.1_release.7z (12 937 066 байт) (проверьте на всякий случай на вирусы, можете запустить в виртуалке для максимальной безопасности)
Для развёртывания использовал утилиту windeployqt из пакета Qt, так что файлов может быть многовато.
Проверил на пустой виртуалке.
1. Windows 7 x64 Max работает.
2. Windows XP x86 Prof не работает.
Скомпилирована на рабочей Windows 10 и естественно тоже работает.
Что ещё написать?
Нашёл интересные статьи.
1. Дерек Сиверс: «Метод интервального повторения — лучший способ изучения языков программирования»
2. Ультимативный Гайд По Эффективному Обучению (для влёта в IT с двух ног).
В первой есть ссылка на статью от SuperMemo.
3. Effective learning: Twenty rules of formulating knowledge
Очень рекомендую почитать через переводчик тем, кто собрался составлять свои карточки. Там написали то, что я писал в статье Обучение с помощью карточек (2020.11.21) и до которых додумался сам, но так же есть вопросы, которые я не затронул. К тому же я занимался практикой, а не записывал готовую теорию.
Вы так же можете создавать свои карточки в моём формате и делиться ими в том числе здесь или с кем-то в чате, но я знаю, что вы этого делать не будете. На этом пока всё, всего вам доброго и хорошего настроения.
С другой стороны идею карточек я тогда забросил, потому что их сложно набирать. Я пробовал таблицы LibreOffice Calc и массовое преобразование в Anki. Так же мне не хватало обычного редактора текста в качестве ввода ответа. На десктопе я использовал плагин и он был неудобен. А в андроиде пришлось извращаться с псевдоформатом, когда перенос строки представлялся другим символом, например, точкой и идея была испорчена.
Где-то между тем периодом и настоящим днём я создал грубый прототип на C++ с STL назвав его "воспоминания" (memories). В readme.ru там так же было написано следующее.
структура программы:
Sets
Decks
Cards
Fields (question, answer, hint)
критика программ интервального повторения:
1) интерфейс перегружен отвлекающими элементами
2) переключение внимания на оценку собственного ответа
3) исключение из ответов лишает ещё одного повторения
4) формат не позволяет быстро набирать и читать карточки и колоды
5) программы не работают в чистой консоли
Я решил переписать и немного изменить прототип. В целом, конечно, неплохая идея для платной программы, но не в текущем функционале.
Объясняю идею формата файла колоды.
1. Первая строка нужна для настроек файла колоды.
Пока она ничего не делает, её можно оставить пустой или чем-то заполнить. Кодировка текста всегда будет восприниматься как utf-8.
2. Следующие четыре строки это разделители. Они могут быть как одинаковые, так и разные, но программа всегда будет искать следующий за предыдущим разделитель, а не перескакивать через один.
а. разделитель пути карты.
б. разделитель передней стороны карты.
в. разделитель задней стороны карты.
г. разделитель отступов карты.
Но эти строки нужны не только программе, по сути это шаблон, который можно использовать для создания новых карт в любом подходящем редакторе текста используя операции копировать и вставить.
3. Далее идёт массив карт по исходному шаблону. Считывается с помощью машины состояний. За раз берёт одну строчку или линию.
Пример файла в комплекте с программой.
utf-8
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
Программирование / Язык / C++ / Автор
-------------------------
Автор C++.
-------------------------
Страуструп Бьёрн
-------------------------
-------------------------
Программирование / Язык / C++ / Проектирование / Шаблоны / Интерфейс
-------------------------
Шаблон проектирования интерфейс.
-------------------------
class Интерфейс
{
public:
virtual ~Интерфейс() {}
virtual void метод() = 0;
};
-------------------------
По идее эта программа поддерживает не только простой текст, но и html, но есть нюанс. В текущей версии 0.1, а это по сути только проверка идеи формата колоды нет инструментов помогающих править html. Даже я захотел поменять размер изображения, но прямо так в лоб это не сработало. Но когда я скопировал чужой html код, то он почему-то заработал включая изображение svg.
Ответы она выдаёт в строке состояния или цветом фона. Это как говорится "еду, еду, ёлка вижу", то есть интерфейс пользователя не проектировался.
По идее много, что надо, переделывать модель на иерархическую, создать синтезатор речи, редактор содержимого с режимами обучения, повторения и испытания, интерфейс для смартфона, настраиваемую виртуальную клавиатуру и многое другое. Но это дело не быстрое, если в принципе этим займусь.
Вопрос в том нужно ли давать кому-то первый прототип? Это ведь не нормальная программа, а просто на коленке написанная версия чтобы я мог исследовать карточки читая книги и документацию. Но с другой стороны была бы она нормальной, она бы была платной.
Опять же пользы от других людей как всегда никакой. Но может кому интересно попробовать формат файлов, а терять время тоже нет смысла. В конце концов в прошлый раз я писал на эту тему 4 года назад.
Скачать: memories_0.1_release.7z (12 937 066 байт) (проверьте на всякий случай на вирусы, можете запустить в виртуалке для максимальной безопасности)
Для развёртывания использовал утилиту windeployqt из пакета Qt, так что файлов может быть многовато.
Проверил на пустой виртуалке.
1. Windows 7 x64 Max работает.
2. Windows XP x86 Prof не работает.
Скомпилирована на рабочей Windows 10 и естественно тоже работает.
Что ещё написать?
Нашёл интересные статьи.
1. Дерек Сиверс: «Метод интервального повторения — лучший способ изучения языков программирования»
2. Ультимативный Гайд По Эффективному Обучению (для влёта в IT с двух ног).
В первой есть ссылка на статью от SuperMemo.
3. Effective learning: Twenty rules of formulating knowledge
Очень рекомендую почитать через переводчик тем, кто собрался составлять свои карточки. Там написали то, что я писал в статье Обучение с помощью карточек (2020.11.21) и до которых додумался сам, но так же есть вопросы, которые я не затронул. К тому же я занимался практикой, а не записывал готовую теорию.
Вы так же можете создавать свои карточки в моём формате и делиться ими в том числе здесь или с кем-то в чате, но я знаю, что вы этого делать не будете. На этом пока всё, всего вам доброго и хорошего настроения.
07.11.2024 38 комментариев |
V>Что ещё написать?
то что не является оффтопом
V>2. Ультимативный Гайд По Эффективному Обучению (для влёта в IT с двух ног).
Ты серьезно? У многих здешних обитателей, включая меня, вынос из айти вперёд ногами уже не за горами
A>Ты серьезно? У многих здешних обитателей, включая меня, вынос из айти вперёд ногами уже не за горами
Это значит каждый день надо жить как последний!
A>Ты серьезно? У многих здешних обитателей, включая меня, вынос из айти вперёд ногами уже не за горами
А дальше куда? Кому ты нужен вне айти?
Tai>А дальше куда? Кому ты нужен вне айти?
Куда и все — на кладбище. А ты рассчитываешь жить вечно?
Ох уж эти «революционные методы обучения».
Но последние пару-тройку тысяч лет метод один. Кровь, пот и слезы и практика-практика-практика.
Все эти ваши интерактивы-ролики-карточки не научат дураков ничему.
Н>Ох уж эти «революционные методы обучения».
"Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью." (Л.Н. Толстой)
"От живого созерцания к абстрактному мышлению, и от него к практике — таков диалектический путь познания истины, познания объективной реальности" (В. И. Ленин)
N>"Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью." (Л.Н. Толстой)
N>"От живого созерцания к абстрактному мышлению, и от него к практике — таков диалектический путь познания истины, познания объективной реальности" (В. И. Ленин)
АПОСТОЛ ПАВЕЛ!
F>АПОСТОЛ ПАВЕЛ!
Типа, авторитет какой-то? Участвовал в гонениях на христиан и убийстве мученика Стефана. Чем он авторитетнее того же Толстого?
N>Типа, авторитет какой-то? Участвовал в гонениях на христиан и убийстве мученика Стефана. Чем он авторитетнее того же Толстого?
F>
Ну, то есть авторитет для язычников, хорошо. Но мы тут все не язычники, зачем нам такой авторитет? В то время как Толстой был авторитетом в том числе и для христиан и учил их нравственности и милосердию. На минутку, текущие иерархи РПЦ находят слова и мотивацию в Библии для ведения войны, а толстовство в принципе отрицает сопротивление злу насилием. Так что твой Павел — детский сад.
N>Ну, то есть авторитет для язычников, хорошо. Но мы тут все не язычники, зачем нам такой авторитет? В то время как Толстой был авторитетом в том числе и для христиан и учил их нравственности и милосердию. На минутку, текущие иерархи РПЦ находят слова и мотивацию в Библии для ведения войны, а толстовство в принципе отрицает сопротивление злу насилием. Так что твой Павел — детский сад.
Толстой — Еретик и отлучен от Церкви!
А Павел писал Библию! БИБЛИЮ ПИСАЛИ СВЯТЫЕ МУЖИ БУДУЧИ ДВИЖИМЫ ДУХОМ СВЯТЫМ!
Н>Ох уж эти «революционные методы обучения».
Это не "революционный" метод, а оптимизированнй вариант стандартного "повторение — мать учения" с динамически адаптируемым интервалом.
https://www.google.com/search?hl=en-us&q=spaced+repetition
Ясное дело, что он используется не для всего, а когда надо запоминать факты, даты, словари, произношение слов и всё такое. В этом приложении он работает крайне хорошо.
Хотелось бы на примере увидеть, как это работает. Как, например, выучить таблицу умножения с ее помощью?
Тут поможет либо короткий ролик, либо тезисно 3-5 пунктов, либо делать в программе онбоардинг.
Концепция должна выхватываться буквально за первые 15-30 секунд. Дальше уже далеко не все пойдут смотреть что там к чему.
DP>Ну пока на основе описания и скриншота лично мне ничего непонятно
DP>Хотелось бы на примере увидеть, как это работает. Как, например, выучить таблицу умножения с ее помощью?
DP>Тут поможет либо короткий ролик, либо тезисно 3-5 пунктов, либо делать в программе онбоардинг.
DP>Концепция должна выхватываться буквально за первые 15-30 секунд. Дальше уже далеко не все пойдут смотреть что там к чему.
Там как раз из статей всё понятно. Ещё в SuperMemo задолго до меня всё продумали. Но эти программы используют базы данных. И если уж говорить откровенно, даже если бы там был человеко-читаемый формат, типа xml или json, всё равно это было бы стрёмно. Человеко-читаемый не значит человеко-удобный.
Я хочу создавать карточки просто набирая текст в любом редакторе. И точно так же их копипастить, если надо. А хранить их в том же git. Я тогда ещё замучился переводить из таблиц в базы данных, где ни то, ни другое, не чистый текст. Банальные проблемы синхронизации решаются отсутствием синхронизации.
Если же всё набирать в программах интервальных повторений, то без них ничего не сделаешь. За их рамки тоже не выйти. У меня ведь программа не свободная, но формат более чем свободен.
Я сам ещё не пробовал набирать массово содержимое именно в этом формате, хотя идеи у меня есть ещё с Anki и MyTestXPro. Причём не расплывчатые, а более ли менее чёткие. А тем кому лень вникать во всё это я через какое-то время, может быть продолжительное, скажу работает это или нет.
Каких-то особо новых идей в набирании карт здесь нет. Но люди часто подрываются на мелочах. Вот эти мелочи я и хочу исправить. У меня есть очень простые по смыслу задумки, но которые авторы программ почему-то не реализовали.
Сейчас программа работает в режиме экзамена, набираешь сразу всю карту и проверяешь результат. А режим обучения я хочу сделать по типу клавиатурного тренажёра, когда текст заранее виден, нужно его только правильно набрать. Режим повторений это когда текст открывается по мере набора, но не даёт набирать неправильно.
И я не идеолог чтобы продвигать какие-то идеи. Надо пробовать, у меня уже в голове вертятся мысли как лучше порезать книги и документацию. Я даже ЕГЭ посмотрел как сделан. Моя давнишняя критика ЕГЭ, что обучаться и сдавать экзамен надо по одной системе и одним данным, как в ПДД. Там сдают по билетам, а книжка с теорией по боку.
Столкнулся с блокировкой Oracle, пришлось качать старую JDK 8 с какого-то зеркала mirrors.huaweicloud.com. Кстати, если это huawei, а не подражатели, то их по идее тоже должны забанить. Потом долго подбирал конфигурацию и хоть ты тресни для Qt 5.9.9 SDK из Android Studio роли не играет, хотя там написано 26 с чем-то, а вот NDK только 16.
А Qt такой старый потому, что мне лень что-то делать. Больше версии корявые установщики и в целом пакеты, меньше ещё старее. В итоге повозился и подобрал версии перечитав кучу инструкций, но так и не изучил откуда берутся эти параметры, но это всё не важно.
То сборка пакета требовала gradle, причём судя по адресу она его качает с сайта, а я браузером и нашёл нужную ссылку. То какие-то проблемы с ключами, люди советуют стереть папку .android и это действительно работает.
Самое плохое случилось потом, причём не только с пакетом, но и с моим смартфоном, просто я заметил это только сейчас. Если кратко произошла такая вещь ОФИЦИАЛЬНО! В Android 14 НЕЛЬЗЯ установить старые приложения. И это интересным образом совпадает с Китай объявляет Android войну на уничтожение. Крупнейшие техногиганты отворачиваются от этой ОС в пользу ее «убийцы».
А проблема в том, что мой Samsung A52 всё это время обновлялся. Так в итоге он с 11 версии обновился до 14. Galaxy A52 больше не будет получать обновления функций Android и One UI. Лучше бы он вообще не обновлялся. Гугл затеял очень мерзопакостную вещь испортив мне смартфон. А выхода нет, только рутовать.
Так вот после компиляции сборки apk и закачки его автоматически на смартфон, мне смартфон заявлял, что не будет это устанавливать, потому что оно скомпилировано для старой версии. Google росчерком пера сломает сотни тысяч Android-приложений. Они перестанут запускаться на новых смартфонах. Отлично гугл.
В общем мне даже смена targetSdkVersion и minSdkVersion не помогла Требования к целевому уровню API для приложений Google Play.
А Android 14 это уже почти что анальное яблоко. В итоге я скопировал закачки и фото со смартфона на диск, плюс забекапился в самсунговском облаке и сбросил смартфон до заводских настроек. Но не тут то было, загрузился он так же 14 версией. И, конечно, сразу после этого я нашёл статью самсунга, что так и должно быть.
Но приложение теперь почему-то стало устанавливаться. Так-то оно ругалось и сразу посылало меня куда подальше, а тут ругается, но устанавливает. На этом я заблокировал обновления. И что я понял из всей этой истории, что не нужно было обновляться.
Хотя по айфону я скажу, что раз начались такие движения, то дальше будет хуже. Гуглятина выдавит старый хороший софт, а новый будет говном обмазанным рекламой.
Но это ладно, вот получившаяся программа.
memories_0.1_release.apk (7 031 439 байт)
Здесь явно вышел трешачок. У меня шрифты сильно увеличенные, а диалоговое окно в андроиде на Qt это не нормальное диалоговое окно. И плюс непонятно, что там вообще открывается.
Но в целом можно было бы всё поправить. Только вот Android 14 и гуглятина меня расстроили своими действиями. Они же кучу крутых приложений убили и радуются. Я то понятное дело могу всё перекомпилировать убив не один день как сейчас, а сколько-то недель, а что насчёт старых проектов.
И вот думаешь знал бы остался на Android 11. Но я помню как яблоко выворачивает руки. Просто есть искусственный нижний диапазон после которого на старых операционках перестают работать новые приложения. А те приложения тоже по другому не могут, потому что яблы так выкручивают настройки. Теперь вот гуглы занимаются тем же самым.
Ну ладно, мне всё равно не до этого. Просто гуглы и подсосы самсунги испортили хорошую идею. А вот тем кто хочет купить Android 14 стоит призадуматься. Так же лучше не обновляться до этой версии тем кто использует программы скомпилированные больше года назад. Это я утрирую, конечно, но суть думаю понятна.
Вот вы сами уже увидели свою ошибку
Вам надо делать web версию
Там никто вирусов бояться не будет
Версия 0.2 Бета 1
Хотел обсудить карточки и их виды, а текущую версию программы публиковать не хотел по причине говнокодистости. Дело даже не в том, что она снаружи выглядит уродско, внутри она ещё хуже.
А потом подумал какая разница, ведь я пока не беру за неё деньги. А то о чём пойдёт речь в обсуждении карточек лучше тестировать в новой версии.
Потому я решил обозвать текущую версию beta1 и опубликовать. Просто чтобы было понятно, для меня нет никаких релиз или бета, а есть просто программа, которую я меняю когда мне вздумается. Если мне лень думать, будет говнокод, зато потрачу не 10 часов, а 10 минут на достижение результата.
Скачать
teacher_0.2_beta1.7z (13 070 816 байт)
readme.txt
Файл readme.txt в комплекте с программой.
Изменения
1. В главном окне теперь можно менять пропорции размеров виджетов мышкой не только по горизонтали, но и вертикали.
2. Официальное разрешение колод сменилось с "*.txt" на "*.deck" чтобы можно было их отличать от других файлов.
3. Можно назначить в проводнике или другом файловом менеджере "Открыть с помощью" и выбрать эту программу в качестве главной, она распарсит пути и сразу откроет колоду без того, чтобы открывать её в меню с помощью пунктов "Открыть" или "Загрузить".
4. Теперь программа озвучивает карточки, но выбрать синтезатор речи нельзя, потому что мне пока было влом писать эту функциональность. Настройки тоже залочены намертво под мои предпочтения. Рекомендую скачать синтезатор речи RHVoice-voice-Russian-Anna-v4.1.2015.21-setup.exe. Я так понимаю, что RHVoice использует SAPI5, а с синтезатором речи на SAPI4 может всё вылететь. По крайне мере пример hello_speak из стандартной поставки у меня автоматически закрывается. А что сделает это программа я не проверял, потому что не сделал выбор синтезатор речи.
5. Сменилось название программы.
Сами программы по задумке это модули кибер системы. Но я понял, что сразу её не напишу, если вообще напишу, потому решил делать standalone версии модулей.
Обсуждение карточек
А теперь главная тема ради которой я и решил написать этот комментарий.
Что такое исходный код и из чего он состоит?
1. Название (краткое, полное).
2. Сигнатура (обозначение).
3. Решение (тело).
4. Вывод (результат).
5. Образ (модель, чертёж).
6. Документация (объяснения).
Спрашивается для чего это написано?
А всё просто, учитель, репетитор, воспоминания и так далее имеет принцип направленного графа. Одна карточка это по сути два элемента и связь между ними, можно назвать это направленной парой.
Я специально запихнул в beta1 пример колоды qtexttospeech.deck, и вот отрывок из неё.
Есть пара Название->Сигнатура. Обернув карту наоборот получим пару Сигнатура->Название. Причём сигнатура это общее определение для меня лично, оно может не соответствовать каким-то определениям из языка программирования. Это скорее то, что я хочу запомнить условно считая это сигнатурой.
Область действия это то, что можно игнорировать создавая карточку, если учитывать, что это есть.
1.Без области.
2. С областью.
3. С областью и категорией.
4. С областью, категорией и парой.
А ещё есть пары. И я так понимаю люди обычно над этим не задумываются, потому что учат с помощью этого метода слова разговорных языков, а не всё, что угодно. Если они учат с русского в английский и с английского в русский, или там с русского в китайский и с китайского в русский, то у них это понимание сразу задано по умолчанию.
В этом и есть главная мысль. Хорошо сокращать названия не прописывая лишних данных, то есть исключая контекст в виде области действия, категории и пары, но при расширении всё равно придётся это сделать.
Сочетания из n=6 по k=2. (калькулятор)
Сочетания парами, то есть где k=2.
Образы
Ещё хотелось бы поговорить об образах. В примитивном случае это растровые или векторные изображения, картинки, иконки. В чуть более продвинутом случае чертежи. Но размышляя я пришёл к выводу, что образы нужно воспроизводить запоминающему, иначе они могут быть лишь первым значением в паре, то есть передней стороной, вопросом, задачей, но не задней стороной, ответом, решением.
Есть варианты как с детской раскраской, где обозначены точки и нужно их соединить фигурами, вроде линий, дуг, окружностей и так далее. Можно проверять в точности набранные фигуры или напротив сломанные до простейших линий и дуг фигуры. И, конечно, куда уж без идеи электронной тетради в клеточку.
Другое дело, что всё это надо делать в программе и записывать в карточку в виде текста в виде команд с координатами, тогда это действительно будет работать. В примитивном же случае можно использовать ascii-графику.
Математические формулы
Ещё один подвид данных это математические формулы. Да их можно без проблем набрать в виде текста, но есть и другой принцип, а именно что ты видишь, то ты и получаешь. По большому счёту образы в этом плане точно такие же, то есть внутри являются текстом, а значит их можно было бы так же набрать текстом.
Опять же можно сочетать образы с математическими формулами и текстом, это лишь вопрос построения редактора, который показывает данные в виде фигур, но сохраняет в виде текста. А это ещё наталкивает на проверку порядка набора, то есть можно заставлять набирать фигуры в определённом порядке, а не случайно.
Завершение
Пока всё, что хотел написал. Этот комментарий в основном для заинтересованных сторон, если кто-то хочет обсудить или по тихому воспользоваться результатами. Опять же очередной сброс мыслей не помешает. И плюс я скорее буду проводить опыты с карточками, чем писать программу, потому продолжение по программе вряд ли будет скоро.