Pull to refresh
0

Специалист по теории типов USB-кабелей

1,5
Rating
30
Subscribers
Send message

Подготовка есть, нормальные new/malloc, часть памяти в специальных BRAM блоках “выделяется/организуется”, с помощью статических темплайтов с проверкой в compile time.

Ну вот, значит, и вам всё это нужно, и вы можете тоже выиграть от тех же кастомных аллокаторов — да хоть даже на стенде залогать и проверить статистику по распределениям, или что-нибудь такое :]

Если все пишет один или два супер профи то подход оправдан

Когда как. Впрочем, лучшие команды, что я видел — там в core infra код писало действительно 2-3 человека (из которых один был спецом по кернелу и сетевым карточкам, например, а остальные полтора были спецами по плюсам).

Чем больше команда, тем почему-то хуже код и результат в целом.

правда я думал там (HFT) уже все на уровне железа, FPGA и даже hard-copy ASIC.

Можно совмещать: маленькую линеаризованную модельку гонять на FPGA, а на большом x86 рядом крутить обновление коэффициентов этой линеаризации из большой нелинейной сложной модели.

Но, впрочем, у меня тут искажённая выборка, так как я в HFT-контексте позиционирую себя специалистом по плюсам и по DSL'ям, и FPGA-only задачи (да и команды в целом) проходят мимо меня.

Ну, у нас на прикладной математике вообще Пеано не вспоминали.

Но логика второго порядка чуть сложнее для анализа, поэтому работу только в FOL я вполне могу понять, наверное.

Так мир программистов на C++ он очень разный, чуть ли не полярный.

Ну да. И тут мы возвращаемся к исходному тезису:

Процентов 80 людей, которые пишут на С++ не понимают, что такое указатели.

Там сидят люди и во всем этом варятся и никакой необходимости в новых компиляторах у них нет, а уж тем более и в новых стандартах.

То есть, это не профессиональное развитие, это профессиональная смерть.

Все равно целиком проект переписать никто не даст, а исправлять по частям смысла мало.

Исправлять — возможно, да. Но писать новый код с новыми вещами — почему нет?

В том же десктопе и локальном энтерпрайзе сам Нишанов велел разобраться в корутинах, например, и наваять свою библиотечку, чтобы код был компактнее, проще и локальнее. Я так сделал в своём легаси пет-проекте — кода кратно меньше, обработка ошибок кратно лучше (потому что там, где раньше нужно было через границу асинхронных вызовов протаскивать контекст, компилятор это делает сам), о коде размышлять кратно проще, дополнительные фичи напрашиваются сами — можно просто написать

Throttle backoff;
while (!success)
{
  co_await backoff;
  co_await makeRequest();
  …
}

добавив две строки для адекватной обработки недоступности сервиса, вместо того, чтобы делать из этого классический асинхронный ужас в стиле C++03 (или даже C++17).

Добавили в C++20 (или 23? забыл уже, но какая разница) более продвинутые non-type template parameters, так что теперь строками можно нормально оперировать в компилтайме — переписал свой ORM-фреймворк на это, чтобы все запросы в компилтайме генерировались, в итоге бинари стали кратно меньше, и работать даже стало чутка быстрее.

Добавили в C++23 (или 26? забыл уже, но какая разница) structured bindings can introduce a pack — вроде мелочь, а шаблонное метапрограммирование стало ещё проще, из своего ORM-фреймворка (куда уж тырпрайзнее и десктопнее) можно удалить много кода и ускорить время сборки, всякая хрень вроде boost.pfr, макросни или magic_get больше не нужна.

А часть бывших коллег вообще на эту ерунду еще и дома время не тратили.

Их свободный выбор. Но некоторые люди на хабре периодически пишут что-то, если сжать мысль, в духе «я на эту ерунду тратить время не хочу, у меня хобби/семья/надо регулярно стирать занавески, так какого хрена работодатель её спрашивает, и тратящие на неё время люди оказываются впереди?»

Ссылка даёт гарантию, что объект существует.

Нет, не даёт.

Ссылка даёт гарантию, что объект существовал когда-то, и какой-то промежуток времени она на него указывала, не более.

А в современном си++ указатели вообще не нужны в пользовательском коде.

Угу, если современным считать только C++26 (std::optional<T&> появилось только там) и заодно выкинуть весь легаси-стек, начиная от каких-нибудь дров для сетевых карт, например, дающих указатели в кишки памяти сетевухи, и заканчивая какими-нибудь там Qt. Но зачем тогда брать плюсы, если не для взаимодействия с легаси-системами? Непонятно.

