でゲソ
это разве что какой-нибудь питонист-рубист внезапно перейдет на пых, то может быть
Маjко
Раст расслабляет в этом плане — если что — то точно по рукам долбанут
Loyd
Ты же не пишешь на расте так, что тебя бьёт компилятор
でゲソ
или с котлина обратно на жаву
Маjко
Маjко
Особенно с многопоточкой в си легко косячить после раста
でゲソ
Маjко
С памятью то ладно
でゲソ
ну время жизни в сях ловить после раста одно удовольствие наверное
Маjко
Да и без итераторов большо на сишке писать
Маjко
Без слайсов
Маjко
Без паттерн-матчинга
Маjко
Без нормальных макросов
Маjко
Боль, короче
Маjко
БЕЗ ГЕНЕРИКОВ
Маjко
В КОНЦЕ КОНЦОВ
でゲソ
чего ты там такое пишешь, что тебе генерики постоянно требуются?
Ignat
в С11 хотя бы перегрузку завезли, хоть и в довольно странном виде
Маjко
Loyd
Ignat
Ignat
TYPE-GENERIC EXPRESSIONS
Ignat
как её пафосно называют
でゲソ
я не обратил внимания, что речь про си, а не си++
でゲソ
но это плюсы
でゲソ
и то не слишком часто, ибо время компиляции начинает удручать
Ignat
я слабо представляю, как люди вообще живут без векторов, например
պլհկ
でゲソ
про него чет даже и не вспомнил
Ignat
как ни увижу сишный код — или связными структурами перебиваются, или аллоцируют массивы на «ну столько точно хватит» элементов
でゲソ
ну, да, пилят очередные slist
Ignat
которые даже в языках с перемещающими GC тормозят
でゲソ
не сталкивался с такими объемами данных в списках, что все тормозило
でゲソ
чет было задумался как будет выглядеть работа с json в сях и чет аж передернуло
Nikolay Markov
Ignat
что jemalloc?
Nikolay Markov
ну, то, что ты описал, есть так или иначе в любом языке. Чтобы совсем худо не было - спасает умный аллокатор.
Ignat
я не отрицаю нужность связных структур, но связный список не замена вектору
кана
Nikolay Markov
кана
Вроде такое можно реализовать. Связанная структура, но вроде достаточно удобно с этим работать
Ignat
я не понимаю, что из описанного мной «есть в любом языке»
Ignat
и от чего спасает умный аллокатор
Ignat
возможно, списки становятся чуть менее фрагментированными, разве что
Nikolay Markov
в зависимости от задачи
Ignat
ну в С при использовании первого подхода приходится или реализацию vector.push писать в каждом месте, где оно нужно, или пользоваться нетипобезопасным контейнером, или костылять на макросов темплейты для бедных
Nikolay Markov
でゲソ
ну, если тебе понадобился "умный" аллокатор, то это как один из потенциальных юзкейзов
Nikolay Markov
でゲソ
а так да, без генериков вектор пришлось бы либо постоянно кастить от void* и обратно и надеяться, что там таки правильный указатель был положен, либо писать статичные реализации для каждого из типов
Ignat
мне казалось, что в языках с GC аллокатор обычно бывает максимально тупым (а-ля аллокация на стеке), так как ему не нужно уметь память отдавать обратно
でゲソ
у шарпа и явы многопроходные гц
Ignat
Nikolay Markov
でゲソ
Nikolay Markov
でゲソ
еще при всем при том фрагментации бы поменьше
Nikolay Markov
а второй не имеет отношения к аллокатору
でゲソ
окей, тогда что ты называешь умными аллокаторами?
պլհկ
でゲソ
ну, тоже вариант.
#define true false
тоже весело
でゲソ
でゲソ
в зависимости от включенных эвристик
Nikolay Markov
Nikolay Markov
но сущности это разные
Anonymous
Ты про мутаторы?
でゲソ
?
Nikolay Markov
?
Сережа
Jemalloc умный аллокатор? Он переодически память-то перетасовывает? Какой аллокатор умный, чтобы память перетасовывал?
分解物質
Сережа
И объекты компактизировал чтобы в памяти, ну структуры раста или классы си++
分解物質
Nikolay Markov
分解物質