#softdev — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #softdev, aggregated by home.social.
-
CW: За использование мьютексов в обычном Go'шном коде надо выкидывать на мороз — увольнять или ставить в очередь на увольнение.
Для прикладных задач следует использовать каналы, в рамках CSP-подхода к многопоточности (Communicating sequential processes). Поскольку этот подход (концепция) проще для восприятия и контроля происходящего. Легко моделируется и верифицируется посредством всяких TLA+ и аналогов.
Бывает необычный Go'шный код? В тех случаях, когда пишется расширение стандартной библиотеки в плане контейнеров. В конце концов, те же самые каналы как раз под капотом у себя и содержат мьютексы. Вот только вещи такие крайне редко пишутся, такого рода специальные средства библиотек создаются одним человеком на миллион обычных пользователей языка.
По части интеллекта надо быть крайне альтернативно одарённым, чтобы свою задачу ставить в один ряд с чем-то подобным.
Крайне редко кто-то пишет специальные универсальные контейнеры и компоненты библиотек, предоставляющие какие-то примитивы и сущности, сродни каналов, мейлбоксов. Поэтому работает хорошее правило — как только возникает потребность в любом мьютексе, значит есть ошибка в проектировании. И сперва она вылезает в виде ухода от CSP в пользу подхода Shared Memory, становясь явным техническим долгом, а потом делает кодовую базу непригодной к поддержке или наращиванию. Всё что можно будет сделать с таким кодом, это обращаться с ним как с одноразовым — выкинуть и забыть.
Ловушка мышления тут в том, что одноразовый код не представляет ничего особенно страшного для людей привыкших придерживаться нормальной микросервисной архитектуры. Где считается вот этим самым микросервисом то самое, что проще каждый раз написать с нуля, чем изменять и отлаживать изменения :)
Таким людям крайне сложно объяснить почему кодовая база вообще должна быть без технического долга и такого рода косяков. В дополнению к вложению кучи времени и сил в создание и поддержание истинно микросервисной архитектуры. Встречается это в in-house разработка — компаний живущих с онлайн-сервисов (Авито, Яндекс, Озон, ВК и т.д. и т.п.)
Как ставить в очередь на увольнение? Выносить дисциплинарное взыскание штатным порядком, приказом по организации. Если за год набирается три штуки таких официальных взыскания, то можно увольнять «по статье» полностью соблюдая ТК РФ и нюансы Трудового Права РФ (которые не ограничиваются одним лишь ТК РФ).
#могопоточность #multithreading #CSP #software-development #softdev #softwaredevelopment #golang #go #программирование #programming #lang_ru @Russia -
When a team creates, it needs a direction but the road does not exist yet.
We are designing a software product. Here is the dependency weakness that we are using as #roadmap: http://data.yt/#presentations #DataKit #governance #softwareDevelopment #softDev #dev #product #dataRetention #archiving #retrieval #dataMining #dataDon -
#Nomenclature 🎯#naming pause:
In the #software environment, the #fork system call causes a running process to #split itself into two identical copies."The purpose of fork() is to create a new process, which becomes the #child process of the caller."
Taking the #code out of an app and modifying it without the original community is #forking. The #GNUProject in 1996 already used the word for a schism and not a subgroup: https://groups.google.com/g/gnu.misc.discuss/c/XXUp2GXU2co
⸺
#dev #history #etymology #softDev #freeSoftware 👇🏾