- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
https://habr.com/ru/post/497114/
А, кстати о темплейтах. Рабочий проект, где каждый .cpp-файл компилируется по 5-7
минут даже без оптимизаций? Время до первой диагностики компилятора в те же 5
минут? Пердёж компилятора на десятки мегабайт в случае ошибок? Да, я сохранял в
файл и замерял ради интереса. Потребление памяти компилятором в 5-10 гигов на
файл? Билдсервер с 32 ядрами и 64 гигами памяти, на которой нельзя запускать
больше чем этак 8 параллельных потоков компиляции? Проект на несколько десятков
kloc, собирающийся на ней полчаса? Получите, распишитесь.
И тулинг. Мне куда проще находить, на что у меня тратится память, в том же хаскеле,
который, как известно, только для факториалов и годится. Системы сборки? Ха. Апгрейд
компилятора для прода? Жди лет пять после релиза стандарта. Пакетный менеджер? Ха-ха.
Reproducible builds? Ха-ха-ха. Все места, где я работал, на это либо вообще забивали,
либо вкладывали какое-то совершенно неадекватное количество ресурсов. Я понимаю,
почему так происходит, у этого всего есть абсолютно логичные и объективные причины,
по-другому и выйти не могло, но я устал так жить.
И их все нужно иметь одновременно, если работаешь над чужими проектами.
Кроссплатформенная сборка сишечки -- явление относительно редкое, потому что код на си примерно всегда связан с АПИ платформы (иначе нахуй си?)
Только пост был про С++
То ли дело ассемблер - там всей этой хуйни с алиасингом и UB тупо нет. (хотя на самом-то деле кое в чем UB есть и в ассемблере, но это, сука, надо очень постараться)
Ну и можно тут например почитать про ошибки и варнинги ассемблера https://developer.arm.com/docs/dui0807/e/assembler-errors-and-warnings/list-of-the-armasm-error-and-warning-messages
A1316E: Shifted register operand to MSR has undefined effect
A1319E: Undefined effect (using PC as Rs)
A1320E: Undefined effect (using PC as Rn or Rm in register specified shift)
A1321E: Undefined effect (using PC as offset register)
A1322E: Unaligned transfer of PC, destination address must be 4 byte aligned, otherwise result is UNPREDICTABLE
This error is reported when you try to use an LDR instruction to load the PC from a non word-aligned address. For example:
AREA Example, CODE
LDR pc, [pc, #6] ; Error – offset must be a multiple of 4
END
This code gives an UNPREDICTABLE result.
>Я писал на плюсах лет 17
молоток!
Питуху стоит попробовать Йажу, и узнать как там с потреблением памяти
Компилятором то? Да почти ноль по сравнению с крестами. У йажи конпелятор же вообще игрушечный.
А так же ИДЕ
а так же тестами
Лолшто. Если от IDE для сраной жабы у тебя комп подтормаживает, то от крестопроекта аналогичных размеров он просто ляжет и больше не поднимется.
Количество файлов и сложность их парсинга и автодополнения там просто несопоставимые.
>аналогичных размеров
не овсем понятно, как считать аналогичность
Там, где в йаже будет двадцать файлов (десяь классов и десять интерфейсов) в крестах будет один файл и три класса
Если я хочу написать либу для других, то тогда понятно конечно.
А что у вас еще принято делать на шаблонах в хедер онли? Документацию генерить можно? Рест апи декларативно описывать?
Как может билд быть не препродюсибл? они всегда последнюю девелопмент версию либы скачивают?
Жопа в том, что для крестов нет какого-то де-факто способа сборки и доставки зависимостей, как в тех же йаже или педоне. Плюс геморрой с версиями конпеляторов и стандартной либы, особенно на винде. В итоге у всех свои велосипеды со своими костылями и багами.
Видимо у ОПа тупо юзаются конпелятор и либы из системы со всеми вытекающими последствиями.
На прыще вообще собирать можно докером, там можно иметь какую хош версию чего угодно, бо от платформы там только ядро.
на пинде можно поставить нужный тулчейн (везде одинаковый) и течь.
В жабе, знаеш, тоже можно поставить на один агент JDK 8, а на другой JDK-11, и жаловаться потом, что билд то работает на восьмой джаве, то не работает.
>Жопа в том, что для крестов нет какого-то де-факто способа
опять таки: способы есть, но они ос-специфик, и к языку не привязаны.
Собирай себе дебы или рпмы скачивая аптом или юмом нужные зависимости
Докеры-хуёкеры это круто, конечно (отбросим тот факт, что с виндой они буквально год-два как стали более-менее юзабельными). Но людям то хочется и локально с исходниками поработать.
И вот тут-то и начинаются проблемы. Виндовые тулчейны разных версий плохо друг на друга влияют, особенно если тебе дрова собирать. 100500 версий либ надо на диске параллельно держать, а они в крестах далеко не по мегабайту весят, да ещё и умножаются на всякие debug/release да 32/64. Как-то это всё ещё разводить в системе сборки, чтобы лишнего говна не натянуло (а у систем сборки в крестах полно своих заскоков).
Оно реализуемо, конечно, но ОП про неадекватное количество ресурсов не просто так пишет. Там даже на чистом докере без локальной сборки неплохо поебаться придётся.
Но у большинства контор всё проще - некогда с докерами пердолиться, код пилить надо. Собирают тем, что от предков досталось.
Я же специально написал, что речь именно о прыщах. В винду вроде как пытаются завезти легкую виртуализацию, но пока еще сыро, что странно, учитывая что там неймспейсы у объектного менеджера и редиректы их коробки
>Но людям то хочется и локально с исходниками поработать.
Научить тебя запускать докер локально?)))
>Виндовые тулчейны разных версий плохо друг на друга влияют,
Что значит "влияют"? У меня в студии тулчейн выбирается на уровне проекта, что я делаю не так?
Разумеется, CRT у меня тоже 100500 разных.
>100500 версий либ надо на диске параллельно держать, а они в крестах далеко не по мегабайту весят,
А в других языках не надо держать? Кто-то как-то по-другому решает эту проблему? Может, node_modules меньше весят? Или .m2?
>Собирают тем, что от предков досталось.
Да ради бога. Но почему разными то?
Почему не унифицировать софт на CI и компах разрабов?
Или типа я собираю проект шлангом на маке, а ты гццой на линуксе, и потом у меня твои баги не репродюсятся?
Сколько там ваши ноде модулес да жабьи кеши весят то? Пара гигов на тыщу либ? Одна сборка буста весит гига полтора. А их надо хотя бы штуки 4.
> что значит влияют
В основном это проблема с драйверными китами, обычные сдк они походу тестируют. Ставишь новый тулчейн, а предыдущий пошёл по пизде, в нём теперь пары тулов не хватает. Ставишь следующий, а после него у предыдущих какая-то переменная проебалась. Кто с msvc работал - тот в цирке не смеётся.
> почему не унифицировать софт
Потому что если удобной и быстрой доставки всего этого говна нет, люди будут собирать тем, что у них на компе завалялось. Пока совсем собираться не перестанет. Реальность она такая.
А если потом ньюфагу надо собрать древнюю ветку - это отдельное веселье 🙂
Кстати да, подтверждаю. У меня папка с либами «Vcpkg» (там буст для x64-windows и x64-windows-static и ещё пара мелких либ) весит «2.99 ГБ (3 219 287 415 байт)», а внутри — «Файлов: 57 155; папок: 4 699».
А буст нельзя ставить частями? Если я не используют spirit, я все равно буду иметь его на диске?
>В основном это проблема с драйверными китами
вот это правда пиздец. Правда, не понятно причем тут С++. Это проеб майкрософта и его команды, которая делает DDK.
>Кто с msvc работал - тот в цирке не смеётся.
Ты же сам выше написал, что с обычными SDK и тулчейнами проблем нет.
Да собссно и у меня их нет. Правда я использую подмножество чистей сишечки обычно.
>Потому что если удобной и быстрой доставки всего этого говна
Какого говна? Тулчейнов?
А есть быстрый способ доставки дждки? или питона?
>, люди будут собирать тем, что у них на компе завалялось
Ну вот у меня на компе завалялся питон2, а у тебя завалялся питон3. Чем это отличается от ситуации с плюсами?
https://www.boost.org/doc/libs/1_53_0/tools/bcp/doc/html/index.html
Питон с ждк весят сраные копейки, да и к системным путям гвоздями не прибиты. Их можно даже в репу закоммитить и никто не заметит, лол. И если в прыщах тулчейн можно отпилить от системных путей путём его пересборки, то с доставкой msvc всё гораздо веселее.
И так, проблемы C++ следующие:
* Довольно популярная (хотя и не обязательная) библиотека Буст весит дохуя. Весит она дохуя потому, что в ней дохуя всего есть, например инструмент для генерации парсеров/лексеров. В пыхе например такого инструмента нет, и потому весит он меньше.
* На винде тулчейн нельзя скопировать в папочку и положитьь на локальынй сервер, потому что он срет в реестр недокументированным говном. Причем например если собирать не msvc а gcc на цигвине, то такой проблемы тоже нет.
Ничего не забыл?
Ну да, там будут проблемы похуже, но этой проблемы там нет 🙂
К слову, у майков таки есть готовый докерный образ msvc, но это прям совсем свежатина. Ну и раньше был автономный пакет, но у него свои заморочки (чего-то там не хватало, не помню уже).
У майков есть пакет для сборки говна для питона.
https://www.microsoft.com/en-us/download/details.aspx?id=44266
Там есть консолька и vc*чототам*bat, ну и cl
Но написать сразу и под позикс и под вин32 это надо быть очень крутым
Да если бы только буст... Почти любая крестолиба в собранном виде весит дохуя. И твой код тоже будет весить дохуя. Потому что 90% этого веса - отладочная инфа.
или там хедеронли питушня?
ты статически слинковался с либами petih.lib и syoma.lib
а я с либами stertor.lib и petih.lib
Мало того, что в наши бинари могли попасть разные функции (линкер же сувнет только те символы, котоыре реально нужны), так они еще и по разным адресам попадут.
Зашарить символы не получится
Кстати, зачем майкам сраные стаблибы? Почему даже для динапической ликовки им нужен lib, а gccу не нужен?
Х.з., чтобы линкеру сами dll'ки для сборки не требовались?
На самом деле мне виндовая реализация динамических библиотек больше нравится. Всё-таки символ ищется в конкретной dll'ке. А в прыщах он уже в рантайме берётся из первой попавшейся.
Пр разницу с прыщами не оч понял: ты имеешь ввиду, что имя импортируемого символа содержит имя дллки на винде, а имя сошки на прыщх -- нет?
Да, на венде символ привязан к конкретной дллке, на прыщах он берётся из рандомной сошки. Предвижу ответ "а ты символы не повторяй и всё будет норм".
называй все функции bormand_имя_модуля_имя_функции
Если я чисто виндовый чел, то у меня будут вижалстудийные проекты. Или cmake, если я clion.
Если я гнутый, то у меня убдет ауто-всё с мейкфайлом итд
То0есть жопа именно в том, что надо уметь в десять разных систем сборок?
У жобы тоже есть гредл и мавен и еще гант и еще какая-то хуита
Причем гред может быть на груви или на котлине
Если гнутый - то cmake, автолулзы, qmake и b2.
Проблема в том, что тебе придётся юзать и собирать либы с разными системами сборки. И твой личный выбор их авторов не ебёт.
если я жабаеб, то мне надо уметь в гредл, мавен, базел (им тоже собирают), гант и еще парочку антовых скриптов из говна и палочек
и конечно же никого не ебет, что я там хочу. Правда, либы можно скачать уже собраннеые, и тут конечно С++ в пролете.
В обещм я понял, в чем отсос наконец.
Если я хочу жабью либу, я просто ставлю на нее зависимость из своей системы сборки, и мне приезжает готовый джарник
Мне похуй как там и чем его собирали, хоть перловым скриптом.
А в С++ нет ABI, и потому мне надо его собирать локально своим компилятором. А значит, мне нужно уметь в тот способ сборки, который там есть.
так?
>Если гнутый - то cmake, автолулзы, qmake и b2.
А ещё всякие ninja и mesonы.
https://github.com/systemd/systemd/pull/6266
я собирал как-то под винду опенджк с джаваjx, и всё проклял
там встретил меня и cmake и ninja, и всё это в такой обертке, что собиралось только в цигвине (хотя и вижалсями) и всё равно никогда не собиралось из за тупых багов с кривыми путями
Почему, блин, не поставить CI, и не тетировать сборку своего говна под винду -- не знаю
При том, что это пример из практики разработки на с++. Можешь привести подобный пример из практики разработки под йажу или питон? Я думаю нет.
Представь себе процесс установки нескольких версий третьего питона на Linux без докера. Что будет с симликом python3? Что будет с системными скриптами?
Теперь проблема менее актуальна, а на виндах для MS технологий она осталась.
ХЗ как сейчас, но раньше версия asp.net была привязана к IIS. Просто web.config был IIS-специфичный. А IIS зависел от версии ОС.
Так что для обновления версии фреймворка тебе нужно было обновлять ОС. Да и сейчас не каждый .NET на каждый Windows встанет.
Еще пример: CRT распилили на винде на две части: одна часть идет со тулчейном/студией, другая с ОС.
ОС обновилась -- что-то сломалось. На одну ОС обновления накатили, на другую нет. Все работает по разному.
Так что, как видишь, такие же радости есть везде.
Ну не нравятся плюсы --- пиздуй в питушню. Не будет у тебя билдов по дцать минут. Вообще никаких билдов не будет, а будут тупые эксепшены про отсутствующее поле в рантайме.
И вокруг тебя будут не крутые перцы, которые по какой-то причине чего-то не знают, а прошедшие курсы джангогелрс и денисы поповы.
Пиздуй в жжаву, и не будет у тебя никаких УБ. Вместо этого будут километры боейлерплейтового говна и мемори дампы на 4 гига, и да: тамошние питухи скорее всего тоже нихуя не будут знать, они даже в собственной жабе плавают (заловите галерного жабоёба, и поговорите с ним про хеппнс бефор например)
В конце концов пиздуй в пхп, и имей все вышеперечисленное в одном флаконе, плюс класс Bd с XSS и sql injection.
А что за работа?
Но как-то вылезла проблема с превышением длины mangled-имен (лимит то ли 64 Кб, то ли больше).
А ты на нём на работе пишешь или дома?
Есть ли вообще вакансии, проекты? Какой класс задач стоит решать с D, если это хобби?
У меня валяется книжка Александреску редакции начала десятых, но она увы как памятник.
По мне так в D хорошо писать сетевые тулзы/сервера, т.к. есть либа vibed на фиберах, т.е. он подходит для тех же целей, для которых создавался Go.
Проекты и конторы использующие есть, вакансий не видел.
Я понимаю, что это гуглится, но интереснее послушать из первых рук.
А ты на нём на работе пишешь или дома?
Есть ли вообще вакансии, проекты? Какой класс задач стоит решать с J, если это хобби?
Какой багор )))
А в крестах там можно? Сделать какую-нибудь рекурсивную экспоненциальную питушню.
смешно было бы, если бы линкер просто брал первые 64К, а остальные бы игнорировал.
А какой она берет, если их два? первый символ, или какой придется?
Потому что во втором случае будет оче нерепродюсибл билд
Но смокчут его и все остальные языки и платформы тоже. Везде есть свое говно. Конкретно этого говна нет, но есть другие говны, не менее паскудные.
Почему принято ругать именно С++?
Думаю потому, что С++сники все таки боле-ли-менее смышленые чуваки, и видят недостатки своего языка.
Остальные пыхеры с жабоебами слишком тупы, чтобы понять, что их язык говно
> Остальные пыхеры с жабоебами слишком тупы
PHP (5585)
C++ (2489)
Java (1441)
Если пользоваться твоей классификацией, то эрэнэрщики умнее крестовиков более, чем в два раза. А вот йажевики да, потупее будут.
ты видел когданито чтобы пыхушки ругали свой пых?
https://habr.com/ru/post/142140/
Пока искал статью, наткнулся на другую, с впечатляющим названием:
https://habr.com/ru/post/215777/
Большинство пыхеров не знает никаких других языков, чтобы сравнить
Про отсос джаваскрипта забавно, читану на досуге
питухи думают, что проблема пхп была в плохой реализации ООП, лол
Я мельком глянул, а там какие-то килобайты текстовой психозы, потом пара примеров кода, потом снова психоза. Что-то там про тупых программистов, которые используют питушню в качестве инструментов (не знаю, лучше ли было повысить порог вхождения, чтобы только доктора наук осилили?), что-то ещё.
Примеры какие-то питушарские
Такое ощущение, что у автора проблемы с абстракциями, и он пришёл из какой-нибудь вербозной йажи. Или с PHP, где во всех случаях вместо null возвращают false. Мне кажется, все написали бы
И проверяли бы так:
Хотя, я, разумеется, привык к языку, а он развивает абстрактность мышления и чувство семантики.
1. "== false" использовал редко, в основном в рамках триады true/false/null, когда == false отличается от !
2. "!" использую, когда автор сказал бы "== false"
3. "== null" использую для сравнения с пустотой - отсутствием поля либо явно возвращённой нулстотой
4. "!!" или "Boolean" - когда надо кастануть в Boolean, .filter(Boolean) - когда надо убрать пустошню
5. "" использую, когда автор сказал бы "== true"
И теперь мне чуть больше понятен бугурт автора
1. ! работает для false, 0, "", null, undefined
2. == false работает для false, 0, ""
3. === false работает только для false
Какой багор )))
P.S. Но явное "== false" - питушня вербозная.
Если случайно выбрать не то поле и подставить вместо пароля undefined, то создастся пользователь с паролем "undefined". Если тот же код использовать и при проверке пароля, на сайт можно будет ещё и заходить. Разумеется, с любым паролем.
Отличный способ выстрелить себе в ногу.
хаха, как сказал бы Сёма: "и сколько тебе платят за"
Раньше в питончике было более-менее тихо, но и туда уже набижали
Человек под ником zviryatko получает от меня лучи добра и уважения в далекий 2014-й.
"Linking Weka's code fails with a threshold of 500: phobos contains a few large symbols (one larger than 8kb!) "
На «MSVC» можно прямо mangled имя получить через нестандартный («raw_name()»):
Выведет:
всмысле, как разманглить её обратно? по символьным файлам?
c++filt, во.
Какой багор (((
ова это вебморда к искченджу -- аутгюк веб аксесс. Админко ее поставил, и не асилил получить сертификат на два доменных имен сразу (в пинде это делается в нескока кликов, но не все могут)
Our mission is simple - we strive to be easy to buy from.
We were going to give you a few reasons why our customers buy filters from us but we thought they could say it better...
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1396654
Приходилось через c++filt пайпать выхлоп.
Судя по репортам он и в 15ой и в 17ой, и в 18ой, итд.
(UPD: встретил этот баг в реальном мире на своём компе, когда расследовал — нашёл его в исходниках «OpenJDK».)
Они были известны своим похуистичным отношением к багам.
UPD: я так понял по Russian, что это личная находочка.
Не, я на этот баг только два года назад наткнулся. Потом только погуглил хорошенько и нашёл ещё и чей-то репорт.
На SO хинты, в стиле: скачайте исходники, поправьте седом пару строк и пересоберите perf.
https://stackoverflow.com/questions/33057653/perf-enable-demangling-of-callgraph/34061874#34061874
При том там попутно куча всякой питушни вылезет, при компиляции.
Потом нужно запаковать это в deb и проинсталлить, что превращается в квест на целый день. А всё из-за косоруких уебней, не желающих нормально чинить баги.
Если смотреть с этой точки зрения та же слака будет попроще.
Есть xperf правда на ETW, но простые пользователи про него не знают
Тут недавно https://govnokod.ru/26589#comment541916 репортили об установке серверной убунты.
Да и Роман когда-то рассказывал, что в Яндексе жарились с переходом с 14ой на 16ю.
Нахуй и в пизду. Всё, что я пересобрал, я тупо накатываю в /opt/<имя проги>
и еще чтобы линкер там это всё находил
И обновлять потом вручную
любят же убунтята пирдолица
Белые господа в Слакаваре просто пеерсобирают slackbuild, и он ложится в тоже самое место, куда бы его и Пат положил.
Слакбилд это тупо шелскрипт с опциями. Исправил опцию, и потек.
Никакие ar, tar, и прочий deb тебе не нужны
Да ладно? Слакбилды как раз tar'ки делали последним шагом. В них даже установочный скрипт можно было присунуть, насколько я помню.
Собственно подобной хуйнёй я и собираю бинарники для /opt.
В path далеко не всё нужно. Да и с ld path особых проблем не помню.
На самом деле, в убунте что-то пересобирать надо довольно редко, поэтому мне тупо лень разбираться с пакетами.
но когда я его пересобираю, то мне не нужно его обратно тарить.
А deb нужно?
Слак билд состоит из README, патчей (опционально) и файла
slackbuild.Petuh
В этом файле обычный шел скрипт для сборрки и архивации tgz.
Я его правлю, запускаю, получаю пакет, делаю installpkg и теку
>а и с ld path особых проблем не помню.
ну собери мне libpetuh.so в /opt/hujopt/petih, а потом запусти зависящий от него бинарник
ld_library_path же надо править, не?
или ты это в /etc/ld.so.conf пхаеш?
Да банальным враппером на шелле. Я не хочу пересобранные либы всей системе показывать - ей от этого может стать плохо. Именно поэтому я против установки чего-либо в системные каталоги.
ну если ты что-то суперкастомное ставишь, то да.
А я обычно ставлю тоже самое, что есть в стоке, но с нужными мне опциями.
Да ну, казуальщина всякая. Какой-нибудь gcc'шный тулчейн под arm. Няшный ffmpeg во времена унылого avconf'а и т.п.
Уже давно ничего не собирал, на самом деле. Совсем охомячился.
Насколько всё таки няшная проще и понятнее, просто какой-то рай
Время от времени к алфавиту манглинга добавляются новые буквы из-за того, что в языке появляются новые конструкции.
Первый пример (.?AU?$integer_sequence@H$0A@$00$01$02$0 3$04$05$06$07$08$09$0L@$0M@$0N@$0O@$0P@$ 0BA@$0BB@$0BC@$0BD@$0BE@$0BF@$0BG@$0BH@$ 0BI@$0BJ@$0BK@$0BL@$0BM@$0BN@$0BO@$0BP@$ 0CA@$0CB@$0CC@$0CD@$0CE@$0CF@$0CG@$0CH@$ 0CI@$0CJ@$0CK@$0CL@$0CM@$0CN@$0CO@$0CP@$ 0DA@$0DB@$0DC@$0DD@$0DE@$0DF@$0DG@$0DH@$ 0DI@$0DJ@$0DK@$0DL@$0DM@$0DN@$0DO@$0DP@$ 0EA@$0EB@$0EC@$0ED@$0EE@$0EF@$0EG@$0EH@$ 0EI@$0EJ@$0EK@$0EL@$0EM@$0EN@$0EO@$0EP@$ 0FA@$0FB@$0FC@$0FD@$0FE@$0FF@$0FG@$0FH@$ 0FI@$0FJ@$0FK@$0FL@$0FM@$0FN@$0FO@$0FP@$ 0GA@$0GB@$0GC@$0GD@@std@@) можно разманглить обратно с помощью какой-то утилиты (что-то типа «demangle»), второй пример (.??@e478c360da54a681ea25f5e24da4d618@) похож на криптографическую сумму, которую напрямую разманглить нельзя. Во втором примере спасут только символьные файлы.
https://govnokod.xyz/_24815
Надо хешировать. Чтоб вместо "my_very_long_shitty_mangled_name" было md5("my_very_long_shitty_mangled_name")
https://habr.com/ru/company/ruvds/blog/499322/
> sumanai
> сегодня в 16:41
> Как будто в оригинале оно в 100% случаев верное. Ошибки есть везде.
> Моей разработке (бекенд на PHP) известные ошибки WSL не мешают.
пока читал первую строчку, удивлялся такому ответу
Первые сборки WSL конечно трешовые были, но в последних виндах они вполне рабочие.
в слоу ринг с всл2, ахахха
А я тут говорил много лет назад, что не стоит серьёзно морочить себе голову этой хуетой.
Я не прочитал ни одной статьи по плюсам с прошлого лета, и мне офигенно.
Я не написал ни строчки осмысленного кода на плюсах за последние три месяца, с тех пор, как распустили отдел, где я работал, и мне просто супер.
Я позволил себе хотеть больше никогда не писать на плюсах, и у меня появились крылья.
Читал и мысленно комментировал сентециями с ебаного.it.
Чувствую себя, как пустой сосуд, зато счастливый.
>Использовать строки, где внутри char*, не думая об алиасинге? Нельзя.
>паддинг
>алиасинг
Сишкопроблемы.
Кстати Царь же пояснял что PODы в общем не нужны, и нужно юзать массивы.
Но анскильные животные как обычно не послушали.
Там в треде остро не хватает Царя. Rust-сектанты распоясались, некому урезонить анскильных питухов.
Потому некоторые предпочитают раз в три-пять лет язык менять.
С одной стороны будешь вечно обнулять экспертизу, с другой -- не заебешься
>сишку
Потому что сишка проще. Её достаточно один раз хорошо понять
В C++ одного знания синтаксиса мало. Там надо умение писать и читать всякую метушню на шаблоноговне, понимать что вот так делать можно, а вот так нельзя потому что UB, знание всяких подводных камней, best practices и далее по списку. И да, вся эта херня достаточно много ценности программиста составляет, и она завязана на конкретный говноязык.
например?
> в том языке к этому может быть совсем другой подход.
Это правда, но такая хрень есть со всеми языками.
Переходя на новый язык, петух берет с собой в голове частичку старого.
Я видел как жабисты писались на питоне писать как на жабе, например (один файл -- один класс, сеттеры/геттеры итд)
>например?
Например, нахуй тебе знать про то, что в крестоговне вот та хуйня UB а вот та хуйня не UB, есть public private protected, множественное наследование, friend классы, если ты пишешь на каком-нибудь языке, где этой херни просто нет, типа хаскеля?
Знание понятия "UB" в целом полезно, UB даже в сишечке есть.
>есть public private protected,
Они в джаве есть, и в C#
>множественное наследование
Оно есть в питоне, и даже активно используется
> где этой херни просто нет, типа хаскеля?
а, ты говорил про конкретный язык) А я думал вообще про любой.
Твою фразу я понял как " питушни, которая в ЛЮБОМ другом языке будет вообще нахуй не нужна,"
Есть языки, где нет
> Они в джаве есть, и в C#
Есть языки, где нет
> Оно есть в питоне, и даже активно используется
Есть языки, где нет
> а, ты говорил про конкретный язык) А я думал вообще про любой.
Я говорил что некая питушня в каком-то другом языке может быть нахуй не нужна. Про любой - не любой я вообще не уточнял.
> Есть языки, где нет
Это только те хорошие языки, где код просто не скомпилируется, если ты не докажешь, что вон в ту функцию передал отсортированный массив квадратов простых чисел, лежащих в пределах от 100500 до 10005000. В остальных найдётся контрактная питушня, которая за себя не отвечает. Не так разрушающе, как UB, но по эффектам где-то на том же уровне.
>Они в джаве есть, и в C#
Синтаксический мусор для анскильных отбросов.
Единственный полезный модификатор — сопзт.
Но его отребье украло из Сишки.
Хотя возможно стоило сделать наоборот — немутабельные по умолчанию, и модификатор для включения мутабельности.
Ты либо экспортируеш символ из модуля, либо нет.
В джаве еще более глупая концепция пакетной видимости есть. Кажется что почти ничто в крупном проекте не бывает пекедж визибл
Как writeObject в джаве?
Это чтб сразу на говнокод?
https://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html
Хотим read-only? @lombok.Getter
Хотим write-only? @lombok.Setter
Хотим public? @Getter @Setter
Хотим transient? @JsonIgnore
Хотим private? Ничего не пишем, оставляем package private
или пишем руками, да.
Зачем это еще не часть стандартной либы? зачем?
Почему в С# давно часть?
Из них можно собрать что угодно, написав ЛЮБУЮ логику обработки.
Допустим в жабе из коробки нету никакого write-only модификатора.
А можно написать аннотацию, которая пускает только на EDT треде? Или только если ты ауентифицировался как админ (и в тредлокале лежит токен)?
Я так когда-то ставил квоты количества запросов по rmi.
А так запахло питонячими декораторами.
К примеру, в джаве есть @cache
Угадайте, что делает
А классы, имеющие доступ матчить хоть по регулярке.
Так и есть.
АОП кстати в последнее время часто ебошат именно аннотациями. Всякие @Around и @Before
>запахло питонячими декораторами
Да. По сути то же, только более оопешно и строготипизированно.
Пример с паролем уберохуенен
Раньше для этих целей использовали маркерные интерфейсы.
Сейчас завезли сложную систему аннотаций с метаданными.
Зачем питушиться с модификаторами — загадка.
+1. Существует не так много поводов делать что-то мутабельным.
>сишнки
ну во-первых кажется что появился он в с++, а отткуда перекочевал в сишку (или нет?)
во-вторых const в C# гораздо тупее крестового же
По умолчанию mutable, но если const, то не mutable, а если mutable, то всё таки не const, но я бы еще добавил force_const, который борол бы mutable
GC можно отключать в любом месте атрибутом @nogc.
Но наличие GC ломает привычный подход с RAII.
Итог - сойдет вместо питона для среднего размера скриптов (особенно если GIL напрягает).
Без RAII писа́ть можно, но придётся себя контролировать, чтобы не забыть что-то освободить.
Кстати, почему в веб-браузерах утечки памяти, хотя их писа́ли на языках с RAII?
При использовании с «FastCGI» обычно даже сбрасывают FastCGI-сервер через каждые 500 запросов, чтобы нейтрализовать утечки в самом интерпретаторе, если таковые вдруг имеются.
https://govnokod.ru/26026#comment514049
Вообще в настройках интерпретатора есть параметр memory_limit, ограничивающий выделение памяти.
https://www.php.net/manual/ru/ini.core.php#ini.memory-limit
GC заметает мемори лики под ковер усложняя их поиск, вот и всё
Например, написа́ть программу, которая вычисляет сумму 100 чисел. Поскольку размер известен, память будет выделяться статически. А если нужно сложить 199 чисел, нужно просто эту программу вызвать два раза (при втором вызове вместо одного аргумента подставить результат первого вызова).
$ acummulate sum 199
Втом же Сширапе можно
Шарпей может построить сложные сутрктуры данных без единого гвоздя вызова ГЦ.
Жабоёбу такое и не снилось
Фортеры засели в большинстве своём в омерике, в среде контроллеров трамваев и прочего лоу левел.
Хотя в рашке были удачнве попытаки на десктоп и серверные, но сейчас почему-то тишина.
Доступ к диску есть, вывод на экран есть, зачем вообще ОС??
У тебя есть доступ к памяти и IO, зачем тебе какие-то интерфейсы?
Забыл, как досовые программы работали напрямую с sound blasterом? IO=220?
> нет менеджера памяти
Если у тебя работает одна программа, то зачем тебе менеджер памяти? Правда, если ты решишь повесить обработчика прерывания, то придется как-то разруливать память, но можно обойтись и пулингом.
>бинарники длиннее 512 байт надо самому грузить.
Если не переключать процессор в защищенный режим, то проблемы с большими бинарниками не будет. нет памяти -- нет проблемы.
Я вот на ARM'овом контроллере без всяких биосов могу свой код запустить и с железом напрямую работать. Доступ к флешке есть, в сериал порт срать можно. Значит я запускаю свой код на операционке нулевого размера? Лол.
что не так?
Или это про (U)EFI?
А кстати ты не прав: в El Torito можно указать несколько секторов, и биос их всех сам загрузит. Но только с сидирома же надо грузиться. А с флопи или хдд -- да, больше блока не загрузишь
ЗЫ. ненавижу грамматики 0 уровня
Она то смеется, то плачет, то злится
Говно в том, что рантайм D требует этот GC и если постоянно его держать выключенным, память утечет.
Я пытаюсь понять, чего боится j123123.
Значит, кучу фишек мы использовать не сможем. Это плохо. С другой стороны, ничего не утечёт, потому что функции, требующие сборщика мусора, мы вызвать не сможем.
В языке D это иначе.
Значит, если указать @nogc в мейне, то мы вообще не сможем из программы вызывать функции, которые используют мусоросборщик.
Параметры: totalSize
Объем памяти в байтах для выделения без запуска сборки мусора. Он должен быть меньше или равен размеру временного сегмента.
Если я правильно понял, он выделяет блок памяти, но внутри NoGCRegion временно приостанавливает сборку. Это всего лишь временная задержка сборки мусора, чтобы увеличить скорость на участке, обрабатывающем что-нибудь в реальном времени.
>Для общего развития давно уже хочу освоить Python, но отпугивает толщина
лол, кажется что проще выучивания питона ничего не может быть. Разве что пивка попить проще
Angiotensin-converting enzyme, он же ангиотензин-превращающий фермент?
Формат архива, который разрабатывали как альтернативу «RAR»?
arj x prince.arj
И желтый свет над ним
А рар ты видел наверняка этот
https://i.piccy.info/i7/c42fed0e64bfe6c86de10ea96cf7b559/4-57-1886/35790228/RAR_102938.png
>memory in use: 363KB
милениалы соста6
https://macsplex.com/28423
может и пеерстали.. Я в какой-то момент ушел на фар, и напрямую винрар инвокать перестал
Огромное количество людей пользовалось (и до сих пор пользуется) wincommander, который последение 20 лет называется тоталкоммандер
Кстати, у его есть 16ти битная версия. Для win311
Выглядела такой же страшной как CORBA. Никогда не пользовался.