Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программист и математика

Автор: XPEHOMETP
Дата сообщения: 22.02.2006 09:57
На счет математики - это уже в зависимости от поставленных задач. Иногда и математики мало. Если применяются какие-то хитрые алгоритмы обработки данных, тут надо знать еще и то, как такие алгоритмы традиционно реализуются, поскольку логика этой реализации зачастую не имеет ничего общего с чистой математической теорией по этому предмету. Пытался я тут прикрутить разложение в ряд Фурье для фильтрации данных: убить наводку 50 Гц. Почитал немного про это дело, вроде понял. Взял описание стандартной библиотеки: мама моя, что это за нормированные коэффициенты, которые она выдает, и где про это прочитать? Ни в каком изложении чистой теории про такие финты ничего нету! То есть даже взять эту библиотеку как черный ящик и прикрутить к своей проге - и то не получится, поскольку не знаешь смысла выдаваемых значений. В общем, мне было проще самому все это написать, чем с библиотекой разобраться. Потом нашел, правда, инфу, понял...
Автор: Pinocchio
Дата сообщения: 22.02.2006 13:04
Xarde
Дело как раз в том что не резко. Так называемая математическая логика, и принципы формализации настолько устаканены количеством софта, что их вряд ли будут кардинально менять. Про задачу комивояжора я вообще не говорю. Другие дициплины - например психология. Представь пользователя потерявшего файл из-за того что он забыл нажимать в течении четырёх часов редактирования кнопку саве. Он будет в ярости, но как это объяснять "автору программы", который готов задушить создателей компилятора, лишь бы его программа была такой как видится ему а не пользователям. Как втолдычить что программа начинается не с железки, а человека которому мы начинаем хамить, и очень редко говорим правду (незнаю это видимо профессиональное заболевание). Наверно тут бы побольше психологии, философии, социологии ну и элементарной этики.
p.s.
Возможно математика и помогла бы посчитать количества недовольства в пользу того или другого решения, но мне кажется что феноменологический фундамент позволяет обходится без таких расчётов в 90% случаях.
Автор: psimonovsk
Дата сообщения: 22.02.2006 15:21
Я так полагаю - что для программирования необходима в первую очередь определнная дисциплина мышления, и умение анализировать поставленную проблему... И для прибретения ентих качеств - изучение математики - один из лучших путей (хотя - можно изучать и психологию , и даже тору...). А во вторых кодер - это просто писарь... Тоже нужен - но рангом низко стоит... Писатель - это тот кто может "зрить в корень"...
Автор: gerrCrazzy
Дата сообщения: 22.02.2006 18:48
имхо хороший программер может быть хреновым математиком,
а вот хреновый математик не сможет стать даже хреновым программером.
вот такая вот загогулина получаецца....
Автор: OdesitVadim
Дата сообщения: 22.02.2006 19:27
gerrCrazzy
Смотря что понимать под

Цитата:
хреновым математиком

Вот на кафедре информатики, где я работал раньше практически все преподаватели заканчивали матфакультеты. В плане алгоритмов и решения задач - ассы. Интегралы, на решения которых у меня уходит пол часа и три листа бумаги - решают в уме. Но когда я им показал кусочек сишного кода, (я его тогда начинал изучать, а у нас на кафедре он преподавался) никто не сумел толком расказать мне что там. Потом я переписывал ещё им алгоритмы с алгола на С (кафедра когда то и им баловалась. алгоритмы класные остались, а перевести никто не может).
С другой стороны мне в математике до них очень далеко, но как програмист я чувствую себя вполне сносно (по сравнению с ними) и нескольких "молодих преподов" обучал. Знали бы это студенты .
Меня в математике правильней назвать "арифметиком". Логарифм или степень в уме взять - без проблем, но сложные извраты с теоремами - извольте.

