Pull to refresh

Comments 232

Дискретка ещё более менее востребована. С матана только начало учебной программы.
В принципе ряды тоже довольно полезны бывают, а они изучаются в третьем семестре(по крайней мере у нас так было). Еще линейная алгебра нужна бывает.
И аналитическая геометрия тоже. Особенно в 3d графике.
Тригонометрия особенно важна в 3д, покрайней мере в тех задачах что я решал.
Алгебра тоже бывает весьма полезна в ряде задач.
Алгебра, кстати, несмотря на кажущуюся бесполезность в бытовом программировании, очень полезна. Она помогает лучше пространственно мыслить и подходить к задаче с разных сторон.
я бы сказал что тут более полезна геометрия/планеметрия… или шахматы
А может быть Го? :-)

Шахматы уже обсчитали.
Мне казалось, что шахматы просчитали только примерно до 21го хода.
Если я правильно понял новости, то люди уже с машинами не играют.
Да, теоретический вопрос об идеальной стратегии еще открыт, но практический вопрос о игре человек-машина — уже закрыт :-)
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Дискретка, численные методы, теория вероятности, теория автоматов, ТАУ, лямбда-исчисление. Минимум.
Я вот в универе пары прогуливал — теперь страшно жалею.
Наверное потому, что тебе, судя по вопросу, лень учить матан :))
Догадываюсь, что за бестолковый неверно поставленный и заведомо предубежденный опрос, который неоднократно обсусоливался даже и на Хабре, и который ведет только к увеличению энтропии.

П.С. Я не минусовал.
Угу, а сусолить на 200 комментов молодцы.
Сусолят одни, минусуют другие.
Проголосовал «обязательно», так как нет пункта «Достаточно базовых понятий». Я считаю, что программист — это инженер, а инженер должен, как минимум, быть в курсе того, что это такое и уметь быстро подогнать свои знания, если необходимо. С базовой школьной программой это невозможно.
Я думаю, кроме базовых понятий тут есть ещё несколько важных факторов.

Если освоить курс матана/дискретки/диффуров то это воспитает культуру применения мат.методов в решении задач. А это немаловажно. :)
Само собой! Плюс системный подход в решении задач, и много других мелких факторов, из которых состоит суть технаря.
ага, и получим в результате миллионы нечитаемого и непереносимого кода на фортране
Если бы вы не знали «матана/дискретки/диффуров», вы бы взяли Java и написали всё лучше? Архитектурно наверняка, но считало бы оно также хорошо? :) Фортран был очень хорош в своё время, да и сейчас специалистов ценят. Этак можно сказать, что раньше было много непереносимого кода на ассемблере :)
На любом языке можно писать на фортране ;) Я хотел сказать, что «культура применения мат.методов» и «системный подход в решении задач» вообще говоря вещи перпендикулярные.
Ассемблер в общем случае непереносим, из-за своей сильной завязанности на архитектуру. Неудачный пример.
Согласен. Хотя всё равно нужно стараться совмещать. Получается правда с трудом.
Лично я с таким не сталкивался. Программисту на мой взгляд достаточно школьной программы, гугла, и умения быстро обучаться любым методам, необходимым для решения задачи.
все зависит от задач, которые к вам ставят. Вообще клево когда хорошо знаешь дискретку, все алгоритмы кажутся проще и решаются быстрее
В 16 лет можно быстро обучится многому…
А 25… в 30… быстро освоить дифуры уже не получится. Так что лучше в универе загрузить базу для скилов.

Кодеру хватает гугла и школьной программы.
А программист должен быть математически грамотным.
UFO just landed and posted this here
UFO just landed and posted this here
И что из себя представляют физика, химия и фармокинетика без матана и диффуров?
Матан, диффуры — если требует задача. Это уже вычислительная математика.
А вот за дискретная математика нужна всем программистам без исключения. Она формирует правильное мышление)
Вычислительная математика — отдельный предмет обычно. По крайней мере на местном матфаке именно так.
Предмет-то отдельный, но в нем и используются знания матана и диффур.
Гм. Не используются, не спорю, но я бы не сказал, что предмет состоит из матана и дифур. На мой взгляд, уютного дискретного мирка в нём гораздо больше, чем непрерывности и устойчивости.
UFO just landed and posted this here
На подобную пламенную речь наш философ (преподаватель) предложил сходить к гадалке, быстренько узнать какие знания пригодятся в течении жизни, и начинать их получать.

Извините, если обидел :)
Опрос имхо неверен. Не имеет значение на каком ты языке пишешь. Задача может потребовать знаний математики, не язык программирования.
Если вы захотите написать движок для трехмерной игры, скажем, на php, то вам обязательно потребуется знания математики.
Если вы захотите написать движок для трехмерной игры, скажем, на php, то для начала вам потребуется психиатр. Я полагаю языки автор для того и обозначил, чтоб отсеять около-программистов, вроде 1С-ников, которым знание бух. учета важнее дискретки.
Хотите сказать что всё остальные кто не работают с вышеперечисленными языками — около-программисты? ))
Я же привел пример, помоему достаточно ясный для того, чтобы понять что я имел в виду. Для некоторых задач знание предметной области важнее теоретической подготовки в плане программирования, так 1Сник может вылупиться как из программиста изучившего бух. учет, так и из бухгалтера изучившего встроенный язык.
Да и тотже РНРист хоть и будет родной хлеб защищать, но всеж при возможности упомянет, что он на РНР пересел с С++ исключительно из соображений востребованности, С++ — тот самый флажок, который говорит: «Я не быдлокодер, я тру, я алгоритмы знаю, в былые времена вместо „src=“ в видеобуфер напрямую писал!»
UFO just landed and posted this here
> С++ — тот самый флажок, который говорит: «Я не быдлокодер, я тру, я алгоритмы знаю, в былые времена вместо „src=“ в видеобуфер напрямую писал!»

Отборррный стеб. :)
Я в бухучёте не очень понимаю, там вроде элементарная математика задействована, а вот про трёхмерный движок на php — смеялся очень и очень. Считаю что матан/теорвер/дискретка нужны любому технарю, как обязательный базис для понимания процессов. И:2Scuff: опрос имхо верен, так как имеет значение на каком языке ты пишешь, иначе — пишите трёхмерный движок на BrainFuck'е, хочу, чтоб простой полигональный куб(без текстур) у меня стрелочками с клавиатуры вращался. Можешь? Долго делать будешь? А если воспользуешься Си++, насколько быстрее получится? Для этого и нужны разные языки
Ну тогда почему Java и С++ в одном ряду? Очевидно же, что для написания программ на C++ в тех областях, где применяется C++, математика может понадобится с много большей вероятностью чем для написания чего-либо на Java.
Зависит от задачи. Но лишним это никогда не бывает, если рассчитываете на повышение.
А вот про низкоуровневую работу компьютера(памяти/процессора) нужно знать всем поголовно. Вас ещё не раздражают комменты вида
Не знал, что бывает 0.3 + 0.4 != 0.7, буду иметь в виду.
?
В принципе чтобы знать пример привиденный в комменте, надо просто не прогуливать информатику в школе)
обычно информатика в школе — пародия на обучение
Бывает. Но бывает и так, что теорию неплохо преподают.
Таких школ даже в Москве всего пара десятков. Да и «проходят» это по программе в начале обучения, когда ещё нет приоритетов и запоминается материал плохо.
Хм. Я учился в Стерлитамаке. Это 2 тыс. км от Москвы. В этом городе 250 тыс. жителей. Я учился в обычной школе, правда в физмат классе. И как хранятся числа в памяти мы тоже проходили. Хотя не спорю, это было в начале программы.
Проходить должны везде, это опять же программа, вопрос в том как.
Я учился в городе в 350 км от Москвы, с населением 250к жителей, в одной из лучших школ города. Так вот занятия у нас проходили на полуживых Корветах 1985 года выпуска (школу я окончил в 2001 г.). Занятия вела тётечка — отличный педагог, но «информатик», мягко говоря, слабый. И уж о том, чтобы нам рассказывали, как хранятся числа, не могло быть и речи. Так что информатика информатике рознь.
Нас вообще в 10-м классе гоняли по «ЛогоМирам» и «пэинтам». Нам было стыдно и мы сами изучали паскаль, бейсик и всё, что проходили в других школах. Хотя Лицей как бы у нас был одним из лучших в городе (8k км от Москвы, но не суть) и подход к обучению был серьёзным. Правда, в пятом изучали REFIS, и прочие вкусности того возраста, но препод этот уволился. Так что я согласен с тем, что информатика информатике рознь.

А по сабжу — обязательно, сейчас в процессе, стараюсь понимать X_x
А разве мой совет не прогуливать информатику в школе вам бы пригодился сейчас? Можно было понять, что я адресовал это несколько другой аудитории)
Почему это даже в Москве? У нас что — Москва является основной кузницей кадров для ВУЗов, программистов готовящих? Как минимум Мытищи переплюнут в области информатики московскую подготовку! Вы забываете про ещё и про Новосибирск, Пермь, Нижний Новгород, Санкт-Петербург, Ульяновск, Екатеринбург, Самару, и прочие города — знайте, в нескольких сотнях километров от Москвы тоже есть жизнь, причем, несмотря на то, что доходы в этих городах могут отличаться в разы, зарплаты учителей там примерно такие же(были год назад, про сейчас не знаю, по школам какая-то реформа прошла, теперь учителям как-то по-другому начисляют) и, что самое удивительное, школьники из этих городов тоже участвуют в олимпиадах, иногда даже выигрывают. Не надо Москву как эталон рассматривать, реальность гораздо объёмнее.
иногда даже выигрывают
Вот именно, иногда. Я говорю про Москву потому, что там больше всего населения и школ. Не хотел вас обидеть.
Статистически, в процентном отношении, жители остальных городов все-таки наверное вырвутся вперёд по числу успехов. Вот например — 2007 год, олимпиада
Статистически, «регионы» ЕГЭ сдают не хуже «центра». Естесственно, с помощью своих учителей, хоть чем-то хороши. Потом они поступают в те ВУЗы названных вами городов, которые ещё могу дать даекватные своему статусу знания. Что из этого получается не нужно объяснять?
Во-первых, странно сравнивать по такому узкоспециализированному направлению — как командное программирование.
Во-вторых, странно делать выводы, основываясь на результатах одной олимпиады.
В-третьих, каким образом вы подсчитали там статистику? Я не считал, но тот факт, что из 11 первых команд — 3 московские, довольно неплохой показатель.
Если не прогулиувать информатику в школе, можно узнать, что Office 95 грузится минут 10 на компьютере 15-тилетней давности.
Зато турбо паскаль или турбо бэйсик грузится за пару секунд.
Квик бейсик. Квик. Он потому так, собственно, и назван ;)
Просто турбо бэйсик тоже есть, вот я и перепутал)
Нельзя этого узнать, потому что на компьютере 15ти-летней давности 2000й офис грузится за 3 минуты.

95й еще быстрее.
вы живете в параллельных вселенных %)
Нет, просто я 5ть лет с 99го по 2004й проработал (на работе) на машине 95го года выпуска :) В отличии от некоторых.

Pentium 133, 16мб RAM, 1мб видео, 4 Гб винт.

И у меня там стояла 98 OSR2 с 2000м офисом в течении 3х лет без переустановок.

Word тормозил и грузился минутами, Excel поднимался за 10-15с. Впрочем мне был нужнее Excel, поэтому я был доволен :)
Я скажу так. В зависимости от поставленной задачи могут потребоваться очень разные разделы математики. Поэтому лучше хорошо знать основы матана, функана, дискретной математики и численный методов, чем что-то одно.
Не существует понятия «программист на Java/C++/C#». Существует «разработчик интерфейсов», «системный программист», «прикладной программист», «гуру проектирования БД», «джедай трехмерных движков». Вот по такому принципу можно делать дифференциацию по необходимым знаниям, а по языку программирования — категорически нельзя.
Иммено.