Вот те же аксиомы Пеано еще попробуй забудь, если узнал.

В какой из логик? :]

В рабочем цикле память не выделяется

А кроме рабочих циклов у вас есть там подготовка при запуске какая-нибудь?

с использованиeм custom allocators. Точнее не выделяется вообще.

Память не обязана выделяться из хипа и/или с недетерминированными гарантиями на скорость и успех.

Я время от времени возвращаюсь к говноедству за большие деньги HFT и прочему подобному, и там требования чутка посерьёзнее (потому что недостаточно успеть отреагировать за N микро- или наносекунд, надо к тому же отреагировать быстрее, чем все остальные игроки, которые тоже имеют все стимулы реагировать быстрее всех), да и ответственность тоже какая-то есть (думаю, иногда даже побольше: продолбать пенсии нескольких десятков-сотен тысяч людей, чей пенсионный фонд вложился в ваш хедж-фонд, может быть больнее и социально печальнее, чем невыведенный на орбиту спутник). И там используются и кастомные аллокаторы (пусть и со стека), и std::launder этот вот, и std::start_lifetime_as, и за алиасингом следят, и вообще много чего интересного происходит. Ну и свежие стандарты, конечно, да.

О Pointer Provenance как по мне любой недавний джун имеет представление, когда по ручкам настучали за reinterpret_cast везде где хочется и нельзя.

Я знаю очень мало мест, где стучат по рукам за reinterpret_cast (или за union-style cast, или за прочие подобные финты) именно с мотивацией про provenance, а не про «ну тут static_cast был бы понятнее». По какому-то странному совпадению туда почему-то очень тяжко найти C++-программистов, и зарплаты там предлагают выше рынка раза в три.

но есть тонкость, что его в C++17 ввели и есть прекрасный шанс ни в одном проекте его не увидеть

C++17 свершился 9 лет назад, конкретно std::launder был предложен почти ровно 10 лет назад.

Хз, как это написать аккуратно, поэтому напишу неаккуратно: не знаю, как надо относиться к работе и к своему профессиональному развитию, чтобы вещи, которые случились десять лет назад в твоей сфере, списывались под предлогом «да этому всего 10 лет, шансы этим ни разу не воспользоваться [ни на работе, ни дома] весьма высоки».

Почему врёт, если человек может прочитать код на этом языке и написать пару строк он им владеет.

Как бы вы назвали более глубокие уровни знания языка, когда человек может не только написать пару строк, но и знаком с крайними случаями, тонкостями и неочевидными подводными камнями?

Здесь же человека указавшего аду пытают по адовой многопоточке а он может просто писал на ней какие то простые вещи тут как с bash и git все пишут что знают но у большинства знания как с английским на уровне А1 но для работы этого хватает.

Разница между этим и bash и git в том, что bash и git — это вспомогательные инструменты, а язык, по которому собеседуют — вроде основной.

Думаю в aerospace code если такое увижу - будет интересная беседа с “применителем сего” :)

В aerospace code пишут код без указателей или собирают код без оптимизаций?

Всё ещё будете гонять его после этого на собесе по языку?

После этого — да. Даже если у него там написано «C++», то, может, у него там C++11 какой-нибудь полуторадесятилетней давности, а нам тут нужно, чтобы человек комфортно себя чувствовал с идиомами C++26. Если код программы закрыт, то совершенно непонятно, что именно и как именно там написано.

На самом деле даже после гитхаба гонять — не самая плохая идея. Я как-то собеседовал одного человека, который в резюме написал, что он автор альтернативной prelude для хаскеля… хотя лан, мы тут про железо. Представьте себе, что он написал, что он автор альтернативной STL для C++, и у него даже на гитхабе есть проект, где он (и кто-то ещё) коммитил эту реализацию. Только вот на интервью спрашиваешь его про, в рамках аналогии, remove / erase idiom, а он не знает. Просишь написать простенький итератор для обхода массива в порядке «первый-последний-второй-предпоследний-...» — а он не может.

Что он там писал? Непонятно.

Человек мог решать другие задачи. Например, человек мог вполне успешно 90% своего времени по факту тратить на выяснение/уточнение задач, но вот собеседующему нужен не выяснятель, а программист на данном языке.

Собсна, в комментариях под литкод-интервью-постами обычно это и выясняется: люди сами пишут «я в промышленных масштабах занимался уточнением задач и склейкой разных систем, а вы у меня тут деревья какие-то вертать просите».

