Заметил, что большинство ИТ-специалистов и программистов с которыми я общался считают, что математика (в частности дискретная математика, которая играет большую роль в теории алгоритмов), теория алгоритмов (в частности асимптотический анализ, конечные автоматы, классы сложности) вообще не нужны современному программисту.
Для меня это звучит дико, поскольку считаю, что без глубокого понимания теории невозможно писать качественное ПО, с поддержкой масштабирования, с адекватной производительностью и т.д., если только не идёт речь пожизненном написании быдло-сайтиков или криворукого билинга для какой нибудь шаражки.
Нужно ли понимание общих теоретических концепций для тру программирования?
Здравствуйте, hal9000, Вы писали:
H>если только не идёт речь пожизненном написании быдло-сайтиков или криворукого билинга для какой нибудь шаражки.
Если отбросить эмоциональную составляющую, твою фразу можно переписать так:
Если только речь не идет о 95% проектов.
H>Нужно ли понимание общих теоретических концепций для тру программирования?
Зависит от того, что вы понимаете под "тру программированием". Если то, чем занимается основная масса программистов, то не нужна. Если передовые, наукоемкие области, то скорее всего нужна.
Re: Многие думают, что математика и теория вообще не нужна!
Здравствуйте, hal9000, Вы писали: H>современному программисту.
Кто такой "современный программист", чем он занимается на рабочем месте?
H>если только не идёт речь пожизненном написании быдло-сайтиков или криворукого билинга для какой нибудь шаражки.
Ты так говоришь, как будто это что-то плохое.
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Lloyd, Вы писали:
H>>Нужно ли понимание общих теоретических концепций для тру программирования?
L>Зависит от того, что вы понимаете под "тру программированием". Если то, чем занимается основная масса программистов, то не нужна. Если передовые, наукоемкие области, то скорее всего нужна.
Я имею ввиду, к примеру, программирование компиляторов, распределённые вычисления и файловые системы, антивирусы, новые модули ядра ОС. Вообщем hi-end программинг. Я знаю, что большинство проектов достаточно заурядны с точки зрения сложности, но это же не значит, что стремится не к чему вообще (поэтому и сказал про пожизненное программирование заурядных систем).
То есть виденье мира у большинства с кем я общался такое, что в принципе все эти теории и книги (вроде Кнута) просто барахло, и всё абсолютно можно заменить голой практикой. С моей точки зрения (больше с точки зрения тех, кто учится и преподаёт где-нибудь в MIT) эта концепция (отрицания нужности стремления к глубокому пониманию фундаметальных основ) достаточно ущербна и скучна, так как не предполагает развитие себя как настоящего маэстро программирования.
Re[3]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, hal9000, Вы писали:
L>>Зависит от того, что вы понимаете под "тру программированием". Если то, чем занимается основная масса программистов, то не нужна. Если передовые, наукоемкие области, то скорее всего нужна.
H>Я имею ввиду, к примеру, программирование компиляторов, распределённые вычисления и файловые системы, антивирусы, новые модули ядра ОС. Вообщем hi-end программинг. Я знаю, что большинство проектов достаточно заурядны с точки зрения сложности, но это же не значит, что стремится не к чему вообще (поэтому и сказал про пожизненное программирование заурядных систем).
Из перечисленного хардкорная математика нужна разве что в написании компиляторов, а вот по поводу остальных пунктов у меня есть сомнения по применимости математики.
H>То есть виденье мира у большинства с кем я общался такое, что в принципе все эти теории и книги (вроде Кнута) просто барахло, и всё абсолютно можно заменить голой практикой. С моей точки зрения (больше с точки зрения тех, кто учится и преподаёт где-нибудь в MIT) эта концепция (отрицания нужности стремления к глубокому пониманию фундаметальных основ) достаточно ущербна и скучна, так как не предполагает развитие себя как настоящего маэстро программирования.
Пограммирование — оно разное. В каких-то областях чтобы стать маэстро действительно нужна математика, в каких-то — не нужна.
Re: Многие думают, что математика и теория вообще не нужна!
Здравствуйте, hal9000, Вы писали:
H>Для меня это звучит дико, поскольку считаю, что без глубокого понимания теории невозможно писать качественное ПО, с поддержкой масштабирования, с адекватной производительностью и т.д., если только не идёт речь пожизненном написании быдло-сайтиков или криворукого билинга для какой нибудь шаражки.
И много вы видели проектов где качество является основным требованием? И почему вы думаете что компиляторы, модули ядра ОС и антивирусы это не гора г*нокода, а нечто космическое?
H>С моей точки зрения (больше с точки зрения тех, кто учится и преподаёт где-нибудь в MIT)
Вы из MIT?
... << RSDN@Home 1.2.0 alpha 4 rev. 1138>>
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, MescalitoPeyot, Вы писали:
MP>И много вы видели проектов где качество является основным требованием? И почему вы думаете что компиляторы, модули ядра ОС и антивирусы это не гора г*нокода, а нечто космическое?
Космическая гора говнокода.
Re: Многие думают, что математика и теория вообще не нужна!
Здравствуйте, Lloyd, Вы писали:
L>Из перечисленного хардкорная математика нужна разве что в написании компиляторов, а вот по поводу остальных пунктов у меня есть сомнения по применимости математики.
Из этого утверждения следует, что следующие труды (несмотря на то, что это бестселлеры и написаны ИТ-гуру) абсолютно бесполезны для программистов и утверждения авторов этих трудов о том, что данные знания нужны для всех кто серьёзно изучает информатику, неправильны:
Серия книг Д.Э. Кнута "Исскуство программирования" и отдельный труд посвящённый математическому введению "Конкретная математика;
Алгоритмы: построение и анализ. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн;
Введение в теорию автоматов, языков и вычислений. Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман;
и тому подобные книги.
ИМХО: если человек знаком с основами дискретной математики (на самом деле любой математики), то его программы будут качественней, чем у человека который вообще не знаком с математикой. Не обязательно напрямую применять математику при написании кода, просто мозги человека понимающего теорию более упорядочены и он сможет найти в среднем более качественное и красивое решение. Человек не знающий математику сильно ограничен в прочтении литературы или в изучении нового алгоритма.
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, MescalitoPeyot, Вы писали:
MP>И много вы видели проектов где качество является основным требованием? И почему вы думаете что компиляторы, модули ядра ОС и антивирусы это не гора г*нокода, а нечто космическое?
ИМХО, чтобы вырасти для нового уровня, надо стремится писать лучше, чем требуется, если конечно целью не является быстрое срубание капустки с заказчика.
MP>Вы из MIT?
К сожалению, нет Так получается, что почти вся литература, которую я читаю либо относится к лекциям в MIT или Stanford. Мне туда не светит, но мне очень нравятся идеи, которые излагают в этих книгах.
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, hal9000, Вы писали:
H>>если только не идёт речь пожизненном написании быдло-сайтиков или криворукого билинга для какой нибудь шаражки.
L>Если отбросить эмоциональную составляющую, твою фразу можно переписать так: L>
L>Если только речь не идет о 95% проектов.
Я вот пишу говнонетленку из серии криворукого биллинга и веп-два-точка-ноль. Короче, однозначно в эти 95%.
Млин, как же меня достали программисты, не понимающие почему перебирать n^2 элементов массива хуже чем n. И я не могу этого обяснить, не доходит. Правда, влияние административными методами в последнее время дало положительные результаты. Но тоска зеленая не проходит...
На выпускников MIT нашего нищебродского бюджета не хватает.
Re: Многие думают, что математика и теория вообще не нужна!
Здравствуйте, hal9000, Вы писали:
H>Здравствуйте.
H>Заметил, что большинство ИТ-специалистов и программистов с которыми я общался считают, что математика (в частности дискретная математика, которая играет большую роль в теории алгоритмов), теория алгоритмов (в частности асимптотический анализ, конечные автоматы, классы сложности) вообще не нужны современному программисту.
Для тех, кто формочки клепает — не нужна.
Течёт вода Кубань-реки куда велят большевики.
Re[3]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, mymuss, Вы писали: M>Млин, как же меня достали программисты, не понимающие почему перебирать n^2 элементов массива хуже чем n.
Действительно, а почему?
Re[4]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, Mr.Cat, Вы писали:
M>>Млин, как же меня достали программисты, не понимающие почему перебирать n^2 элементов массива хуже чем n. MC>Действительно, а почему?
Тормозит сильно.
Re[2]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, hal9000, Вы писали:
H>ИМХО, чтобы вырасти для нового уровня, надо стремится писать лучше, чем требуется, если конечно целью не является быстрое срубание капустки с заказчика.
Лучше — бывает по-разному, треугольник цена-качество-скорость еще никто не отменял
... << RSDN@Home 1.2.0 alpha 4 rev. 1138>>
Re[5]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, hal9000, Вы писали:
H>ИМХО: если человек знаком с основами дискретной математики (на самом деле любой математики), то его программы будут качественней, чем у человека который вообще не знаком с математикой. Не обязательно напрямую применять математику при написании кода, просто мозги человека понимающего теорию более упорядочены и он сможет найти в среднем более качественное и красивое решение. Человек не знающий математику сильно ограничен в прочтении литературы или в изучении нового алгоритма.
Раз уж мы в КСВ, то без всяких имхо:
Любому нормальному разработчику упомянутые выше Кнут, Хопкрофт и сотоварищи в полном объеме не нужны. Если нужны — значит это специфика достаточно узкой предметной области — геймдева с его аналиткой/линейкой, компиляторостроения с его алгебрами, языками, грамматиками и т. д. Конечно, "вообще не знаком с математикой" — это передергивание: что такое O(..) и конечный автомат знать лучше бы всем, но двадцать алгоритмов сортировки и отличие LL и LR не нужны практически никому. Что касается упорядочивания мозга, то SICP и тот же Haskell лично на меня оказали на порядок большее влияние чем алгоритмы, грамматики и прочие Кнуты с которыми все так почему-то носятся.
P.S.: Эх, если бы студентам вместо Кнута какой-нибудь Совершенный код (или иную болтологию сходной тематики) подсовывали, насколько бы мир стал прекраснее...
... << RSDN@Home 1.2.0 alpha 4 rev. 1138>>
Re[3]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, mymuss, Вы писали:
M>Млин, как же меня достали программисты, не понимающие почему перебирать n^2 элементов массива хуже чем n. И я не могу этого обяснить, не доходит. Правда, влияние административными методами в последнее время дало положительные результаты. Но тоска зеленая не проходит...
свой человек! Я считаю, что есть два типа людей, которые в состоянии осознать необходимую связь между двоичной системой счисления (под этим подразумеваю любые "отдалённые" фундаменатльные знания) и адекватным восприятием ИТ-мира, и которые не в состоянии этого осознать, но у которых дошли руки до клавы
Я придерживаюсь идеологии старой школы: математика, алгоритмы, ассемблер — вот что должен знать каждый (хотя бы самые основы). Я начинал с программирования на ассемблере на Zilog Z80 и хорошо бы было, если бы КАЖДОГО современного тинейджера-программера на пару месяцев пересадить на Z80 и ему подобные процессоры с 48K ОЗУ.
Сейчас пишут все кому не лень, современные высокоуровневые языки со всякими рюшечками готовыми классами позволяют программировать чуть ли не обезьянам
Как меня достали горе писатели на перловке или пыхе, они пишут, а мне приходится отрубать весь сайт, который (порой один скриптик может отправить в коматозное состояние весь сервер) положил весь сервер с 500 сайтами. А когда горе хозяин быдло сайтика жалуется на меня со словами, мол мой программист говорит, что у него всё ОК в коде, мне приходится тратить часы, чтобы потом найти какой нибудь горе модуль или класс, который написан через анальное отверстие
Re[6]: Многие думают, что математика и теория вообще не нужн
Здравствуйте, MescalitoPeyot, Вы писали:
MP>Раз уж мы в КСВ, то без всяких имхо: MP>Любому нормальному разработчику упомянутые выше Кнут, Хопкрофт и сотоварищи в полном объеме не нужны. Если нужны — значит это специфика достаточно узкой предметной области — геймдева с его аналиткой/линейкой, компиляторостроения с его алгебрами, языками, грамматиками и т. д. Конечно, "вообще не знаком с математикой" — это передергивание: что такое O(..) и конечный автомат знать лучше бы всем, но двадцать алгоритмов сортировки и отличие LL и LR не нужны практически никому. Что касается упорядочивания мозга, то SICP и тот же Haskell лично на меня оказали на порядок большее влияние чем алгоритмы, грамматики и прочие Кнуты с которыми все так почему-то носятся.
Об этом я и говорю, глупо пытаться охватить всё, надо просто быть фундаменталистом-практиком, который способен открыть книжку Кнута и найти нужный алгоритм, но не просто срисовать его как чурбан , а ещё понять комбинаторные выкладки описывающие его суть, и понять почему он O(n*log_n), а не O(n). И всё это желательно понимать без тормозов, то есть быть подготовленным к восприятию такого материала прямо на рабочем месте.
MP>P.S.: Эх, если бы студентам вместо Кнута какой-нибудь Совершенный код (или иную болтологию сходной тематики) подсовывали, насколько бы мир стал прекраснее...
"Совершенный код" Макконнелла очень хорошая книжка и её стоит читать ДО Кнута. Совместно и в правильном порядке с определённой глубиной восприятия (не супер досконально, но и не супер поверхностно) эти книги очень хорошо способствуют выпрямлению рук