Я бы еще разделил всех программистов на аналитиков, кодеров и архитекторов. Так вот первым без указанных трех дисциплин совсем никуда.
Бред. Кодер — не программист. Программист должен уметь: проектировать ПО и БД, правильно и обоснованно выбирать язык программирования и инструменты и кодить. Вот для обоснования выбора как раз и нужна всякая математика, собственно для кодирования быдлоприложения php + mysql нужен минимум. Из этого, кстати, следует, что программистов нельзя делить по языкам — нормальный программист знает 10-15 языков самых разных стилей и парадигм, а также умеет писать свои собственные, и выбирает из них исходя из задачи.
Кстати говоря, в англоязычных странах программисты называются Software Engineer'ы.
>нормальный программист знает 10-15 языков самых разных стилей

Капец.
А может всё-таки несколько языков но хорошо?
Нет. Если ты знаешь несколько языков — твое мышление ограниченно возможностями этих языков и реализуемой ими парадигмы. В любом случае, как только осилишь несколько разных языков — учить их будешь как орехи, буквально за пару дней. Только учти, Си и Питон разными не считаются, разные — это Си и Хаскель, или Си и Лисп, или Си и Пролог.

Классику тоже знать полезно — Ада, Фортран, Смолтолк и т. д.
нормальный программист знает 10-15 языков самых разных стилей и парадигм
Только учти, Си и Питон разными не считаются, разные — это Си и Хаскель
И где вы наберёте 15 разных в этом понимании языков? ;)
При всём старании, держать в голове больше 5ти парадигм одновременно может оказаться вредным для результата.
> И где вы наберёте 15 разных в этом понимании языков? ;)

Рассматривать надо не только собственно реализуемые языками парадигмы, но парадигмы разработки, характерные для языков — тогда их наберется много.
ru.wikipedia.org/wiki/Сравнение языков программирования
— Там чисто языковые парадигмы.
А вот часто используемой для разработки на Лисп laguage-oriented programming там нету.

> При всём старании, держать в голове больше 5ти парадигм одновременно может оказаться вредным для результата.

Наоборот, вместо анальносго секса с Си/Си++ быстро и качественно пишешь на чем-нибудь более подходящем и логичном. Но чтобы выбирать — надо знать что вообще есть. Отдельные недоумки ничего кроме ООП не видели — а туда же, погроммисты.
>В любом случае, как только осилишь несколько разных языков — учить их будешь как орехи, буквально за пару дней

Да какой вы, простите, программист после этих слов? за пару дней вы выучите синтаксис, возможно некоторые особенности. Но это еще далеко не знание языка.
А синтаксис учиться за один день. Это вообще фигня.
Семантики императивных языков очень похожи, если знаешь Си + ПХП/Питон разобраться с другими императивными не составит труда.
Ах да, либы, нужные для работы. Новые либы надо изучать постоянно, я уж про это не говорю.
Что забыл?
! Императивные языки. Именно о различных направлениях/парадигмах и говорит автор, а не о выучивании C-подобных языков.
Дык автор — я! Я про то и говорю, что другие парадигмы могут отличаться радикально.
Я и смотрю, странно это :) Несведующему человеку может показаться, что мы троллим, уж больно несвязно :)
ага и ещё умеет водит трактора, бульдозеры, поезда, самолеты, корабли и подводные лодки…
Я, конечно, понимаю, что бездумно выблевывать говнокод на похапе для быдлосайтиков намного проще, но это может удовлетворить лишь конченого дебила.
Создатели говносайтов вызывают во мне куда больше уважения, чем писатели говнокоментов.
Да, собственно, я тебя не знаю, и твоим мнением не интересуюсь.
Сам-то что знаешь?
UFO just landed and posted this here
Они нужны любому здравомыслящему человеку!
Матан и дискретка — обязательно нужны всем. А вот диффуры… Честно говоря не сталкивался с такими задачами, думаю они применимы лишь в довольно специализированных областях.
Немного примеров из «специфических областей»:
— наши ракеты уже давно не летают как пушечные ядра;
— автопилот — это не человек;
— счетчик протекающей жидкости в трубе (о чудо) можно сделать без врезания в трубу;
— список можно продолжать :)

Из того, в чем разбираюсь: чтобы сделать это (не мое), нужно знать и матан, и дискретную математику, и диф. уравнения. И все это совместно с теорией вероятности, цифровой обработкой сигналов и методами оптимизации. Как работает сердце тоже надо знать :)

Жаль только, что преподаватели, которые ведут математику у программистов/вычислителей/радистов не представляют область ее применения. И на вопрос «Зачем нам это нужно» ответить не могут.

Печально, что сейчас 90 % программистов(если не больше) заняты в разработке баз данных и web. От сюда возникают такие вопросы.
Лично я считаю, что в любом случае математика нужна, как минимум для развития мышления.
Можно в двух keyword-ах про трубу? По автопилотам-то знакомый дисер пишет, а вот с трубами не очевидно.
В двух словах, можно измерить скорость потока жидкости с помощью эффекта Доплера. Этим занимался мой руководитель, а не я. Так что более двух слов, я к сожалению рассказать не могу. В Википедии тоже только двухстрочная заметка.
Мне была просто интересна базовая идея и двух слов для весьма общего понимания идеи хватило, а вглубь я лезть и не собирался.

Спасибо :-)
UFO just landed and posted this here
Уважаемый, %username%. Я ни в коем случае не открещивался от физики и химии. Я всего лишь оставил свой комментарии относительно необходимости знаний математики.
На счет профессионального математика я не против. И так же могу придраться к вашему посту, указав, что профессиональный математик — это абстрактная профессия в вакууме, как и просто программист. Нужно говорить о предметной области, например специалист по цифровой обработке сигналов.

