- 1
- 2
https://upload.wikimedia.org/wikipedia/commons/0/0e/Bjarne-stroustrup_%28cropped%29.jpg
https://cdn.jpg.wtf/futurico/cb/3e/1586622557-cb3e3c00a16ab8b849e9464c1e3037ea.jpeg
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
https://upload.wikimedia.org/wikipedia/commons/0/0e/Bjarne-stroustrup_%28cropped%29.jpg
https://cdn.jpg.wtf/futurico/cb/3e/1586622557-cb3e3c00a16ab8b849e9464c1e3037ea.jpeg
Шок! Рецепты защиты от коронавируса, от создателя языка C++. Надо всего лишь...
j123123 13.04.2020 00:20 # 0
BECEHHuu_nemyx 13.04.2020 00:40 # 0
http://i.ytimg.com/vi/6lJwgA0bNCc/maxresdefault.jpg
KOPOHABuPYC 13.04.2020 21:32 # −1
Спирт можно и выпить, а дверные ручки опрыскивать из передней форсунки.
BECEHHuu_nemyx 13.04.2020 00:29 # 0
https://borodatiyvopros.com/wp-content/uploads/2020/03/8687_140895_5.jpg
Rooster 13.04.2020 00:44 # 0
Fike 13.04.2020 00:51 # 0
BECEHHuu_nemyx 13.04.2020 01:23 # +1
j123123 14.04.2020 12:15 # +1
Сначала возьмите человека, который программирование вообще нихуя не знает, обучите его языку Си. Можно конечно начать с какого-нибудь паскаля, а потом переучить на Си, то один хрен. Потом покажите ему язык очень высокоуровневый, например какой-нибудь диалект лиспа, ту же Scheme например. Пусть прорешает ченить из SICP. После этого, если такому человеку показать кресты, он просто будет блевать от них
3.14159265 14.04.2020 19:35 # +3
На этом этапе фейл. Получим Тараса-сишкохейтера.
А что это в массивах нету размера?
А что это массив передаётся как укозатель?
А почему такой ублюдочный switch?
А сдвиг это тоже UB?
А почему в языке так много UB?
А почему enumы такое говно? В паскале как надо сделали.
А где тут нормальные строки? char*? Фу блядь.
А почему 010!=10?
итд.
Человек отчаивается, идёт учить С++.
j123123 15.04.2020 02:40 # 0
С++ это в основе то же говно что и Си, только там сверху еще нового говна накидали, с новыми UB-ами, новыми способами отстрела ног и припизданутым стандартом, который ни один компилятор полностью не реализует. Так что учить крестоговно после сишки это как сказать "Ну вот навернул я этого собачьего дерьмища, но как-то неочень, надо б разбавить его свинным дерьмищем"
1024-- 15.04.2020 09:10 # 0
После сраной сишки, где деревянные игрушки и ничего нет из коробки, кресты кажутся образцом здравого смысла.
j123123 15.04.2020 10:10 # 0
Именно поэтому я и написал, что на кресты надо смотреть после сишки и после какого-то намного более высокоуровневого языка. Тогда кресты будут выглядеть как кривой набор уродских костылей над сишкой, чем они и являются
1024-- 15.04.2020 10:12 # 0
3.14159265 14.04.2020 19:43 # +3
А зачем в сишке столько неявных конверсий типов?
А что такое signed char unsigned char? Ээээ.
А в Паскале компилятор не давал мне спутать сравнение и присваивание if (a=5).
А что инкременты тоже возвращают значение?
while (*a++=*b++); это идиоматично?
А что выведет код i+= ++i + ++i?
UB?
Идите нахуй со своей сишкой.
bormand 14.04.2020 20:02 # +2
... и чем от них отличается обычный char.
Что такое strict aliasing и как всё-таки посмотреть на биты во float'е?
Почему вместо модулей какая-то тупая фигня, которая ещё и тормозит?
Почему в функцию без аргументов их можно передать сколько угодно?
Зачем strcpy и strcat возвращают указатель на начало буфера?
guest8 14.04.2020 23:12 # −999
3.14159265 14.04.2020 23:50 # +1
j123123 15.04.2020 02:42 # 0
gost 15.04.2020 03:19 # +1
bormand 15.04.2020 09:35 # 0
Вроде как собираются прочистить всё это говно вилкой и выделить хедера, которым не нужен рантайм и операционка. Х.з. насколько это будет юзабельно.
j123123 15.04.2020 13:03 # 0
Получается сишка с каким-то крестовым полурабочим огрызком
>The libgcc versions assume a Unix-like userspace, so we should define our own. If we’re trying to avoid dynamic memory allocation, a call to delete is probably a serious bug, and we should likely panic.
3.14159265 15.04.2020 17:31 # 0
А в виртуальных деструкторах.
However, operator delete is required whenever we give a base class a virtual destructor—as is standard practice—even if we never heap-allocate an object of that class.
1024-- 15.04.2020 09:25 # 0
Пусть под микропердоллеры пишут какие-нибудь заедушные питушни, которым не хватило нормальной работы.
666_N33D135 15.04.2020 16:03 # 0
j123123 15.04.2020 02:46 # 0
А в крестах это изменили?
> А в Паскале компилятор не давал мне спутать сравнение и присваивание if (a=5).
А в крестах это изменили?
> А что инкременты тоже возвращают значение?
А в крестах это изменили?
> А что выведет код i+= ++i + ++i?
А в крестах это изменили?
> UB?
А в крестах это изменили?
> Идите нахуй со своей сишкой.
И с крестоговном тоже нахуй идите
j123123 15.04.2020 02:53 # +1
Rooster 15.04.2020 06:41 # 0
guest8 15.04.2020 07:20 # −999
1024-- 15.04.2020 09:30 # 0
bormand 15.04.2020 09:39 # 0
Зачем в сишном софте делают кококонфиги, хотя можно просто перекококонпелировать?
1024-- 15.04.2020 10:00 # 0
Ну разве что в Debug-версии не вкомпиливать параметры, а оставить подстановку в рантайме, чтобы можно было быстро скомпилировать и проверить.
j123123 09.05.2022 16:25 # 0
Но вот если у тебя контроллер, то запихнуть компилятор или какое-то JiT-говно в него, которое б пересобирало прошивку в самом контроллере при изменении настроек - малость проблематично.
guest8 15.04.2020 15:06 # −999
bormand 15.04.2020 15:39 # 0
guest8 15.04.2020 15:42 # −999
1024-- 15.04.2020 20:17 # 0
Мой любимый пример - когда класс-родитель параметризируется ребёнком.
guest8 15.04.2020 20:20 # −999
1024-- 15.04.2020 20:32 # 0
Вообще, если подумать, можно вообще всё ООП в C++ очернить. Допустим, если класс не final, то он знает, какие методы будут у его детей.
gost 15.04.2020 20:33 # 0
Это как?
1024-- 15.04.2020 20:35 # 0
3.14159265 16.04.2020 14:26 # 0
1024-- 16.04.2020 16:08 # 0
Needless 16.04.2020 16:09 # 0
guest8 16.04.2020 16:10 # −999
guest8 15.04.2020 20:36 # −999
gost 15.04.2020 20:25 # +2
Какой «Curiously recurring template pattern» )))
BECEHHuu_nemyx 15.04.2020 20:36 # +1
guest8 15.04.2020 20:37 # −999
3.14159265 15.04.2020 15:04 # +1
Под любой примитивной абстракцией (будь-то bool, char, enum) скрывается обычный int. Который хуй пойми что и равен размеру регистра.
char сам по себе — особый пиздец.
https://stackoverflow.com/questions/2172943/size-of-character-a-in-c-c
В целом С++ гораздо более строготипизирован чем сишка.
В крестах пытались всё это дерьмо починить.
Хотели как лучше — получилось как обычно.
bormand 15.04.2020 15:43 # 0
Угу, у крестов три разных чара (char, signed char и unsigned char - разные типы) а не два, как у сишки. Прогресс, блджад.
guest8 15.04.2020 15:45 # −999
bormand 15.04.2020 15:47 # 0
guest8 15.04.2020 15:48 # −999
bormand 15.04.2020 15:52 # 0
guest8 15.04.2020 15:57 # −999
j123123 15.04.2020 15:48 # 0
guest8 15.04.2020 15:49 # −999
bormand 15.04.2020 16:20 # 0
j123123 17.04.2020 11:10 # +1
Ну и можно еще отличить например по наличию UB при знаковом переполнении
bormand 17.04.2020 11:20 # 0
j123123 15.04.2020 15:51 # 0
3.14159265 15.04.2020 15:53 # 0
Его специально добавили, поскольку это не char. Хотя c другой стороны:
Прав был Царь — массив, единственно полезная структура данных.
bormand 15.04.2020 15:54 # 0
guest8 15.04.2020 15:56 # −999
bormand 15.04.2020 15:57 # 0
Если мне настолько похуй на представление строки, то и utf-8 в обычных чарах сойдёт.
guest8 15.04.2020 15:59 # −999
bormand 15.04.2020 16:04 # 0
guest8 15.04.2020 16:13 # −999
bormand 15.04.2020 16:18 # 0
В общем-то эта свистопляска с wchar_t и отдельным "юникодным" API - огромный фейл, имхо. MS думало, что 16 бит хватит для всех и можно будет реально работать с элементами строки как с символами. Но юникод вырос и обосрал всю эту затею. А делать ещё одно API с 32-битными символами они уже не решились.
guest8 15.04.2020 16:21 # −999
bormand 15.04.2020 16:22 # 0
guest8 15.04.2020 16:26 # −999
bormand 15.04.2020 16:28 # 0
Юникод настолько засрали всякими композитными символами и комбо-смайликами, что без специальных либ с ним не поработать даже в char32_t. Т.е. представление строки для программиста не имеет никакого значения, лишь бы либы хавали.
guest8 15.04.2020 16:30 # −999
bormand 15.04.2020 16:32 # 0
А потом твою прогу купят какие-нибудь арабы...
Максимально переносим какой-нибудь QString, который полностью скрывает все детали своей реализации и может конвертиться хоть в wchar_t хоть в char в нужной кодировке. Ну и даёт доступ к символам кодепоинтам как QChar/char32_t (и то тут встаёт вопрос о нормализации всяких ё).
guest8 15.04.2020 16:39 # −999
bormand 15.04.2020 16:40 # 0
bormand 15.04.2020 16:45 # 0
Ага, тогда в прыщах текст надо выводить через ncurses. Что, кстати, не лишено смысла - они умеют считать длину строки в соснольных знакоместах, емнип.
666_N33D135 15.04.2020 17:18 # 0
guest8 15.04.2020 17:22 # −999
bormand 15.04.2020 16:43 # 0
guest8 15.04.2020 16:47 # −999
3.14159265 15.04.2020 16:14 # 0
bormand 15.04.2020 16:15 # 0
gostinho 15.04.2020 16:36 # 0
666_N33D135 15.04.2020 16:39 # 0
gostinho 15.04.2020 16:51 # 0
guest8 15.04.2020 16:52 # −999
BECEHHuu_nemyx 15.04.2020 16:58 # 0
Для арифметики просто char может быть signed или unsigned, в зависимости от компилятора (или в зависимости от ключиков компилятора), но у него есть одно отличие и от signed, и от unsigned: он как-то по-другому работает с указателями.
guest8 15.04.2020 17:00 # −999
BECEHHuu_nemyx 15.04.2020 17:05 # 0
guest8 15.04.2020 17:09 # −999
bormand 15.04.2020 17:12 # 0
gostinho 15.04.2020 17:13 # 0
j123123 15.04.2020 18:54 # 0
Вообще-то нет. https://govnokod.ru/26318#comment519631
Эти вариации char работают с указателями совершенно одинаковым образом
BECEHHuu_nemyx 16.04.2020 12:36 # 0
Strict aliasing is the requirement from C99 that an object be accessed only by its own type or by char.
C99 6.5 7:
An object shall have its stored value accessed only by an lvalue expression that has one of the following types:
— a type compatible with the effective type of the object,
— a qualified version of a type compatible with the effective type of the object,
— a type that is the signed or unsigned type corresponding to the effective type of the object,
— a type that is the signed or unsigned type corresponding to a qualified version of the effective type of the object,
— an aggregate or union type that includes one of the aforementioned types among its members (including, recursively, a member of a subaggregate or contained union), or
— a character type.
j123123 16.04.2020 12:45 # 0
Нет. Все эти три хуйни - character types
§ 6.2.5, 3
> The three types char, signed char, and unsigned char are collectively called the character types.
gostinho 15.04.2020 17:00 # 0
bormand 15.04.2020 17:01 # +1
1024-- 15.04.2020 20:27 # 0
И у него char работает как надо, знаковые работают как надо без проблем при переполнении, при получении NaN программу пучит, сравнение чисел тоже работает.
0_14sun 15.04.2020 22:00 # +1
j123123 16.04.2020 11:57 # +1
> C++ Modules introduces an exciting new preprocessor directive! Bet you weren’t expecting that, eh? After all, Modules are supposed to negate some uses of the preprocessor, right?
Какой багор)))
gost 16.04.2020 13:46 # +5
gost 16.04.2020 13:46 # +4
> header-unit import
> lexical translation phases
> importable-headers
> Global Module Fragment
> module-declaration
> only preprocessor directives may appear in the global fragment
> decl-reachable
> dependent expression
> first phase of name-lookup
Сука, какого хуя? Ладно бы это были просто подробности для разработчиков компиляторов и любознательных людей, а обычные программисты могли писать «import zaebis_maker;» и течь — нет, хуй там плавал! Без знаний фаз, ебать их в сраку, лексической трансляции кода, определения отношения decl-reachable (оно, кстати, транзитивно!) и прочей хуйни невозможно узнать, почему простой, понятный и логичный код отваливается с невразумительной ошибкой:
BECEHHuu_nemyx 16.04.2020 13:54 # +1
Desktop 16.04.2020 14:03 # +1
Next step: weaponize it.
3.14159265 16.04.2020 14:30 # +2
Неудивительно что «вореции» родились на крестофоруме.
j123123 16.04.2020 15:31 # 0
gost 16.04.2020 15:41 # +2
Needless 16.04.2020 15:44 # 0
guest8 16.04.2020 14:01 # −999
BECEHHuu_nemyx 16.04.2020 14:53 # +1
guest8 16.04.2020 14:55 # −999
BECEHHuu_nemyx 16.04.2020 14:59 # +1
https://ru.wikipedia.org/w/?curid=5269
guest8 16.04.2020 15:01 # −999
BECEHHuu_nemyx 16.04.2020 15:06 # 0
j123123 18.04.2020 14:26 # 0
Needless 16.04.2020 15:41 # 0
guest8 16.04.2020 16:13 # −999
BECEHHuu_nemyx 16.04.2020 16:26 # 0
«Iki-» похоже на префикс класса («венгерка»), как, например, «Ki-» в «Kiswahili» (самоназвание «суахили»).
4_14sun 16.04.2020 19:02 # 0
1024-- 16.04.2020 16:22 # 0
guest8 16.04.2020 14:49 # −999
Needless 16.04.2020 15:39 # 0
BECEHHuu_nemyx 16.04.2020 15:09 # 0
Кикимора. Рикичик!
Бросаются в объятья друг другу.
Акулина Ивановна. Ишь-мышь?
Кикимора. Ишь-мышь-перемышь!
Катя. Невежливо говорить на иностранном языке, если другие не понимают!
Акулина Ивановна. Не перебивай, когда старшие разговаривают! (Кикиморе.) Чучурик?
Кикимора. Кочарыг!
Катя. Забирайте вашу книжку, а я пойду, если так!
Акулина Ивановна. Ты не обижайся. Это же моя родственница. Семиюродная сестра. Мы с тобой, Кики, сколько лет не видались?
Кикимора. Не то шестнадцать, не то триста пять. Точно не помню.
Акулина Ивановна. Василиса здесь?
Кикимора. А где ж ей быть? До чего заколдована, прямо не знаю, до чего! (Шепчет Акулине Ивановне на ухо. Та отвечает тоже шёпотом.)
Катя (совсем обиделась). Это нечестно. Я Василисину траву принесла, я волшебную книжку нашла, я вам помогаю, а вы нарочно шепчетесь, чтобы я не понимала! Как вам не стыдно!
Акулина Ивановна. Прости, пожалуйста. Триста лет не говорила по-тарабарски. Ну, сначала она про свой бант лопотала, потом про родных-знакомых. Она говорит: в чулане Василиса. А я говорю: во дворец как попасть?
Нина Гернет. Катя и чудеса.
guest8 16.04.2020 15:18 # −999
BECEHHuu_nemyx 16.04.2020 15:48 # 0
Про «Катю и чудеса» я узнал благодаря фильму «Весёлое волшебство» (Киностудия им. М. Горького, 1969). Мне в том фильме понравился интерьер: школа в бывших монастырских постройках.
BECEHHuu_nemyx 16.04.2020 16:06 # 0
Тут же ночью она схватила сантиметр и нервно измерила длину комнаты. Ей пришлось выйти в коридор и уткнуться в его противоположную стенку, и то оказалось всего шесть метров семьдесят сантиметров.
— Значит, кончится тем, что он сломает стенку и всунет хвост в чужую квартиру! Согрели змею на своей груди… — горько сказала мама.
Всю ночь она не спала, а на утро потребовала, чтобы крокодила не было.
И хотя Митя с Бремом в руках доказывал, что сам ученый считает эту цифру — десять метров — преувеличенной, мама утверждала, что, если бы это была неправда, Брем об этом не писал бы.
Когда же Митя прочел вслух, что крокодил достигает таких размеров только через сто лет, мама заявила, что это дореволюционное издание и что Брем устарел.“
Needless 16.04.2020 16:10 # 0
guest8 16.04.2020 16:16 # −999