Size: a a a

2021 October 19
Блог*
Список дел в MR-е коллеги. Последний пункт:

* Дока (и его внук Жока)

#трудовыебудни
источник
2021 October 20
Блог*
Не забывай
источник
Блог*
источник
2021 October 21
Блог*
источник
Блог*
#prog #cpp

Данила снова пишет интересное. На этот раз — про то, как можно оптимизировать работу приложений, подогнав под конкретную нагрузку реализации mem{cpy, set, cmp}.

P. S.: насчёт того, что всё написано на C++, авторы немного лукавят: __builtin_memcpy_inline и __restrict не являются частью стандарта C++. Но это уже, по большому счёту, придирки
Telegram
Experimental chill
Этот пост я написал ещё в июле, но он мне показался скучным. Сегодня я его случайно рассказал паре людей и им понравилось, поэтому вот.

В распределённых приложениях и даже на обычных серверах невероятно сложно мерить перформанс mem* функций (например, memcpy для копирования памяти, memset для её выстановления, memmem для поиска, memcmp для сравнения) из-за того, что эти функции пытаются утилизировать всё железо, а у вас вряд ли прям всегда есть контроль над тем железом, где вы запускаете код. В итоге одни имплементации работают быстрее, другие медленнее.

В итоге все делают свои велосипеды, которые доходят до жуткого ассемблера:

Facebook Folly
Glibc вообще 13 имплементаций имеет для x86_64
Musl

И все реализации разные, кто-то хвост обрабатывает с захлёстом, кто-то просто по байту копирует в конце, кто-то хочет по выровненной памяти копировать, кто-то хочет мимо кэша, а кто-то как ядро Linux использует `rep movsb` (для совместимости со старыми процессорами). На стековерфлоу люди спорят, а что всё таки лучше.…
источник
2021 October 22
Блог*
#prog #rust

Вышла версия Rust 1.56! На этот раз Вафель меня опередил, так что читайте его о нововведениях этой версии.
Telegram
Мне не нравится реальность
# Rust 1.56.0

Вчера вышел Rust 1.56, включающий в себя многие вкусные плюшки, по большей части связанные с новой, 2021 редакцией. Подробнее про 2021 редакцию можно прочитать в edition guide, но я постараюсь кратко просуммировать изменения:

— В prelude добивили TryInto, TryFrom и FromIterator

— В 2021 редакции cargo использует resolver = "2" по умолчанию. Не вдаваясь в особые подробности это фиксит старые проблемы, когда не нужные зависимости или их фичи включались когда не нужны.

— array.into_iter() наконец-то резолвится в <[T; N]>::into_iter, а не <&[T; N]>::into_iter. Напомню, что IntoIterator долго не могли реализовать для массивов из-за того, что существующие вызовы уже резолвились через автореф. В Rust 1.53 его реализовали, добавив костыль, чтобы в 2015 и 2018 редакциях *вызов метода* продолжал резолвиться по старому, в 2021 этот костыль не действует.

— Кложуры наконец-то берут только то, что им нужно!!! Поясняю.

До 2021 редакции такой код не компилировался:

rust
let x = (vec![22], vec![23]);
let…
источник
Блог*
Только что ко мне в БК подошёл чел и предложил мне тысячу рублей, если я установлю TikTok 😐
источник
Блог*
#prog #article

В последние годы в употребление вошло словосочетание software engineer. Само это словосочетание подразумевает, что работа разработчиков программного обеспечения сравнима с деятельностью инженеров из более традиционных областей индустрии. Много копий было сломано на тему того, можно ли разработчиков и впрямь называть инженерами. К сожалению, эти умствования были малополезны, поскольку все из них были написаны разработчиками без опыта работы в традиционном инженерном деле. Как следствие, их авторы исходили не из реальных представлений о работе инженеров, а из своих стереотипов, которые имели к практике весьма опосредованное отношение.

Hillel Wayne избрал более надёжный подход: признав, что он не в состоянии самостоятельно рассуждать на эту тему, он провёл на эту тему интервью с полутора десятком людей, которые сейчас работают разработчиками, но были ранее инженерами (в их число с неожиданностью для автора вошёл Nick Coghlan, который сейчас больше известен, как один из разработчиков CPython, но до этого работал инженером системной интеграции в Boeing). Этих людей автор в дальнейшем называет "crossovers". Информацию их интервью с этими людьми автор в итоге суммировал в трёх эссе. Если вы спешите, то вот заключение из последнего из них:

To summarize my ultimate conclusions:

First of all, We software engineers are “really” engineers. All the differences people give between software and “real” engineering don’t accurately reflect what “real” engineering looks like. And the biggest difference, licensure, is a political construct, not a technical one. At the same time, there is a difference between the different ways people make software, and it makes sense to think of software developers and software engineers as distinct concepts. But even then, it’s very easy for a software developer to become a software engineer and vice versa.

Second, we are not special. There are some aspects of software engineering that are unique to software, such as the speed of iteration, loose constraints, and the consistency of our material. But software engineering has far more in common with the other forms of engineering than it has differences. The same ideas that engineers use to advance their craft are equally useful in our own domain.

Finally, there is a lot we can both teach and learn. Engineering processes are more sophisticated than ours in ways that we can extract lessons from. Traditional engineers have a stronger sense of professionalism and responsibility than we tend to. In contrast, our culture is much more open and our communities much stronger than what exists in trad engineering. And our developments in version control have the potential to revolutionize traditional engineering.

Тем не менее, сами эссе, разумеется, раскрывают тему более развёрнуто, так что всячески рекомендую их к прочтению:

Are We Really Engineers?
We Are Not Special
What engineering can teach (and learn from) us
источник
Блог*
#rust

Почему-то не выкладывал. Коллега сделал давно
источник
2021 October 23
Блог*
Хотите добавить знание Rust в своё резюме, но у вас нет даже свободной минутки? Тогда курс «59 seconds to learn Rust» для вас!
источник
Блог*
источник
2021 October 24
Блог*
источник
Блог*
@mersinvald спасибище 🙏
источник
2021 October 25
Блог*
#prog #article

Статья, показывающая, как можно при помощи инструмента спецификации ловить баги в многопоточном коде. Конкретно используется подход model checking.
источник
2021 October 26
Блог*
про игры как модель мира: в амазоновской MMO New World дефляция, которая противоположность инфляции, стала настолько серьёзной проблемой, что основным способом торговли в игре стал бартер

This type of regression becomes a severe disincentive to players: what’s the point of leveling a profession if you can’t make any money from it? What’s the point of farming for items if they’re not worth any money, and you can’t afford to repair them?

https://blog.playerauctions.com/mmorpg/currency-crisis-in-new-world/
источник
Блог*
#prog #scala
Для меня это стало серьёзным доводом в пользу того, чтобы тайпклассы были в самом языке, а не прикручены сбоку в виде имплиситов
источник
Блог*
Длинный блогпост с подробным объяснением тайп констрейнтов в скале. От паттернов использования до собственной реализации.

Как работают эти магические <:<, =:=, и почему недостаточно обычных тайп баундов. Для меня при изучении скалы это долгое время был один из самых непонятных вопросов.

https://blog.bruchez.name/posts/generalized-type-constraints-in-scala/
источник
2021 October 27
Блог*
Я плохой?
источник
Блог*
Почему у std::function есть конструкторы для "пустого" объекта?
источник
2021 October 28
Блог*
#prog

На три вещи можно смотреть бесконечно: на горящий огонь, на текущую воду и на то, как у #python-истов горит с match.
источник