Здесь писали о специализации и предметной области. Читайте.

Но программист должен понимать профильного специалиста. В противном случае, если такому кодеру нужно разжевывать все по полочкам и (не дай Бог) разъяснять, что сигма — это сумма. (страшно подумать, если такому программисту дадут реализовывать интегралы) То зачем нужен такой программист, если можно найти другого?
Ответил «От задачи зависит»
А вот если б вопрос стоял «полезно ли изучать» — тут я б ответил «безусловно»
Только набрал похожий пост, опередили :) Для кроссплатформенного HelloWorld на Java матан/дискретка/диффуры вряд ли понадобятся
Думаю, что обязательно.
И тут я полность согласен с Ломоносовым: «Математику уже затем учить следует, что она ум в порядок приводит».
Математика — гимнастика для головы.
«Математика — гимнастика ума»
Н. И. Лобачевский
Я встречаю «программистов», которые не могут простую сортировку массива осуществить, поэтому имхо:
Линейка, Матан и Численные методы, Дискретка и Комбинаторика — Обязательные предметы для программиста!!!
Тем более, базовые знания по этим предметом, приобретаются за пол года, если не лениться. А пригождаться могут в течение всей жизни. Неплохое инвестирование свободного времени)
Солидарен. Каждый программист должен круто задрачивать в Линейку! ;-)
А я встречаю кучу «программистов», которые знают линейку, матан, численные методы, дискретку и комбинаторику, но не умеют программировать.
Недавно было надо писать визуализацию некоторого трехмерного скалярного поля. Расчёт каждой точки изображения (примерно 500*500 точек) предполагал множество вычислений. До оптимизации 1 картинка считалась секунд 20 (было много источников поля). После анализа математической части и некоторых преобразований расчёт стал занимать 2 секунды.
А ещё можно использовать SSE etc. или даже видеокарту, для расчётов. А с какой частотой требуется получать визуализацию?
Может быть сами знания не так важны, но программист, который не был способен выучить матан с дискреткой в университете, не сможет потом разобраться со сложной задачей на работе. Математика — очень хорошая зарядка для мозгов.
Программист программисту рознь… Кодеру — не нужно… Если уровень повыше, то и требования к мат подготовке повыше…

«Программирование одна из наиболее сложных отраслей прикладной математики. Поэтому слабым (poor) математикам лучше оставаться чистыми (pure) математиками» Дейкстра
Умный был мужик — Дейкстра.
Только вот, с тех пор, когда он это сказал, программирование перестало быть отраслью прикладной математики.
Это тоже самое, что и вопрос — нужно ли программисту знать алгоритмы и уметь ими пользоваться.
Зависит от поставленной задачи :)
Дискретка, тервер + понятие того, что есть интеграл и диффиренциал — маст хев.
За всё остальное, перечисленное, как показывает практика, работодатели не готовы платить сверху.
Программисту неплохо бы для начала нормально говорить по-русски.
в смысле — нормально формулировать свои мысли — безусловно. А то такое бывает встречается… :(

ЗЫ А вот по-русски ли, по-английски или по-китайски — зависит уже от круга общения… :)
UFO just landed and posted this here
Нужны базовые знания, остальное зависит от задачи.
А так как после окончания ВУЗа мало кто за приемлемое время способен решить задачки, которые как-то решал на начальных курсах, то можно сказать что высшее образование — это минимум что требуется для полноценного программиста.
Да, да, конечно нужны. Как же так, я учил, а другим теперь не надо!? Мат.физику забыли!
А также гидродинамику, да. И сопромат.
по-моему, ваш ответ самый честный :)
Смешали все в одну кучу. Дискретная математика, по-моему, делает программиста программистом. А вот остальное действительно зависит от задачи, хотя в целом уровень повышает даже в тех случаях, когда прямой связи нет.
В большинстве случаев глубокого знания математике программисту не надо, так для это есть люди, которые именно этим и занимаются. Но вот хорошее владение базовой математикой просто необходимо, что бы писать хороший код (небольшой, быстрый).
Золотые слова. Тем более что если изучать все вышеперечисленные разделы математики, то времени не то что пойти с друзьями пива выпить не будет, но и не будете поспевать за крайне быстрым развитием IT-сферы. А то ведь, скажем, выйдет новый мега-фреймворк, все кинутся изучать его и в вакансиях потребую его знание, а вы в то время будете грызть твёрдый гранит науки.
ИМХО нужен базовый матан, ну и дискетка иногда может помочь + поверхностные знания остальных основных разделов для того чтобы в случае чего знать где искать и какую область подтягивать.
UFO just landed and posted this here
Хабр по большей части сообщество web-девелоперов, как я понимаю. А где в вебе математика… Может быть я плохо искал? Вольфрам чур в пример не приводить.

В обходе очередного глюка IE и изучении очередного javascript фрэймфорка математики нет, исключительно кропотливая работа по вылизыванию кода. Где-то встречал замечательную фразу про офисного сисадмина — «слесарь ЭВМ», так что это не критерии профессионализма занижены, они просто другие. Вы же не обвиняете слесаря в том, что он не знает гидродинамики и не умеет решать уравнения Навье-Стокса в общем виде? :-)
UFO just landed and posted this here
Математики — да, а вот «сложнейшей» не встречал, если не брать в расчет криптографию.
Потому что их никто читать не будет. Практически все подобные статьи крайне сложны для обычного веб-жаваскрипт-похапе кодера. Отклика на них практически никакого, а впустую писать зачем?
UFO just landed and posted this here
UFO just landed and posted this here
Но Тьюринга не за конкретные результаты дают, а вообще за вклад человека в CS ;)
UFO just landed and posted this here
UFO just landed and posted this here
Я бы тоже почитал :) А ещё бы о нечёткой логике, да что там нечёткая! О банальной математической логике бы почитал: исчисление высказываний, ординалы-кардиналы и так далее. Но как показывает мой личный опыт — это очень сложные для понимания темы, об этом написать понятно очень сложно, нужен талант популяризатора науки. Некоторые вещи, которые мы проходили на первом курсе, я понял только курсе на четвёртом, буквально понимание как щелчком в голове переключило.
Нужны, если Вы не собираетесь всю жизнь писать сайты. Более менее серьезный проект почти всегда в себе содержит математическую задачу.
Простита, а сайты не бывают сложными проектами?
Имелось в виду конечно же «простите», а не «простата».

