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