Поэтому, имхо, если програмист не занимается моделированием различных физических/математических процесов, то математика ему нужна, чтобы не задавать вопросов типа $1F (0x1F для любителей С) это сколько в десятичной.
Многие алгоритмы давно реализованы и выдумывать их по новому - пустая трата время. К примеру попробуйте улучшить QSort - врядли у вас это получиться. На некоторых тестовых задачах вы получите прирост, но в среднем - нет. Не один программер уже пытался за последние 40 лет.
Програмисты, вы должны знать алгоритмы, которые для вас разработали математики.

Смерть изобретателям велосипедов с квадратными колёсами
Автор: A_V
Дата сообщения: 23.02.2006 00:22
вот подняли тему ))))

фигасе, я ведь тут давиче по пьяне высказывался за то что программеру не надо знать математики
вопрос спорный ессно, но если цель - получать хорошие бабки и удовольствие от работы, то математика не нужна реально, нужно одно - чтобы программинг радовал )

>практически все преподаватели заканчивали матфакультеты
из тех, кого я знал, считали кодеров идиотами, и при том в предмете шарили довольно слабо )

>0x1F для любителей С) это сколько в десятичной
это не математика имхо )

Добавлено:
>улучшить QSort - врядли у вас это получиться
ну речь все же не о типовых задачах, ясен пень quicksort оптмизировать не реально...

Добавлено:
Mickey_from_nsk
> А я вот заметил, что мне SQL запросы проще писать исходя из теории множеств, чем из > умозрительных конструкций
походу понятие математики у всех таки разное ))
я вот закончил прикладную математику (хотя я ее не знаю вобще ), но при написании запросов различной степени тяжести ну блин ни разу не воспользовался ничем из институтской/школьной прпограммы. или может я зря лекции прогуливал?
Автор: Xarde
Дата сообщения: 23.02.2006 05:22
Если ты что-то "изучил" просто для "отмазки" по предмету, то вряд ли ты воспринял информацию и сможешь её использовать. A_V, ты, видимо, в любом случае в то время не интересовался предметом, так что применить знания не сумел бы. По себе знаю - если мне что-то не интересно, то я с этим нормально разобраться (чтобы использовать) не смогу. В лучшем случае, разберусь, чтобы в конкретной ситуации что-то сделать и почти сразу же забуду. Другое дело, если я изучаю то, что мне интересно.

З.Ы. Видимо, я очень нечётко обозначил своё мнение. Попробую ещё раз. Имхо, математика для программиста важна не сама по себе, а в том смысле, чтобы понимать о чём идёт речь в ТЗ. При наличии ссылок на полезную литературу и головы на плечах почти все (за редким исключением) могут разобраться в нужных формулах и решить поставленную задачу. В общем-то, программист относится к математику почти так же, как к математику относится какой-нибудь технарь. Математика увеличивает количество вариантов решения задачи и часто предлагает такие, которые лучше обычных.
З.З.Ы. Если никто не будет пытаться изобретать велосипед с квадртными колёсами, то новых идей будет появляться меньше. Множество идей появляются лишь после осмысления ошибочности подхода.
Автор: psimonovsk
Дата сообщения: 23.02.2006 10:16

Цитата:
В общем-то, программист относится к математику почти так же, как к математику относится какой-нибудь технарь. Математика увеличивает количество вариантов решения задачи и часто предлагает такие, которые лучше обычных.
З.З.Ы. Если никто не будет пытаться изобретать велосипед с квадртными колёсами, то новых идей будет появляться меньше. Множество идей появляются лишь после осмысления ошибочности подхода.

Это уже ближе к делу... Но - математика - это не просто "набор формул"... Это - Методы мышления и анализа , и столетиями отработанная система обучения мышлению и анализу...
Автор: OdesitVadim
Дата сообщения: 23.02.2006 11:36
Расскажу вам задачу, где мне пришлося спомнить и математику, теорию связи (связист я по диплому)
Надо было написать прогу, с помощью которой можно было бы измерять затухания в канале. Идея, данная деканом, по совместительсту преподавателем проста. К входу звуковой подключаем приемник, делаем запись сигнала на протяжении некоторого времени (до получаса). Потом отображаем сигнал как в збуковых редакторах, но ко всему этому, ножно было отображать это сигнал с разными извратами: спектр (ну это оказалось наиболее просто), сигнал, пропущеный через определённые цепи.
Также приветствовались примочки в виде отображения параметров сигнала при перемещении мышки.
Задачу поделили на две части. Одногрупник занимался интерфейсом и записью звука, а я писал компонент, который реализовывал остальное.
Мне пришлось спомнить
аффиные преобразования (для коректной отрисовки и маштабирования)
Интегралы (для преобразования. Но пришлось хорошо гуглить, так как реализация методик с методичек давала очень медленую работу)

