Нужно ли знать математику что бы стать хорошим программистом?
koala, хороший программист это человек с хорошим образованием по математики.
Иначе -
drBatty написал:
[quote=mogul82]
Я считаю - без знаний математики ты просто девелопер и кодер. А все ПШП кодеры и есть девелоперы. Т.к. ПШП это ПШП
А вот с знанием математики ты уже программист.
нет. без знания математики ты не девелопер и не кодер. ты быдлокодер, и всё что ты можешь: говнокод писать.
[/quote]
+
На самом деле хорошему программисту надо знать как можно больше всего из самых разных областей. Взять хотя бы тот факт, что чтобы написать хорошую программу, которая будет удобна пользователям, нужно хорошо разбираться в выбранной предметной области.
Математические операции разной степени сложности встречаются в нашей жизни часто. Из этого следует, что математику знать нужно ;). К тому же математический подход в некоторых случаях позволяет здорово упрости программу и сделать ее более логически стройной.
З.Ы. В современном мире существует заблуждение что не нужно ничего знать, а надо только потреблять. В итоге можно видеть каким стал мир и какие у нас сегодня специалисты....
На самом деле хорошему программисту надо знать как можно больше всего из самых разных областей.
Очень сомнительный тезис:
начиная с того, что у младших братьев по разуму (физфак) в БФА висел лозунг: "Главное - не знать лишнего!!!"
далее, например все внятные экспертные системы по медицине написаны медикусами,
которые в ладах с программированием
(знакомство с Лиспом или Прологом, Ви-Басик - не канает, это да)
знакомство с современной теорией формальных систем и реальная способность формализовать
пригодным для программирования образом некоторую предметную область -
сущности ортогональные
(и это не вброс для идиотов, это - реальность)
просто надо уметь разговаривать с людьми, заинтересовывать их, убеждать в реальности конечной цели.
А математика - ну что математика?!
Вон Паскаль - плакал, визжал и кусался, знакомясь с отрицательными числами:
"Современный школяр знает гораздо больше Паскаля, ещё бы он умел так же думать, как Паскаль" (С) Сент-Экс
drBatty, Chars67, я предлагаю вам друг друга что называется "не замечать"
думаю, будет полезно для психического здоровья остальных участников конференции...
Ну и зачем, не зная ни Лиспа, ни Пролога, ни ТФС, ни её альтернатив, ...
и, до кучи, не владея элементарной культурой проведения инженерных расчетов (могу напомнить :rolleyes: )
некто Х будет лезть в рассуждения о сущностях, о которых даже понаслышке не знает?
Если у этого Х есть хоть зачаток здравого смысла, он сюда не полезет.
Но коли оного нету - "тады ой"!!!
Не хочу сказать, что для станочника широкого профиля
табуировано чтение математических работ,
просто коли Чёрч, Чень&Ли, Ковальски, ...
(да легион им имя, просто вот основные авторы, у которых интересно лично мне "воровать" идеи)
- читаны, это сразу заметно,
но коли не читаны - оно тоже сразу заметно :(
А если познакомиться с работами группы Бехтеревой,
то станет понятно, насколько доктора бывают разными -
и по части изощренности в области прикладной математики, в частности.
Не могу ещё раз не повторить, что это - не вброс для идиотов.
И, соответственно, идиотам - не надо подключаться к обсуждению.
Ну-ка математики ответьте мне на следующий вопрос:
В 2010 году программистов, знающих математику было 30% от общего числа, в 2011 году - 33%. На сколько процентов больше стало программистов, знающих математику?
В 2010 году программистов, знающих математику было 30% от общего числа, в 2011 году - 33%. На сколько процентов больше стало программистов, знающих математику?
2010 ---- 30% === 30/100
2011 ---- 33% === 33/100
33/100 - 30/100 = 3/100
3/100 === 3%
Ответ: 3%
Вывод - т.к. знаменатель равен константе 100, то дроби можно вычитать. А проценты === дроби.
Вопрос: ОТ ЧЕГО?
Сам по себе процент не имеет смысла, ибо это коэффициент - константа, на которую умножают. 10% от 220вольт === 220*10/100 == 22вольта.
сами по себе проценты не имеют никакого физического смысла или наименования - % это постфиксная операция, причём операция мультипликативная. Физического смысла не имеет как раз выражения 220 вольт + 10%. Ибо вольты складываются только с вольтами (что-бы получить вольты, а не НЕХ). А проценты - не вольты. Вот умножать на проценты - кошерно. Как и на любую константу. Например можно сказать - напряжение увеличилось вдвое, или, на 100%. Парсится это так: 220вольт + 220вольт * 100% == 440 вольт.
т,е. 100% это сокращённая запись 100/100.
drBatty, Ну тогда еще один вопрос.
В первой группе 33 программиста.
Во второй группе 30 программистов.
На сколько процентов больше программистов в первой группе?
Ну ладно, не буду ждать доктора и тянуть резину. Объясню почему я перенёс обсуждение из этой (http://linuxforum.ru/viewtopic.php?id=11529) темы, хотя на первый взгляд ей самое место было там.
Просто на этом примере, хотел показать, что программисту математику знать не обязательно:
На вопрос правильно ответили и я (10%) и доктор (3%). Критерием правильности являются требования клиента - заказчика ПО. А так как клиенты обычно нормально сформулировать то, что они хотят, сами не могут (нет, конечно, могут, но из этого часто получается совсем не то wink ), то появились на свете люди, которых обычно называют системными аналитиками. Вот он-то как раз должен знать математику, но при этом ему совсем не нужно быть программистом.
А совместить приятное с полезным (аналитика и программиста) получится только в сказках. Я не утверждаю, что таких людей нет (мало ли чудес на свете), но почему-то мне кажется, что их очень мало.
Вывод: Аналитик составляет модель (техническое задание), программист ее реализует (выполняет).
1. Была зарплата 30$ в день, стала 33$ в день. На сколько процентов больше стала зарплата?
очевидно, что зарплата стала больше на $3.
так-же очевидно, что $3 это ровно 10% от первоначальной зп.
mycetophylax написал:
и доктор (3%)
простите, где я такой бред написал? 3% это меньше одного бакса. или чуть больше, если брать процент от новой зарплаты.
mycetophylax написал:
Критерием правильности являются требования клиента - заказчика ПО. А так как клиенты обычно нормально сформулировать то, что они хотят, сами не могут
я знаю. вот только это не отменяет знания математики. в конце концов, если программа от drBatty напишет $100, а банк выдаст $10, то виноватым окажусь именно я. Я ОБЯЗАН выявить и устранить неоднозначность. Если я не знаю, КАК этот банк начисляет проценты - я могу это узнать. Впрочем, я могу и догадаться - если есть неоднозначность, то банк будет трактовать её в свою пользу - ибо тамошние кодеры знают математику, и тоже видят неоднозначность. Вообще говоря, неоднозначности - это способ заработать деньги банку. Точно так-же зарабатывают организаторы лотерей, эксплуатируя математическую безграмотность людей. (лотерея - налог за незнание математики(С)кто-то из великих).
mycetophylax написал:
Просто на этом примере, хотел показать, что программисту математику знать не обязательно:
у вас это не получилось. программист просто обязан чётко знать арифметику (на уровне подсознания), и отлично знать математику в объёме ср. школы. Естественно, он также обязан хорошо знать и математику вообще (хотя-бы для того, что-бы распарсить "ортогональность" ;) )
mycetophylax написал:
Объясню почему я перенёс обсуждение из этой (Калькулятор в Ubuntu 9.04_x86-64) темы, хотя на первый взгляд ей самое место было там.
ИМХО закрыть надо эту грустную тему... В которой складывают непонятно что, с частью какой-то другой НЕХ. И при этом получают разный результат. Ну давайте ещё вспомним:
Обратите внимание:
1) примем как аксиому, что 1 эквивалентно 100%.
(эквивалентность здесь значит, что везде мы можем писать вместо 1. При этом это относится только к числам. например 1кг это не 100%. Это 100% * 1кг. Умножение здесь появилось потому, что процент по определению - часть. Т.е. дробь. Потому-то на неё надо именно умножать).
2) также примем как вторую аксиому, что 1%+1%=2% (т.е. % величина аддитивная, и их можно складывать как действительные числа, получая на выходе другие числа, которые будут также процентами).
3) из аксиом (1) и (2) следует, что 100 эквивалентно 10000% (это можно доказать математической индукцией, или ручками, многократно применяя эти аксиомы).
4) по аксиоме (2) мы получаем, что 10000% + 40% === 10040%.
5) по аксиоме (1) мы получаем, что 10040% === 100.4
Вывод: с точки зрения математики должно получится 100.4
Почему-же получается 140? Всё просто: сменился алгоритм выполнения операции +. И аксиома 1 теперь НЕ верна. Алгоритм сменили на следующий:
Дано X+Y
1) проверяем посл. символ Y, если это %, то goto 4.
2) иначе складываем как обычно.
3) выход
4) если %, то сначала вычисляем X.
5) вычисляем сумму, по формуле(алгоритму) X + X * Y / 100 (здесь сам процент уже отрезан)
6) выход
7) профит.
Т.е. в данном случае % это не оператор, а ТИП числа. 10% это вовсе не 10, а некая особая НЕХ, которая обладает особыми свойствами. Например сложение работает по другому. Перед сложением необходимо преобразовать 10% в что-то другое, причём математически правильный подход даёт убунта9 (100.4), но другие ОС дают хоть и неправильный результат, но на практике куда как более удобный. Конечно, бухгалтеру пофиг, ему деньги считать надо, а вот программисту - нет. Именно он обязан знать, что на самом деле, вычисления происходят по другой формуле (X + X * Y). Вы видите - если вы не знаете математики, вы даже простейший калькулятор не напишите. Ибо заказчик требует 140, а у вас получается 100.4. Как сделать из 100.4 -> 140 - понять без знания математики невозможно (ибо +39.6 или ещё что-то такое помогут только в этом случае)
И не надо мне говорить, что аналитик должен объяснять кодеру, как сложение с процентом реализовать.