Comments 211
«Математику уже затем учить надо, что она ум в порядок приводит»
М.В. Ломоносов
Я понимаю автора, хотя он так и не смог точно выявить, что именно его смущает.
Я предполагаю, что для него 15летниего программист это был Титан, Супермен, ТыжПрограммист!
А когда он столкнулся с тем, кто сейчас себя называет программистом, им оказался интеллектуально нищий человек. Вот и произошел когнитивный диссонанс.
Культурный человек не тот, кто не пролил соус на скатерть, а тот, кто.этого не заметил, Чехов не прав?
если ты таксист, езжай ровнее, чтобы никого по салону не бросало.
Вот-вот, езжай ровнее и на дорогу смотри, а не о высоких материях рассуждай. Что большинство действительно хороших разработчиков с успехом и делает.
Кстати,
У меня вообще нет никакого высокомерия по отношению к разработчикам, матана не ведающим.
Пожалуйста, продемонстрируйте Ваш код. Или пример декомпозиции задачи. Или набросок архитектуры приложения. Или схему БД. Или книгу статейку какую-нибудь. Главное, чтобы там был матан. А мы оценим, и, может быть, восхитимся.
Учитель математики спрашивает:
— Я хорошо учил тебя математике, ты был лучшим учеником и хорошо в ней разбирался. Прошло 20 лет и скажи мне, пригодилась ли тебе математика хоть раз за прошедшее время?
— Да, учитель, был один случай… Однажды я шел по улице, налетел сильный ветер и сдул с моей головы шляпу. Шляпа улетела прямо в центр большой лужи и её никак нельзя было достать. Я нашел кусочек проволоки изогнул её в качестве интеграла и достал шляпу.
Ну а если серьезно — я свою карьеру программиста начинал с HTML. Математика действительно была не нужна и я просто радовался, что она закончилась и недоумевал о том, что она нужна в каких-то космических работах.
Прошло время, перешел на ту же Java и когда задачи стали сложнее пришлось открывать образовательные сайты и подглядывать формулы. Разбираться в них и вспоминать, что именно ЭТО мне преподавали на математике. Да, пришлось жалеть о том, что не усвоил эти знания тогда и сейчас приходится учить заново. Но, доля негатива у меня имеется к самой технике преподавания. Я помню, что нужно было использовать синусы в геометрии, но их использование сводилось к заучиванию формулы, а затем в нужном месте подстановке значений. Никто не объяснял практических применений данных формул. Серьезно, я разобрался в том что такое синусы годам к 25, когда возникла необходимость рассчитать время наступления сумерек в той или иной области в зависимости от положения солнца. Вот тогда все эти непонятные формулы приобрели понимание. На занятиях мы решали задачи комивояжера и разбирались в алгоритмах A*, но в такой манере, что я даже представить себе не мог, как я смогу это применить. Отсюда и «забивание» на предмет. Сдал экзамен и забыл.
Тем не менее, считаю, что основа любого программирования это не математика в голом виде, а в первую очередь понимание логики и умение ею пользоваться. А вот математика это инструмент, которым некоторые логические задачи решаются. Точно так же как использование фреймворков, библиотек и т.п.
Вероятно, без знания высшей математики не стать специалистом по машинному обучению, но есть множество других специализаций, где это точно не обязательно.
Вы химию знаете? Нет? Химиков это возмущает. Мне тоже в институте говорили что без матана никуда, ан нет, еще куда, хоть я его и помню, плоховато, но помню.
Так Вы приводите в пример человека, который не то что кичится, а хочет изучать что-то новое для себя. Как уже сказали — дело в определении слова.
Что касается «культуры мышления» — это це всё хрень и чушь :) Например занятия музыкой дают сопоставимые ощущения в мозгу, как и доказательство каких-то теорем. К тому же, кто вообще сказал математикам, что их культура мышления лучше?
Я, возможно, вас удивлю, но матан — это сравнительно небольшая и одна из самых простых областей математики. И, хотя матан и является основой, но даже в математике в чистом виде он не особо применяется, не говоря о программировании. Ну, а ваши рассуждения про "единственную область" вообще смешны. Теория игр? Методы оптимизации оптимизации? Машин лёрнинг? Нейронные сети? Криптография? Квантовые вычисления? Не? Или просто в теорию — формальные грамматики? Теория категорий? Не? Реляционная алгебра, в конце-концов, тоже не? И это лишь малая, самая хайповая часть. Но, впрочем, если ваш кругозор не простирается дальше бложиков на вордпресе и сайтиков-визиток никому не нужных фирм, то, разумеется — единственная область, где нужен "матан" — это сверхоптимизация вордпресса и в мире этим занимаются ровно два десятка компаний. Причём даже в них вам не светит попасть.
многие разработчики каждый день используют какие-то концепции, подходы и методы из д…, даже не зная, как называется то, что они используют, а во многих случаях даже доперев до них самостоятельно без чтения учебников :)
Да, только уровень этого использования ниже плинтуса.
Помню, как я очень-очень сильно удивился в университете, когда узнал, что концепция, которую я открыл еще в школьные годы, оказывается называется «конечные автоматы» и ей посвящаются отдельные главы в учебниках. А для меня это было само собой разумеещимся делом
Угу. Только там, где человек, знакомый с автоматным подходом, изучивший особенности применения и ограничения сразу решает, — так, это делаем автоматным программированием, вот список состояний, вот граф переходов, — а тот, кто "сам допёр", скорее всего, будет долго думать и изобретать велосипед. Ну, да, он его, в конце-концов изобретёт, но косорыленький, плохоедущий и неремонтопригодный. Или, наоборот, будет пытаться применить КА туда, где они ни каким боком не лезут.
Аналогично примерно с реляционной алгеброй, когда много лет писал SQL-запросы
Угу. Только из "писал запросы" без знания релационной алгебры и сопустствующих дисциплин вовсе не следует "способен написать субд". А так, да, для написания запросов алгебру знать не обязательно. Ну, так нет никаких проблем всю жизнь писать запросы. Наверное, даже обезьяну этому можно научить :). И она от этого станет, о, да, программистом!
Когда нужно навернуть шифрования, в случае разработки под какую-то нестандартную среду или с особыми требования просто будет выбран наиболее подходящий алгоритм из уже существующих (критерии выбора вполне известные и формализованные), после чего взять whitepaper с описанием метода и реализовать в коде — причем для реализации по написанному математика нужна на уровне старших классов школы с периодическим заглядыванием в справочник.
Угу. И мы регулярно наблюдаем эпические провалы продукции такой школоты на ровном месте со взломами и кражами всего и вся. Именно поэтому. Эффект Даннинга-Крюгера в чистом виде.
И за свою жизнь ему ни разу не пригодились нейронные сети и квантовые вычисления. Его теперь нельзя называть программистом? :)
Видите ли в чём дело. Есть люди, которые создают, ну, скажем, Лахта-центр. Они строители. Да, или, вообще, есть Эйфель. Ну, тот, который башню в Париже построил. Он — строитель. А есть Ашот, который может криво выложить стенку сарая. Он тоже — строитель. Ваш вывод, глядя на Ашота — строителям не нужно знать сопромат, математику, физику, итд и тп. Так?
Короче говоря, подытожив, «матан» программисту нужен при выполнении следущих условий:
Да. Программисту-Ашоту всего этого не нужно.
Математика, в данном случае, работает мозгообразующей структурой. Объективно, в значительном количестве задач она не нужна, но тем не менее, она тянет за собой логику и доказательные методики проектирования, а не 'по общим соображениям'. Да и 'общие соображения' матанников отличаются повышенной точностью и рациональностью.
Программисты это те, которые пишут книги. Это те, кто создаёт ОС и реальный софт.
Очень размытое определение.
Мой вопрос не о круге задач человека, а о его внутреннем содержании. Я для себя — не трудовой ресурс. Ты для себя — не трудовой ресурс. Мы относимся к себе как к людям. Программист это вид деятельности. Человек в своём виде деятельности с точки зрения себя, как человека должен ли лишь выполнять нормативы? Или должен ещё иметь культуру труда? Что если не культура труда и отношения к профессии двинет его вперёд, за привычные пределы?
Культура труда и математика, хм, лично я свою культуру труда вижу в реализации бизнес задач, а не соответствие нормативам. Я занимаюсь только теми задачами которые приносят ценности бизнесу как материальные так и нет. Нет смысла потеть над крутым алгоритмом если в вашем проекте он не нужен, и нет смысла тратить время на изучение математики если вам нужно решить задачи которые с ней не пересекаются, вопрос только в том что интересно человеку.
Раньше каждый автовладелец в гараже мог перебрать карбюратор (утрированно).
А сейчас?
Так и тут.
Сложность программ возросла, но при этом программировать стало проще, можно посмотреть на эволюцию языков программирования и инструментов разработки)
Раньше каждый автовладелец в гараже мог перебрать карбюратор (утрированно).
Вы ставите с ног на голову.
У карбюраторов есть конструктивная проблема — время от времени их нужно обязательно перебирать. Ну и плюс раньше была эпоха, когда автосервисов мало.
Сейчас просто другое время.
То что вы сказали — это бред уровня «раньше мужчины воевали, а нынешнее поколение не способно». Сейчас, к счастью, не нужно. Но это не значит, что нынешнее поколение не способно научиться на курок нажимать.
Я сам много чего не знаю.
Мой вопрос в том, почему многие сомневаются в необходимости этих знаний, пока они не понадобятся для решения конкретной задачи.
Упомянутый Java-разработчик, кстати, пример того, что человек понимает эту необходимость. Потому что на кой ему школьная алгебра, если он уже хорошо работает. А решение каких-то конкретных задач на этом уровне он может получить из ютуба по-быстрому.
От собеседования зависит. Если этих знаний в требованиях не указано и в целом по позиции не подразумеваются, то, с большой вероятностью, если такие вопросы задают на собеседовании, то даже ответив на них и получив офер, вы столкнётесь в такой компании с другими непредвиденными проблемами в области организации процессов.
Подскажите, а можно построить бинарное древо без рядов Фурье? Можно ли реализовать алгоритм Флойда-Уоршелла без дифференциальных уравнений? А A*? А написать рекурсивный алгоритм, так чтобы рекурсия была хвостовой и была оптимизирована без Теории категорий? А двусторонний список? А hashmap? Можно ли реализовать hashmap без топологии ленты Мёбиуса?
Вы знали, что русский язык описан настолько строго, что почти любую ситуацию в нём можно решить алгоритмически?
это сравнение русского языка с формальными языками?
Давай ка динамический массив мне через рекурсию организуй, тогда и поговорим
звучит как несвязный набор слов. можно для простолюдина объяснить?
Динамический массив. Классическая задача из классических языков.
Смысл — создание массива, не используя тип данных массив.
Создаём переменную, она содержит в себе значение и ссылку на следующую переменную (null по дефолту). Это первый элемент массива.
Создаём такой же второй элемент массива, в первый прописываем ссылку на второй.
Нужно n элементов, не создавая n именованных переменных?
Загоняем в рекурсию. Итого имеем одну переменную, от которой можно по цепочке ссылок добраться до любого из n элементов.
"не используя тип данных массив"
Эээ… А есть такой тип данных? Статический массив по сути это указатель на начало и оператор "[]".
Динамический массив создаётся тактже, как и обычный, но добавляется обёртка для изменения размера его, т.е. методы добавления и удаления элементов.
А по поводу рекурсии… Ну после попытки использовать ее для расчета числа сочетаний стараюсь ее избегать.
Могу в чем-то ошибаться, программирование — не совсем профильное знание/умение.
Если размер массива неизвестен заранее, то память под него выделяют в куче в процессе работы программы. Такой массив называют динамическим, так как его размер может изменяться.
Однако столкнуться с массивами можно только в ЯП системного уровня. На более высоком уровне абстракции динамические массивы оборачивают в классы для более безопасного управления памятью кучи
Массив — это структура данных, элементы которого расположены в памяти друг за другом.
Обычно за именем массива скрывается указатель на первый элемент массива. Таким образом обратиться к нужному элементу массива можно при помощи указателя массива + сдвиг, где сдвиг численно равен размеру памяти одного элемента массива умноженного на порядковый номер нужного элемента.
Разница между статическим и динамическим массивом заключается в том, что размер статического массива известен заранее (на этапе компиляции) и его нельзя изменить в процессе выполнения программы, а динамический массив в большинстве случаев представлен в виде указателя, для которого в процессе работы программы выделяется блок памяти для хранения нового массива однотипных элементов необходимого размера. Ссылка на первый элемент в созданном массиве и присваивается указателю.
Преимущество массива в сравнении с односвязным списком состоит в том, что к нужному элементу можно обратиться за константную операцию. Но для добавление/удаление элемента нужно создать новый массив необходимого размера для того, чтобы сохранить финальный набор данных.
Односвязный список — это структура однотипных элементов, связанных между собой последовательно, посредством указателей (внутри каждого элемента находится указатель на другой блок). При этом в памяти они не обязаны находится непосредственно друг за другом.
Для этой структуры преимуществом является тот факт, что можно за константное время добавлять/удалять новой элемента на любую позицию. Но при попытке обратиться к элементу по индексу нужно будет пройти всю цепочку (в случае линейного односвязного списка) с первого элемента до того, который нам нужен.
Ни массив, ни односвязные списки на практике не создаются рекурсивно, так как рекурсия не предназначена для такого рода операций из-за огромных потерь производительности и дополнительных затрат памяти без существенного выигрыша в чем-либо. В основном используются циклы, а также вводится понятие итератора (указатель на текущий элемент).
Но стоит уточнить, что в качестве обучения динамический массив и односвязный список могут быть созданы и рекурсивно.
Более подробную информацию рекомендую почитаться в специальной литературе. Также следует иметь в виду, что для каждого языка реализация данных структур может отличаться ввиду их абстрактной природы.
Как уже сказали, рекурсия тут не нужна, и даже опасна — на больших объемах можно стек пробить с очень печальными последствиями.
Кстати, вот вам явный пример, когда знания устройства ОС и работы компиляторов оказываются гораздо ценнее абстрактного «матана» в реальной жизни :)
Ровно до тех пор пока другое знание вам не подскажет про хвостовую рекурсию.
Это будет совершенно верно до тех пор, пока еще другое знание не подскажет вам про то, что во многих языках программирования (например, C и C++)
Хорошо что не плюсами едиными живём и есть ещё языки которые гарантируют оптимизацию хвостовой рекурсии на уровне спецификации языка.
В рекурсии нет ничего опасного. Если какой-то инструмент её неправильно готовит — это проблема инструмента, а не подхода.
А как рекурсией, просветите?
Вы знали, что русский язык описан настолько строго, что почти любую ситуацию в нём можно решить алгоритмически?
Это почти ложь.
В данном случае вернее было бы сказать — почти правда, то есть лжи осталось так мало, что ещё чуть-чуть — и правда.
Но я поддерижваю тон комментариев, программирование гораздо шире вашего и моего представления о нем, и то что важно для вас (некая культура), совершенно не важно другим. Программирование уже давно выросло в нечто необъятное. Наверное даже мы уже не представляем каким оно может быть.
Немного утрированная аналогия: как маркшейдер и забойщик.
Сейчас работаю над крупными HL++ проектами, с террабайтами данных, репликами и т.д.
Огромные алгоритмы, расчеты и т.п.
Для меня родная среда Go/PHP/JS.
Делаю качественный продукт, который может легко подстраиваться под бизнес и время.
Но открою вам небольшой секрет: У меня образование 9 классов.
Да, школу заканчивал уже в РФ.
Уровень знаний алгебры, на том же уровне. Однако мне это не мешает, если только иногда.
<зануда> "террабайт" — да, чувствуется 9 классный бекграунд )))</зануда>
у самого тоже 9 классов. но два года работы верстальщиком газеты сделали своё дело, правильно говорят "читайте больше" и грамотность сама придёт.
Везет вам, у вас алгебра осталась на том же уровне… У меня она «выветрилась за ненадобностью».
Тоже занимаюсь вебом уже лет 9, тоже в HL, терабайты данных, оптимизации, костыли и все такое.
Для начала, программист — это выпускник ПТУ или, например, УПК, как я :) Техникума — техник-программист, вуза — инженер-программист. И это по советским меркам.
По текущим же рыночным реалиям получить "лычку" Senior Software Engineer можно, грубо говоря, изучив синтаксис, навострившись решать определенный круг "ремесленных" задач и несколько лет решая их.
Кратко
Программист: разработка и отладка программного кода
Техник-программист: то же плюс тестирование (юнит прежде всего), рефакторинг, оптимизации
Инженер-программист: то же плюс интеграция модулей и компонент, а также приемочное тестирование
Ведущий инженер-программист: то же плюс разработка требований и проектирование
А что, бывают места, где всего этого нет?
Бывает. Более того есть основания полагать, что много где бывает, особенно в in house или out staff разработке. В продуктовой или аутсорс — сильно зависит от заказчика/менеджмента.
С точки зрения "среднерыночной" классификации в, скажем так, странах СНГ, разработчиков можно распределить примерно так:
программист — junior software developer
техник-программист — middle/regular/ software developer
инженер-программист — senior software developer, software engineer
ведущий инженер — lead software engineer (не путать с "классическим" team lead)
Для этого существуют такие должности как «бизнес-аналитик», «технолог», «менеджер проекта», «QA-инженер».
Где-то существуют, где-то нет. И не путайте занимаемую должность с ролью в проекте.
Для этого существуют Solution Architect'ы.
Аналогично. В общем и в целом, ведущий разработчик должен уметь писать ТЗ для всех остальных по слабоформализованным бизнес-требованиям и проектировать архитектуру. Что он будет делать на конкретном проекте — ситуативно. С другой стороны, можно считать, что Solution Architect это громкое название ведущего инженера, избавленного от обязанностей обычного инженера-программиста.
Вообще очень многое зависит от размеров организации и количества и качества проектов в разработке одновременно.
Слишком все абстрактно и относительно, можно спорить до бесконечности, и вывести столько определений, что сто спорщиков будут с разным мнением и все правы.
А вообще —
Математику уже затем учить надо, что она ум в порядок приводит
Матан на том уровне, на котором он описан в топике — нужен в некотором наборе узких областей программирования сейчас. Графика, хфт, ну вот ИИ в последнее время хорошо взлетел и довольно требователен по математике, если хочется архитектурами нормально заниматься (хотя опять же, есть и любители просто слои в фреймворке рандомного поперекладывать). В целом позицию из топика считаю снобизмом, хотя разумеется для науки в программировании как в дисциплине в целом место еще осталось. Но не в продакшене. :)
Кто такой программист?
Тот, кто может намагнитить быстро вращающиеся металлические пластинки в нужных местах.
Сейчас компьютеры стали одноразовыми гаджетами, продаются в магазинах бытовой техники вместе с утюгами и холодильниками, и «программисты» соответственно тоже перешли в категорию работников руками.
Если немножко положительней смотреть на людей которые пытаются что то делать в данной области, но из за нехватки базовых (или фундаментальных) знаний матана и т.д. не совсем преуспевают, станет легче на душе. Представ те что Вас окружают такие же умные физматерые (программисты) специалисты как и вы. Вы тут же начнете писать статьи о том куда делся полет фантазии, где неординарные решения, где ошибки решение которых приводит к серьезным открытиям и т.д.
РS
Активный отдых, плавание, алкоголь, женщины, азартные игры всегда помогут разнообразить суровые програмисткие будни.
И да, программист это не профессия, а смысл жизни.( имхо)
По миру ходит много классификаций. От банального программист-кодер до весьма развесистых сложноустроенных определений. Мне так и вовсе думается, что тут можно употребить двумерную матрицу, где по одной оси вектор кодер-конструктор, а по другой специализация. Тогда ткнув пальцем в квадрант можно указать минимальные требования к специалисту, в том числе и по знаниям математики.
PS
школу заканчивал в начале 90-х, математику помню где-то на 2-3 курс вуза… Более сложные вещи вымылись из памяти из-за неупотребимости.
Программист в узком смысле — это не работа с информации формальными методами, это техническое участие в разработке программного обеспечения. Формально по степени участия разделяются на 4 группы, из которых две "высших" относятся к инженерным, но умение формализовывать и алгоритмизировать задачи, знание базовых алгоритмов, а также непосредственно писать код на языке программирования, требуется с самого низкого, уровня выпускника ПТУ/колледжа с присвоением квалификации "программист".
Но есть же и другие разделы математики: мат. логика, теория графов, общая алгебра, криптография, мат. моделирование, статистика и тд. В программировании используется математики гораздо больше, чем кажется на первый взгляд.
"Матан" — это обобщенное название высшей математики. Для очень многих задач в программировании она не нужна. Она может использоваться в виде готовых библиотек, но чтобы решить задачу её знание не нужно. Ну если не считать знанием теории графов принцип "зависимость сущностей кода друг от друга не должна выражаться циклическим графом" в формулировке типа "классы не должны ссылаться друг на друга прямо или через другие классы", а знанием статистики умение посчитать среднее сложив всё и разделив на количество слагаемых.
Но… есть одно но. Давайте поставим себя на место работодателя. Сколько стоит такой программист? Легко ли такого найти на рынке? И всегда ли требуется стрелять из пушки по воробьям? Даже если бы мне таковые и потребовались, очевидно, на одного такого я бы нанял десяток программистов попроще, т.е. простых кодеров. В общем на всякий товар есть свой купец. И плюс к тому современное обилие готовых модулей и библиотек позволяет не вникать глубоко в предмет и часто для прикладных целей достаточно школьного образования.
То же самое и с библиотеками. Мне тяжело представить, что какого либо известного алгоритма, до сих пор нет в библиотеке в широком доступе. Мало вероятно, что даже хорошо подкованный в математике (в той, что нужна для алгоритма) программист, напишет его лучше, чем это сделало сообщество.
Можно знать, можно не знать. Мне например просто интересно как работает машина, я ради интереса пишу алгоритмы и решаю задачки на досуге, иногда читаю книги об устройстве компьютера. Пока ничего из этого не пригодилось. Ну может быть только, что я стал немножко умней благодаря этому.
Математика нужна и в программировании. Но сейчас она в прямом своем применении требуется в узкоспециализированных предметах.
Но математика нужна всем. И нужна она не для того, чтобы ждать когда там понадобиться вычислить интеграл. А для развития логического мышления. Не зря говорят — умный в гору не пойдет, умный гору обойдет. Иначе говоря человек с развитой логикой сумеет применить нужный алгоритм в нужном месте, а не будет строить велосипеды.
Докажите. Бездоказательных утверждений я тоже могу сколько угодно наговорить.
Вот вам кстати задачка. Есть грузовые весы, есть драйвер к ним для COM-порта, есть DOS-программа под Windows XP, которая получает вес с помощью драйвера. Через несколько минут активной работы весов драйвер зависает. Сможете с помощью математики найти причину и предложить решение?
Хотя нет, доказательств море. Они называются баги. Они лезут из любого программного продукта в количестве, не соизмеримом с логическими проблемами математики, которые встречаются только в каких-то предельно абстрактных областях и имеют скорее концептуальный зарактер, нежели операционный. Математика не издаёт несовершенных инструментов.
Это искусственно созданный человеком инструмент описания операций над такими же искусственно созданными понятиями. Сам по себе этот инструмент выверен дОнельзя. Именно эта точность и продуманость позволяют использовать язык математики, как язык описания широчайшего круга задач и феноменов в реальном мире. В самом этом инструменте багов минимум. Есть проблемы в решении задач с помощью этих инструментов, когда да, человек допускает ошибку.
В программировании тоже есть абстрактные инструменты, которые сами по себе ничего не делают. Например, языки, библиотеки и т.д. С помощью этих инструментов тоже решают задачи. Но в случае программирования не только сами задачи могут содержать ошибки в решении, но и инструменты ими переполнены. Это по багам.
Теперь по доказательствам.
Так как вы плохо разбираетесь в математике и естественных науках, то не очень понимаете, что такое доказательство. Юридические доказательства мы сейчас не рассматриваем.
Математическое доказательство это цепочка рассуждений на языке математики, доказывающая математическую, то есть в терминах математики, истинность утверждения, также сформулированного на языке математики. То есть математического доказательства, связанного с программированием я привести не могу, так как программирование в используемом нами смысле не является термином математики.
Значит доказательство переходит в естественнонаучную плоскость. Естественнонаучное доказательство строится на эксперименте. Что я вам и предложил проделать. Если необходимо более весомое доказательство, то обратимся к учебному минимуму — провести эксперимент 10 раз. То есть Вам надо будет пройти курс математики 10 раз.
Конкретные примеры связи мат подготовки и решения нематематических задач. Физмат школы традиционно лидируют в олимпиадах по любым направлениям знаний. Это не значит, что всегда занимают первые места, но существует корреляция, непреодолимая никаким скепсисом.
Функциональное программирование имеет настолько много общего с математикой, что является её разделом)
«Функциона́льное программи́рование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).»
Физмат школы традиционно лидируют в олимпиадах по любым направлениям знаний. Это не значит, что всегда занимают первые места, но существует корреляция, непреодолимая никаким скепсисом.
Боюсь, у вас тоже проблемы с математикой. Любой знающий основы статистики, знает главное правило «Корреляция еще не означает вследствие», гуглите «Влияние количества пиратов на глобальное потепление».
Знающий научный методы и статистику подумал бы о том, что:
1. Уровень преподавателей в Физмате выше, чем в обычной школе (в том числе по той же информатике),
2. Оборудования в классах Физмата лучше, чем в обычной школе (например, в обычной школе может просто не быть достаточного числа современных компов),
3. В Физмат школы набирают избранных учеников, то есть типичных двоишников и троишников там может просто не быть,
4. Обычные школы могут просто не так мотивированы на участие в Олимпиадах, они не готовят учеников к Олимпиадам специально,
5. Те кто судит Олимпиады могут оценивать работы субъективно в зависимости от сильной школы или слабой,
То есть факт «именно математика ведет к победам по всем дисциплинам» — совсем не очевиден. Более того, совсем не очевидна корреляция «физмат образования с уровнем программиста впоследствии».
Например, известно, что влияние шахмат на умение логически мыслить и последующих успех в технических дисциплинах сильно преувеличено. Умение играть в шахматы дает навык игры в шахматы.
1) Из ваших доводов никакого научно обоснованного доказательства того что математика действительно дает больше для развития навыком программирования, другие интеллектуальные занятия (логика, шахматы, логические загадки и головоломки) не показано.
2) Никак не показано, как именно знание математики дает преимущество в программировании (если оно не связано с бизнес областью математики) большее чем знание экономики, бухгалтерии (а экономический домен знаний это чуть ли не половина всех крупных программных продуктов) или, скажем, логики с философией,
3) Почему культура разработчика должна ограничиваться только математикой — логика, философия, физика, электроника, по идее не менее важны. Но вот где вы возьмете столько времени, чтобы изучить все и сразу?
P.S. И кстати переход на личности (иди изучай математику) — это признак неумения вести конструктивный спор.
P.P.S. На всякий случай, у меня высшее математическое образования, так что математику учить не посылайте. :)
Ваши ответы показывают, что математика не всегда способствует правильным логическим выводам. У меня в школе и вузе не было проблем с математикой, и даже на этом сайте есть одна математическая статья.
Математика это просто способ формального описания. Программирование тоже. Оба они опираются на логику. Просто программирование ближе к реальности.
P.S. В этом сериале все формулы и расчеты реальные. Там команда математиков специально была приглашена.
Не математикой пронизан мир, а часть людей стремится описать мир математикой.
Вопрос автору. Вот два списка.
Первый:
- императивное программирование
- декларативное и фукнциональное, монады и пр.
- конечные автоматы всех видов
- структуры данных (стеки, Map-ы, Set-ы, списки, деревья) и алгоритмы (хотя бы базовые вроде бинарного поиска, quicksort, сортировки в ширину, базовых алгоритмов по графам)
- акторы, волокна, async-await и пр. многопоточные примитивы
- регистры ЦП, L1, L2, L3, семафоры
- РСУБД и NoSQL, поисковые БД и прочие другие лихие, индексы
- Тонкости работы с памятью в *nix & windows
- Высоконагруженные сервисы
- SOLID, DRY и пр. аббревиатуры касательно архитектуры приложения и организации кода
- Asembler, LLVM и пр., хорошее знание архитектур процессоров
- Rust и его подход к работе с память, тонкости работы с указателями в низкоуровневых языках
- Безопасность
- ну и т.д.
Это был первый список, и, скажем:
- Дифференциальное исчисление
- Теория категорий
- Линейная алгебра
- что там ещё учат в университетах? я всё "прогулял" :(
Должно быть в одном списке или нет? Мне показалось, что та самая "культура", о которой говорит автор, касается как раз первого списка. А вот реальная взрослая математика, которой пытались изнасиловать мой мозг в ВУЗ-е, касается очень узкой, и, вероятно, высокооплачиваемой области, где большую часть из списка 1 можно и не знать. Да почти всё можно не знать. Можно даже код как курица лапой писать.
Как мне показалось, за мой уже не такой и малый опыт, — реально в ходу у большинства математика до 10 класса. Всё что выше касается единиц. Скажем решать системы простых уравнений — must have. Выводить одну переменную из другой в уравнении — must have. Не падать в обморок при виде sinus-а или lg — must have. А вот без первообразных можно уже и обойтись, легко.
Программирую уже лет 15. За деньги лет 7-8. Как обожал это действо в детстве, так прусь от него и по сей день. Постоянно испытываю этот комплекс самозванца и в итоге что-нибудь читаю, пробую, просвящаюсь. Но вот не тянет меня разбираться в этих диффурах, прямо совсем. Они для меня как с другой планеты. Это я такой идиот? :)
P.S. целенаправленно не внёс в список 2 — ТеорВер, дискретку и булеву алгебру. В базовом виде там и учить то нечего, а в расширенном нужны — единицам. ТеорВер нужно знать хотя бы, чтобы не играть в лотереи и уметь работать с информацией.
Программирование всегда есть приложение к чему-то. Например, программист металообрабатывающих станков. А что, такой же программист, только оперирует допусками-посадками, системами СПИД (станок приспособление инструмент деталь). Оптимизирует программу по точности/по быстродействию, борется за кроссплатформеность итд. итп. Но мало кто называет его программистом, чаще станочник, чпушник специалист по метало обработке.
Зато если вы пишите под 1С, вас называют программист, хотя по сути — специалист по бухучету.
Никто сегодня в здравом уме не требует глубокого знания физики от электрика, хотя первые исследователи электричества в полной мере отвечали гордому званию ученого. А все потому, что данный раздел физики проник во все сферы жизни современного человека. Хотя все еще существует очень малая группа людей (в процентах от общего числа людей, эксплуатирующих электричество в личных целях), которая знает физику электричества очень глубоко.
То же самое и с программированием. По большому счету программирование – это работа переводчика с человеческого языка на машинный по описанию окружающих человека физических процессов, от которых зависит его здоровье и благополучие. На момент создания отрасли компьютеры могли решать очень узкий круг задач, при этом совершенно не нужных подавляющему числу людей. Поэтому основатели компьютерной отрасли представляли собой истинных ученых, глубоко знающих многие смежные отрасли знаний.
По мере взросления компьютерной отрасли все большее число людей стало вовлекаться в процесс освоения профессии программиста, а отраслевые лидеры (IBM, Microsoft, Sun и т.п.) упрощать процесс программирования путем стандартизации и унификации. И все это ради самой банальной выгоды – лучше потратиться один раз на сознание легкого для освоения и последующего использования языка программирования, а затем платить среднюю зарплату персоналу средней квалификации (которых много), чем постоянно платить высокую зарплату специалистам очень высокой квалификации (которых очень мало).
Поэтому слабые знания высшей математики большинства современных программистов свидетельствуют не о деградации профессии, а о зрелости отрасли программирования, как, например, отрасли электротехники. А для зрелой отрасли характерны такие признаки, как теоретическое решение большинства фундаментальных проблем и четкая корреляция между уровнем знаний и уровнем оплаты труда для большинства инженерных специальностей.
У меня вертится в голове старпёрский риторический вопрос: «А как же культура?»
Вопрос автору — он знает все произведения всех классических композиторов, может отличить картины Рубенса от Рембранта, прочитал всех известных философов (Кант, Гегель), читал всех английских классиков в оригинале, в совершенстве говорит на французом?
Нет? А 100 лет назад сложно было считаться образованным человеком, если не знаешь всего этого. Как же культура? Если требуете культуру, давайте начинайте с начала — не можешь в совершенстве перечислить все вальсы Шуберта — иди в дворники, нечего тебе делать в программистах.</сарказм>
Такой чувство, что у автора комплексы, он пишет на VBA, но знает математику, а какой-то тип позорит звание Java программиста, так как он ее не знает.
На самом деле, у меня диплом прикладного математика, но недавно (через 10 лет) мне пришлось лезть в википедию, чтобы вспомнить как найти угол между двумя пересекающимися отрезками. Просто не возможно быть специалистом сразу везде и если тратить время чтобы стать хорошим программистом — математика будет забываться. Либо забудется история, экономика, знания классиков. Бессмыслено требовать знание того что не всегда нужно
В некоторых сферах до сих пор держится зависимость «должен разбираться в предметной области», и вот тут всплывает тема про математику, например, в компьтерной графике (разработку граф. движков нельзя представить без линейной алгебры), в обработке сигналов (мат. анализ), в машинном обучении (статистика), и т.д.
Даже там есть такая вещь, что математика очень большая наука, программист, который 10 лет использовал мат.статистику в своей работе, может напрочь забыть, к примеру, банальную геометрию или не сумеет найти дискриминант квадратичного уравнения. Поэтому скорее важно знать основы, не боятся математики и уметь быстро изучить что-то новое, чем назусть помнить как, скажем, вычисляется арктангенс.
и доходит даже до того, что многие разработчики каждый день используют какие-то концепции, подходы и методы из дискретки в повседневной жизни, либо даже не зная, как называется то, что они используют, а во многих случаях даже доперев до них самостоятельно без чтения учебников
"Честное слово, я и не подозревал, что вот уже более сорока лет говорю прозой. Большое вам спасибо, то сказали." © Мольер
На самом деле это не разработчики используют методы дискретной математики сами того не понимая, а дискретная математика описала строгим формальным языком некоторые "интуитивно понятные" методы.
Погодите, вы всерьёз полагаете, что художники, перед тем как рисовать ту или иную картину, сидят с расчётами и корректировками проекции? Может быть ещё и что-нибудь в области топологии вычисляют? Ну или скажем нужно художнику тень нарисовать, как вы полагаете, будет ли художник вычислять её длину и степень размытости краёв? Наверное он откроет AutoCAD? :)
Не буду утверждать, что математика мне не нужна. В конце концов, профильного айтишного образования у меня нет, и на хорошую должность меня взяли, несмотря на мизерный опыт, как раз под впечатлением от математических навыков. По работе действительно иногда применяю навыки примитивного матанализа, несложные техники из математического курса «Численные методы», азы линейной алгебры и аналитической геометрии и статы на уровне первого курса гуманитарных вузов. Но очень редко, не каждый месяц. Более того, уверен, что мог бы работать и без привлечения этой математики — может, немного менее эффективно. Математическую суть за библиотеками машинного обучения я понимаю лучше многих коллег, но результаты часто лучше у тех, кто старательнее работает, даже не разбираясь в сути методов. А ведь работа у нас, по программистским меркам, на редкость наукоемкая.
Кстати, алгоритмов это тоже касается. Да, приходится иногда оптимизировать паросочетания, применять градиентный спуск или отжиг, искать мосты в графе или реализовывать фильтр Блума, но далеко не каждый день, в большинстве случаев — скорее из любви к искусству, чем из насущной необходимости.
Почти все хорошие математики имеют хорошую логику. В программирование важнее, чтобы человек обладал хорошей логикой. А математика на уровне 9-10 класса вполне достаточно для решения многих нынешних задач бизнеса.
Хотя, может и нет. Я постараюсь подкорректировать его пост своим пониманием окружающей действтиельности. Суть в том, что современный мир потерял ту опору, когда была борьба систем, какой-то драйв и жесткая конкуренция. Мировая война, а точнее целый цикл — позволил пробиться в социальные верхи людям, которые понимали в своем предмете выши среднего. Сверху был и послан сигнал об соответствующем отборе на ту или иную деятельность. Пока люди были хорошие — сигнал был сильный и правильный. Потом, когда холодная война завершилась, начался «капитализм», начались кровные связи, ОПГ — все это нам известно. Постепенно людей порядочных и профессиональных — сместили обычные «колбасники», для которых обычные инстинктивные удовольствия и желания — основа. Далее — есть нефть, есть ресурсы, можно просто пилить то, что было создано до них, можно вывозить через офшоры триллионы — все схвачено. Люди, которые остались и не попали в тренд — превратились в быдло, с плохим образованием, без картины мира и без той самой «культуры». К слову я — без образования вообще, я учился в классе для отстающих, жизнь уготовила мне путь к социальному дну, но, как вы можете видить — понимаю мир достаточно глубоко. Внутренний импульс нельзя загасить, все равно он будет стараться пробиться вверх. Так что умные люди — это артефакт, это не должно быть массово — природа нас создавала, чтобы мы размножались, а не учили «матан». В советские времена, с жесткой регламентированной программой обучения(лучшей в мире) — обезьянку жестко дрессировали. Просто то, что было скрыто от глаз под прессингом системы — вылезло наружу. Дикость, социальное неравенство, вся та грязь, что мы видим вокруг. У меня всё.
Что вы имеете ввиду под серьезным местом? К сожалению, работая в довольно крупной IT-компании с подобным сталкиваюсь очень часто и потом приходится исправлять «шедевры». Причем их авторы как архитекторы так и джуны.
Фреймворки, особенно в опенсорц, выходят не только как улучшение предыдущих. Но и как отработанный продукт. Ничего нового, но если ему прикрутить в рекламу, например, BigData, то можно еще раз продать поддержку, привлечь инвесторов и т.д.
Или, как оказалось, конкуренты обошли по технологии, а вложили уже много и имя обязывает. Раскручивается рекламная компания, курсы — у всех на слуху. К сожалению, этот случай очень распространен.
Или очередному менеджеру нужно повышение, квартира, машина и т.п., а прочитал, только «три книжки»… Берем новый перспективный, на требования и наработки плевать, толпу согласных, не согласных — в топку и полный аджайл! Заказчику красивую картинку — лапшу на уши. В этом, бесусловно, есть свой смысл.
«потому что все его используют»
В целом это тоже уменьшает цену поддержки.
«потому что новый»
А это позволит формировать имидж современной компании
Как правило, начиная изучать фреймворк, люди таки думают над целесообразностью такого изучения и, чаще всего, целесообразностью применения. Другое дело, что список и веса критериев могут отличаться от ваших. А в целом затруднительно составить объективную формулу оценки целесообразности, поскольку обычно оперируют субъективными оценками будущего.
Мир в наше время стал куда более многограннее, не только в сфере IT. Уже сколько слов сказано о распределении труда. Каждый выбирает то, в чём он себя чувствует комфортно (по крайней мере не собирается покидать, так называемую, «зону комфорта») и не задумывается над тем, что ему не нужно для его деятельности.
Нравится химия? Тогда занимайся этим, исследуй поведение различных элементов в определённых условиях (теоретически, физически — не важно). Футболлист? Бегай, пинай мяч, развивай своё тело. Писатель? Выражай свою позицию, мысли, создавай прекрасное, удивляй словом. Так же и в программировании, каждое направление требует определённых знаний и умений.
Само слово «программист» — слишком расплывчатое понятие. Если ты web dev, тебе нет необходимости задумываться над сложными математическими оптимизациями, экономии, в то время, как при создании той же ОС-и необходимо иметь представление о памяти и понимать, как сделать быстрее (высосано из пальца).
Возвращаясь к примеру с математикой. Человек, жаждущий попытаться себя найти в этом в первую очередь должен разобраться какие вообще ветви существуют (как и в любой другой сфере). Поскольку, как я считаю, такой вопрос указывает на некомпетентность человека в ситуации (по крайней мере на тот момент). Выучить можно всё, желание бы было.
Автору повезло учиться в "хорошей" школе, окей. Но "хороших" школ мало, на то они и называется "хорошие", а не "обычные" и не все могут попасть в "хорошие". Автор так гордится своей жертвой, что когда-то в детстве обогнал всех на два курса по матану, что теперь ему кажется неправильным, когда оказывается, что мы не в шестидесятых, и есть высокоуровневые языки. И, сюрприз-сюрприз, оказывается, что, например, в случае с java вся эта ерунда в 90% не нужна вплоть до сеньерских позиций. Это круто, что чуваку с тостера понадобилась школьная математика, плохо, что автор, в стиле русскоязычных форумов по Делфи, привык только щеголять своим "хорошим" средним образованием, что он не упускает повода и пишет целый пост на хабр. Представьте, что автор написал бы такой же пост про учебник по английскому. Его бы подняли на смех, потому что принято, что изучать язык — это же всегда круто (хотя английский, наверное, важнее) но с математикой почему-то возникают какие-то сомнения, она преподносится как нечто невероятно важное и базисное. Подобная дискриминация по умению решать никому не нужные математические головоломки, принятая в русскоязычном комьюнити, является вредом наряду с травлей женщин-джуниуров. Я надеюсь, что когда-нибудь можно будет написать вопрос по-русски и не получить в ответ кучу желчи и подобные посты.
Действительно высшая математика в работе программиста редкость.
Но тем перцам с Тостера все же нужно отвечать нужна. Ибо тренирует мозги.
Расширяет кругозор. Как и большая часть из школьной или вузовской программы. Непосредственно это не надо. Но мозги развивает.
Если же человек хочет без абстрактных знаний — сразу рубить бабло, то это классическое ПТУ-шное образование. Максимум практики, минимум теории. После восьмого (сейчас девятого) класса в ПТУ и в поля на заработки.
Если Вы правильно изучали математику, программирование для вас — вопрос изучения синтаксисов и библиотек
Да, то-то у всех математиков, не знакомых с программированием, вызывает удивление выражение "x = x + 1".
Вот вы изучали математику. Сможете операционную систему написать?
Не "математика помогает программированию" и не "программирование помогает математике". А и программирование и математика зависят от логического мышления. Программирование оказывает на него больше влияния, потому что логика проверяется независимым исполнителем — компьютером.
Элементарную ОС может написать каждый. Вопрос ресурса и энтузиазма. Мат подготовка повысит эффективность работы. Полноценную современную ОС, конечно же, напишет только команда.
Логика не может быть вторичной по отношению к компьютеру, потому что не он её придумал. Логику придумал и сформулировал человек. Самый развитый логический аппарат заключён в математике, потому что это чистая абстракция, на которую практически не влияют несовершенства внешнего мира. Компьютер это всего лишь вычислительная машина, которая призвана воспроизводить некоторые алгоритмы, придуманные человеком. Она может быть спроектирована и запрограммирована более или менее хорошо, и потому не может являться мерилом верности логики.
Мы можем лишь говорить о степени доверия к её результату.
Есть логика вообще. Она делится на различные виды, прежде всего на классическую (аристотелевскую) и математическую. Математическая логика — пересечение множеств "логика" и "математика". С появлением ЭВМ, а точнее логических и вычислительных устройств появилась машинная логика, которую можно описать с помощью аппарата математической логики, но на практике программисту это описание не нужно, в том числе, потому что более-менее краткое описание будет идеальным типа машины Тьюринга с бесконечной лентой, а полное, с известными физическими ограничениями, необъёмно и избыточно для практики, ведь на практике ему нужно понимание машинной логики, а не аристотелевской или математической. На практике задача программиста чаще всего переводить с языка "бытовой" логики на язык машинной логики. Можно это делать сначала переведя его на язык математической логики, а потом результат на язык машинной. Можно, но нужно ли?
Машинная логика это вообще микроскопический частный случай элементарной алгебры.
Я не говорю, что для решения задач о переустановке дров надо решать систему уравнений.
Я говорю, что математика качает инженерный мозг лучше всего, потому что все инженерные дела сформулированы через математику, являются её отдалёнными правнуками. Если бы программирование включало в себя так же человеческие эмоции в неоцифрованом виде, а в чистом, и красоту музыки в чистом неоцифрованном виде (не знаю, как это возможно, но если бы), то я утверждал бы, что необходимо понимать психологию и искусства, чтобы кодить на таком франкенштейне. Не только опираться на свои опыты в прогрммировании.
Я не спорю, что она качает мозг лучше всего, хотя доказательств этого у меня нет, но нет доказательств и противного. Но, это не означает, что нет других способов прокачать мозг, чтобы эффективно решать подавляющее большинство практических задач, ставящихся программистам. Я лично знаю хороших программистов, которые математику проходили только в рамках обычной школьной программы.
Я говорю, что математика качает инженерный мозг лучше всего, потому
Лучше всего качает мозг инженера именно та самая отрасль, в которой он работает. Основную массу программистов вполне можно готовить в ПТУ и никакой вышки им там не давать. Уровень вузовского образования нужен в работе не более 1% программистов.
Ну, 1% явно маловато, если следовать формальным делениям и статистике. Я бы сказал, что специализированное вузовское образование нужно процентам 20 программистов, от уровня Senior. Или эквивалентный ему опыт работы программистом.
Ну, 1% явно маловато, если следовать формальным делениям и статистике. Я бы сказал, что специализированное вузовское образование нужно процентам 20 программистов, от уровня Senior. Или эквивалентный ему опыт работы программистом.
Зачем нам тут Парето?
Большая часть занимается сугубо прикладными задачами в отраслях, где вся математики или уже подсчитана и дается в готовом виде («посчитай процент наценки на товар вот по этой формуле») или вообще достаточно знания арифметики на уровне 5 класса школы.
Даже если взять какие-то области, где хоть немного нужно от вышки — геймостроение. То, что нужно в 99,9% укладывается с запасом в половину первого семестра первого курса ВУЗа.
это просто те, кому не дается или лень учить математику в школе, а программировать хочется.
Или те, кто уже давно и успешно программирует, но чувствует, что чего-то не хватает для дальнейшего профессионального роста.
Мне кажется, я понял автора. Образование, и, в частности, математика — это обязательные слагаемые культурного инженера (программиста), и математикой (как и другими дисциплинам) нужно владеть даже если повседневная работа этого не требует. Нужна ли математика программисту — такой вопрос вообще ставить не следует, он появляется у людей от страха неудачи в попытке освоения математики, но это не имеет значения, нужно просто стараться узнавать, учить, работать в этом направлении каждый день и не важно сколько времени это займёт — пару семестров или 15 лет. Тем более, что в наше время легко и бесплатно доступны тонны материала по интересующим дисциплинам (на ютубе вагон всяких каналов с лекциями). Слышал такое выражение (приписывают Лихачёаву) — если человек задаёт вопрос "надо ли мне что-то знать или учить" или "зачем мне это знать" то на нём можно смело ставить крест.
он появляется у людей от страха неудачи в попытке освоения математики
Или просто от желания рационализировать трату своих ресурсов. Понять лучше изучать математику, английский, теорию программирования или новый фреймворк/ЯП.
История из личного опыта:
Понадобилось сделать кредитный калькулятор на вебморду одного мелкого банка. Говорю, ребят, чтобы не париться, пусть мне ваши разработчики пришлют формулы, по которым они считают на внутреннем банковском приложении.
Присылают. Быстро прямо на javascript пишу калькулятор. Отдаю на проверку.
— Не верно. График погашения не бьется с тем, что выдает наша программа.
Беру их график. Перепроверяю. Нахожу у себя неточность с округлением. Я его делаю алгебраически, а банкиры, как и положено, приведением к большему с учетом в дальнейших расчетах.
Опять отдаю на проверку.
— Опять не верно. График погашения не бьется с тем, что выдает наша программа.
Перекапываю всё, не нахожу у себя ошибку.
Связываюсь с банком:
— Народ, я, конечно, понимаю, что вы меня в потроха своего софта не пустите, но можете просто прислать вашего программиста с лаптопом, на котором будет реальный кусок кода вашего калькулятора, пофиг на каком языке он написан?
Присылают. Смотрю… Спрашиваю:
— А кто писал этот код?
— Я.
— Вот смотри, вот мат. функция, которую мне прислали, написанную, чуть не от руки, вот её реализация у тебя. Не находишь разницы?
— Нет, всё верно!
Потом я связывался с его начальством и объяснял, что ошибка не в моём, а в их калькуляторе, и человека, который его писал, необходимо ещё раз отправить в школу, т-к для него отрицательная и дробная степень числа — это одно и тоже!
Как итог — банк, без широкой огласки, вынужден был с несколькими тысячами клиентов перезаключать приложения к кредитным договором с новыми графиками выплат.
Вот и считайте, «нужна математика программисту или нет».
Как итог — банк, без широкой огласки, вынужден был с несколькими тысячами клиентов перезаключать приложения к кредитным договором с новыми графиками выплат.
Полагаю — перезаключили потому что в их пользу?
Но вообще программисты и математика в данном конкретном примере не связаны.
Программист был обязан реализовать так как ему дали формулу.
И кто-то из ответственных за финансовую часть там был еще обязан проверить и перепроверить как считает созданная программистом программа. Дело программиста здесь маленькое.
Так что математику не знает какой-то из финансовых сотрудников, а не программист. Или тестирование плохо в банке поставлено.
Это пример не «нужности математики», а из рук вон плохо построенного рабочего процесса и тупоголового менеджмента.
Тем более что этом могла быть и не ошибка программиста по неграмотности. А умышленно написанный некорректный код.
Из жизни, слышал от пострадавших лично:
Заказали программисту платежную систему (прием платежей за сотовые, коммунальные и т.п. и переотправки их дальше по цепочке) — он все сделал.
Уволился. А через пару недель (вот ведь не смог потерпеть) все деньги, находящиеся в распоряжение этой системы исчезли в неизвестном направлении. Поскольку у владельцев рыльце в пушку, они не полностью законно делали этот бизнес — то обращаться в следственные органы не стали. Просто отключили эту платежную систему.
Потом я связывался с его начальством и объяснял, что ошибка не в моём, а в их калькуляторе, и человека, который его писал, необходимо ещё раз отправить в школу, т-к для него отрицательная и дробная степень числа — это одно и тоже!
Это была формула расчета аннуитета?
Сам с таким сталкивался, когда дали тех. задание с расчетами рисковых параметров (слегка посложнее калькулятора) с описанными формулами, по которым все сходилось 1 в 1. После N-ной ошибки «считает неправильно» начал разбираться и выяснил, что они сравнивают не со своей предоставленной методикой, а с каким-то эксель-файлом, который им сделал неизвестно кто и когда. Настоял пересчитать при мне на калькуляторе по своим формулам и выяснил, что считать они не умеют. Спустя десяток-другой пыхтений, они пришли к выводу, что наш расчет с их методикой все-таки сходится. И получил зеленый свет на отказ подобных ошибок не по существу. :)
Хочу заметить, что молодые «программисты» не знают даже основы школьного курса математики!
Вы сделали этот вывод на основании одного эпизода?
Знания нужны и полезны — смысла нет отрицать. Проблема определить, какие знания потребуются тебе в будущем, чтобы их получить. Слишком много интереснейших вещей
Вы не один такой. Мне 29, я тоже окончил физ-мат школу и виду как снижается качество образования. Готовят в основном «обслуживающий персонал». Может это и неплохо, но все чаще ощущаю себя героем романа Олдоса Хаксли.
Можно всю жизнь профессионально писать программы и не затрагивать багаж даже старших классов школьной программы. Львиная доля программистов просто пересыпает туда-сюда данные и показывают на экране отчёты с арифметическими действиями в формулах.
Это не хорошо и не плохо. Просто так есть.
Другой вопрос, если вы занялись чем-то, связанным с точными науками. Вот тут-то придется обновить вузовский матан.
Гуру программирования это я думаю люди хорошо знакомые с алгоритмикой.
Ну черт её знает… — toster.ru/q/505921
Если 1vw = 1% окна
То 1920vw = 100%?
Основная статья подверглась апдейту — всем читать!
Не вижу diff'a, а ведь это элемент инженерной культуры — при изменениях чего-то в артефактах давать список изменений наряду с конечным результатом. Как минимум, неуважительно по отношениям к потребителям артефактов заставлять их выискивать изменения, особенно если крайне маловероятно, что у них есть прошлая версия.
6. Роль математики для информатики в школе высокая
Из более чем тысячи человек только 61% ответили «Да». Никто не спорит, что для создания простых web-страниц математика не нужна. Более того: можно и HTML не знать. Это ремесло, простая инженерия. Но существует наука computer sci. На русский это название не совсем удачно переводят как информатика. Для изучения основ информатики матан не обязателен. А вот, нпр., теория вычислительной сложности (математическая) необходима. В современном мире повсеместно наблюдается разделение труда: кто-то как пирожки «печет» простенькие web-странички, а кто-то разрабатывает новые алгоритмы, доказывая на теоретическом (т.е. математическом) уровне их корректность и производительность для наихудшего случая. И та, и другая работа востребованы. Как и в случае с автобусами: кто-то их водит по маршрутам, и его называют водитель автобуса, а кто-то разрабатывает новые модели автобусов, и его называют инженером. Возможно, что не всякий инженер сможет сразу стать хорошим водителем, но водителю переквалифицироваться в инженера, наверное, гораздо труднее.
Вопрос автору: насколько глубоко надо знать то, что происходит после нажатия кнопки включения ПК, чтобы считаться профессионалом?
Кто такой программист?