Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут?
Здравствуйте, ferz1, Вы писали:
F>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут?
Нах математику, надо кутэ, буст, линукс, гдб, свн, юнит-тесты, паттерны, питон, вот вся суть 99% цпп вакансий.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, T4r4sB, Вы писали:
TB>Здравствуйте, ferz1, Вы писали:
F>>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут?
TB>Нах математику, надо кутэ, буст, линукс, гдб, свн, юнит-тесты, паттерны, питон, вот вся суть 99% цпп вакансий.
это я уже все знаю, повторить только надо. но в мат. навыках минус. все таки по оставшемуся 1% какая ситуация?
Здравствуйте, ferz1, Вы писали:
F>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут?
Минимум хорошо бы алгебру (не ту, что в школе, а общую алгебру) знать. Остальное предметная область диктует.
Здравствуйте, ferz1, Вы писали:
F>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут?
Зависит от решаемых задач.
Но полезно знать алгебру, вероятности, графы — это по-любому.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, ferz1, Вы писали:
F>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут?
Например, вот актуальное для геймдева (из широко известного в узких кругах интервью Баткина):
Секция «матемачиха и линейное щастье»
Всё, что знаете про векторное произведение, за 3 минуты.
Как посчитать нормаль треугольника по 3 точкам.
Векторы, операции над ними, нормализация вектора.
Матрицы, операции над ними, умножение вектора на матрицу.
Единичная матрица, обратная матрица, как быстро инвертировать ортонормированную матрицу.
Базисы, не ортонормированные базисы, зачем нужны, расстояние между двумя точками в таком базисе.
Сферические координаты (зачем нужны)
Кватернионы, операции для кватернионов, зачем нужны, slerp
Сравнительные харрактеристики производительности операций над векторами, матрицами, кватернионами, конверсии из и в.
Здравствуйте, T4r4sB, Вы писали:
TB>Здравствуйте, ferz1, Вы писали:
F>>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут?
TB>Нах математику, надо кутэ, буст, линукс, гдб, свн, юнит-тесты, паттерны, питон, вот вся суть 99% цпп вакансий.
еще вопрос, зачем питон срр программисту? сам язык изучал давно, когда питон только еще набирал обороты. что изменилось?
Здравствуйте, ferz1, Вы писали:
F>еще вопрос, зачем питон срр программисту? сам язык изучал давно, когда питон только еще набирал обороты. что изменилось?
Да хз, постоянно такое вижу, типа скрипты ещё писать должен уметь.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
ned>Всё, что знаете про векторное произведение, за 3 минуты.
ned>Как посчитать нормаль треугольника по 3 точкам.
ned>Векторы, операции над ними, нормализация вектора.
ned>Матрицы, операции над ними, умножение вектора на матрицу.
ned>Единичная матрица, обратная матрица, как быстро инвертировать ортонормированную матрицу.
ned>Базисы, не ортонормированные базисы, зачем нужны, расстояние между двумя точками в таком базисе.
ned>Сферические координаты (зачем нужны)
ned>Кватернионы, операции для кватернионов, зачем нужны, slerp
ned>Сравнительные харрактеристики производительности операций над векторами, матрицами, кватернионами, конверсии из и в.
Я всё это знаю, но толку никакого мне от этого. Потому что все от меня хотят кутэ, линукс, паттерны...
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
ned>>Всё, что знаете про векторное произведение, за 3 минуты.
ned>>Как посчитать нормаль треугольника по 3 точкам.
ned>>Векторы, операции над ними, нормализация вектора.
ned>>Матрицы, операции над ними, умножение вектора на матрицу.
ned>>Единичная матрица, обратная матрица, как быстро инвертировать ортонормированную матрицу.
ned>>Базисы, не ортонормированные базисы, зачем нужны, расстояние между двумя точками в таком базисе.
ned>>Сферические координаты (зачем нужны)
ned>>Кватернионы, операции для кватернионов, зачем нужны, slerp
ned>>Сравнительные харрактеристики производительности операций над векторами, матрицами, кватернионами, конверсии из и в.
TB>Я всё это знаю, но толку никакого мне от этого. Потому что все от меня хотят кутэ, линукс, паттерны...
Почему ты думаешь, что твой случай можно обобщить? Я вот, например, длительное время (1998 — 2009) работал в двух фирмах, где все перечисленное было необходимо. Правильно сказали выше, специфика и уровень знаний определяется предметной областью.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, ferz1, Вы писали:
F>еще вопрос, зачем питон срр программисту? сам язык изучал давно, когда питон только еще набирал обороты. что изменилось?
для тестов, в основном ... ну и вспомогательные скрипты писать проще, если вдруг что попарсить надо
Здравствуйте, LaptevVV, Вы писали:
F>>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут? LVV>Зависит от решаемых задач. LVV>Но полезно знать алгебру, вероятности, графы — это по-любому.
Зачем графы? Можно всю жизнь проработать программистом и ни разу не использовать граф в явном виде. В стандартной библиотеке даже ни одного алгоритма, ни одного класса для графа нет, насколько я помню.
Здравствуйте, B0FEE664, Вы писали:
BFE>Зачем графы? Можно всю жизнь проработать программистом и ни разу не использовать граф в явном виде.
+1
ни графы ни вероятности на практике прогеру не нужны. только если соответствуют прикладной области.
обратная сторона — если все же нужно их использовать из-за прикладной области, то изучение займет львинную долю времени и не факт, что овладеешь. поэтому некоторые держат основы в голове, некая инвестиция на будущее
а вот теория сложности (да-да, О-большое) и знание классических алгоритмов и контейнеров вполне пригождается
Здравствуйте, B0FEE664, Вы писали:
LVV>>Но полезно знать алгебру, вероятности, графы — это по-любому. BFE>Зачем графы? Можно всю жизнь проработать программистом и ни разу не использовать граф в явном виде.
Так математика как раз и делает неявные структуры явными, что упрощает коммуникацию и аккумулирование знаний.
Естественно можно использовать что-то неявно, не подозревая об опыте и знаниях накопленных столетиями. Но зачем заново пытаться переоткрыть то, что давно изучено? NIH?
BFE>В стандартной библиотеке даже ни одного алгоритма, ни одного класса для графа нет, насколько я помню.
Это вообще ни разу не аргумент и не оправдание. В стандартной библиотеке очень много чего нет, но это означает что нужно знать только то что в неё включено, очевидно же
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, LaptevVV, Вы писали:
F>>>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут? LVV>>Зависит от решаемых задач. LVV>>Но полезно знать алгебру, вероятности, графы — это по-любому.
BFE>Зачем графы? Можно всю жизнь проработать программистом и ни разу не использовать граф в явном виде. В стандартной библиотеке даже ни одного алгоритма, ни одного класса для графа нет, насколько я помню.
тут вопрос скорее не в том, что конкретно нужно программисту с++, а что нужно любому программисту. и как "математику только за то нужно изучать, что она ум приводит в порядок", точно так же можно сказать про знания для программиста — теория графов позволяет научить мыслить нужным образом, чтобы легко представить, например, частичную упорядоченность множеств (а без этого алгоритмами, требующими отношения порядка) пользоваться сложно. да и, в конце-концов, понятие зацикливания через косвенные связи тоже легче укладывается в голове, когда уже знаком с транзитивным отношением и видел картинки циклов в графах.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
LVV>>>Но полезно знать алгебру, вероятности, графы — это по-любому. BFE>>Зачем графы? Можно всю жизнь проработать программистом и ни разу не использовать граф в явном виде. EP>Так математика как раз и делает неявные структуры явными,
Но это ничего не даёт на практике.
EP>что упрощает коммуникацию и аккумулирование знаний.
Да, разумеется, только вот я не помню, что бы кто-то говорил нечто вроде:
"у нас граф наследования классов сложный..."
или
"образование цикла внутри графа построенного на смарт указателях привёло к утечке памяти".
Единственное, что приходит на ум, это граф переходов конечного автомата. Но и этот граф, опять же, присутствует в неявном виде.
EP>Естественно можно использовать что-то неявно, не подозревая об опыте и знаниях накопленных столетиями. Но зачем заново пытаться переоткрыть то, что давно изучено? NIH?
Я не о том, чтобы что-то переоткрывать, а о том, что графы вообще не используются в подавляющем большинстве задач.
BFE>>В стандартной библиотеке даже ни одного алгоритма, ни одного класса для графа нет, насколько я помню. EP>Это вообще ни разу не аргумент и не оправдание. В стандартной библиотеке очень много чего нет, но это означает что нужно знать только то что в неё включено, очевидно же
Как и любое теоретическое знание, знание графов пользу принести может. Однако, на практике знание графов нужно только если этого требует задача. Количество задач в которых используются графы существенно меньше, чем, скажем, задач, где используется массив. Я за 27 лет программирования ни разу не использовал граф на практике в том смысле, что рассуждал бы о структуре, как о графе. Ну не сталкивался я с задачами обхода графа или поиска пути. И я не думаю, что я в этом какой-то уникальный.
Здравствуйте, ferz1, Вы писали:
F>>>Допустим прихожу я устраиваться на с++ разработчика, какой должен быть минимальный уровень знания математики? каких разделов и где та линия после которой меня примут? TB>>Нах математику, надо кутэ, буст, линукс, гдб, свн, юнит-тесты, паттерны, питон, вот вся суть 99% цпп вакансий. F>это я уже все знаю, повторить только надо. но в мат. навыках минус. все таки по оставшемуся 1% какая ситуация?
Редко бывает так, что программиста берут по принципу: был бы программист, а задача найдётся. Обычно наоборот: есть круг задач решаемых данной конторой. Если для этого круга задач требуется знание какого-то раздела математики, то ищут, соответственно, программиста который этот раздел знает. Но есть огромная масса задач, которая не требует какого-то особенного знания математики: GUI, протоколы обмена данными, базы данных, управление роботами и вообще всевозможные задачи связанные с управлением девайсами, казуальные игры...
Здравствуйте, B0FEE664, Вы писали:
LVV>>>>Но полезно знать алгебру, вероятности, графы — это по-любому. BFE>>>Зачем графы? Можно всю жизнь проработать программистом и ни разу не использовать граф в явном виде. EP>>Так математика как раз и делает неявные структуры явными, BFE>Но это ничего не даёт на практике.
Именно что даёт.
EP>>что упрощает коммуникацию и аккумулирование знаний. BFE>Да, разумеется, только вот я не помню, что бы кто-то говорил нечто вроде: BFE>... BFE>"образование цикла внутри графа построенного на смарт указателях привёло к утечке памяти".
TB>Во-вторых, когда у меня был хитрый граф, который постоянно мутировал, постоянно новые узлы создавались, я делал так: все узлы графа
...
К>- либо исходно бардачный дизайн, приводящий к спагетти из объектов — надо один раз переосмыслить, чтобы граф связей стал топологически отсортированным
..
TB>Можно делать обход и по ходу действия. На каждый запрос по добавлению узла, например, делать две операции по обходу графа / удалению ненужных. Это если очень нужен гарантированный отклик.
Или например "объекты иммутабельные, поэтому циклов в графе ссылок нет".
Более того, GC работают по принципу обхода живых узлов в графе.
BFE>Единственное, что приходит на ум, это граф переходов конечного автомата.
А как же например вездесущие деревья?
Или например односвязные списки и генератор псевдослучайных чисел?
Да даже сложность кода меряют через характеристику графа https://en.wikipedia.org/wiki/Cyclomatic_complexity
Например сортировка часто используется? А там те самые графы
.
BFE>Но и этот граф, опять же, присутствует в неявном виде.
Да не важно в каком виде он выражен в коде. Это не лишает его математических свойств, применимости алгоритмов и их характеристик. И чем раньше ты распознаешь этот неявный граф, тем раньше расширишь понимание задачи и получишь дополнительный инструментарий.
EP>>Естественно можно использовать что-то неявно, не подозревая об опыте и знаниях накопленных столетиями. Но зачем заново пытаться переоткрыть то, что давно изучено? NIH? BFE>Я не о том, чтобы что-то переоткрывать, а о том, что графы вообще не используются в подавляющем большинстве задач.
Да например те же вездесущие социальные сети, там графы в полный рост.
BFE>>>В стандартной библиотеке даже ни одного алгоритма, ни одного класса для графа нет, насколько я помню. EP>>Это вообще ни разу не аргумент и не оправдание. В стандартной библиотеке очень много чего нет, но это означает что нужно знать только то что в неё включено, очевидно же BFE>Как и любое теоретическое знание, знание графов пользу принести может. Однако, на практике знание графов нужно только если этого требует задача.
Так не зная графов, не умея их распознавать, не получится и понять требует ли их задача или нет
Или тебе приходят разжёванные задачи вида "вот тут примени вектор, вот тут граф, вот тот обход в ширину"
BFE>Количество задач в которых используются графы существенно меньше, чем, скажем, задач, где используется массив.
И что с того что реже чем массив? Массив например используется реже чем целые числа
Да даже если допустить что графы встречаются хотя бы в 2% задач — этого уже с головой достаточно для того чтобы их изучить хотя бы на базовом уровне, так как рано или поздно такая задача обязательно попадётся.
BFE>Я за 27 лет программирования ни разу не использовал граф на практике в том смысле, что рассуждал бы о структуре, как о графе. Ну не сталкивался я с задачами обхода графа или поиска пути. И я не думаю, что я в этом какой-то уникальный.
Правильнее будет не пытаться экстраполировать свой личный опыт на всех, а залудить опрос.