- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
// А какие-нибудь IDE с интегрированными отладчиками (или
// отладчики сами по себе) умеют нахрен выкидывать всякую
// там компилтайм-метушню из кода, оставляя лишь то, что
// реально исполняется в рантайме?
// Ну например, чтобы хуйня вида
if constexpr(хуйня1)
{
bagor1();
if constexpr(хуйня2)
{
bagor11();
}
else
{
bagor12();
}
}
else
{
bagor2();
if constexpr (хуйня3)
{
bagor21();
}
bagor();
}
// и если хуйня1 == true и хуйня2 == false то чтоб в отладчике
// в какой-то там говноIDE я увидел бы не эту пидоросню с if consexpr
// а только лишь
bagor1();
bagor12();
j123123 18.04.2021 11:16 # 0
Может есть некий "компилтайм-препроцессор", который бы высирал код на крестах со всеми этими говноспециализациями, как если бы все это ручками кто-то писал по мотивам шаблоноговна и прочей крестометушни?
bormand 18.04.2021 11:18 # +1
З.Ы. Разве что конпелятор должен составить по временному файлу на каждый инстанс метушни (на основе оригинальных файлов это фиг покажешь т.к. одна и та же метушня может по-разному раскрываться)... Но тогда ты хрен найдёшь откуда всё это взялось, комменты какие-нибудь разве что добавить со ссылками на оригиналы.
PolinaAksenova 18.04.2021 11:46 # +2
j123123 18.04.2021 12:05 # +1
Мне раскрытие такой хрени не нужно, мне надо выбрасывать неиспользуемые ветки с `if constexpr'. И этот cppinsights.io как раз не умеет выкидывать `if constexpr'. Можешь проверить
PolinaAksenova 18.04.2021 12:11 # +1
->
Больше, к сожалению, ничего нят. Дебаггеры в принципе ничего ня знают про constexpr, у них есть только номера строк.
j123123 18.04.2021 12:12 # 0
> if constexpr(false) {
И что это такое?
PolinaAksenova 18.04.2021 12:14 # 0
j123123 18.04.2021 12:17 # 0
Я не хочу видеть никакого `if constexpr'
PolinaAksenova 18.04.2021 12:19 # 0
* Хотя можня форкнуть cppinsights и сделать выпиливание if constexpr. Если так сильня нужня.
j123123 18.04.2021 12:23 # 0
PolinaAksenova 18.04.2021 12:24 # 0
guest6 18.04.2021 11:34 # +1
guest6 18.04.2021 11:46 # 0
Никто не помнит?
guest6 18.04.2021 11:46 # +1
bormand 18.04.2021 11:49 # 0
YpaHeLI_ 18.04.2021 22:18 # 0
Знаете ли какие либо тулзы, которые генерируют JSON сериализаторы объектов на C++?
j123123 19.04.2021 04:30 # +1
> For that you need reflection in C/C++ language, that doesn't exists. You need to have some meta data describing the structure of your classes (members, inherited base classes). For the moment C/C++ compilers doesn't provide automatically that information in built binaries.
Какой багор )))
JloJle4Ka 19.04.2021 04:38 # 0
А вот?
j123123 19.04.2021 04:58 # +1
j123123 19.04.2021 05:07 # +1
j123123 19.04.2021 05:12 # +1
> А последние пару лет набирает популярность boost.hana. Это boost.fusion, но с constexpr'ом и лямбдами. Автор hana, Луис Дионе (Louis Dionne), используя на полную мощь все возможности новых стандартов, в некотором смысле очеловечил метапрограммирование. С помощью hana всяческие манипуляции с типами, их кортежами, отображениями, а также компайл- и рантайм-работа с ними обрели практически человеческое лицо и читаемый вид. Ну, с поправкой на синтаксис C++, разумеется. Вот, например, как выглядит универсальный сериализатор структур, написанный с помощью hana:
> Ну да, структуры приходится описывать особым образом. А кому сейчас легко? (какой багор ))) ) И тут хочется также отметить библиотеку tinyrefl за авторством Manu Sánchez (Мануэля Санчеса). Довольно неплохая попытка принести в мир C++-разработки статическую рефлексию без расширения компилятора. Для своей работы библиотека требует стороннюю утилиту (cppast), но зато предоставляет довольно удобный доступ к информации о структурах, которую можно использовать в процессе разработки программы.
JloJle4Ka 19.04.2021 08:38 # 0
j123123 19.04.2021 08:45 # 0
Зачем? Зачем? Кресты - говно.
PolinaAksenova 19.04.2021 08:53 # +3
j123123 19.04.2021 09:08 # +1
PolinaAksenova 19.04.2021 10:13 # +2
guest6 19.04.2021 10:20 # +1
TOPT 19.04.2021 10:45 # +1
guest6 19.04.2021 10:52 # +1
rotoeb 19.04.2021 11:39 # 0
j123123 19.04.2021 09:11 # 0
Видимо такое говноразделение придумано для оправдания говна в своем говноязыке программирования
TOPT 19.04.2021 09:29 # +1
bootcamp_dropout 19.04.2021 10:31 # +4
booratihno 19.04.2021 12:33 # +1
это правда
хуже только всё остальное
j123123 19.04.2021 13:06 # 0
KoWe4Ka_l7porpaMMep 19.04.2021 13:06 # 0
j123123 19.04.2021 13:08 # 0
KoWe4Ka_l7porpaMMep 19.04.2021 13:10 # 0
TOPT 19.04.2021 13:13 # +1
KoWe4Ka_l7porpaMMep 19.04.2021 13:17 # 0
guest6 19.04.2021 13:25 # 0
KoWe4Ka_l7porpaMMep 19.04.2021 13:26 # 0
j123123 19.04.2021 13:41 # 0
KoWe4Ka_l7porpaMMep 19.04.2021 13:49 # 0
А у крестухов нет на это времени, им язык не навязывает всякие правила (типа как в джаве), они ботают кресты и метушню.
А коммюнити, как известно, многое говорит о питушне. Вспомним, хотя бы, «РНР».
j123123 19.04.2021 13:50 # +2
Давайте еще будем считать какой-то язык хуевее другого за то, что создатель одного языка был допустим негром, а другого - чистокровным арицйем.
guest6 19.04.2021 14:00 # +2
CHayT 19.04.2021 14:11 # +2
gologub 19.04.2021 14:36 # +1
так не бывает
вот объясните мне, какой смысл носиться с этими рецензиями (даже с такими ебанутыми как Altero!), но при этом даже близко не догадываться что они обратной силы не имеют как и все остальное (а не как в розовом мирке, где можно вычеркнуть из истории версий потомушто насильника пизнес)
bormand 19.04.2021 14:38 # +1
Это да, старый код по свободной лицензии можно будет юзать дальше. А вот свежие патчи -- только "во имя добра".
С "JSON" в "PHP" такая история уже была. Чувакам пришлось в срочном порядке выпиливать это этичное говнище из репозиториев.
gologub 19.04.2021 14:56 # +1
как будто бывают зависимости от еще не написанного кода
KoWe4Ka_l7porpaMMep 19.04.2021 14:12 # 0
А что, только я один так делаю? о.о
Логика тут проста: у условного «РНР» есть некие характеристики, которые притягивают определённые типажи людей.
И наоборот, определённые типажи людей как мухи слетаются на объекты с характеристиками, сходными с таковыми у «РНР».
Таким образом, если на расте пишут какие-то заедушные сектанты, то явно что-то такое там есть, что притягивает именно этих людей.
А если по делу, то «С++» лучше «Rust» по той же причине, по которой «C++» лучше «Java»:
1. GC.
2. BDSM-питушня.
bormand 19.04.2021 14:15 # +1
Но в расте нет GC!
KoWe4Ka_l7porpaMMep 19.04.2021 14:16 # 0
DypHuu_niBEHb 19.04.2021 14:21 # +2
ты можешь представить себе чтобы кто-то всерьез сравнивал кресты или сишку с языком с гц?
гц это как пожевать жвачку, и выплюнуть ее на пол, чтоб на нее кошачья шерсть налипла. Вот что такое гц
CHayT 19.04.2021 14:23 # +1
У тебя просто нормального ГЦ не было.
DypHuu_niBEHb 19.04.2021 14:24 # +2
KoWe4Ka_l7porpaMMep 19.04.2021 14:24 # +1
... а потом следующий человек аллоцировал себе жвачку с пола и положил к себе в рот. И так каждые одну-две минуты, пока программа работает.
j123123 19.04.2021 14:17 # 0
И где BDSM-питушни больше, в Rust или C++? И что лучше, когда эта BDSM-питушня есть, или когда ее нет? И что вообще под этим термином понимается?
KoWe4Ka_l7porpaMMep 19.04.2021 14:21 # 0
А в расте какие-то safe-unsafe, это плохо, прямо как исключения, которые надо ОБЯЗАТЕЛЬНО обработать. Программист не обезьянка (кроме программисов на ПХП), чтобы его ЗАСТАВЛЯТЬ. Вот ты бы стал писать какую-нибудь прошивку на расте? И я бы не стал.
j123123 19.04.2021 14:24 # 0
Ну так никто и не заставляет. Можешь вообще абсолютно весь код завернуть в unsafe.
> Вот ты бы стал писать какую-нибудь прошивку на расте?
Я бы вполне стал, если бы мне платили за написание прошивок на расте.
KoWe4Ka_l7porpaMMep 19.04.2021 14:28 # +1
Тебя найдут растосектанты и заставят переписывать код в safe. А если не перепишешь, уронят винт.
> Я бы вполне стал, если бы мне платили за написание прошивок на расте.
Вероятно, потому что ты будешь единственным программистом на расте, который пишет прошивки, а не жонглирует safe'ами.
j123123 19.04.2021 14:25 # 0
Это кстати спорно. Но чтобы предметно что-то обсуждать, расшифруй значение выражения "BDSM-питушня"
KoWe4Ka_l7porpaMMep 19.04.2021 14:32 # 0
В джаве это принудительное ООП и ГЦ, а ПХП ничего такого нет, но ПХП это не помогло.
j123123 19.04.2021 14:58 # 0
KoWe4Ka_l7porpaMMep 19.04.2021 15:05 # 0
А safe-unsafe – это главная фича раста (безопасность), поэтому программирование на расте без safe сопоставимо с программированием на джаве как я описал чуть выше.
j123123 19.04.2021 15:16 # 0
Значит ли это, что "BDSM-питушня" существует не в языке, а в голове программиста, который решил, что раз тут вот есть такая фича в языке, и раз тут так принято писать, то я буду писать так, как принято?
KoWe4Ka_l7porpaMMep 19.04.2021 15:30 # 0
На самом деле тут всё проще. На уровне языка есть BDSM-питушня, некоторые программисты считают её крайне полезной, поэтому выбирают этот язык. Если ты будешь писать не так, как они, то твой код среди программистов на таком языке будет «говнокодом», и на тебя будут смотреть как на пыхера. Оно тебе надо?
Даже пословица есть: «в чужой монастырь со своим уставом не ходят».
Я не спорю, что на джаве можно писать как на питоне, а на крестах как на сишке, но зачем?
j123123 19.04.2021 15:37 # 0
Так это не языковая проблема, это проблема в том, кто на что как смотрит и кого кем считает в зависимости от того, кто как пишет какой-то код на каком-то там языке. Это не имеет значения в контексте сравнения свойств самого языка.
PolinaAksenova 19.04.2021 15:48 # +1
j123123 19.04.2021 16:03 # 0
DypHuu_niBEHb 19.04.2021 16:05 # +1
Неявно кастить void* и void main вроде, а еще что?
Чего там еще может не быть? _Generic? VLA?
j123123 19.04.2021 16:14 # 0
В крестах правила с приведением типа с указателями другие. Например
нельзя в крестах, можно в Си. Для крестов надо указатель кастовать в нужный тип.
j123123 19.04.2021 16:23 # 0
В си есть <iso646.h>, в крестах <ciso646> убрали из C++20
Ну и банальный sizeof('a')
KoWe4Ka_l7porpaMMep 19.04.2021 15:48 # 0
Но обычно программисты работают в стаях, а даже если не работают, то писать код, который потом назовут "говнокодом" – просто неэтично, поэтому приходится считаться с мнением адептов safe-unsafe подхода, которые за unsafe могут и заклевать.
Из объективных причин, т.к. раст я не знаю, могу назвать только несоответствие инструмента решаемой задаче. Раст предполагает упарывание по "безопасности", как джавушки упарываются по "ооп", это сильные стороны этих языков, за что их и выбирают. А ты предлагаешь не пользоваться этими преимуществами, а писать как в сишке, что довольно странно звучит.
DypHuu_niBEHb 19.04.2021 15:55 # +1
На сишке куда больше кода написано, и спецов по ней тоже куда больше
>как джавушки упарываются по "ооп",
ООП в джавке хуёвый, кстати. Протектд наследования нету, сахара для делегирования нету..
j123123 19.04.2021 16:29 # 0
Например если мне надо чтоб мой код кто-то из раста удобно вызывал, и если мне надо из своего кода удобно вызывать код раста.
Для полуавтоматического перевода кода из си в раст кстати есть какие-то говнотрансляторы.
https://c2rust.com/
Аналогичная хрень есть для перевода Си в go, Си в D, C++ в D, еще всякие трансляторы фортрана в сишку есть.
DypHuu_niBEHb 19.04.2021 16:32 # 0
Все апишки операционок же на сях
j123123 19.04.2021 16:34 # 0
Там хедеры через какую-то срань конвертят же. https://github.com/rust-lang/rust-bindgen
Ну конечно не так удобно как Rust из Rust, но пользоваться можно.
DypHuu_niBEHb 19.04.2021 16:36 # +1
Ну вот видишь. А из крестов вызов сишного кода практически бесплатен
j123123 19.04.2021 16:40 # 0
DypHuu_niBEHb 19.04.2021 16:43 # 0
bormand 19.04.2021 16:43 # +1
Добавить шаг в билд-систему -- это не такая уж и ёбля... Тем более он там уже есть, скорее всего.
j123123 19.04.2021 16:46 # 0
bormand 19.04.2021 16:46 # +1
Это как в той истории про чела, который десять тысяч функций для Х11 руками пилил, лишь бы сишную либу не цеплять?
DypHuu_niBEHb 19.04.2021 16:49 # 0
Вот если бы я писал большой хай перформанс проект, то наверное имело бы смысл подумать про раст
PolinaAksenova 19.04.2021 16:56 # 0
А мог бы брать https://docs.python.org/3/library/ctypes.html! Гляди, как круто:
DypHuu_niBEHb 19.04.2021 16:59 # +1
gologub 19.04.2021 20:47 # 0
в индентно-ориентированном язычке
gologub 19.04.2021 14:40 # +1
огласите пожалуйста весь список woke-полных языков!
bormand 19.04.2021 14:53 # +1
А кто такие Вуки?
Desktop 19.04.2021 14:54 # +1
лапша такая
лапшевидный код в общем
DypHuu_niBEHb 19.04.2021 14:55 # +2
Несколько лет назад они проснулись и поняли, что мир управляется белыми мужчинами-капиталистами, и нужно отнять у них власть, чтобы везде стало так же хорошо, как в тех странах, где нет ни белых, ни капиталистов. Ну, как в Африке
gologub 19.04.2021 15:01 # +1
Not Woke Enough: Portland Antifa Attack Pro-Gay Church
Antifa Rioters Attack Portland Church, Museum for 2nd Time in a Year
guest6 17.02.2024 05:01 # 0
ахахахаха, это какого?
Гологуб, иди сюда, я тебе нямку принёс
guest6 17.02.2024 07:55 # 0
https://github.com/KyleMiles/bananaScript
guest6 17.02.2024 16:42 # 0
guest6 12.05.2024 00:40 # 0
booratihno 19.04.2021 13:16 # +1
https://habr.com/ru/post/492410/
а если без шуток: тебе нравица борроучекер?
bormand 19.04.2021 13:23 # +1
В текущем состоянии -- х.з., я не растишка чтобы его оценивать... А в целом -- это годная идея, которой очень не хватает в крестах когда работаешь со всякими итераторами и мувами. Возможно когда-нибудь его и в кресты завезут, хотя бы как выключенное по-умолчанию предупреждение.
j123123 19.04.2021 13:32 # +1
Если без шуток, можно писать всё в unsafe - будет как кресты. В чем-то типа борроучекере смысл определенно есть, но я б это делал через формальные доказывания хуйни, а не как в Rust.
j123123 19.04.2021 13:35 # +1
Это абсолютно желтушный заголовок, и статья кстати полное говно. Типа "Rust хуже C++ потому что хуевее оптимизируется на какой-то хуите", бля, ну охуеть теперь. А ничего что это не проблема языка как такового, а проблема компилятора? Давайте еще сишку с -O2 сравнивать с крестами с -O0 на древнем компиляторе, и кричать потом что вот си быстрее крестов.
CHayT 19.04.2021 14:04 # +4
guest6 17.02.2024 05:40 # 0
PolinaAksenova 19.04.2021 15:34 # +3
☆*:.。.o(≧▽≦)o.。.:*☆
PolinaAksenova 19.04.2021 15:57 # +2
Один раз попробуешь стандартизированную систему сборки и централизованный репозиторий — и всю оставшуюся жизнь от крестов с сишкой будет тошнить. Останется только переходить ня NodeJS и Python (>﹏<).
DypHuu_niBEHb 19.04.2021 16:02 # +1
Лучше всего конечно это сделано у BSD
PolinaAksenova 19.04.2021 16:07 # 0
DypHuu_niBEHb 19.04.2021 16:08 # +1
Ваш раст небось тоже под досом не работает
>ня решает вопросы мультиверсионности зависимостей,
А там сайд бай сайд, как в .net и winsxs?
PolinaAksenova 19.04.2021 16:12 # +1
DypHuu_niBEHb 19.04.2021 16:13 # −1
https://www-legacy.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/makefile-depend.html
PolinaAksenova 19.04.2021 16:21 # +2
bormand 19.04.2021 16:23 # +1
PolinaAksenova 19.04.2021 16:24 # +1
CkpunmoBbIu_nemyx 19.04.2021 21:12 # 0
gologub 19.04.2021 21:49 # 0
CkpunmoBbIu_nemyx 20.04.2021 01:41 # 0
Soul_re@ver 19.04.2021 23:01 # +1
устанавливал питон
запускал install.py
DypHuu_niBEHb 19.04.2021 23:10 # +1
gologub 19.04.2021 23:13 # +1
j123123 07.05.2021 17:51 # +1
> Один раз попробуешь стандартизированную систему сборки и централизованный репозиторий — и всю оставшуюся жизнь от крестов с сишкой будет тошнить.
Раст хуже крестов потому что в расте есть удобная хрень для управления зависимостями, а в крестах нет? Эмм, че?
Какая-то альтернативная логика
PolinaAksenova 07.05.2021 17:52 # 0
j123123 07.05.2021 20:36 # 0
В целом я считаю, что это должно быть межъязыковым, а не как сейчас. Если программа на Rust требует для сборки либу на крестах которая требует либу на Haskell, притом либа на Haskell требует либу на Common Lisp - это в рамках какого-то Cargo уже не разрулить. Про менеджеры зависимостей для языков я писал в https://govnokod.ru/20044
Короче, нужен или единый менеждер зависимостией для всего зоопарка говноязычков, или протокол коммуникации между кучей имеющихся сейчас менеджеров.
PolinaAksenova 07.05.2021 20:45 # 0
j123123 07.05.2021 20:46 # 0
Это не какая-то фича языка. И к языку это не должно иметь отношения вообще никакого
PolinaAksenova 07.05.2021 20:54 # 0
Да.
> И к языку это не должно иметь отношения вообще никакого
Нет. Лучше иметь стандартный менеджер зависимостей, чем ня иметь.
Ты опять уходишь в характерную для тебя степь: если инструмент X ня решает все задачи ня свете, то инструмент X ня нужен. Разумеется, в реальности это ня так. Между няличием несовершенного инструмента, позволяющего решать практические задачи, и отсутствием такого инструмента (потому что очевидня, что инструмента, решающего все задачи ня свете, существовать ня может) лучше выбирать первый вариант.
MAKAKA 07.05.2021 20:46 # 0
Просто мало кому хочется ставить хедеры нужной библиотеки через пакетный менеджер ОС
j123123 07.05.2021 20:48 # 0
MAKAKA 07.05.2021 20:51 # 0
А ты как бы хотел?
Вот есть либа FOO, для её сборки нужен Perl и Ruby с кучей джемов.
Я запустил "magic_unicorn build Foo" на винде, и мне скачалось всё для сборки, собралось, а потом скачались сырцы моей либы и тоже собрались?
Это же нужен человековек на поддержку одной либыв
j123123 07.05.2021 21:01 # 0
Может что-то типа Nix package manager, Guix? И чтобы переносимо за пределы Linux.
PolinaAksenova 07.05.2021 21:03 # 0
Процесс сборки представляем в виде AST-дерева, местным анялогам мейкфайлов даём возможность этим деревом маняпулировать!
PolinaAksenova 07.05.2021 21:08 # 0
PolinaAksenova 07.05.2021 20:55 # 0
Для сборки Foo нужня libbar-1.6, для сборки Baz — libbar-1.5. Удачи!
CHayT 07.05.2021 21:04 # 0
MAKAKA 07.05.2021 21:06 # 0
Там все зависимости не конфликтующие
Именно в этом и смысл дистрибутива
PolinaAksenova 07.05.2021 21:08 # 0
MAKAKA 07.05.2021 21:10 # 0
На большинстве **nix либы ставятся из репы, и хела там нет.
Другой вопрос, что если ты на debian 8 захочешь Python 3.9, то пакетный менеджер разведет руками:)
PolinaAksenova 07.05.2021 21:14 # 0
Всё не нужно, чего нет. Если этого нет — то оно и не нужня.
Если бы это было так — ня было бы ни docker, ни node_modules, ни virtualenv.
guest6 07.05.2021 21:19 # 0
Еще раз: хелла там нет. Но там вполне может не оказаться нужных тебе сущностей (см пример с python 3.9).
Soul_re@ver 07.05.2021 21:22 # +1
MAKAKA 07.05.2021 21:23 # 0
Soul_re@ver 07.05.2021 21:26 # 0
MAKAKA 07.05.2021 21:30 # 0
Ну я же три раза уже написал:
>если ты на debian 8 захочешь Python 3.9, то пакетный менеджер разведет руками:)
> Но там вполне может не оказаться нужных тебе сущностей
>мало кому хочется ставить хедеры нужной библиотеки через пакетный менеджер ОС
Разумеется, там вполне может не быть нужного тебе софта, и именно потому нужны все эти докеры и снапы и пр.
Но утверждение "пакетные менеджеры не решают проблему DLL HELL" неверно.
Они её решают, но платой за это является возможность использовать только тот софт, который они предоставляют
Для кого-то это неприемлемо (для программистов, например)
Для кого-то вполне ок (админов обычно устраивает версия bash и samba из пакетного менеджера)
PolinaAksenova 07.05.2021 21:32 # 0
MAKAKA 07.05.2021 21:35 # 0
Такая ситуация не может возникнуть в ОС, основанной на пакетных менеджерах: там будет либо Foo, либо Baz.
Например, тебе скажут так:
В версии 4.0 у нас есть Foo;
В версии 5.0 есть Baz
выбирай
Soul_re@ver 07.05.2021 21:49 # +1
В общем виде хелл решается только хранением каждой версии библиотеки отдельно и возможности указания версий библиотек, если вдруг необходимо привязать программу к определённой версии (эдакий pif файл).
Пакетный менеджер это попытка частично решить проблему, которая работает только для каких то конкретных задач. Справедливости ради, эти задачи охватывают большую часть пользователей.
MAKAKA 07.05.2021 21:59 # 0
Скорее всего да.
Кстати, в Windows есть SxS, которая эту проблему неплохо решает, как раз потому что
> хранением каждой версии библиотеки отдельно
>Справедливости ради, эти задачи охватывают большую часть пользователей
Угу. Для десктопа или небольшого офисного сервачка обычно хватает того, что есть в поставке.
А потом приходит программист, и хочет другую версию gcc, и конкретную версию postgres. И пиздец
Soul_re@ver 07.05.2021 22:05 # 0
MAKAKA 07.05.2021 22:13 # 0
Люди иногда покупют RedHat потому, что у них есть софт, который официально поддерживает только RH
И там в пакетном менеджере есть всё, что софт использует.
Если там чего-то нет, то программист не имеет права это использовать.
понятное дело, что это крайне высокая цена, и её платят только в особых случаях
PolinaAksenova 07.05.2021 22:06 # 0
> А потом приходит программист, и хочет другую версию gcc, и конкретную версию postgres. И пиздец
А зачем в треде про системы сборки, которые в большинстве случаев нужны исключительня программистам, предлагать инструмент, для программистов ня подходящий?
MAKAKA 07.05.2021 22:08 # 0
Допустим, ты пилишь софт для debian. Все зависимости ты опишешь в терминах пакетного менеджера
PolinaAksenova 07.05.2021 22:10 # 0
Очень удобный инструмент.
Правда, мода на софт, прибитый гвоздями к конкретной версии конкретной ОС, прошла где-то лет пятнадцать нязад. Или двадцать.
MAKAKA 07.05.2021 22:17 # 0
Он может иметь смысл только для debian. Например, это aptitude:)
PolinaAksenova 07.05.2021 22:05 # 0
Причём тут вообще ОС? Я сама собираю Foo и Baz, из исходников.
MAKAKA 07.05.2021 22:12 # 0
Тогда ты не можешь использовать пакетный менеджер
Это же очевидно, нет?
Кстати, пакетный менеджер тоже появился не сразу: в классическом юниксе _весь_ софт вовсе ставился с системой.
Рудименты этого можно наблюдать в некоторых BSD, где есть четкая разница между "системным софтом" (base system) и внешними пакетами.
К примеру во FreeBSD с системой ставится sendmail. Если ты хочешь поставить postfix, то sendmail нужно отключить. Его нельзя удалить -- он часть системы
PolinaAksenova 07.05.2021 22:16 # 0
С чего бы? Буквальня вчера я някатила виртуалку с Debian, поставила там через apt кучку libboost-nya-dev и спокойня собирала проект, зависящий от <boost>.
(Ироничня, кстати, что делала это я как раз для того, чтобы получить бинярник, который может работать ня одной виртуалке с древним gcc.)
MAKAKA 07.05.2021 22:19 # 0
PolinaAksenova 07.05.2021 22:30 # 0
Возвращая дискуссию в правильное русло: что мне нужня, чтобы собрать open-source проект ня, няпример, rust?
1. git clone ...
2. cargo build
Всё. Этими двумя командами я соберу абсолютное большинство rust-проектов ня любых поддерживаемых системах: и ня Debian, и в винде. Разумеется, ошибки и кривые руки встречаются всегда, но в языках с централизованной системой сборки и разрешения зависимостей ошибки — это исключение, а не правило.
Теперь перейдём в другой конец ринга: что мне нужня, чтобы собрать open-source проект ня C или C++?
1. git clone ...
2. Час читать документацию о том, как это собирать.
3. Час вручную устанавливать всякую хер-ню (от более-менее вменяемых make/cmake до каких-то монструозных поделий типа bazel, которые ещё и зависят чуть ли не от минорной версии восьмой джавы и ставятся только из стороннего репозитория — привет, Tensorflow!).
4. Час нястраивать всякую хер-ню, прописывая ей флаги, переменные окружения, пути к библиотекам, хидерам, .a, .so, .lib, .dll, .daiuzhesobrat... Ай, нять, да почему этот cmake ня подхватывает буст?! А, нядо его положить не в X:\dev\nay\boost-1-45\, а в X:\dev\nya\boost-1.45\...
5. Час обтекать от того, что у тебя стоит Visual Studio 2019, а для сборки нядо Visual Studio 2015; повторять всё заново.
6. Для каждой новой платформы — повторять всё с шага 1.
Для C/C++ это — норма.
Чувствуешь разницу?
MAKAKA 07.05.2021 22:34 # 0
В С++ вполне бывает
зы: Я собирал CEF на винде, я знаю, что такое в дебрях .bat файла исправлять пути к виндовым SDK и cl, так что боль я понимаю примерно
PolinaAksenova 07.05.2021 22:36 # 0
> в дебрях .bat файла исправлять пути к виндовым SDK и cl
(。╯︵╰。)
MAKAKA 07.05.2021 22:40 # 0
Вот как жавист со своим gradle пишет всё на groovy
j123123 07.05.2021 23:18 # 0
Вот да, систему сборки для кода на Си можно написать на Си, чтобы там компилятор и линкер через fork()+execve() вызывался (или через system() чтоб). Один сборочный C-файл можно мейком, скомпилировать, запускать бинарник, и пусть он там сам дособирает всякую хрень.
Soul_re@ver 07.05.2021 23:20 # 0
j123123 07.05.2021 23:21 # 0
Система сборки будет одним C-файлом который можно sh-скриптом или батником тупо собрать. А потом тот бинарник будет там что-то дальше питушить, возможно сам себя дособирать, т.е. собрать более мощную систему сборки чтоб уже всё окончательно собрать как надо.
PolinaAksenova 07.05.2021 23:22 # 0
j123123 07.05.2021 23:25 # 0
Ну заюзаешь функцию system() на первых порах. Она в Си точно есть. А дальше базовая система сборки проанализирует доступные функции и что-то там сконфигурирует, использовать ли там виндовые аналоги fork()+execve() или есть нативный fork()+execve() и что там с многопоточной сборкой можно сделать.
MAKAKA 07.05.2021 23:24 # +1
PolinaAksenova 07.05.2021 23:25 # 0
MAKAKA 07.05.2021 23:30 # 0
и я думаю (но это не точно) что gnumake не работает без цыгвин
j123123 07.05.2021 23:32 # 0
В mingw отлично работает.
guest6 07.05.2021 23:37 # 0
А потом начнуится проблемы:
* на винде слеши другие
* разделители PATH другие
* кодировка не так работает
еще что-то...
Кросс-платформенную систему сборки сделать не баран чихнул
PolinaAksenova 07.05.2021 23:37 # 0
guest6 07.05.2021 23:39 # 0
Их надо ставить, но это намного проще, чем ставить мингвин на винде всётаки
А есть даже линукс без либси.. алпайн, или как его
guest6 11.05.2024 23:06 # 0
guest6 11.05.2024 23:09 # 0
guest6 11.05.2024 23:23 # 0
j123123 07.05.2021 23:27 # 0
MAKAKA 07.05.2021 23:30 # 0
>проанализирует доступные функции и что-то там сконфигурируе
ты же не пытаешься аутотутлз с поддержкой винды изобрести?
j123123 07.05.2021 23:34 # 0
автотулз это ж скриптуха на каком-то перле(automake точно perl требует) и m4, а тут Царская Сишка и никакой скриптухи. Батником компилим один .c файл, запускаем его, дальше он там сам со всей хуйней ебется.
guest6 07.05.2021 23:38 # 0
хотя если научить её качать готовое, то не страшно
PolinaAksenova 07.05.2021 21:28 # +1
Если нядо собрать какую-то другую программу, а оня с версиями либ из твоего дистрибутива ня совместима, то тебе не надо собирать эту программу. Опен-сорс же, free as in speech!
MAKAKA 07.05.2021 21:38 # 0
Есть некоторые области, в которых это отлично работает.
Тащемто до середины 10-х годов это было повсеместно.
На шаред хостингах версия php и mysql зависела от версии дистрибутива, а не от желания программиста:)
guest6 11.05.2024 23:02 # 0
guest6 11.05.2024 23:03 # 0
CHayT 07.05.2021 20:54 # +1
Stop it, Satan!
CHayT 07.05.2021 20:58 # +1
guest6 11.05.2024 23:02 # 0
CHayT 07.05.2021 21:19 # 0
Индустрия уже и так не очень, но по крайней мере leftpad не был написан Common Lisp.
guest6 11.05.2024 23:02 # 0
guest6 11.05.2024 23:03 # 0
guest6 17.02.2024 16:43 # 0
во-первых у карги всегда есть локфайл, а у питона -- не всегда
во-вторых у карги есть cgf зависимости от разных ос, а у питона это вручнубю делают
в-третьих там есть dev/prod, а у питона нету
PolinaAksenova 11.05.2024 21:28 # 0
Лучше иметь выбор, чем ня иметь. (*¯︶¯*)
> во-вторых у карги есть cgf зависимости от разных ос, а у питона это вручнубю делают
Ня нужен. Питоняше не требуются такие костыли, он ня всех поддерживаемых платформах способен работать сразу. (⁀ᗢ⁀)
> в-третьих там есть dev/prod, а у питона нету
Питоняше ня нужна prod-конфигурация: она все равно будет тормозить. (¬‿¬ )
guest6 11.05.2024 22:40 # 0
guest6 11.05.2024 22:48 # 0
guest6 11.05.2024 23:00 # 0
Пока не возникало потребности использовать локфайл.
> во-вторых у карги есть cgf зависимости от разных ос,
Пока не возникало необходимости использовать ос-специфичный код.
> в-третьих там есть dev/prod, а у питона нету
Пока не возникало потребности разделять код на продакшен и дев
guest6 17.02.2024 04:59 # 0
https://nnethercote.github.io/perf-book/bounds-checks.html
guest6 11.05.2024 23:01 # 0
guest6 17.02.2024 05:44 # 0
Fossil is a simple, high-reliability, distributed software configuration management system with these advanced features:
Project Management - In addition to doing distributed version control like Git and Mercurial, Fossil also supports bug tracking, wiki, forum, email alerts, chat, and technotes.
All-in-one - Fossil is a single self-contained, stand-alone executable. T
guest6 11.05.2024 23:01 # 0
guest6 11.05.2024 23:03 # 0
Desktop 12.05.2024 00:02 # 0
guest6 12.05.2024 00:17 # 0
guest6 12.05.2024 00:41 # 0
а индеец-программист бывает?
а цыган?
MAPTOBCKuu_nemyx 12.05.2024 05:56 # 0