Предыдущий пост Поделиться Следующий пост
Об учиться
sceptic
slobin

Изучать что-либо можно четырьмя способами: "как устроено" и "как пользоваться", "по книжкам" и "на практике". В смысле, это такой квадрат два на два. Лично я всегда предпочитал левый верхний угол (прочитать книжку о том, как оно устроено), но в остальных трёх тоже приходится бывать. Книжка о том, как пользоваться, называется "инструкция", и когда инструкция есть -- это гораздо лучше, чем когда её нет. Но чертежей и объяснений принципов работы она не заменяет! А вот обучение "на практике" -- это два противоположных и мешающих друг другу подхода. Причём, похоже, мешающих на уровне физиологии мозга.

"На практике как пользоваться" -- это подражание best practice и выработка хороших привычек. А "на практике как устроено" -- это ЛОМАТЬ вещи, чтобы заглянуть внутрь. И вот выработка привычки делать правильно реально мешает что-либо ломать с исследовательскими целями, на уровне ментальной блокировки. Поэтому я ко всяческим тренировкам отношусь очень настороженно. Другое дело, что, когда чем-то начинаешь реально заниматься, а не только изучать, тренировка происходит сама собой. И прилагающееся к ней закостенение в правильных формах.

Но вышесказанное, разумеется, экстремистский взгляд и одна сторона медали. Подражать хорошим практикам (ну или хотя бы средним... "практикам" здесь важнее, чем "хорошим") всё равно приходится. Я, собственно, хотел написать пример (и даже уже написал, в личной переписке), но вместо этого подвёл теоретическую базу. :-) В заключении пара цитат:

There is literally no programming language I’ve personally learned through a book or formal teaching. I’ve often read books after I know a language because it’s fun and instructive, but it’s always started out as “learn extreme basics” followed by “look at existing code, tweak stuff, and write your own code” @

Вот у человека подход прямо противоположный моему. Я так не умею, от слова "совсем". А когда пытаюсь, застреваю на тех вариантах, которых заработали первыми (как правило, плохих). Поэтому стараюсь так не делать, ну или хотя бы делать с осознанием последствий.

Approaches vary from person to person. The best way is to read the docs. One approach I used is to go through random Rust repos on github and understand how code is structured and other stuff. Also work on a proper project while learning as this ensures you touch the depths of the language. @

Вот это уже ближе. Собственно, в следующем посте я собираюсь рассказать, как я поприключался в случайном репозитории на Расте. Но да, "read the docs" на первом месте, а это максимум на втором.

... Полставки верховного главнокомандующего ...

Метки:

  • 1
Обычно я хочу комплект из формальной доки и хаутушки. И песочницу :)))

Песочница как раз спасает от помешательства

Edited at 2018-03-05 14:43 (UTC)

А "на практике как устроено" -- это ЛОМАТЬ вещи, чтобы заглянуть внутрь - неверно. Не ломать, а разбирать. И тут в равной степени могут помочь как практический опыт разбирания подобных вещей, так и общетеоретическое понимание того, как они устроены.

Правильно, с минимальными повреждениями разобрать объект - это само по себе неплохая проверка того, хорошо ли ты понимаешь данного объекта внутреннее устройство.

Не, Фауст, это когда ты уже знаешь, как оно устроено. А речь идет о том, что до начала практики ты этого не знаешь, и узнаешь посредством оной.

Сейчас книжки сильно потеснены такими штуками как Coursera, Edx, Udemy. По крайней мере для начальных уровней.

Это если человек может воспринимать информацию с видео. А не только я, старая перечница, но и сильно более молодые люди часто могут "в видео только пыриться, а понимать - нужен текст".

i testify, video is for idiots.
if you need to UNDERSTAND smthg, you have to have a piece of text before your eyes.

once, it was a wow-moment for me: video culinary recipe.
i thought: this is a wonderfully practical application of otherwise useless video (as a format of communication)!

turned out to be a useless mess -- you're physically unable to jerk the "rewind" button with the appropriate frequency and accuracy -- TEXT MAKES THE "REWIND" FUNCTION IMPLICIT TO THE POINT OF INVISIBILITY.