Хотя…
Сравнить можно требования для работы c++ программистом (вирусным аналитиком, например) и php программистом, и уровни заработных плат.

Не считаю разработку CMS чем-то серьезным.
А теперь подумайте о вечном Гугле, Фейсбуке, Амазоне и прочем. Подумайте об уровне специалистов, которые делали эти сайты. Можете подумать и об их зарплате, если для вас это такой существенный критерий.

А насчет «С++ программистов» и «php-программистов» читайте мой коммент выше.
В Google требования к разработчиком самые высокие, с Вас еще на собеседовании попросят весь курс мат анализа рассказать. И я бы не назвал поисковик гугла просто сайтом), так как за веб мордой скрывается гораздо большее, и нигде в вакансиях я не видел, чтобы гуглу или яндексу требовались пхп программисты, вот с++ это да=) в Facebook з/п программиста абсолютна такая же, как и везде.

Ну и максимальную з/п, которую я видел для php разработчика — порядка 2000 евро, для с++/java/c# в районе 5000 евро.
1) Гугл это сайт. Это вы зачем-то придумали связь сайт=вебморда, на самом деле это не так. Вебморда может быть не только у сайта, равно как и практически в любом сайте сложнее промо-странички скрывается гораздо больше вебморды.

2) В Гугле вас не попросят рассказывать никакой матанализ на большинства вакансиях. На том же Хабре есть масса примеров того, что спрашивают в Гугле, ознакомьтесь.

3) Где я говорил, что сайты пишутся только на пхп? Про пхп зачем-то вспомнили вы. Изначально речь была про то, что сайт не может быть сложным проектом, языки тут не причем. Хотя даже если говорить про пхп — Digg, например, является сложнейшим проектом. С продвинутой архитектурой, кучой серверов, собственными технологиями и бородатыми аналитиками. И он написан на пхп.
Не утруждайте себя. Очевидно, что ваш уважаемый оппонент представляет себе процесс создания сайта\CMS как нечто элементарное сродни открытию Дримвивера где печатаешь
«Привет. Меня зовут Вася, а это моя домашняя страничка».
И даже этот комментарий сомнителен, так как действительно опытный php-разработчик не стал бы писать такое, возможно вы переоцениваете свой опыт в веб-программировании.
Я бы не стал писать просто так, не имея за плечами опыта разработки собственных CMS. При Вашем желании могу отправить Вам свое портфолио и сказать какими проектами занимаюсь сейчас;)
в обратке сигнало необходимы азы функана
Вообще странный вопрос: если «программист на Java» — это тот, кто программирует на Java, ему ничего не нужно, кроме знания языка Java. Но при этом речь идёт, конечно, о чистом кодерстве — написании программы по спецификации (собственно, программировании).

Если же человек решает какую-либо задачу — всё зависит от задачи. Мне в практике не попадались задачи, где нужны матан, дискретка или дифуры. Другим — возможно, и попадались. А третьим нужна билогия, четвёртым экономика, пятым физика. Так что с тем же успехом можно спросить: «нужна ли программисту химия/русский язык/психология». Зависит от места работы :)
Кстати, физика может сильно понадобиться начинающим гейм-девелоперам, а вот отсальным программиста она вряд ли нужна. Действиельно, все очень относитльено и сильно зависит о поставленной задачи.
Программисту (хорошему) нужны не знания, которые в этих курсах содержаться, а методы, применяемые в этих областях, и способы мышления, которые вырабатываются в процессе освоения этих курсов.

Например матан или дифуры. Если в двух словах — они учат понимать, что характеризует рост функции (производная), что характеризует количество функции (интеграл) и то, что само значение функции может быть вообще не показательно.
Это «мышление» применимо даже к тем же сайтам — к оценке посещаемости. +100 посетителей для сайта с 1000 посещениями — это гораздо весомей, чем +1000 к сайту со 100000 посетителями (производная больше), при этом пиковое повышение посещаемости не показатель, потому что показатель — посещения в месяц (интеграл). Эти вещи кажутся очевидными, по после соответсвующей математической подготовки они становятся еще более очевидными.
Таким же образом используется теорвер и матстат.

Применительно к коду — понимание, что надо оптимизировать те запросы к базе, которые выполняются часто, а не те, которые выполняются долго, понимание того, какой выигрыш даст уменьшение объема передаваемых данных в том или ином случае. Это вещи оцевидные, но более очевидными они опять же становятся после математической подготовки.

При этом умение брать сложные интегралы по частям с применением быстрого преобразования Фурье не используется — математика воспитывает «здравый смысл» применительно к задачам, которые стоят перед программистами.

Понимание того, как надо делать грамотно — что оптимизировать, что куда передавать, что где хранить — потоки данных, расчет каких-то рейтингов и показателей — все это придумывается гораздо быстрее и лучше после математической подготовки в хорошем ВУЗе.
Вы перегнули и свалили всё в кучу.

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

Математика и точные науки вообще, безусловно развивают мышление.
Однако время, которое будет потрачено на их изучение, с гораздо большей пользой можно непосредственно потратить на изучение принципов функционирования сетей, распределённые вычисления, кеширование, методы оптимизации. Всё начинает не просто «придумываться быстрее» оно уже «знается» как базовое и расширяется при необходимости.
>> принципов функционирования сетей, распределённые вычисления, кеширование, методы оптимизации

Все это тоже входит в программу хорошего ВУЗа
Должно входить, только вот для другой специальности или даже факультета.
На практике получается так:

