2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Нужна ли математика программисту

Содержание

Насколько программисту нужно знание математики в работе?

    Ответы экспертов, 26 марта 2015 в 13:19

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

Павел Емельянов , главный архитектор Virtuozzo

Зависит от того, что называть математикой. Умение складывать числа тоже математика, и такое знание крайне желательно. А, например, без понимания того, что именно доказал Перельман, вполне можно программировать. Любые попытки провести грань, до которой необходимо знать математику, чтобы стать программистом, заведомо обречены на провал. Одно можно сказать наверняка — умение оперировать абстрактными понятиями (одно из основных для математика) несомненно помогает и программистам в их работе.

Дмитрий Исайкин , руководитель команды С/С++ разработки почты в Mail.Ru Group

Как и в любом деле, все зависит от решаемой задачи.

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

Последние годы я занимаюсь разработкой высокопроизводительных бэкендов, работающих в режиме 24/7, обслуживающих миллионы онлайн-пользователей, держащих сотни тысяч постоянных соединений. Теперь мне достаточно знаний основ теории алгоритмов, алгоритмической сложности, теперь главное — надежный, поддерживаемый, расширяемый, быстрый код.

И я бы не сказал, что из-за меньшей «математичности» работы я получаю от нее меньшее удовольствие и признание.

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

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

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

Сергей Зефиров , программист с широким опытом работы, энтузиаст и евангелист языка Haskell

Чем больше математики программист умеет применить, тем лучше.

Важна не сама математика, а умение её применять. Количество знаний математики увеличивает вероятность её применения.

Роман Юферев , руководитель направления ИТ-менеджмента и мониторинга в компании VIAcode

Это очень интересный вопрос! Для начала, существуют определенные задачи, требующие от разработчиков высочайших знаний в области мат-анализа, дифференциальных уравнений, численных методов и т. д., но спектр этих задач довольно узок, а распространённость крайне низкая. Правда, такие специалисты очень высоко ценятся и могут рассчитывать на прекрасные условия труда. Для 80% разработчиков знания высшей математики никогда не пригодятся, еще 10%, возможно, придется вспомнить базовые вещи из теории вероятностей и некоторых других разделов математики — эти знания будут востребованы для решения задач по обработке данных. В то же время, учитывая взрывной рост направления Big Data, я вижу хороший потенциал для роста требований именно к знаниям в области математики.

Василий Кобзарь , преподаватель GeekBrains, специализируется на администрировании Linux

Если математика будет являться предметной областью, то знать её потребуется настолько хорошо, насколько это нужно для решения задачи. Однако, вопрос видимо поставлен для общего случая, и связан с бытующим мнением. Программисту хорошо было бы разобраться с логикой и абстрактной алгеброй, которые не преподаются ни в школе, ни в большинстве вузов. Также не помешают матстат и дискретка. Матан по большей части бесполезен, также как и, скажем, тригонометрия. Вобщем, полезна та часть математики, что “ум в порядок приводит”, а знание любых формул наизусть только забивает голову.

Антон Пискунов , основатель и генеральный директор BeastGaming

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

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

Отдельного упоминания стоят сферы банка и бухгалтерии — тут опять же нужна не просто математика, а четкое понимание устоявшихся терминов, схем и кучи документов.

В итоге получается что в первые пару лет вашей карьеры действительно что-то считать вы будете лишь в геймдеве когда у вас стрела из-за кривой баллистики не будет долетать до орков.

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

Читать еще:  Когда произошел раскол Русской православной церкви

Олег Горшков , руководитель отдела системной интеграции ecommerce-студии Simtech Development

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

Михаил Адигеев , руководитель отдела программных разработок и поддержки компании «ГЭНДАЛЬФ»

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

Ну а в некоторых областях без глубоких знаний математики вообще никак. В Data Mining и Machine Learning необходимы статистика, теория вероятностей, линейная алгебра; в криптографии — общая и линейная алгебра; в 3D-моделировании — геометрия и механика; в биоинформатике — дискретная математика, статистика.

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