(kogda ja byl malenjkij) ja uchil jazyki po uchebnikam, a (kogda vyros) mne stalo dostavatj chtenija chuzhogo koda. teperj ja mogu KAGBY vozstanovitj obraz uchebnika iz prakticheskix tekstov na neizvestnom jazyke. v obchem sluchaje eto ne rabotajet, no boljshinstvo jazykov nastoljko poxozhi chto znanije 10 drugix pozvoljajet znatj vse (ili (jesli ne poxozhi) kak minimum pereinachivajut tot zhe nabor bazovyx principov)

P.S. ja razreshil problemu o polozhenii zapjatoj pri "chto":
"chto" eto CONTROL STRUCTURE, zapjataja ne nuzhna.
"nastoljko...chto" eto tozhe control structure.

i konechno vsegda besit kogda podmenjajut doku instrukcijej.
vsegda schital instrukcii tupym gavnom ((dazhe tam gde oni nuzhny) oni napisany tak chtoby zaputatj, i nikogda ne otvechajut na realjnyje prakticheskije voprosy)

У меня "на практике как устроено" работает только в виде "наблюдение за практикой того, кто уже знает, и осознанное подражание". Ну, работает частный случай "узнать, как устроена данная конкретная хрень", если я уже знаю, как вообще бывают устроены подобные хрени. Хотя бы в общих чертах. Иначе я не отличу устройство от особенностей реализации.

Необходимый угол квадрата — "на практике как пользоваться". Без него результата изучения не будет. Остальные, вообще говоря, обходимы. Для приличного качества результата крайне желательно узнать, как устроено, но каким именно способом ­— это кому как.

Я узнаю, как устроено, сначала по книжке, а потом дорихтовываю в процессе пользования на практике. Обычно стараюсь прочесть книжку до начала пользования. При этом, какие practices — best, а какие нет, я уже решаю сам.

// Без него результата изучения не будет.

Ты настолько мудр, что с тобой страшно общаться. И да, я готов повторить это второй раз. Но в общем да, во всём этом моём посте был в том числе и оттенок здоровой самокритики: до единственно необходимого угла квадрата я могу и не дойти. Собственно, регулярно не дохожу. Но, с другой стороны, "бросай страдать фигнёй, бери лопату" тоже какая-то односторонняя позиция, нет?

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

Путаница между "как устроено" и "особенность реализации", мне кажется, не самая существенная проблема. Она существенная только если есть много разных реализаций (в пространстве или во времени, то есть система развивается), а тебе дали на поломать только одну. Тогда да, проблема, но это не всегда так.

Но это и с книжками проблема. Я в своей любимой узкой области вообще пришёл к принципу "не изучать языки программирования до появления версии 1.0" (предполагаем, что консенсус по поводу смысла выражения "версия 1.0" есть). Потому что иначе мозги застревают в какой-нибудь особенности, которая потом выкидывается -- а у меня в мозгах осталась.

... Invalid user - replace and hit any key to continue ...

"на практике как пользоваться". Без него результата изучения не будет.

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

Пример. Я как-то капитально застрял на необходимости развинтить дверную ручку. Мастера, делавшие мне ремонт, поставили что-то довольно современное, к ней даже нашлись инструкции в сети :) - но в них говорилось нечто вроде "*снимите* декоративную крышку и отвинтите...". Я залип на этой самой крышке - ни стопоров, ни винтиков, и с разумным усилием не снимается. И только из видео какого-то мастера стало понятно, что крышка эта *отвинчивается* :)

А мне вот кажется очень важной оговорка во второй цитате - одновременно с изучением инструмента нужно иметь источник задач, на которых инструмент может проявить свои положительные качества. Например изучать PowerShell не будучи админом системы на Windows или R не занимаясь статистикой наверное не очень продуктивно.

Важно потому, что иначе есть риск, увидев лучшие практики, не понять, в чём же они лучшие и сколько усилий экономят. А если насущная задача решена с помощью нового приёма, появляется мотивация запомнить и копать дальше.

Где вы такие книжки берете

(Анонимно)
Для меня проблема,
что в большинстве "мануалов"
даются какие-то совсем уж примитивные бэйсиксы.
А на вопрос "а как сделать что-то немного более сложное" -- ищи свищи. %(

  • 1
?

Log in

No account? Create an account