Извиняюсь, конечно, что задаю глупые вопросы. Знаю, вы уже устали отвечать на такие вопросы. Но всё же надеюсь. СУТЬ ВОПРОСА. Программист без знания математики вовсе не программист, правильно? Чтобы написать простенький компилятор нужно знать кучу алгоритмов и различных понятий! А если человек не рубит матчасть, значит и написать он ничего не сможет своего, т.е. придется повторять созданное другими. Вот говорят же, что ЯП это всего лишь инструмент программиста, а что тогда является знанием? Ответ напрашивается: математика. Я прав?
micro Да. Но для создания компилятора математику знать не надо, надо уметь искать. Не обязательное но достаточное условие - что бы начать изобретать свое надо досконально знать предметную область. Если всё сводить в абсолют, то вы правы.
Программисты бывают разные. Есть куча прикладных кодеров, которые о математике или не слышали или давно забыли. В этом случае существенно большее значение имеет опыт решения разных практических ситуаций. Понимание как работает фреймворк, winAPI и т.д. тоже важную роль играет. Вообще конторы, в которых реально можно работать математиком-программистом, можно по пальцам одной руки пересчитать в любом городе замкадья.
Нужно заметить, что у одних, как правило, отвратительно получается делать другое. Математики часто пишут не читаемый гoвнoкoд, а у кодеров зачастую проблемы с выбором оптимальных алгоритмов, методов решения.
micro имхо все зависит от сложности компилятора - для простого быть может хватит обычного курса вышки
Что-то у меня такой ответ не напрашивается. Я написал немало программ, которые работают и приносят пользу кому-то, в том числе мне. При этом из математики там add, sub, mul, div, or, xor, and, not и ничего более. Один опытный IT-руководитель (забыл кто) написал в своей книге: программист должен быть скорее писателем, чем математиком, потому что для него очень важно уметь выразить свою мысль в письменной форме. А меня учили, что программист как и любой инженер должен в первую очередь знать ту предметную область, над которой он работает. То есть в идеале - знать вообще как мир устроен Потому что заказчики гораздо чаще вообще никак не могут выразить чего же они хотят на самом деле. Один руководитель, работавший в сфере IT ещё с советских времён, рассказывал, что по официальной статистике только 30% программных продуктов полностью соответствует изначальным требованиям. Хотя это всё сугубо имхо... возможно тупой кодер действительно должен тупо кодить и не задавать глупых вопросов...
Все зависит от задачи. Криптоалгоритмы - математика. Разработка алгоритма, доказательство стойкости - высшая математика. Реализация - в зависимости от, может быть достаточно среднего образования. Графика, особенно трехмерная - математика. Плоская графика - хватит в объеме средней школы. Симуляция чего-то - с нуля и разработкой алгоритма - гениальность. Математика? не лишне, но не принципиально. Пример - сложные достаточно системы, биологические взаимодействия, колебания популяций, химические реакции - моделируются системами иногда даже не дифференциальных, а обычных уравнений. Итерационные модели, к примеру. Что нужно (курить) знать, чтобы придумать такое? Обычно здравый смысл, общий кругозор, некоторая математика желательна... Но итог - то, что придется программировать, по уже придуманному алгоритму - как правило опять же математика в рамках средней школы. Это - круг специальных программ. А если перейдем на прикладные, типа базы данных, пользовательский интерфейс, операции с файлами, текстом, поиск - сам ведь ничего придумывать не будешь, все придумано. Берешь алгоритм, реализуешь на чем угодно, рисуешь интерфейс, одни и те же функции вставляешь - тут можно вообще быть гуманитарием-программистом, и кроме таблицы умножения, ничего не знать в математике. Ничего подобного. Для написания своего надо быть самоаналитиком. Психологом немного. Делаешь задачу руками, или частично руками, потом записываешь по шагам, вот тебе и алгоритм. Пойми, как ты умножаешь в уме 2 числа - и вот тебе алгоритм умножения. Изложи по шагам, как ты определяешь квадратный корень из числа - вот тебе алгоритм нахождения корня. Не самый оптимальный, но работающий. Надо сделать что-то с кучей файлов - определи КАК это сделает человек, и запрограммируй. Строго говоря, все программирование начинается и заканчивается на этапе детального описания задачи. Кто-то что-то хочет - выясняешь что именно, и как должно работать. Все, есть описание - можешь считать есть алгоритм. Дальше - работа оператора.
Есть еще корпоративные системы и автоматизация. Кстати, весьма востребованные. Серьёзной математикой там и не пахнет, да зачастую даже и серьёзными алгоритмами. Там важнее способность работать с большими объёмами кода. А еще есть web... Вобщем, не знания нужны, а навыки. Включая навык получения знаний
Если ты сможешь доказать теорему пуанкаре, как тебе это поможет написать систему учёта остатков на складе продукции завода "пупкин и компаньоны" на MSSQL+ADO.NET? И во-вторых, какой раздел математики? Их много: и системы краевых уравнений и анализ и геометрия (которая в свою очередь тоже делиться по-специализации) и булевая алгебра и т.д. Математика давно уже разбилась на множество отдельных направлений.
Не обязательно быть перельманом, чтобы быть хорошим кодером. Просто возьми сам себя и проверь, как я в своё время. Ну к примеру вот так. 1) Напиши программу, которая исп твой алгоритм построения линии. , т.е. изобрети снова велосипед, но по своему. 2) Тоже, но уже не линии, а окружности 3) Запрограммируй спираль 2d,3d 4) В торренте версии 1.6.1 в хелпе красивый 2d эффект 5) Что-нибудь из фракталов, множества Ещё классно была придумана блудексом задача про тушканов мутантов, там уже графы, очень прикольная задачка. А ещё лучше почитать олимпиадные задачки.
PaviaMentor skomarov FatMoon Давайте начистоту - на васме нету ни одного действительно хорошего математика. Есть люди, которые это дело "подизучили", часто в рамках потребности работать с крипторами и ко, но чтобы иметь фундаментальное и полное знание - ни одного. Таких кадров вообще наверное можно встретить только на олимпиадах по программированию. Проблема в том, что совместить основательную матподготовку с глубинным кодокопательством практически нереально, и то и другое требует массу времени и сил. Так что среди математиков программисты довольно средние, хотя и в состоянии спроектировать и заоптимизировать алгоритм с математической точки зрения.
Кажется Ландау - последний физик с полным и ясным представлением этой науки в целом. Ах да, он не знал ассемблер )) - useless ) Очень в_общем Вы сказали. Хотя даже наши "приматы", на потоке, кажется никогда не снизойдут до смысловых моделей на уровне банальной mov eax,ebx ) Там полет выше. Хотя вот книги Кнута достаточно математичны и применимы для программирования imho. Думаю - нужна математика, пусть учит )
Да вообще по-моему это просто стереотип из лохматых годов, когда ЭВМ создавали математики и сами же на них решали свои мудрёные задачи. Сегодня такие задачи тоже есть и для их решения строятся суперкомпьютеры, но появляется всё больше новых и новых задач для ПК и растущих сетей из этих ПК. Комп - это тупая железка, ЦП по возможностям не превосходит калькулятор 80-х годов, но его прикол в том, что он все эти вычисления делает сам и с бешеной скоростью. Посмотрите, математические задачи, которые человек решает одним способом, для машин перекладываются в другой - состоящий из множества мелких операций. Машина перестала быть вычислительной. Она скорее моделирующая. Да, считается что моделирование - тоже математика. Но я считаю, что тут математика - просто инструмент, такой же как язык программирования. Кто владеет этим инструментом - делает математические алгоритмы (то же шифрование, графика и т.п.), а кто не владеет - берёт уже созданные алгоритмы бесплатно или за деньги и спокойно обходится своими навыками.
_sheva740 Он был математиком. А в физике он прикладывал свои знания, причем очень фундаментально. Но это вопрос человека. Причем четно сказать ИХМО испортил физику, вернее физиков. dZentle_man Ну так я и не говорю что нужны глубокие знания математике. Математика это тот же язык и подходить к его изучению надо формально тупа заучиваем формулы и их смысл. Плюс теоремы. Участвовал в олимпиадах довольно неплохо. Большая часть задач сводятся к заучиванию алгоритмов и умению их видеть. Ряд задач на придумывания алгоритмов. Но обычно комбинируешь что знаешь. И чем больше знаешь тем лучше. Еще есть ряд математических олимпиад. Которые предлагается решать задачи на компьютере. Все они сводятся к хитрым переборам которые надо с оптимизировать по времени. Тут тоже стандартные приемы, но не известные широкой публике. У меня к примеру есть наработке в вопросах алгоритмов СУБД которые не описаны нигде или же не опубликованы. Вот в распознавание образов только представление. Нужна систематизация. У меня и к математике есть фундаментальные вопросы. Начиная теорией вероятностью в общем заканчивая вопросом о производной. PS. Считаю себя математиком, но только прикладным. Фундаменталист из меня плохой, так как это надо копаться глубоко. Бонально не интересно, не охото тратить время.
Pavia У нас там на rsdn'е как раз разгорелась дискуссия по поводу математики, может быть вам будет интересно. А все началось с того, что мыщъх, как водится, взбаламутил хвостом воду - http://rsdn.ru/forum/job/4094102.flat.aspx#4094102
Pavia, Ландау никогда не был математиком. Ландау занимался теорфизикой. Он даже говорил, что математику и преподавать незачем, типа, дал основы - как интегралы считать, производные и прочие приложения. Его как-то попросили доказать одну теорему, на что он ответил: а что тут доказывать? нарисовал - всё и так понятно! Если Вы читали курс теор физики, то могли заметить, что математическая строгость в изложении и выводе формул зачастую отсутствует. Наиболее часто формулы получаются интуитивно, на основании каких-то общих представлений о предметной области. Такой подход вполне нормален для физиков.