Сначала в программу входит очень много объёмной математики (программе уже лет 15).

Затем на факультете чувствуют потребность в новых, «программерских» дисциплинах и начинают их туда
понемногу добавлять, вытесняя слегка математику.

Естественно, старший преподавательский состав таким изменениям противится и всячески пытается оставить пальму первенства за своими дисциплинами.

По моим наблюдениям, побеждает царица наук и студентам приходится основную часть сил и времени тратить именно на матаны, сопроматы, дифуры и функаны. IT дисциплины сдают «как-нибудь», да и преподаватели (как правило молодые аспиранты), понимая это, не сильно требуют.

Создаётся устойчивое впечатление — если уж математику выучу, то всякое программирование и «прочую ерунду» потом легко освою при необходимости. Приходят эти выпускники на работу с дипломом и амбициями и делают очень круглые глаза, понимая чем им придётся заниматься.
На мой взгляд, нормальная ситуация, когда студент начинает самостоятельно что-то зарабатывать еще будучи студентом — с третьего или четвертого курса (в среднем).
Он сталкивается с этой отраслью и смотрит, чем люди реально занимаются и что ему нужно изучить. На старших курсах он самостоятельно проходит «боевую подготовку», чтобы не пришлось потом круглые глаза делать.

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

Студент вполне может самостоятельно решить свои проблемы, связанные с тем, что ВУЗ дает ему недостаточно знаний и навыков для практической деятельности.

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

Автоматическое доказательство теорем, построение систем извлечения знаний, экспертных систем — это реальные вещи, в которых используется матлог. Это та область, в которой не «компьютеры помогают математикам считать», а наоборот — область математики напрямую используется в информационных технологиях.
Все зависит не от того, на чем вы программируете, а от того, какого рода системы вы будете разрабатывать. Не исключено, что вам больше понадобятся знания бухгалтерии, пищевой химии или циклов цветения плодовых деревьев.
если работаешь в области, где эти знания востребованы — естественно нужны.
иначе через год на простой дифур будешь смотреть как в первый раз.
Вместо бесполезных рассуждений типа нужно/ненужно учить, я бы лучше поговорил бы о том, какие математические дисциплины наиболее важны в информатики и где что может использоваться. Например комбинаторика в вопросах защиты информации (криптография, криптоанализ) прет изо всех щелей. Да и не только там — комбинаторика везде и всюду полезная вещь.

Также стоит отметить и теорию вероятностей. Вот один из примеров её использования на практике
UFO just landed and posted this here
Знания геометрии/дискретки/мат. логики — пригодятся полюбому.
А мат. анализ и т.д. — только в узких областях.
Нужны основы.
Всякие загоны в науку проганью не помогут :)
тут все кто сказал «нужны» с пятеркой ходят?
Разве вопрос «Тут все, кто сказал «не очень-то нужны» с пятеркой ходят?» не интереснее?=)
Я наверное криворукий, но по моему кнопка проголосовать должна быть справа, а не слева, вообщем хотел проголосовать обязательно, но поучилось воздержаться.
Считаю что нужно учить не столько для применения именно диффов, сколько для развития мозга.
ИМХО, не нужны.
Вот что действительно необходимо — умение быстро найти нужную информацию и ГРАМОТНО ей воспользоваться.
Что-бы что-то найти надо хотя бы примерно знать, что искать. Если же человек понятия не имеет, что задачу можно свести к поиску на графе, что он искать будет?
Согласен. Но вопрос звучит как «нужны ли ХОРОШИЕ знания...». А не базовые.
если человек с минимальной базой не может найти правильное решение, то значит у него поисковые навыки недостаточно развиты :)
Человек с минимальной базой практически наверняка не найдёт эффективное решение, если примерно не представляет, где его искать. А чтобы примерно представлять, в голове должны быть образцы сходных задач. С минимальной базой в голове таких образцов нет. И развитие поисковых навыков тут никак не поможет, ибо, условно говоря, поисковые домены не пересекаются. Чтобы «перепрыгнуть» в другой домен, нужен «мостик» в виде багажа образцов/паттернов.
По-моему, вне зависимости от поставленной задачи надо. А то, ведь, нередко попадаются кадры знающие Java/C++ очень хорошо, но не способные при этом правильно выписать логическое условие.
Я думаю хорошие знания нужны. Задач у программиста может быть много и разных за всю жизнь и где-то да пригодится. А если у него только, например, начальный курс, то придётся гуглить, изучать. И это не всегда хорошо. Когда есть хорошая база знаний в голове, то решение отыскивается быстро. А если гуглить… ну не всегда понятно, что именно нужно найти.
Поэтому считаю, что ХОРОШЕМУ программисту нужны ХОРОШИЕ знания. Никогда не помешают.
Но ответил я «в зависимости от поставленной задачи», потомучто это всё таки более общий ответ и шёл я от обратного, так как если у программиста нет хороших знаний, то это далеко не всегда значит, что он НЕ хороший программист.
честно говоря мне все понадобилось. от word'a со школы и заканчивая статистикой (поиск по релевантности), симплекс-методом, вероятностями итп. это все нужно — если не на joomla работать, кончено.
первые два курса матана, дискретки и, может быть, дифуров это еще ладно, интегралы точно пригодятся, дискретка интересная даже. Но потом такая ахинея идет, что не понятно что это зачем и нужно ли. Я думал, что любил математику, как же я ошибался лол
Ахинея — это БЖД (Безопасность ЖизнеДеятельности), ОПД (Основы ПреДпренимательства) и т.п.? :-D
ну это вообще не предметы, и сдаются так же)) я скорее о углублении матана, дифуров и функане
Возможно чуточку не в тему, но рекомендую посмотреть задачки на projecteuler.net или его русскоязычном аналоге www.diofant.ru/ Там вам будет приятная смесь математики и собственно программирования.
Математический анализ развивает абстрактное мышление — если лекции называются, начиная с первой, «Числа», «Множества», «Ряды» и так далее, заканчивая интегралами второго порядка — ему трудно не развиться.
Дискретная математика научает видеть суть вне зависимости от принятой системы обозначений.
Ну а диффуры — так ведь на могильном камне самого Ньютона написано, что полезно решать дифференциальные уравнения. Это основной инструмент математического моделирования, без него никак.
UFO just landed and posted this here
Все перечисленное, а также еще несколько дисциплин составляет высшее техническое образование, и разумеется, программа обучения по computer science должна включать все эти дисциплины… НО! У нас как обычно, все не как у людей… Студентов ведущих вузов страны на факультетах, на которых якобы обучают CS, преподают математику так, и в таком объеме, который надо давать на математических факультетах, CS же по большому счету не преподают вообще. В результате, выпускник знает как программировать, т.е. писать код, не имеет никакого представления о многих аспектах разработки ПО, а математику, если и знает, то не умеет применять эти знания, ибо его НЕ учили этому, а просто натаскивали на решение искусственных задач и грузили зубодробительным материалом, который вообще в общем курсе давать нельзя. Для усиления эффекта понимания того, насколько мы отстали в подготовке квалифициированных кадров в области IT, пролистайте учебник Э. Брауде «Технология разработки программного обеспечения».

