AI и грабли
@oestick
Все, с выходом Fable и 5.6 sol вы больше не должны понимать, что происходит у вас в коде. Не до всех еще дошло, но вы больше не software engineer, вы loop engineer
Ну камон, ребят. Все же понимают, что публичные лица компаний, который продают лопаты всегда будут преувеличивать ценность этих лопат и формировать хайп, который через какое-то время действительно пушанет технологии до уровня, который они продвигали. Типичный fake it till your make it – так все технологии развиваются и всегда развивались. Но мы то с вами не обязаны собой жертвовать ради этого, ну
Почему я считаю, что сейчас это все еще не работает и хорошие инженеры должны понимать что происходит под капотом систем, которые они строят (даже если они строят их печатая/наговаривая английский/русский текст)?
Постараюсь порассуждать "из первых принципов":
Дело в том, что это всегда так и было – хороший инженер всегда понимал систему как минимум на один уровень абстракции ниже того, на котором её писал.
Хороший Python разработчик знает про GIL и 3.13, PyMalloc, сборщик мусора, ссылочную природу объектов, и что многие библиотеки написаны на других языках со своими ограничениями и возможностями. И для него код на пайтоне на самом деле раскрывается гораздо глубже чем он выглядит на первый взгляд – тот самый tacit context
Хороший C++ разработчик скорее всего знает не только про разные виды памяти, устройство умных указателей и виртуальные таблицы, но и в курсе про уровни хардварного кэша, особенности архитекутры процессора и хаки, которые использует компилятор для компиляции под эти архитекутры. И может даже знать, в какие конкретно ассемблерные инструкции раскроется его код. Понимает как треды устроены на уровне ОС, какие механизмы их переключения на уровне ядра, и как писать lock-free код
↑ Этого всего нет напрямую в синтаксисе языка. Это особенности поведения систем на гораздо более низких уровнях. И проблема в том, что если инженер их не знает, то он даже не знает чего он не знает. А значит, не узнает и о наличии проблем на этих уровнях.
В итоге прод ложится под растущей нагрузкой, баги не находятся неделями и затыкаются костылями, из-за которых прод снова ложится, но уже в следующем квартале
———
Короче, мало топить за loop enginering. Нужно понимать что в результате этих циклов получится
Так же как когда вы раньше писали цикл на C++, вы понимали, как данные будет лежать в кэше (и в каком), будут ли лишние аллокации в куче, и раскроется ли ваша числодробилка в SIMD-инструкции
В общем, это фундаментальное свойство любого профессионала – видеть систему глубже чем она описана
Подгорело, @ai_grably
↑ Я думал, что это типичный твиттер шитпостинга, но реально начал видеть вокруг себя серьезных людей, кто так считает. Мол, раз у Бориса в антропике получается, то и мы так должны делать
Ну камон, ребят. Все же понимают, что публичные лица компаний, который продают лопаты всегда будут преувеличивать ценность этих лопат и формировать хайп, который через какое-то время действительно пушанет технологии до уровня, который они продвигали. Типичный fake it till your make it – так все технологии развиваются и всегда развивались. Но мы то с вами не обязаны собой жертвовать ради этого, ну
Почему я считаю, что сейчас это все еще не работает и хорошие инженеры должны понимать что происходит под капотом систем, которые они строят (даже если они строят их печатая/наговаривая английский/русский текст)?
Постараюсь порассуждать "из первых принципов":
Дело в том, что это всегда так и было – хороший инженер всегда понимал систему как минимум на один уровень абстракции ниже того, на котором её писал.
Хороший Python разработчик знает про GIL и 3.13, PyMalloc, сборщик мусора, ссылочную природу объектов, и что многие библиотеки написаны на других языках со своими ограничениями и возможностями. И для него код на пайтоне на самом деле раскрывается гораздо глубже чем он выглядит на первый взгляд – тот самый tacit context
Хороший C++ разработчик скорее всего знает не только про разные виды памяти, устройство умных указателей и виртуальные таблицы, но и в курсе про уровни хардварного кэша, особенности архитекутры процессора и хаки, которые использует компилятор для компиляции под эти архитекутры. И может даже знать, в какие конкретно ассемблерные инструкции раскроется его код. Понимает как треды устроены на уровне ОС, какие механизмы их переключения на уровне ядра, и как писать lock-free код
↑ Этого всего нет напрямую в синтаксисе языка. Это особенности поведения систем на гораздо более низких уровнях. И проблема в том, что если инженер их не знает, то он даже не знает чего он не знает. А значит, не узнает и о наличии проблем на этих уровнях.
В итоге прод ложится под растущей нагрузкой, баги не находятся неделями и затыкаются костылями, из-за которых прод снова ложится, но уже в следующем квартале
———
Короче, мало топить за loop enginering. Нужно понимать что в результате этих циклов получится
Так же как когда вы раньше писали цикл на C++, вы понимали, как данные будет лежать в кэше (и в каком), будут ли лишние аллокации в куче, и раскроется ли ваша числодробилка в SIMD-инструкции
В общем, это фундаментальное свойство любого профессионала – видеть систему глубже чем она описана
Подгорело, @ai_grably
❤ 68
👍 48
🔥 12
🤡 4
🌚 4
🤣 2
31 123 11.8K
Обсуждение 31
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram