Pull to refresh

Comments 45

Спасибо за статью, а то я уже собирался изобретать велосипед и сам писать подобное, ибо все удержать в голове — ну просто никак.
Тут идет сильная подмена понятий.
В заголовке статьи говориться о изучении языков программирования, а в самой статье о методах запоминания информации.

Если я запомню все правила дорожного движения, я не стану хорошим водителем.
Если я запомню все базовые функции какого-то языка, я не стану от этого программистом.

Изучение языка программирования — это больше процесс понимания и осознания. Например, чтобы понять ООП, надо понять ООП. И учи тут что-то или не учи, пока не поймешь, не осознаешь, не прочувствуешь — ты не можешь эффективно использовать все возможности языка.
Чтобы стать програмистом на каком-то языке надо поработать на нем 100-500 часов, а не карточки зубрить.
Некоторые нюансы неплохо и запомнить, а порой не получается.
Мне все же кажется, что из понимания фундаментальных вещей следует принципиальная способность решить задачу, а вот запоминание каких-то приемов, идиом, синтаксических особенностей, как раз влияет на продуктивность. Грубо говоря, если я не понимаю прототипного ООП, то я вряд ли смогу хорошо спроектировать сложную систему на JS, о скорости решения задач тут речь не идет, а то что я помню, что элемент в массив вставляется с помощью arr.splice(index, 0, el) — это то, что влияет на скорость кодинга на конкретном языке программирования.
Проблема в том, что даже фундаментальные вещи, которые ты понял, со временем забываются. В Анки необязательно заносить карточки описывающие функции, можно создавать карточки с фундаментальными вопросами.
Если вы запомните все правила дорожного движения, вы станете более хорошим водителем.
«Если за конструктором нового массива следует простое число, то в результате создается пустой массив длиной в обозначенное этим числом количество элементов. Любая другая комбинация аргументов дает на выходе массив, содержащий эти самые аргументы.»
Лучше написать «натуральное положительное», во избежание путаницы)
я бы посмотрел на «натуральное отрицательное» :)
Иногда в множество натуральных включают 0
Тогда, чтобы уже совсем никакой путаницы не было — «положительное целое»! :DD
Интересно было бы посмотреть на язык с перегрузкой конструкторов по простоте числа :)

var a = new Array(5); // [null, null, null, null, null]
var b = new Array(6); // [6]
Довольно давно для изучения английского использую Anki. Как-то и не задумывался над тем, чтобы подобную практику использовать для улучшения своих навыков в программировании.

Спасибо за статью.
Anki отличная программа, недавно нашел, и очень ей доволен.
Хочется плугин, который бы сам подтягивал перевод со звуком из google translate, никому не попадался?
Спасибо за перевод!
Надеюсь, метод и программа помогут мне эффективнее изучать немецкий.
Спасибо за Anki, раньше не встречал.
Посмотрим, что же из этого получится и на сколько эффективно такое обучение.
Не спорю, что программа, вероятно, очень полезна, но… все ваши знакомые НАСТОЯЩИЕ программисты думаете тоже ее используют или может practice makes perfect? :)
Теперь наконец-то изучение испанского пойдет быстрее. От всей души благодарю за чудесную статью!
Попробуйте Duolingo. Там похожая система, но не по словам, а по целым предложениям, которые предлагается переводить туда-обратно, проговаривать, записывать на слух и т.д.
Никто не запрещает в Anki записывать на карточку предложения вместо слов, переводить туда-обратно, использовать аудио и видео в карточках.
Duolingo всё же отличная штука — не надо ничего записывать, он сам всё предложит. И покажет, сколько в день вы назанимались.
Правда, пары русский-английский там нет. Есть английский-немецкий, английский-французский, ещё итальянский, испанский и португальский.
Весьма интересно, кстати, учить другие языки через английский.
Чтобы быть программистом, не надо знать все функции.
Надо знать где и как их искать!
Посмотрел на цену AnkiMobile для iPhone и ужаснулся, она реально того стоит?
Ну это вам решать, вы же купили iPhone, вас никто не заставлял. Версия для Android бесплатна. С пользователей iPhone разработчики традиционно денег хотят. Есть альтернативы:
iFlash: itunes.apple.com/ru/app/iflash-touch/id313198123?mt=8
Cram: itunes.apple.com/us/app/cram/id498843111?mt=8
но они тоже небесплатны. На suse есть сколько-то ещё: suse.me/soft/anki/iphone/
Во-первых, web–версия вполне функциональна и не требует денег
Во-вторых, продажа версии Anki для iPhone — это способ поддержать разработку. Поначалу мне тоже казалось, что цена великовата, но после двух лет ежедневного использования Anki (web+десктоп) я с удовольствием её купил, так как полученный эффект стоит того.
Язык — это ладно, вот современный фреймворк на карточки придется долго резать. Правда, можно ограничится только непонятными моментами: столкнулся с чем-то неочевидным или новым — сделал карточку.
Все способы насильно заставить свой мозг что-то заучить — кажутся мне немного не естественными. У нас и так есть встроенный планировщик, который выбирает что запоминать, а что нет. В кэш мозга попадает только то, что нам нужно регулярно, остальное вытесняется. За редкими штуками можно ходить во внешнюю память (гугл / маны / etc). Если какая-то штука стала часто используемой — она сама подгрузится в кэш (и достаточно быстро — достаточно нескольких запросов к одному и тому-же). К тому-же, с современными скоростями доступа к информации, разница между кэшом и внешней памяти не такая и большая — сходить в кэш от десятков миллисекунд до нескольких секунд; сходить во внешнюю память => от нескольких секунд до нескольких минут.
Проблема в том, что планировщик априори считает, что менять род деятельности вам нужно не так часто и сопротивляется запоминанию большого количества информации «за один присест». А многие вещи иначе невозможно начать использовать.

Так-то да, все эти карточки помогают только «первый шаг» в какой-то области сделать.
Лимит в день. Если заниматься каждый день, а не срочно перед экзаменом/етц, планировщик покажет все карточки, и не так много дней потребуется.
[скриншот 1]
[скриншот 2]
Вот это, как мне кажется, готовый пример того, что память не создаёт программиста.

Современный программист, на JavaScript программирующий, никогда не станет набирать код «new Array('5')», потому что «['5']» набирается куда быстрее, и проще, и безошибочнее.

Не станет он набирать и код «new Array(5)», потому что создание пустого массива ненулевой длины — это извращение, которое очередным шагом доброго и полноценного решения какой-либо задачи послужить не сможет. Всем пустым массивам лучше иметь нулевую длину: во-первых, так проще опознавать их впоследствии, а во-вторых, «[]» набирается куда быстрее, и проще, и безошибочнее.

Так что помнить эти два примера не нужно; а запомнить нужно про необходимость избегать их.

(То же самое избегание, надо сказать, и «JavaScript Гарден» советует.)
А кому-то удалось импортировать карты по JS? А то у меня анки повис на этапе импорта.

Но имхо, метод интервальных повторений для языков программирования — лишен смысла. Программирование надо понимать, а не зубрить.
А вот для иностранных языков — совсем другое дело, у меня например есть набор карт английских идиом, забавная вещь.
Кто активно пользуется для своих карточек, расскажите, пожалуйста, есть ли смысл сваливать все карточки в одну колоду, или на каждую тематику лучше создавать отдельную? Как лучше организовать систему? Много колод — забудешь в каждую зайти, и мало карточек в каждой колоде. Одна колода — система проще, но всё в куче (хотя не уверен, что это плохо). Где баланс?
Есть теги. Мне кажется, можно создать урезанную колоду по тегам на основе общей.
Плюс колоды могут быть вложенными.
Я на каждую область знания создаю отдельную колоду и организую их иерархию с помощью вложенности.
Эти карточки отлично заменяются практикой. Если что-то встретилось вам раз в жизни и больше ни разу — можно и забыть. А потом вспомнить (с меньшими усилиями, потому что «уйдёт в интуицию»). Если встречаешься часто — запоминаешь.

Карточки напоминают «программиста-теоретика», то есть человека, который учит язык программирования без процесса программирования, запоминая при этом адовы конструкции «на память», а не пальцами.

Так же как с языком. Можно сколько угодно зубрить карточки, но погружения в языковую среду они не заменят.
Одно другому не мешает. Можно практиковаться и в то же время что-то запоминать с помощью карточек.
И? сидеть перебирать карточки учить снипеты? А кодить когда?
Завел колоду с правилами из статьи habrahabr.ru/post/194752/
Для себя определённую целесообразность вижу — такой подход позволяет обойти грабли с которыми я ещё не сталкивался.
Можете поделиться колодой?
Sign up to leave a comment.

Articles