Вы применили крайность. А крайности как правило не валидны.
Понятно что любой человек в той или иной степени оперирует каким то объёмом информации у себя в памяти. Иначе это и не человек вообще.
Вся разница в количестве и разновидности этой информации.
И программисту для выполнения работы требуется запредельное количество специфической информации. Это алгоритмы, коды, абстракции.
Так вот по моим наблюдением оперирование этой информацией для мозга чрезвычайно затратно. И если человеку не нравиться, т.е. нету дофаминовой поддержки, мозг сопротивляется максимально сильно.
И программисты со временем развивают свою нейросеть для работы с этой специфической информацией. Т.е. со временем, когда дофаминовая поддержка уже сводится на нет, мозг уже натренирован. и можно работать дальше без поддержки.
Вот вы привели другие примеры информации. Например есть люди которым легко даются языки. Или люди актёры, которые запоминают сценарий фильма, пьесы.
Они тоже тренируют свой мозг. И если это им нравится, то им легко даётся манипулирование информацией специфичного для себя класса.
Как я уже говорил много раз. Все способности — это желание изучать конкретную информацию. А уж что тебе нравится или нет — это уже матушка природа и батюшка геном решают.
Не знаю как это работает в голове. Но если долго работать над проектом где есть тысячи функций и если кликнуть в любое место проекта сразу будет понятно что и как тут работает. Видимо подгружается из памяти.
Одновременно в быстрой памяти смысла держать всё это нет. Однако пытаясь разобраться с алгоритмом в программе приходится одновременно держать в голове пару десятков функций. И в течении рабочего дня к этим десяткам прибавляются другие десятки, а уже ненужные выгружаются из головного кеша.
Часто находишься в состоянии когда в голову нужно загрузить ещё информации, но уже не можешь, смотришь на очередной код, а он расплывается перед глазами. После этого просто включаешь на пару минут какой нибудь развлекательный сайт. Даже не особо вчитывавшийся что там. Но это позволяет разгрузить кеш в голове. Потом переключаешься обратно на проект.
И да всё это относится к сложным проектам. В программировании есть куча задач линейных. Те же формошлёпства. Там подход линейный, мозг практически не загружается, и ты просто отдыхаешь на таких задачах.
С геймдевом вообще не пересекался, но со всем остальным наверно со всем.
Разве в геймдеве сейчас не рулят движки? Юнити там разные. Где игрописатели фактически только API движков дёргают.
Хотя если новый движок писать, то согласен там прилично математики, например туже физику земного притяжения описать. Полёт стрелы там и прочего. Или геометрию пространства.
Но разве это реализуют с нуля? Наверняка уже написано 100500 библиотек которые реализуют всю эту физику.
Я только знаю что делает алгоритм. Но как он это делает? Я пытался разобраться. Но просто прочитав это — я понял что этого не достаточно. И так как мне это не надо было просто бросил.
Мне была достаточна абстракция — подаю на вход числа, получаю на выходе.
А вот дальше эти числа уже использовались в вышестоящем алгоритме.
Который я уже реализовывал сам. И математики по моим внутренним убеждениям там не было.
Хорошо пусть будет логика. Да логику я использую всюду. Собственно программирование без логики не может быть. А вот без математики ))) Тут как раз и ведём дискуссию, может или нет.
Я это отношу как раз к математике. Однако я это использую в своей работе. Просто я беру функцию где реализована вся эта математика и просто пользуюсь результатами. И т.к. я сам не реализовываю эту математику — то считаю что я не пользуюсь математикой. Но получается что я пользуюсь только результатами математики ))) Как минимум мне надо знать о существовании таких алгоритмов и где о ни используются.
Опять же вы пишите что в соей работе используете мат анализ. Но реализуете ли вы алгоритмы этого анализа? Или просто используете готовые функции? Глупо писать свою реализацию cos() или sin(), когда можно просто вызвать функцию.
И так как в библиотеках есть практически всё, то в типичной программе нету математики. Только вызов функций. И архитектура программы.
Современные абстракции в программировании задрали процесс программирования слишком высоко. Туда где математики не осталось.
Жёсткая математика, нативная, будет только в чём то новом. Что крайне редко встречается и большинство программистов не встречают за всю свою IT карьеру.
Думаю этот вопрос не имеет смысла. Т.к. для его ответа нужно устанавливать какую то черту, до — программирование. После — математика. Опять же если эта не черта а широкая область, то в этой области это будет какая то химера — матепрограммировани или программатика ))
Шутка.
Получается что это чистая субективщина.
Но опять же изначально вопрос стоял — нужна ли математика для современного программиста. И на этот вопрос может ответить только опыт. Статистика.
Моя статистика мне показывает что я не помню когда я использовал что то из высшей математики в проектах. Я постоянно встречаю такое мнение.
Но проекты от этого не перестают быть сложными. Их сложность в абстракциях. Тысячи функций складываются в абстракции. Всё это нужно держать в голове и уметь ими манипулировать.
Это как с мозгом. Работа одного нейрона — примитивна. Не будем рассматривать биохимию нейрона как клетки. Алгоритмически нейрон примитивен. Есть куча дендритов и аксон. Суммарный сигнал на дендритах превышает уровень срабатывания нейрона, сигнал уходит в аксон.
Но миллиарды этих простейших автоматов строят такие абстракции — что весь человеческий мозговой потенциал до сих пор не может разобраться как это работает в целом.
Вопрос сколько времени нужно находится в состоянии когда мозг пухнет. Вот вы привели пример 2 дня.
У программиста такое состоянии собственно каждый рабочий день. Десятилетия подряд.
Поэтому я и писал — что неподготовленный человек на это не способен. А так же на это не способен человек которому не нравится программирование. Даже если ему предложить 1$ миллион и он будет напрягаться изо всех сил, ничего не получится.
Сужу по себе. Когда мой мозг не хочет вникать в проект как бы я не напрягался я только заработаю головную боль. Просто смотришь в код, пытаешься понять что было 5 минут назад, не помнишь и просто лезешь в какой нибудь youtube.
В такие моменты лучше просто день потерять. Выспаться хорошо. И стартовать сначала.
И кстати очень часто попадаешь в полосу, когда выжимаешь себя за день, ничего не сделал, а делать надо, следующий день такой же потому как вчера себя выжал. И так по крупицам плетёшься вперёд.
Могу сказать что продуктивность у одного и того же человека может отличатся на 1000% за одну и туже работу в зависимости от твоего состояния и нравится ли тебе проект.
Отсюда около нулевая продуктивность у войтиВайти. Т.к. в принцип им не нравится программирование. Они пришли сюда ради денег и хайпа. В противном случае они вошли бы в IT уже давно.
Разумеется это не относится к молодым парням. Среди них есть небольшой процент которым нравится IT. И они только начинают свой путь. Разумеется этот процент небольшой так же как и раньше.
Если по простому, когда приступаешь к работе, открываешь проект, то начинается работа по загрузке этого проекта в мозг. Быструю память. У программистов есть даже понятия — погрузиться в контекст или выпасть из контекста.
Пока ты не в контексте — то на проект смотришь как на египетские иероглифы. Но спустя час, пробежавшись по десяткам — сотням функций, уже примерно представляешь как работает кусок программы в котором ты находишься.
Так вот. Ты должен находится в контексте, по идеи все 8 часов работы. На практике — думаю у человека поедет крыша от такой работы. Поэтому это разбавляют всякими… переговорами. У некоторых ничего не делание переговоры занимают целый рабочий день )
Однако если тебе интересно — то ты можешь находится в контексте и 18 часов. Если не интересно — то вообще не сможешь погрузится. Мозг будет сопротивляться настолько что ты впадёшь в прострацию.
Отсюда кстати я смотрю с умилением на десятки тысяч "войтиВайти". Люди просто не понимают на что они подписываются. И раз до модных времён они так и не связали свою жизнь с IT, значит это не их. Их мозг просто не будет способен на многочасовой контекст.
И да у "настоящих" программистов проработавших по 20 лет, не войти в контекст — сплошь и рядом. И ты тратишь неделю на простенькую задачу при этом изнасиловав свой мозг и чувствую себя как будто ты разгружал вагоны. Это всякое легаси, индуский код, да и просто звёзды не сошлись или ты встал не стой ноги.
Поэтому программист это очень тяжёлый труд, и к старости лучше им не быть.
И написал я это к тому, что бы задать вопрос. А где у гуманитариев происходит примерно такой же экспирианс?
Но опять же — гуманитарии, это очень расплывчатое понятие. Без конкретных определений вопрос не имеет смысла. А с конкретными скорее всего потеряет актуальность как риторический.
Я про это и написал. В математику вообще всё можно запихнуть при желании и программирование целиком. Куча споров идёт только потому что никто из спорщиков не дал изначально чётких определений критериев вокруг которых ведутся споры.
И по этому сам вопрос может звучать глупо — нужна ли математика программисту. С одной стороны да, потому как всякие сложение или умножение уж точно используется.
Но где та грань где математика считается используемая по умолчанию, а где считается что программист уже не использует математику.
Программист использует формулу площади круга, но когда смотрит на доказательства теоремы Ферма ему кажется что он смотрит на египетские иероглифы. Где грань?
Я привёл эту грань с моей точки зрения как практика по программированию. Разумеется эта не истина в последней инстанции, а только мнение.
Отвечу вам и geher.
Нету формулы которая дала бы точный ответ. Вот и всё. В противовес другим математическим формулам которые давали бы точный ответ, и не важно сколько знаков после запятой.
И вообще я привёл только для примера как наверно наиболее известную нерешаемую задачу.
А то что приблизительно решается — так и тот программный способ с аппроксимацией времени тоже даёт приблизительный результат.
Я лишь показал чем с моей точки зрения отличается математика от программирования.
И да математика часто бессильна. Например задача трёх тел
Математически не решается.
Но вот программированием пожалуйста. Нарезай время как можно меньше. Рассчитывай кванты изменения положения для всех тел. Далее процедуру повторяем с новыми данными по положению. Как видим — время непосредственный участник в процессе программирования.
Конечно со временем (опять будь оно не ладно) накапливается неточность. Но на то они и программы что бы глючить ))))
Подводя итог хотел бы добавить. Программа эта про время и состояния. Это про мегабайты информации и как эта информация будет меняться с каждым тиком процессора, проходя через тысячи функций.
Математика это про числа. Могу ошибаться, не математик, но вроде в математике нету времени, т.е. там не будет зависеть результат на выходе в формуле от времени. И да я не имею ввиду когда время — это переменная в формуле. Математика это конечный автомат. Но даже в ПЛИС на высоких частотах начинается гонка сигналов и время начинает вмешиваться в казалось бы чисто математические функции.
Программа это про взаимодействие между частями.
Математика это нахождение и использование особенностей в числах. В законах нашей реальности. Пример — площадь круга.
Можно поделить круг мелкой сеткой. Посчитать площадь ячейки сетки и посчитать количество ячеек. Это по "программистки"
Как уже много лет "в IT" и собрав так сказать статистику могу ответить следующее.
Во первых нужно сначала уточнить что подразумевается под "математикой"? Потому как сама она тоже состоит из десятков разделов. Так вот под ней я буду иметь ввиду всякие там косинусы, синусы и прочие чисто математические абстракции которые тянут за собой целый пласт всяких теорем, которые тянут за собой опять же всякие формулы. Это математические уравнения на которые если смотрит обычный человек, то он выпадает в прострацию.
А теперь про программирование. Программы состоят из функций, процедур, методов — суть одна.
Современные программы на 99,9 состоят из достаточно простых функций. Но количество их в 1 программе может достигать сотен, тысяч, миллионов. Огромное количество взаимодействующих друг с другом функций.
И вся сложность — это как раз написать (подключить из библиотеки) эти тысячи функций и соединить их воедино что бы они не глючили между собой. А это сложно. Архисложно. Когда работают параллельные потоки. Когда функции вызывают сами себя (рекурсия). Когда функции пользуются одной памятью, и начинается то утечка, то одна функция рандомно портит память другой. Баги можно искать годы, и часто они остаются навсегда. Ну и архитектура. Связь всех функций — это архитектура программы. И сделать её правильно тоже архисложная задача. Обычно архитектура допиливается годами. И никогда не достигает совершенства. Всегда есть что улучшать.
Как видите математика тут не нужна.
Однако существует ряд задач, алгоритм которой умещается в 1 функцию. Как правило это алгоритм получения минимально конкретного результата максимально эффективно (быстро и не жрало памяти). И уже этот алгоритм можно реализовать с помощью математики. Например алгоритм шифрование на эллиптических кривых. На которых работает современный интернет (Это шифроканал в TLS).
Большинство пользователей за десятки лет в IT подобное не пишут. Они просто берут готовые функции из библиотеки. Собственно специализированных алгоритмов — единицы, по сравнению с миллионами обычных программ.
Поэтому могу смело говорить что для современного IT — математика не нужна.
И да. И в том и другом случае надо иметь аналитический склад ума, это как бы по умолчанию. Потому как удержать в голове десятки тысяч взаимодействующих функций между собой — обычно нормальный человек на такое не способен. По этому IT-шники и получают тысячи долларов за свою работу.
В Песочнице есть правило и оно чётко обозначено: новости не проходят модерацию
Да там не новость была. Новость была только отправной точкой для статьи. Там баг какой то в гугле был вроде. Вот про баг и была статья. Собственно пофиг что там случилось, это было давно и "неправда". Я просто вспомнил про этот случай (так про него вообще не вспомнил), а мне за это в карму насрали.
это довольно небольшие деньги
Никогда не был копирайтером, исхожу исключительно из своего опыта. Написать грамотную техническую статью — может занять и месяц. Если надо попутно тучу кода писать, экспериментов там ставить. Собирать и анализировать сторонние исследования. Рисовать кучу картинок. Потом ещё и причёсывать её — что бы была интересная, а не тупо лог.
Так вот сколько за месяц может заработать грамотный айтишник? 3-5K$? Я конечно понимаю что сайты по типу хабра — на смех воспримут такие суммы за 1 статью. Но вот тот кто её будет писать — у него в голове эти суммы будут ещё как крутится.
И вместо положительного или хотя бы нейтрального ответа, приходит толпа хейтеров и смешивают тебя с г… И ты думаешь… А нахрена мне это вообще сдалось?
Да кто вам говорит что я супер пупер атор? Я просто описал свой случай.
Представьте, новичок пишет статью. Статья была про новость какую то. Давно было. И ему говорят — не подходишь. А потом выходит статья про эту же новость примерно такого же формата. Ну и что новичок думает?
Это сейчас я уже полностью знаю как работает эта кухня.
А ещё представте себе, за этот комментарий, за 1 комментарий! мне какой то лишне хромосомный поставил минус в карму. Я думаю за обзывательство мне ещё в карму насрут. Ну и плевать. Как говорится не очень то и хотелось тут комментировать и статьи бесплатные писать.
Вопрос лишь в том, ради чего вы пишите
99% статей тут пишут ради скрытой рекламы (это моё убеждение). И да это не хабр такой стал, это мир такой стал. Всё есть товар.
Лет 7 назад, а может и больше, на хабр было не прорваться. Этакая "интеллектуальная элита". Написал тогда вполне годную статью — сказали мол нафиг не нужен. Что примечательно, потом сразу вышла почти такая же статья. Я даже написал на почту, мол украли статью. Мне даже ответили. Мы не при делах, иди лесом.
Вобщем забил я тогда на хабр на много лет.
А сейчас принимают вообще всё, любой мусор. Что же — конкуренция. Авторские статьи это сейчас товар, и по идеи за них должен хабр ещё и приплачивать авторам. Хотя есть тут "принтеры" на зарплате...
Всё вышеописанное, исключительно мои личные наблюдения.
Ужастная капча. Пару раз сталкивался (редко пользуюсь вашими продуктами) — и честно говоря потратил на её ввод непозволительно долгое время.
И да как человек когда то разрабатывающий программы по взлому капч могу сказать, что ваша капча предназначена только для отпугивания людей, с чем она прекрасно справляется, но совершенно не способна отпугнуть бота специально сделанного под вашу капчу.
Поясню свою мысль — при взломе капч главное выделить отдельные символы, у вас это делается с лёгкостью, ничего не сделано что бы максимально склеить символы. Опять же все ваши искривления — это только сломать человеку мозг, а программа анализирует алгоритмы искривления, например если есть какие то волнистые линии или другие пиксели, и делается карта градиента искривления. А потом просто восстановление изначальной картинке по карте.
Например в вашей капче, так на вскидку ищем в символе прямую линию, смотрим наклон, отличающийся от 90% и строим карту градиента. Разумеется под каждый символ можно сделать свои индивидуальные настройки. Сколько там символов? Русский алфавит + цифры? Опять же у вас волна, поэтому искривление соседних букв должно быть минимальным. отсюда можно стразу выкидывать неправильно определённые искривления промежуточных букв. Короче куча вариантов для алгоритма.
Хотя я перемудрил. Делаем максимальное мыло. Получаем тупо искривлённую линию. А дальше просто выпрямляем эту линию. Сдвигаем пиксели всей картинки. Ну и получаем чистые нормальные символы. Далее уже нарезаем.
А далее отдельные нарезанные картинки подаются на нейросеть. Ваши буквы даже простейший перцептрон будет правильно анализировать символы на лету.
Опять же фон — вы человеку хотите трудности или роботу? Ваш фон удаляется с картинки самым простейшим алгоритмом — буквы имеют чёрный цвет. Выкидываем всё что не чёрное. Это к капче из статьи. Если у вас и цветные есть (не знаю) тоже выкидываем всё что не цвет символов.
Повторяюсь — главное в капче нарезка символов и преобработка картинки (исправление искажений и другие операции из разряда фотошопа). А сама нейросеть уже не главное — справится абсолютна любая, даже самая кривая.
Upd. Ещё добавлю — чем больше всяких цветовых искажений, тем труднее для человека и проще для алгоритма. За каждый цвет можно зацепится и использовать его в алгоритме.
Например буквы одним цветом а искажения куча других — тогда просто оставляем только цвет букв, или например разноцветное месиво можно все цвета уровнять и получить почти идеальные символы. Поэтому чем меньше за что зацепится, и найти взаимосвязи тем сложнее автомату. ЧБ капчи самые идеальные. А если ещё и на эффекте шума..., но тут тоже куча вариантов. Шум можно замылить и опять же получить чёткие символы.
В мозгу есть своеобразные тактовые генераторы которые заставляют области нейронов постоянно "дёргаться", для нас это будет выглядеть как поток мыслей. Например у шизофреников или когда мы спим, или когда засыпаем, мы не можем влиять на этот механизм. В крайних случаях вообще галлюцинации появляются.
Так вот не думать ни о чём — сложно. На десятки секунд легко, но дальше уже начинаются проблемы.
Монахи долгие годы тренируютсяобучают нейронную сеть медитируют, что бы достичь так называемого просветления.
Как я понял, такое стояние — это полная очистка короткой памяти. Собственно такой эффект можно получить и обычному человеку. Передавить себе сонную артерию и потерять сознание на несколько секунд. Происходит ресет короткой памяти и в первые секунды человек находится в загрузке и инициализации пограничном состоянии. При этом звуки и краски, возможно другие чувства, находятся в состоянии прямой загрузке без текущих нейро фильтров в неестественно "ярком" состоянии. Причину последнего точно не объяснить с "железячной" точки зрения.
Разумеется всё вышесказанное является исключительно ИМХО.
Я абсолютно не подвергаю ваши слова сомнению, возможно вы правы на 100%, просто помню недавнюю историю. Когда Маск делал свои ракеты возвращаемыми, примерно такие же полотна, с не менее точными расчётами встречались по поводу его безумной затеи. Все кому не лень крутили пальцем у виска и называли Маска мошенником.
Вы применили крайность. А крайности как правило не валидны.
Понятно что любой человек в той или иной степени оперирует каким то объёмом информации у себя в памяти. Иначе это и не человек вообще.
Вся разница в количестве и разновидности этой информации.
И программисту для выполнения работы требуется запредельное количество специфической информации. Это алгоритмы, коды, абстракции.
Так вот по моим наблюдением оперирование этой информацией для мозга чрезвычайно затратно. И если человеку не нравиться, т.е. нету дофаминовой поддержки, мозг сопротивляется максимально сильно.
И программисты со временем развивают свою нейросеть для работы с этой специфической информацией. Т.е. со временем, когда дофаминовая поддержка уже сводится на нет, мозг уже натренирован. и можно работать дальше без поддержки.
Вот вы привели другие примеры информации. Например есть люди которым легко даются языки. Или люди актёры, которые запоминают сценарий фильма, пьесы.
Они тоже тренируют свой мозг. И если это им нравится, то им легко даётся манипулирование информацией специфичного для себя класса.
Как я уже говорил много раз. Все способности — это желание изучать конкретную информацию. А уж что тебе нравится или нет — это уже матушка природа и батюшка геном решают.
Не знаю как это работает в голове. Но если долго работать над проектом где есть тысячи функций и если кликнуть в любое место проекта сразу будет понятно что и как тут работает. Видимо подгружается из памяти.
Одновременно в быстрой памяти смысла держать всё это нет. Однако пытаясь разобраться с алгоритмом в программе приходится одновременно держать в голове пару десятков функций. И в течении рабочего дня к этим десяткам прибавляются другие десятки, а уже ненужные выгружаются из головного кеша.
Часто находишься в состоянии когда в голову нужно загрузить ещё информации, но уже не можешь, смотришь на очередной код, а он расплывается перед глазами. После этого просто включаешь на пару минут какой нибудь развлекательный сайт. Даже не особо вчитывавшийся что там. Но это позволяет разгрузить кеш в голове. Потом переключаешься обратно на проект.
И да всё это относится к сложным проектам. В программировании есть куча задач линейных. Те же формошлёпства. Там подход линейный, мозг практически не загружается, и ты просто отдыхаешь на таких задачах.
С геймдевом вообще не пересекался, но со всем остальным наверно со всем.
Разве в геймдеве сейчас не рулят движки? Юнити там разные. Где игрописатели фактически только API движков дёргают.
Хотя если новый движок писать, то согласен там прилично математики, например туже физику земного притяжения описать. Полёт стрелы там и прочего. Или геометрию пространства.
Но разве это реализуют с нуля? Наверняка уже написано 100500 библиотек которые реализуют всю эту физику.
Так я и не спорю что в математику всё входит.
И все программисты пользуются в той или иной мере математикой.
Собственно это даже не обсуждается.
Однако вопрос пользуются ли программисты математикой постоянно возникает. И даже в этой статье есть.
И что бы на него ответить — надо определить какой то критерий.
И этот критерий будет чисто субъективный.
Я из своего субъективного опыта написал. Что реализация алгоритмов высшей математики в программировании сегодня практически не бывает.
Однако дискуссия нас привела к выводу — что не бывает скорее всего из за того что все алгоритмы уже реализованны в библиотеках.
А программистам только и остаётся что просто пользоваться результатами тех или иных алгоритмов.
Я только знаю что делает алгоритм. Но как он это делает? Я пытался разобраться. Но просто прочитав это — я понял что этого не достаточно. И так как мне это не надо было просто бросил.
Мне была достаточна абстракция — подаю на вход числа, получаю на выходе.
А вот дальше эти числа уже использовались в вышестоящем алгоритме.
Который я уже реализовывал сам. И математики по моим внутренним убеждениям там не было.
Хорошо пусть будет логика. Да логику я использую всюду. Собственно программирование без логики не может быть. А вот без математики ))) Тут как раз и ведём дискуссию, может или нет.
Поэтому я и определил точные критерии что бы вопрос "нужно ли знать математику программисту" имел смысл.
Я под математику поставил использование "жёстких" математических теорем и формул.
Например я упомянул алгоритм эллиптических кривых
Я это отношу как раз к математике. Однако я это использую в своей работе. Просто я беру функцию где реализована вся эта математика и просто пользуюсь результатами. И т.к. я сам не реализовываю эту математику — то считаю что я не пользуюсь математикой. Но получается что я пользуюсь только результатами математики ))) Как минимум мне надо знать о существовании таких алгоритмов и где о ни используются.
Опять же вы пишите что в соей работе используете мат анализ. Но реализуете ли вы алгоритмы этого анализа? Или просто используете готовые функции? Глупо писать свою реализацию cos() или sin(), когда можно просто вызвать функцию.
И так как в библиотеках есть практически всё, то в типичной программе нету математики. Только вызов функций. И архитектура программы.
Современные абстракции в программировании задрали процесс программирования слишком высоко. Туда где математики не осталось.
Жёсткая математика, нативная, будет только в чём то новом. Что крайне редко встречается и большинство программистов не встречают за всю свою IT карьеру.
Думаю этот вопрос не имеет смысла. Т.к. для его ответа нужно устанавливать какую то черту, до — программирование. После — математика. Опять же если эта не черта а широкая область, то в этой области это будет какая то химера — матепрограммировани или программатика ))
Шутка.
Получается что это чистая субективщина.
Но опять же изначально вопрос стоял — нужна ли математика для современного программиста. И на этот вопрос может ответить только опыт. Статистика.
Моя статистика мне показывает что я не помню когда я использовал что то из высшей математики в проектах. Я постоянно встречаю такое мнение.
Но проекты от этого не перестают быть сложными. Их сложность в абстракциях. Тысячи функций складываются в абстракции. Всё это нужно держать в голове и уметь ими манипулировать.
Это как с мозгом. Работа одного нейрона — примитивна. Не будем рассматривать биохимию нейрона как клетки. Алгоритмически нейрон примитивен. Есть куча дендритов и аксон. Суммарный сигнал на дендритах превышает уровень срабатывания нейрона, сигнал уходит в аксон.
Но миллиарды этих простейших автоматов строят такие абстракции — что весь человеческий мозговой потенциал до сих пор не может разобраться как это работает в целом.
Вопрос сколько времени нужно находится в состоянии когда мозг пухнет. Вот вы привели пример 2 дня.
У программиста такое состоянии собственно каждый рабочий день. Десятилетия подряд.
Поэтому я и писал — что неподготовленный человек на это не способен. А так же на это не способен человек которому не нравится программирование. Даже если ему предложить 1$ миллион и он будет напрягаться изо всех сил, ничего не получится.
Сужу по себе. Когда мой мозг не хочет вникать в проект как бы я не напрягался я только заработаю головную боль. Просто смотришь в код, пытаешься понять что было 5 минут назад, не помнишь и просто лезешь в какой нибудь youtube.
В такие моменты лучше просто день потерять. Выспаться хорошо. И стартовать сначала.
И кстати очень часто попадаешь в полосу, когда выжимаешь себя за день, ничего не сделал, а делать надо, следующий день такой же потому как вчера себя выжал. И так по крупицам плетёшься вперёд.
Могу сказать что продуктивность у одного и того же человека может отличатся на 1000% за одну и туже работу в зависимости от твоего состояния и нравится ли тебе проект.
Отсюда около нулевая продуктивность у войтиВайти. Т.к. в принцип им не нравится программирование. Они пришли сюда ради денег и хайпа. В противном случае они вошли бы в IT уже давно.
Разумеется это не относится к молодым парням. Среди них есть небольшой процент которым нравится IT. И они только начинают свой путь. Разумеется этот процент небольшой так же как и раньше.
Если по простому, когда приступаешь к работе, открываешь проект, то начинается работа по загрузке этого проекта в мозг. Быструю память. У программистов есть даже понятия — погрузиться в контекст или выпасть из контекста.
Пока ты не в контексте — то на проект смотришь как на египетские иероглифы. Но спустя час, пробежавшись по десяткам — сотням функций, уже примерно представляешь как работает кусок программы в котором ты находишься.
Так вот. Ты должен находится в контексте, по идеи все 8 часов работы. На практике — думаю у человека поедет крыша от такой работы. Поэтому это разбавляют всякими… переговорами. У некоторых
ничего не деланиепереговоры занимают целый рабочий день )Однако если тебе интересно — то ты можешь находится в контексте и 18 часов. Если не интересно — то вообще не сможешь погрузится. Мозг будет сопротивляться настолько что ты впадёшь в прострацию.
Отсюда кстати я смотрю с умилением на десятки тысяч "войтиВайти". Люди просто не понимают на что они подписываются. И раз до модных времён они так и не связали свою жизнь с IT, значит это не их. Их мозг просто не будет способен на многочасовой контекст.
И да у "настоящих" программистов проработавших по 20 лет, не войти в контекст — сплошь и рядом. И ты тратишь неделю на простенькую задачу при этом изнасиловав свой мозг и чувствую себя как будто ты разгружал вагоны. Это всякое легаси, индуский код, да и просто звёзды не сошлись или ты встал не стой ноги.
Поэтому программист это очень тяжёлый труд, и к старости лучше им не быть.
И написал я это к тому, что бы задать вопрос. А где у гуманитариев происходит примерно такой же экспирианс?
Но опять же — гуманитарии, это очень расплывчатое понятие. Без конкретных определений вопрос не имеет смысла. А с конкретными скорее всего потеряет актуальность как риторический.
Я про это и написал. В математику вообще всё можно запихнуть при желании и программирование целиком. Куча споров идёт только потому что никто из спорщиков не дал изначально чётких определений критериев вокруг которых ведутся споры.
И по этому сам вопрос может звучать глупо — нужна ли математика программисту. С одной стороны да, потому как всякие сложение или умножение уж точно используется.
Но где та грань где математика считается используемая по умолчанию, а где считается что программист уже не использует математику.
Программист использует формулу площади круга, но когда смотрит на доказательства теоремы Ферма ему кажется что он смотрит на египетские иероглифы. Где грань?
Я привёл эту грань с моей точки зрения как практика по программированию. Разумеется эта не истина в последней инстанции, а только мнение.
Отвечу вам и geher.
Нету формулы которая дала бы точный ответ. Вот и всё. В противовес другим математическим формулам которые давали бы точный ответ, и не важно сколько знаков после запятой.
И вообще я привёл только для примера как наверно наиболее известную нерешаемую задачу.
А то что приблизительно решается — так и тот программный способ с аппроксимацией времени тоже даёт приблизительный результат.
Я лишь показал чем с моей точки зрения отличается математика от программирования.
И да математика часто бессильна. Например задача трёх тел
Математически не решается.
Но вот программированием пожалуйста. Нарезай время как можно меньше. Рассчитывай кванты изменения положения для всех тел. Далее процедуру повторяем с новыми данными по положению. Как видим — время непосредственный участник в процессе программирования.
Конечно со временем (опять будь оно не ладно) накапливается неточность. Но на то они и программы что бы глючить ))))
Подводя итог хотел бы добавить. Программа эта про время и состояния. Это про мегабайты информации и как эта информация будет меняться с каждым тиком процессора, проходя через тысячи функций.
Математика это про числа. Могу ошибаться, не математик, но вроде в математике нету времени, т.е. там не будет зависеть результат на выходе в формуле от времени. И да я не имею ввиду когда время — это переменная в формуле. Математика это конечный автомат. Но даже в ПЛИС на высоких частотах начинается гонка сигналов и время начинает вмешиваться в казалось бы чисто математические функции.
Программа это про взаимодействие между частями.
Математика это нахождение и использование особенностей в числах. В законах нашей реальности. Пример — площадь круга.
Можно поделить круг мелкой сеткой. Посчитать площадь ячейки сетки и посчитать количество ячеек. Это по "программистки"
А можно применить формулу п*r2
Как уже много лет "в IT" и собрав так сказать статистику могу ответить следующее.
Во первых нужно сначала уточнить что подразумевается под "математикой"? Потому как сама она тоже состоит из десятков разделов. Так вот под ней я буду иметь ввиду всякие там косинусы, синусы и прочие чисто математические абстракции которые тянут за собой целый пласт всяких теорем, которые тянут за собой опять же всякие формулы. Это математические уравнения на которые если смотрит обычный человек, то он выпадает в прострацию.
А теперь про программирование. Программы состоят из функций, процедур, методов — суть одна.
Современные программы на 99,9 состоят из достаточно простых функций. Но количество их в 1 программе может достигать сотен, тысяч, миллионов. Огромное количество взаимодействующих друг с другом функций.
И вся сложность — это как раз написать (подключить из библиотеки) эти тысячи функций и соединить их воедино что бы они не глючили между собой. А это сложно. Архисложно. Когда работают параллельные потоки. Когда функции вызывают сами себя (рекурсия). Когда функции пользуются одной памятью, и начинается то утечка, то одна функция рандомно портит память другой. Баги можно искать годы, и часто они остаются навсегда. Ну и архитектура. Связь всех функций — это архитектура программы. И сделать её правильно тоже архисложная задача. Обычно архитектура допиливается годами. И никогда не достигает совершенства. Всегда есть что улучшать.
Как видите математика тут не нужна.
Однако существует ряд задач, алгоритм которой умещается в 1 функцию. Как правило это алгоритм получения минимально конкретного результата максимально эффективно (быстро и не жрало памяти). И уже этот алгоритм можно реализовать с помощью математики. Например алгоритм шифрование на эллиптических кривых. На которых работает современный интернет (Это шифроканал в TLS).
Большинство пользователей за десятки лет в IT подобное не пишут. Они просто берут готовые функции из библиотеки. Собственно специализированных алгоритмов — единицы, по сравнению с миллионами обычных программ.
Поэтому могу смело говорить что для современного IT — математика не нужна.
И да. И в том и другом случае надо иметь аналитический склад ума, это как бы по умолчанию. Потому как удержать в голове десятки тысяч взаимодействующих функций между собой — обычно нормальный человек на такое не способен. По этому IT-шники и получают тысячи долларов за свою работу.
Да там не новость была. Новость была только отправной точкой для статьи. Там баг какой то в гугле был вроде. Вот про баг и была статья. Собственно пофиг что там случилось, это было давно и "неправда". Я просто вспомнил про этот случай (так про него вообще не вспомнил), а мне за это в карму насрали.
Никогда не был копирайтером, исхожу исключительно из своего опыта. Написать грамотную техническую статью — может занять и месяц. Если надо попутно тучу кода писать, экспериментов там ставить. Собирать и анализировать сторонние исследования. Рисовать кучу картинок. Потом ещё и причёсывать её — что бы была интересная, а не тупо лог.
Так вот сколько за месяц может заработать грамотный айтишник? 3-5K$? Я конечно понимаю что сайты по типу хабра — на смех воспримут такие суммы за 1 статью. Но вот тот кто её будет писать — у него в голове эти суммы будут ещё как крутится.
И вместо положительного или хотя бы нейтрального ответа, приходит толпа хейтеров и смешивают тебя с г… И ты думаешь… А нахрена мне это вообще сдалось?
Да кто вам говорит что я супер пупер атор? Я просто описал свой случай.
Представьте, новичок пишет статью. Статья была про новость какую то. Давно было. И ему говорят — не подходишь. А потом выходит статья про эту же новость примерно такого же формата. Ну и что новичок думает?
Это сейчас я уже полностью знаю как работает эта кухня.
А ещё представте себе, за этот комментарий, за 1 комментарий! мне какой то лишне хромосомный поставил минус в карму. Я думаю за обзывательство мне ещё в карму насрут. Ну и плевать. Как говорится не очень то и хотелось тут комментировать и статьи бесплатные писать.
99% статей тут пишут ради скрытой рекламы (это моё убеждение). И да это не хабр такой стал, это мир такой стал. Всё есть товар.
Лет 7 назад, а может и больше, на хабр было не прорваться. Этакая "интеллектуальная элита". Написал тогда вполне годную статью — сказали мол нафиг не нужен. Что примечательно, потом сразу вышла почти такая же статья. Я даже написал на почту, мол украли статью. Мне даже ответили. Мы не при делах, иди лесом.
Вобщем забил я тогда на хабр на много лет.
А сейчас принимают вообще всё, любой мусор. Что же — конкуренция. Авторские статьи это сейчас товар, и по идеи за них должен хабр ещё и приплачивать авторам. Хотя есть тут "принтеры" на зарплате...
Всё вышеописанное, исключительно мои личные наблюдения.
Ужастная капча. Пару раз сталкивался (редко пользуюсь вашими продуктами) — и честно говоря потратил на её ввод непозволительно долгое время.
И да как человек когда то разрабатывающий программы по взлому капч могу сказать, что ваша капча предназначена только для отпугивания людей, с чем она прекрасно справляется, но совершенно не способна отпугнуть бота специально сделанного под вашу капчу.
Поясню свою мысль — при взломе капч главное выделить отдельные символы, у вас это делается с лёгкостью, ничего не сделано что бы максимально склеить символы. Опять же все ваши искривления — это только сломать человеку мозг, а программа анализирует алгоритмы искривления, например если есть какие то волнистые линии или другие пиксели, и делается карта градиента искривления. А потом просто восстановление изначальной картинке по карте.
Например в вашей капче, так на вскидку ищем в символе прямую линию, смотрим наклон, отличающийся от 90% и строим карту градиента. Разумеется под каждый символ можно сделать свои индивидуальные настройки. Сколько там символов? Русский алфавит + цифры? Опять же у вас волна, поэтому искривление соседних букв должно быть минимальным. отсюда можно стразу выкидывать неправильно определённые искривления промежуточных букв. Короче куча вариантов для алгоритма.
Хотя я перемудрил. Делаем максимальное мыло. Получаем тупо искривлённую линию. А дальше просто выпрямляем эту линию. Сдвигаем пиксели всей картинки. Ну и получаем чистые нормальные символы. Далее уже нарезаем.
А далее отдельные нарезанные картинки подаются на нейросеть. Ваши буквы даже простейший перцептрон будет правильно анализировать символы на лету.
Опять же фон — вы человеку хотите трудности или роботу? Ваш фон удаляется с картинки самым простейшим алгоритмом — буквы имеют чёрный цвет. Выкидываем всё что не чёрное. Это к капче из статьи. Если у вас и цветные есть (не знаю) тоже выкидываем всё что не цвет символов.
Повторяюсь — главное в капче нарезка символов и преобработка картинки (исправление искажений и другие операции из разряда фотошопа). А сама нейросеть уже не главное — справится абсолютна любая, даже самая кривая.
Upd. Ещё добавлю — чем больше всяких цветовых искажений, тем труднее для человека и проще для алгоритма. За каждый цвет можно зацепится и использовать его в алгоритме.
Например буквы одним цветом а искажения куча других — тогда просто оставляем только цвет букв, или например разноцветное месиво можно все цвета уровнять и получить почти идеальные символы. Поэтому чем меньше за что зацепится, и найти взаимосвязи тем сложнее автомату. ЧБ капчи самые идеальные. А если ещё и на эффекте шума..., но тут тоже куча вариантов. Шум можно замылить и опять же получить чёткие символы.
В мозгу есть своеобразные тактовые генераторы которые заставляют области нейронов постоянно "дёргаться", для нас это будет выглядеть как поток мыслей. Например у шизофреников или когда мы спим, или когда засыпаем, мы не можем влиять на этот механизм. В крайних случаях вообще галлюцинации появляются.
Так вот не думать ни о чём — сложно. На десятки секунд легко, но дальше уже начинаются проблемы.
Монахи долгие годы
тренируютсяобучают нейронную сетьмедитируют, что бы достичь так называемого просветления.Как я понял, такое стояние — это полная очистка короткой памяти. Собственно такой эффект можно получить и обычному человеку. Передавить себе сонную артерию и потерять сознание на несколько секунд. Происходит ресет короткой памяти и в первые секунды человек находится в
загрузке и инициализациипограничном состоянии. При этом звуки и краски, возможно другие чувства, находятся всостоянии прямой загрузке без текущих нейро фильтровв неестественно "ярком" состоянии. Причину последнего точно не объяснить с "железячной" точки зрения.Разумеется всё вышесказанное является исключительно ИМХО.
Я абсолютно не подвергаю ваши слова сомнению, возможно вы правы на 100%, просто помню недавнюю историю. Когда Маск делал свои ракеты возвращаемыми, примерно такие же полотна, с не менее точными расчётами встречались по поводу его безумной затеи. Все кому не лень крутили пальцем у виска и называли Маска мошенником.
История показала кто прав, а кто нет.
Что же, ждём очередной виток истории.