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

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

Автор: EXTR PROGRAMMER
Дата сообщения: 11.12.2004 21:06
Хочу стать программистом. Математику в школе прогуливал, да и вообще к ней тяжести нет. Недавно увидел в одном учебнике, что для рисования фигур применялись синусы и косинусы, а я в этом ничего не понимаю. Скажите, плиз, насколько глубоко необходимо программисту разбираться в математике, и можно ли без нее быть профессионалом.
В ответ можете привести пример использования математики, т.е. где она необходима.
Автор: VonSimon
Дата сообщения: 11.12.2004 21:10
Компютерная графика без математики никак.

Добавлено
Элементарный пример рисования окрухности.
Алгоритм Брезенхема генерации развертки окружности
Пример _http://alglib.manual.ru/articles/2dgraph2.php
Автор: A_V
Дата сообщения: 11.12.2004 23:00
необходима математика в основном для комп. графики и криптографии(ну и написании специфичных мат. программ)
самые популярное сейчас - БД и веб, здесь математика не нужна
Автор: VonSimon
Дата сообщения: 11.12.2004 23:31
EXTR PROGRAMMER
Если ты только хочешь стать программистом, то вперед...
Определенное мат мышление все равно необходимо, я думаю ты с элементами массива двумерного разберешься если что А так, научишься, главное - это практика. Впринциме если в графику не лесть, (а то увидишь сплайн и испугаешься) косинусы и синусы врятли встречатся будут.
Автор: EZH
Дата сообщения: 12.12.2004 00:26
В программировании если даже и не приходится сталкиваться с тригонометрией, то очень полезно дружить хотябы с математической логикой. То бишь те же самые операции И, ИЛИ, НЕ над логическими выражениями, системы счисления, сдвиги и т.п. Так что как сказал VonSimon без определенного математического склада ума писать получится только какие-то шаблонные вещи...
Автор: vndovr
Дата сообщения: 12.12.2004 02:07
A_V

Цитата:
самые популярное сейчас - БД и веб, здесь математика не нужна

Это прикол? БД: нормализация - вся построена на реляционной алгебре и теории множеств. Или нормализовать уже не в моде - накидаем табличек, и так сойдет? Оптимизация бд - здесь нужно хорошо знать алгоритмы которые сервер выбирает для запросов, понимать их и уметь разбираться что происходит и почему. И что подразумевается под веб? Если голый html тогда соглашусь. А за любой динамической системой может стоять все что угодно - хоть система онлайн решения диф уравнений.

EXTR PROGRAMMER
Есть задачи для решения которых математика не нужна, есть те которые без знаний математики не решишь. В остальных твое знание или незнание будет просто влиять на качество предложенного решения. Имхо, база средней школы - must have.

Цитата:
можно ли без нее быть профессионалом.

Мое мнение - без базовой - нет. Так как без нее не прочитаешь и не поймешь (хоть частично) ни Кнута, ни Дейта, ни Кодда, ни Вирта, ни массы других авторов которые, в общем, определяют базу в которой нужно ориентироваться.
Но это всего лишь мое мнение - так что... Смотришь, скоро появится на прилавках -
"Супер профессиональное программирование за 21 день самостоятельно для чайников без знания математики."
Автор: krast
Дата сообщения: 12.12.2004 11:39
Согласен сvndovr.

Цитата:
БД: нормализация - вся построена на реляционной алгебре и теории множеств

уточнение - не только нормализация, но и все теория реляционных баз - это есть математическая целостная, непротиворечивая теория.

Без математики вообще-то никак, если ты замахивешься работать программистом, а не вечером перед сном ваять очередной helloworld v.2.5b.

Я говорю не только о алгоритмах, приемах, сколько и о математическом (строгом, аналитическом) мышлении, которое бесспорно должно быть у программиста.
Автор: Arion
Дата сообщения: 12.12.2004 17:24

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

