Айтиншники, подскажите по секрету, кто из вас применяет(реально) знания о том как работают компиляторы? Кто считает что без этой информации современный девелопер - не специалист? И чем конкретно занимаетесь в ИТ
Например в T-SQL, зная какие конструкции во что разворачиваются могут помочь при разработке скрипта. Например, оптимизатор запрос если видеть в LIKE отсутствие шаблона, то интерпритирует его, как равно. Знакая в каком порядке выполняется запрос можно подшаманить где-нибудь и т п. Без этих вещей можно работать, но можно столкнуться с проблемами производительности.
Такие штуки как оптимизированные запросы часто от А до Я описаны в бестпрактисах. Но конечно комфортнее работать когда понимаешь что происходит до самого низа.
В настоящее время знание структур данных, алгоритмов и компиляторов необходимо только для решения определенного, довольно узкого, круга задач. Большинство разработчиков, действительно, ничего из этого не знают, либо знают поверхностно, что совсем не мешает им зарабатывать деньгу. Однако, не стоит забывать что хороший разработчик должен уметь подстраиваться и адаптироваться под текущие задачи и проекты, и если она понимает, что для решения конкретной задачи необходимо умение писать алгоритмы, то она этому научится.
А некоторые крупные компании, вообще, принимают в штат математиков - специалистов по алгоритмам - если в этом есть необходимость.
А некоторые крупные компании, вообще, принимают в штат математиков - специалистов по алгоритмам - если в этом есть необходимость.
Я эксперт диванный, но так-то большинство погроммистов кровавого ынтырпрайза даже "алгоритмы" и "структуры данных" почти не юзают. *Условно* На одну строчку собственно какой-то вычислительной логики, в которой этому может быть место, приходится 100500 строчек врапперов-хуяперов, дикого оопа, интерфейсов и интеграции с остальной системой.
Дроч на компиляторы нужен, если ты по-хардкору занимаешься оптимизацией. Стажировался в нижегородском филиале интела, там есть штат этих оптимизаторов, дикие люди. Одна тня говорила, что выпросила даже исходники интеловского компилятора, чтобы понимать, что за хуйню и когда он генерирует.
Дроч на компиляторы нужен, если ты по-хардкору занимаешься оптимизацией. Стажировался в нижегородском филиале интела, там есть штат этих оптимизаторов, дикие люди. Одна тня говорила, что выпросила даже исходники интеловского компилятора, чтобы понимать, что за хуйню и когда он генерирует.
мой друг
занимается разработкой этих самых компиляторов
в подробности я не вникал
занимается разработкой этих самых компиляторов
в подробности я не вникал
Зависит от вида девелопера. Если это что-то низкоуровневое, что такие знания помогают избежать ошибок и ускорить программу раз в 10 в отдельных случаях. Был один проект на Си связанный с криптографией. Там была функция , написанная с векторизированными инструкциями (конкретно avx2 инструкции). У меня она отрабатывала за 170000 машинных циклов. Один человек ее переписал с учетом внутреннего представления типов в компиляторе (и какой-то черной магии) и она стала работать за 17000 машинных циклов. В 10 , мать вашу, раз быстрее. Так же, бывает полезным знать как компилятор проводит выравнивание данных в, оптимизации и т.д.
Я в этом не шарю, сам сейлзфорс девелопер, с низкоуровневыми штуками имел дело только в универе - знаменитые ассемблерные чемоданчики)) но мне почему-то кажется что сейчас даже для разработки прошывок и прочих аппаратных софтин используют интерпретаторы высокоуровневых языков и тд
Конечно если ты интеловский спец и отвечаешь за патчи безопасности на первом уровне ядра то тут без всей этой романтики с компиляторами не обойтись
Конечно если ты интеловский спец и отвечаешь за патчи безопасности на первом уровне ядра то тут без всей этой романтики с компиляторами не обойтись
не используется.
В прошивках очень много чистого Си кода со вставками asm в критических вещах. C++ только-только местами начинает приходить, но он и не всегда актуален, так то.
В прошивках очень много чистого Си кода со вставками asm в критических вещах. C++ только-только местами начинает приходить, но он и не всегда актуален, так то.
Статья 2000 года - с тех пор мало что изменилось =)
Если не брать в расчет реверс, то использую чтобы говнокодить.
Знаешь нюансы работы компилятора (для меня это компилятор байткода для vm) можешь захреначить "низкоуревневую” вставку, которая нарушит стандарты(аля шаринг памяти), поставит под угрозу работоспособность всей vm (зато если ничего не полетит, время выполнения значительно сократится). Но ты же специалист, значит за эту связку из говна и палок отвечаешь.
Конечно можно сделать тоже самое и стандартным средствами, но затратив больше жопочасов.
P.S.В продакшене я бы такое не использовал, но моя задача лишь похерить то, что вот рискует вот туда попадет.
Знаешь нюансы работы компилятора (для меня это компилятор байткода для vm) можешь захреначить "низкоуревневую” вставку, которая нарушит стандарты(аля шаринг памяти), поставит под угрозу работоспособность всей vm (зато если ничего не полетит, время выполнения значительно сократится). Но ты же специалист, значит за эту связку из говна и палок отвечаешь.
Конечно можно сделать тоже самое и стандартным средствами, но затратив больше жопочасов.
P.S.В продакшене я бы такое не использовал, но моя задача лишь похерить то, что вот рискует вот туда попадет.
Чтобы написать коммент, необходимо залогиниться