Ну то есть, если человек знает все свойства матриц и операций над ними, но не может сходу вывести перемножение
Повторю вопрос из недочитанного вами комментария:
Что означает «знать операции»? Зазубрить алгоритмы их выполнения? Уровень даже ниже grokking algorithms. Понимать, откуда они берутся? Сорри, для этого надо понимать, почему они умножаются как умножаются.
Ну аналогично вашим рассуждениям, я могу утверждать что вы не пользуетесь русским языком, потому что не разбираетесь в лингвистике.
Это сново несовсем то высказывание что я имел в виду. Но и это в полне будит правдой, если руским языком я буду пользоватся не согласно правилам, но достаточна длятого, что бы вы магли меня панять.
Свою коммуникативную функцию два предложения выше выполняют? Выполняют. Можете вы сказать, встретивши их в отрыве от контекста, что их автор знает русский язык? Ну хз, я бы не сказал.
И да, лингвистика изучает язык, а сам язык — это набор коммуникативных паттернов и рецептов. Я специально выбрал «лингвистику» в прошлом комментарии, потому что аналогично вашим рассужениям я знаю лингвистику, потому что могу применять предмет изучения лингвистики для достижения своих целей.
Вы по прежнему не объяснили почему перемножение базисных векторов даёт преобразование, почему это в принципе работает?
Мне вам весь вывод расписать, что ли? В комментариях латех-форматирование до сих пор не завезли, для начала, а без этого это будет больно и уродливо для всех участников дискуссии.
Ну и для начало надо в принципе объяснить как работает перемножение.
Так, чтобы соответствующий морфизм из линейных операторов в матрицы был функториальным.
Если вы не понимаете как работает перемножение то как вы можете перемножать матрицы?
Значит, не отличаете. Я же вам прямо написал, что разница в «уметь доказывать свойства» и «доказывать свойства каждый раз при их использовании», а вы продолжаете вести себя так, будто это одно и то же.
Ну и ответьте всё же на вопрос, чем это знание мне поможет?
Я не считаю, что оно поможет. Но я не считаю, что программисту нужно знание математики и не считаю, что знание рецептов является необходимым или достаточным условием знания математики.
Собсна, именно поэтому я и задал вопрос о причинах такой формулировки умножения, как иллюстрацию моего тезиса, что знание математики не является необходимым.
Могу вывести, но считаю что это ненужно. Переубедите меня, зачем это нужно?
Мой поинт был в том, что это не аксиома, а выводимое утверждение, и что отсутствие необходимости выводить это утверждение на практике не делает его менее выводимым или более аксиоматичным.
Спасибо, что доказали мой поинт.
Ой как мы запели, нуда нуда. А по моему имеет непосредственное отношение, как вы можете использовать перемножение если не понимаете что за этим лежит.
А вы не отличаете «при каждом умножении вспоминать, как оно определяется, и почему оно коммутативно/ассоциативно» и «понимать, как вводится умножение и как доказываются его свойства»?
Ваш вопрос — первое. Мой исходный тезис — второе. Соответственно, вы либо не понимаете этой разницы (и это очень печально), либо намеренно подменяете тезис, либо просто не привыкли задумываться о таких тонкостях (к чему математика, кстати, могла бы привить привычку — если бы вы её знали).
Вы видимо сводите к абсолюту, и ровняете фразу "Нужна математика" к "Нужны знания математики во всех сферах её применения "
Попробуйте всё же дочитать комментарий, на который отвечаете, до конца.
Если для вас прикладное знание математики в определённой области и её применение
Потому что у зазубрившего перемножение матриц человека нет знания математики.
у нас видимо отличается представление о том что заложено в фразе «знание математики необходимо программисту»
Эх, а если бы вы дочитали до конца…
Для меня это использование мат аппарата
А я знаю лингвистику, если успешно пользуюсь русским языком?
А долюбится можно до чего угодно, вот вы дали например определение матрицы, но на вопрос почему именно строка на столбец перемножается не ответили.
Потому что если расписать представление базисных векторов, то строка на столбец и получится (ну или столбец на строку, опять же, если вы всё консистентно транспонировали).
Почему всегда так получается, что как поскребёшь сторонника «знание математики необходимо программисту», то там оказывается, что и не знание, и не математики, и не то чтобы необходимо? И, более того, этот сторонник сам начинает тебе доказывать, что это всё не нужно?
Я вам ответил почему, и да это понимание не нужно, также как не нужно понимание почему числа перемножаются как перемножаются.
Тогда непонятно, откуда взялся ваш ответ «примерно все».
Я считаю что в фразе «программисту нужна математика» имеется в виду владение мат аппаратом, в ключе матриц, это знать свойства матриц и операции над ними, а не историю создания и почему они умножаются как умножаются.
Что означает «знать операции»? Зазубрить алгоритмы их выполнения? Уровень даже ниже grokking algorithms. Понимать, откуда они берутся? Сорри, для этого надо понимать, почему они умножаются как умножаются.
Причём тут история, вообще непонятно. Я это знаю не из истории математики, а из проработанной «linear algebra done right».
Отлично, а теперь вопрос, чем это заученное (или скорее всего скопированное откуда-то ) определение поможет мне в работе?
Почему заученное или, тем более, скопированное?
Я не занимаюсь матричным анализом, я использую линейную алгебру.
Вы используете матричный анализ. Линейная алгебра — это как раз про линейные операторы, в ней можно работать по большому счёту вообще без матриц.
Очевидно, что если она применяется постоянно, то конечно она берётся за базу, зачем выводит её каждый раз как встречается
Я спросил не про базу, а про аксиому. Дано ли нам богом свыше минус-бэ-плюс-минус-корень-из-бэ-квадрат-минус-четыре-ацэ-на-два-а (интонационные запятые досыпьте за меня)? И я не спросил, выводите ли вы это каждый раз. Я спросил, можете ли вы это вывести, или будете говорить, что это всё не нужно?
По вашему я так понимаю, что если человек не знает почему кватернионы например работают так как работают, но при этом успешно их использует, то он не использует математику.
По-моему в этом случае человек не знает и не понимает математику, да.
Вообще во всех этих дискуссиях проблема в том, что высказывается тезис «программисту нужна математика», и он потом как дышло поворачивается куда надо по желанию. Нужна математика в смысле «пользуюсь некоторыми рецептами» (да, очевидно нужна) или «получил вышку хотя бы в прикладной математике и могу вывести эти рецепты» (нафиг не нужно, как я изначально говорил и как вы, похоже, согласны)? Математика — это околошкольное «законы де Моргана булевой алгебры и формула Байеса» (даже это не везде нужно, но добирается легко по необходимости), или околоаспирантское «алгебра Хейтинга произвольных топосов и разложение Хана вероятностной меры» (не нужно практически нигде)?
И вот, собственно, практика этих дискуссий снова показывает, что обычно люди имеют в виду понимание, откуда берутся рецепты, и достаточно высокий уровень самой математики (а кто не знает — тот кодер-макака и лох), а как начинаешь копать вглубь, так… короче, см. мой первый абзац.
Так вы не ответили на вопрос, вы когда перемножаете два числа, каждый раз думаете как это работает?
Данный вопрос не имеет отношения к моему исходному вопросу и является попыткой увести разговор в сторону ложной аналогией.
Чтобы понять, почему умножение матриц происходит именно так, надо его вывести, например, исходя из того, что матрицы - это линейные операторы: в матрице просто записаны результаты действия оператора на базисные векторы, по столбцу на вектор
Это ровно то, о чём я писал выше.
Что касается вопросов знания или понимания: надо знать достаточно математики чтобы в ней ориентироватся, чтобы понять, а какую ее часть вообще надо в вашей задаче принимать. Потому что программирование - это написание алгоритмов, и этим занимается computer science, подраздел математики.
Угу, а бухгалтерия — это работа с числами. Надо бухгалтеру знать арифметику Пеано и чем она хуже (или лучше) арифметики Пресбургера?
Под ковёр из «достаточно» у вас тут очень много заметено. На практике достаточно уровня немногим выше хорошей школы, и книги уровня grokking algorithms достаточно для базы в 99% задач в 99% работ (и за невыполнение этого 1% с вами ничего не случится — я куда больше условной девопсни/техдоков/прочего делегирую другим и нормально живу). Более того, я знаю людей, которые и эту книгу не осилили, и которые на работе успешнее, чем я, зарабатывают больше, чем я глубоко математизированным программированием, и в целом счастливее, чем я.
Вызубрить ее всю без понимания невозможно, поэтому единственный оставшийся вариант - это математику все-таки понимать.
Опять же, практика (и, в частности, этот тред) показывает, что можно именно вызубрить, и рассуждать в терминах линейных операторов для 3D-графики не нужно. Рассуждать в терминах линейных операторов оказывается не нужно даже для успешной сдачи экзамена по «линалу» на отл в топовом российском (и не только) вузе.
Лично знаю компанию, успешно занимающуюся реализацией теории абстрактной интерпретации.
Я работал в такой. LLM там применимо максимум как «сгенери парсер опций командной строки для нашего тестового бинаря». Правда, сделать то же на optparse-applicative занимает примерно столько же времени.
Согласен с предыдущим оратором, что FAANG — это так себе ориентир.
Дайте примеры нормальных компаний
А смысл? Они либо очень мелкие (и лично я их еле находил — какой-нибудь полустартап, пилящий язык смарт-контрактов с формальной верификацией их семантики), либо не на слуху (что вам скажет «worldquant», например?)
Математически матрицы умножаются строка на столбец, суммируется и получается один элемент матрицы результата.
Почему? Почему не строка на строку?
Но для больших матриц (примерно от 2000х2000) вторая и третья функции работают значительно быстрее - из-за кеша.
Не стоит вскрывать эту тему, потому что для больших матриц это всё очень плохие алгоритмы, и можно выиграть сильно много перфа, если бить на блоки, например. И, возвращаясь к соседней ветви комментариев (откуда вы ушли) — это одна из наглядных иллюстраций, почему не стоит переизобретать библиотеки, а лучше пользоваться готовыми (mkl там, например). Просто с точки зрения реализации (умножения матриц, вычисления CDF биномиального распределения, и так далее) наивные алгоритмы, следующие из стандартного курса матричного анализа/теорвера/етц, дико неэффективные.
Возможно, в соседней вселенной или соседнем кабинете, на другую позицию того же уровня интервьюер остался доволен беседой по архитектурным вопросам, ему понравилась классная рубашка кандидата, они с кандидатом сошлись во мнении, кем лучше нагибать в доте2 или каким цветом красить фигурки из вархаммера. Не очевидно, может стоит инвестировать время в фигурки?
Есть основания считать, что гитхаб радует большее количество интервьюверов, эйчаров и прочих.
Но вообще да, у меня есть знакомая, у которой хардскиллы так себе, но которая берёт адово прокачанными софтскиллами — от одежды до умения за минуту выяснить, что по жизни нравится интервьюверу (кофе, прогулки с собаками, дельтапланеризм, и так далее), и развести его на разговор на минут 10-15 на эту тему, после чего он уже очень положительно к ней настроен, и техническое интервью оказывается халявным.
Вывод: софтскиллы дают плюс (ломающие новости!)
Не попытка умалить ваше достижение.. ну вот, допустим, иногда смотрю собесы на ютубе и вот иногда попадаются собесы из серии дали +N денег. Вот скопипастил первое попавшееся - судя по всему, чел хотел 80к, вилка до 100к, оффер с кварталкой - 170к
Я не знаю, что такое кварталка и как это переложить на американские реалии.
Вот в плюсах реальная вилка на ваш уровень какая? Неужели 250 на сеньора?
Это была функциональщина и пиление блокчейна (и там ещё какой-то бонус их шиткоинами обещали, но я не помню точных цифр). И да, работа 4 дня вместо 5 тут поинтереснее 28%-превышения вилки.
А, и да, это ж США, поэтому это тысячи долларов в год, а не тысячи рублей в месяц.
А на плюсах от области зависит. От линкедина иногда приходит какая-то унылость с оперднями — там 150-200. В трейдинге — 300-500, если нет онколла, и до миллиона, если онколл и ночные дежурства есть.
Давайте посмотрим на разговор ещё раз. Я изначально спросил про понимание, почему матрицы умножаются так, как умножаются (и изначально выделил слово «почему» курсивом, чтобы было видно, что это именно «почему», а не «как»). Вы ответили, что примерно все понимают, почему. Я переформулировал вопрос, сделав ещё больший акцент на «почему». Вы сказали, что это понимание не нужно (хотя ещё недавно у вас понимали примерно всё) и это я путаю там что-то.
Как такой разговор и ваша смена ответа на противоположный называется?
Эм... я думаю вы путаете использование математики, и создание на её основе чего-то нового.
Я думаю, что использование математики и есть создание чего-то нового на её основе (вне учебных задач), даже если это очередной 3D-движок. Если же вы говорите о научной работе в рамках математики и о создании чего-то нового внутри математики, то это совсем другой вопрос — мы же тут говорим о программистах.
Более того, я думаю, что знание [определённой области] математики (а что ещё имеется в виду под «программисту нужна математика»?) требует понимания, как мы это любим, на уровень вниз, откуда берутся те или иные вещи в вашей ветви математики. Если вы занимаетесь матричным анализом и претендуете на его знание, то неплохо бы понимать, что, действительно, матрица — это численное выражение линейного оператора, и чтобы операция композиции матриц (которую мы называем умножением) выражала композицию линейных преобразований, то матрицы нужно умножать строка на столбец (или столбец на строку, если у вас все матрицы и их «физический смысл» консистентно транспонированные — это изоморфно, разница между этими двумя вариантами — вопрос соглашения и традиции). Тонкости линейных операторов и общую теорию R-модулей, наверное, знать уже не обязательно (но всё равно полезно).
Более того, я думаю, что для использования математики знать её не обязательно — ровно о чём и был мой изначальный тезис, и вы его в очередной раз иллюстрируете (как и всегда происходит в таких разговорах о необходимости математики для программиста). Ну, просто уровень глубины понимания примерно такой же, как у человека, который прочитал в книжке «3D-графика для людей без математического образования», что матрицы перемножаются вот так вот, и точка.
Ну и да это всё принимают за аксиому потому что это база о которой не задумываешься потому-что применяешь её постоянно.
А если вы часто решаете квадратные уравнения, то формулу дискриминанта вы тоже принимаете за аксиому, или таки можете её вывести?
Может вы подскажите зачем мне задумываться при разработке почему матрицы перемножаются именно так?
Так зачем программисту математика? ;)
Вы же вряд ли задумываетесь почему числа перемножаются именно так как они перемножаются. Например почему -3 * -3 == 9 а не -9?
Я не говорю, что это аксиома, и я могу это вывести. При этом я не считаю, что я дофига понимаю абстрактную алгебру (ту её часть, где всякие там группы-кольца и прочие минусы-умножения), а в теоркате и теории типов минусов нет, есть только группа Гротендика.
Окей, почему матрицы умножаются как строка на столбец? Почему не строка на строку, например?
В моей практике не то что программисты 3D-графики, а те же выпускники Физтеха (успешно сдавшие линал на первом курсе) брали это как аксиому и определение умножения матриц.
Для этого и проводится собеседование, что бы поговорить за проекты и технологии и выяснить уровень владения.
Сколько раундов интервью надо, чтобы вдумчиво проверить все упомянутые ключевые слова, а не 2-3 языка, которые человек выставляет «главными», накидав кроме них ещё с десяток баззвордов? Не забывайте, что у вас ещё у вас там какой-нибудь систем дизайн тим фит калчар фит и прочая занимающая время и раунды хрень.
Я работал в очень большом бигтехе с установленными процессами интервью, и эти самые процессы позволяют врать очень конкретно. У вас перед/во время интервью спрашивают про ваш предпочитаемый язык для кодинга, и пресловутую алгоритмическую задачку вы будете решать на нём (а в 40-50 минут раунда вы ничего другого из хард скиллов и не уложите). Вы вполне можете указать в резюме «Advanced C++ Python C# Java Ruby Haskell Prolog Malbolge», но сказать про предпочитаемый питон и все интервью пройти на питоне, и в тех бигтех-компаниях, где я работал, это никак не снимет вам баллы (а шансы пройти прескрининг у эйчаров этот калейдоскоп терминов повышает).
Это же верно по отношению к гиту
Я специально написал, что в гите это сделать сложнее. Не «невозможно», не «стоит не меньше миллиона долларов или 10000 часов усилий», а сложнее.
Как вы гитом докажете, что аккаунт ваш?
Ник совпадает с емейлом, с которого я пишу рекрутёру.
Но вообще могу пушнуть в какую-нибудь из реп коммит с указанным вами сообщением, или, чтобы не быть клоуном у нанимасов, послать вам емейл за час до того, как пушну что-нибудь в эту репу, с содержимым будущего коммита.
Это, конечно, тоже не стопроцентное доказательство (может, я не владелец аккаунта, а владелец аккаунта мне помогает), но стопроцентных доказательств нет даже в зум-интервью — помогать пройти такие интервью в онлайн-режиме я тоже помогал лично. При этом мало кто говорит, что зум-интервью не нужны и не имеют смысла.
Что мне мешает взять ваше ФИО и фото из открытых источников, создать акк с ними (ну, разве что отсутствие таковых в общем доступе) и выдавать себя за вас?
Вы можете попытаться своровать чужие репы (git clone и потом git push в вашу репу), но там останутся другие коммиттеры, и аккуратно переписать историю, чтобы она стала вашей — не самое тривиальное занятие. Да и нужно как-то будет создавать иллюзию активности в этих репах — вы вряд ли будете делать это один раз. Более того, наличие минимальной активности других людей на протяжении некоторого времени (пулл-реквесты, форки, issues) будет очень весомым плюсом, так как его кратно тяжелее симулировать при стремящейся к нулю маргинальной полезности.
Короче, это ИМХО самый простой способ соврать гитом, и всё равно он существенно сложнее напихивания баззвордов в резюме.
Кроме того, что-то мне подсказывает,что люди, которым требуется воровать код, едва ли осилят переписать ту же историю (или даже задуматься об этом) сами, поэтому, как только это примет достаточно массовое явление, чтобы false positive такого критерия был существенно отличен от нуля, то вы об этой практике и так узнаете.
Что мешает купить украденный акк с какими-то неплохими проектами и переименовать акк под себя?
Покажите магазин таких акков.
Как вы гитом докажете, что данные проекты выполнены вами? Там есть история коммитов, которая говорит лишь о том, что с такой то учетной записи производились изменения, но не более. Может другой человек под учетной записью совершал действия?
Если репа достаточно протяжённая во времени (или реп много), то ему это зачем? Ладно, я-то интервью помогать проходил по большой дружбе, и это — примерно четыре часа моей жизни. Адекватная репа потребует больше, и такое я не готов даже по очень большой дружбе.
Короче, экономика не бьётся.
Пока что мы не дошли до ситуации вроде "в качестве подтверждения наличия доступа к данному гит аккаунту, создайте в нём новый проект, в который залейте своё селфи, на котором вы держите бумажку с указанным секретным словом"
Вариант с коммитом я предложил до того, как дочитал досюда, честно!
Я не подменял тезис, я изначально сказал что
> 1-5% людей, у которых есть проекты с ненулевым количеством звезд - такие могут показать, но наличие ссылки на гит это что-то из разряда "экстра"
Окей, но если это прямо ключевой момент, то тогда я не понимаю, о чём спор. Эйчар жалуется на 1-3 человек из 300-500, вы говорите об 1-5%. Достаточно близкие проценты, что не так?
А, совсем забыл насчёт плюсов — в обоих фаангах, куда я собеседовался, мне из-за гитхаба скипнули phone screening и сразу позвали на интервью. Рекрутёры прямо так и сказали.
Не понятно, почему вы решили, что что-то из этого пошло в плюс?
В одном случае, с производными — потому, что интервьювер был доволен разговором, и потому что по итогу я получил оффер сильно выше официальной вилки компании (220 максимум по вакансии, мне предложили 280 + возможность работать четыре дня в неделю из пяти, а пятый день заниматься собственными проектами).
В другом случае, с полуэзотерическим физзбаззом — потому, что эта репа вместе с этим языком прямо были озвучены в разговоре с эйчарами после технических специалистов как что-то, что произвело впечатление.
В ряде других случаев — потому что я прямо слышал «your github is impressive» на разных стадиях разговора.
Миллионы человек ежегодно как-то устраиваются на работу без этого
Я из этак 20 собесов за свою жизнь не получил оффер дважды. Один из этих двух разов — единственный случай, когда негде было указать гитхаб (другой раз — когда компания указывала среди своих ценностей «агрессивную бескомпромиссную честность», и я решил это проверить делом). Моя личная статистика показывает пользу.
Всё это быстро перечисляется в резюме, и прочитавший его ровно так же может просто задать вопрос по технологиям и проектам в резюме.
В резюме можно вообще много что перечислять, включая вещи, с которыми человек на самом деле не работал вообще, и довольно легко соврать так, что на интервью это не выяснится (например, если вы перечисляете 10 языков, из которых на самом деле использовали 2-3). Врать подобным образом в гитхабе сложнее.
А вот если ваш гит будет смотреть какой-нибудь техспец, который в запаре, времени у него смотреть мало, то, честно говоря, он не будет вникать.
При этом я ничего не потеряю.
А если человек не в запаре, то он со мной конструктивно поговорит. И у меня есть такой опыт: например, моя маленькая, на несколько сот строк, либа для вычисления производных в компилтайме на шаблонах C++ была хорошей затравкой для разговора об аналитическом дифференцировании, ad, дуальных числах, и так далее, а также об отличиях параметрического полиморфизма в C++ и в нормальных языках, и о рейнольдсовском theorems for free. Судя по интервьюверу в конце разговора и по полученному офферу, оно пошло в плюс.
Глянет одним глазком, увидит проекты уровня джуна, использование технологий с какими-нибудь банальными ошибками, которые допускают только те, кто только знакомится с технологией, и скажет - какой-то он не скиловый, давай следующего.
Вы подменили тезис с «не надо давать гитхаб» на «не надо давать гитхаб с джун-проектами с банальными ошибками, где не указано явно, что они учебные». Со вторым я не спорю.
Проект (неиронично) с написанием физзбазза на довольно редком языке, кстати, у меня тоже есть, и в другом случае тоже пошло в плюс.
Ведь ему никто не объяснил, что это проекты учебные.
Что, и в README.md не написали? А почему?
Вот это да, всего лишь почти каждый первый это делает.
Что там показывать - пробы пера в новой технологии?
Да, почему нет? Это показывает, с какими технологиями вы имели дело хотя бы в формате пробы пера (особенно если они достаточно разношерстные и/или отличаются от основных в вашем резюме), и показывает ваш общий интерес к программированию.
Проекты ради проектов?
Да, почему нет? Это показывает, в принципе, всё то же самое, только куда глубже и по существу: можно даже обсуждать с интервьювером детали проектов.
Цифры на что, на утверждение, что при найме люди озабочены поднятием дайверсити? Какие конкретно тут вам нужны цифры, если люди про это прямо говорят, и если соответствующий перекос подтверждается во всех прочих областях, по которым в итоге выходит хоть какая-то статистика?
Это — наиболее вероятная гипотеза. Тут цифры нужны для демонстрации обратного. Они у вас есть?
Повторю вопрос из недочитанного вами комментария:
Что означает «знать операции»? Зазубрить алгоритмы их выполнения? Уровень даже ниже grokking algorithms. Понимать, откуда они берутся? Сорри, для этого надо понимать, почему они умножаются как умножаются.
Это сново несовсем то высказывание что я имел в виду. Но и это в полне будит правдой, если руским языком я буду пользоватся не согласно правилам, но достаточна длятого, что бы вы магли меня панять.
Свою коммуникативную функцию два предложения выше выполняют? Выполняют. Можете вы сказать, встретивши их в отрыве от контекста, что их автор знает русский язык? Ну хз, я бы не сказал.
И да, лингвистика изучает язык, а сам язык — это набор коммуникативных паттернов и рецептов. Я специально выбрал «лингвистику» в прошлом комментарии, потому что аналогично вашим рассужениям я знаю лингвистику, потому что могу применять предмет изучения лингвистики для достижения своих целей.
Мне вам весь вывод расписать, что ли? В комментариях латех-форматирование до сих пор не завезли, для начала, а без этого это будет больно и уродливо для всех участников дискуссии.
Так, чтобы соответствующий морфизм из линейных операторов в матрицы был функториальным.
Как обезьянка.
Значит, не отличаете. Я же вам прямо написал, что разница в «уметь доказывать свойства» и «доказывать свойства каждый раз при их использовании», а вы продолжаете вести себя так, будто это одно и то же.
По тем пунктам, которые вы добавили в правке:
Я не считаю, что оно поможет. Но я не считаю, что программисту нужно знание математики и не считаю, что знание рецептов является необходимым или достаточным условием знания математики.
Собсна, именно поэтому я и задал вопрос о причинах такой формулировки умножения, как иллюстрацию моего тезиса, что знание математики не является необходимым.
Мой поинт был в том, что это не аксиома, а выводимое утверждение, и что отсутствие необходимости выводить это утверждение на практике не делает его менее выводимым или более аксиоматичным.
Спасибо, что доказали мой поинт.
А вы не отличаете «при каждом умножении вспоминать, как оно определяется, и почему оно коммутативно/ассоциативно» и «понимать, как вводится умножение и как доказываются его свойства»?
Ваш вопрос — первое. Мой исходный тезис — второе. Соответственно, вы либо не понимаете этой разницы (и это очень печально), либо намеренно подменяете тезис, либо просто не привыкли задумываться о таких тонкостях (к чему математика, кстати, могла бы привить привычку — если бы вы её знали).
Попробуйте всё же дочитать комментарий, на который отвечаете, до конца.
Потому что у зазубрившего перемножение матриц человека нет знания математики.
Эх, а если бы вы дочитали до конца…
А я знаю лингвистику, если успешно пользуюсь русским языком?
Потому что если расписать представление базисных векторов, то строка на столбец и получится (ну или столбец на строку, опять же, если вы всё консистентно транспонировали).
Почему всегда так получается, что как поскребёшь сторонника «знание математики необходимо программисту», то там оказывается, что и не знание, и не математики, и не то чтобы необходимо? И, более того, этот сторонник сам начинает тебе доказывать, что это всё не нужно?
Тогда непонятно, откуда взялся ваш ответ «примерно все».
Что означает «знать операции»? Зазубрить алгоритмы их выполнения? Уровень даже ниже grokking algorithms. Понимать, откуда они берутся? Сорри, для этого надо понимать, почему они умножаются как умножаются.
Причём тут история, вообще непонятно. Я это знаю не из истории математики, а из проработанной «linear algebra done right».
Почему заученное или, тем более, скопированное?
Вы используете матричный анализ. Линейная алгебра — это как раз про линейные операторы, в ней можно работать по большому счёту вообще без матриц.
Я спросил не про базу, а про аксиому. Дано ли нам богом свыше минус-бэ-плюс-минус-корень-из-бэ-квадрат-минус-четыре-ацэ-на-два-а (интонационные запятые досыпьте за меня)? И я не спросил, выводите ли вы это каждый раз. Я спросил, можете ли вы это вывести, или будете говорить, что это всё не нужно?
По-моему в этом случае человек не знает и не понимает математику, да.
Вообще во всех этих дискуссиях проблема в том, что высказывается тезис «программисту нужна математика», и он потом как дышло поворачивается куда надо по желанию. Нужна математика в смысле «пользуюсь некоторыми рецептами» (да, очевидно нужна) или «получил вышку хотя бы в прикладной математике и могу вывести эти рецепты» (нафиг не нужно, как я изначально говорил и как вы, похоже, согласны)? Математика — это околошкольное «законы де Моргана булевой алгебры и формула Байеса» (даже это не везде нужно, но добирается легко по необходимости), или околоаспирантское «алгебра Хейтинга произвольных топосов и разложение Хана вероятностной меры» (не нужно практически нигде)?
И вот, собственно, практика этих дискуссий снова показывает, что обычно люди имеют в виду понимание, откуда берутся рецепты, и достаточно высокий уровень самой математики (а кто не знает — тот кодер-макака и лох), а как начинаешь копать вглубь, так… короче, см. мой первый абзац.
Данный вопрос не имеет отношения к моему исходному вопросу и является попыткой увести разговор в сторону ложной аналогией.
Это ровно то, о чём я писал выше.
Угу, а бухгалтерия — это работа с числами. Надо бухгалтеру знать арифметику Пеано и чем она хуже (или лучше) арифметики Пресбургера?
Под ковёр из «достаточно» у вас тут очень много заметено. На практике достаточно уровня немногим выше хорошей школы, и книги уровня grokking algorithms достаточно для базы в 99% задач в 99% работ (и за невыполнение этого 1% с вами ничего не случится — я куда больше условной девопсни/техдоков/прочего делегирую другим и нормально живу). Более того, я знаю людей, которые и эту книгу не осилили, и которые на работе успешнее, чем я, зарабатывают больше, чем я глубоко математизированным программированием, и в целом счастливее, чем я.
Опять же, практика (и, в частности, этот тред) показывает, что можно именно вызубрить, и рассуждать в терминах линейных операторов для 3D-графики не нужно. Рассуждать в терминах линейных операторов оказывается не нужно даже для успешной сдачи экзамена по «линалу» на отл в топовом российском (и не только) вузе.
Я работал в такой. LLM там применимо максимум как «сгенери парсер опций командной строки для нашего тестового бинаря». Правда, сделать то же на optparse-applicative занимает примерно столько же времени.
Согласен с предыдущим оратором, что FAANG — это так себе ориентир.
А смысл? Они либо очень мелкие (и лично я их еле находил — какой-нибудь полустартап, пилящий язык смарт-контрактов с формальной верификацией их семантики), либо не на слуху (что вам скажет «worldquant», например?)
Почему? Почему не строка на строку?
Не стоит вскрывать эту тему, потому что для больших матриц это всё очень плохие алгоритмы, и можно выиграть сильно много перфа, если бить на блоки, например. И, возвращаясь к соседней ветви комментариев (откуда вы ушли) — это одна из наглядных иллюстраций, почему не стоит переизобретать библиотеки, а лучше пользоваться готовыми (mkl там, например). Просто с точки зрения реализации (умножения матриц, вычисления CDF биномиального распределения, и так далее) наивные алгоритмы, следующие из стандартного курса матричного анализа/теорвера/етц, дико неэффективные.
Но, опять же, обсуждаем мы не это.
Привет!
Есть основания считать, что гитхаб радует большее количество интервьюверов, эйчаров и прочих.
Но вообще да, у меня есть знакомая, у которой хардскиллы так себе, но которая берёт адово прокачанными софтскиллами — от одежды до умения за минуту выяснить, что по жизни нравится интервьюверу (кофе, прогулки с собаками, дельтапланеризм, и так далее), и развести его на разговор на минут 10-15 на эту тему, после чего он уже очень положительно к ней настроен, и техническое интервью оказывается халявным.
Вывод: софтскиллы дают плюс (ломающие новости!)
Я не знаю, что такое кварталка и как это переложить на американские реалии.
Это была функциональщина и пиление блокчейна (и там ещё какой-то бонус их шиткоинами обещали, но я не помню точных цифр). И да, работа 4 дня вместо 5 тут поинтереснее 28%-превышения вилки.
А, и да, это ж США, поэтому это тысячи долларов в год, а не тысячи рублей в месяц.
А на плюсах от области зависит. От линкедина иногда приходит какая-то унылость с оперднями — там 150-200. В трейдинге — 300-500, если нет онколла, и до миллиона, если онколл и ночные дежурства есть.
Давайте посмотрим на разговор ещё раз. Я изначально спросил про понимание, почему матрицы умножаются так, как умножаются (и изначально выделил слово «почему» курсивом, чтобы было видно, что это именно «почему», а не «как»). Вы ответили, что примерно все понимают, почему. Я переформулировал вопрос, сделав ещё больший акцент на «почему». Вы сказали, что это понимание не нужно (хотя ещё недавно у вас понимали примерно всё) и это я путаю там что-то.
Как такой разговор и ваша смена ответа на противоположный называется?
Я думаю, что использование математики и есть создание чего-то нового на её основе (вне учебных задач), даже если это очередной 3D-движок. Если же вы говорите о научной работе в рамках математики и о создании чего-то нового внутри математики, то это совсем другой вопрос — мы же тут говорим о программистах.
Более того, я думаю, что знание [определённой области] математики (а что ещё имеется в виду под «программисту нужна математика»?) требует понимания, как мы это любим, на уровень вниз, откуда берутся те или иные вещи в вашей ветви математики. Если вы занимаетесь матричным анализом и претендуете на его знание, то неплохо бы понимать, что, действительно, матрица — это численное выражение линейного оператора, и чтобы операция композиции матриц (которую мы называем умножением) выражала композицию линейных преобразований, то матрицы нужно умножать строка на столбец (или столбец на строку, если у вас все матрицы и их «физический смысл» консистентно транспонированные — это изоморфно, разница между этими двумя вариантами — вопрос соглашения и традиции). Тонкости линейных операторов и общую теорию R-модулей, наверное, знать уже не обязательно (но всё равно полезно).
Более того, я думаю, что для использования математики знать её не обязательно — ровно о чём и был мой изначальный тезис, и вы его в очередной раз иллюстрируете (как и всегда происходит в таких разговорах о необходимости математики для программиста). Ну, просто уровень глубины понимания примерно такой же, как у человека, который прочитал в книжке «3D-графика для людей без математического образования», что матрицы перемножаются вот так вот, и точка.
А если вы часто решаете квадратные уравнения, то формулу дискриминанта вы тоже принимаете за аксиому, или таки можете её вывести?
Так зачем программисту математика? ;)
Я не говорю, что это аксиома, и я могу это вывести. При этом я не считаю, что я дофига понимаю абстрактную алгебру (ту её часть, где всякие там группы-кольца и прочие минусы-умножения), а в теоркате и теории типов минусов нет, есть только группа Гротендика.
Вы либо вопрос не поняли, либо уже вам можно ответить «нет, строка на строку нельзя».
Окей, почему матрицы умножаются как строка на столбец? Почему не строка на строку, например?
В моей практике не то что программисты 3D-графики, а те же выпускники Физтеха (успешно сдавшие линал на первом курсе) брали это как аксиому и определение умножения матриц.
Сколько раундов интервью надо, чтобы вдумчиво проверить все упомянутые ключевые слова, а не 2-3 языка, которые человек выставляет «главными», накидав кроме них ещё с десяток баззвордов? Не забывайте, что у вас ещё у вас там какой-нибудь систем дизайн тим фит калчар фит и прочая занимающая время и раунды хрень.
Я работал в очень большом бигтехе с установленными процессами интервью, и эти самые процессы позволяют врать очень конкретно. У вас перед/во время интервью спрашивают про ваш предпочитаемый язык для кодинга, и пресловутую алгоритмическую задачку вы будете решать на нём (а в 40-50 минут раунда вы ничего другого из хард скиллов и не уложите). Вы вполне можете указать в резюме «Advanced C++ Python C# Java Ruby Haskell Prolog Malbolge», но сказать про предпочитаемый питон и все интервью пройти на питоне, и в тех бигтех-компаниях, где я работал, это никак не снимет вам баллы (а шансы пройти прескрининг у эйчаров этот калейдоскоп терминов повышает).
Я специально написал, что в гите это сделать сложнее. Не «невозможно», не «стоит не меньше миллиона долларов или 10000 часов усилий», а сложнее.
Ник совпадает с емейлом, с которого я пишу рекрутёру.
Но вообще могу пушнуть в какую-нибудь из реп коммит с указанным вами сообщением, или, чтобы не быть клоуном у нанимасов, послать вам емейл за час до того, как пушну что-нибудь в эту репу, с содержимым будущего коммита.
Это, конечно, тоже не стопроцентное доказательство (может, я не владелец аккаунта, а владелец аккаунта мне помогает), но стопроцентных доказательств нет даже в зум-интервью — помогать пройти такие интервью в онлайн-режиме я тоже помогал лично. При этом мало кто говорит, что зум-интервью не нужны и не имеют смысла.
Вы можете попытаться своровать чужие репы (git clone и потом git push в вашу репу), но там останутся другие коммиттеры, и аккуратно переписать историю, чтобы она стала вашей — не самое тривиальное занятие. Да и нужно как-то будет создавать иллюзию активности в этих репах — вы вряд ли будете делать это один раз. Более того, наличие минимальной активности других людей на протяжении некоторого времени (пулл-реквесты, форки, issues) будет очень весомым плюсом, так как его кратно тяжелее симулировать при стремящейся к нулю маргинальной полезности.
Короче, это ИМХО самый простой способ соврать гитом, и всё равно он существенно сложнее напихивания баззвордов в резюме.
Кроме того, что-то мне подсказывает,что люди, которым требуется воровать код, едва ли осилят переписать ту же историю (или даже задуматься об этом) сами, поэтому, как только это примет достаточно массовое явление, чтобы false positive такого критерия был существенно отличен от нуля, то вы об этой практике и так узнаете.
Покажите магазин таких акков.
Если репа достаточно протяжённая во времени (или реп много), то ему это зачем? Ладно, я-то интервью помогать проходил по большой дружбе, и это — примерно четыре часа моей жизни. Адекватная репа потребует больше, и такое я не готов даже по очень большой дружбе.
Короче, экономика не бьётся.
Вариант с коммитом я предложил до того, как дочитал досюда, честно!
Окей, но если это прямо ключевой момент, то тогда я не понимаю, о чём спор. Эйчар жалуется на 1-3 человек из 300-500, вы говорите об 1-5%. Достаточно близкие проценты, что не так?
А, совсем забыл насчёт плюсов — в обоих фаангах, куда я собеседовался, мне из-за гитхаба скипнули phone screening и сразу позвали на интервью. Рекрутёры прямо так и сказали.
В одном случае, с производными — потому, что интервьювер был доволен разговором, и потому что по итогу я получил оффер сильно выше официальной вилки компании (220 максимум по вакансии, мне предложили 280 + возможность работать четыре дня в неделю из пяти, а пятый день заниматься собственными проектами).
В другом случае, с полуэзотерическим физзбаззом — потому, что эта репа вместе с этим языком прямо были озвучены в разговоре с эйчарами после технических специалистов как что-то, что произвело впечатление.
В ряде других случаев — потому что я прямо слышал «your github is impressive» на разных стадиях разговора.
Я из этак 20 собесов за свою жизнь не получил оффер дважды. Один из этих двух разов — единственный случай, когда негде было указать гитхаб (другой раз — когда компания указывала среди своих ценностей «агрессивную бескомпромиссную честность», и я решил это проверить делом). Моя личная статистика показывает пользу.
В резюме можно вообще много что перечислять, включая вещи, с которыми человек на самом деле не работал вообще, и довольно легко соврать так, что на интервью это не выяснится (например, если вы перечисляете 10 языков, из которых на самом деле использовали 2-3). Врать подобным образом в гитхабе сложнее.
При этом я ничего не потеряю.
А если человек не в запаре, то он со мной конструктивно поговорит. И у меня есть такой опыт: например, моя маленькая, на несколько сот строк, либа для вычисления производных в компилтайме на шаблонах C++ была хорошей затравкой для разговора об аналитическом дифференцировании, ad, дуальных числах, и так далее, а также об отличиях параметрического полиморфизма в C++ и в нормальных языках, и о рейнольдсовском theorems for free. Судя по интервьюверу в конце разговора и по полученному офферу, оно пошло в плюс.
Вы подменили тезис с «не надо давать гитхаб» на «не надо давать гитхаб с джун-проектами с банальными ошибками, где не указано явно, что они учебные». Со вторым я не спорю.
Проект (неиронично) с написанием физзбазза на довольно редком языке, кстати, у меня тоже есть, и в другом случае тоже пошло в плюс.
Что, и в
README.mdне написали? А почему?Ох если бы.
Да, почему нет? Это показывает, с какими технологиями вы имели дело хотя бы в формате пробы пера (особенно если они достаточно разношерстные и/или отличаются от основных в вашем резюме), и показывает ваш общий интерес к программированию.
Да, почему нет? Это показывает, в принципе, всё то же самое, только куда глубже и по существу: можно даже обсуждать с интервьювером детали проектов.
Цифры на что, на утверждение, что при найме люди озабочены поднятием дайверсити? Какие конкретно тут вам нужны цифры, если люди про это прямо говорят, и если соответствующий перекос подтверждается во всех прочих областях, по которым в итоге выходит хоть какая-то статистика?
Это — наиболее вероятная гипотеза. Тут цифры нужны для демонстрации обратного. Они у вас есть?