Ага, это из серии "я хочу писать серьезные толстые романы, правда читаю только по складам и грамотность хромает" . Математика есть основа любого алгоритмического мышления, без нее за рамки примитивного косоручного программирования выйти очень сложно. Да не такая уж сложная штука косинус.
Автор: Alongy
Дата сообщения: 13.12.2004 12:57
Программистом без математики ты стать можешь, но только на ближайшие 20-30, а то и меньше лет. Известно, что после 25 лет человек начинает все хуже и хуже воспринимать информацию - изучать новые программные продукты будет все сложнее => быть конкурентно способным тоже будет сложнее. Для того, чтобы быть таковым, стоит уметь то, чего другой не умеет - тогда более высоко оплачиваемую работу дадут тебе, а не другому. Пример перед гоазами - один знакомый после окончания вуза не погнался за легкими программистскими деньгами, а пошел в аспирантуру и повышал свой уровень (математический и всякий другой) - теперь работает в Sun-е, получает $2000. Для Москвы это, мб, и немного, но для Питера достаточно. Короче, прошу прощения за нравоучение , но математик+программист и в 60 лет найдет работу(есть пример), а вот просто программист - вряд ли.
Автор: Dimonka
Дата сообщения: 13.12.2004 14:07
EXTR PROGRAMMER
А зачем тебе рисование фигур?
Ты же программистом собираешься быть а не художником!
Автор: A_V
Дата сообщения: 13.12.2004 19:16
vndovr
krast
под математикой я вобще имел ввиду высшую: численные методы, ТФКП, тензорное счисление етц.
а вы что математикой называете? логический склад ума?

на счет математики и БД - не путайте программиста и проектировщика. кодеру достаточно знать что такое 2-3НФ, а не доказывать теорему Хеза
чтобы понять основы реляционных систем не надо быть математиком.

по поводу оптимизации - далеко не все программисты БД разбираются в тонкостях работы сервера. а проставить индексы, собрать статистику, посмотреть стоимость запросов и при необходимости проставить хинты - это матиматика разве?


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

и часто веб программеру приходится решать дифуры?
да и я же писал :
Цитата:
ну и написании специфичных мат. программ


не спорю, конечно школьную программу математики в общем знать надо. как впрочем и географии...

Alongy

Цитата:
Программистом без математики ты стать можешь, но только на ближайшие 20-30, а то
и меньше лет

а что, кто-то собирается до пенсии программировать? после 30, макс. 35 лет надо другими вещами заниматься
Автор: alexuy
Дата сообщения: 13.12.2004 20:02
Вот мне кажется, что математику надо знать так, чтобы при необходимости можно было разобраться в ее приложениях к решению практических задач: диф.уравнения - физика и экономическое моделирование, алгебра и геометрия - графика, теория чисел - криптография, и т.д. А если просто понять теорию матриц и определителей и при этом не знать как и где их можно применить, то это пустая трата времени.
Автор: Alongy
Дата сообщения: 13.12.2004 22:05
A_V

Цитата:
а что, кто-то собирается до пенсии программировать? после 30, макс. 35 лет надо другими вещами заниматься

Чем же заняться программисту, не знающему математики, после 35 лет ?

alexuy

Цитата:
А если просто понять теорию матриц и определителей и при этом не знать как и где их можно применить, то это пустая трата времени.

Может все же не пустая? Ведь мышление развивать как-то надо. От природы мегагерцы не даны.
Автор: PEDKA
Дата сообщения: 13.12.2004 23:13
EXTR PROGRAMMER
Для высококачественно графики: формулы кривых, площади...
Для программ: вычисление сложности алгоритма, расчет скорости выполнения, решимость задачи...
Автор: Dimonka
Дата сообщения: 13.12.2004 23:18
alexuy

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

Когда кажется - креститься надо.
Задачи решают аналитики и архитекторы. Зачем кодерам знать всю эту муть? Им же ш тогда платить надо будет больше.


Цитата:
Может все же не пустая? Ведь мышление развивать как-то надо. От природы мегагерцы не даны.

Математика - не единственное направление, в котором можно развиваться. Тем более смотря что понимать под словом "математика". Автор топика похоже подразумевал основы тригонометрии и частично арифметику.. Хочу его успокоить - первое ему понадобится в 0,1 процeнтах случаев.
Автор: A_V
Дата сообщения: 14.12.2004 00:57
Alongy

Цитата:
Чем же заняться программисту, не знающему математики, после 35 лет

руководить программистами, знающими математику
Автор: vndovr
Дата сообщения: 14.12.2004 01:04
A_V

Цитата:
под математикой я вобще имел ввиду высшую: численные методы, ТФКП, тензорное счисление етц.
а вы что математикой называете?

В том числе и это. То что преподают в средней школе я тоже к ней отношу - его и считаю базовым уровнем, который must have. Т.к. высшую без него вряд ли осилить

