Показать сообщение отдельно
  #113 (permalink)  
Старый 15.03.2011, 23:18
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от aac
Мои аргументы в следующем. Разумеется, чаще нужны, собственно, не знания матана, а именно тип мышления, который приобретается его изучением. (т.е. математик - это программист без знания языков программирования?) Матанализ, например, начинает с самых основ, теории множеств, и строго доказывает каждое последующее утверждение, каким бы очевидным или наоборот - невероятным оно ни было. Также, изучая матан, студент привыкает свободно оперировать абстрактными объектами. (только объекты другие и оперируются по-другому) Никто не будет спорить что программирование серьезного проекта - требует построения и оперирование большим количеством абстракций?
Это касается и других математических дисциплин, но матанализ не только является основой для них, но и самый строгий из всех. Теоремы эти доказывались лучшими умами, и тренировка именно логического, научного мышления которую дает матанализ переоценить трудно. (а применить еще труднее, по-крайней мере в не науке)
Разумеется, если не вникать в доказательства теорем, не додумывать их самому, не восхищаться теми невероятно изобретательными идеями, использовавшимися при решении, не воспринимать строгую логичность системы, не обмысливать тот путь который проделала наука, а вместо этого тупо зазубривать определения, списывать доказательства теорем, заучивать методы решения интегралов, списывать с решебников, польза от матана равна нулю. (безусловно, это интересно) То что вы в процессе запомните пару теорем и пару способов решения стандартных задачек ( решенных кем-то за несколько сотен лет до вас ) - конечно не принесет никакой пользы ни в жизни ни в работе. Увы, для большинства - это тот максимум который остается после изучения матана. Отсюда и растут уши мифа о его бесполезности. Большинство его просто «ниасиливает» ( а преподаватели, увы, ставят оценки, как будто "асиливает", чем вводят в заблуждение ).

Также совершенно бесполезен матан для "программирования" в стиле "стырил компонент там - приляпал его с помощью скопипащенного кода здесь». (да, к сожелению, не все преодолевают этот порог) Но никто из вас ведь не думает что он всю свою жизнь будет заниматься именно таким программированием? Такому программированию не нужно учиться 5 лет в университете, этому можно научиться самому, если есть голова на плечах и гугл. mycoding утверждает, что все, чему он научился, он научился сам. Я этого не отрицаю - то чему его пытались научить другие, он не понял. Но хвастаться тем, чему он научился сам – на его месте не стал бы.
Нужно отличать шелуху в виде "я разобрался как вставить такой-то виджет в таком-то фреймворке" от, собственно, высокого уровня программирования, (и тут Остапа понесло) когда человек способен построить верную математическую модель задачи (что человек, не изучавший матан не может), (если задача по матану, то понятно, конечно, иначе хотелось бы услышать конкретный пример) продумать соответствующие абстракции ( что часто оказывается слишком сложно для человека, который к этому не привык), (никто не привык, пока сам не попробовал) спроектировать все участвующие объекты и зависимости между ними, выбрать эффективные алгоритмы ( что оказывается темным лесом для не изучавших “computer science”), оценить возможные риски ( а для этого в сложных случаях нужно иметь представление о матcтате ), (можно конкретный пример?) доказать ( именно доказать, а не "сделаем а там посмотрим") отсутствие критичных проблем в данной реализации ( а представление о том, что такое доказательство дается матаном), (и здесь пример) найти хитрые каверзные случаи
и нестандартные ситуации когда этот код не будет работать ( а поиск контрпримеров к разным правдоподобным утверждениям – очень частое упражнение в матане) и многое, многое другое.

Да, тренировать абстрактное мышление можно и другими способами.
Возможно, даже есть лучше. (именно, почему надо изучать программирование с помощью математики? Почему вместо этого не поизучать разные парадигмы/языки, если требуется базовая подготовка, haskel, lisp, smalltalk, например) Но совершенно точно не нужно заменять это изучением "полезных" по мнению mycoding предметов. Языки и технологии устаревают очень быстро, какой-то технологии может еще не существовать когда человек приходит в университет, и она же может быть уже устаревшей, когда он его закончит. Человек, который изучал конкретные языки и фреймворки вместо фундаментальных подходов, возможно да, получит некоторое преимущество сразу после выпуска. И то, только в том случае, если устроится работать туда, где используют ту же технологию, которую он изучал. Но это преимущество сменится безнадежным отставанием уже через полгода от человека, который хорошо был готов фундаментально. (не фундаментально, а математически, и то, только в том случае, если устроится работать туда, где используют матан) Раз за разом «нематанщик» будет удивляться как этот «матанщик» постоянно придумывает более эффективные алгоритмы, (хотя вместо этого он мог сделать что-то действительно полезное для проекта, а так сэкономил пару наносекунд и код стал запутаннее) почему его решения более расширяемы, почему ему не приходится переделывать всю подсистему из-за найденной серьезной дыры в безопасности и т.д. (и, конечно же, все дело в матане)
Напоследок скажу, что все это имеет смысл для «настоящего» программирования. ("Конечно, эзотерики в это никогда не врубятся. Они считают, что все мы дураки и говноеды, а они там с райских тарелочек мед кушают. Но, вопервых, они не правы, а, во-вторых, они тоже не правы. Едят они то же самое говно, но с более умным видом. И гонят они такое же фуфло, как и мы, но считают его сокровенной правдой." Дмитрий Гайдук) То, что многие снисходительно именуют «кодерством», а именно прямолинейное кодирование вещей по самоочевидной схеме ( или подробно проработанному ТЗ ), конечно, не требует знания матана, а только знание конкретных технологий и языков. Но мне хотелось бы, чтобы у нас было поменьше кодеров, и побольше программистов. (хоть в чем-то мы согласны)
в общем, остается примерно два вопроса: 1) почему настоящие герои всегда идут в обход, 2) и чем занимаются те, для кого это не обход
Ответить с цитированием