А что касается сабжа, то для написания кода разумеется не нужны знания матана, дифуров, тервера и т.п. — писать код можно научится и в ПТУ, также как и не обязательно иметь для этого высшее образование — ведь для того, чтобы работать на станке не нужно высшего образования. Но без высшего технического образования человек теряет шанс стать тем, кого на западе называют Software Engeneer, Software Architect, Systems Analyst и др. ибо высшее образование учит ставить и решать задачи (в широком смысле).
>>ибо его НЕ учили этому, а просто натаскивали на решение искусственных задач и грузили >>зубодробительным материалом, который вообще в общем курсе давать нельзя
вот это самый правильный комментарий, чесслово.
Интересна математика — учи, не интересна — учи что-то другое, я так считаю. Со временем, хороший разработчик придет к тому, что ему будет интересно разобраться в математике. Будет ли уже поздно? Да, никогда не поздно учиться.

А слушать лекции от человека, который не может объяснить, как применяется это знание, бывает вредно — вырабатывается отвращение к предмету. В идеальном мире в таком случае студент бы нашел другой источник знания — книги, видео-лекции по математике, но это в идеальном мире, где таких преподов бы и не было.
Проблема в том, что хорошее математическое ВО хорошо не только набором учебников, а ещё и программой. Условно говоря, на первых двух курсах студентов обучают методам обучения, а на оставшихся оттачивают эти методы, а вовсе не знания урматов/функана/матстатов в головы вбивают. И вот когда у человека эти методы отточены, он может взять любой учебник и за неделю его на приличном уровне освоить: прочитать, выделить значимую информацию и так далее. НО это только при условии, что образование именно хорошее, не ориентированное на зазубривание фактов. У нас, например, на лекции проходились ряды Фурье, а семинарист на семинаре наряду с решением задачек из Демидовича рассказывал, как ряды Фурье применяются в сжатии медиаинформации. Но это как дополнительная информация, главное же — это уложить у себя в голове эти самые ряды Фурье. Самостоятельно такое крайне тяжело освоить (тут ещё и психологически аспекты, например, типа в студенчестве есть время на такое, а во взрослом состоянии — нет).
>>рассказывал, как ряды Фурье применяются в сжатии медиаинформации

вооот, это ключевой момент. Потому что когда тебе монотонно фигачат формулы и доказательства полгода без малейшего понятие зачем это нужно, то это просто надоедает и сдается абы сдать.
Не нужны.
Всё как раз наоборот — математику нужны знания языков программирования.

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

А с целью общего развития учить программистов математике слишком затратно, особенно по времени. Занимаясь программизмом он, за тот же период, получит больший уровень «общего развития».
Когда у меня приятель выбирал, на какой факультет пойти учиться — на эконом или мехмат, ему отец сказал: «Математика можно обучить экономике за месяц, экономиста математике — за пять лет». Правда, в итоге приятель почему-то пошёл на физфак.
Это должно греть душу математика как индивидума. Но обычно работодателю лучше взять «дешевого» экономиста (которых как грязи), чем делать его из «дорогого» математика.
Хотя конечно задачи разные бывают.
У нас немного по-другому было. Окончание эконома не давала абсолютно никаких перспектив работы по специальности. В основном на факультете учились мажоры, которых родители к себе в фирму пристраивали после окончания. А вот на втором высшем на экономе уже несколько другая картина была, там училось довольно много математиков, которые оказались на таких должностях, которые требуют экономических знаний.
> Если возникает задача с нетривиальной математикой, то выгоднее нанять математика, умеющего программировать, а не мудохаться с чистым программистом, который 5 лет назад слышал краем уха что-то про дифференциальные уравнения. Математик пишет вычислительное ядро, программист делает для него интерфейсные обёртки.

Дык таким кодерам (не программистам!) и платят соответственно.
К тому же, есть области, где нужен именно программист со знанием математики (системное программирование, например).

> А с целью общего развития учить программистов математике слишком затратно, особенно по времени. Занимаясь программизмом он, за тот же период, получит больший уровень «общего развития».

Это потом окупается скоростью и качеством его работы.
> Дык таким кодерам (не программистам!) и платят соответственно.

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

> Это потом окупается скоростью и качеством его работы
Для индивидума, но не для экономики.
> 80% задач как раз уровня кодеров, и для них не надо использовать дефицитных и дорогих программистов с хорошим знанием математики, их надо применять в других областях:

Лично я стремлюсь к оставшимся 20%. К тому же, неизвестно, в какой области работать придется.
Неоднократно наблюдал картину, как погромист радуется изобретению алгоритма обхода дерева. Вот чтобы такого не было и нужна математика

> Для индивидума, но не для экономики.

