Смотрю на себя и вижу, Лекс, что я -- как раз тот человек, про которого ты пишешь. Причём, одновременно я опровергаю и подтверждаю твой тезис. А значит, его нужно конкретизировать.
В чём же дело?
Я программист. Мне это нравится, и начинал я самоучкой ещё со спектрума. Но, в силу жизненных обстоятельств, нормально не программировал уже лет 16 (небольшие программки для телефона не в счёт).
Так вот, я тот самый мамонт от программирования, который постигал сначала процедурную концепцию, затем объектную, потом функциональную и т.п.
И мне хватило вот этого твоего объяснения, чтобы понять всю приведенную тобою в пример парадигму. Просто, вот так -- "оба-на, всё то, что раньше я делал циклами, теперь можно одной командой делать на множествах! Круто! Буду знать.". И если мне реально понадобится решить подобную задачу, я теперь знаю, что есть такой инструмент, и буду пользовать (и освою) именно его.
Поэтому, именно в моём лице твой пример (раскрытый на треть, наверное, статьи) неверен. Возможно, я исключение.
Однако.
Вот ты привёл в пример игру на гитаре. Физический навык. Я могу на себе показать сходную проблему -- я учил акробатику сам. Самоучка. Не представлял ни методики, ни правильной техники. В результате уже, наверное, лет с десяток мучительно переучиваюсь с переменным результатом. Что крайне печально.
Так что возможно, что твой пример верен для физических навыков, но требует конкретизации для навыков "мыслительных".
>> "оба-на, всё то, что раньше я делал циклами, теперь можно одной командой делать на множествах! Круто! Буду знать." Судя по этим словам вам несказанно повезло и вы крайне одарённый к обучению человек. Ведь если говорить не про foreach и контейнеры (которые действительно лишь синтаксический сахар), а про функциональный подход, то приходится довольно прилично поломать свой подход к программированию, чтобы закрепить это в практике.
Ведь действительно в самом начале условный "for" на питоне я буду писать пару минут, а правильный map-filter-reduce (особенно для не очень очевидного случая) можно гуглить и час и два. При этом возникает целая куча нюансов: в ситуации решения практической задачи очевидно, что вы верифицируете for куда легче, чем код в новой языковой парадигме. А если эта задача ещё и как-то ограничена по времени, то минуте к 30й поисков правильного решения (а я всего лишь про синтаксис пока!) появляются мысли: "а не бросить ли всё это нафиг и по-старинке за 3 минуты дописать". Ну и таких соображений можно привести ещё вагон и маленькую тележку.
> Ведь если говорить не про foreach и контейнеры (которые действительно лишь синтаксический сахар), а про функциональный подход, то приходится довольно прилично поломать свой подход к программированию, чтобы закрепить это в практике.
По моим наблюдениям, с контейнерами у людей всё тоже проходит совсем даже не так гладко, как хотелось бы. Простой пример из статьи - это да, но вот как чуть посложнее, у людей сразу же вот эта самая первая мысль: «ну нах, я лучше циклом сейчас зафигарю».
Причём так происходит даже в тех случаях, когда буквально «чуть» сложнее. Когда нужен не просто фильтр, а ещё свёртка или поиск.
Ну а так, да, если ещё и за пределы контейнеров выходить, то там совсем всё плохо.
Смотрю на себя и вижу, Лекс, что я -- как раз тот человек, про которого ты пишешь. Причём, одновременно я опровергаю и подтверждаю твой тезис. А значит, его нужно конкретизировать.
В чём же дело?
Я программист. Мне это нравится, и начинал я самоучкой ещё со спектрума. Но, в силу жизненных обстоятельств, нормально не программировал уже лет 16 (небольшие программки для телефона не в счёт).
Так вот, я тот самый мамонт от программирования, который постигал сначала процедурную концепцию, затем объектную, потом функциональную и т.п.
И мне хватило вот этого твоего объяснения, чтобы понять всю приведенную тобою в пример парадигму. Просто, вот так -- "оба-на, всё то, что раньше я делал циклами, теперь можно одной командой делать на множествах! Круто! Буду знать.". И если мне реально понадобится решить подобную задачу, я теперь знаю, что есть такой инструмент, и буду пользовать (и освою) именно его.
Поэтому, именно в моём лице твой пример (раскрытый на треть, наверное, статьи) неверен. Возможно, я исключение.
Однако.
Вот ты привёл в пример игру на гитаре. Физический навык. Я могу на себе показать сходную проблему -- я учил акробатику сам. Самоучка. Не представлял ни методики, ни правильной техники. В результате уже, наверное, лет с десяток мучительно переучиваюсь с переменным результатом. Что крайне печально.
Так что возможно, что твой пример верен для физических навыков, но требует конкретизации для навыков "мыслительных".
Мне так кажется.
Reply
Судя по этим словам вам несказанно повезло и вы крайне одарённый к обучению человек.
Ведь если говорить не про foreach и контейнеры (которые действительно лишь синтаксический сахар), а про функциональный подход, то приходится довольно прилично поломать свой подход к программированию, чтобы закрепить это в практике.
Ведь действительно в самом начале условный "for" на питоне я буду писать пару минут, а правильный map-filter-reduce (особенно для не очень очевидного случая) можно гуглить и час и два.
При этом возникает целая куча нюансов: в ситуации решения практической задачи очевидно, что вы верифицируете for куда легче, чем код в новой языковой парадигме. А если эта задача ещё и как-то ограничена по времени, то минуте к 30й поисков правильного решения (а я всего лишь про синтаксис пока!) появляются мысли: "а не бросить ли всё это нафиг и по-старинке за 3 минуты дописать".
Ну и таких соображений можно привести ещё вагон и маленькую тележку.
Reply
По моим наблюдениям, с контейнерами у людей всё тоже проходит совсем даже не так гладко, как хотелось бы. Простой пример из статьи - это да, но вот как чуть посложнее, у людей сразу же вот эта самая первая мысль: «ну нах, я лучше циклом сейчас зафигарю».
Причём так происходит даже в тех случаях, когда буквально «чуть» сложнее. Когда нужен не просто фильтр, а ещё свёртка или поиск.
Ну а так, да, если ещё и за пределы контейнеров выходить, то там совсем всё плохо.
Reply
Leave a comment