Алексей Михайлишин , руководитель отдела разработки ПО компании ОС3

Стать программистом в формальном понимании этого слова можно и без глубоких познаний в математике. Однако, если вы хотите заниматься действительно сложными и интересными проектами, то математика в том или ином виде вам точно понадобится. Например, у нас был проект “Кубосвод” — комплекс, позволяющий показывать сферические проекции в прямоугольных объемах. Это такой планетарий, для которого не нужен специальный купол, можно всё устроить в обычном учебном классе: рассмотреть звёздное небо или показать панорамный фильм. Потребуется только проектор, сферическое зеркало и программа, производящая рассчёты. И наши программисты с задачей справились.

Конечно, не все проекты такие. Для того, чтобы создавать шаблонные интернет-магазины наврятли потребуются знания стереометрии, но, безусловно, программировать для этого надо уметь. Я бы сказал, что знания математики дают программисту конкурентные преимущества перед теми, у кого их нет и открывают более широкий выбор проектов и компаний, в которых они могут работать.

Андрей Ситник , веб-разработчик в Evil Martians

Связь математики и программирования — очень популярное заблуждение. Есть очень мало задач, где знание некоторых направлений математики вам пригодится. А вот умение общаться в команде или понимать пользователя нужно в любом направлении программирования.

Математика в общем — это скорее язык, чем направление науки. В отличии от естественных языков, математика — абсолютно точный и формальный язык. Поскольку язык влияет на мышление, то раньше изучения языка математики было обязательным. Так можно было научиться точно и формально мыслить.

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

Илья Андреев , руководитель отдела организации обучения фирмы «1С»

На мой взгляд, в программировании главное алгоритмическое мышление. Алгоритмическое мышление не вытекает непосредственно из изучения школьной программы по математике, физике или, например, истории. Математика и программирование — это разные вещи: те кто хорошо разбирается в математике совсем необязательно хорошо программирует. И наоборот. Хотя в некоторых программах активно используется математика, а в некоторых это совсем не нужно.

Алгоритмическое архитектурное мышление это особый навык, который, скажем, нужно отдельно почувствовать.

В целом, любому программисту математика полезна для развития технического мышления. Ряд программистов сталкивается с математикой постоянно. Например, программисты-актуарии, разработчики, связанные с статистическим анализом, инженеры-программисты математического моделирования, например, если он пишет движки под игры.

А вот в прикладном программировании математика почти не нужна.

Зураб Отарашвили , помощник ректора Университета Иннополис по научной и инновационной деятельности

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

Владимир Голованов , ведущий Java-разработчик ГК «Центр Финансовых Технологий», партнёра международной олимпиады «IT-Планета»

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

Также математика дает основу для структурного мышления, нужного для системного анализа — а в программировании без системного анализа становится все труднее, ведь сложность систем начинает превышать возможности одного отдельно взятого человека.

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

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

Поэтому, даже если именно математика и не пригодится, то все сопутствующие ей дисциплины просто необходимы. Так что… учим мат часть!

Нужна ли математика программисту?

Только рядовой пользователь может не знать математику и полагаться на компьютер. Программист обязан быть хорошим математиком, даже если в его распоряжении мощная техника для сложных расчетов. Оксана Селендеева, основатель Международной школы программирования для детей CODDY, рассказывает, какие разделы математики используются в IT и где можно потренироваться.

Лучше начинать заниматься еще со школы

Разделы математики

Разные задачи подразумевают разные подходы к решению и требуют знания различных разделов математики. Если для создания простого калькулятора достаточно будет владеть базовой логикой и арифметикой в школьным объеме, то при разработке игрового «движка» с реалистичной физикой не обойтись без отличного знания геометрии, дифференциальных уравнений, математического анализа и многого другого. Основательных познаний требует и разработка в самых востребованных областях современного программирования — Data Science и Machine Learning — анализ данных и обучение искусственного интеллекта.