Вторая задача была по эмуляции кодера/декодера Secam/NTSC. Идея проста опять же как два пальца. Есть блок схема кодера/декодера (не путать с блок схемой алгоримов). Реализовать, что бы отображал осцилограф в каждой точке + частотную характеристику.
Сигнал на входе - бмпшка с файла. Наиболее сложно было оптимизировать преобразования Фурье (точнее выбрать наиболее быстрый/качественный).
Автор: XPEHOMETP
Дата сообщения: 23.02.2006 17:29
OdesitVadim

Да, надо, надо знать алгоритмы, которые изготавливают математики, но пока они, гаденыши, считают, что их алгоритмами пользуются только такие же профессиональные математики, как они, всем остальным приходится изобретать квадратные колеса. Потому что не понятно, как этот алгоритм пристегнуть. Любая программа, выкладываемая, к примеру, для скачивания в интернете, сопровождается более или менее подробной справкой. Чтобы юзер знал, как ею пользоваться. А вся "справка" прилагаемая к библиотечным математическим программам, состоит из так называемого пролога, в котором так, слегка упомянуто, какие параметры надо вводить и что получится на выходе. Бывают, правда, и исключения. Вот скачал подпрограмму Pikaia для оптимизации с помощью генетического алгоритма, так там и справка подробная, и готовая программа в качестве примера использования. Похоже, что не математиками делалось.
Автор: OldGopher
Дата сообщения: 23.02.2006 23:09
Математика - это наука полных абстракций. Воистину, достоточно иметь бумагу, карандаш и ластик, чтобы доказать любую теорему.
Программирование - это попытка решить задачу из математики быстрее.

У меня есть определенные сомнения, что без знания основ математики на уровне полной средней школы, можно будет легко изучить программирование. Попадались мне кадры, что неплохо писали узкоспециализированный код, но как только задача расширялась за рамки привычного, девочки начинали хлопать волооким взглядом (как за рулем), а мальчики просто молча лепили баги...

Математики не помешает. Ибо навредить, по определению, не может...
Автор: Pinocchio
Дата сообщения: 26.02.2006 12:30

Цитата:
Математики не помешает. Ибо навредить, по определению, не может...

Тот же пример с задачей комивояжера. В чистую кодер может ниразу в жизни не воспользоваться знаниями дискретной математики, но нармальный программер почти всегда решает задачу по нахождению оптимального пути достижения определённой цели. Тут главное не перестараться с оптимизированием.
Автор: SergeBS
Дата сообщения: 27.02.2006 07:51
Ну вы, блин, даете...
Программирование - частный случай вычислительной математики. Вот и думайте, нужно знать программирование или нет, если программистом числишься. Намек: просто вызубрив правила языка программистом не станешь.
Автор: Pinocchio
Дата сообщения: 27.02.2006 10:22
SergeBS

Цитата:
Программирование - частный случай вычислительной математики.

Категорически несогласен. Теория относительности тоже часный случай трёх законов Ньютона? Высказывание: "вызубрив любый правила или знания" относится к любой дисциплине, когда дело доходит до практики. Два таких ошибочных момента - и вся логика построенная на них приобретает кривизну. Математика - аналитическая дисциплина, что же тогда делать с возможностью ума синтезировать (объединять), или это не показатель в мире софта? Хотя судя по антимонополистическому уклону общего вектора хрущёвство будет процветать несмотря и вопреки логики, дабы разработчик не смог найти на компьютере пользователя хотябы нечто приблизительно похожее на систему.
Автор: SergeBS
Дата сообщения: 27.02.2006 11:39
Pinocchio
1. Сформулируй, какую задачу решает программист и какую - вычислительная математика. Сравни.
2. Математика - не только аналитическая дисциплина, поскольку занимается не только анализом данных, но и синтезом на их основе закономерностей (например). А если посмотреть философски, так вообще математика всего лишь описывает окружающий мир понятным нам образом.
Автор: Pinocchio
Дата сообщения: 27.02.2006 12:23
SergeBS
1.Программист решает все задачи пользователя касающиеся работы с информацией,
вычислительная математика решает вопросы специалиста касающиеся работы с цифрами и операциями над цифрами. Полагаю само сабой разумеется что цифра - часный случай информации.
2.Философия делает тоже самое но более понятным нам образом, так как языки математики все формализованные. Однако вторую функцию общения, а именно побудительную не выполняет ни одно описание окружающего мира, чего не скажешь про интернет и "Назначенные задания" в панели управления.

