Re[15]: cpp и математика
От: Evgeny.Panasyuk Россия  
Дата: 08.08.16 19:30
Оценка:
Здравствуйте, B0FEE664, Вы писали:

EP>>И повторюсь, я не про ту ассоциативность которая левая или правая, а про ту которая позволяет скобки переставлять без изменения результата. И вот она в явном виде в коде практически не выражается, при этом используется неявно (без выражения непосредственно в коде) например при параллельной редукции. Собственно это пример к моему исходному поинту о том, что даже если что-то в коде не выражается явно, это не означает что эти знания не полезны и не нужны.

BFE>Ассоциативность явно применяется во многих рекурсивных алгоритмах вида:
BFE>
BFE>f(a,b,c...)
BFE>{
BFE>  return a + f(b,c...);
BFE>}
BFE>

BFE>

Это не применение ассоциативности, а как раз наоборот — использование жёсткого порядка, а конкретно правая свёртка а-ля foldr.

Применение ассоциативности это например быстрый алгоритм возведения в натуральную степень, который как раз работает за счёт "перестановки скобок"
https://www.sgi.com/tech/stl/power.html
И даже там, ассоциативность непосредственно в коде явно никак не выражена, только в имени типа и в документации. Там нигде нету выражения (x*y)*z == x*(y*z), тем не менее это математическое свойство используются неявно.

EP>>Мои основные тезисы:

EP>>- обозначенные знания не являются жёстким требованием ко всем программистам. Да, без них получится создавать реальный код, решающий некоторые реальные задачи, и получать за это реальное вознаграждение.
EP>>- для тех кто хочет стать хорошим программистом — эти знания обязательны.
EP>>- даже если допустить что эти знания являются балластом и на практике не нужны — они всё равно проверяются на некоторых реальных собеседованиях, что немаловажно.
BFE>Согласен. Но не понятно, почему выбраны именно эти знания.

Видимо потому что это общие знания, которые широкоприменимы и широкоизвестны.

EP>>- программирование по большей части это математическая активность — так как происходит оперирование абстрактными объектами, идеями и структурами. Более того — это строгая (rigour) математическая активность, так как нет возможности пропустить "очевидные" этапы и шаги — нужно закодировать всё — от самых низших уровней до высших. ЕМНИП, подобный тезис был у Александра Степанова. С этой позиции заявления вида "программистам математика не нужна" нелепы.

BFE>Не соглашусь. В математике легко можно пропустить те или иные действия (по ошибке), в отличии от программирования.

Так я же и говорю что программирование как математическая активность более строгая нежели другие распространённые варианты — именно потому что нельзя ничего пропустить и отдать на откуп интуиции, нужно всё закодировать начиная с самого низкого уровня.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.