С российским программерским образованием только и остается, что учиться самому, в свободное время.
Нормально учать только в Бауманке и ВМК МГУ. А я по собсвенному долбоебизму туда не попал.
CS по-большому счету там (ВМК) не учат, могу заверить :) хотя кодить на паскале и си научат, но, вопрос, как? все равно после такого обучения работать по специальности (которая на ВМК называется «математик, системный программист») нельзя. А вот выпускник MIT или Техниона может. Более того, выпускники как правило фактически трудоустроены еще до окончания института. А все почему? Потому что их там УЧАТ правильным и нужным вещам, современным, и, главное, учат эти знания ПРИМЕНЯТЬ. А чему учат на ВМК? Прогать списки и деревья на Паскале, изучать в течение одного семестра асм для i8088, писать на Си (именно на Си) интерпретатор SQL… Это что, высшее образование в области computer science?! Одно хорошо, диплом МГУ/Бауманки/МФТИ все таки что-то дает как бумажка :)
Кстати, можно ли где-нибудь посмотерть учебную программу MIT, например?
UFO just landed and posted this here
>>Прогать списки и деревья на Паскале, изучать в течение одного семестра асм для i8088, писать на Си (именно на Си) интерпретатор SQL…

ох да у вас там mit по сравнению с нами))
Ну, за Паскаль, ИМХО, надо убивать, так что, возможно, это к лучшему.
Вот Фортран я бы выучил.
паскаль отлично подходит для того кто в первый раз это все видит, имхо. Но ему надо правильно учить, это да, а то плохого прививает.
Известно, что программист на Паскале будет писать на Паскале на любом языке =).

Учиться лучше на Лиспе:
— он мультипарадигмный;
— фактически полное отсутствие синтаксиса приучает обращать внимание на семантику;
— у него могучие средства метапрограммирования.

То есть, он учит выбирать себе средства исходя из поставленно задачи, а это — главное.
После лиспа на других языках программирования будет немного тесновато.
Это ещё мягко говоря. Неиспользование функционального стиля натуральную ломку вызывает.
Ладно бы функционального стиля, так еще и вместо макросов огрызки какие-то.
Неважно, прибитое к мозгам абстрактное мышление остается навсегда.

Лично я после Лиспа Питон выучил за 2 дня, плюс полдня на sqlalchemy.
Лисп — не есть даром потраченное время.
Лисп? Не-Не-Не, спасибо. Идеология там совсем не та.
Даже в MIT отказались от Scheme в сторону Python в этом или уже прошлом году.
Просто понимаете, первое поколение пророчившее смерть лиспу уже само почти умерло. Иделогия там совсем не та, но вот парадигму можно использовать любую. А это в сочетании с его высочайшей скоростью — довольно весомые преимущества.
Лисп еще всех нас переживет, «пророки» как всегда за собственным фанатизмом не видят преимуществ language-oriented-programming. =)
Во первых — только на одном курсе, а не целиком. На ЛОРе поищи — там была новость.
Во вторых — Лисп и Схема достаточно сильно отличаются семантикой.
UFO just landed and posted this here
Если человек занимается только рутинным скучным программированием (веб, приложения для мобильников и прочее), то нет.
А в остальном, как можно быть программистом без знания математики?!
Взять хотя бы базы данных. Они основаны на реляционной алгебре. Да и сами языки программирования не родились бы без математики.
ИМХО, программист не является хорошим программистом, если не знает математики.
Полностью с вами согласен. Казалось бы, странно считать знание такой теоретической вещи, как реляционна алгебра, конкурентным преимуществом, но этот маленький пунктик делает свое дело :)
Я забыл уже весь матан и дискретку универовские. Я — хреновый программист.
Нужно мне было реализовать на Шарпе такую довольно-таки простую, хорошо описанную и с примерами кода, вещь как рисование кривых Безье и их дальнейшего применения в компьютерной графике. Но я не стал искать простых решений, вроде копипаста, а занялся самостоятельным изучением математической модели. С высшей математикой я знаком на уровне бухгалтера, и быстро понял, что это дело полезное и нужное. Скачал для начала справочник Выгодского. Теперь сижу и парю себе мозг.
Очень правильно написано. А чему вас учат в МАИ если не секрет? Я имею в виду область computer science
Я там на «правильной» кафедре только семестр, но уже понравились:
• логическое программирование с хорошим преподователем.
• курс криптографии, детальный разбор многих алгоритмов криптографии вплоть до генерации простых чисел и дискретного логарифмирования
и так далее :)
Есть и более печальные вещи, конечно — курс по базам данных и курсовой типа приложения в фокспро :) Но при желании, можно договориться и делать то, что действительно интересно — у меня, к примеру, FoxPro был заменен на приложение под Mac OS.

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

бегло прочитанные курсы структур и алгоритмов на базе с++, лиспа и ТРПО дали гораздо больший ТОЛЧОК к развитию чем четыре года математики.
Встречал людей, которые пытаются писать серьезные вещи, а не могут алгоритм разложить на бумажке. Сразу за код и понеслась бесконечные тестинг+отладка.
В былые времена не знал, что изучаемое в тот момент так может пригодиться позже.
В инсте делал микропроцессор с простым языком программирования на дискретных элементах. К155 и т.п. никаких PICmicro ^)
Изучал с++/ооп на написании 3Д движка. Все software, GL позднее стал юзать.
Сейчас таски на день — месяц(редко). Давно мегатасков не было. все на чистом СИ написать можно :( (последние 2+ года пишу бизнес логику)
Я пришел к выводу, что 3D игры самый интересный вид разработки. Очень многогранный, работаешь не только с абстрактными данными, а и результат буквально на глаз виден, слышен уху :)
И конечно первостепенно — код должен летать. Никаких ошибок выполнения и утечек памяти.
Чтобы было расширяемо и понятно другим. Вот это простор.
А кто-нибудь может посоветовать хороший учебник по дискретной математике (можно на англ.)?
Sign up to leave a comment.

Articles