Логика

Логика — «кит», на котором покоится вся информатика. Без понимания базовых логических принципов стать программистом невозможно. С помощью логики создают внутренний механизм принятия решений в программе, которые определяются действиями пользователя или результатами вычислений. Например, пользователь нажал клавишу «влево», персонаж игры передвинется влево. Если герой столкнулся с врагом или препятствием — запустится подпрограмма, которая запрограммирована на дальнейшее развитие событий. Все это зависит от логики, созданной программистом на этапе разработки.

Читать еще:  Почему плохо слышно собеседника на Айфоне

Дискретная математика

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

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

Сегодня все больше девочек интересуются программированием

Теория чисел

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

Теория вероятностей

Знания теории вероятностей позволяют программисту найти верное решение, даже когда исходных данных недостаточно. Формальная логика в таких ситуациях пасует, потому что нет оснований для однозначного решения. Однако теория вероятностей позволяет найти решение, максимально приближенное к верному. Теория вероятностей часто используется в IT. Например, в Байесовской фильтрации спама, на базе которого работают спам-фильтры большинства email-серверов. Кроме того, в робототехнике, программировании игр, при создании автомобильных компьютеров и т.д.

Математический анализ

Глубокое знание математического анализа нужно не каждому программисту. Однако понимание его принципов помогает в решении сложных задач. Чаще всего «матан» требуется в математическом моделировании, когда на компьютере воссоздается физический объект или явление реального мира. Например, при проектировании мостов или сложных технических устройств, которые невозможно испытать в реальности — пилотируемый космический аппарат.

Мастер-класс CODDY в Московском дворце пионеров

Ресурсы для тренировок

Project Euler — сайт носит имя знаменитого математика Леонардо Эйлера, поэтому просто не будет. На нем размещены самые сложные задачи по математике. Для решения многих требуется знание основ программирования.

Timus Online Judge — сайт Уральского федерального университета. Это крупнейший архив с задачами разного уровня сложности и автоматической проверкой. Есть задания на динамическое программирование, теорию чисел и структуры данных, а также, по словам создателей, необычные и хитрые.

MAXimal — русскоязычный портал для освоения алгоритмов. К сожалению, сайт давно не обновляется, но все еще можно потренироваться и порешать упражнения. Также на сайте собрана огромная библиотека книг по программированию.

W3Resource — портал с обучающими материалами, упражнениями и квизами по веб-разработке, базам данных и языкам программирования: JavaScript, Java, PHP, Python, Ruby и другим.

MindCipher — сайт для тех, кто любит задачки для ума. На нем собраны занимательные головоломки и логические загадки.

Programming Praxis — это не сайт, а блог энтузиастов, которые формируют комьюнити поклонников сложных задач. Каждую неделю появляется новое задание, обсудить его решение можно в комментариях.

Codeforces — портал для регулярных марафонов по программированию. Можно принять участие в соревнованиях или просто потренироваться на заданиях прошедших мероприятий.

Математика для программиста — не просто «царица наук». Это тот стержень, который связывает знания и навыки. Ни один серьезный проект не обходится без применения математических методов, поэтому если хотите стать творцом в программировании — изучайте математику!

Основатель Международной школы программирования для детей CODDY

Можно ли стать хорошим программистом без знания математики и алгоритмов?

Можно ли стать хорошим программистом без знания математики и алгоритмов? Этот вопрос обсудили пользователи сайта Quora. А KV.by решили собрать для своих читателей самые интересные ответы.

Джиакомбо Сорби, программист-самоучка

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

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

IT-сфера развивается с поразительной скоростью, и, если вы с самого начала ограничиваете себя, то в долгосрочной перспективе это обойдется вам дороже.

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

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

Попробуйте кодить, соревнуясь с другими. Так вы сможете не только усвоить основы программирования, но и, вполне возможно, развлечетесь. Я полагаю, что у меня, к примеру, были хорошие знания в математике, но очень много интересного и нового я узнал в таких проектах, как Project Euler (внимание: этот проект не для новичков) или CodeWars ( более дружелюбное по отношению к нубам сообщество).

Вестон Бикрофт, специалист в сфере программного обеспечения, математики, философии, когнитивной науки

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

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

Второе: математика. Насчет этого говорить сложнее, потому что термин «математика» может относиться ко многим вещам. Я не думаю, что какие-то определенные знания в математике могут сильно повлиять на ваши способности в качестве программиста. На мой взгляд, здесь есть только одно исключение: теория языков программирования (Programming language theory).

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

Его «природа» берет свои корни в математике и лингвистике. Поэтому, если вы хотите получить теоретическую подпитку, то я бы на вашем месте попытался достичь максимально четкого понимания того, что происходит во время того, как вы программируете. Попытки достичь этого понимания могут занять годы – вполне возможно, что вы будете заняты этим в течение всей вашей карьеры. Возвращайтесь к этому вопросу тогда, когда сможете или когда будете чувствовать в этом необходимость, но никогда не позволяйте своему неведению не дать вам программировать.

Читать еще:  Как отключить всплывающие уведомления в яндекс браузере

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

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

Филлипе Де Лима Арканьё

Нет. Чтобы объяснить свою позицию, я предположу, что у вас совсем нет опыта в программировании, и для объяснения попытаюсь использовать аналогию.

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

А теперь предположим, что вы хотите построить реальный дом, такой, в котором вы бы смогли бы жить вы и ваша семья. Согласись ли бы вы жить в подобном доме, построенном безо всяких инженерных знаний? Готов поспорить, что большинство здравомыслящих людей так бы не поступило.

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

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

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

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

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

Мальком Теас, обучался программированию

Программирование – это не просто написание кода, это точное понимание того, какой именно код писать. Если вы не хотите изучать алгоритмы и математику, то ваша карьера всегда будет ограничена.

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

Барри Роунтри, специалист в области информатики

Знание алгоритмов имеет очень мало общего с навыками программирования. Как сказал кто-то из великих: «Когда сомневаешься, используй грубую силу.» Давайте разберемся, что же это значит.

Хороший программист знает, как выполнить алгоритм сортировки на языке Python. Отличный программист знает, что кто-то умнее его уже ввел сортировку в этот язык, и верит, что готовая сортировка будет работать достаточно хорошо в большинстве случаев.

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

Хороший программист знает, что он потратит 98 дней в году на отладку и 2 дня в году на оптимизацию производительности. Отличный программист изменит это соотношение в сторону оптимизации, выбирая более простые алгоритмы, которые проще понимать и отлаживать.

Если провести аналогию, то вам нет необходимости понимать язык ассемблера, кроме того случая, когда вы занимаетесь разработкой операционной системы или кодом компилятора. Точно также вам необязательно глубокое понимание алгоритмов, кроме тех случаев, когда вы работаете с математической библиотекой.

Мария Королева, редактор журнала Hypergrid Business

Это зависит от того, какой именно деятельностью в сфере программирования вы хотели бы заниматься. Вы можете заняться дизайном пользовательского интерфейса, развитием игровой динамики или отображением корпоративных данных в структурах баз данных.

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

Вам понадобится арифметика, но на этом все.

Но «алгоритм» – это синоним к понятию «компьютерная программа», поэтому нет, вы не сможете программировать без знания алгоритмов!

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

Источники:

http://tproger.ru/experts/2/
http://zen.yandex.ru/media/id/5a2cd210a815f1e7d2fcb89c/5c50151d96aa1b00ad65703e
http://www.kv.by/post/1050500-mozhno-li-stat-horoshim-programmistom-bez-znaniya-matematiki-i-algoritmov

Ссылка на основную публикацию
Статьи c упоминанием слов:

Adblock
detector