Добавлено:
зы
Я только предлагаю разобраться всёже что есть частный случай чего.
Как 1С нащитает, такая математика и будет.
Автор: OldGopher
Дата сообщения: 27.02.2006 12:57
Pinocchio
Программирование шире частного случая ВМ. Ибо есть области, далекие от прямых абстракций, так как неформализуемые или слабо формализуемые...
Автор: SergeBS
Дата сообщения: 27.02.2006 16:30
OldGopher
Чисто формально: программа не может сделать ничего, кроме того, что ей позволит компьютер. Т.е. если что-то нельзя посчитать, то это нельзя и реализовать. Поскольку по большому счету все что может комп - это что-то посчитать и куда-то закинуть результат.
[
Цитата:

есть области, далекие от прямых абстракций, так как неформализуемые или слабо формализуемые...

И все равно если их не посчитать, то их и не запрограммировать. А способ расчета - на совести программиста. Это вычислительная математика(ВМ), а (не)красивый вывод результата - по большому счету не задача программиста, а задача дизайнера. Хотя реализовывать все равно программисту или кодеру.

Pinocchio
Формального определения предмета ВМ не вспомню, давно это было. А на неформальном уровне (для себя): ВМ занимается цифровой обработкой информации. А поскольку процы у нас покамест цифровые, а не аналоговые, то все результаты их работы - область ВМ.
Программист реализует ввод, вывод и обработку информации. Но информация по любому преобразуется в цифры и уже эти цифры - предмет обработки.
Ну я по крайней мере так считаю.
От 2 до 10, валет, дама, король, туз .
Автор: Coagulator
Дата сообщения: 01.03.2006 11:04
SergeBS

Программирование не является частным случаем вычислительной математики. Это совершенно две разные области. Вычислительная математика, по большому счёту, вообще не связана с программированием. Человек может быть крутым кодером, но при этом не сможет рассчитать какую-нибудь ударную волну, причём ни с помощью компьютера, ни без .
Автор: SergeBS
Дата сообщения: 01.03.2006 12:48
Coagulator

Цитата:

Человек может быть крутым кодером, но при этом не сможет рассчитать какую-нибудь ударную волну, причём ни с помощью компьютера, ни без

Ударная волна - это вообще-то вначале физика, а потом математика. А крутым кодером человек будет только казаться, если не знает принципов построения эффективных алгоритмов вообще и программ в частности. Поясняю на простом примере - регулярно наблюдаю публику, выучившую какой-нито язык, но совершенно не знающую математики, например вычислительной . И пишут эти "программисты" нечто типа
if a=2 and b=3 then
begin
бла-бла-бла 1 (строчек 30, например)
end;
if a=2 and b=4 then
begin
бла-бла-бла 2 (тоже 30 строчек, из которых 25-29 совпадают с предыдущими 30)
end;

И так 3..10 раз подряд. Офигенных размеров листинги, куча "проделанной работы".
Нетрудно догадаться, что у меня решение "немного" другое. Но поскольку компилятор не покажет никакой ошибки, попробуй доказать без математики этой публике, что дурью маются. Наоборот: у них листинги здоровенные, сразу видно - "проделана большая работа". А у меня все в экран умещается и работает быстрее.
Значит я плохо работаю . Мало строчек.
А если еще и задачки похожие, так вообще - я за неделю сделаю и при этом умные книжки читаю, в форумы пишу и т.п. А мартышкам месяца маловато. Абыдна, да?
Добавлю, что поскольку математика не дает мне структуру БД, например, лепить абы как, тут еще выигрыш получается. За счет упрощения сопровождения.

Т.е. писать программы не зная выч.математики - получится. И они даже где-то как-то работать будут. Только вот как эти программы деликатней обозвать, я не знаю. Это ж как пули из экскрементов. На собственном опыте постигать основы - это ж как велосипед изобретать, особенно если его не видел ни разу . Меня один деятель например просто убил такими словесами: "3 года работаем над БД, VFP6. В прошлом году часть данных из таблицы выделили в справочники. Во как!" \m/
Т.е. 2 года у них справочников не было. Во мужик Америку-то открыл... И ведь не студент давно.
Гораздо легче и быстрее вначале все-таки разобраться с основными принципами, а потом уже что-то ваять. Причем полученные знания могут "выстрелить" в совершенно несвязанной области.
Автор: Pinocchio
Дата сообщения: 01.03.2006 14:10
SergeBS

Цитата:
А поскольку процы у нас покамест цифровые, а не аналоговые, то все результаты их работы - область ВМ.

Ну да, я понимаю что САР (ситуации автоматического регулирования) это исключительно математика. Тут вовсе не надо знать открыта ли у двери печка. Надо диспетчеру на чёрном экране либо нолик показывать либо единичку - остальные "бантики" дизайнеров - это уже лишнее. Кричит например диспетчер слово "ноль", и все поняли что мимо печки лучше не проходить без скафандра.

Цитата:
Но информация по любому преобразуется в цифры

Это лишний раз доказывает что вовсе не обязательно понимать тонкости законодательства, чтобы системы искуственного интелекта (экспертные системы) делали выводы в соответствии с туманной логикой декларативных языков.

Чтобы реализовать простейшую сортировку нужно знать что 31 > 30, а алфавит знать не обязательно - это лишнее. Теперь я понимаю почему в XP буква "й" имеет одни коды а на серваке 2000-ом другие. Трудности с алфавитом пока непреодолимы для компьютеров с тактовой частотой ниже 5ГГц. Возможно так и будет чехорда с букварями.
Автор: SergeBS
Дата сообщения: 01.03.2006 16:33
Pinocchio
"Консенсус" (С) Мишка Меченый
Автор: Aleksi13
Дата сообщения: 08.03.2006 14:25
Прикладная математика, в первую очередь — изучение алгоритмов. Я склонен считать, что алгоритмы охватывают весь круг понятий, использующих детерминированные процессы, включающие структуру данных, которыми оперируют, как и структуру последовательности выполняемых операций; иные рассматривают алгоритмы лишь как разнообразные методы решения конкретных задач, аналогичные отдельным теоремам математики.
Программисту, кажется, больше, чем традиционному математику, нравится общаться со множеством достаточно различных случаев. Структуры данных в вычислительной математике не должны быть однородными, алгоритм может содержать множество различных шагов. Иногда в этом и есть слабость программистов, потому что мы не стараемся изо всех сил добиться общности; но иногда это преимущество, так как мы можем спокойно обращаться с существенно неоднородными понятиями.
Автор: djdtyfhu
Дата сообщения: 24.07.2007 18:05
Я вот как-то рисовал картограмму активной зоны реактора БН-600, так там мне даже понадобилось вспомнить векторное произведение векторов для определения в какую из петель циркуляции переносить границу выделеннаой пользователем ТВСки.
Автор: delover
Дата сообщения: 25.07.2007 12:30
djdtyfhu
Вспомнить, это похоже на то чтобы найти в памяти одну информацию, разобраться и дать другую информацию. Полностью согласен с Pinocchio, рулит.
Автор: dneprcomp
Дата сообщения: 25.07.2007 22:00
SergeBS
Никогда не встречал великолепных математиков, которые не способны хорошо програмировать? Даже не смотря на то, что знания языка нормальные.
Автор: Olala
Дата сообщения: 23.11.2009 19:50
Программистом можешь и не быть, но математику ты знать обязан!
Автор: delover
Дата сообщения: 23.11.2009 23:32
Когда-то была придумана некая глупость, а именно - логика это то же что и двоичная математика. Я может вольно излагаю свою мысль, но вот если обратить некоторое внимание на "Логику Смысла" (тут я дистанцируюсь от трудов Жиля Делёза, не без сарказма по поводу некоторого внимания), то скорее наблюдается обратное - бинарная математика вполне описывается законами логики, однако сама математика не в состоянии оперировать тем же чем оперирует логика в купе со смыслом. У химии с визикой тоже есть пересечения, но никто не ставит одно в подчинение другого. И после этого следует заметить, что у информатики гораздо больше общего с логикой, нежели математикой. А вот области применения математики, такие как архивирование, кодирование и создание современных многопроцессорных графических адаптеров никогда не являлось в постсоветском пространстве способом заработать деньги. Бугалтерия вот это да, но не помню чтобы там нужны были интегральные вычисления.
Автор: ya_Mickey
Дата сообщения: 24.11.2009 05:37

Цитата:
А вот области применения математики, такие как архивирование, кодирование и создание современных многопроцессорных графических адаптеров никогда не являлось в постсоветском пространстве способом заработать деньги.

Это мощный тезис . А как быть с теми, кто тупо зарабатывает расчетом разных конструкций?
Опять же, взять компьютерные игры - там математики... Ну всем понятно. Однако эта область сейчас развивается восьмимильными шагами.
Взять различные симуляционные системы. Там математика на каждом чихе - от простых кривулин типа кривых Безье и сплайнов до матричных и вероятностных вычислений. Возможно даже и дифференциальное и интегральное исчисление применяются.
Возьми БД - теория реляционных баз данных явно коррелирует с теорией множеств.
В общем, если ты математику не знаешь - найдешь себе место в программистической иерархии, в конце концов - что нужно освоишь. Если же ты математикой владеешь - не то что найдешь, ты будешь чувствовать себя гораздо комфортнее в любых околопрограммистских делах.
Кроме того, есть мнение, что изучая математику _в ВУЗ-ах_ ты учишься рассуждать и действовать более строго и логично. Что есть тоже плюс при программировании.
Автор: delover
Дата сообщения: 24.11.2009 23:19
Неа, математика дело десятое...

Цитата:
В общем, если ты математику не знаешь - найдешь себе место в программистической иерархии, в конце концов - что нужно освоишь. Если же ты математикой владеешь - не то что найдешь, ты будешь чувствовать себя гораздо комфортнее в любых околопрограммистских делах.

Не замечал. Где это публикуют вакансии в стимуляционные системы? И когда это у нас не вытирают ноги об гениев? В стимуляционных системах по четвергам этого не делают? Художественное образование приносит гораздо больше успеха у программистов, возьмите те же компьютерные игры, или в играх достаточно математики?


Цитата:
Кроме того, есть мнение, что изучая математику _в ВУЗ-ах_ ты учишься рассуждать и действовать более строго и логично. Что есть тоже плюс при программировании.

Вот вот, - мнение. Математика способна выводить зачастую абсурдные решения с точки зрения и логики и смысла. И что самое смешное - выводимые математикой решения сами по себе не станут практически полезными (прагматичными). Предположим у Вовы два яблока... Да не поделится Вова яблоками, это же очевидно!


Добавлено:
Я бы даже добавил - у задачи с яблоками одно решение на все подобные задачи - пусть подавится если у него два яблока. )))

Страницы: 123

Предыдущая тема: Дельфи: как из консольного приложения открыть форму?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.