Судя по количеству сегфолтов (и то в лучшем случае), use-after-free, и так далее, работает не всё и не очень исправно.

Ну тут смотря что такое «понимать».

Я вот уверен, что >80% людей, считающих, что они понимают указатели, не понимают provenance, например.

Можно ли сказать, что ты понимаешь указатели, если ты как-то зыбковато знаешь, зачем именно нужен std::launder, например?

Но математик, забывший аксиомы - это не математик.

Забывший аксиомы своей области.

Как думаете, сколько прикладных математиков (которых вы скорее всего обнаружите на собеседовании) помнят аксиоматику ZFC или аксиоматику классического исчисления высказываний? (кстати, какую из?)

Сколько чистых математиков, ковыряющих аксиоматику ZFC или классического исчисления высказываний, вспомнят аксиомы планиметрии? (лично я хз вообще, что это такое — аксиомы Евклида? что-то ещё? я из аксиом Евклида помню только пятую, к слову, и то по очевидным причинам) Сколько из них вспомнит аксиомы, ну, не знаю, сигма-алгебры?

Сколько работающих специалистов по машинному обучению, пишущих продакшен-код с этими всеми вот эмель-модельками, вспомнят аксиомы сигма-алгебры? Там она замкнута относительно конечного или счётно бесконечного пересечения? А не путаете с аксиомами топологических пространств? Точно?

А это всё от зубов отлетает, чтобы дискаунт на стресс в условиях интервью?

Когда понимаешь сущность желания жить, то вовлекаться уже нет былого желания и азарта.

FTFY

Ну и фильмы, сериалы, книги тоже не смотрю, возможно что я в целом странный.

Странно видеть книги в этом ряду.

Последние года три стараюсь читать побольше, полёт нормальный, книг 40 в год выходит в среднем. Иногда, конечно, попадается редкостная дрянь, которая почему-то котируется в обществе в целом (ну там, Парфит какой-нибудь, скажем, или, если о программировании говорить, Степанов этот со своим EoP), но что поделать, видимо, такие у меня критерии оценки. Иногда попадаются жемчужины, меняющие мировоззрение и открывающие целые области (Парвини познакомил меня с теорией элит и сделал меня злым реалистом). Иногда попадаются жемчужины, дающие словарь и общую картину для имевшихся до них интуиций («Dominance and affection» оформила в виде слов и общего фреймворка, почему владение животными всегда ощущалось этически неправильным и омерзительным).

Впрочем, фильмы смотреть тяжко, потому что они либо предсказуемые, либо в них нет внутренней логики (а чаще — и то, и другое). Сериалы чё-т на фоне нулевых тоже какие-то унылый слоп с повесточкой.

Таких людей целый опенсорс

Юзабельный опенсорс в основном пишется на обычной работе обычными программистами за обычные деньги, чуть реже — на серьёзные донаты (как в случае sqlite, например), впрочем, тоже состоящие из обычных денег. Опенсорс, пишущийся в свободное время по фану, обычно неюзабельный (в случае вещей чуть сложнее busybox).

Работа подразумевает ответственность. Волонтёрский опенсорс подразумевает отсутствие ответственности, иначе средний человек очень быстро выгорает и кончается.

Особенно странно видеть эту рекомендацию «не спорить с другими» в посте, начинающемся с претензий к эхо-камерам.

Споры — естественная и единственная прививка от эхо-камер.

Ну да, а если еврея записать армянином, например, то все эти проблемы пропадают.

И у других знакомых с недетектируемым явно этносом, но с родственниками там проблем не было ни у кого, а вот у этак трёх четвертей евреев — были, независимо от родни. Интересный КГБ!

Предполагая, что вы не иронизируете над советской версией расизма:

У евреев были родственник за границей

Это только у евреев? У других национальностей такого быть не могло?

которые с точки зрения КГБ могли оказывать давление на носителя "сикретных государственных тайн".

Какие секретные государственные тайны у 16-летнего пацана (или когда там в Союзе паспорт выдавали)?

Так что не евреев притесняли, а людей с загранично-родственными связями.

Прям на вступительных экзаменах экзаменатор такой увидел фамилию на полях/обложке тетрадки, и такой сразу подключился к ноосфере, узнал, что у абитуриента родственники заграницей, и решил пофачить посильнее, да? И в апелляционной комиссии тоже все такие сидят с подключением к ноосфере и сразу знают, какие у какого абитура родственники где.

Сформулируйте проблему в виде замкнутого тезиса, и обсудим.

Information

Rating
1,764-th
Registered
Activity