Цитата:
на счет математики и БД - не путайте программиста и проектировщика. кодеру достаточно знать что такое 2-3НФ, а не доказывать теорему Хеза
чтобы понять основы реляционных систем не надо быть математиком.

по поводу оптимизации - далеко не все программисты БД разбираются в тонкостях работы сервера. а проставить индексы, собрать статистику, посмотреть стоимость запросов и при необходимости проставить хинты - это матиматика разве?

Я выше уже ответил на этот вопрос -
Цитата:
В остальных твое знание или незнание будет просто влиять на качество предложенного решения

Изначальный вопрос был
Цитата:
можно ли без нее быть профессионалом
- мой ответ был "нет". То что не все программисты БД разбираются в тонкостях работы сервера. просто говорит о уровне их профессионализма (или его отсутствия). Писать код можно и без толкового знания языка на котором пишешь и даже работать будет - сам видел массу таких примеров. Но назвать это профессионализмом как-то язык не поворачивается.
Автор: PEDKA
Дата сообщения: 14.12.2004 01:04
Уже флуд пошел...
Автор: vndovr
Дата сообщения: 14.12.2004 01:11
Хотя наука утверждает обратное...
http://www.volia.com/news/ru/techno/2003/08/07/36439.html
Автор: A_V
Дата сообщения: 14.12.2004 02:38
vndovr
насчет 'тонкостей работы сервера' - обсуждать тут можно долго, но это уже совсем оффтоп.
вобщем, я хотел просто сказать, что программирование - это процесс технический, и, кроме спец. областей, математика в нем как правило не нужна. есть области, в которые без знания определенных разделов
математики нельзя соваться - комп. графика, в т.ч написание игр, криптография, написание мат. программ.
но для БД, веба, системного программирования (ну если только не ОС писать ) это далеко не обязательно.в данных разделах редко встречается написание каких-то сложных алгоритмов, для которых необходимо знание той же дискретки. тебе часто в жизни попадались задачи из того же Кнута? имхо гораздо важнее - знание технологий, предметной области наконец. так что и без математики можно вполне успешно справляться с решениям различных задач.
а то, что преподают в школе/втузе имхо для программирования как правило не пригождается (не считая булевой алгебры конечно . требуют знания математики более творческие и сложные профессии - аналитика, проектировщика.
и вобще программист-профессионал - это просто тот, у кого профессия=программист
Автор: krast
Дата сообщения: 14.12.2004 09:24
PEDKA

Цитата:
Уже флуд пошел...

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

Цитата:
БД и веб, здесь математика не нужна


Цитата:
но для БД, веба, системного программирования (ну если только не ОС писать ) это далеко не обязательно.

сначала говорил что не нужна математика, потом что далеко не обязательно уже, то есть все таки надо порой :gigi

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


Цитата:
ебе часто в жизни попадались задачи из того же Кнута?

если не попадалось у тебя, не значит что их никто не использует.


Цитата:
требуют знания математики более творческие и сложные профессии - аналитика, проектировщика.

извини, но это тупизм, или я тебя не понял. если мы говорим о сфере создания новых программ, то кто такой аналитик? что он анализирует и нафиг ему нужна математика?
насчет проектировщика - и опять мимо. зачем проектировщику математика? проектировщик - проектирует структуру, архитектуру программы, и его не волнуют конкретные реазизации каких-то модулей, алгоритмы.
и еще, как ты думашь, во многих ли конторах на Руси-матушке есть отдельный чел - проектировщик? я тебе скажу - НЕТ. Обычно программист сам себе и кодер, и алгоритмист, и менеджер, и проектировщик, и это чудный, непонятный мне зверь - аналитик
Автор: A_V
Дата сообщения: 14.12.2004 21:04
krast

Цитата:
человек потихоньку меняет свою точку зрения

наверно, потому что мой угол зрения еще не сузился до точки
и вобще для меня 'не нужна' и 'далеко не обязательна' практически синонимы

Цитата:
мне часто в работе нужно строить красно-черные деревья, или хэш-таблицы, или графы

ты что, свою СУБД пишешь? да и почему ты решил, что балансировку деревьев поднять с нуля нереально,
и спасти программиста могут только пару семестров когда-то пройденной дискретки

Цитата:
проектировщик - проектирует структуру, архитектуру программы, и его не волнуют конкретные
реазизации каких-то модулей, алгоритмы

я говорил не про структуру программы (это отдельная тема), а про структуру базы.
реализации алгоритмов тут не причем. для сложных систем проектировщик и программист - разные люди,
и у них разные задачи.

Цитата:
как ты думашь, во многих ли конторах на Руси-матушке есть отдельный чел - проектировщик

если проектируется серьезная база, то конечно есть такой 'отдельный чел'

Цитата:
программист сам себе и кодер, и алгоритмист, и менеджер, и проектировщик...

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

Цитата:
..и это чудный, непонятный мне зверь - аналитик

чудный зверь аналитик - не такой уж и мифический. другое дело, в разных
конторах эта должность по разному называется. я подразумевал под этим
составление мат. модели бизнесс процесса
Автор: alexuy
Дата сообщения: 14.12.2004 21:14
Dimonka

Цитата:
Когда кажется - креститься надо.
Задачи решают аналитики и архитекторы. Зачем кодерам знать всю эту муть? Им же ш тогда платить надо будет больше.

а как ты думаешь, платить больше надо кодеру,аналитику и архитектору в одном лице или, когда это три разных человека? Конечно, если проект большой очень, то тут просто необходимо такое разделение труда. Да и потом, если хочешь дорасти до должности архитектора или аналитика, то легче уж будет со знанием математики, чем без нее. И последний вопрос: как ты думаешь, программисту с хорошей математической подготовкой легче найти хорошее место работы при прочих равных условиях?

Alongy

Цитата:
Может все же не пустая? Ведь мышление развивать как-то надо. От природы мегагерцы не даны.

Мне кажется, теория матриц мышление не развивает, но она служит базой при построении других математических теорий, которые в свою очередь уже способствуют развитию мышления. Смысл моего поста в том, что если освоить теорию матриц и на этом остановиться, не изучить хотя бы одну прикладную к матрицам теорию, то это пустая трата времени. Вот такое мое IMHO.
Автор: dikun
Дата сообщения: 20.02.2006 18:20
ВЕРЕВКА ДОСТАТОЧНОЙ ДЛИНЫ, ЧТОБЫ… ВЫСТРЕЛИТЬ СЕБЕ В НОГУ (Ален И. Голуб) -> пункт #6 "Если вы не можете сказать это по-английски, то вы не сможете выполнить это и на Си/Си++"

Вырезки из пункта:


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



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



Цитата:
Интересно, что основополагающая работа по теории языка, сделавшая возможным написание компиляторов, была выполнена в Массачусетском технологическом институте лингвистом Наумом Хомским, а не математиком.
Автор: RUSmafia
Дата сообщения: 20.02.2006 18:50

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

а помоему нужно то и другое. т.е. абстрактное мышление & знания других наук. в этом и заключается исскуство программирования. это как с писателями. часто богатый жизненный опыт и владение языком дополняют друг друга. а если у писателя отстутсвует одно из качеств, то и писатель с него неважный будет. имхо.
Автор: OdesitVadim
Дата сообщения: 20.02.2006 19:38

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

Это вообще просто! Ребята занимались любимым делом, тоесть программированием, а в вуз поступили, чтобы диплом получить. Учитывая то, что они были хорошими програмистами, значит они наврядли имели низкий IQ (Человек, умеющий хорошо програмировать всегда хорошо ориентируется во многих дисциплинах. Именно ориентируется, тоесть может поддержать осмысленную беседу. Работая на кафедре информатики я не видел ни одного человека, который бы хотя-бы более-менее програмировал, а в других науках - дуб. И наоборот. ЗЗЗ не в счёт ЗЗЗ = Зазубрив, Здав, Забув (на украинском).).
Автор: Mickey_from_nsk
Дата сообщения: 21.02.2006 06:43
Моих 5 копеек.

Во-первых. Сложно представить программиста, который не имеет спец. образования (высшего) по одной из околопрограмистских специальностей. Может такие самородки есть, но шансы получить нормальную работу без образования и корочек - малы. По крайней мере я бы сто раз подумал, прежде чем предложил начальнику взять на работу такого. Более того, видел различных людей, которые считают себя программистами, но уровень их программирования выше школьного не поднимался (ну если и приподнимался, то не на много). Этот тезис о том, что высшее образование, вообще-то, не помешает (ну если не гении мы тут). А где можно получить высшее программистское образование, как не в техническом ВУЗе (есть разные специальности, в т.ч. физические, химические и математические, но вышка там по любому есть).

Во-вторых. Тут уже отмечалось, что многие разделы программирования завязаны на мат. дисциплины. Был пример с реляционной алгеброй и нормализацией. А я вот заметил, что мне SQL запросы проще писать исходя из теории множеств, чем из умозрительных конструкций. Не будь у меня мат. образования, мог бы себе представить, какие это были бы запросы. Другим примером может служить работа по рисованию графиков - тоже пару раз надо было, например, без знания логарифмов сложно было бы построить нормальную сетку координат, были бы одни числа после запятой (кто делал - знает о чем я). Этот тезис о том, что некоторые дисциплины математики не то чтобы MUST HAVE, но очень было бы желательно изучить.

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

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

В-пятых. Было уже мнение, что для кодера это все не нужно - ему все аналитик и архитектор разжуют. Так вот, нафиг мне такой кодер. У него тоже должна быть своя голова на плечах, я не должен ему разжевывать метод сортировки, наиболее подходящий для данной задачи.

Это все сугубо личное ИМХО. Интересно послушать другие мнения.
Автор: Xarde
Дата сообщения: 21.02.2006 11:01
[quote="Mickey_from_nsk"]По крайней мере я бы сто раз подумал, прежде чем предложил начальнику взять на работу такого.[/quote]
Совершенно напрасно, уважаемый, считаете, что такие не могут встречаться в природе. У меня есть друг, который не имеет высшего образования. Из-за тяжёлого экономического положения он не смог оплатить свою учёбу в универе и был вынужден прервать обучение. Но как программист он, имхо, очень высокого уровня. Больше увлекается системным программированием, но не брезгует и прикладными задачами. Хотя, с другой стороны, исключения лишь подтверждают правило - специалисты обычно имеют высшее образование.

Кстати, к вопросу о необходимости знаний в области математики. В данный момент мне приходится разбираться с графикой. Стоит задача реализовать свой движок. И я неприятно удивился поняв, что успел забыть не только курс вышмата, но даже обычную алгебру и геометрию! Забыл даже, как вычислять дискриминант квадратного уравнения и как его потом использовать! Вот до чего доводит спокойная размеренная работа без необходимости использовать знания.


Цитата:
В-пятых. Было уже мнение, что для кодера это все не нужно - ему все аналитик и архитектор разжуют. Так вот, нафиг мне такой кодер.

Имхо: аналитик и проектировщик нужны. Для того, чтобы задача быстрее и правильнее решалась. Сколько я уже повидал дохлых проектов, которые умерли ещё в процессе реализации лишь потому, что были неправильно спроектированы. Или ещё хуже - так и не было выяснено, что и для чего хочет получить заказчик и как это вообще обычно реализуется.
Но! Кодер тоже должен обладать хотя бы некоторыми базовыми познаниями. Иначе он просто не поймет, что он должен сделать и как это реализовать. В этом случае он либо вообще ничего не сделает, либо основную работу по составлению алгоритма за него должен будет выполнить проектировщик. Имхо, это в корне неверно, т.к. проектировщик должен объяснять всё на языке, сильно абстрагированном от кода и конкретных способов реализации. Его алгоритм должен быть настолько общим, насколько это возможно, но таким, чтобы у кодера не возникали ненужные вопросы о том, на основе чего "производить расчёты".
Автор: Pinocchio
Дата сообщения: 21.02.2006 16:42
...мм... интересно, EXTR PROGRAMMER это всё читал?
На счёт математики думаю что её вообще не надо. А вот строковой математики надо, но очень мало.
p.s.
Последнее кстати доказано опросом про популарность компиляторов.
Автор: Xarde
Дата сообщения: 22.02.2006 05:06

Цитата:
На счёт математики думаю что её вообще не надо

Не согласен. Меньше знаний - меньше профессионализма в принципе, т.к. никогда наперёд не знаешь, что потребуется для работы завтра. Извините, но я не считаю, что профессионалом может быть человек, который говорит "я этого сделать не умею, ибо в школе прогуливал уроки". Больший запас знаний позволяет решить задачу большим числом способов. А чем больше вариантов решения, тем больше вероятность выбора оптимального, а не просто того, которое решает задачу "как-то".

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

Страницы: 123

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


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