методологическое
Oct. 16th, 2018 03:49 pmИнтервьюировал намедни человека. Человек в-принципе быстро нащупал путь к решению на общем уровне, и собственно код писать может. Но вот посередине между этим верхним и нижним уровнем - полный затык. Как говорится, угадал все буквы, не смог назвать слово. Не может поделить задачу на части, детализировать требования к этим частям, и шаг за шагом довести до уровня кода. Хотя, казалось бы, при нормальном подходе этот уровень делается довольно-таки механически, без больших затрат ума. Пытается интуицией, но в интуиции не хватает сил для этой сложной задачи, а как применить механистический подход - не знает, даже с подсказками, подсказки не вызывают нужных ассоциаций.
И вот так если подумать в ретроспективе, то этому ведь как-то и не учат. Студентам и читателям учебников рассказывают тут общую картину, тут синтаксис языка, между ними - пустое место. Кто сам научивается, тот научивается. Кто не научивается, тот учит других :-)
Я стал задумываться, как этому научить, и пока не очень могу придумать методу. Разбирать в деталях примеры решения достаточно сложных задач, показывая, как сначала интуицией получается общая картина, а потом долбежкой доводится до полной реализации?
Вот, кстати, у хаскельщиков есть подобная фигня - у них типично написание кода на верхнем уровне, в надеждах, что работу промежуточного уровня магически сделает компилятор. Который делает, но только потом оказывается, что не то, что хотелось.
И в математике есть аналогичная проблема. То, как перподают доказательство всяких теорем, обычно имеет весьма слабое отношение к тому, как изначальный автор нашел свое решение. Это решение оказывается десять раз отредактировано и переделано, чтобы быть более простым для чтения. Но при этом напрочь теряет учебный компонент о том, как искать новые решения.
P.S. Учет и контроль, хоть нынче и хреновый:

И вот так если подумать в ретроспективе, то этому ведь как-то и не учат. Студентам и читателям учебников рассказывают тут общую картину, тут синтаксис языка, между ними - пустое место. Кто сам научивается, тот научивается. Кто не научивается, тот учит других :-)
Я стал задумываться, как этому научить, и пока не очень могу придумать методу. Разбирать в деталях примеры решения достаточно сложных задач, показывая, как сначала интуицией получается общая картина, а потом долбежкой доводится до полной реализации?
Вот, кстати, у хаскельщиков есть подобная фигня - у них типично написание кода на верхнем уровне, в надеждах, что работу промежуточного уровня магически сделает компилятор. Который делает, но только потом оказывается, что не то, что хотелось.
И в математике есть аналогичная проблема. То, как перподают доказательство всяких теорем, обычно имеет весьма слабое отношение к тому, как изначальный автор нашел свое решение. Это решение оказывается десять раз отредактировано и переделано, чтобы быть более простым для чтения. Но при этом напрочь теряет учебный компонент о том, как искать новые решения.
P.S. Учет и контроль, хоть нынче и хреновый: