Показать сообщение отдельно
  #98 (permalink)  
Старый 15.03.2011, 21:28
aac aac вне форума
Интересующийся
Отправить личное сообщение для aac Посмотреть профиль Найти все сообщения от aac
 
Регистрация: 14.03.2011
Сообщений: 18

По поводу нужности матана программисту - это очень большая тема, которую походя не затронешь.
Открывать ее не особо хочется, думаю, многие могут сказать лучше, чем я. Но, все же выскажусь.
Сначала, чтобы не использовать много слов, в дальнейшем тексте под матаном я буду понимать целый ряд математических дисциплин, а именно, матанализ, алгебра, дискретная математика, математическая статистика и др. Как я понял из многочисленных постов mycoding ( началось еще на другом форуме) он считает, что это все преподавать будущему программисту излишне. Также сюда можно отнести то, что называется computer science - теория программирования. Где изучают такие непонятные и, казалось бы, неприменимые вещи, как порядок сложности алгоритма, вычислимость, полнота, формальные грамматики и т.д.
mycoding, и похоже некоторые другие люди на этом форуме, хотели бы, чтобы в университете вместо этого преподавались конкретные «востребованные» языки программирования ( например php, javascript), или даже конкретные библиотеки ( типа openGL или скажем, extJs). Тогда, дескать, от университета действительно будет польза, и при устройстве на работу выпускника не будут посылать на**й ( цитируя mycoding)

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

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

Да, тренировать абстрактное мышление можно и другими способами.
Возможно, даже есть лучше. Но совершенно точно не нужно заменять это изучением "полезных" по мнению mycoding предметов. Языки и технологии устаревают очень быстро, какой-то технологии может еще не существовать когда человек приходит в университет, и она же может быть уже устаревшей, когда он его закончит. Человек, который изучал конкретные языки и фреймворки вместо фундаментальных подходов, возможно да, получит некоторое преимущество сразу после выпуска. И то, только в том случае, если устроится работать туда, где используют ту же технологию, которую он изучал. Но это преимущество сменится безнадежным отставанием уже через полгода от человека, который хорошо был готов фундаментально. Раз за разом «нематанщик» будет удивляться как этот «матанщик» постоянно придумывает более эффективные алгоритмы, почему его решения более расширяемы, почему ему не приходится переделывать всю подсистему из-за найденной серьезной дыры в безопасности и т.д.
Напоследок скажу, что все это имеет смысл для «настоящего» программирования. То, что многие снисходительно именуют «кодерством», а именно прямолинейное кодирование вещей по самоочевидной схеме ( или подробно проработанному ТЗ ), конечно, не требует знания матана, а только знание конкретных технологий и языков. Но мне хотелось бы, чтобы у нас было поменьше кодеров, и побольше программистов.

Я ответил на ваш вопрос? Это конечно, всего лишь мое мнение, потвержденное всего лишь моим опытом. Чем более крупные проекты я делаю, тем с большей теплотой вспоминаю свой университет. Признаюсь, мысли о ненужности всего этого меня тоже в свое время посещали ( к концу обучения в универе), но потом я повзрослел и изменил свою точку зрения.

Последний раз редактировалось aac, 15.03.2011 в 21:36.
Ответить с цитированием