Обновить
60
1.4

Пользователь

Отправить сообщение

Автор сокрушается про UB, но не задумывается, каким образом осуществляется взаимодействие с C/C++ в других языках и не владеет спецификой системного программирования на C/C++.

Автор работает в Google над BoringSSL (местным форком OpenSSL для использования у них же в Chrome/Chromium и т.п.). Т.е. он действительно занимается разработкой прикладного софта, а не компиляторов.

При портировании Rust на конкретную платформу, само собой, это всё нужно учитывать

У него задача не портировать Rust на конкретную платформу, а задизайнить API библиотеки так, чтобы при взаимодействии с кодом на Rust не терять в эффективности, и не вызывать когнитивный диссонанс.

Parallel Computing это взгляд со стороны теории как на вычислительную проблему.

Parallel Programming - со стороны возможностей, предоставляемых Execution Model для вашего языка или фреймворка и конкретным Runtime.

Разница между ними как между правилами дорожного движения и инструкцией по управлению автомобилем.

Distributed Computing - вычислениями в абстрактных распределенных средах (distributed systems), где несколько компьютеров соединены сетью.

В исследовании фактически то же самое: в мелких fixed-price задачах время получалось даже дешевле, чем в fixed-time.

Это значит, что фрилансер, решая дешёвые задачи, должен больше (дольше) пахать за те же деньги. Даже без относительно накладных расходов на администрирование проекта.

С ростом вознаграждения количество времени, которые люди готовы вам отдать, наоборот снижается. Получается, что такие задачи фрилансеру будут выгоднее.

Раньше в школьной математике не давали логику. Поэтому информатику у нас реально мало кто понимал. Мне случайно попалась книжка, где счисление предикатов объясняли на пальцах и это было как откровение.

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

Python не позволяет нам управлять тем, на каком конкретно ядре или процессоре будет исполнен код

Возможно вы имели какой-то конкретный случай, а так есть os.sched_setaffinity .

Окупится ли это время, если выхлоп будет меньше десятой доли процента?

Гарантий ни кто не даст. Поэтому такими вещами занимаются не в Европе или США, а в Малайзии, Индии и т.п., где учёные стоят копейки.

(void*)(0x0)

В зависимости от компилятора, NULL может быть определен по разному.

#define NULL ((void *)(0))

#define NULL ((char *)0)

#define NULL 0L

#define NULL 0

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

Здесь нет проблем если так писать кастомный код на С, когда интероперабельность с Rust это ваша цель.

Но как решение уровня API оно не выглядит подходящим, поскольку подробный стиль не является нормальным ни для C, ни для C++.

slice это термин из Rust. Он определяет "окно", через которое можно смотреть на массив данных за ним. Фактически это указатель, у которого определенны начало и конец (или длина).

В некоторых случаях полезно иметь возможность работать со слайсами нулевой длины (можно рассматривать например как аналог пустой строки в выражении "abc" + "").

Автор размышляет на тем, каким образом можно эффективно представить такое вот пустое значение в C и C++, чтобы при выполнении типичных операций обойтись лишних проверок. Например конкатенация с помощью двух пустых слайсов это валидное действие (как для строк "" + ""), но в случае наивной реализации - как пары значений (NULL, 0) - может привести к memcpy(NULL, NULL, 0), что в стандарте внезапно определено как UB.

Изначально предполагалось, что данную воздушную гавань удастся построить за 5 лет и 2 000 000 000 € . Не удалось. В итоге бюджет и сроки выросли в три раза – до 14 лет и 6 000 000 000 €. И это не говоря про дату открытия, которую успели перенести аж 5 раз!

"Дед мой говорит: бери оценки и умножай на 3.1415" (c) Юноша. В этом смысле они уложились.

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

Зарплатные торги внутри это рынок работодателя. Здесь подгорает лишь у сотрудника, а работодателю и так хорошо.

Поэтому торги на входе это просто ритуал, а внутри - уже искусство.

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

чтобы среднего разработчика нанять у нас в компании, нужен бюджет порядка $200к-$300к в год (зарплата, соц. пакет и т.п.) - такую сумму просто так никто не выделит, исключительно чтобы средний менеджер смог кому-то "преподать урок"

Зависит от размера компании. Если у вас 100 человек с такими зряплатами, то нанять ещё одного будет стоить аж целый 1%. Официантам чаевые больше оставляют. Тем более, вы же не на свои деньги его покупаете, а на деньги компании. У меня перед глазами было много случаев, когда после увольнения одного гения-трудоголика на его место брали 3-5 нормальных. И знаете, все в итоге были только счастливы.

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

Когда у меня жена работала чиновником, то их ежегодно заставляли сдавать декларацию о доходах всех близких родственников - с указанием источников, счетов, недвижимости и т.п. Потом все это выкладывалось в паблик.

Я работал в компании в которой было запрещено разглашать свою зарплату. ИМХО это обычная практика для зарубежных организаций.

Интересно, что это была за компания (если это тоже не какой-то секрет)?

Т.е. там, допустим, конкатенация строк плюсом вообще не создаст проблем, потому что вы всегда видите, что складываете строки

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

уже в зрелом возрасте и зарабатывая хоть что-то начинаешь осваивать то, чем хотел бы заниматься, но уже упустил время и сейчас это только хобби

Благодарите родителей за то, что у вас есть хобби. Многие начинают ненавидеть любимое занятие, когда оно превращается в работу.

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

JS в этом смысле managed с ног до головы, поэтому о таких вещах ни кто здесь даже не задумывается.

Я тоже когда-то писал COM/DCOM и могу сказать, что современные инструменты реально ушли далеко вперёд, в смысле количества разложенных граблей, на которые может случайно наступить разработчик.

Удовольствие :)

А если всё делать так, чтобы разные сущности всегда обозначались разными символами – может не хватить символов

В программировании есть два греха: когда одинаковые по сути вещи называют разными именами, и когда разные называют одинаково.

Если серьезно - посмотрите на хаскель. Здесь любую бинарную функцию можно записать как инфиксный оператор.

(+) 1 2 можно записать как 1 + 2

Не хватает одного символа? Просто возьмите больше: два, три, .. - сколько надо. Здесь в этом смысле полный коммунизм - каждому по потребности: name <- read <$> getLine

тут надо использовать оператор умножения (см. термины "полугруппа", "моноид")

В этом смысле любой бинарную операцию можно назвать умножением. Но на практике думаю в этом мало толку.

Информация

В рейтинге
1 453-й
Зарегистрирован
Активность