Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 1011 93 254
C++ thread #150 /cpp/ Аноним 02/12/24 Пнд 13:08:36 3333359 1
095e938ccdf482a[...].png 384Кб, 850x676
850x676
Аноним 02/12/24 Пнд 15:35:11 3333470 2
_create_coket
Аноним 02/12/24 Пнд 21:00:21 3333680 3
Аноним 03/12/24 Втр 03:21:17 3333772 4
Лучшая IDE для плюсиков не Clion для gnu/linux?
Аноним 03/12/24 Втр 03:21:56 3333773 5
Вопрос к сеньорам Аноним 03/12/24 Втр 11:25:19 3333929 6
Screenshot2024-[...].jpg 306Кб, 2400x1080
2400x1080
Давно хочу узнать если создам массив или кучу большого размера, может даже близко к максимальному свободному объёму. Будет ли эта память фрагментирована в памяти программы( ведь мы знаем что память в проге виртуальная-изолированная). Если я возьму адрес первого элемента и прибавлю к нему размер точно ли это будет адрес следующий за массивом? А если я прибавлю половину размера, будет ли там середина массива-кучи?
Может компилятор следит за этим или создаёт там скрытую функцию следящую чтобы моя прога получила именно тот адрес?
Аноним 03/12/24 Втр 11:36:13 3333933 7
>>3333929
>Будет ли эта память фрагментирована в памяти
нет
Аноним 03/12/24 Втр 11:39:39 3333935 8
>>3333929
В виртуальной нет, в физической что угодно может быть. Вплоть до того что в виртуальной памяти это два разных адреса, но оба физически на один участок памяти указывают.
Аноним 03/12/24 Втр 12:06:22 3333958 9
>>3333933
>>3333935
Т.е. можно совершать любые арифметические действия с адресом. Все адреса ячеек идут друг за другом?
Аноним 03/12/24 Втр 12:11:45 3333960 10
>>3333958
>Все адреса ячеек идут друг за другом?
Подумай, как и где ты места разрывов хранить собрался, что бы при инкременте они проверялись. Прсмотри на реализацию malloc
Аноним 03/12/24 Втр 12:23:33 3333969 11
>>3333960
>Прсмотри на реализацию malloc
Когда-то я скачал исходники gcc, посмотрел, охренел от объёма чтения и непоняток что там происходит и удалил/просто скомпилировал и забыл.
Аноним 03/12/24 Втр 13:41:04 3334047 12
>>3333969
>Когда-то я скачал исходники gcc
Это конпелятор, к стандартным либам он не имеет отношения. Подтяни базу, многое станет понятней.
Аноним 03/12/24 Втр 14:44:53 3334088 13
Аноним 03/12/24 Втр 18:55:35 3334252 14
Какая книжка лучше: Роберт Лафоре - Объектно-ориентированное программирование C++ или Брюс Эккель - Философия С++?
Аноним 03/12/24 Втр 19:06:29 3334268 15
>>3334252
ОДНА КНИГА ничё не решает. Мало знать что-то, нужно уметь применять на практике. Не важно, прочтёшь ли ты 100 раз эту книгу, это всё равно одна ёбанная книга. Чтобы был результат, нужно минимум книг 10. И не по одной теме, а по нескольким, не то что один компьютер сцаенс задрочил или одни алгоритмы и сидишь.
Аноним 03/12/24 Втр 19:23:22 3334285 16
Есть в С++ какой-нибудь удобный сборщик проектов, чтобы можно было написать:
builder new [project_name] - создать проект
builder build - собрать проект
builder run - запустить бинарник
Аноним 03/12/24 Втр 20:09:12 3334318 17
>>3334285
вроде в мейке цели есть
Аноним 03/12/24 Втр 20:12:14 3334319 18
Где читать про построение зависимосей в проекте? Вот сейчас столкнулся с проблемой. Есть 2 класса каждый из которых генерирует события при приеме данных по сети и должен дернуть другой класс при обработке. То есть у меня появляется 2 объекта каждый из которых зависит от другого. Как красиво решать такие проблемы?
Аноним 03/12/24 Втр 21:26:21 3334349 19
Аноним 03/12/24 Втр 21:40:55 3334371 20
>>3334285
>>3334319
Лол блять. Уже почти 2025-ый год на дворе, люди всё ещё утверждают что С++ ЭТО БАЗА. Но при этом спотыкаются на элементарных вопросах типа "как установить зависимости" и "как развернуть проект". Сука, даже в фортране уже стоит менеджер пакетов по дефолту. В ФОРТРАНЕ, прикинь!!!! Лолирую с долбичей.
Аноним 03/12/24 Втр 21:56:58 3334383 21
>>3334319

B.cpp
class A;
class B { Q& func(); };

A.cpp
class B;
class A { B& func(); };
Аноним 03/12/24 Втр 22:05:47 3334389 22
>>3334319
правила такие же как в си - в заголовках объявляешь классы с полями операторами и названиями методов, в cpp файлах определяешь вызовы для методов/операторов, заголовок инклюдишь во все файлы где используется класс.
Аноним 03/12/24 Втр 22:06:00 3334390 23
>>3334371
> даже в фортране
Потому что ты имеешь в виду какой-то конкретный конпелятор фортрана, где все либы и всех разрабов можно пересчитать по пальцам левой руки Ельцина.
Аноним 04/12/24 Срд 01:24:29 3334468 24
Аноним 04/12/24 Срд 03:01:38 3334476 25
>>3334319
Вопрос не про то заголовки, а про само написание кода. Объявить взаимно рекурсивные классы я могу, а вот создать их как?
Аноним 04/12/24 Срд 05:14:57 3334493 26
>>3334476
Тогда объясни внятно что ты пытаешься сделать? Что значит "не объявить а создать"?
Аноним 04/12/24 Срд 12:37:28 3334635 27
Что думаете по поводу книжки Лоспинозо Дж. - C++ для профи. Молниеносный старт? Если есть небольшой бэкграунд на си, то смогу по ней выучить С++? Или лучше читать Эккеля - Философию С++? Но она старая, там С++ 98 рассматривается.
Аноним 04/12/24 Срд 12:51:36 3334651 28
Конфы в тг у вас нету?
Я короче не понял что в вижуал студио докачивать надо чтобы все компилировалось нормально и работало
Аноним 04/12/24 Срд 13:40:21 3334687 29
изображение.png 52Кб, 765x325
765x325
изображение.png 69Кб, 1190x463
1190x463
>>3333359 (OP)
Почему цикл видит только первый элемент? При том что в других функциях подобный цикл с тем же словарём норм отрабатывает
Аноним 04/12/24 Срд 13:49:09 3334698 30
Аноним 04/12/24 Срд 14:22:50 3334723 31
>>3334635
Нах тебе книги в 2025 году? Берёшь нейронку и просишь пояснить тебе, современные нейронки для кодинга стандарт крестов наизусть знают. Можешь писать код промптингом и на практике вникать, нейронки уже пишут локальный код не хуже макак.
Аноним 04/12/24 Срд 14:46:22 3334731 32
>>3334723
Я предпочитаю изучение языков программирования через книги
Аноним 04/12/24 Срд 15:06:42 3334739 33
>>3334731
Собираешься писать книги, а не код?
Аноним 04/12/24 Срд 15:24:22 3334755 34
>>3334739
Было бы неплохо. Сразу бы стал уважаемым человеком.
Аноним 04/12/24 Срд 16:01:51 3334785 35
>>3334493
Создать инстансы двух взаимнорекурсивных классов
Аноним 04/12/24 Срд 16:03:01 3334787 36
>>3334635
C++98 не читай. Возьми страуступа хоть, хз. Хуже не будет, все равно одной книги мало
Аноним 04/12/24 Срд 16:48:15 3334822 37
>>3334785
Класс по сути обычная структура, с той лишь разницей что у нее есть приватная/публичная части, поэтому так же как в си сделай сверху объявление а ниже определение (как тебе показали).


Естественно это будет работать только для определения аргуметов методов или указателей, наследоваться или объявлять локальную переменную класса/структуры, размер которой определяется где то внизу, нельзя по понятным причинам.
Аноним 04/12/24 Срд 16:55:35 3334826 38
>>3334822
Смотри что у меня есть. В A есть указатель на B который инициализируется в конструкторе и нигде больше. В B такой же указатель на A. Как теперь создать a и b, чтобы в b был указатель на a, а в a указатель на b? В таком виде никак, но это то, что в идеале нужно получить по логике программы. Как выкрутиться?
Аноним 04/12/24 Срд 16:59:10 3334828 39
>>3334787
Почему-то как раз по С++98 написаны самые крутые книги, а по новым стандартам книг мало, да и те от ноунейм авторов.
Страуструп вроде не очень как писатель, он там какой-то справочник написал, а не учебник.
Аноним 04/12/24 Срд 17:04:34 3334831 40
>>3334826
Почему нельзя?

class A;
class B;

class B {
A a;
public:
B(); // jghtltkbim yb;t
}

class A {
B
b;
public:
A(); // jghtltkbim yb;t
}

И хоть в том же самом заголовке если нужно чтоб инлайнилось (обычно в самом конце дописывают ) ну или или в цпп файле.

B::B() { a = new A() }
A::A() { b = new B() }
Аноним 04/12/24 Срд 17:06:23 3334833 41
>>3334828
Не надо читать книги по C++98, потому что язык очень изменился за это время, соответственно изменился подход к написанию программ. Да, какие то вещи, типо POD типов, указателей, сильно не изменились (хотя изменения есть). А так даже способы инициализации примитивных типов данных изменились. Не значит, что классическое int i = 0 не сработает, но знаний единственного такого способа инициализации мало.
Я плюсы не по книгам учил, а по лекциям, так что хорошую подсказать не могу. В любом случае, одной, даже супер крутой книги не хватит. По каким нибудь шаблонам или многопоточее спокойно материала еще на 1 толстенную книгу по каждой теме
Аноним 04/12/24 Срд 17:08:08 3334834 42
>>3334833
В вакансиях пишут ещё какой-то Boost нужен. По нему есть хорошие книги?
Аноним 04/12/24 Срд 17:08:27 3334835 43
>>3334831
Ты когда в мейне сделаешь инстансы A и B, a и b будут новыми указателями, а не указывать на созданнве в меейне инстансы A и B
Аноним 04/12/24 Срд 17:11:41 3334838 44
>>3334834
Не ебу. Boost огромный. Вряд ли тебе все нужно. Еще в вакансиях пишут про область знаний. Например, понимание многопоточки, опыт написания статических анализаторов, умения работать с сетями. Для всего этого будут свои (если будут) либы из буста. Их и нужно знать как инструмент написания многопоточки, сетевых приложений и тд и тп. А просто знание буста в вакууме никому не нужно
Аноним 04/12/24 Срд 17:13:05 3334840 45
А так, у буста дока хорошая. Но сначала нужно плюсы выучить без бустов всяких. Не думай пока об этом
Аноним 04/12/24 Срд 17:16:06 3334842 46
>>3334838
>>3334840
Я думал, это что-то типа фреймвёрка. Как в сишарпе асп.нет или в джаве спринг.
Аноним 04/12/24 Срд 17:17:01 3334843 47
>>3334842

>Как в сишарпе асп.нет или в джаве спринг.
Не ебу что это. Буст это огромный набор самых разных библиотек
Аноним 04/12/24 Срд 17:17:48 3334844 48
>>3334835
Ну я же не знаю что ты там делаешь, поправь под себя ебаныврот:
B::B(A p) { a = p; }
A::A(B
p) { b = p; }
Аноним 04/12/24 Срд 17:18:48 3334845 49
>>3334844
Ну и как ты в мейне создашь инстансы так, чтобы они друг друга имели в членах класса?
Аноним 04/12/24 Срд 17:28:50 3334852 50
>>3334845
ну блять добавь оператор+=(B &b)
добавь пустые конструкторы, что ты как маленький.
Аноним 04/12/24 Срд 17:31:02 3334855 51
>>3334852
И че будет? Надо сразу проинициализировать друг другом. Ты реально не пониманшь, что это нереально в чистом виде?
Аноним 04/12/24 Срд 17:39:56 3334863 52
>>3334855
Хуй будет, клован. Ты задачу решаешь или сидишь мозги ебешь?
Аноним 04/12/24 Срд 17:46:07 3334867 53
Аноним 04/12/24 Срд 17:52:01 3334874 54
>>3334867
>> как вложить структуру в которой вложена эта же структура в которую вложена ...
> никак юзай поинтеры
>> как создать поинтер на данные с поинтером на данные который еще не получен/создан
> никак, юзай операторы
>> а мне надо что бы можно
еще раз - хуй будешь?
Аноним 04/12/24 Срд 17:55:34 3334876 55
>>3334874
Я тебе сразу и написал, что то, что я хочу, в чистом виде не решается. Короче, мне лень тебе уже что то объяснять. Сам разберусь
Аноним 04/12/24 Срд 19:40:50 3334955 56
обязательно расскажи что получится)
Аноним 04/12/24 Срд 19:48:15 3334967 57
Я думаю, я просто сделаю промежуточный объект который будет события перекидывать и им уже остальные 2 проинициализирую
Аноним 04/12/24 Срд 21:55:40 3335059 58
запривать конструкторы и напиши friend функцию pair<A, B> zdelat_dva_objecta()
Аноним 04/12/24 Срд 23:22:26 3335099 59
Аноним 04/12/24 Срд 23:31:24 3335103 60
>>3335099
Затупил, вот так:
https://godbolt.org/z/6eTj9McPa
Хотя принципиально разницы нет. Общий принцип: в хидерах только декларируешь, но функционал необъявленных классов не используешь. Выносишь всю логику в .cpp, где уже будет доступ ко всем хидерам.
Аноним 05/12/24 Чтв 13:54:53 3335398 61
Какой стиль кода принят в С++? Раньше писали фигурные скобочки на той же строке, а теперь часто вижу, что переносят на новую.
И какой стиль наименования переменных, функций? camelCase, PascalCase или snake_case?
Аноним 05/12/24 Чтв 13:58:27 3335401 62
>>3335398
> Раньше писали фигурные скобочки на той же строке, а теперь часто вижу, что переносят на новую.
Долбаёбы потому что.
> акой стиль наименования переменных, функций?
K&R
Аноним 05/12/24 Чтв 13:59:29 3335402 63
Аноним 05/12/24 Чтв 15:12:34 3335459 64
>>3335398
Зависит от компании
Аноним 05/12/24 Чтв 17:15:32 3335559 65
Какую IDE лучше всего использовать? Действительно ли надо учить всякие vim/emacs?
Аноним 05/12/24 Чтв 18:06:54 3335591 66
>>3335559
> Какую IDE лучше всего использовать?
Visual Studio Ultimate
> Действительно ли надо учить всякие vim/emacs?
Нет, конечно же.
Аноним 05/12/24 Чтв 19:11:52 3335611 67
17306831214700.png 1026Кб, 917x889
917x889
>>3335559
Visual Studio по сути единственная, вменяемая IDE для плюсов.

не слушай красноглазых фанатиков. В писюгнуксе есть только текстовые редакторы, коих как говна и ни одной адекватной IDE.

Если UNIX то только MacOS
Аноним 05/12/24 Чтв 20:40:16 3335648 68
>>3335559
VS Studio по функциональности пока что самый лучший варикант, в плане удобства использование и в целом ui кал говна, но жить можно
QtCreator только если ты линуксе и тебе что то под qt нужно сделать или просто собрать qmake говно. Функционала нет, ui это просто пиздец

CLion не пользовался особо, единственный минус который я знаю, это то что он не вывозит слишком большой проект с моей работы, в отличии от вижлы

Но сейчас в 2024 году жить без иде приятнее чем когда либо, появились хорошие lsp, почти везде есть интеграции с системами сборок, работающие деббагеры и тд

Сам на работе конечно в вижле сижу, так как там иногда говно мамонта встречается что может только вижла проглотить, но пети вполне себе комфортно пишу в вс коде + clangd + cmake
но для новичка бы не советовал ебаться с этим, а просто под вижлой сидеть
Аноним 05/12/24 Чтв 20:49:51 3335652 69
>>3335648
>>3335611
VSCode то же годно, не пиздите что больше ничего нет.
Аноним 05/12/24 Чтв 21:03:28 3335662 70
>>3335652
вскод сделан извращенным способом electron

и это не IDE нихуя
Аноним 05/12/24 Чтв 21:08:56 3335668 71
>>3335662
Чем оно тебе не нравится и что ты под IDE подразумеваешь? Что бы при рефакторинге макросы по всему проекту распидарасило или вхождение переменных заменяло везде до куда доберется?
Аноним 06/12/24 Птн 00:10:22 3335759 72
>>3335652
VSCode - глючное говно

лучше CLion пока нет, но работать с ним лучше через JetBrains Gateway, вынеся самую тяжелую работу на серверные мощности (выделив под хип гигов так 16). тогда все летает даже на тяжелых проектах.
Аноним 06/12/24 Птн 00:17:15 3335764 73
>>3335759
Что может быть глючнее джавапараши? Только у них IDE умудряется каждые 10 минут выдавать ошибки с отъёбом подсветки синтаксиса. А ещё кринж с рестартами на каждый пук, кривыми экстеншенами, поломанным рендерингом гуя под виндой и напрочь сломанной сетью.
Аноним 06/12/24 Птн 00:35:10 3335771 74
>>3335764
Я постарался. Я там работал
Аноним 06/12/24 Птн 01:58:15 3335788 75
>>3335771
>Я там работал
Они всегда русофобами-либерахами были?
Аноним 06/12/24 Птн 04:40:53 3335806 76
>>3335788
Я работал не в рф и 99% времени я общался на русском. Общие чаты были на английсом, естественно, ну и с иностранцем на русском не получится поговорить, понятное дело. Так что не были и не есть. Думаю, чисто бизнесовые соображения. Я бы тоже, честно говоря, крупный бизнес в рф не держал и съебывал в Европу скорее. Так что решение правильное.
Аноним 06/12/24 Птн 04:43:45 3335807 77
изображение.png 8Кб, 551x151
551x151
>>3335401
>Долбаёбы потому что.
Кармаку в лицо повторишь?
Аноним 06/12/24 Птн 09:27:53 3335867 78
>>3335807
Ну да. И этот долбоебский пробел после имени функции. И вообще он тогда был талантливым дилетантом без связи с торадициями C и BSD. Ему яблочные поделия нравились.
Аноним 06/12/24 Птн 10:02:46 3335882 79
>>3335806
>и съебывал в Европу скорее
То же считаю правильно, ДжетБрейн говно здесь на хуй не нужно, плюс сейчас золотое время волны импортозамещения на котором в РФ можно и нужно поднимать хорошии деньги, чего в загнивающей европомойке сделать не получится по многим причинам.
Аноним 06/12/24 Птн 10:17:37 3335895 80
изображение.png 60Кб, 626x455
626x455
>>3335867
>дилетантом
jsf av стандарты написанные не транс-пидорасами, а умными белыми людьми с cs степенями стенфорда из локхед мартина предписывают писать так же
Аноним 06/12/24 Птн 10:19:20 3335897 81
>>3335895
>стенфорда из локхед мартина
говноговна
Аноним 06/12/24 Птн 10:19:46 3335898 82
>>3335895
Что-то не пойму, откуда берутся эти int32, uint16?
Аноним 06/12/24 Птн 10:31:54 3335904 83
hqdefault.jpg 9Кб, 480x360
480x360
>>3334635
Я учил на ютубе. Если можешь в простенький английский на слух, то туториалы ChiliTomatoNoodle хорошие.
Не смотри, что у него уклон в геймдев, первые два плейлиста по основам языка и ооп, графика с 3 листа начинается.
Так же у него по другим темам есть плейлисты. Многопоточка, boost, std.
Аноним 06/12/24 Птн 12:07:17 3335987 84
>>3335764
для джавапараши надо много памяти и проц, такова жизнь
если ты запускаешь на деревянном ПК, то да - будет хуйня.
у меня нет ничего из того, что ты перечислил, даже несмотря на то, что объем кодовой базы весьма значителен.
Аноним 06/12/24 Птн 12:13:57 3335998 85
>>3335987
А мог бы просто VSCode поставить как нормальный разработчик
Аноним 06/12/24 Птн 12:44:38 3336055 86
1607623110390.png 53Кб, 1237x958
1237x958
>>3335987
Если пикрила мало, то нахуй это говно нужно?
> у меня нет ничего из того, что ты перечислил
Вангую ты никогда крупный проект не открывал этой парашей.
Аноним 06/12/24 Птн 12:49:06 3336060 87
>>3336055
>Вангую ты никогда крупный проект не открывал этой парашей.
Когда эту поделку по дефолту Гугля как IDE под Андроид зделол, то я отключал в настройках все что можно и более менее все работало, в прочем я и на Вижуал Студии все отключаю
Аноним 08/12/24 Вск 15:01:05 3337336 88
02.png 21Кб, 494x532
494x532
01.png 27Кб, 458x377
458x377
Я нюфаня, только начал с крестами разбираться, захотел с допустимыми пределами поиграться, посмотреть, что будет.
На скринах простейший код, но в случае с типом float он не работает: при работе с маленькими числами значение переменной не меняется, при том, можно прибавить 1000 или умножить на два, тогда вывод корректный.
Вынес блок с float в отдельный код, на разных машинах\ОС компилировал - один хуй, в упор не вижу ошибку. При том, что double работает корректно
Аноним 08/12/24 Вск 15:26:44 3337353 89
>>3337336
Во-первых, ты обратился к неинициализированнлй переменной, что уб и дальнейшие рассцждения о поведелии программы бессмыслены. Во-вторых, иди читай как устроены вещественные числа и почему они не могут хранить любое число с нужной точностью
Аноним 08/12/24 Вск 15:43:37 3337355 90
>>3337336
Не знаю, почему так, но если ты юзаешь float, то ты должен писать не 1, а 1.0f, иначе компилятор юзает double. Но это замечание эту странность не исправляет.
Аноним 08/12/24 Вск 21:31:36 3337490 91
>>3337336
Ты делаешь какую то хуйню, вещественные числа не хранятся как двоичные числа, они имеют специальный формат который требует декодирования, поэтому изначально в процессорах этим занимался специальный сопроцессор (fpu) который умел с ними работать а позже переехал на кристал и стал стандартом.

Что бы компилятор понимал что твои литералы нужно конвертировать в вещественный формат, ты должен везде писать 32.0f 25648.0f а любую целочисленную переменную конвертировать во флоат перед арифметикой fl += (float)i что бы точно быть увереным что твоя хуйня никак не может быть расценена иначе, например конвертировать fl в инт и сложить с другим интом после чего отконвертировать во флоат. Ну и что бы распечатать флоат как строку надо наверное тоже использовать специальные функции и патерны.
Аноним 08/12/24 Вск 22:11:12 3337511 92
>>3337336
Потому, что плавающее число состоит из двух частей, для целого числа во float выделено 23 бита и твое число не влазит
Аноним 09/12/24 Пнд 13:06:39 3337851 93
Насколько кроссплатформенный код на С++? Можно ли один и тот же код использовать на Windows и Linux?
Аноним 09/12/24 Пнд 13:25:51 3337866 94
Аноним 09/12/24 Пнд 14:18:58 3337911 95
>>3337851
Зависит от кода очевидно. Но в целом, кресты кроссплатформенный язык
Аноним 09/12/24 Пнд 14:25:54 3337918 96
>>3337851
Даже на JS можно написать так, чтобы работало только на винде определённой сборки с определёнными обновлениями. Дело вообще не в языке, а в используемых компиляторах и API.
Аноним 09/12/24 Пнд 16:10:32 3338016 97
1414ac46d7545b3[...].jpg 34Кб, 720x453
720x453
>>3337918
Двачую вот недавно пытался запустить игру на рпгмейкере, несмотря на то что там используется nwjs который по сути эмулирует вэб-окружение поверх системного стека и к файлам там можно обращаться через виртуальный хост, гениальные жапонские программисты в плагинах натыкали xhr.open( require('path').dirname(dir).path )
берут модуль ноды получают системные пути и делают по ним http реквест, пиздец короче, на винде видимо работает ну потому что там C:\\Users\SukuiIbanava\hentai\loli\game\www и сразу понятно что это системный путь, а на линуксе надо file:// добавлять хотя бы, а по хорошему надо или нодой файлы открывать или блять вебстеком. Либо одно либо другое. но обнюханый трусами самурай даже подключив модуль fs все равно будет лазить через хттп-реквест, причем старый
Аноним 09/12/24 Пнд 21:43:14 3338242 98
Аноним 09/12/24 Пнд 22:25:16 3338269 99
>>3337866
>да
Как мне кроссплатформенно преобразовать wstring в utf-8? wstring_convert - диприкейтед лол
Аноним 09/12/24 Пнд 22:35:07 3338271 100
>>3338242
Кожаных мешков нету, с кем ещё говорить?
Аноним 10/12/24 Втр 00:09:38 3338344 101
>>3338269
Для кроссплатформенной разработке это не нужно, а то что ты под ней подразумеваешь это не кроссплатформа, поэтому пишешь части платформозависемого кода и в нем пердолишься с системными вызовами для конвертации.
Аноним 10/12/24 Втр 01:20:37 3338368 102
>>3338344
>поэтому пишешь части платформозависемого кода
Ага, а еще пишешь параллельно три нативных морды для гуя: под винду, линукс и мак.
Аноним 10/12/24 Втр 02:28:08 3338381 103
>>3338368
Все так, а ты что думал?
Аноним 10/12/24 Втр 03:35:52 3338389 104
>>3338381
>а ты что думал?
Некогда думать, надо платформозависимый код писать.
Аноним 10/12/24 Втр 03:40:25 3338390 105
>>3338368
Конечно, ведь либы для гуя не изобркли еще
Аноним 10/12/24 Втр 08:03:24 3338430 106
Всем спасибо за ответы

>>3337353
>>3337511
>Во-вторых, иди читай как устроены вещественные числа и почему они не могут хранить любое число с нужной точностью
THIS. Теперь понял, где ошибка, благодарю.
Буквально первая строка поисковика:
Тип данных float — это 32-разрядное число одинарной точности с плавающей точкой, которое может точно хранить числа, содержащие только до шести цифр. Например, вы не сможете хранить точно число 515 297.15 в поле с типом float
Аноним 10/12/24 Втр 08:25:00 3338432 107
>>3338430
Там чуть сложнее. Зависит от порядка числа - больше - хуже
Аноним 10/12/24 Втр 08:43:43 3338447 108
>>3338242
Я не паста, а настоящий анончик
Аноним 10/12/24 Втр 11:35:45 3338582 109
>>3337851
Вопрос, нахуя те линукс? Забей на этот мусор и пиши для Виндовс.
Аноним 10/12/24 Втр 13:34:21 3338692 110
>>3338582
Я думал, что в основном под линукс пишут, а винда как доп. система. Сейчас же идёт переход с винды на линукс в бюджетных организациях и выгоднее писать кроссплатформенные приложения.
Аноним 10/12/24 Втр 13:45:54 3338701 111
>>3338692
> в бюджетных организациях
В каких бюджетных и что поменялось? Все как сидели с виндой, так и сидят. Переход на пердоликс - это новые затраты и обучение персонала, никому это не надо. Кто хочет безопасно от потенциальных штрафов сидеть - сидят с плашкой "активируйте винду", но многие кмсом активируют. Даже госконторы так делают, всем похуй, легально винду не купить, но майки никого не блочили и не будут.
Аноним 10/12/24 Втр 13:49:16 3338704 112
>>3338701
В нашей местности AstraLinux внедряют, я сам занимался этим пару лет назад. На все новые машины предписано ставить именно его, а не винду.
Аноним 10/12/24 Втр 14:01:15 3338715 113
>>3338704
Был бы бюджет, а на что распилить всегда найдут. Ты не забывай что русских пидорнули из линукса, а финский нацик сказал что все русские разрабы - это фсбшные боты, внедряющие бэкдоры. Если выделят бабло на форк ядра, то может и будет повышенная активность, а пока ничего нет, сверх того что было до СВО. Полторы госконторы на Астре - это даже трём анонам не хватит мест. Вдвойне не забывай что даже Китай с винды не слез пока, а СВО скоро закончится.
На том же Шарпе как писали, так и пишут. В том числе госы. Условно в тот же nalog.gov.ru залогиниться не из под винды - длительное приключение с туманными перспективами. В egais.ru в принципе только с IE пускает.
Аноним 10/12/24 Втр 14:26:25 3338736 114
>>3338715
>принципе только с IE пускает
Дед, таблы ебни
Аноним 10/12/24 Втр 15:19:57 3338789 115
>>3338736
Не, так и было месяц назад, сейчас вижу вообще личный кабинет выпилили, весь функционал наконец в УТМ перенесли. Это нихуя не шутка, там и дожили до 2024 года, когда IE уже даже в свежей винде нет.
Аноним 10/12/24 Втр 16:22:49 3338821 116
>>3338789
Может и так, но в любом случае считаю, что отвязывание от продуктов Майкрософт и Оракекел это есть хорошо.
Аноним 10/12/24 Втр 20:48:32 3339002 117
>>3335398
>Раньше писали фигурные скобочки на той же строке, а теперь часто вижу, что переносят на новую.
Так бесит эта манера. Сам всегда оставляю скобочку на той же строке, а обоснуй таков. Помимо плюсов, пишу ещё на питоне и луа. У питона после скобочек идёт двоеточие - аналог открывающей скобочки. У луа есть end - аналог закрывающей скобочки. В обоих языках тело функции можно начать прям со следующей же строки после её головы (но я оставляю одну строку пустую). Соответственно и в плюсах так же. А сраная скобочка, занимающая целую строку, ящетаю, это полнейшее уебанство.
Ключевое - ящетаю.
Аноним 10/12/24 Втр 21:13:39 3339011 118
>>3339002
>А сраная скобочка, занимающая целую строку, ящетаю, это полнейшее уебанство
От ситуации зависит: если параметры функции или инициализация конструктора в столбик, то лучше переносить скобку. Если у тебя считают строки, то тут и вопросов нет.
Аноним 12/12/24 Чтв 11:06:39 3339852 119
А как сейчас принятно писать программы: в начале писать using namespace std или к каждому типу и функции приписывать std::?
Аноним 12/12/24 Чтв 11:20:56 3339866 120
>>3339852
Ты плюсы только начинаешь учить, да?
Аноним 12/12/24 Чтв 13:16:13 3339949 121
>>3339866
Да, я прочитал 2 главы Эккеля Философии С++
Аноним 12/12/24 Чтв 23:08:04 3340284 122
>>3339949
Если ты не пишешь контекст, то using namespace никогда не пиши. Иначе, обновишь компилятор, добавят в std функции с такими же именами, но другими типами аргументов, но которые подходят по типам (например lcm, тру стори как на контесте это головную боль доставило), и ты охуеешь искать ошибку.
Аноним 13/12/24 Птн 01:29:40 3340312 123
Как вкатиться в clang? почему если я пробую собирать им то, что компилится GCC, он срет тоннами ошибок? И нужен ли он вообще? Никак не могу понять, зачем он+весь проект LLVM существует в принципе (кроме того что ллвм использует каждый новомодный яп).
Аноним 13/12/24 Птн 04:42:54 3340333 124
>>3340312
>Как вкатиться в clang?
Сначала подумал, что ты хочешь стать контрибьютором, но прочитал дальше и понял, что тебе до этого еще далеко
> почему если я пробую собирать им то, что компилится GCC, он срет тоннами ошибок?
Два варианта - код писали долбоебы или адекватные люди, но по каким то внутренним причинам привязались к одному компилятору и его расширениям
> И нужен ли он вообще?
Идиотский вопрос
> Никак не могу понять, зачем он+весь проект LLVM существует в принципе (кроме того что ллвм использует каждый новомодный яп).
Чтобы ты спросил, блядь. Зайди в гугл, открой первые 3 ссылки и прочитай. За тебя никто не будет их сюда копипастить
Аноним 13/12/24 Птн 07:32:00 3340354 125
изображение.png 13Кб, 937x190
937x190
Как эту лямбду запихнуть в поле класса?
Аноним 13/12/24 Птн 08:08:14 3340360 126
Аноним 13/12/24 Птн 08:15:59 3340364 127
>>3340360
Хотя дороговато
Может если там будет только эта ф-ия, может создать callable class и в конструкторе сохранить map?
Аноним 13/12/24 Птн 12:14:28 3340478 128
>>3340364
Лямбда это и есть колабл класс
Аноним 13/12/24 Птн 12:36:07 3340491 129
>>3338692
Ну я гейдевщик, не представляю как можно жить без виндовс и студии. На линуксе можно играть, иногда даже фпс больше, чем на виндовс+дх, спасибо Гейбу создателю dxvk, но программировать нет. В студии как минимум невероятно удобный дебагер, который в моей сфере нужно использовать постоянно, принтами и логами, как в вебе и около, невозможно пользоваться.
Забавно будет, если лет через 10 будут считать, что Линукс для игрулек, а Виндовс для работы, хехе.
Аноним 13/12/24 Птн 12:51:32 3340505 130
>>3340491
>удобный дебагер
Це такое есть, просто не могу имаджинировать ебало студийных челиков, которых посадят на гдб.
>Забавно будет, если лет через 10 будут считать, что Линукс для игрулек, а Виндовс для работы, хехе.
Не будет, челибосам нахуй не упёрся лялих где-то дальше сервера.
Аноним 13/12/24 Птн 14:10:56 3340566 131
>>3340360
А что тогда с захватом сделать?
Аноним 13/12/24 Птн 15:11:52 3340598 132
>>3340491
>невероятно удобный дебагер
Чем он удобный? Обычный дебагер
Аноним 13/12/24 Птн 15:31:31 3340602 133
>>3340566
>А что тогда с захватом сделать?
А в чем проблема с захватом? Тебе все равно как-то контекст колбека надо хранить.
Аноним 13/12/24 Птн 15:37:32 3340607 134
>>3340602
Проблем нет, просто почему то вижуалка тряслась что то тряслась и щас перестала, всё норм.
Аноним 13/12/24 Птн 17:57:44 3340703 135
>>3340491
VS Code кроссплатформенный и там тоже удобный дебагер. И в целом вс код гораздо приятней в работе, чем монструозная вижла.
Аноним 13/12/24 Птн 20:16:53 3340796 136
>>3340478
А лямбду можно напрямую сохранить в классе, сослаться на неё как на тип? Я прост не знаю(
Аноним 13/12/24 Птн 21:30:03 3340820 137
>>3340796
>А лямбду можно напрямую сохранить в классе
Нет, у каждой лямбды свой тип, который определяется в месте создания. Можно работать через темплейты, std::function или свою велосипедную обертку (если, например, надо сделать лямбду без аллокации под фиксированный размер захваченных данных).
Аноним 13/12/24 Птн 23:27:24 3340862 138
hello.png 477Кб, 1920x1080
1920x1080
Могёте так, ублюдки?))
Аноним 14/12/24 Суб 00:00:08 3340872 139
>>3340820
Можно авто прописать в определении класса
Аноним 14/12/24 Суб 00:58:41 3340887 140
>>3333359 (OP)
Дайте норм тем для Вижуал Студии (не Коде), а то выглядит как синее говно.
Аноним 14/12/24 Суб 07:48:59 3340924 141
>>3340862
Двухсвязный список могёшь без ансейфа?
Аноним 14/12/24 Суб 10:42:25 3341000 142
Смотрите, что буст животворящий делает:
Server Software: werewolf
Server Hostname: localhost
Server Port: 8816

Document Path: /abc/1234567
Document Length: 16 bytes

Concurrency Level: 222
Time taken for tests: 8.604 seconds
Complete requests: 1000000
Failed requests: 0
Keep-Alive requests: 1000000
Total transferred: 123000000 bytes
HTML transferred: 16000000 bytes
Requests per second: 116221.47 [#/sec] (mean)
Time per request: 1.910 [ms] (mean)
Time per request: 0.009 [ms] (mean, across all concurrent requests)
Transfer rate: 13960.20 [Kbytes/sec] received
Аноним 14/12/24 Суб 17:12:31 3341227 143
>>3340333
Ясно. Конечно, отвечать никто никому не обязан, но судя по твоему ответу, это ненужный проект, как я и предполагал, потому что ты не смог объяснить его цель и при этом агрессивно даешь понять, что веришь в ее (цели) наличие.
Аноним 14/12/24 Суб 19:11:20 3341300 144
>>3341000
Животворящий С прямо сейчас у меня делает 130k rps, три системных вызова на запрос.
Аноним 14/12/24 Суб 19:28:13 3341316 145
>>3341227
Может я и правда агрессивно очень ответил, но это потому что у меня бомбануло с вопросов уровня 9 классника (и это не преувеличение). Скорее всего, ты хеллоуворлды лениво пописываешь раз в месяц и компилируешь их дефолтным системным компилятором. Зайди на cppreference в раздел compiler support и охуей от количества компиляторов, преднаначение которых ты понять не можешь. Короткий ответ - крутые компании, пишут свои инструменты для своих целей, чтобы не зависеть от сторонних людей. Например, intel c++ может быть выдрочен для генерирования производительного кода под конкретно их процессоры. И они пишут это сами, потому что никто кроме них не знает лучше особенности процессоров интел. Потом продают этот компилятор туда, кому нужно максимум производительности выжать (но емнип, intel c++ это вариация шланга и они уже подзабили на свой компилятор и коммитят в шланг). Майки могут писать свой компилятор, потому что хотят, чтобы нужные их командам фичи появлялись в первую очередь. Свой компилятор также дает возможность интегрировать его в ide и получить очень мощную среду разработки. Да и банально, у компиляторов могут быть клиенты в в виде корпораций и эти самые комплиляторы можно продавать, зарабатывая деньги на том, что в твоем компиляторе есть какая то узкая, но нужная кому то фича, которой нет в других компиляторах, либо, в которых она хуже реализована. По поводу, шланга. Если бы ты с ним поигрался, то ты бы заметил, что у него ошибки в 100500 раз более понятные и человекочитаемые чем у гцц. Потому что у шланга более модульная структура, что позволяет легче его переиспользовать для других проектов: статические анализаторы (clang-tidy), бэкэнд для 100500 языков отличных от c++. И если ты думаешь, что плюсы очень стандартизированный язык и достаточно однго компилятора (кстати в хаскеле так, по этому поводу там и последний стандарт языка вышел в 2010 году, а не выходит каждые 3 года, как в плюсах; там тупо 1 главный компилятор на котором пишут 99% людей, поэтому и нет смысла выпускать стандарты), зайти на тот же cpp reference и охуей от того какая каша может быть в поддержках разных фич разными компиляторами. А чтобы ты в дальнейшем не заставлял меня писать простыни на такие детские вопросы которые рассказывают в первую неделю обучения в вузе, если ты до этого с прогой дел почти не имел, найди себе хороший курс по плюсам, а не смотри всякие инфоцыганские курсы и задачи для умственно отсталых которые дают ложное чувство знаний. Хоть мфтишный курс начни смотреть
Аноним 14/12/24 Суб 21:21:24 3341379 146
>>3341300
Бедненький.
Наверное, кофе даже не успел налить, как уже скомпилировалось.
Аноним 15/12/24 Вск 02:54:16 3341452 147
Посоветуйте хорошие руководства по opengl.
Аноним 15/12/24 Вск 03:55:43 3341463 148
Аноним 15/12/24 Вск 04:53:45 3341472 149
>>3341000
Ненавижу пидоров, которые из единственного оставшегося не зашкваренного вебом языка делают очередную бэкенд-дрисню для перекладывания жсонов.
Аноним 15/12/24 Вск 06:08:14 3341479 150
>>3341472
Создай Lua-тред и иди там ной.
Аноним 15/12/24 Вск 06:39:44 3341486 151
>>3341479
Нахуя мне твой обоссанный луа вместо божественных плюсов?
Аноним 15/12/24 Вск 06:52:55 3341487 152
>>3341472
Так на доске сплошь пидоры вкатуны за БАБЛОМ, которое естественно в веб-параше. Только упомяни нормальную компьютерную программу - ГУИ приложение для Windows, получишь кластерный подрыв срак.
Аноним 15/12/24 Вск 08:28:47 3341505 153
>>3341486
Чтобы BSONы оператором << сочинять же.
Аноним 15/12/24 Вск 10:52:18 3341541 154
Аноним 15/12/24 Вск 12:52:03 3341587 155
>>3341541
>формошлепы
Вебоскот перефорсит сам себя, типичное соевое вырожденство.
Аноним 15/12/24 Вск 13:43:54 3341618 156
> в треде начинают появляться 100 трешовых постов с вопросами от студентоты
> неожиданно в треде появляются посты шизика про пидоров, сою и веб, с его представлением о тру программировании из тиктока

когда там у вас сессия закончится и вы из треда выкатитесь?
Аноним 15/12/24 Вск 15:11:10 3341690 157
>>3333359 (OP)
Есть идеи как в окне отладки ВС посмотреть весь массив имея указатель на него?
Аноним 15/12/24 Вск 15:13:40 3341694 158
Аноним 15/12/24 Вск 15:15:54 3341699 159
>>3341694
А зря, ВС гавнина какая то оказывается
Аноним 15/12/24 Вск 15:31:47 3341708 160
>>3341699
Нет. Просто массив - тупо указатель на кусок памяти. Откуда компилятор знает размер этой памяти?
Аноним 15/12/24 Вск 16:27:07 3341758 161
>>3341708
>тупо указатель на кусок памяти. Откуда компилятор знает размер этой памяти?
Я в каком то хексвьювере видел, что можно было на участок памяти сишную структуру применить даже как массив заданного размера и она красиво отображала все эти поля. Так что хочу такое же.
Аноним 15/12/24 Вск 16:37:40 3341764 162
>>3341708
если это строка то пока не уткнется в ноль
или
если это эльбрус в 128 битном режиме то в указателе есть размер, другой вопрос как получить/передать этот указатель строкой или числом его никуда не вобъешь и ничего по такому адресу не получишь.
Аноним 15/12/24 Вск 16:55:03 3341779 163
Template3.gif 164Кб, 565x316
565x316
>>3341758
Во, нашел, 010 Едитор.
Аноним 15/12/24 Вск 17:03:11 3341787 164
>>3341779
Так, еще ImHex поддерживает шаблоны оказывается. Теперь если сохранить дамп памяти по указателю, то более менее можно просматривать.
Аноним 15/12/24 Вск 17:43:12 3341811 165
>>3341787
>ImHex
Ебать оно гавнина, да и дамп память ВС не сохраняет как файл. Хоть сам плугин пиши.
Аноним 15/12/24 Вск 18:48:49 3341844 166
Аноним 15/12/24 Вск 19:49:57 3341905 167
>>3341844
Код чего? Если редактора то нет, он платный.
Аноним 15/12/24 Вск 22:04:17 3342004 168
>>3341905
все программы бесплатные..
Аноним 16/12/24 Пнд 14:34:37 3342482 169
А что скажете насчёт трехтомника Столярова - Программирование: введение в профессию? Это хороший учебник?
Аноним 16/12/24 Пнд 23:46:19 3342822 170
>>3341764
А если массив не проинициализирован, а?
Аноним 16/12/24 Пнд 23:47:48 3342823 171
>>3341316
И вот нахуй я писал такую простынь, отвечая на простой вопрос, если даже "спасибо" в ответ не получил
Аноним 16/12/24 Пнд 23:59:54 3342831 172
>>3342482
Нет, это поехавший шизик.
Аноним 17/12/24 Втр 05:07:25 3342869 173
Нужна помощь.
Допустим, вызывается метод, а в методе есть локальная переменная типа unsigned char. Так как переменная не проинициализированна, то в ней, как я думаю, будет какое-либо "случайное" значение. Вопрос: можно ли так получить случайный сид для генерации псевдослучайных чисел? Какие подводные?
Аноним 17/12/24 Втр 05:22:38 3342872 174
>>3342869
> будет какое-либо "случайное" значение
или 0
Аноним 17/12/24 Втр 06:45:39 3342876 175
>>3342869
>>3342872
Не будет. При обращении к ней будет UB - программа может хоть диск фоматнуть и это будет поведение соответствующее стандарту
Аноним 17/12/24 Втр 08:09:38 3342894 176
>>3342822
Какая разница нулевой байт все равно попадется где нибудь
Ну а если вопрос про эльбрус то там 2 битный тег указывает на то что память: 00 - неинициализирована 01 - данные 10 указатель 11 - неизвестно, но вангую что unsafe. Хотя в unsafe режиме логичнее нулевые теги просто использовать, но не знаю
Аноним 17/12/24 Втр 08:14:43 3342896 177
>>3342894
>акая разница
Большая. Нельзя читать неинициализированную память
Аноним 17/12/24 Втр 08:50:50 3342904 178
>>3342896
на интеле же можно, некоторые программы даже используют для генерации случайных чисел. Что конечно не правильно, но есть "правильно" а есть реалии.
Аноним 17/12/24 Втр 10:30:30 3342994 179
Аноним 17/12/24 Втр 11:01:12 3343022 180
Аноним 17/12/24 Втр 17:05:48 3343300 181
товарищи, начал изучать с++, имея небольшой опыт в прикладном программировании (в основном вижал бэйсик) и элементарные вещи на пхп.
у меня вопрос - допустим я использую некую библиотеку, но использую допустим 1 процент ее возможностей, то есть задействую малую часть ее классов и методов.
После компиляции есть ли разница в быстродействии программы, как если бы я задействовал скажем 50 процентов библиотеки? другими словами, после компиляции в неиспользуемые элементы этой библиотеки просто отсекаются или же они все равно в том или ином виде присутствуют?
Аноним 17/12/24 Втр 17:17:03 3343305 182
>>3343300
Если ты собираешь библиотеку отдельно, то там все функции будут висеть мертвым грузом, другое дело что для статически линкуемой библиотеки вроде есть оптимизация во время линковки, но ее надо включать.
Аноним 17/12/24 Втр 17:19:07 3343309 183
>>3342482
Оглавление замечательное, но текст на любителя. Если текст туго идет, то придерживайся оглавления как программы, и читай соответствующие топики в других местах.
По тому же Паскалю есть книга гораздо лучше, чем писаниня Столярова - Песни о Паскале.
Аноним 17/12/24 Втр 17:33:04 3343324 184
>>3343300
В быстродействии вряд ли. Скорее лишная память будет тратится, но и это обычно не проблема для прог на плюсах, если ты не для встроенных устройств пишешь
Аноним 17/12/24 Втр 18:38:46 3343378 185
{AF4B9CB9-46FE-[...].png 87Кб, 741x1101
741x1101
Объясните, вот чего так сложно-то?

Почему я просто не могу статическую переменную внутри тела класса объявить?
Почему я должен следить за порядком объявления всякой муры? Как я заебался в свое время с тем, что у меня Node и Tree должны знать друг о друге. Полдня я проебал чтобы найти как, блядь, объявить структуру без тела, и потом уже реализацию ее написать.
Почему у темплейтов - такой всратый синтаксис?
Почему нет внятного способа получить нормальную информацию о типе? В ебучих жавах, сисярпах, пистонаха - есть, тут - нихуя нормального нет.
Нахуя в языке вообще возможность есть объявить женерик поле? Вот типа чтобы что? Чтобы зачем?
Почему, блядь, нет простого иструмента чтобы проект быстро подготовить? Нет, блядь, мейк или пиши батники/шел-скрипты.
Еще этот ебучий препроцессор, который ебал его мать в сраку.

Короче. Мне не нравится. Поделился мнением. Пошел дальше свою жаву теребить.
Аноним 17/12/24 Втр 18:56:47 3343388 186
>>3343378
Проиграл с макаки, орущей с ветки на нормальных людей.
Аноним 17/12/24 Втр 19:35:46 3343414 187
Аноним 17/12/24 Втр 19:51:38 3343436 188
>>3343414
Школьник, плес. Антипаттерн != Гитлер. В таких вопросах надо смотреть на проект в целом, а не на синтаксис в 5 строках кода.
Аноним 17/12/24 Втр 20:24:06 3343455 189
Аноним 17/12/24 Втр 22:06:39 3343510 190
>>3343436
> Гитлер
антипаттерн

> синтаксис
статик это семантика
Аноним 17/12/24 Втр 22:14:15 3343517 191
>>3343414
> антипаттерн
Ты ошибся тредом. За паттернами тебе в жабы и шарпы.
Аноним 17/12/24 Втр 22:17:26 3343519 192
>>3343517
нет, всё верно, там паттерны, а тут в плюсо треде одни антипаттерны
Аноним 17/12/24 Втр 23:54:16 3343544 193
Поясните, анончики.
Вот есть указатель void*, есть второй такой же. Данные там могут быть самые разные - циферька, строчка, структурка какая-нибудь. В отдельных переменных хранятся размеры этого богатства и тип.
Задача: скопировать данные из одного указателя в другой.
Вопрос первый. Правильно ли я понимаю последовательность действий?
1. При инициализации даём указателю nullptr
2. Первый раз обращаясь, делаем ему malloc
3. Перед следующей записью делаем realloc
4. Пишем данные через memcpy
5. В деструкторе всего хозяйства, делаем указателю free
Вопрос второй. Это ведь сишная дребедень? Нет ли какого-то более благородного плюсового аналога?
Аноним 18/12/24 Срд 00:03:47 3343548 194
>>3343378
>Объясните, вот чего так сложно-то?

>Почему я просто не могу статическую переменную внутри тела класса объявить?
Можешь. Другое дело, что с шаблонами нужно думать.
>Почему я должен следить за порядком объявления всякой муры?
Потому что компилятор должен знать именя к моменту когда дойдет до него
> Как я заебался в свое время с тем, что у меня Node и Tree должны знать друг о друге. Полдня я проебал чтобы найти как, блядь, объявить структуру без тела, и потом уже реализацию ее написать.
Это легко решается, если ты понимаешь разницу между объявлением и определением
>Почему у темплейтов - такой всратый синтаксис?
Нормальный
>Почему нет внятного способа получить нормальную информацию о типе? В ебучих жавах, сисярпах, пистонаха - есть, тут - нихуя нормального нет.
Потому что в плюсах нет инормации о типе в рантайме, в отличие от джавы и питона.
>Нахуя в языке вообще возможность есть объявить женерик поле? Вот типа чтобы что? Чтобы зачем?
Чтобы писать обобщенный код, внезапно. Наример, вектор в котором будет шаблонный указатель
>Почему, блядь, нет простого иструмента чтобы проект быстро подготовить? Нет, блядь, мейк или пиши батники/шел-скрипты
Зачем проект, если можно просто компилмровать из консоли? Это тебе не джава. Тащемта везде сборка не просто "вот возьми такие файлы и скорми компилятору", а гораздо сложнее.
>Еще этот ебучий препроцессор, который ебал его мать в сраку.
Наследие C. Не используй его в современных плюсах, если только ты не пишешь инклуд гуарды. Хотя модули это решают, вроде.

>Короче. Мне не нравится. Поделился мнением. Пошел дальше свою жаву теребить.


Потому что ты рассчитываешь взять, выучить синтаксис и писать как на джаве. Так нельзя. Это работает только если ты учишь язык на уровне циклов и условий. Главная твоя проблема в том, что ты где то нашел справочник по плюсам и пытаешься джавовыф код переписатт не плюсы. Это ошибка. Плюсы нужно учить. Долго и упорно.


Как я заебался уже отвечать на такие вот вопросы. Они довольно примитивные, но для объяснения нужно целое полотно написать. Этих всех вопросов не было бы, если бы люди учили язык блядь, я не просто выдирали рандомную хуйню не понятно откуда и приходили задавать о ней вопросы
Аноним 18/12/24 Срд 00:04:10 3343549 195
>>3343544
>Это ведь сишная дребедень?
Да
>Нет ли какого-то более благородного плюсового аналога?
smart pointers
Аноним 18/12/24 Срд 00:05:49 3343551 196
>>3343544
Перепишм вопросы. Ты че то странное делаешь. Откуда деструктор, если ты не сказал какую структцру ты хочешь написать? И еще : такие фокусы можно делать только с POD
Аноним 18/12/24 Срд 00:11:00 3343555 197
>>3343300
>допустим я использую некую библиотеку
Ну смотри, допустим, это популярная библиотека, и ты не залинковался с ней статически. Данный расклад наиболее вероятен, учитывая, что ты только начал изучать плюсы. Значит библиотека наверняка уже есть у пользователя на компе, и ею пользуются другие программы. Так что не слишком парься на этот счёт. Просто старайся не лезть во всякую экзотику.
Аноним 18/12/24 Срд 00:19:49 3343563 198
>>3343551
Ну и да, все перечисленные функции из си. В плюсах вместо этого new, delete.
Аноним 18/12/24 Срд 00:21:54 3343564 199
>>3343551
>Откуда деструктор,
Не душни, указатели же не в воздухе висят. Они откуда-то появились, их когда-то и уничтожать надо будет. Например, они могут быть полями класса. Ну или при выходе их освобождать.
Аноним 18/12/24 Срд 00:22:48 3343565 200
>>3343548
> Потому что компилятор должен знать именя к моменту когда дойдет до него
Почему он не может: пройтись, собрать имена(ака идентификаторы), а потом уже зная из построить что там ему надо?
Я в вузе когда делал свой компилятор - проходил два раза - ниче, не переломился. В плюсах в 2024 году - это почему-то надо.

> Это легко решается, если ты понимаешь разницу между объявлением и определением
И на кой хуй эта разница вообще нужна? Язык - компилируемый. Я вообще ИРЛ не видел ни одного кейса в реальности где это надо, кроме как раз шизоплюсов, в которых компиляция занимает 100500 лет.
В жаве - я беру и прямо в модуле пишу код, ниче, все заебись. Думать о том что я там когда объявил мне не нужно.

> Нормальный
Не нормальный. Нормальный это типа:
void Foo<T>(T bar, T buz)
А как в плюсах - это откровенное издевательство, чтобы баже без обфускации - никто не мог прочитать.

> Потому что в плюсах нет инормации о типе в рантайме, в отличие от джавы и питона.
Так и в чем проблема добавить ее? Если она мне нужна. Чет опять же - счетчик ссылок для юник поинтеров и прочего - не переломились добавить. Так и информацию о типах можно. То что ее нет - это проеб.

> Зачем проект, если можно просто компилмровать из консоли?
Можно. Как только у тебя больше 10 файлов и больше одного разработчика - это должно быть автоматизировано. Потому что ебись оно в сраку.
А нормальных из коробочных инструментов у плюсов - нет. Make - не нормальный.

> Потому что ты рассчитываешь взять, выучить синтаксис и писать как на джаве. Так нельзя
Я хочу за отпуск просто игрульку фром скреч сделать. Все. Не хочу я плюсы учить. Я чтоли виноват, что нормального инструментария для игрулек нет на других языках?
Аноним 18/12/24 Срд 00:25:14 3343566 201
>>3343564
>Не душни, указатели же не в воздухе висят.
Что значит в воздухе?
>Они откуда-то появились, их когда-то и уничтожать надо будет.
У сырых указателей деструктор тривиальный. Он ничего не делает. Короче, ты опять что то странное пишешь. Нормально сформулируй вопрос и тогда я отвечу

> Например, они могут быть полями класса.

Могут. И тогда можно будет говорить о деструкторе. Пока ничего такого не было написано
> Ну или при выходе их освобождать.
Выходе откуда?
Аноним 18/12/24 Срд 00:42:58 3343571 202
>>3343565
>Почему он не может: пройтись, собрать имена(ака идентификаторы), а потом уже зная из построить что там ему надо?
>Я в вузе когда делал свой компилятор - проходил два раза - ниче, не переломился. В плюсах в 2024 году - это почему-то надо.
Честно, я не помню. Может по историчечким причинам,требовалось, чтобы компилятор мог сгенерировать код в 1 проход. Это правило закрепилось и имеем, что имеем. Может есть еще причины, не помню.

>И на кой хуй эта разница вообще нужна? Язык - компилируемый. Я вообще ИРЛ не видел ни одного кейса в реальности где это надо, кроме как раз шизоплюсов, в которых компиляция занимает 100500 лет.
Тупейший вопрос. На кой хуй нужна разница между числом 2 и 3? Я хз как ответить даже.
>В жаве - я беру и прямо в модуле пишу код, ниче, все заебись. Думать о том что я там когда объявил мне не нужно.
И че? Нахуй ты правила джавы на плюсы переносишь? Я уже сказал тебе так не делать. Меня наоборот в джаве иногда бесило, что я не могу определение класса вынести куда то в отдельное место, чтобы у меня на виду был "интерфейс" класса, а в отдельном месте уже реализация. В джаве это можно сделать с помощью интерфейсов, но это не то же самое.
>Не нормальный. Нормальный это типа:
>void Foo(T bar, T buz)
Ты предлагаешт опустить строчку template<typename T>? И как компмлияор должен понять откуда это T? Шаблонный параметр или класс объявленный хуй щнает где?
>А как в плюсах - это откровенное издевательство, чтобы баже без обфускации - никто не мог прочитать.
Ты заебал. Ты не понимаешь - значит синтаксис плохой и никто не понимает? Нет. Будешь дальше хуйню такую писать, я не буду отвечать. Если бы ты предложил какой то вариант, я бы сказал, что с ним не так. А ты просто говном кидаешься.
>Так и в чем проблема добавить ее? Если она мне нужна. Чет опять же - счетчик ссылок для юник поинтеров и прочего - не переломились добавить. Так и информацию о типах можно. То что ее нет - это проеб.
Ты заебал. Это последний пост на который я отвечаю тебе. В твою тупую башку не влазиает мысль о том, что у любого языка есть спектр задач, а не каждый язык стремится выглядеть как джава, потгму что ты на ней пишешь.
>Можно. Как только у тебя больше 10 файлов и больше одного разработчика - это должно быть автоматизировано. Потому что ебись оно в сраку.
> автоматизировано
Эта автоматизация называется makefile
>А нормальных из коробочных инструментов у плюсов - нет. Make - не нормальный.
Для плюсов - нормальный. Есть еще cmake. Он может быть приятнее в чем то (хотя и он потом до make прелбразуется)
>Я хочу за отпуск просто игрульку фром скреч сделать. Все. Не хочу я плюсы учить.
Ну и дебил. Хоти дальше.
Аноним 18/12/24 Срд 01:31:44 3343583 203
>>3343566
Ты прицепился к слову "деструктор" и проигнорировал продолжение. На самом деле там было
>деструктор всего хозяйства
Под хозяйством имеется ввиду та область видимости, в которой наши указатели живут.
а) Они могут быть полями класса. Тогда речь про деструктор класса.
б) Они могут "болтаться в воздухе" - то есть быть объявлены глобально. Тогда их надо подчищать при закрытии программы.
в) Они могут быть объявлены как переменные внутри какой-нибудь функции. Тогда удалять надо перед возвратом.
Конечно, из этих всех опций слово "деструктор" принято использовать лишь по отношению к классам. Однако если мы обратимся к смыслу данного термина, то поймём, чтово всех трёх случаях выполняется одно и то же действие - подчистка выделенной памяти; что и есть смысл деструктора.

>Нормально сформулируй вопрос и тогда я отвечу
Всем всё понятно по контексту, а ты решил компилятор из себя корчить. Тебя, может, ещё и Витя зовут? Типичные придирки носителей этого имени так-то.
Аноним 18/12/24 Срд 01:36:22 3343584 204
>>3343583
>Под хозяйством имеется ввиду та область видимости, в которой наши указатели живут.
У области видимости нет деструктора. Написанное дальше не имеет смысла
>Конечно, из этих всех опций слово "деструктор" принято использовать лишь по отношению к классам.

> Однако если мы обратимся к смыслу данного термина, то поймём, чтово всех трёх случаях выполняется одно и то же действие - подчистка выделенной памяти; что и есть смысл деструктора.
Нет.
>Всем всё понятно по контексту, а ты решил компилятор из себя корчить. Тебя, может, ещё и Витя зовут? Типичные придирки носителей этого имени так-то.
Ну тогда жди пока кто то менее душный ответит тебе как в деструкторе области видимости почистить указатели в воздухе. Я слишком душный, чтобы понимать написанное
Аноним 18/12/24 Срд 02:28:18 3343591 205
>>3343571
> И как компмлияор должен понять откуда это T?

В 95% случаев - людям нужно: для всего.
В 5% случаев - есть ограничения, как в той же джаве или шарпе.

Java:
T Add<T extends Number>(T a, T b) { }

C#
T Add<T>(T a, T b) where T : INumber, new(), class { }

> Шаблонный параметр или класс объявленный хуй щнает где?
Сама модель типов должна быть такой, чтобы языку было строго похуй. Есть тип. Какой-то класс - это просто способ описать свой тип. Для языка должно быть строго похуй в контексте обобщенного программирования - шаблонный параметр это или тот самый класс.

> Нахуй ты правила джавы на плюсы переносишь?
Потому что это тупо удобнее. Вот и все. Писать код там же где ты его объявил - удобнее. Ты же не являешься ебанатом с паскаль-лайк подходом, который все переменные объявляешь до их вызова? Думаю нет. Объявляешь по необходимости. Но чет с методами и типами - я должен зачем-то в голове эту хурму держать.

> Ты не понимаешь - значит синтаксис плохой и никто не понимает?
Я понимаю как раз, я говорю что он хуевый, и даю примеры где сделано лучше. Да, женерики != темплейты, но то что все сейчас используют варианты женериков вместо темплейтов как раз говорит о том, что придумали в свое время хуево.

> у любого языка есть спектр задач, а не каждый язык стремится выглядеть как джава
И потому - мне принципиально надо не знать о типе с которым я работаю? Я не понял логики.
Такой хуйней можно и долгое отсутствие потоков в стандарте оправдать. Лямбд. Ну, другой спектр задач. Ой, блядь, оказывается можно научить язык и теперь они завелись. Ном-ном-ном.
Мне - нужен способ узнать тип нормально. В рантайме. Пусть для меня и таких как я - в языке будет. Кому не надо - пусть у них не будет. Еще раз - уник поинтеры - не зерокост, если ты их используешь, но они упрощают жизнь тем кому оно надо.

> makefile
Ничем не лучше пачки баш-скриптов. Попробуй мейком просто собрать проект, который делали в другом окружении. Линукс<->Винда. В 90% случаев - нихрена не соберется. И ты будешь все равно руками разгребать этот мусор.

> Ну и дебил. Хоти дальше.
Не переоценивай язык, няша. Это инструмент, чтобы заставить машину делать то что я хочу. Не более. Не я виноват, что нужные мне библиотеки - не имеют нормальных оберток, и придется таки в ваше болото погрузиться. Но я справлюсь, базарю.
Аноним 18/12/24 Срд 03:09:13 3343601 206
>>3343591
Твои extends where в жабе и шарпе сосут у плюсов с причмокиванем

https://en.cppreference.com/w/cpp/language/constraints
Концепты в плюсах не на наследовании основываются. Соответственно синтаксис другой. Ты там можешь проверить какие-то отдельные свойства у обобщенных параметров, а можешь сотни требований сделать. Например что их можно сравнивать с данными такого же типа или что они занимают такой-то размер в памяти.

https://en.cppreference.com/w/cpp/language/template_parameters
У шаблонов бывают параметры не связанные с типом

Ты
Аноним 18/12/24 Срд 03:10:52 3343602 207
>>3343601
>Ты
Ты сначала возможности плюсов посмотри, а потом критикуй их


фикс
Аноним 18/12/24 Срд 08:18:04 3343679 208
>>3343571
>Есть еще cmake. Он может быть приятнее в чем то (хотя и он потом до make прелбразуется)
cmake это "configure make" это не скрипт сборки а скрипт конфигурации, ну и помимо make есть еще ninja build, который вроде как заточен на тяжелые проекты и многопоточность.
Аноним 18/12/24 Срд 09:11:46 3343707 209
>>3343309
А стоит устанавливать линукс и писать всё в vim'е?
Аноним 18/12/24 Срд 09:56:52 3343750 210
Аноним 18/12/24 Срд 10:53:09 3343785 211
>>3343707
Нет. Но подсветку синтаксиса и автодополнение стоит убрать
Аноним 18/12/24 Срд 11:58:48 3343866 212
>>3343785
>подсветку синтаксиса и автодополнение стоит убрать
лол что?
Аноним 18/12/24 Срд 12:13:28 3343892 213
>>3343866
Он без них писать не сможет потом. Лучше не надо
Аноним 18/12/24 Срд 12:15:37 3343895 214
>>3343892
так а нахуй без них писать?
я вот без клавиатуры писать не могу, это же не значит что я должен учиться голосовому вводу
Аноним 18/12/24 Срд 12:16:26 3343896 215
>>3343895
Ты и без чатгпт наверное писать скоро не сможешь
Аноним 18/12/24 Срд 12:19:41 3343902 216
>>3343896
что то конструктивное сказать есть что?
ну или объясняй какое отношение чатгпт к этому посту имеет
Аноним 18/12/24 Срд 18:30:53 3344240 217
>>3343565
>В плюсах в 2024 году - это почему-то надо.
Дело не в однопроходности. Компилятор проходит сколько нужно раз. Внутри класса, например, можно использовать методы в любом порядке, без предварительной декларации.
>В жаве - я беру и прямо в модуле пишу код
Джава гораздо проще как язык, там нет препроцессора, дженерики куцые, поля класса - это или примитивы или указатели, структур нет, единицы компиляции четко определены. В С++ все гораздо сложнее, у компилятора нет 100% возможности вывести тип без контекста.
>Так и в чем проблема добавить ее?
Это не так просто. Уже лет 10-15 добавляют. В С++26 обещают сделать.

Вы там как в джаве, вообще без фабрикабстрактныхфабрик кушать не можете? Обязательно фабрики сходу лепить?
Аноним 18/12/24 Срд 18:54:08 3344268 218
>>3343378
Пиздец у тебя на скрине, конечно. Ты совсем не понимаешь, как темплейты работают в плюсах. Это не дженерики в джаве, в рантайме их нет.
Аноним 18/12/24 Срд 23:20:32 3344450 219
Сап, плюсаны.
Про что щас узнал. Я просто из скриптовых языков пришёл, там такой хуйни нету. Следите за руками.

class first { public: int foo; };
class second : first {};
class third : second {
public:
void bar() {foo = 99999}
}

Вот так не будет работать, потому что foo в данном контексте приватное. А вот если в секонде публично его переобъявить - тогда норм будет работать.
Такие дела, вдруг кому полезно будет.
Аноним 18/12/24 Срд 23:25:08 3344453 220
>>3344450
Ебать, не знал, спасибо
Аноним 18/12/24 Срд 23:53:33 3344461 221
>>3344450
Бля, да в самых первых главах про ООП в любом учебнике по крестам разжёвывают про публичное и приватное наследование. Но это же путь для тех, кто читает книги, слишком сложно, лучше будем видосики смотреть.
Аноним 19/12/24 Чтв 00:40:26 3344469 222
>>3344450
class second : first
is a syntactic short-hand for
class second : private first
Аноним 19/12/24 Чтв 01:00:28 3344472 223
>>3344469
Полезное сокращение. Без него точно все бы заебались писать каждый раз бойлерплейтный private.
Аноним 19/12/24 Чтв 01:38:06 3344480 224
>>3344461
Ты молодец, что читал учебник.
>лучше будем видосики смотреть
Вот щас обидно было. Ни одного видосика по плюсам не смотрел, своил исключительно по цппреференсу и метаниту. Плюс про инклюд гуарды и void* указатели мне подсказал друг-сишник (презирающий плюсы, лол). А основы программирования как такового я выучил на интерпретируемых языках.
Вообще, этот ваш цпп - пиздец какая легаси залупа, если честно, тянущая обратную совместимость аж из 1980х. Но мне очень нравится отделение интерфейса от реализации, такого в скриптовых языках не хватает, чтоб прям по разным файлам разнесено было.

>>3344469
Вот это, кстати, я тоже читал, но так давно, что успел забыть, а ты напомнил. Имеет смысл, да.
Аноним 19/12/24 Чтв 05:55:14 3344507 225
bvv5hg7k5z5c1.jpg 102Кб, 1290x796
1290x796
>>3343707
Нет. Линукс это мусор.
Аноним 19/12/24 Чтв 07:17:47 3344527 226
>>3344507
Стимдек очередная вендорлокнутая консоль. Линукс - прошивка для вендорлокнутых говнин. Заметь как на релизе стимговна этот пидор обещал там винду, но хуй там, сначала протормозил в молчании, а теперь вообще пропагандирает стимкал как "Для тех кто хочет ОТКАЗАТЬСЯ от гейминга на винде". По сути и устройство и линукс на нем это параша для тех кто хочет отказаться от гейминга попав в зависимость от говно-корпорации с её кастомной залупкой несовместимой ни с чем кроме самой себя. Слыш, раб, купи корпоративную затычку. Вот для чего нужен линукс, вот чему он служит.
Так что линуксом занимаются только корпоративные рабы на зарплате. Кто возится с линуксом не получая за это деньги от корпорации, тот просто безмозглый лох.
Аноним 19/12/24 Чтв 08:36:51 3344564 227
CoverBack.jpg 127Кб, 640x541
640x541
>>3344527
>попав в зависимость от говно-корпорации с её кастомной залупкой несовместимой ни с чем кроме самой себя
База. Стим кстати так же силой навязывали. Ты просто не мог запустить игру, не установив эту прокладку, не смотря на то что ты купил игру. Сперва они мучили лишь потребителей своего же кала, можно легко нагуглить "восторженные" отзывы о стиме времен выхода хл2 и эпизодов. Но вконце 00х почти все игры перешли туда.
Бесконечная уважуха тому же Нотчу, что распространял игру через Веб, а не Стим.
Кстати тут ещё можно увидеть, почему ОпенСурс это зло. Какой-то чел сделал Вайн, другой сделал dxvk, корпорация взяла этот софт и сейчас с помощью неё стрижет бабло. Комитить в опенсурс = быть куколдом.
Аноним 19/12/24 Чтв 12:56:36 3344817 228
>>3344564
Дело даже не в стрижке. Ну открытый код открыт, каждый может взять и стричь бабло, это нормально. Проблема в том, что корпорации только берут, но обратно не дают. Вот Валв сделали на бесплатном линуксе за чужой счёт прошивку для своей залупы которая более-менее удобна и можно во что-то играть. Но так и залочила эту работу только для себя, на ПК это не поставишь, не получишь обратно. Корпорасто-хуесосы только берут, но не отдают. Так бы можно было бы поставить эту стим-ОС (или как она там) на ПК и иметь качество лучше чем этот слабосильный планшетик, но нет же, корпожид не позволит, он лочит только для себя. То есть, опенсорс и линукс спонсируют корпорабство, помогают устраивать цифровой гулаг по-дешевке. Так бы эти жадные корпы может и не смогли сделать свою систему с нуля ради своего любимого рабства, но линукс дает любому скоту легкий способ устраивать рабство, и это всё под лозунгами визга "мы за швабордку! линукс - швабода!". Ну охуеть вообще, самый жирный перефорс века. Почему все корпы нынче так любят линукс, да потому что это халявав и лучший инструмент для свиноскотского корпорабства, вот прочему. Это то, что корпорации хотят, естественно они любят линукс и опенсорс который им круто помогает.
Аноним 19/12/24 Чтв 13:08:56 3344827 229
Аноним 19/12/24 Чтв 13:17:31 3344830 230
Аноним 19/12/24 Чтв 13:20:15 3344832 231
Аноним 19/12/24 Чтв 13:37:51 3344852 232
Естественно они арчлинупс выбрали чтобы любая бабасрака не осилила поставить на свой пк и купила стимдек. Но причем тут притензии к линупсу? В лиукс ядро нельзя засунуть проприетарные драйверы. Торвальдс лично борется с тивоизацией. Раз стимос работает на линукс яджре, значит он не может быть залочен на стимдек
Аноним 19/12/24 Чтв 16:57:59 3344996 233
>>3344817
>Так бы можно было бы поставить эту стим-ОС (или как она там) на ПК и иметь качество лучше чем этот слабосильный планшетик
Стим на любой линукс устанавливается без проблем.
Аноним 19/12/24 Чтв 17:50:19 3345043 234
>>3344996
Корпораб включил дебила, типа прочитать не смог и серет тупостью, когда речь была вовсе не про сраное приложение, а про всю Ось которую ставят на корпоративный планшетик, и хуй ты её еще куда поставишь, прибито гвоздями к анальному локу гулага. Хули толку с говноприложения га новнолинуксе на котором нихуяы не работает, когда эта корпа даже графическое ядро системы своё понаписала (расширения Вейланд), ведь имеющееся - нерабочее говно. И такой весь линукс, просто говно нерабочее, не ОС, а конструктор ОС, до рабочей ОС его доводят только корпы, но корпы не делятся, лочат только себе. В итоге корпы жируют на халяве, а простые линуксо-лохи сидят в говне навечно и пашут на корпов бесплатно.
Причем пашут все, даже простой тупорылый хуесос итт, который ни строчки кода не написал и не напишет, одними своими кукареками про "линукс-крута" уже рекламирует эту парашу привлекая рабов которые уже реально пашут на корпожида. Вся система линукса устроена срать на людей и обогащать корпорации, причем так, что эти жертвы еще добровольно корпов защищают и систему эту защищают и рекламируют везде.
Аноним 19/12/24 Чтв 17:53:02 3345047 235
Что за протечка из /s?
Шизики а нука вон отсюда
Аноним 19/12/24 Чтв 17:53:43 3345048 236
>>3345043
карина-таблеточки.webm
Аноним 19/12/24 Чтв 20:20:02 3345205 237
>>3345047
Сам плюсач, есть одна тян.
Аноним 20/12/24 Птн 04:16:31 3345330 238
>>3335648
>работающие деббагеры
Можно пару примеров?
Аноним 20/12/24 Птн 04:39:57 3345331 239
>>3340862
Можем, sizeof(). Или есть разница?
Аноним 20/12/24 Птн 05:51:23 3345338 240
>>3344469
Вот из-за таких syntactic short-hand плюсы и не любят. Язык прячет выжные для семантики детали, а читающему код надо держать в голове сотни вот таких мелочей чтобы просто понимать как прога работает. Лучше уж бойлерплейт.
>>3344480
Оставь void* в сях. Да и там лучше без них обойтись.
всё так. и ИМХО плюсовые интерфейсы (то есть эйфелева башня из костылей, имитирующая интерфейсы) тоже не фонтан. тебе бы джаву глянуть.
Аноним 20/12/24 Птн 05:56:30 3345340 241
>>3345338
Вот из-за таких опечаток русский язык и не любят.
Аноним 20/12/24 Птн 09:48:21 3345484 242
изображение.png 2Кб, 65x60
65x60
>>3333359 (OP)
Всем привет. Подскажите, что лучше учить с целью понимания низкоуровневых концепций (указатели, ручная сборка мусора и пр) C или C++? Я так понимаю C++ более обширный, но его есть смысл учить, если прям целенаправленно хочешь на нем писать дальше. А мне нужно просто познать внутрянку после петухонов. Обычного C для этого хватит или все таки лучше плюсы? Или может есть какой-то облегченный C++?
Аноним 20/12/24 Птн 10:03:51 3345496 243
>>3344817
Дело в стрижке. Жирной пидор сэкономил сотни тысяч, а то и более, долларов, на разработке ОСи или договора с МС. Плюс не появились рабочие места. Как ты думаешь, скинул он хотя бы долларов 100 девелоперам вайна с dxvk?
ОпенСурс это выгода для корпораций в виде дикой экономии. Для разрабов же это меньше рабочих мест и статус куколда.
Аноним 20/12/24 Птн 10:06:53 3345501 244
>>3345484
Изучив С/С++ ты не познаешь внутрянку. Чтобы познать внутрянку нужно читать книги или проходить курсы по этой теме.
Можешь nand2tetris навернуть. Лучше, наверное, в смысле теория+практика нет. Есть отдельные книги, что теоретически лучше, но их уже потом сможешь прочесть, если нужно будет.
Аноним 20/12/24 Птн 10:11:08 3345506 245
>>3345484
Плюсы не добавляют ничего низкоуровневого к сишке. Только и сишка сама не очень-то низкоуровневая, ниже указателей по сути и нет ничего.
Аноним 20/12/24 Птн 10:28:26 3345525 246
>>3345484
2 столбец пикчи в нюфаг-треде, как правило посредством C. Современный C++ вообще уходит от низкого уровня, и его туториалы скорее дают советы "как обойтись без указателей".
Аноним 20/12/24 Птн 11:17:06 3345579 247
>>3345506
В сишке есть longjmp еще
Аноним 20/12/24 Птн 11:23:50 3345591 248
>>3345525
Функциональщину уже полным ходом завозят.
Аноним 20/12/24 Птн 11:53:12 3345623 249
>>3345484
Рассказываю. Я сам пришёл из скриптоговна, причём совсем недавно.
>указатели
Использовать в следующих случаях:
1. У тебя какой-нибудь объект, который не хотелось бы лишний раз копировать. Например, экземпляр класса или структуры, или массив. С такими вещами, тащемта, и в скриптовых языках обращаются как с указателями, просто в слух не говорят. С ними всегда надо так:
MyClass huy = new MyClass();
huy->zalupa = 1;
И всё. Ничем не отличается от скриптовых, только вместо точки не забывай использовать -> .
2. Тебе надо сымитировать нетипизированное поведение. Делается через void
. Такой тип можно преобразовать во что угодно вообще без затрат, а потом записать в него что хочешь. Но вообще, сюда не лезь, оно тебя сожрёт.
3. Передать в функцию значение по ссылке, если не хочешь лишний раз копировать переменную. Имеет смысл, когда точно знаешь, что внутри функции с ней ничего не будешь делать, зато функцию будешь вызывать 100500 раз в секунду - оптимизация.
4. Передать в функцию значение по ссылке, чтобы сымитировать несколько возвращаемых значений. Тут наоборот - ты эту переменную внутри функции точно поменяешь и таким образом "возвращаешь". Использовать очень осторожно; и вообще, несколько возвращаемых значений - это зло даже в языках, где оно официально разрешено.
Всё, в остальные случаи ты вряд ли ты захочешь лезть без глубинного понимания. А глубинное понимание появится после практики с этими четырьмя.
>ручная сборка мусора
Просто на каждое new в коде должен быть свой delete, и будет тебе счастье. Если не будешь использовать хуйни вида malloc, memcpy и прочую прямую работу с памятью в обход типизации, то этого правила тебе будет достаточно. А если будешь - что ж, F
Аноним 20/12/24 Птн 12:44:36 3345679 250
>>3345623
>Передать в функцию значение по ссылке, если не хочешь лишний раз копировать переменную. Имеет смысл, когда точно знаешь, что внутри функции с ней ничего не будешь делать, зато функцию будешь вызывать 100500 раз в секунду - оптимизация.
И где возникают указатели при передаче по ссылке? А еше ты про const не знаешь походу. Охуенный ты советчик. И таких полон тред
Аноним 20/12/24 Птн 13:19:50 3345718 251
>>3345623
1. Ссылки. И да, ссылки != указатели.
2. Дженерики и тайп касты. Они тоже тебя сожрут, но анализаторам кода будет чуть проще.
3. Ссылки, на крайняк smart_ptr и unique_ptr. Добро пожаловать в ручное управление сроком жизни объектов, это надо знать.
4. Объект как возвращаемое значение. Но да, так и так моветон.
>Просто на каждое new в коде должен быть свой delete
Ни разу не просто, когда проект больше сотни строк. Учи принципы владения объектами.

Описанные тобой приёмы пришли с дремучих времён, когда на сишечку натягивали ООП, а кроме указателей других инструментов не было. Их применение плодит баги, сегфолты и утечки. Архитекторы языка сделали работу над ошибками (не идеал, но всяко лучше чем было), и начиная где-то с C++11 чистые указатели - это легаси либо эмбеддед код.
>Я сам пришёл из скриптоговна
Выйди и зайди нормально
Аноним 20/12/24 Птн 17:10:17 3345956 252
>>3345623
Ты когда-то что-то внутрь функции передаешь, и это не должно меняться, то пишешь const перед параметром.
int square(const int x&) например.
Ещё, если у тебя есть функция в классе, и она не должна менять кишки класса, то ты тоже можешь приписать const
int square(const int x&) const
называется вся эта байда const correctness
Аноним 20/12/24 Птн 22:11:52 3346265 253
>>3345956
Вопрос на засыпку что это значит
class Person {
private:
std::string name;
public:
std::string getName() && {
return std::move(name);
}
const std::string& getName() const& {
return name;
}
}
Аноним 20/12/24 Птн 22:13:49 3346267 254
>>3345330
пару примеров чего? дебаггеров?
Аноним 20/12/24 Птн 22:39:50 3346273 255
>>3345623
>MyClass huy = new MyClass()
Блять, я всё-таки проебал звёздочку. Точнее, её сожрала макаба. После первого MyClass должна быть.

>>3345679
>Охуенный ты советчик. И таких полон тред
Между прочим, честно предупредил, что сам такой же нуб, пришедший из скриптоговна.
>И где возникают указатели при передаче по ссылке?
Поверь мне, на первых порах можно не фокусироваться на их различиях. Всё равно области применения разные.
>про const не знаешь
В контексте передачи аргумента по ссылке это было не особо существенно.
И да, ключевое слово const - не нужно.

>>3345718
>1. Ссылки
Нихуя, оператор new возвращает указатель на экземпляр класса.
>Дженерики и тайп касты. Они тоже тебя сожрут
Вообще, у меня сложилось впечатление, что именно типизация - самое сложное в сях. Не указатели.
>Их применение плодит баги, сегфолты и утечки.
Ну тут да. Особенно тайпкаст указателей. Это пиздец. К счастью, на такой случай человечество придумало санитайзеры.
>чистые указатели - это легаси либо эмбеддед код.
Я бы с радостью разделил твой оптимизм, но в тех проектах, у которых мне доводилось видеть исходники, это вполне себе база. Ну и к тому же, на мой взгляд, гораздо правильнее писать ядро на плюсах по хардкору с указателями, а управлять этим всем (и рисовать морду) при помощи скриптовых языков.
Аноним 21/12/24 Суб 12:48:24 3346464 256
>>3346273
> пришедший из скриптоговна
Никто ниоткуда не приходит, а значит и не уходит. Все, всегда , перманентно находятся в своём состоянии. Если ты "из скриптоговна", значит ты в скриптоговне, был, есть и будешь навечно. Здесь тебе не место, но лезешь и изображаешь из себя. Это лишь тупая игра, дуришь сам себя и серешь вокруг.

Но не подумай плохого, ты хоть не конченый дебил как твой собеседник, тот вообще просто кусок тупого дерьма не годный ни на что.
Аноним 21/12/24 Суб 12:59:32 3346469 257
>>3346464
Я вообще с css стилей и регекспов начал, и постепенно спускался до си, плюсов и ассемблера.
Аноним 21/12/24 Суб 13:26:53 3346479 258
>>3346464
> омежка пытается самоутвердиться считая изучение языков каким то невьебенным навыком, а уж если плюсы выучить то ты сразу тру программистом становишься
Кто среди студентоты такое форсит?

>>3345718
> начиная где-то с C++11 чистые указатели - это легаси либо эмбеддед код
Хорошо что половина софта который тебе придется разрабатывать не появился раньше с++11 и естественно никто его переписывать не собирается
Не говоря уже о том что десктом на кьюте сырыми указателями пользуется, пользовался и будет пользоваться не или выйдет qt7 и придется опять весь софт переписывать
Аноним 21/12/24 Суб 13:47:45 3346493 259
>>3345718
>и начиная где-то с C++11 чистые указатели - это легаси либо эмбеддед код.
Для передачи параметров все указатели как использовали, так и используют. Для хранения - лучше оборачивать какой-то в умный указатель, но в 90% случаев владелец всегда один, и достаточно unique_ptr или тупо new-delete, и запрещенное копирование у класса. Shared_ptr обычно редко нужен, и городить их везде по дефолу - плохая идея.
Аноним 21/12/24 Суб 14:32:01 3346511 260
>>3346479
Программирование не навык, а образ мышления. Обосранному скриптами мозги уже не вправить, он научился, мировоззрение зафиксировалось. Дальше можно только подниматься к более тупым скриптам, но опуститься на низкий уровень нельзя.
Аноним 21/12/24 Суб 15:30:03 3346560 261
>>3346511
>Обосранному скриптами мозги уже не вправить
Да ладно, диды с бейсика начинали, и написали весь современный софт.
Аноним 21/12/24 Суб 15:50:45 3346569 262
>>3346511
> Программирование не навык, а образ мышления.
сможет кто в треде переплюнут по тупости эту фразу?
Что дальше будем романтизировать, школьную алгебру?
Аноним 21/12/24 Суб 16:52:19 3346618 263
Как при касте обрезаются числа? Есть такая вот такая ёба
>(hex & 0xff000000) >> 24;
И по идее должно выйти 0x000000ff
И что он потом обрежет когда приведу к uchar? Нолики или ff?
Аноним 21/12/24 Суб 16:58:33 3346625 264
>>3346560
Но после Бейсика им приходилось учить Ассемблер, потому что альтернатив порой не было.
Аноним 22/12/24 Вск 08:50:57 3346987 265
>>3346618
Каст это обычная операция, он работает над своим операндом, а не над аргументами функции, результат которой в него передается.
(uint8_t)0x12345678 == 0x78, старшие разряды отбрасываются при narrowing conversion
Аноним 22/12/24 Вск 09:19:21 3347003 266
>>3345496
Он создал возможность для тебя перенаправить энергию своей зависти в русло создания такой же ебатории.
Не забудь 100 баксов разработчикам вайна.
Аноним 22/12/24 Вск 09:36:50 3347013 267
>>3344817
>Корпорасто-хуесосы только берут, но не отдают
Они не могут не отдавать, если лицензия их принуждает к этому. Иначе в США их просто засудят на бетабаксы.
То что разработчики выбирают MIT или BSD для своих поделок исколючительно их вина. У Wine кстати GPL, также как и у ядра линукса, не понимаю бухтение.
Аноним 22/12/24 Вск 09:47:01 3347017 268
>>3345496
>Как ты думаешь, скинул он хотя бы долларов 100 девелоперам вайна с dxvk?

dxvk буквально делают люди у него на зарплате.
Аноним 22/12/24 Вск 16:12:24 3347297 269
Ладно. Сейчас без хейта постараюсь.

Объясните мне таки сакральный смысл разделения на cpp и hpp если тот же шаблонный код - ты так писать не можешь и тебе все прям говорят - пиши сразу в hpp и не выебывайся?

Просто я вот пытался нормально, раз уж заставляют делить - буду делить. Не дураки же придумали.

Но что я получаю - получаю ебельдь и совет - ну, смотри, если хочешь в cpp реализацию держать - ты все шаблончики явно проинициализируй, чтобы линкер знал что такое понадобится.
Я такой - ок, понял - шаблонный код сразу в hpp и не выебываемся.

Я даже решил, мож я дурак - полез внутрь векторов, карт, посмотрел. Они тоже - сразу в заголовочном файле и не выебываются.

Но ведь весь смысл тогда ломается же нафиг. Мож я чего пока не понял, но гуглеж в течении 2 часов показывает, что ты либо в .hpp пишешь сразу, либо в этом же hpp все нужные варианты прописываешь а реализацию таки выносишь. Второй вариант - сразу идет нафиг, ведь я не знаю что мне там понадобится ведь если бы знал - прост иерархию объектиков построил и передавал интерфейс.

Просто вилка в виде - для шаблонов так, для обычного так - выглядит как посос полный.
Аноним 22/12/24 Вск 16:15:25 3347298 270
>>3347297
Так исторически сложилось.
Аноним 22/12/24 Вск 16:32:16 3347304 271
>>3347297
Все нешаблонные функции делаешь inline и можешь ничего не разделять, если сильно бесит.
Аноним 22/12/24 Вск 16:38:09 3347307 272
>>3347304
Та не бесит меня. Просто я хочу понять, я дурак или так и надо.
Аноним 22/12/24 Вск 18:24:58 3347366 273
А. Ну еще.
Я так и не понял чем CMake принципиально отличается от того чтобы я сделал g++ ./src/*.cpp -o build/app.exe -Llibs -Iinclude
Все так же прописываешь. Получаешь какую-то магическую партянку из Makefile, какого-то СmakeCache и прочего разного. Но уже разобраться без поллитра как оно работает - становится невозможно. Какие-то заклинания, а на самом сайте с доками - просто грят: вот вставь эту магическую штуку, и будет счастье.
Пока решил - буду дальше собирать через баш. Оно и проще и понятнее и вообще. МБ потом пойму. Пока ./build.sh и погнали.
Аноним 22/12/24 Вск 18:54:26 3347399 274
Аноним 22/12/24 Вск 18:58:38 3347401 275
>>3333359 (OP)
Кто то пробовал с Раста на Плюсы переписывать, на сколько Раст далек от нормальных языков?
Аноним 22/12/24 Вск 19:29:23 3347412 276
>>3347401
Да в целом не сложнее чем с других языков, много конструкций нормально на плюсы переноситься
Единственное код будет поуродливее выглядеть, в расте покрасивее можно ошибки с Option/Result обрабатывать
Возможно придется свои велосипеды писать, хотя когда в плюсах было иначе
Аноним 22/12/24 Вск 19:34:20 3347416 277
>>3347366
У меня тоже с этого горит. За 40 лет не смогли придумать сборщик уровня cargo.
Аноним 22/12/24 Вск 19:41:40 3347421 278
>>3347416
Проблема не в том чтобы написать аналог cargo, а в том чтобы им начали пользоваться
Какой смысл от твоего package manager если в нём нуль пэкеджей

А так как все свои проекты люди собирают на чем угодно, заставить их переехать на твой велосипед == невозможно
Поэтому создать билд систему и пэкедж менеджер как единное целое у тебя не получится, в итоге максимум что может получиться это conan
Аноним 22/12/24 Вск 21:50:45 3347540 279
>>3347421
>Какой смысл от твоего package manager если в нём нуль пэкеджей

Да на пакеты даже пофиг на самом деле. Киллер фича - это билд скрипты. Добавляешь build.rs, и на том же языке делаешь всё, что угодно. На этапе сборки, с использованием любых либ, без ограничений constexpr.

В симейке нужно сделать дополнительный таргет, определить кастомную команду, добавить в сорцы (удачи с первого раза угадать, по какому пути пропишется этот файл), хуё-моё.

Какого хрена я должен всем этим заниматься, чтобы скомпилить ебаный шейдер?
Аноним 22/12/24 Вск 23:20:26 3347586 280
>>3347540
> чтобы скомпилить ебаный шейдер
Неосилятор, спокнись, если ты шейдеры под конпелируемые языки гоняешь, то дело явно в тебе
Аноним 22/12/24 Вск 23:58:58 3347605 281
>>3347586
Не, я понимаю, что SPIR-V для казуалов, а тру геймдевы пишут прямо на ассемблере гпу, но не всем же писать Крузисы.
Аноним 23/12/24 Пнд 00:06:33 3347608 282
>>3347605
>а тру геймдевы пишут прямо на ассемблере гпу
Тру геймдевы пользуются пеcочницами и тем же WebGL2 для прототипирования, а не пердолятся с конпеляцией.
Иди здесь https://shdr.bkcore.com/ играй со своими шейдерами.
Аноним 23/12/24 Пнд 00:22:46 3347613 283
>>3347608
Дожили, теперь даже для CG плюсы не годятся.
Аноним 23/12/24 Пнд 00:34:06 3347617 284
>>3347366
Я тут попробовал SCons и больше не ебусь со сборщиками. Правда, пока только основу понял, но этого оказалось достаточно. Вот как сейчас выглядит мой сборочный скрипт:
>Program("имя_программы",
> ["file1.cpp", "file2.cpp", "file3.cpp"],
> LIBS=["lib1", "lib2"])
И всё, это полный текст. Человеко-блин-понятный, а не те мейковские баш-портянки. Собирает, собранное нормально запускается. Конечно, там ещё окружение можно как-то прописывать, флаги. Но это всё можно раскурить по мере надобности.
И весь сборочный скрипт написан на питхоне, то есть настоящем языке программирования, то есть его можно как угодно расширять под свои нужды, и это не будет непонятное колдунство по рецепту.
Аноним 23/12/24 Пнд 01:09:33 3347628 285
>>3347297
Вот тебе пример из проекта, который я щас пишу (имена изменены для большей контекстуальной понятности) (символ звёздочки защищён от макабы).
//parent.h
#pragma once
#include "child.h"
class Parent {
public:
Child★ children[];
unsigned int num_children;
void askforbeer(Child★);
int beer = 0;
}
Окей, тут всё понятно, батя может попросить у сынули пива, ссылка на детей у бати имеется.
//child.h
#pragma once
class Parent;
class Child {
public:
Parent★ parents[]; // num не нужно, всегда двое их
void bringbeer(Parent★);
}
Тут мы уже наблюдаем своеобразную рекурсию. Ребёнок - поле родителя; родитель - поле ребёнка. Понятно, что им надо друг на друга ссылаться, и выходит рекурсивная зависимость. Поэтому у ребёнка нет инклюда parent.h, вместо этого просто объявляем сам факт существования класса Parent - этого будет достаточно, чтобы в заголовке иметь этот тип.
А дальше самое весёлое.
//parent.cpp
#include "parent.h"
void Parent::askforbeer(Child★ child) {
child->bringbeer(this);
}
Тут уже надо знать, что сынуля умеет приносить пива. А значит надо инклюдить полноценный заголовочник. К счастью, это уже сделано.
//child.cpp
#include "child.h"
#include "parent.h"
void Child::bringbeer(Parent★ parent) {
parent->beer++;
}
А вот и мякотка. Сынуле тоже необходимо знать, что у бати есть поле beer, а не просто что батя существует. Сынуле тоже надо подключить батин заголовок целиком. При этом ему не важно знать, что там батя с этим пивом будет делать. А бате не важно знать, откуда сына это пиво достанет. Они просто оба знают о полях друг друга. Как результат - цппшники нормально собираются. Без разделения заголовков отдельно это был бы пиздец из зависимостей.

Это всего один пример. Но, повторюсь, такое вот кольцо из зависимостей (тип А это поле класса Б, тип Б это поле класса А) я разрулил прямо сейчас в своём проекте. На скриптоговне без разделения объявления и реализации - не смог бы (но без строгой типизации сама проблема эта легко обходится). Есть и другие причины, почему разделять важно, так что делай это не думая - однажды оно тебе внезапно пригодится, а ты уже будешь готов.
Аноним 23/12/24 Пнд 01:49:05 3347642 286
>>3347628
>num_children
>askforbeer
всхрюкнул
Аноним 23/12/24 Пнд 02:23:56 3347647 287
>>3346267
Ну да. Чтобы все переменные как на ладони

>>3346265
Ты про &&? Гугли move semantics. Только зачем это применять на lvalue поле класса я не понимаю.
Аноним 23/12/24 Пнд 02:46:04 3347650 288
Когда уже завезут &&&?
Аноним 23/12/24 Пнд 02:50:25 3347653 289
>>3346479
>половина софта который тебе придется разрабатывать не появился раньше с++11
Да, легаси много, но это не повод застревать в старых приёмах вечно. Новым кодерам - новые стандарты. Так и растёт язык.
>спойлер
Ну вот, ты и сам шаришь.
Да даже если "придётся" ковыряться в легаси, то в принятых на проекте костылях лучше разбираться на месте.
>Qt
Адаптирован с шестой версии. И плевать, что там копошится в недрах фреймворка.
Аноним 23/12/24 Пнд 03:28:53 3347656 290
image.png 184Кб, 450x604
450x604
>>3347540
>Добавляешь build.rs, и на том же языке делаешь всё, что угодно.
Не вижу разницы с build.sh
Кроме языка эсессна, но смысл писать сценарии сборки именно на расте я тоже не вижу.

>>3346569
Погнали
Аноним 23/12/24 Пнд 03:41:51 3347660 291
>>3347650
Когда prvalue и xvalue раздербанят на какие-нибудь pprvalue, mbxmbnotvalue и napolshishehkilvalue и ведь когда-нибудь раздербанят ъ
Аноним 23/12/24 Пнд 03:58:53 3347664 292
>>3347660
Лучше пусть дадут определять кастомные ⚹value, вот тогда заживём.
Аноним 23/12/24 Пнд 07:22:35 3347690 293
>>3347647
>Выделил жирным шрифтом
>Ты про &&?

Ворос, когда сработает перегрузка выделеная жирным шрифтом.
Пример из джосатиса
Аноним 23/12/24 Пнд 09:34:36 3347731 294
>>3347690
Когда объект будет lvalue
Аноним 23/12/24 Пнд 10:29:52 3347776 295
>>3347656
>Кроме языка эсессна, но смысл писать сценарии сборки именно на расте я тоже не вижу.
>
Общие типы и возможность перетащить в рантайм и из рантайма же.
Аноним 23/12/24 Пнд 12:06:03 3347867 296
>>3347776
>Общие типы
В сценариях сборки? Какие там типы нужны кроме string?
>перетащить в рантайм и из рантайма
...допустим, но ИМХО звучит как багодром. Рантаймы сборочной машины и машины юзера будут отличаться, эти отличия будут всплывать в самых неожиданных моментах; всего не учесть. Я бы откладывал промежуточные результаты в файлики.
Аноним 23/12/24 Пнд 12:53:31 3347899 297
>>3347867
>В сценариях сборки? Какие там типы нужны кроме string?
>
Я еще игровую базу данных собираю. Вместо пердолинга с сериализацией в какой-нибудь эс ку лайт просто делаешь несколько инсертов в б-дерево. В рантайме остаётся замаппить файл в память и пользоваться той же самой структурой данных, что и при создании. Работает быстрее, чем при каждом запуске обходить ФС, и основной код становится чище.

>перетащить в рантайм и из рантайма
Блять. Из компайл-тайма в рантайм. Если мне потребуется переписывать шейдеры на горячую, я смогу взять ту же самую либу, которую использую сейчас и вся остальная логика почти не поменяется. Или наоборот, если какой-то функционал окажется не нужен в рантайме, я смогу перетащить его в билд-скрипт с минимальными изменениями. Удобно.
Аноним 23/12/24 Пнд 14:15:20 3348000 298
Аноним 23/12/24 Пнд 17:27:10 3348256 299
>>3346560
Бейсик это ассемблер, ты хоть глянь картинки в гугле как он выглядит, тупорылая пориджила. И в то время работа с компьютером это работа с железом, просто не существовало никаких абстрактных маняскриптов изолирующих свиномакак от машины, даже теоретически на них бы банально ничего не заработало, слишком медленно. На бейсике напрямую вставляли машинные коды и обращались к прошивке за аппаратными возможностями.
Аноним 23/12/24 Пнд 17:48:38 3348278 300
>>3348256
> Бейсик это ассемблер
У нас претендент на победу >>3346569
Аноним 23/12/24 Пнд 18:10:24 3348308 301
>>3347628
Почему в других языках, вроде жавы и шарпа, все просто работает, без такой вот хуйни?
Аноним 24/12/24 Втр 00:45:23 3348554 302
>>3348308
В обоих языках есть интерфейсы. Без них со строгой типизацией не обойтись, постоянно будешь вляпываться в зависимости. А в интерфейсах можно кратенько всё нужное описать, оставив реализацию в другом месте. Зато, делая foo.bar(), ты точно знаешь - у foo есть метод bar.
А в питхоне, жабаскрипте, луа - типизация динамическая, и ты можешь написать foo.bar() без всяких интерфейсов, просто придётся следить, чтобы в foo случайно не залетело что-то без метода bar.

Тащемта скриптовые языки не предназначены для сложных программ с комплексными зависимостями. А строго типизированные - предназначены. И динамическая типизация дорогая и медленная, потому что перед каждым чихом приходится проверять кучу нюансов.
Аноним 24/12/24 Втр 00:56:03 3348558 303
>>3348554
> foo.bar() без всяких интерфейсов, просто придётся следить, чтобы в foo случайно не залетело что-то без метода bar.

В некоторых можно и не следить, но выглядит некрасиво - foo.bar?.()
Аноним 24/12/24 Втр 03:06:55 3348583 304
>>3348308
Потому что там есть рантайм (JVM, .Net) который водит тебя за ручку и подчищает то, за чем ты не следишь.
Ну и >>3348554 прав, за зависимостями надо следить
Аноним 24/12/24 Втр 12:29:23 3348807 305
>>3333359 (OP)
Я макбукобоярин, посоветуйте редакторов и ide для разработки на С++

Ебучий вим или нано с емаксом не предлагать, спасибо
Аноним 24/12/24 Втр 12:32:34 3348813 306
>>3348807
Придётся тебе ставить виртуальную машину с виндой и туда Visual Studio.
Аноним 24/12/24 Втр 12:45:52 3348821 307
>>3348807
У вас же есть хкод. Хуле ты нос выёбываешься? Взял мак - ебись в икскод.
Аноним 24/12/24 Втр 13:01:37 3348850 308
Аноним 24/12/24 Втр 14:56:45 3349000 309
>>3348807
Zed, если поддерживаешь эту тему
Аноним 24/12/24 Втр 15:34:04 3349044 310
Дак что в итоге учить из сборщиков? make или Cmake?
Аноним 24/12/24 Втр 15:35:20 3349046 311
Аноним 24/12/24 Втр 15:40:11 3349048 312
donkeyatdinner.jpg 108Кб, 604x604
604x604
>>3348807
Code::Blocks!
а вообще VSCode+clang

>>3348850
>Ебучий вим ... не предлагать

>>3349000
>multiplayer code editor
Кто вообще решил что это хорошая идея? Мне даже если под руку лезут я хочу морды бить, а тут какой-то хрен с горы прямо в редакторе будет меня донимать?
Аноним 24/12/24 Втр 15:42:16 3349051 313
>>3349044
Сначала make, для пет-проектов его хватит за глаза. Когда подключишься к проекту побольше, смотри как там настроен CMake и разбирайся на месте.
Аноним 24/12/24 Втр 15:45:54 3349053 314
Аноним 24/12/24 Втр 16:00:35 3349079 315
>>3349053
+ TUI
+ лабиринт хоткеев кстати половина стянута из vi, а вторая из kakoune
+ зоопарк плагинов чтобы дотянуть до IDE
Для всех кроме фанатиков - тот же вим
Аноним 24/12/24 Втр 16:01:58 3349081 316
>>3349044
>Дак что в итоге учить из сборщиков? make или Cmake?
И то, и другое
Cmake стандарт, и чтобы сразу был вкат в language server, без костыля в виде bear, make'ом можно собирать небо и аллаха по жизни пригодиться.
Аноним 24/12/24 Втр 16:07:45 3349089 317
Аноним 24/12/24 Втр 16:27:44 3349108 318
>>3349089
https://github.com/movepointsolutions/iv
Вот, что доктор прописал
Тысяча баксов позора на доработку, и можно втирать сисястой эльфийке-офис-менеджеру, что это ранняя версия vi, которую написал сам Иисус с апостолами
Аноним 24/12/24 Втр 16:43:45 3349130 319
изображение.png 22Кб, 518x302
518x302
изображение.png 23Кб, 515x316
515x316
Ладно, я понял, Rust может быть быстрее С++

https://www.youtube.com/watch?v=VMpSYJ_7aYM

А ещё он удобней, на нем меньше вероятность создать баги, да классно.

Но Rust всё равно дно, потому что пик. Согласны коллеги?
Аноним 24/12/24 Втр 16:44:59 3349133 320
Вы тоже пишите код на умных указателях и только если перформанс не устраивает идете переписывать код на глупые указатели?
Аноним 24/12/24 Втр 16:51:54 3349139 321
>>3348558
Это ещё хуже. Например:
> a = foo.bar?.()
> bleble = a.blabla?.()
> return bleble.x + blublu.y
Ну и дальше вообще пиздец ищи-свищи, где ошибка. Уж лучше как в луа:
> if not foo.bar or type(foo.bar) ~= "function" then
> print("Error!!! Vse propalo!!!")
> return
> end
Но такие конструкции добавляют ещё немного к общему времени исполнения, которое при гибкой типизации и так немаленькое.
Аноним 24/12/24 Втр 16:54:18 3349142 322
replyingto(you).jpg 40Кб, 508x539
508x539
Аноним 24/12/24 Втр 17:06:23 3349157 323
>>3349133
Для решения любой задачи стараюсь использовать сначала самые глупые инструменты; а потом, если им не хватает функционала, заменяю за более сложные и умные.
Если указатель полностью живёт внутри экземпляра класса, или если я чётко знаю, когда происходит new и когда delete, то не вижу смысла что-то усложнять.
А смысл этот появляется в комплексных проектах, где не так просто уследить за указателем. Например, когда он много где используется. Или когда разные части проекта разрабатывают разные люди.
Аноним 24/12/24 Втр 17:08:24 3349160 324
>>3349157
Понял, спасибо. В целом логично
Аноним 24/12/24 Втр 17:08:38 3349161 325
>>3349108
Настолько ранняя, что большинства ed команд не реализовано
Аноним 24/12/24 Втр 17:17:59 3349169 326
>>3349157
>а потом, если им не хватает функционала,
пытяться вкорячить другой, успокаивать компилятор, вскрыть муравейник багов, неделю мучаться с переходом, плюнуть и начать всё заново
Не, я только за простые решения для простых задач, но желательно заранее прикинуть, не станет ли задача сложнее. А если станет, поискать, не решали ли её до меня, и к какому результату пришли. И кто бы мог подумать - поиск обычно заканчивается в доках STL или Boost!

А голые указатели всё-таки удел сишников.
Аноним 24/12/24 Втр 18:12:34 3349201 327
>>3349169
>желательно заранее прикинуть, не станет ли задача сложнее.
Согл. Не уточнил:
>стараюсь использовать сначала самые глупые инструменты соответственно потавленной задаче
То есть, сначала распланировать задачу, затем взять инструмент достаточно простой.
Если в процессе задача поменяется, и надо будет использовать более сложный инструмент, скорее всего, понадобится меньше телодвижений, чем на переход с более сложного на более простой. Частенько интерфейсы сложных инструментов обратно совместимы с простыми; наоборот встречается гораздо реже.
Аноним 24/12/24 Втр 20:32:56 3349311 328
{4A9A1A38-EA7D-[...].png 144Кб, 1361x468
1361x468
Опять я.
В общем. У меня вопрос. Я чет не понимаю. Я опять дурак или так и надо.

Собственно. Вот код. В чем суть. Я хочу, хранить и-ю о том какие компоненты сущность себе добавила, чтобы потом - удалить их правильно.
И в чем проблема. Ну, мои хабы - синглтроны темплейтовые. Вот. И типа из-за этого я не знаю как по нормальному при "уничтожении" сущности - разрегистрировать компонент в хранилище.
Типа я вот сейчас сделал что при добавлении нового компонента - вот эта срань происходит, т.е. я в словарик добавляю ключом - шаред поинтер и лямбду на разрегистрацию. Но выглядит это как какой-то посос.

Я сначала хотел просто список вести, но типа чтобы знать из какого хаба удалять - надо знать тип... Вот а в момент уничтожения сущности - я бы знал что просто какой-то компонент есть.

Можно конечно сделать финт ушами, и пусть компонент знает про сущность к которой привязан, тогда я могу просто по всем хабам пройтись, и удалить просто все компоненты с этой сущностью. Но тоже как посос выглядит.

Такие вот дела.
МБ кто-то знает как сделать менее пососно это все дело.
Аноним 24/12/24 Втр 20:45:36 3349322 329
>>3349311
Хм... В принципе - подумал что наверное хаб - может возвращать сам функцию для разрегистрации.
Тогда сущность будет просто их хранить и вызывать и ей вообще про компонент не надо будет знать.
В принципе наверное такой вариант норм.
Но если я хочу чтобы компонент можно было удалить во время жизни сущности - тогда придется делать врапер для удаления компонента. Типа - компонент - разрегистратор. И при удалении компонента из сущности, без полного удаления сущности - можно будет найти враппер такой и его дернуть.
Аноним 24/12/24 Втр 21:16:40 3349334 330
>>3349322
Смотри как сделано в популярных ECS
Например Entt
Смотреть какие компоненты добавлены в конкретную сущность, это вообще противоречит подходу ECS
В системах ты не по сущностям проходишь, а по компонентам из общего реестра
Реестр делается на разреженных структурах данных. Операции удаления и добавления O(1)
Метод обхода шаблоный для набора компонентов
auto view = registry.view<const Component1, Component2>();
view.each([](const Component1 &com1, Component2 &com2) {
//
})
})

Идея в том что в системе автоматически выбираются только те сущности, у которых есть в наличие компоненты нужные для системы
Аноним 24/12/24 Втр 21:32:08 3349340 331
>>3349334
Ну. Я таки не ECS делаю.
Мне просто хотелось компонентный подход применить в классическом смысле. Типа чтобы не каждый раз реализовывать логику с физоном для крысы, персонажа и т.д. и при этом не придумывать хитрую систему наследования; а один компонент который за нее отвечает и его уже все кому надо физон себе получают и радуются. Ну, типа композиция, вся фигня. А сущность это типа такой-то аггрегат просто, чтобы пачку компонентов держать и проще с ними работать.
А ECS классический, как понимаю - это же типа хитрая фигня, которая именно чтобы оптимизировать уже работу с компонентами в плане - хуяк, у тебя завекторизировалось, хуе-мое, хуяк за одну итерацию цикла - сразу 100500 компонентов просчитали что-то что им надо.
МБ я не прав.

В любом случае - да, посмотрю.
Аноним 25/12/24 Срд 03:19:50 3349434 332
>>3348807
VsCode - самый очевидный вариант, относительно легковесный, куча плагинов для всего. CLion, если есть возможность купить или готов пиратить. Eclipse - энетерпрайзненько и тяжеловато, но все фичи есть.
Аноним 25/12/24 Срд 03:28:56 3349435 333
>>3348807
Рил зря про вим так.
Литерли - лучшее что может быть в плане написания кода.
Аноним 25/12/24 Срд 03:31:54 3349436 334
>>3349311
>но типа чтобы знать из какого хаба удалять - надо знать тип...
Почему его компонент не может выдавать? Тупо виртуальный метод у него сделай, который возвращает IComponentHub. Заодно можешь в хабе хранить список интерфейсов, который твой компонент реализует. И потом работать через интерфейсы в компонентах, если тебе не хочется системы делать. Т.е. должен быть метод получить у сцены все компоненты с физоном, рендером, и потом работать с ними через соответствующий интерфейс. В Qt 3D, например, у их компонентной системы это называется "аспекты".
Аноним 25/12/24 Срд 07:44:27 3349456 335
Шел Hadoop - насрал под дуб
Джава шел -- cocaine нашел
Аноним 25/12/24 Срд 09:41:58 3349493 336
Зачем было добавлять в стандартную библиотеку монстроозную писанину std execution уровня фреймоврка?
Ладно, пусть указывают как нам тредпулы писать, так она ещё и без реализации там лежит, придётся ещё искать реализацию реализации стандартной библиотеки.
Может все остальные классы тоже заменить на эти ебаные концепты, бля? Зря что-ли на лабах свои стринги и массивы реализуем, будет польза хотя бы, чтобы в будущем проекте перед написанием полезного кода меньше концептов реализовывать.
Аноним 25/12/24 Срд 11:28:19 3349532 337
>>3349493
Чтобы стандартописакам дали медальку, маркетолухи визжали "C++ теперь асинхронный", а всякие шланги с кутями разгребали это говно.
Да ладно, стандарт пока не принят, авось допилят ещё.
Аноним 25/12/24 Срд 14:33:53 3349694 338
>>3349493
>Зачем было добавлять в стандартную библиотеку монстроозную писанину std execution уровня фреймоврка?
Это для куды и OpenMP, я так понимаю. Чтобы можно было код переносить без адаптации. Т.е. реализация в сторонних тулзах будет, а не в стандартной либе.
Аноним 25/12/24 Срд 15:59:45 3349758 339
>>3347628
О какой рекурсивной зависимости ты говоришь если у тебя тупо указатели в структуре?
Аноним 26/12/24 Чтв 17:10:35 3350467 340
Решил так:
1. Пишу сборщик homo для С и С++
2. Пишу кросспайлер homoC в C (как Vala)
3. Если проект взлетит, то напишу фронт для LLVM
Аноним 26/12/24 Чтв 17:31:26 3350487 341
ты из этих что ли
Аноним 26/12/24 Чтв 20:16:42 3350581 342
Аноним 26/12/24 Чтв 23:03:46 3350664 343
>>3350581
Может взлетит у гомо. У трансов не взлетит, потому что уже есть раст.
Аноним 27/12/24 Птн 11:55:45 3350839 344
>>3350664
Пидор это тот, кто ебет, или тот, кого ебут?
Аноним 27/12/24 Птн 15:11:53 3350957 345
Аноним 27/12/24 Птн 16:30:34 3351001 346
Аноним 27/12/24 Птн 16:48:59 3351023 347
>>3350957
!(кто ебет) || (тот, кого ебут)
Аноним 27/12/24 Птн 17:35:03 3351059 348
std::graet(std::again)
Аноним 27/12/24 Птн 19:09:55 3351137 349
Знакомлюсь с QML. Пиздос наркомания...
Это хищники для чужих разрабатывали?
Аноним 27/12/24 Птн 21:02:41 3351181 350
3bed14f42d10350[...].jpg 162Кб, 1228x868
1228x868
>>3351137
Пьяные фины в сауне придумывали

Делал как то плеер и так получилось что перемещение ползунка вручную вызывает рекурсию, так как запись в параметры какого то объекта по сути вызов по цепочке всяких зависимых параметров.
А со списком треков я вообще заебался, при перемещении трека драгндропом надо подсвечивать между какими треками оно встает и так получается если список прокрутить то подсветка начинает уезжать так как в qml нету scrollX scrollY как в html+js, и реально то что в последних делается на раз два без проблем в qml надо ебаться.
В общем уебищная технология на которой только хеловорлд отрисованый ровно по центру хорошо реализовывать, а что-то сложное это анал-карнавал.

В связи с чем и предлагал запилить фреймворк аналогичный Qt только без Q классов, на ванильном стандарте и с html+js+css вместо qml+es для адаптивных интерфейсов.
Аноним 28/12/24 Суб 23:32:19 3351950 351
>>3351181
>В связи с чем и предлагал запилить фреймворк аналогичный Qt только без Q классов
Qt - это еще свой RTTI и свой рефлекшен. Без препроцессора, пока C++26 не приедет, это будет выглядеть как лес из макросов в разы хуже Qt, а с препроцессором будет тот же Qt вид в профиль. Для +- браузерного интерфейса и так полно либ, можно тупо на Skia + какой-нибудь либе для лейаута вроде Clay все слепить за пару недель, причем самое сложное будет инпут текста вроде QLineEdit, и вся платформозависимая фигня вроде нативных диалогов для открытия файлов.
Аноним 29/12/24 Вск 09:15:15 3352055 352
>>3351950
Препроцессор это часть компилятора, причем тут Qt или стандарт шиз?
>Для +- браузерного интерфейса и так полно либ
Перечисли какие знаешь.
>амое сложное будет инпут текста вроде QLineEdit, и вся платформозависимая фигня вроде нативных диалогов для открытия файлов.
libgtk Firefox использует и норм
Аноним 29/12/24 Вск 10:08:08 3352078 353
Аноним 29/12/24 Вск 11:15:34 3352100 354
Снимок экрана о[...].png 183Кб, 1016x679
1016x679
x6NcMz6l1FDy9CV[...].webp 10Кб, 480x270
480x270
>>3352078
> Q_OBJECT

принес препроцессорные костыли которыми QT связывает плюсовый объект с QML говной
Аноним 29/12/24 Вск 18:26:04 3352384 355
директория.png 68Кб, 1362x366
1362x366
айнод.png 52Кб, 1365x467
1365x467
Есть спеки к ext2
https://www.nongnu.org/ext2-doc/ext2.html

Как понять иерархическую организацию директорий, если в структуре директории есть только оффсет (до соседнего по текущей директории) файла, имя и айнод; а в айноде - лист блоков, где хранится файл, и другое, но ни намёка, как разные уровни директорий связаны друг с другом?

Спрашиваю здесь, потому что Си-треды унесло куда-то
Аноним 29/12/24 Вск 19:22:36 3352438 356
17336905887570.jpg 489Кб, 810x1080
810x1080
>>3352384
Только что доперло. Первый указываемый блок в inode.iblock хранит запись директории. Вопрос закрыт, сорян за мусор
Аноним 30/12/24 Пнд 10:41:26 3352781 357
Аноним 30/12/24 Пнд 11:08:38 3352786 358
>>3351181
Кек, на qt фотошоп написан, а дебич не может ползунок победить и кукарекает.
Аноним 30/12/24 Пнд 11:10:40 3352789 359
>>3352781
но зеро кост же... бесплатно же...
Аноним 30/12/24 Пнд 11:19:06 3352796 360
Решено. Сегодня займусь оптимизацией одного алгоритма. Хочу выпить максимум.
Аноним 30/12/24 Пнд 11:25:25 3352798 361
11GbXl.jpg 206Кб, 821x570
821x570
>>3352786
> а вот на qt кокошоп написан
С препроцессором серанул решил с другого края зайти?
Не отличаешь qml от qt не лезь вообще тогда, клован блять.
Аноним 30/12/24 Пнд 12:53:48 3352848 362
>>3352781
Самое главное это успеть отключить комментарии, чтобы другие пердолики не обоссывали.
Аноним 30/12/24 Пнд 12:55:48 3352850 363
>>3352848
Всё так. Я могу его понять. Ютуб не место для обсуждения, это вам не госдума.
Аноним 30/12/24 Пнд 14:11:23 3352911 364
Ньюфаг в треде. Я правильно понимаю из этого видео, что база оптимизации C++ кода это перенос вычислений на этап compile вместо runtime?

https://www.youtube.com/watch?v=8-VZoXn8f9U
Аноним 30/12/24 Пнд 17:01:25 3353015 365
>>3352911
База оптимизаций c++ - быть человеком с мозгом и писать качественный код от и до, не думая, что какая то единственая фича ускорит таой код в мильон раз
Аноним 30/12/24 Пнд 17:17:19 3353029 366
>>3352100
Анимешная аватарка - это всегда симптом глубокого повреждения головного мозга, конечно.
Аноним 30/12/24 Пнд 18:27:42 3353075 367
>>3351181
> В связи с чем и предлагал запилить фреймворк аналогичный Qt только без Q классов, на ванильном стандарте и с html+js+css вместо qml+es для адаптивных интерфейсов.
Зачем что-то придумывать, если есть xaml и winui/uwp?
Аноним 30/12/24 Пнд 18:37:27 3353081 368
1648171763025.mp4 3096Кб, 780x600, 00:00:12
780x600
Аноним 30/12/24 Пнд 19:01:52 3353095 369
>>3353081
Мне терпеть незачем, у меня СДВГ нет, как у тебя.
Аноним 30/12/24 Пнд 20:07:55 3353117 370
>>3353095
поэтому ты в каждый тред срешь про пердолей и прочую хуйню, да шиз?
Аноним 30/12/24 Пнд 23:12:45 3353196 371
О С++, язык моих страданий, бессонно прожитых ночей,
Язык любви, очарованья, стенания души моей.
Я каждый раз садясь за книги и молча глядя в монитор,
Пытался осознать все фитчи, на код бросая томный взор.
Развеяв грусти и печали, взбодрившись рано по утру,
Я чашку кофе выпиваю и код писать к тебе бегу.
Аноним 30/12/24 Пнд 23:17:03 3353199 372
4141f72b260a77b[...].png 413Кб, 1280x720
1280x720
Аноним 30/12/24 Пнд 23:17:54 3353202 373
>>3349130
86 смузи-вакансий по написанию нового софта на современном модном блейзинг фаст языке против 1395 вакух по поддержке легаси копролита старше тебя в 2-3 раза на отвратительно задизайненной хуете, от которой медленно но верно отказываются по всему миру.
Аноним 31/12/24 Втр 00:20:59 3353227 374
>>3353117
>ты в каждый тред срешь про пердолей и прочую хуйню, да шиз?
Да, все вокруг шизы, один ты нормальный, с шизами борешься во всех тредах.
Аноним 31/12/24 Втр 07:49:08 3353266 375
>>3353202
Так на смузи языке такую же говно архитектуру пишут. Любой софт со временем превращается в "легаси". Потому что уходят последние люди, которые его разрабатывал и теперь часть проекта является джунглями куда никто не заглядывает. Тут не в языке дело.

Если верить в закон Конвея, то тогда получается, что архитектура наслаивается друг на друга во времени отражая изменения в организации работы компании разрабатывающей этот софт.

В этом случае софт неизбежно скатывается в неповоротливое нечто с нулевой эффективностью требующего кучи разрабов, чтобы он просто продолжал работать с изменяющейся во времени инфраструктурой.

Выход тут один:
1. Делать вайп всего софта и по сути писать его заново
2. Никогда не менять не только архитектуру, но и организацию работы над софтом

Оба варианты утопичны поэтому легаси, говно архитектура вечны до тех пор пока процесс создания кожа не станет принципиально, революционно отличаться от текущего
Аноним 31/12/24 Втр 09:00:15 3353287 376
изображение.png 458Кб, 793x740
793x740
Вот такое говно будет наблюдаться в любом проекте на каком-то этапе. Слева архитектура 1, справа архитектура 2, снизу справа результат "перехода от архитектуры 1 к архитектуре 2". Перехода нет, есть увеличение сложности, так как невозможно "перейти" от одной архитектуре к другой без полного переписывания кода, читай вайпа проекта и создания с нуля нового.

А это только был один раз когда изменилась или структура организации и границы ответственности отделов создали новую архитектуру или решили изменить архитектуру осознанно. Разница не имеет значения для итогового результата.
Аноним 31/12/24 Втр 11:45:23 3353333 377
>>3353202
Неправда, я вот например пишу новое легаси, над которым будут ломать голову потомки.
Аноним 31/12/24 Втр 12:08:56 3353344 378
image.png 80Кб, 1328x448
1328x448
image.png 90Кб, 1361x479
1361x479
image.png 107Кб, 1329x492
1329x492
image.png 90Кб, 1178x473
1178x473
Не троллинга ради и срачей, а любопытство - как у там у коллег по цеху. У вас возникают проблемы с изучением такой документации?
Аноним 31/12/24 Втр 12:11:55 3353345 379
image.png 65Кб, 709x583
709x583
Я считаю, что корутины - это круто. Хотя, я спокойно жил с обычными event-drven и колбэками или asio.

Но я перестал понимать, что мне пишут в документации, а все ти шаблоны и прочее... ну для меня не читаемо. У меня проблемы в знании метапограммирования или что?

Всех с наступающим Новым годом! Желаю поменьше легаси, поменьше митингов и зп 500к!
Аноним 31/12/24 Втр 13:24:27 3353396 380
>>3353345
С наступающим!

Насчёт документации: я только после того как сам напишу несколько примеров начинаю понимать что в ней обычно написано.
Аноним 31/12/24 Втр 15:32:35 3353497 381
1623133809965.png 21Кб, 931x150
931x150
Сука, как же я обожаю std. find возвращает unsigned, но при этом в доках написано что если ничего не найдено, то вернётся npos, равный -1. Если пишешь if(string.find(zalupa) < 0) то нихуя не работает. А самим крестам абсолютно похуй на содержимое if и что там за типы сравниваются, у нас же неявные касты чего угодно к чему угодно всегда. Я ебал этих дегенератов.
Аноним 31/12/24 Втр 15:56:51 3353515 382
17310238939950.jpg 234Кб, 748x328
748x328
Чому все в одно горло визжат, что прогать на C++ нужно на писюGNUксе? С каких пор принято марать руки об это говно, сделанное на коленке? Там же из альтернатив Visual Studio есть только глючный и прожорливый CLion.

Линуксолахта это уже не миф, а реальность? Почему и кому выгодно все измазать говном?
Аноним 31/12/24 Втр 16:14:22 3353520 383
>>3353515
"Все" - это 2.5 двачера?
Аноним 31/12/24 Втр 16:23:08 3353524 384
>>3353497
>то вернётся npos, равный -1
таблы ебни
Аноним 31/12/24 Втр 16:30:39 3353529 385
ombz09p2o5291.webp 42Кб, 640x287
640x287
>>3353520
Реддит, квора, чатгпт, куда не взгляни все под копирку орут, что гну/линукс вещь необходимая, но умалчивают о плохой поддержке драйверов(не говоря уже о проприетарных), об отъебе графической оболочки после большого обновления, отсутствии нормальной IDE, о использовании opensource поделий заместо норм софтов, о пакетах которые тянут за собой еще дохулиард зависимостей, которые в итоге крашутся к хуям.

Отдельный разговор про реддит, где с серьезным ебальником рассказывают что gdb лучший дебаггер с которым нужно в консольке пердолиться лол
Аноним 31/12/24 Втр 16:34:55 3353531 386
1583660220362.png 16Кб, 1217x126
1217x126
>>3353524
Сам выпей. В зависимости от архитектуры значение этого unsigned числа будет разное, надо сравнивать его с дженерик npos, любые попытки сравнить с числом будут работать некорректно. В чём проблема возвращать signed, где будет нормальное -1? Алсо, что за size_type у них, которому они -1 присваивают? size_t - это unsigned, там не может быть -1. По итогу эти клоуны предлагают пользоваться отрицательными числами с беззнаковыми типами, заебись.
Аноним 31/12/24 Втр 17:03:14 3353545 387
>>3353531
не пиши больше кринжанул
Аноним 31/12/24 Втр 17:28:15 3353566 388
>>3353497
а ты что думал, все тут шутили когда говорили что стл это кал?
с новым годом так сказать, можешь в целом для себя запомнить что плюсовики не умеют в библиотеки, от слова совсем

А по поводу npos, никогда не расчитывай что он будет ниже нуля, проверяй сравнением find(...) != std::(...)::npos
Аноним 31/12/24 Втр 18:07:44 3353596 389
>>3353531
>По итогу эти клоуны предлагают пользоваться отрицательными числами с беззнаковыми типами, заебись.
Вроде бы, size_t n = -1 достаточно понятная запись. Понятно, что отрицательных чисел там быть не может, и в результате в битовом виде получаться 1111...1, т.е. максимальное значение для беззнаковых чисел. И сравнивать с -1 его можно, но больше-меньше работать не будут по понятным причинам. Это особенности беззнаковых чисел, которые знать надо. Многим сложно, да. Не зря в джаве только знаковые числа сделали.
Аноним 31/12/24 Втр 18:24:39 3353602 390
>>3353596
> достаточно понятная запись
Если тебе понятно что это значит, то напиши что за число конкретно в n окажется. Там может что угодно получится в зависимости от размера size_t и архитектуры, переполнение unsigned платформозависимая операция. Это знать надо. В том же расте тебе компилятор просто не даст сделать такое говно, могущее работать хуй пойми как.
Аноним 31/12/24 Втр 18:27:34 3353603 391
>>3353596
А там не будет так, что просто будет сделано число со знаком в двоичной записи, а потом просто будет вписано это представление в беззнаковое число?
Аноним 31/12/24 Втр 18:37:22 3353607 392
>>3353603
>А там не будет так, что просто будет сделано число со знаком в двоичной записи, а потом просто будет вписано это представление в беззнаковое число?
Да, так и будет, я об этом и пишу, -1 - это 64 единицы в двоичном виде. Для беззнаковых чисел - это 2^64-1.
Аноним 31/12/24 Втр 18:45:49 3353612 393
>>3353602
>Там может что угодно получится
И что с того? Понятно должно быть, что с этим числом можно только == сравнивать, а не больше-меньше делать. Ну и реально, в 2023 платформ и компиляторов уже слишком мало, чтобы там что-то экзотическое могло получиться.
>В том же расте тебе компилятор просто не даст сделать такое говно
Там не лучше, на самом деле. Или паник на оверфлоу, или отключаешь эксепшен, и получаешь превращение в тыкву похуже, чем в плюсах.
Аноним 31/12/24 Втр 18:55:50 3353616 394
>>3353612
Там паник на оверфлоу только в дебаг сборке, оно само тключается в релизе. Предполагается что ты нормальную обработку сделаешь если нужно.

let value = i8::MAX;
let result = value.overflowing_add(1); // (i8, bool)
Аноним 31/12/24 Втр 19:47:41 3353633 395
>>3353497
Ты читать не умеешь. Все написано там, надо просто пынимать почему так. Там даже написано почему -1, хотя тип unsigned. Читать научись
Аноним 31/12/24 Втр 22:45:16 3353748 396
>>3353531
>В чём проблема возвращать signed, где будет нормальное -1?
>что за size_type у них, которому они -1 присваивают? size_t - это unsigned, там не может быть -1.

Как же ты заебал, шиойд. Изучи матчасть по целочисленным типам потом приходи высираться.
Аноним 01/01/25 Срд 00:18:19 3353774 397
Так чо, компилятор делает исключение специально для size_type?
Аноним 01/01/25 Срд 00:40:26 3353777 398
>>3353774
-1 это просто обозначение числа у тебя в коде
для size_t это число может быть равно 18446744073709551615
процессору похуй что считать, у него в архитектуре для целых чисел нет специального знакового разряда. Целые со знаком просто в дополнительном коде предствляются. Безнаковые представляются обычным способом, число -1 транслируется в 18446744073709551615


мимо
Аноним 01/01/25 Срд 00:47:11 3353780 399
>>3353774
Ты видимо из джаваскрипта привычку распостранил на с++
В жс все числа float-ы. У флоатов есть знак в комлюктере
Аноним 01/01/25 Срд 00:52:27 3353781 400
>>3353531
>любые попытки сравнить с числом будут работать некорректно
if (ret + 1) found();
Аноним 01/01/25 Срд 03:43:11 3353813 401
>>3353345
Какой же отвратительно омерзительный код. Идеальные ссылки, мувы, мутейбл. Как будто бы в этот суп намешали всего самого нового говна.
Аноним 01/01/25 Срд 03:50:56 3353815 402
>>3353774
На цппреференс указано конкретное правило которое обтясняет почему так работает
Аноним 01/01/25 Срд 10:11:29 3353854 403
>>3353780
> В жс все числа float-ы
Нет иначе бы битовые операции например не работали.
Там просто как и в других подобных языках число представлено объектным типом Number который хранит информацию о том в каком формате находится [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger](число)

А так вообще там и строго типизированные массивы есть, пару раз использовал что бы сишную функцию в браузере запустить:

var a = new Uint32Array(2)

a[0] = -1
a[1] = 0xFFFFFFFF

a[0] === a[1] // true
Аноним 01/01/25 Срд 10:28:35 3353863 404
>>3353602
>Там может что угодно получится в зависимости от размера size_t и архитектуры,

Ну так то следует писать (size_t)-1 и все.
Аноним 01/01/25 Срд 10:54:52 3353866 405
1607858026932.png 532Кб, 1327x965
1327x965
Аноним 01/01/25 Срд 11:41:03 3353875 406
>>3353866
>auto String::operator-(Number) -> Number
>auto String::operator+(Number) -> String
>'5'::operator+('2'::operator-())

Джаваскрипт EcmaScript задумывался как легко интерпритируемый в плюсы язык без виртуальной машины, JIT и прочего.
В QML например так и происходит js файлы интерпритируются в C++ лапшу (как выше) и компилируются в бинарий.
Аноним 01/01/25 Срд 11:48:37 3353876 407
>>3353815
Трудно тыкнуть носом меня? Где сцылка?
Аноним 01/01/25 Срд 11:51:01 3353877 408
>>3353866
Кек, видел эту историю в живую. Тянка училась на qa инженера, поискал работу, не нашла и просто стала трахаться с Олень Оленычем за деньги. Ещё и с гордостью об этом рассказывала как наебала систему.
Аноним 01/01/25 Срд 12:21:29 3353881 409
>>3353876
https://en.cppreference.com/w/cpp/string/basic_string/npos

Note
Although the definition uses -1, size_type is an unsigned integer type, and the value of npos is the largest positive value it can hold, due to signed-to-unsigned implicit conversion. This is a portable way to specify the largest value of any unsigned type
Переходишь дальге по ссылке из статьи и читаешь правила конверсии
Аноним 01/01/25 Срд 12:26:08 3353883 410
>>3353881
> читаешь правила конверсии
хрюкни
Аноним 01/01/25 Срд 12:26:35 3353884 411
>>3353883
Вот так и помогай потом
сокеты и ttl Аноним 02/01/25 Чтв 02:48:32 3354237 412
Помогите!
При написании небольшого клиента можно ли сделать свое значение TTL? В одних источниках написано, что можно это делать через setsocketport, но не удалось найти, как такое делать.
Аноним 02/01/25 Чтв 02:53:33 3354238 413
>>3354237
А нах тебе? Шлюзы его всё равно могут и будут менять как им вздумается.
Аноним 02/01/25 Чтв 03:17:19 3354242 414
>>3335806
2025 уже был на носу, а он:
>Я бы тоже, честно говоря,
>съебывал в Европу скорее
Ебало представили?

Вот что бывает, когда человек совершенно не понимает, куда движется геополитика.
Аноним 02/01/25 Чтв 04:08:17 3354248 415
>>3354237
> При написании небольшого клиента можно ли сделать свое значение TTL?
Можно.
> не удалось найти, как такое делать.
Вряд ли тебе стоит заниматься программированием.
Аноним 02/01/25 Чтв 07:22:52 3354268 416
>>3354242
> геополитика
Так и хочется тебя обоссать.
Аноним 02/01/25 Чтв 07:27:41 3354271 417
А кто-нибудь работал с OpenGL? С удивлением обнаружил две вещи:
1. Поддерживается любым устройством с GPU
2. Можно параллельно задачи на GPU вместо того, чтобы забивать процессор
3. Крайне не популярный, если загуглить вакансии, то упоминается только в игроделании

Почему работа с GPU как будто игнорируется за пределами игрушек? Это же важный способ увеличить перформанс приложения в случае хорошо параллелизуемой задачи.
Аноним 02/01/25 Чтв 08:50:11 3354287 418
Что такое хорошая и что такое плохая архитектура приложения?
Аноним 02/01/25 Чтв 09:34:42 3354292 419
>>3354271>>3354287
Тебя не заебало штурмовать тред тупыми вопросами?
Аноним 02/01/25 Чтв 10:39:39 3354295 420
Аноним 02/01/25 Чтв 11:46:48 3354319 421
>>3354271
Ладно, эта хорошая была. Проиграл.
Аноним 02/01/25 Чтв 12:01:54 3354326 422
>>3354292
Дай не тупой ответ и не буду задавать вопросы
Аноним 02/01/25 Чтв 15:21:31 3354414 423
>>3354326
ИНДУСтрия в упадке.
Не благодари.
Аноним 02/01/25 Чтв 22:42:59 3354676 424
>>3354414
Не вижу признаков упадка
Аноним 02/01/25 Чтв 23:19:13 3354703 425
Аноним 03/01/25 Птн 02:40:46 3354800 426
>>3354271
Бизнес активно использует машоб и нейросети для решения своих бизнес задач. Под капотом у всяких машоб фреймворков cuda. Ты первокур?
Аноним 03/01/25 Птн 06:17:05 3354829 427
>>3354703
>>3354800
Так это работает только с видеокартамми NVidea. Это не запустить на мобилках, на планшетах, на телевизорах, на десктопах с амд видюхами. Opengl поддерживается буквально любой системой и любой гпу.

Вообще надо быть первокуром, чтобы серьёзно скидывать куду как пример универсального решения работы с гпу.
Аноним 03/01/25 Птн 06:21:20 3354830 428
Аноним 03/01/25 Птн 08:24:41 3354849 429
>>3354271
Я не эксперт, но думаю проблема в том, что GPU может не поддерживать инструкции, которые тебе будут нужны. GPU этот тот же CPU, только гораздо тупее, но зато в нём куча ядер.
Потому GPU ты можешь использовать только для мат. операций в основном.
Аноним 03/01/25 Птн 08:58:18 3354863 430
>>3354849
Чатгопота говорит, что не используют из-за того, что передача данных из главной памяти в GPU и обратно очень долгая и из-за этого время выполнения задачи может быть дольше чем на CPU даже если сама задача идеально подходит для GPU (параллельная, простые математические операции).

Плюс он написал мне код пример и там на эту операцию сравнения нужно создать шейдеры, скомпилировать шейдеры, создать текстуры для массивов данных, создать opengl программу куда передать шейдеры и текстуры, а потом ещё создать текстуры для выходных данных и это всё может упасть в любой момент, поэтому после каждого шага проверка на ошибки в буфере и откат всего сделанного.

В общем, выглядит надежно как швейцарские часы. Тем не менее в моем случае он всё равно выглядит как интересный вариант потому что у меня задачи связанные с обработкой изображений приходящих с камеры и документация намекает, что можно получить доступ к данным которые уже находятся в GPU, то есть без необходимости их передачи туда.

И всё это ради того, чтобы не за 12 мс обрабатывать кадр, а хотя бы за 5 мс.
Аноним 03/01/25 Птн 09:53:19 3354879 431
>>3354863
Ты какой то ебанутый. У видеокарты есть своя память, копируешь их туда (в память текстуры) и обрабатываешь их там, естественно если ты будешь обращаться к массиву в общей памяти никакого выйгрыша не будет, будет только замедление.

Во вторых изрбражения это 2d графика с ней можно делать какие то несложные манипуляции в видеопамяти с вполне себе ускорением. Но если надо накладывать сложные фильтры или делать какие то развороты то надо использовать 3d контекст и писать на GLSL обработку примитивов или как оно там.

Ну и в третьих это вполне себе широко используется даже в браузере (Webgl)
Аноним 03/01/25 Птн 10:01:36 3354887 432
>>3354879
> Ты какой то ебанутый. У видеокарты есть своя память, копируешь их туда (в память текстуры) и обрабатываешь их там, естественно если ты будешь обращаться к массиву в общей памяти никакого выйгрыша не будет, будет только замедление.
Ты какойто ебанутый. На копирование из главной памяти в память GPU и тратится много времени.
Аноним 03/01/25 Птн 10:33:10 3354898 433
>>3354887
Сколько много? В общем времени работы программы сколько занимает, примерно можешь почувствовать?
Аноним 03/01/25 Птн 11:30:10 3354939 434
>>3354898
Не могу, потому что это ответ чатгпт, а не мой. Но если что для соего алгоритма требования к латенси 5 мс, 4-5 MB данных нужно обработать несложными математическими операциями.
Аноним 03/01/25 Птн 11:31:31 3354942 435
>>3354898
P.S. это требования для очень слабого девайса где помимо моего алгоритма ещё будет куча параллельной работы происходить
Аноним 03/01/25 Птн 11:58:46 3354962 436
Аноним 03/01/25 Птн 12:17:30 3354969 437
Аноним 03/01/25 Птн 14:13:09 3355033 438
>>3354969
От нас ты чего хочешь? Рассказать, как ты охуенно первый во всем мире придумал считать на OpenGL? Молодец.
Аноним 03/01/25 Птн 14:31:06 3355045 439
>>3355033
Я хотел услышать почему на нем считать плохая идея.
Аноним 03/01/25 Птн 14:57:10 3355064 440
Эмблема на Олим[...].mp4 3004Кб, 320x180, 00:01:24
320x180
Аноним 03/01/25 Птн 15:00:15 3355068 441
>>3355064
Вау. Если это не подстанова, то я первый раз в жизни слышу настоящую шизофазию. Удивительно как уверенно он говорит совершенно несвязанную информацию.
Аноним 03/01/25 Птн 16:32:01 3355143 442
>>3354829
>только с видеокартамми NVidea. Это не запустить на мобилках, на планшетах, на телевизорах, на десктопах с амд видюхами.
Уж тогда opencl. Ни разу ещё не видел в проде opencl за свои 7 лет тусовки в теме
Аноним 03/01/25 Птн 16:49:24 3355160 443
>>3355068
>несвязанную информацию.
Нормиблядь, спокнись. Как-нибудь выгляни в окошко и оцени этнический состав проходящих по улице дорогих граждан.
Аноним 03/01/25 Птн 17:30:27 3355187 444
>>3355160
Оценил. Русские в основном. В чем твоя проблема?
Аноним 03/01/25 Птн 20:38:53 3355290 445
Ладно, заключительное сообщение об OpenGL. Поковырявшись в нем утром обнаружил следующее:

1. В версии 2.0 на операцию чтения результатов из GPU ушло 200 мс. На саму операцию меньше 1 мс. Попытки как-то ускорить это дело закончились советом чатгопоты использовать фичи из версии 3.0. Было принято решение увеличить версию до 3.0.

2. Несколько часов дебаггинга переписывания и попыток разобраться "что не так". Всё или скатывается к варианту с 200 мс или к нерабочему варианту. При этом ошибок нет. Сообщений каких-то нет. Чатгопота говорит, что не знает в чем проблема и сетует на то, что "наверное драйвера неправильно инициализировались" чтобы это не значило.

3. Понял почему OpenGL не популярен. Дружелюбным его назвать сложно. Шаг влево, шаг вправо, расстрел без объяснений. Чтобы завести даже простой алгоритм это видимо нужно начинать с hello world и постепенно-постепенно его усложнять до необходимого результата.
Аноним 03/01/25 Птн 21:16:12 3355310 446
>>3355290
Пиздос дожили, нейронка не справилась написать простейший код по документации и пишет на двач чтоб помогли.
Аноним 03/01/25 Птн 21:19:37 3355313 447
>>3355290
Блять, ну прекрати ты срать. Опенгл - это апи которое используется всеми и везде, когда нужно нарисовать какое-то говно на экране. Используется если не напрямую, то чкерез какие-то обёртки, игровые движки и т.д. Сейчас замещается вулканом постепенно.
То, что на ххсру тебе выдало мало вакансий, где в описании есть это слово, ни о чем не говорит вообще.
Аноним 03/01/25 Птн 21:37:36 3355320 448
>>3355313
Он ни на чем не программирует и ничего не изучает, а просто использует чатажпт для тупого тролинга.
Не удивлюсь если это все тот же клован с деструкторами, тоже какие то простыни высирал. Короче игнорируй, кода нет идет нахуй.
Аноним 03/01/25 Птн 22:34:40 3355339 449
>>3355320
Ты охуел? Я на корутинах с кудой программирую ваще-то полностью асинхронную программу
Аноним 03/01/25 Птн 23:03:36 3355349 450
>>3355339
> Я на корутинах с кудой программирую
Две строчки на Петухоне
Аноним 03/01/25 Птн 23:10:02 3355351 451
>>3355349
>Петухоне
Макака, плес
Аноним 03/01/25 Птн 23:21:42 3355356 452
>>3355351
Знаю 5+ языков погромирования и выбираю наиболее удобный, пердолинг с крестами на последнем месте, что и тебе рекомендую
Аноним 03/01/25 Птн 23:29:13 3355357 453
>>3355320
>просто использует чатажпт для тупого тролинга.
Вопрос нахуя это делать в треде на 1.5 человека по всеми забытому языку для проганья железок на анонимной борде для геев.
Аноним 04/01/25 Суб 00:45:17 3355374 454
>>3355356
>корутины и куда
>две строчки на петуховене
>Не выкупает троллинга
>5 языков
>пердолинг с ++
верю, чо уж там
Аноним 04/01/25 Суб 00:55:50 3355380 455
>>3355313
> Опенгл - это апи которое используется всеми и везде
Ладно, ты его использовал в своей работе, чтобы запускать параллельные алгоритмы? Поделись своим реальным опытом.
Аноним 04/01/25 Суб 01:02:30 3355384 456
>>3355380
Для параллельных вычислений используют кудудля нвидии Только данных должно быть много. Копирование из памяти хоста в память гпу и обратно - узкое место.
Аноним 04/01/25 Суб 01:06:55 3355386 457
>>3355384
Ну, куда это тиер 1 от мира вычислений на гпу. Меня же интересует опенгл потому что никто в 10 летние девайсы карту от нвидиа не положит, а вычислять как-то алгоритм быстро нужно.
Аноним 04/01/25 Суб 01:18:06 3355394 458
>>3355386
Пидр, сформулируй задачу нормально. Какое железо, какая платформа? Хрюкни
Аноним 04/01/25 Суб 01:33:26 3355402 459
>>3355394
Формулирую задачу: иди нахуй. Это прямо.
Аноним 04/01/25 Суб 01:49:18 3355409 460
>>3355402
Пошёл нахуй отсюда, нуб-кукаретик
Аноним 04/01/25 Суб 08:53:29 3355476 461
Безымянный-файл[...].png 468Кб, 690x862
690x862
Аноны, вопрос по Си. Передаём процедуре файловый указатель, и тогда в самой процедуре сначала скопируем его, а потом изменяем позицию через полученную копию, например, функцией fseek().
По возврату из процедуры, позиция в оригинальном файловом указателе окажется прежней? Мне кажется - нет, поскольку файловый дескриптор, к которому мапятся и оригинальный указатель, и его копии, единственный на файл, но я не уверен. Увы, нет возможности проверить, может из вас кто-то что знает.
Пик - рендом
Аноним 04/01/25 Суб 10:03:58 3355493 462
>>3355476
Да, позиция изменится, потому что файловый указатель (FILE*) указывает на один и тот же файловый дескриптор, и fseek() изменяет положение для всех его копий.
Аноним 04/01/25 Суб 17:49:53 3355695 463
>>3355493
Если скопировать файловый дескриптор через dup(2)?
Аноним 04/01/25 Суб 18:11:45 3355706 464
>>3355695
Какая разница? open file descriptor будет всё также один и на нем будут отражаться все изменения в других дескрипторах file descriptor'ах, что на него ссылаются.
Аноним 04/01/25 Суб 18:41:06 3355718 465
>>3355695
Зачем такой хуйней заниматься? в ридонли фаил можно открывать в сколько угодно потоков.

Как я понимаю фаил не открыт постоянно там в ядре io обработчик обслуживает конкурентный доступ к устройству, тебе дали указатель на структуру в очереди - обрабатывай. Не надо искать способы всех наебать, просто бери и создавай новое чтение.
Аноним 04/01/25 Суб 18:55:05 3355726 466
>>3355695
ах да если вопрос в том как сделать

open()
read(1)
read(2)
test() // внутри read(3)
read(3)
close()

то как то вот так:

f = open(file)
f.read(1)
f.read(2)
tmp = open(file)
tmp.seek(3)
test(tmp) // внутри read(3)
tmp.close()
f.read(3)
f.close()

И если это кажется пиздецово и избыточно, то поздравляю ты трезво взглянул на ваш код/приложение, и его следует переписать понормальному, а не искать как бы так через палку-объебалку всех перехетрить.
Аноним 04/01/25 Суб 19:52:58 3355752 467
>>3355493
Салаж, не путай состояние в ядре (struct file, на которую могут ссылаться несколько fd) и состояние FILE (это надстройка, которая может обходится без fd, а может возвращать закэшированную циферку, которая немножко отличается от lseek, в пределах юзерского буфера).
Аноним 05/01/25 Вск 12:42:11 3355967 468
>>3354863
>чатгпт говорит
Представь что у тебя есть формула P(x), ты подсталвяешь туда слово и получаешь другое слово. Формула может выглядеть как обычные формулы аля P(x)=x^2, только чуть сложнее.
Стал бы ты доверять словам, что эта формула выдает?
Возьми лучше учебник по анализу, линалу, а затем по теории меры, может после поймёшь, что доверять нейросетям не нужно.
Аноним 05/01/25 Вск 13:10:48 3355974 469
>>3355967
Представь, что у тебя есть зависимость цены на лом от веса лома. Засунь это в функцию апроксимации (нейронку). Можно ли доверять тому что выдаёт эта функция апррксимации? Можно конечно, почему нет?

Чатгопота эта та же функция аппроксимации веса лома от его цены, только вместо веса лома вопросы, а вместо цены ответы.

Не вижу причин не доверять её ответам с поправкой на ошибку функции апроксимации.
Аноним 05/01/25 Вск 14:43:58 3355990 470
>>3355974
О бля, а мы и не думали. Надеюсь лечить тебя будет врач которые учился по ответам нейронки и прямо во время операции будет с ней консультироваться
а вообще, то что нейронка может человеку помочь и дать по его специальности ответы на вопросы до которых он сам дойти не может - признак того, что человек дегенерат и ему этим делом заниматься не нужно
Аноним 05/01/25 Вск 14:50:58 3356000 471
>>3355990
Кек, да не рвись ты так. Нейронки отобрали твою работу, да?
Аноним 05/01/25 Вск 16:38:03 3356079 472
Аноним 05/01/25 Вск 16:50:05 3356086 473
>>3356079
Да, с ними проблема, что железо каких-то андроид девайсов имеет поддержку опенсл, другие нет. Опенгл был вариант, который поддерживается любым андроид девайсом.
Аноним 06/01/25 Пнд 13:53:40 3356550 474
Аноним 07/01/25 Втр 00:21:56 3356996 475
1722892606836.jpg 62Кб, 640x640
640x640
чому вакансии то так мало блять? а если и есть то только какие то мутные... Чому на жручей жабе который заражает ооп головного мозга так дохуя, а на нормальном нихуя? где справедливость?
Аноним 07/01/25 Втр 07:02:32 3357041 476
>>3333772
CLion

>>3356996
На хх полно, даже интересные есть, типа софт для маршрутизаторов импортозамещающих писать.
Аноним 07/01/25 Втр 08:22:41 3357061 477
Аноним 07/01/25 Втр 09:25:41 3357080 478
>>3356996
Потому что мало кому нужно, а многие кому нужны были плюсы для чего то интересного ушли после 22 года

То есть вакансий стало меньше, а конкуренции все столько жея если не больше
Аноним 07/01/25 Втр 09:26:26 3357081 479
>>3356996
В реальной джаве на спринг фреймворке процедурное программирование везде, а не то, что тебе в универе рассказывали дедушки.
Аноним 07/01/25 Втр 10:12:31 3357087 480
Аноним 07/01/25 Втр 10:18:43 3357091 481
>>3357087
99% даже на собес не позовут
Аноним 07/01/25 Втр 10:57:41 3357120 482
>>3356996
Сколько тебе лет? Какой опыт работы? Есть ли образование?
Аноним 07/01/25 Втр 11:02:30 3357121 483
>>3357087
Мутная контора узбека Усманова
Вот так выглядит "завод полного цикла" который в 2022г они обещали https://rutube.ru/video/56050285f3af8b887e13311477c059c6/

то есть какое то помещение в котором люди сидят и собирают руками комплектующие завезенные из дружественных стран

Разработка софта подозреваю в таком же ключе идет, берется спо и доводится до состояния типа Oracle
Аноним 07/01/25 Втр 16:04:10 3357336 484
Где почитать про дизайн итераторов в STL ?

Конкретно меня интересует почему была выбрана концепция в которой мы вечно таскаем с собой ДВА итератора вместо, например, их упаковки в один объект. Это кажется фундаментальным уродством, когда библиотека задизайнена так что в sort ты можешь передать .begin() от одного вектора и .end() от другого.

Понятно что оно уже просочилось в сам язык через range for и будет в нём вечно, но мне хочется закрыть гештальт и понять почему выбрали именно такое уродство вместо подхода как в остальных языках, чем оно оправдано?
Аноним 07/01/25 Втр 17:18:10 3357380 485
>>3357336
Чатгопота о1.

Разберёмся пошагово, чтобы понять причину исторического выбора двух итераторов (begin, end) в STL и где об этом подробнее почитать.


---

1. Источники для чтения о дизайне итераторов в STL

1. Работы Александра Степанова

“Generic Programming and the STL” (Matthew H. Austern)

Статьи и выступления Степанова (например, видео с C++ конференций или его собственные статьи на тему generic programming).

“Elements of Programming” (Alexander Stepanov, Paul McJones) — даёт более абстрактное понимание общих принципов, лежащих в основе STL.



2. Стандарт C++ и обсуждения в комитете

Статья Херба Саттера «Why Doesn’t C++ Have a ‘ranges’ or ‘slices’ extension?» (старые обсуждения до появления в C++20).

Итоговая документация по библиотеке Ranges в C++20 (P0896 и сопутствующие документы). Хотя они вводят более современный способ работы с диапазонами, там затрагиваются исторические предпосылки, из-за которых раньше использовались пары итераторов.



3. Учебники, посвящённые STL

“The C++ Standard Library” (Nicolai M. Josuttis)

“Effective STL” (Scott Meyers)

“Designing Components with the C++ STL” (Ulrich Breymann)
Во многих из них есть подразделы, объясняющие выбор именно такой «range = [begin, end)» концепции.





---

2. Исторические и концептуальные предпосылки

1. Изначальная идея А. Степанова о generic programming
При создании STL основной целью было максимально абстрактное «разделение ответственности» между структурами данных и алгоритмами. Алгоритмы должны работать с любым источником последовательности — списком, массивом, даже генератором.

Пара итераторов даёт свободу: мы можем передать не только весь контейнер, но и любой поддиапазон.

Итераторы — это обобщённый способ обращения к элементам независимо от того, как они физически хранятся.



2. Производительность и гибкость

Передача одного объекта (в духе Python’овских range) требует дополнительного уровня абстракции, внутри которого всё равно хранится пара указателей или индексов. К тому же, в начале 90-х годов для C++ было критически важно минимизировать лишние накладные расходы.

Гибкость итераторов: алгоритмы STL не требуют, чтобы оба итератора были из одного и того же контейнера (хотя семантически это, конечно, ошибка). Но изначально предполагалось, что пользователь сам будет ответственен за корректность, ведь STL создавалась в парадигме «не навреди производительности и не навязывай лишние проверки».



3. Язык и культура C++

В C++ всегда был уклон в сторону ручного контроля и «максимальной общности с наименьшими затратами». Пара итераторов можно считать более «низкоуровневым» решением.

«Безопасные» проверки (например, что begin и end принадлежат одному контейнеру) могли бы сделать работу итераторов менее гибкой и более дорогой с точки зрения исполнения.



4. Альтернативы и эволюция

Стандартная библиотека C++20 (и моложе) начала внедрять концепцию Ranges, которая решает часть «уродств» классического подхода. Но по факту [begin, end) до сих пор актуален и совместим со старыми кодами.

Во многих других языках (Rust, Python, C#) действительно используют объекты-итераторы или range-обёртки. Однако C++ исторически выбрал более простую и производительную (на тот момент) реализацию, а удобство разработчика вторично.





---

3. Почему всё именно так и осталось?

1. Совместимость
Классическая сигнатура алгоритмов STL с парой итераторов [begin, end) уже десятилетиями существует. Изменение её «ломает» экосистему, поскольку весь код, написанный с 90-х, перестал бы быть совместимым.


2. Принципы C++

Zero overhead principle: если вам не нужна дополнительная обёртка, вы не платите за неё даже одного такта.

Generic programming: абстракции должны быть минималистичны. Вместо одного «объекта-диапазона» вернули всю ответственность пользователю, обеспечив высокую гибкость.



3. Проверки и безопасность — на усмотрение программиста
Философия C++: не запрещать потенциально «опасные» конструкции, пока они не выходят за рамки языка. Да, вы можете передать begin() одного контейнера и end() другого, и компилятор не будет возражать. Это даёт свободу, но и дополнительную ответственность.




---

4. Вывод

«Уродство» с точки зрения дизайна действительно есть: код становится менее безопасным, так как приходится руками следить за тем, чтобы пары итераторов были от одного контейнера.

Но с точки зрения производительности, гибкости и исторического контекста это выглядело оптимальным решением в 90-х. Основы STL закладывались в условиях, когда каждая операция должна была быть максимально дешёвой, а ответственность за корректность возлагалась на программиста.

Современные решения (Ranges в C++20) позволяют работать с диапазонами более элегантно, но весь старый подход с [begin, end) остаётся в языке навсегда — такова плата за совместимость.


Таким образом, чтобы «закрыть гештальт», лучше всего посмотреть исторические материалы (работы Степанова, дискуссии разработчиков STL, документацию по C++ Ranges) — там наиболее полно изложены мотивы такого выбора. Это не вопрос «красоты», а результат эволюции C++ и приоритетов, которые были важны при рождении STL.
Аноним 07/01/25 Втр 20:19:53 3357608 486
>>3333359 (OP)
потчему тут нет лутчего ресурса learncpp?
Аноним 07/01/25 Втр 21:22:12 3357672 487
>>3333359 (OP)
Аноны, а еще есть люди, которые учат то, что нам когда-то давно в универе пытались зачитывать? Всякие Win32 API, ассемблер и т.п. Сейчас по такому роадмапу идти норм идея, если околосистемный программинг хочется занюхнуть?

фронтенд-макака
Аноним 07/01/25 Втр 22:28:51 3357739 488
>>3357336
пидорас ты опять выходишь на связь?
Аноним 08/01/25 Срд 14:39:11 3357812 489
>>3357672
>Сейчас по такому роадмапу идти норм
А это и ни хуя не системный, обычные скилы продвинутой разработки ПО
Аноним 08/01/25 Срд 14:49:21 3357822 490
>>3357739
Шизик, я в /зк раз в два года пишу.
Аноним 08/01/25 Срд 15:57:31 3357850 491
Аноним 09/01/25 Чтв 14:10:35 3358528 492
Вопрос такой: если оператором new создавать объекты, то при частом использовании процесс завершается. Так вышло, что нужно реализовать алгоритм на разреженной графе, вершин много. Вопрос такой: как быть?
Аноним 09/01/25 Чтв 14:15:10 3358532 493
>>3358528
Процесс завершается не из-за этого.
Аноним 09/01/25 Чтв 14:18:26 3358538 494
>>3358528
Ответ такой: код выхода и причины завершения процесса в твоём вопросе отсутсвуют, так что пообщайся с клодом.


Есть несколько подходов для решения этой проблемы:

1. Использование пула объектов (Object Pool):

class ObjectPool {
vector<Node> pool;
size_t currentIndex = 0;
public:
ObjectPool(size_t size) {
pool.reserve(size);
for(size_t i = 0; i < size; i++) {
pool.push_back(new Node());
}
}

Node
acquire() {
if(currentIndex < pool.size()) {
return pool[currentIndex++];
}
return nullptr;
}

void release(Node node) {
if(currentIndex > 0) {
currentIndex--;
}
}
};


2. Использование компактных структур данных:

// Вместо хранения указателей
struct Graph {
vector<vector<int>> adjacencyList; // список смежности
vector<bool> visited; // посещенные вершины
};


3. Использование сжатых форматов хранения:

// CSR (Compressed Sparse Row) формат
struct CompressedGraph {
vector<int> values; // значения ненулевых элементов
vector<int> colIndices; // индексы столбцов
vector<int> rowPtr; // указатели на начало строк
};


4. Использование битовых масок:

class BitGraph {
vector<uint64_t> adjacencyMatrix;
int size;
public:
BitGraph(int n) : size((n + 63) / 64) {
adjacencyMatrix.resize(size
n, 0);
}

void addEdge(int from, int to) {
int row = from size + (to / 64);
int bit = to % 64;
adjacencyMatrix[row] |= (1ULL << bit);
}
};


5. Использование умных указателей:

struct Node {
shared_ptr<Node> next;
// ...
};


6. Переиспользование памяти:

class MemoryManager {
char
memory;
size_t capacity;
size_t used;
public:
MemoryManager(size_t size) : capacity(size), used(0) {
memory = new char[size];
}

void allocate(size_t size) {
if(used + size <= capacity) {
void
ptr = memory + used;
used += size;
return ptr;
}
return nullptr;
}
};


7. Использование стека вместо кучи:

const int MAX_NODES = 1000000;
Node nodes[MAX_NODES];
int nodeCount = 0;

Node* createNode() {
if(nodeCount < MAX_NODES) {
return &nodes[nodeCount++];
}
return nullptr;
}


Рекомендации:

1. Оцените заранее максимальное количество вершин и выделите память один раз

2. Используйте структуры данных, оптимизированные под разреженные графы

3. Рассмотрите возможность использования битовых операций

4. Избегайте частых аллокаций/деаллокаций

5. Используйте пакетное выделение памяти

6. Профилируйте код для выявления утечек памяти

7. Рассмотрите возможность использования внешней памяти для очень больших графов

Выбор конкретного решения зависит от:
- Размера графа
- Частоты операций
- Требований к производительности
- Доступной памяти
- Специфики алгоритма
Аноним 09/01/25 Чтв 16:07:14 3358632 495
>>3333359 (OP)
Сап плюсовики и плюсихи. Возник вопрос который хочу с вами обсудить, пока введу в курс дела. У меня есть младший брат (19 левел) который без иронии уже 100 дней учит C/C++ какими-то ебанутыми стахановскими темпами. В основном курсики проходит на степике, к этому моменту вот эти курсы закончил оказывается:
1. https://stepik.org/course/55918
2. https://stepik.org/course/116440
3. https://stepik.org/course/193691
4. https://stepik.org/course/205781

И с недавнего времени начал у меня интересоваться насчет вката, мол где найти работку, как устроится, как выглядят реальные задачки на C++, что нужно знать чтобы вкатиться и тд. Но прикол в том что я не разраб на C++, а обычный джавараб одебилевший от спринга и хибернейта сидящий в тухлой галере, и что ему советовать хз, собственно вот мои вопросы по плюсам:
1. Есть ли вакансии на джуна C++? Или начать пиздеть в резюме и на мидла метить?
2. Если есть вакансии, то какие требования в основном? Есть те кто в команду себе искал джуна? Что вы у него спрашивали?
3. Младший брат слюни пускает на веб и прочую модную поебень по перекладыванию жсонов, как с плюсами в этой теме обстоят дела? Сказать прямо что на плюсах такую хуйню не пишут помимо яндексодебилов и что ему лучше какой-нибудь Go/Java взять если он туда хочет?
4. В случае отрицательного ответа на 3 вопрос, что вы делаете на своей работе (хочу в целом более детальную картину получить)?
Аноним 09/01/25 Чтв 16:49:35 3358682 496
>>3358632
> Или начать пиздеть в резюме и на мидла метить?
Это в вашей джаве джун от мидла не отличаются. По его курсам он возможно и до джуна ещё не дотягивает.
> пускает на веб и прочую модную поебень по перекладыванию жсонов, как с плюсами в этой теме обстоят дела?
https://userver.tech/
Используется в яндекс такси и соседних отделах. Но ты прав, веб это скорее не про плюсы. Плюсы сейчас живы в предметноспецифичных областях, где тебе нужно не только веб знать, но и какую-то специфику (георлогию там, или базы данных).
Аноним 09/01/25 Чтв 19:50:41 3358808 497
>>3358632
Посоветуй ему вкатываться в джаву.
Вообще судя по курсам он одну и ту же базу дрочит и при этом скорее всего там не затрагиваются нюансы. Пусть проект какой-нибудь накакает, субдшку например.

Он ща не учится нигде?
Аноним 09/01/25 Чтв 19:55:17 3358814 498
>>3357080
не ври. наоборот на джаве был самый большой обвал количества вакансий, а на cpp мало что изменилось
Аноним 09/01/25 Чтв 20:36:46 3358839 499
>>3358814
как небыло нихуя так и нет, все верно

на самом деле есть, но это всякое схд распределение данных, нагрузка итд. Даже наверное больше стало из за ухода всяких ораклов/цисок, но это не для вкатунов явно.
Аноним 09/01/25 Чтв 21:13:05 3358846 500
Разрабатываю на винде. Как тут установить QtCreator в условиях санкций? Скачивание QtCreator через впн тоже не работает.
Скачал его с гитхаба, распаковал в папку с qt, но при связывании QtCreator с Qt возникает ошибка - не найдены какие-то файлы. Проекты cmake тоже не компилируются при такой установке QtCreator.
Аноним 09/01/25 Чтв 21:22:52 3358850 501
>>3358846
Почему впн не работает?
Аноним 09/01/25 Чтв 21:26:31 3358852 502
>>3358846
Установи через MSYS2.
Аноним 09/01/25 Чтв 21:43:59 3358858 503
Аноним 09/01/25 Чтв 21:48:10 3358860 504
>>3358858
Качает. Попробуй другой VPN.
Аноним 09/01/25 Чтв 22:38:34 3358873 505
>>3358808
>Вообще судя по курсам он одну и ту же базу дрочит и при этом скорее всего там не затрагиваются нюансы. Пусть проект какой-нибудь накакает, субдшку например.
Я ему на этой неделе задачу дал, сделать консольную игру крестики нолики, расписал блять все до мелочей, от того какие классы должны быть до того как они между собой должны ебаться. Не, спорю, получилось ахуенно, игра получилась отменной, и багов никаких не нашел, но блять он все 800+ строк кода ебанул в один main.cpp файл. Какая там субдшка, посоветуй книгу по клин коду на C++ анон раз уж шаришь
Аноним 09/01/25 Чтв 23:14:14 3358881 506
>>3358808
>Он ща не учится нигде?
шарагу окончил (после 9 класса ушел)
Аноним 10/01/25 Птн 02:05:35 3358922 507
Почему один и тот же код работает нормально, если компилю через visual studio, а если через g++, то нет? Пробовал и библиотеки подключать какие-то, что мне гпт написал, которые я использую, все насмарку. Если кратко у меня программа берет код из одного сpp файла, вставляет код с сгенеренной переменной в него, сохраняет это все в другой cpp и собирает его через g++. И вот собранная в итоге программа не работает, но если я руками кину этот код в новый проект и соберу его, то все норм. Я нуб полнейший, делаю все через чат гпт, но в этом он мне не помогает, сволочь -_- Найти проблему в самой программе собранной через g++ не удалось.
Аноним 10/01/25 Птн 03:58:03 3358937 508
мб динамические либы не находятся
ну и ты хуйней какой-то скриптопидорской занимаешься
Аноним 10/01/25 Птн 04:35:23 3358939 509
>>3358632

>1. Есть ли вакансии на джуна C++? Или начать пиздеть в резюме и на мидла метить?
Есть, но плюсы такой язык, что просто знание плюсов нахуй никому не нужно (обычно). За исключением тындыкса даже не знаю ни одной компании (ну ладно, еще вычеркнем госпараши с зп в 20к) куда можно попасть зная плюсы на уровне студента без опыта (даже охуенного студента в топ вузе). Везде нужны какие то специфичные навыки
>2. Если есть вакансии, то какие требования в основном? Есть те кто в команду себе искал джуна? Что вы у него спрашивали?
Я когда собесился, только в тындексе были довольно общие вопросы, но это аж на первом курсе было. Потом уже помимо плюсов вопросы по моей специализации были
>3. Младший брат слюни пускает на веб и прочую модную поебень по перекладыванию жсонов, как с плюсами в этой теме обстоят дела? Сказать прямо что на плюсах такую хуйню не пишут помимо яндексодебилов и что ему лучше какой-нибудь Go/Java взять если он туда хочет?
Не пишут на плюсах это. Так и скажи.
>4. В случае отрицательного ответа на 3 вопрос, что вы делаете на своей работе (хочу в целом более детальную картину получить)?
Я на плюсах в данный момент уже не пишу
Аноним 10/01/25 Птн 04:36:02 3358940 510
>>3358939
А, и да, самое главное забыл сказать - пусть в вуз пиздует. Сам он по курсам дальше крестиков ноликоы не уйдет
Аноним 10/01/25 Птн 04:37:21 3358942 511
>>3358922
Что значит не работает нормально?
Аноним 10/01/25 Птн 04:44:36 3358946 512
>>3358873
>>3358940
Вот о чем я и говорю. Ни в коем случае не принижаю, но я крестики нолики писал еще лет в 14, если не раньше. В 19 лет по хорошему уже нужно закончить первый курс и получить какую то базу по написанию хорошего кода в целом (то есть это про умение писать промышленный код, а не хуйню для контестов которую на следующий день прочитать невозможно), познакомится с мув семантиков, многопоточкой, 100500 мелкими правилами, базой из стд, понять как память в плюсах устроена, пощупать либы вроде буста или qt. В 19 лет некоторые только поступают, так что время есть, тем более, что у тебя получилось в java вкатиться, значит генетика не дебильная. Но по курсам из крестиков ноликов ничего не выйдет. Так что вперёд в вуз. Удачи
Аноним 10/01/25 Птн 04:45:06 3358947 513
>>3358946
Ну и естественно вуз должен быть нормальный, а не тот что к дому ближе. Хотя бы итмо
Аноним 10/01/25 Птн 06:37:09 3358964 514
>>3358947
>Хотя бы итмо
хуясе хотя бы. и туда разве берут не дрочунов олимпиад с 10 лет а писателей крестиков в 19?
мне впрочем в свое время баллов хватало но я не пошел))
Аноним 10/01/25 Птн 13:15:10 3359162 515
>>3358873
Пусть посмотрит видосы по слоеной архитектуре (layer architecture, 3-tier architecture) и покурит SOLID.
Аноним 10/01/25 Птн 17:10:27 3359320 516
>>3358682
>Плюсы сейчас живы в предметноспецифичных областях, где тебе нужно не только веб знать, но и какую-то специфику (георлогию там, или базы данных)
То есть если предметная область стала неактуальна или тебе неинтересна, то другую работу будешь искать долго. Какое же говно ваш язык.
Аноним 11/01/25 Суб 03:03:28 3359646 517
>>3333929

Гарантируется contiguous кусок памяти, выровненный по 16.
Иначе pointer arithmetics вообще бы не работала.
Джеймс 11/01/25 Суб 11:49:36 3359770 518
1. Порекомендуйте object pool для high contention долбёжки. Прямо совсем high contention сотнями потоков, порядок/честность не нужны, при голодании пул должен уметь расширяться.
2. Как взрослые люди получают уникальный хэш потока для шардинга?
Аноним 11/01/25 Суб 13:18:00 3359822 519
>>3359320
В JS фреймворк устаревает за пару лет - старых макак выкидывают на мороз, и набирают новое мясо с актуальными знаниями.
Аноним 12/01/25 Вск 19:24:38 3360533 520
image.png 1Кб, 123x107
123x107
image.png 47Кб, 589x642
589x642
Какой же кал.
Аноним 12/01/25 Вск 19:38:44 3360537 521
>>3360533
Какой же говно код.
Аноним 12/01/25 Вск 19:48:03 3360540 522
>>3360537
нормальный код не исправит двойной вызов вычисления каждого элемента ренжа из за фильтра ебучего, ведь это у нас iterator model такой, понимать надо.
Аноним 12/01/25 Вск 21:41:01 3360574 523
>>3360540
Двойного вызова чего?
Аноним 12/01/25 Вск 22:07:13 3360580 524
>>3360574
>to_int
И всех других трансформаций которые были применены до использования std::views:filter для значений которые прошли этот фильтр.
Аноним 13/01/25 Пнд 07:24:10 3360737 525
Сап. Есть ли возможность при помощи команд win32 в c++ вывести окно на передний план? Насколько я понял SetForegroundWindow не позволяет это сделать если на это нет разрешения от текущего активного процесса, однако я вижу что некоторые приложения могут это сделать.
На текущий момент получается развернуть окно, однако фокус всё равно не на нём, и в списке альттаба оно не находится первым
Аноним 13/01/25 Пнд 11:05:00 3360873 526
>>3358946
Я свои первые крестики-нолики в 29 написал, в этом возрасте работу нашёл. В целом ты пишешь какую-то хуйню. Твои рассуждения про "19 лет" и "промышленный код" звучат как типичный максимализм человека, который сам только недавно начал разбираться в теме.
Промышленный код — это не про знание всех фич языка, а про умение решать задачи и этому учатся не на первом курсе вуза, а в реальных проектах, на реальной работе.
Прежде чем раздавать советы про "генетику" и "вуз", задумайся, а не пишешь ли ты сам "хуйню для контестов
Аноним 13/01/25 Пнд 15:48:29 3361218 527
>>3360737
гуглить не пробовал? думаю за 30 лет существования шинды кто нибудь уже задавался этим вопросом
Аноним 13/01/25 Пнд 16:58:52 3361322 528
>>3360737
Начиная с 10 майки борются с пидорами типа тебя, не давая забирать у пользователя фокус с его окна. Страдай, хули, выбранное пользователем окно всегда будет в приоритете, ты только можешь в таскбаре помигать иконкой.
Аноним 13/01/25 Пнд 19:46:49 3361438 529
>>3361322
>борются с пидорами типа тебя
чтобы по нажатию на уведомление приложение открыться норм не могло?
Алсо, аутлук например как-то умеет фокус перехватывать
Аноним 13/01/25 Пнд 20:16:41 3361463 530
>>3361438
> по нажатию на уведомление
Ты должен или мигать таскбаром, чтоб юзер открыл твоё окно. Или выводить окно поверх без фокуса и ждать пока юзер соизволит кликнуть на него и передать фокус твоему окошку с уведомлением - потом фокус переходит твоему основному окну при закрытии уведомления. Либо для уведомлений пользоваться виндовыми уведомлениями - нажатие на него так же передаёт тебе фокус. В любом случае майки сейчас идут к тому чтобы смена фокуса без ведома юзера не происходила - он как минимум должен кликнуть на какое-то твоё говно. Если ты и найдёшь обходной костыль через винапи, то никаких гарантий нет что завтра его не прикроют в очередном обновлении DWM.
> аутлук
Не замечал за ним такого. При запуске - да, но когда просто открыт никуда фокус не забирает, уведомления у него через виндовые уведомления, большие окошки с уведомлениями о событиях фокус не забирают.
Аноним 13/01/25 Пнд 20:47:44 3361480 531
>>3361463
> Либо для уведомлений пользоваться виндовыми уведомлениями - нажатие на него так же передаёт тебе фокус
Ну вот я так и делаю, только винда всё равно фокус жопит
Аноним 13/01/25 Пнд 21:58:13 3361519 532
Аноним 15/01/25 Срд 02:24:33 3362435 533
>>3359770
ты голодный и молодой? надеюсь, бабкина хата есть?
Аноним 15/01/25 Срд 03:07:06 3362441 534
>>3362435

Я - стремительно оскуфивающийся фронтендер, которому приходится решать баг на языке, которого он не знает.
Аноним 15/01/25 Срд 11:36:31 3362658 535
>>3359770
> 1. Порекомендуйте object pool для high contention долбёжки. Прямо совсем high contention сотнями потоков, порядок/честность не нужны, при голодании пул должен уметь расширяться.
Что ты имеешь под порядком и честность в контексте пула?
> 2. Как взрослые люди получают уникальный хэш потока для шардинга?
Ты уверен, что тебе это нужно и OpenPM не решит твою задачу?
Аноним 15/01/25 Срд 19:10:53 3363100 536
3598049387.jpg 27Кб, 600x450
600x450
Аноним 15/01/25 Срд 19:30:09 3363118 537
>>3363100
Это тебе в растотред.
Аноним 15/01/25 Срд 22:03:16 3363210 538
>>3362658

Честность = [fairness](https://stackoverflow.com/questions/44964979/what-is-fairness-in-multi-threading-programming), то есть вместо учёта очерёдности/приоритетов потоки обслуживаются "кто успел, того и ружьё".

Порядок - это я к тому, что всякие стеки/очереди не нужны, у них дикая латентность на CAS-инструкциях. Пул = "любой свободный элемент".

>Ты уверен, что тебе это нужно и OpenPM не решит твою задачу?

Тут я неверно применил терминологию. Мне нужен не шардинг как в базах данных, а индекс для lock striping, что-нибудь вроде `hasher(std::this_thread::get_id());`, но так нельзя, так как в общем случае `get_id` может быть дорогим системным вызовом.
Cейчас в этом месте дикая функция на x86 ассемблере, входными данными является текущее значение регистра RSP со смещением,
автор уже недоступен, спросить некого.
Аноним 15/01/25 Срд 22:11:05 3363213 539
>>3363210
Бля, мне кажется у меня не хватает квалификации, чтобы помочь. Пробовал в чатгопоты спрашивать?
Аноним 15/01/25 Срд 22:40:01 3363230 540
>>3363213

Избегаю, чатгпт или Codeium, зависимость развилась моментально, способность писать самостоятельно восстанавливал через ломку.
Да еще чатгпт врёт, всё равно перепроверять приходится.
Аноним 15/01/25 Срд 23:15:34 3363257 541
>>3363230
Это да, я тесты просто начал больше писать
Аноним 15/01/25 Срд 23:19:11 3363260 542
>>3363230
p.s. но это будущее, от него никуда не деться.
Аноним 15/01/25 Срд 23:33:18 3363273 543
8e917ade946db5e[...].webp 1358Кб, 3072x4096
3072x4096
Для новичка в 2025 Раст или Плюсы?
Аноним 15/01/25 Срд 23:59:19 3363281 544
>>3363273
Смотри где больше вакансий
Аноним 16/01/25 Чтв 00:06:54 3363287 545
>>3363281
Я не собираюсь, работать чернорабочим-программистом, получающим хуй в рот, когда начальство гребёт миллиарды.

Мне нужен язык для себя.
Аноним 16/01/25 Чтв 00:20:25 3363291 546
>>3363287
Ты дурачок? Если у тебя бизнес, то выбирай то где больше вакансий, чтобы найти разрабов. Если тебе для хобби проекта, то юзай что хочешь, хоть монетку подкидывай.
Аноним 16/01/25 Чтв 00:23:08 3363293 547
>>3363273
Каратэ или бокс в 2025 для новичка?
Аноним 16/01/25 Чтв 00:40:14 3363298 548
Аноним 16/01/25 Чтв 03:09:50 3363348 549
>>3363293
MMA итп, смешанные, однозначно, говорю, как человек знакомый с темой.

Теперь давайте разберёмся с языком программирования.
Что скажут профессионалы-программисты?
Какой язык брать в 2025?
Аноним 16/01/25 Чтв 05:00:47 3363356 550
Плюсаны, насколько хорошо нужно знать кресты, чтобы вкатиться в гейдев и прогать в ue5?

Дочитываю последнее издание лафоре, пишет вроде понятно, но мне кажется нужно ещё упражнениями к главам все шлифануть, делал лабы и курсач в универе.

Короче, далеко ли мне до первой вакансии? Если да, то насколько и что нужно прокачать?
Аноним 16/01/25 Чтв 09:17:59 3363420 551
Аноним 16/01/25 Чтв 11:22:55 3363495 552
>>3363348

>Теперь давайте разберёмся с языком программирования.
>Что скажут профессионалы-программисты?
>Какой язык брать в 2025?
Зависит от задач.
Аноним 16/01/25 Чтв 11:53:01 3363517 553
>>3363273
Да почитай и то и то, для общего развития полезно будет
Начинать легче с плюсов будет
Аноним 16/01/25 Чтв 15:58:09 3363726 554
>>3363356
>Плюсаны, насколько хорошо нужно знать кресты, чтобы вкатиться в гейдев и прогать в ue5?
Там часто такие требования, что была бы хоть одна рука кнопки нажимать - и норм, но и платят соответствующе. В UE не плюсы, а свой диалект с кучей анриловых особенноствей, надо знать как UObject и AActor работают, еще надо понимать как блюпринты устроены, как с ними из плюсов работать. Надо знать остальную нутрянку анрила, по которой документации считай нет, а в исходниках часто лапша и хуяк-хуяк, тут подмандим, там соплю повесим (плюс эпики года три назад проебали старые форумы с кучей инфы).
Аноним 16/01/25 Чтв 15:59:45 3363730 555
>>3363726
Подтверждаю информацию
пытался свою игру писать на анриале
Аноним 16/01/25 Чтв 16:15:01 3363753 556
>>3363517
а нахуя Раст тогда?
просто почитать для общего образования можно всё, что угодно.
Аноним 16/01/25 Чтв 16:29:58 3363768 557
Аноним 16/01/25 Чтв 17:18:15 3363820 558
>>3363726
Это ты рассказывал что там структуры/классы размером в мегабайт?
Аноним 16/01/25 Чтв 17:25:52 3363834 559
>>3363753
> а нахуя Раст тогда?
для общего развития
> просто почитать для общего образования можно всё, что угодно
не спорю, если хочешь читай другое
Аноним 16/01/25 Чтв 17:59:00 3363873 560
>>3363820
>Это ты рассказывал что там структуры/классы размером в мегабайт?
Не я, мегабайтов там не видел, хотя не исключаю, что они там есть. Полно классов в несколько килобайт. В AActor (это один из базовых классов) - около 10К строк, и он где-то килобайт размером.
Аноним 16/01/25 Чтв 18:12:55 3363895 561
>>3363873
>AActor
Почему AA? AnrealActor?
Аноним 16/01/25 Чтв 18:26:02 3363921 562
>>3363873
> В AActor около 10К строк, и он где-то килобайт размером.
Вот оно скорее всего, да. В любом случае это ты.
А что скажешь насчет Unigine? Я просто помню бенчмарки и стратегию OilRush там 3d то вроде красивое, а вот текст и прочее 2d было реализовано ко и через Qt, всегда к нему относился как к демо-поделию чем к какому то полноценному движку. А недавно узнал что у них там и редактор уже и уроки и в военке где то используют (я так понимаю в авиа-тринажерах) и вроде все как будто уже совсем на другом уровне. Хотя для анриала то исходники есть, а тут наверное только заголовки.
Аноним 16/01/25 Чтв 18:45:25 3363956 563
>>3363921
>А что скажешь насчет Unigine?
Не смотрел его. Про военных не в курсе, у них там своя атмосфера, симуляторы им обычно всякие НИИАБВГД делают, которые умеют с МО сотрудничать. Знаю, что госкорпы его используют: Газпром, Роснефть. Используется как визуалка для симуляторов, и всякие промо вроде виртуальной экскурсии по заводу или танкеру. Там вроде для симулятора все изначально сделано: координаты в даблах, модель геоида, вот это все. Исходники дают, если лицензию покупаешь.
Аноним 16/01/25 Чтв 18:47:44 3363963 564
Аноним 16/01/25 Чтв 22:16:51 3364151 565
Бля, как они так пишут

http_listen("3000", NULL, .on_request = on_request, .log = 1);

?

https://facil.io/#a-web-application-in-c-its-as-easy-as

Типа неймед аргс в сях? Я что-то упустил?

Вроде, надо же писать

http_listen("3000", NULL, (struct_name) {.on_request = on_request, .log = 1});

?
Аноним 16/01/25 Чтв 22:22:16 3364155 566
>>3364151
Отбой, там говномакрос, который добавляет (struct_name) { ... }.
Аноним 17/01/25 Птн 15:27:31 3364644 567
amiretarded.jpg 36Кб, 665x574
665x574
ИТЕРАТОРЫ ОТ РАЗНЫХ КОНТЕЙНЕРОВ СРАВНИВАТЬ НЕЛЬЗЯ
@
ПИШЕШЬ ФУНКЦИЮ ДЛЯ ОБРАБОТКИ КУСКА КОНТЕЙНЕРА
@
ХОЧЕШЬ ПРОВЕРИТЬ, ЧТО АРГУМЕНТЫ-ИТЕРАТОРЫ СИДЯТ НА ОДНОМ КОНТЕЙНЕРЕ
@
А НЕТ ТАКИХ ПРОВЕРОК


Это какой-то новый уровень стрельбы в ногу. Может я чего упускаю?
Аноним 17/01/25 Птн 15:33:21 3364647 568
>>3364644
Может, тебе ещё и эксепшены кидать вместо UB?
Аноним 17/01/25 Птн 15:53:37 3364674 569
>>3364644
Да, упускаешь. Такой проверкой должен заниматься тот, кто передает аргументы, п точнее, не допускать передачи неправильных. Итератор нужен просто чтобы иметь единый интеофейс обхода контейнера. Представь, что у тебя аст. В нем итератор это просто нода. Каким образом ты будешь проверять, что итераторы в одном контейнере? Или еще лучше, итератор для ренжей которой в итераторе хранит только текущее число и верхнюю границу. Как в таком случае ты будешь проверять, что итераторы в одном контейнере?
Аноним 17/01/25 Птн 16:01:43 3364692 570
>>3364674
Язык с рантаймом бы проверил без проблем. Ладно, я знал на чём пишу.
>ренжи
О! Для кусков контейнера есть же ренжи и вьюшки, попробою переписать на них. Спасибо. Придётся подниматьсф до C++20, ну да пох, я пока не в ентерпрайзе
Аноним 17/01/25 Птн 16:51:31 3364781 571
>>3364692
А в чем проблема всегда подниматься до актуального С++?
жавист
Аноним 17/01/25 Птн 17:13:42 3364814 572
>>3364781
Минорные версии поднимаются без проблем; смена стандарта (с C++11 до C++14 например) ломает обратную совместимость. Жависты может не в курсе, но для толстого ентерпрайзного легаси это очень очень больно.
Аноним 17/01/25 Птн 17:21:00 3364829 573
>>3364814
Хм, но ведь чем дольше не обновляешься до следующей версии тем больнее будет обновляться потом?
Аноним 17/01/25 Птн 17:33:01 3364846 574
>>3364829
Обновиться можно и позже, когда на это будет время
ну или не обновяться совсем
Аноним 17/01/25 Птн 17:43:48 3364861 575
>>3364846
Смотри как я думаю:
1. Новую версию стандарта сделали не просто так. Она решает какие-то проблемы.
2. Изменений в API между 1.0.0 и 2.0.0 обычно меньше чем изменений между 1.0.0 и 3.0.0.
3. Рано или поздно проблемы, которые решает новый стандарт доколебают разработчиков и нужно будет обновляется. И придётся совершить прыжок из плюсов 1998 года в плюсы 2024 года, что по сути означает переписать 95 % проекта.

Значит чем раньше обновиться тем меньше будет проблем в будущем.
Аноним 17/01/25 Птн 17:49:38 3364865 576
>>3364829
Ты недооцениваешь толстоту легаси и сложность/убогость плюсов, где казалось бы абсолютно непричастные к твоему коду изменения всплывут в каком-нибудь эдж-кейсе или в недрах библиотеки. Причём хорошо если всплывёт (в ошибках компиляции или стат. анализе), гораздо вероятнее, что старый подход объявлен УГ UB, бинарник всё равно соберётся
и будет тихо корраптить твои данные. Или необъяснимо падать.
Плюсовики очень заботятся о своём легаси.
Аноним 17/01/25 Птн 17:53:53 3364869 577
>>3364865
Грустно это конечно.
Аноним 23/01/25 Чтв 09:46:20 3369708 578
Представьте, что вы пишите программу. Во время разработки появляется потребность в некотором классе. Когда черновая версия класса уже написана, вы понимаете, что его можно сделать обобщенным. При этом не факт, что вы сделаете это быстро, и не факт, что когда-нибудь вам пригодится версия с другим типом шаблонного параметра, кроме исходного, но кто знает.
Ваши действия?
Аноним 23/01/25 Чтв 10:12:30 3369732 579
>>3369708
Конечно же не надо делать его обобщенным. Когда возникнет такая потребность тогда и сделаем.

Это как создавать интерфейс с одной имплементацией - бессмысленно.
Аноним 23/01/25 Чтв 10:29:23 3369751 580
>>3369708
Скорее всего нет независимо от того, тороплюсь или нет. Только если подумаю, что это пригодится в ближайшее время.
Аноним 24/01/25 Птн 00:28:51 3370555 581
Есть готовые хорошие либы, чтоб заспавнить процесс с условным /usr/bin/foo, чтобы оно не блокировало? Набивать руками весь бойлерплейт типа int pid = fork(); if (pid == 0) execve(...) очень не хочется.
Аноним 24/01/25 Птн 05:57:29 3370588 582
Есть функция-проверялка, по идее вызывается часто и работает быстро. Функция задействует регулярное выражение. Если просто впендюрить его в функцию, то регулярка будет создаваться и уничтожаться при каждом вызове, что во много раз дольше самой проверки. Если создать регулярку вне функции, то придётся костыльно её передавать, плюс засорение внешнего скоупа плюс возможные баги со временем жизни. Как бы их упаковать вместе поаккуратнее?

>>3369708
В основной программе оставлю тот класс, который ей нужен. Сделаю заметку "вон тот класс можно обобщить". (ни)когда руки дойдут до минорных задач типа некритичных warning и оптимизаций, буду обобщать.
Хотя лично я с шаблонами на "вы", так что в проде его всё равно не будет.
Аноним 24/01/25 Птн 13:01:35 3370822 583
Аноним 24/01/25 Птн 13:07:17 3370828 584
image.png 14Кб, 688x224
688x224
>>3370588
>в проде его всё равно не будет
код из прода имя изменено, личность скрыта
мнение?
Аноним 24/01/25 Птн 13:54:44 3370857 585
Делюсь опытом применения чатагопты в работе.

1. Даёт код на любой запрос, любой сложности.
2. Код в 80 % корректный.
3. Код в 80 % выполняет не нужные операции.

В целом впечатления приятные. Код пишет гопота, ты занимаешься рефакторингом.
Аноним 25/01/25 Суб 00:23:23 3371471 586
>>3370857
Ты пишешь код не в контекте остального проекта? Или как ты гопоте инфу об своем проде даешь?
Или гопоте скармливаешь поприетарный код???? А ПО ПОПЕ ОТ ЛИДА ПОЛУЧИТЬ НЕ ХОЧЕШЬ??
Аноним 25/01/25 Суб 00:38:41 3371478 587
>>3371471
Не, ему описываю задачу в пунктах, что на входе, что на выходе, что можно использовать, что нельзя. Сам код ему не даю понятное дело
Аноним 25/01/25 Суб 00:41:23 3371479 588
>>3371478
Ну вот например тебе в коде нужно использовать код из вашей же либы, ты ему как объяснишь что использовать
Или тебе нужно выполнять задачу в контексте архитектуры вашего проекта, о которой гопота ничего не знает
Аноним 25/01/25 Суб 00:45:01 3371482 589
>>3371479
Ну, то что я от него хотел не требовало никаких классов из нашей либы. Изолированный алгоритм по обработке картинок. На входе rgb массив с метаданными. На выходе rgb массив с метаданными, но трансформированный.
Аноним 25/01/25 Суб 02:50:30 3371523 590
>>3369732

Есть, когда надо замокать некоторую часть проекта.
Аноним 25/01/25 Суб 03:08:27 3371539 591
>>3371471
Нормальные люди используют свежие локальные модели, вгоняя весь проект в контекст. Кодить с жпт-4 в 2025 - это кринж.
Аноним 25/01/25 Суб 03:23:30 3371546 592
Че то мне гпт никогда не помогала. Всегда хуйню генерит. А если попросит на хаскеле что то написать... Можно даже не пыьаться. Хуй знает где вы работаете и что пишете, что гпт за вас это делает
Аноним 25/01/25 Суб 05:32:17 3371601 593
>>3370822
Я просил "упаковать", а не прибить гвоздями. А то завтра понадобится та же самая проверка, но с чуть другой регуляркой, и пошла инкостыляция.
В общем-то проблема решается через ООП, просто мне влом городить целый класс для сравнительно простого use-case. Вдруг есть способы попроще, а я не в курсе...
>>3370828
Повторюсь, не шарю в шаблонах, но бесконечный список типов возвращаемый из лямбды похож на бомбу замедленного действия. Спасибо что не auto хотя бы.
Аноним 25/01/25 Суб 09:58:59 3371668 594
>>3371546
Мне она помогает на работе с полумертвыми библиотеками разобраться, у которых вобще документации нет
Хзы откуда она инфу берет, но это намного легче чем сидеть читать чужой код чтобы понять как вобще их залупой пользоваться

А вот когда гпт научиться симейк нормальный писать это будет такой разьеб...
Аноним 25/01/25 Суб 10:02:33 3371670 595
>>3371539
Пробовали года полтора назад, честно сказать такую хуйню выплевывал в виде ответов
Ситуация намного лучше стала? Есть какие то советы чем сам пользуешься и что работает получше? или прям любой современные модели и н пососными стали?
Аноним 25/01/25 Суб 10:38:59 3371686 596
>>3364644
На коде покажи, какие в пизду контейнеры-итераторы, что именно сравнивать нельзя?
Нихуя не понятно.
Аноним 25/01/25 Суб 11:13:46 3371720 597
>>3371670
За полтора года КлозедАИ выебан китайцами так сильно, что им уже государственные дотации нужны чтоб хоть как-то поспевать за опенсорсом.
Аноним 25/01/25 Суб 11:57:15 3371755 598
>>3371720
Какую локальную нейронку юзаешь?
Аноним 25/01/25 Суб 14:02:19 3371838 599
Есть snippet код или библиотека(кроме DuckX, потому-что кривая), чтобы с помощью C++ открыть .docx файл и заменить там текст?
Аноним 25/01/25 Суб 15:37:43 3371914 600
Аноним 26/01/25 Вск 02:23:24 3372307 601
>>3363210
>Cейчас в этом месте дикая функция на x86 ассемблере, входными данными является текущее значение регистра RSP со смещением
Можешь подробнее об этом? Типа у каждого треда свой стэк, и на этом примерном адресе опредляется какой тред сейчас?
Аноним 26/01/25 Вск 09:35:39 3372453 602
Screenshot 2025[...].png 51Кб, 642x427
642x427
>>3372307
пиздец там говнокодище.
>>3363210
rsp судя по таблице в нем лежит локальный стекпоинтер
добавь распечатку адреса который там лежит, и найди его крестовым способом (int)&arg0 либо (int)this смещение какое надо добавишь арифметикой. Если задача просто какой то хэш генерировать, то тут uid/pid тебе не нужны, тебе нужно просто хоть какое то уникальное число.
Аноним 26/01/25 Вск 11:41:00 3372592 603
>>3372453
>rsp судя по таблице в нем лежит локальный стекпоинтер
Ну там значение же может меняться при вызовах/возвращении из функций. Нужно тогда границы знать участка выделенного для треда
Аноним 26/01/25 Вск 11:41:38 3372594 604
>>3371539
>используют свежие локальные модели,
А эти локальные модели запустить реально на desktop'е?
Аноним 26/01/25 Вск 11:52:46 3372610 605
>>3372594
Думаю да, чатгпт4 как пишет сам чатгпт4 реально запустить всего лишь на 32 ГБ видеопамяти.
Аноним 26/01/25 Вск 12:45:51 3372714 606
1423343340408.gif 363Кб, 400x225
400x225
>>3372592
>Ну там значение же может меняться при вызовах/возвращении из функций. Нужно тогда границы знать участка выделенного для треда

Давай сначала - твоя задача в чем? Переписать какахи на ассемблере на нормальный портируемый код или заменить на такие же какахи другого цвета и запаха? Мой тебе совет - попробуй переписать используя предназначенные для этого средства не задумываясь о дороговизне каких то там лишьних вызовов и замерь насколько чистая реализация проигрывает вашей говне. И если окажется что и правда в разы, то расчехляешь perf смотришь где и на чем конкретно проседает и вырабатываешь стратегию как это оптимизировать.
Аноним 26/01/25 Вск 14:20:27 3372816 607
>>3372714
Не, я ваще мимо. Меня просто заинтересовала реалзиация. Вот детали интересуют
Аноним 29/01/25 Срд 05:13:56 3375151 608
Есть два стула. На одном:
#pragma once
на другом олдовый инклюд гуард:
#ifndef HUIPIZDA_HPP
#define HUIPIZDA_HPP
...
#endif
Спрашивается: какие могут быть мотивы использовать инклюд гуард в 2025 году, если прагма опсе поддерживается во всех известных википедии компиляторах?
Аноним 29/01/25 Срд 07:58:45 3375176 609
>>3375151
Предложу, что "так быстрее"
Аноним 29/01/25 Срд 12:21:31 3375336 610
>>3375151
Старые ос со старым компилятором.
Полно древнего железо которое из актуальных ядер/библиотек давно выпилили. Либо там вообще 2.6.33 на блобах с которой никуда не деться.
Аноним 30/01/25 Чтв 14:29:00 3376459 611
>>3333772
Kate или вим с плагинами.
Аноним 30/01/25 Чтв 14:29:45 3376462 612
>>3334468
>Terminal?
Значение знаешь?
Аноним 30/01/25 Чтв 14:39:03 3376465 613
>>3376462
Терминал— объект, непосредственно присутствующий в словах языка, соответствующего грамматике, и имеющий конкретное, неизменяемое значение (обобщение понятия «буквы»). В формальных языках, используемых на компьютере, в качестве терминалов обычно берут все или часть стандартных символовASCII— латинские буквы, цифры и спецсимволы.
Аноним 30/01/25 Чтв 14:45:26 3376472 614
>>3334723
>Нах тебе книги в 2025 году? Берёшь нейронку и просишь пояснить тебе, современные нейронки для кодинга стандарт крестов наизусть знают. Можешь писать код промптингом и на практике вникать, нейронки уже пишут локальный код не хуже макак.
Хотите анекдот? Спрашивал сейчас у гопоты про настройку файл менеджера тюнар под иксфсе, так вот она выдумала мне две совершенно несуществующие опции настройки.
Я это к тому что нейронки специально делают чтобы заменить именно программистов, это нифига не случайность что они лучше всего шарят в этой теме.
Переходите в админы линукса чуваки, серьезно. Нейронки этому нихрена не учат.
Аноним 30/01/25 Чтв 15:48:28 3376512 615
>>3375151
Я просто всегда писал гаурд, потому что прагма, хоть и поддердивается, не является стандартом
Аноним 30/01/25 Чтв 15:49:18 3376515 616
>>3376512
А вообще, если стандарт на работе позволяет, надо модули писать.
Аноним 30/01/25 Чтв 15:49:30 3376516 617
>>3376472
Нейронки никого не заменят пока не появится объективная валидация результатов их работы. Макаку ты можешь отпиздить и она будет всеми способами проверять не обосралась ли. А нейронке ты можешь только поверить на слово.
Аноним 30/01/25 Чтв 15:51:40 3376517 618
>>3376515
Нормальной поддержки в IDE нет. В вскоде вообще пизда, скорее не работает, чем работает. В clion и студии оно иногда работает, иногда нет, может отъебнуть и сиди потом как в текстовом редакторе, или ещё хуже - смотри на ошибки в IDE, когда код компилируется.
Аноним 30/01/25 Чтв 15:53:33 3376519 619
>>3376517
Хз почему это вообще проблема. Я всегда ошибки компилятора читаю, а на подсветку в иде смотрю. Единственное, что если подсветка синтаксиса вырубится, будет неудобно
Аноним 30/01/25 Чтв 19:24:45 3376661 620
Не устарела ли шапка?
Аноним 30/01/25 Чтв 20:07:30 3376685 621
Аноним 30/01/25 Чтв 21:22:21 3376727 622
>>3376685
переходим на стандарт шапки 2ch++14 в смысле еще на 11 не успели перейти!?
Аноним 30/01/25 Чтв 21:24:49 3376729 623
>>3376685
> обнови
Это призыв к перекату? В курсе что за такое делают?
Аноним 30/01/25 Чтв 22:38:12 3376770 624
>>3376729
Ну а кто сказал перекатывать прям щас? Будет 1000 постов - тогда и перекатит с обновлённой шапкой.
Аноним 31/01/25 Птн 00:05:30 3376808 625
Анончики, я заебался сам, заебал нейронку, а как добиться нужного - чота не понял.

Кароч. Есть класс Port, он умеет соединяться с другими портами и слать туда-сюда данные. Но сам по себе он не используется, а используется его типизированный шаблон-наследник TypedPort. Соединиться и обмениваться данными могут только порты одинакового типа.
И всё замечательно, пока в игру не вступают порты, которые формально одинакового типа, но по смыслу - разного. Ну например, один тип это float, в который можно засунуть вообще любое число, а другой это тоже float, но нормализованный, в нём число всегда в диапазоне 0..1. И надо считать эти два вида - разными типами, не позволять им соединяться и обмениваться данными. Но они оба float, то есть для шаблона это одно и то же.
Спрашивается: а как сделать, чтобы новые типы портов создавать так, будто через шаблон, но в подобных ситуациях иметь возможность для манёвра?

Нейронка предлагает просто проверять соответствие диапазону, но это не то.
Аноним 31/01/25 Птн 08:53:18 3376952 626
>>3376808
У дипсика тоже спрашивал?

Чтобы решить задачу, введем дополнительный параметр шаблона, который будет служить уникальным идентификатором типа порта, даже если базовый тип данных одинаков. Это позволит различать семантически разные порты на уровне системы типов.

Решение:

1. Модифицируем шаблонный класс TypedPort:
Добавим второй параметр шаблона `TypeID`, по умолчанию равный `T`.

```cpp
template <typename T, typename TypeID = T>
class TypedPort : public Port {
public:
// Проверка совместимости портов
virtual bool canConnectTo(const Port other) const override {
// Проверяем, что other имеет тот же T и TypeID
auto typedOther = dynamic_cast<const TypedPort<T, TypeID>
>(other);
return typedOther != nullptr;
}

// ... остальная реализация
};
```

2. Создаем уникальные идентификаторы типов:
Для каждого семантического варианта типа объявляем пустые структуры-теги.

```cpp
// Идентификаторы для разных видов float-портов
struct NormalizedFloatTag {};
struct UnnormalizedFloatTag {};

// Альтернативно, можно использовать enum или другие типы
```

3. Определяем специализированные порты:
Используем теги при объявлении портов, чтобы различать их.

```cpp
using NormalizedPort = TypedPort<float, NormalizedFloatTag>;
using UnnormalizedPort = TypedPort<float, UnnormalizedFloatTag>;
```

4. Пример использования:
Порт `NormalizedPort` не сможет соединиться с `UnnormalizedPort`.

```cpp
NormalizedPort port1;
UnnormalizedPort port2;

port1.connect(&port2); // Ошибка: canConnectTo вернет false
```

Преимущества подхода:
- Статическая проверка типов: Некорректные соединения отлавливаются на этапе компиляции или через `dynamic_cast`.
- Гибкость: Можно создавать произвольное количество семантических вариантов для одного типа `T`.
- Минимальные изменения: Не требуется менять существующий код, кроме модификации `TypedPort`.

Дополнительные варианты:
- Если нужно сохранить обратную совместимость, можно оставить `TypeID` по умолчанию равным `T`, тогда обычные порты (`TypedPort<float>`) будут совместимы только между собой.
- Для автоматической проверки диапазона данных в нормализованном порте можно добавить логику в методы отправки данных.
Аноним 31/01/25 Птн 11:57:30 3377086 627
Аноним 31/01/25 Птн 12:15:02 3377097 628
Аноним 31/01/25 Птн 12:42:46 3377110 629
>>3377097
У нейросети спроси
Аноним 31/01/25 Птн 22:44:24 3377591 630
>>3376952

Посикал глубоко в тебя и в твою мамашу.
Аноним 02/02/25 Вск 17:09:40 3379045 631
>>3340862
На галанге сделаю все что угодно лучше тебя, позер
Аноним 02/02/25 Вск 17:49:53 3379095 632
Допустим, у меня есть функция типа

void foo (const std::string &bar) { ... }

Чё случится, если внутри она делает форк и я в дочернем процессе попробую что-нибудь типа bar.c_str()?
Аноним 02/02/25 Вск 18:00:21 3379108 633
>>3379095
Вернется указатель, очевидно. Память разная у процессов, если вопрос об этом
Аноним 02/02/25 Вск 18:10:16 3379118 634
Аноним 02/02/25 Вск 20:37:36 3379215 635
>>3379118
Как сделать, чтобы содержимое строки наверняка было доступно внутри чайлда?
Аноним 03/02/25 Пнд 00:18:01 3379312 636
>>3379215

Явно копировать строку перед передачей в новый поток или хранить в std::atomic<string> со временем жизни большим, чем время жизни всех потоков.
Аноним 03/02/25 Пнд 00:46:54 3379321 637
>>3379108
>Память разная у процессов
Только с того момента, как кто-то попытается модифицировать свою ещё-не-копию.
Аноним 03/02/25 Пнд 02:13:23 3379340 638
e911e75007b72d7[...].jpg 85Кб, 340x523
340x523
Аноним 03/02/25 Пнд 10:02:55 3379456 639
>>3379321
Ты не можешь из одного процесса прочитать данные другого по его внутреннему указателю, в этом суть.
Аноним 04/02/25 Втр 18:55:21 3380843 640
БЫЫЫЫЛЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯДЬ.
Ебаный Winsock2, вот хули может произойти, что при пересылке данных просто может ебануть WSAECONNRESET?
С подключение ну НИ-ХУ-Я не происходит, оно устойчиво.
С сетью никогда не работал, в интернете инфы - нихуя.
Аноним 05/02/25 Срд 12:07:46 3381301 641
25021306711.png 31Кб, 1300x305
1300x305
Сталкивался-ли кто-то с подобной рыготой, что при линковке статичной библиотеки не может stdшные ф-ции найти? Как решали? Щас встрял и не могу понять что нужно делать, инфы нихуя не нашёл за два часа.
Аноним 05/02/25 Срд 12:10:39 3381304 642
>>3381301
ПРИШЛО ВРЕМЯ ПЕРЕУСТАНАВЛИВАТЬ VISUAL STUDIO
Аноним 05/02/25 Срд 12:16:05 3381309 643
>>3380843
Вангую с буфером проёбываешься.
>>3381301
Ты там в проекте случайно не удалил строчку с дефолтными либами, когда свою прописывал? Алсо, проверь что у тебя многопоточность для std выставлена правильно, если твоя либа проприетарная, то это важно.
Аноним 05/02/25 Срд 17:20:08 3381644 644
25021807432.png 1Кб, 1404x36
1404x36
ЕБААААААТЬ, ЭТО ЧТО ТАКОЕ НАХУУУУУУУЙ.
Как это вообще отлавливать нахуй?
Аноним 06/02/25 Чтв 04:02:30 3382084 645
Аноним 07/02/25 Птн 22:15:25 3383480 646
image.png 52Кб, 618x468
618x468
Что это за синтаксис?
Аноним 07/02/25 Птн 22:22:34 3383484 647
image.png 46Кб, 878x414
878x414
Интересно, а в каком стандарте C стало не нужно руками проставлять числа?
Аноним 07/02/25 Птн 22:25:46 3383486 648
>>3383480
Это древний K&R C, который был ещё до стандарта C89. Оттуда же "implicit int", если не указывал тип, неявно подразумевался инт.
Аноним 07/02/25 Птн 22:28:50 3383491 649
Аноним 08/02/25 Суб 14:24:21 3383914 650
Вопрос.
В проекте у меня есть 2 headerа, которые между собой конфликтуют, потому-что ссылаются на одноимённый класс.(один в mso.thl, второй где-то в "afxwin.h", а именно класс IAccessible.

Сейчас я переименовал этот класс в afxwin.h знаю, очень хуёво, но это домашний проект.

Вопрос - могу я как-то в 1 одном VS проекте без подключения дополнительных DLL держать несколько подпроектов и чтобы они при компиляции между собой не конфликтовали, как в случае выше?

Я полагаю, есть вариант сделать новый проект Статичную библиотеку с интерфейсом, но
1)можно ли его сделать, чтобы он был в том же VS окошке, чтобы не переключаться?
2)Можно ли обойтись без интерфейса библиотеки, а другим образом?(из-за доп. работы не хочу так делать)
Аноним 08/02/25 Суб 19:15:04 3384167 651
Есть здесь те, кто разбирается в макрософтовских Namespace Shell Extension? Какая-то йоба для проводника, что позволяет к ниму либы писать и делать поддержку разных форматов.
Хочу для архивов второго фолла написать такое, вот только инфы НИ-ХУ-Я. Даже с чего начать не ебу.
Аноним 08/02/25 Суб 22:09:11 3384236 652
Как стать гуру в сборке проектов на плюсах? Чтобы шарить в CMake и фиксить все ошибки линковки и не найденных определениях
Аноним 08/02/25 Суб 22:22:51 3384240 653
Появилась ли С++ библиотека для склонения по падежам?
Или решение, чтобы использовать C# библиотеку для этого? Вот есть для имён на C# https://github.com/petrovich/petrovich-net
Аноним 09/02/25 Вск 02:01:47 3384273 654
1683913741806.webm 4293Кб, 1280x720, 00:02:01
1280x720
>>3384236
> Как стать гуру в сборке проектов на плюсах?
Пользоваться MSBuild.
Аноним 09/02/25 Вск 02:27:32 3384274 655
baza.mp4 1875Кб, 1280x720, 00:00:48
1280x720
Аноним 09/02/25 Вск 20:14:55 3384954 656
Что-то я туплю
https://cplusplus.com/forum/beginner/260826/

clang -fno-elide-constructors -o test test.cpp -lstdc++
g++ -fno-elide-constructors -o test test.cpp

Почему флаг -fno-elide-constructors нинахуя не влияет
Аноним 12/02/25 Срд 01:29:23 3386987 657
>>3384274
Инфоцыгане какие-то
Аноним 15/02/25 Суб 11:14:58 3389595 658
utf8-16.png 11Кб, 365x206
365x206
Правильно понимаю, что если сам исходный код закодирован в utf-8, то литералы u"" gcc перекодирует в utf-16 самостоятельно? Вроде так получается на тестовой лабе, но какие-то это муторные всё темы с кодировками.
Аноним 15/02/25 Суб 11:23:30 3389602 659
1582586250024.png 213Кб, 1920x839
1920x839
Аноним 15/02/25 Суб 11:30:10 3389604 660
Аноним 15/02/25 Суб 11:41:07 3389613 661
анонче, помогите нубику, как SDL подключить в Visual Studio, сколько гайдов ни пересмотрел, ни повторял все то же самое, SDL.h не видит и все
Аноним 15/02/25 Суб 14:22:47 3389706 662
>>3389613
>SDL.h не видит
А ты сам его видишь?
Аноним 15/02/25 Суб 17:55:51 3389829 663
>>3389613
Я того sdl рот ебал блядь
Может тебе подойдет raylib? Он удобнее
Аноним 16/02/25 Вск 07:04:51 3390052 664
>>3389829
да, согласен, вот с ним проблем не было, клевая либа
Аноним 16/02/25 Вск 10:03:37 3390087 665
Бля, почему clion такое кривое говно? Решил вчера в очередной раз попробовать его, функционал заебись, но опять нихуя не работает. Эта ссанина зависает рандомно через 3-15 минут намертво, хоткеи не проходят и ничего не жмётся, при этом в логах этой дрисни как будто оно продолжает работать. Ебался два часа вчера, но так и не удалось починить. Гугл нихуя не выдаёт.
Хочется слезть с VS, но clion кривое говно, а VS Code даже поддержку С++20 не могут запилить в 2025 и экстеншен для cmake кривое говно.
Аноним 16/02/25 Вск 11:33:41 3390127 666
>>3390087
ну, хз, попробуй codeblocks
Аноним 16/02/25 Вск 11:35:04 3390129 667
>>3389613
я болван, забейте, с vcpkg все нормально на изи встает и raylib и sdl
Аноним 16/02/25 Вск 11:52:25 3390138 668
>>3390087
>а VS Code даже поддержку С++20 не могут запилить в 2025
так там надо в папке с проектом создать
.vscode/c_cpp_properties.json
[code]
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/",
"/usr/include/x86_64-linux-gnu/qt5/QtCore",
"/usr/include/x86_64-linux-gnu/qt5"
],
"defines": ["HAVE_SOCKET_H=1","HAVE_SHIFTV=1"],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "c++20",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}[/code]
> и экстеншен для cmake кривое говно.
Хз, мне хватает.
Аноним 16/02/25 Вск 13:09:14 3390195 669
>>3390138
> так там надо в папке с проектом создать
Зачем? У этого говна в принципе нет нормальной поддержки модулей. При том что уже все 3 основных компилятора имеют полную поддержку модулей, cmake два года как поддерживает их.
Аноним 16/02/25 Вск 13:13:31 3390198 670
>>3390195
Каких еще в пизду модулей, ты о чем вообще шиз?
Аноним 16/02/25 Вск 13:25:01 3390202 671
>>3390198
О С++20, который индусы не могут запилить потому что EDG не могут компилятор под этот стандарт написать уже пятый год, а в IntelliSense вскода именно он используется для анализа крестов. При том что в Студии от него отказались 4 года назад.
Аноним 16/02/25 Вск 13:51:01 3390219 672
>>3390087
Странно. Ты на чем сидишь?
Аноним 16/02/25 Вск 14:47:49 3390257 673
Снимок экрана о[...].png 147Кб, 1266x918
1266x918
>>3390202
EDG это C/С++ фронтенд от одноименной фирмы
его раньше использовали компиляторы msvc, intel cc и даже эльбрусовый lcc. Интел от своего компилятора отказался, эльбрусовцы пытаются открутить шланг от llvm пока результат не очень, а что теперь у майкрософт - хуй знает, учитывая что ни разработчики gcc ни разработчики llvm не приветствуют отделение С/С++ фронтенда от компилятора.

В любом случае VS Code тут вообще неприделах, в его состав компилятор не входит, у тебя просто на винде по умолчанию майкрософтовский компилятор с edg наверное
Аноним 16/02/25 Вск 15:26:35 3390280 674
>>3390257
В IntelliSense используется фронтенд реального компилятора для анализа кода. Ты ведь понимаешь что для того чтобы реализовать кучу комптайм фич языка без компиляции, надо фактически пол компилятора написать. Так никто не делает. У всех языков есть так называемые language server - фронт компилятора с API. И у майков в вскоде для крестов используется EDG. Они сами на гитхабе писали что не могут запилить поддержку модулей, потому что EDG только в 2025 обещают запилить полностью С++20. Например скоро рефлексия появится, уже идёт финальная полировка комитетом, а поддержку в вскоде мы увидим году в 2030 минимум. Причём слезть с него они не смогут, потому что фронт текущего компилятора msvc слишком на Винду завязан, вскод с EDG надолго.
Аноним 16/02/25 Вск 16:13:01 3390319 675
>>3390280
>В IntelliSense используется фронтенд реального компилятора для анализа кода.
Ну так бля а я о чем? Его можно выбрать как в глобальных так и в настройках проекта, яж тебе показываю
> И у майков в вскоде для крестов используется EDG.
Он не в вскоде а в msvc, принеси сообщения негрософта чтоб не продолжать этот бессмысленный спор..
Аноним 16/02/25 Вск 16:42:07 3390326 676
1605141438502.png 408Кб, 1823x787
1823x787
>>3390319
> яж тебе показываю
Ты показываешь тучлейн. Это разные вещи. EDG в вскоде с тобой всегда.
> Он не в вскоде а в msvc
MSVC отказались от EDG в своём компиляторе. Как раз потому что EDG не мог своевременно пилить стандарты. У MSVC модули ещё в 2021 появились.
> принеси
Держи, главный чел в разработке экстеншена для крестов в вскоде.
Аноним 16/02/25 Вск 16:54:58 3390330 677
1686439856904.png 138Кб, 1748x774
1748x774
>>3390319
Алсо, пикрил объяснение почему всё это говно так тянется за EDG, как раз потому что нужно другие компиляторы поддерживать, а не только MSVC.
Аноним 16/02/25 Вск 17:09:08 3390335 678
посоветуйте гайды на Boost.Asio, пожалуйста
какой дефолтный проект на нем можно написать?
Аноним 16/02/25 Вск 17:19:15 3390347 679
>>3390326
>MSVC отказались от EDG в своём компиляторе.
И чем заменили? Нет так то я слышал об этом, но так никто и не объяснил что именно вместо него реализовали. Прогнозирую ситуацию как с интернет эксплорером - есть старый легаси, есть новый самописный edge и в итоге просто перейдут на chromium llvm.

А "Our IntelliSense compiler" может подразумевать как раз windows-msvc-x64 - бинарь или библиотеку которая работает с определенным компилятором на определенной ОС и предоставляет вскоду данне в едином формате. В официальной документации тем временем указано:

IntelliSense is a helpful tool built into VS Code that provides various code editing features to help you code faster and more efficiently. For example, code completion, parameter info, syntax highlighting, Code Actions (light bulbs), and member lists are all generated using IntelliSense.

C/C++ IntelliSense only requires a C/C++ compiler to be installed on your system. The C/C++ compiler provides C++ specific information to IntelliSense, such as the locations of system include paths and other settings. For project level configurations, reference Project level IntelliSense configuration section.

https://code.visualstudio.com/docs/cpp/configure-intellisense
Аноним 16/02/25 Вск 17:32:08 3390355 680
>>3390330
Ты уже сам себе противоречишь шизик. Либо интелисенс сделан на базе edg и никаких сторонних компиляторов ему не надо, либо он использует разные компиляторы и тогда там есть С++20 а ты пидорас тролишь опять тупостью сидишь.
Аноним 16/02/25 Вск 17:52:52 3390368 681
>>3390347
Чел, сколько тебе раз надо повторить. IntelliSense - это language server. База для него - фронт EDG. Оно не имеет никакого отношения к тулчейну или компилятору, которым ты собрался компилировать код. В вскоде ты выбираешь тулчейн, ты вообще понимаешь что это такое?
Аноним 16/02/25 Вск 19:34:30 3390455 682
>>3390368
>IntelliSense - это language server. База для него - фронт EDG.
Откуда ты это взял?
> EDG (our frontend and compiler that powers IntelliSense)
Буквально - наш фронтенд и компилятор на который опирается IntelliSense (((речь про экстеншн для поддержки c++, а не сам IntelliSense))).

Я понимаю что тебе тяжело понимать/читать написанно для профессионалов, ну так и нехуй лезть выдумывать хуйню на пустом месте.

А без тулчейна от языка ничего не останется, фронтенд это голый парсер+препроцессор там нет библиотечных функций констрант прочих заголовков.
Аноним 16/02/25 Вск 19:38:07 3390457 683
>>3390455
Бля, ты реально тупой.
Аноним 17/02/25 Пнд 01:49:00 3390598 684
показывайте ваши шаблоны
показывайте что умеете
Аноним 17/02/25 Пнд 01:52:23 3390599 685
>>3390598
error: no matching function for call to ‘std::vector<int, std::allocator<int> >::insert(int)’
/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/vector.tcc:93: note: candidates are: typename std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = int, _Alloc = std::allocator<int>]
/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_vector.h:657: note: void std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = int, _Alloc = std::allocator<int>]
Аноним 17/02/25 Пнд 03:15:19 3390606 686
колхозик.png 32Кб, 638x408
638x408
>>3390598
Хз, у меня все довольно колхозно, зато уже работает под xlib / win32 / wasm+html5+canvas / android, а чтобы в яблоко затащить, я так понял, надо их комп покупать, иначе на виртуалке это все будет коряво и медленно.
Аноним 17/02/25 Пнд 03:46:59 3390609 687
gui.png 109Кб, 1000x737
1000x737
>>3390606
И пока вот игрулька есть на этом гуе, чтобы его отлаживать. Но планы дебильные наполеоновские, которые я не осилю 90%.
Аноним 17/02/25 Пнд 13:43:40 3390894 688
>>3390609
А взял бы гейммейкер уже бы баксами хрустел, а не мечтал.
Аноним 17/02/25 Пнд 14:13:25 3390920 689
>>3390894
Микроигра это проба пера. Гуй под не игровые прожекты, особенно один йоба-прожект, про который даже зарекаться боюсь.
Аноним 17/02/25 Пнд 15:13:14 3390961 690
VinumAcf4.webp 73Кб, 704x641
704x641
>>3390894
Что бы хрустеть баксами на гейдеве, надо контент рисовать уметь, а не говнокод говнокодить.
Аноним 17/02/25 Пнд 18:58:22 3391131 691
Почему пишут на С++ приложения если можно писать на какой-нибудь жабе и требующие производительности куски программы сделать на С++?
Аноним 17/02/25 Пнд 19:16:23 3391138 692
>>3391131
Потому что мы на хую вертели твою жабу.
Аноним 17/02/25 Пнд 20:03:08 3391170 693
>>3391131
Можно, просто зачем? На жабе ни гуя нет
Если ты про жабаскрипт то так и делают, нода позволяют линковать к ним любые библиотеки. Просто не всем нравится что приложение таскает в себе браузер
Аноним 17/02/25 Пнд 21:01:11 3391198 694
Аноним 17/02/25 Пнд 22:57:21 3391257 695
>>3391131
>требующие производительности куски программы сделать на С++

Допустим, надо передать строку из C++ в Java. В C++ строка в UTF-8.

Есть три варианта:

1) Функция NewStringUTF. Она декодирует из твоего буфера и кодирует в UTF-16 в свой буфер. Это копирование, да еще с перекодированием.

2) Функция NewString, тогда тебе надо самому перекодировать строку, тут опять копирование

3) Казалось бы, третий и стандартный вариант - нахер все строки, работай с массивом байтов. Но нет, функция NewByteArray снова сама резервирует массив, а ты в него опять должен копировать.

Ну и какая тут будет производительность, если передать данные можно только с копированием?
Аноним 18/02/25 Втр 07:04:12 3391386 696
>>3391257
Понимаю. Хотя в жабе для этого придуман DirectByteBuffer, но да, неудобно.

https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html

Придётся видимо писать всю программу на С++, чтобы точно добиться производительности. Ну, хотя-бы я могу взять последний стандарт.
Аноним 18/02/25 Втр 10:59:53 3391500 697
Вы тоже сидите на EAP CLion? В чем подводные кроме того, что там могут оказаться какие-то баги? Не хочу касаться пиратской версии.
Аноним 18/02/25 Втр 12:13:41 3391579 698
>>3391500
Нет, у меня вижуалстудия.
Аноним 19/02/25 Срд 17:43:09 3392610 699
откликнулся на пару вакансий (ОПК, ЗП не указана, стек хуйня стандартная, Qt/boost/Linux и т.д.) -->везде отказ
Это учитывая, что у меня еще и вышка профильная (ОПК условно, лол).
сам по факту знаю в несколько раз больше чем требуют вакансии.
Думаю может урезать резюме, так то там дохуя чего указано.
Не хотят брать сеньора помидора и платить ему норм ЗП?
Хотя год назад у меня на 10 откликов было 7-8 приглашений.
Подумываю сменить язык/стек.
Что скажешь? куда вообще сейчас стоит податься, что искать?
Аноним 19/02/25 Срд 18:21:54 3392645 700
>>3392610
Не стоит менять язык, да и стек. Это норма искать работу по 3 месяца, особенно когда сеньор потому что найти работу с норм зп сложно.
Аноним 20/02/25 Чтв 18:05:52 3393318 701
используете ли вы корутины в своей работе?
если да, то для каких целей
Аноним 20/02/25 Чтв 18:28:16 3393335 702
>>3393318
Корутины это псевдо-многопоток там где его нет средствами ОС. Для всего остального они не нужны. Любители использовать один инструмент везде где можно приходят к говну типа асинхронности в расте.
Аноним 20/02/25 Чтв 19:20:50 3393357 703
>>3393335
Многопоток обоснован когда у тебя ядра загружаются конкретными тяжелыми задачами а основной поток остается обрабатывать ввод пользователя, рисовать окно и синхронизировать потоки, в нем как раз и применима асинхронщина, окно обновляется раз в 16мс (1000/60) пресловутое "уснул на кнопке" тоже раз в 5мс происходит, тред который 10секунд пыхтел/пердел спокойно подождет +0мс пока до него очередь дойдет, вообще не критично.
Аноним 20/02/25 Чтв 19:39:25 3393366 704
>>3393357
Дело в том что ручное переключение потоков всегда будет быстрее асинхронщины, которая занимается дрочем фреймов каждые 50 строчек кода и гоняет рантайм в цикле. Асинхронщина в нормальных ОС может быть обоснована только "я не умею/не хочу", когда надо хуяк-хуяк делать не думая о многопоточности.
Аноним 20/02/25 Чтв 20:15:42 3393397 705
>>3393366
просто пидорастеры не могут никак понять что не все задачи сводятся к пробеганию цикликом векторов, поэтому в геймдеве и обосрались.
Аноним 21/02/25 Птн 12:20:16 3393932 706
>>3393318
Да, использую. Вещь крутая очень. В принципе, я 2010 года жил без них. Но стоит признать, с ними код выглядит хорошо
Аноним 21/02/25 Птн 12:23:26 3393934 707
>>3393366
>ереключение потоков всегда будет быстрее асинхронщины
Чот какаой-то набор букв.

Как был осказано выше: потоки нужны для cpu-bound задач, асихронщина реализуемая event-driven программированием с помощью (epoll + колбеки), epoll+coroutine manager+coroutines для io-bound задач. Всё.

Долгий io на потоках пишут либо дауны, либо новички
Аноним 21/02/25 Птн 12:29:07 3393937 708
>>3393934
> асихронщина реализуемая event-driven программированием с помощью
Она реализуется оборачиванием костылями сишного API ОС, вместо прямого использования этого API. Такой хуитой занимаются только js-вебмакаки.
Аноним 21/02/25 Птн 23:28:38 3394566 709
>>3393937
Ну в питон всякие select'ы и epoll'ы проброшены, но сегодня-то все в основном asyncio юзают. Щитай, тоже костыли
Аноним 23/02/25 Вск 12:08:18 3395422 710
Screenshot-823.png 46Кб, 1181x256
1181x256
Так как в этом ебнутом недоязыке для ебанатов правильно создать массив из нулей блядь? Код писал Professor Hank Stalica так что можете на меня не пиздеть. Вроде пишут что данный код должон
1) обнулять первый элемент
2) обнулять остальные элементы по умолчанию
но у меня все равно остается мусор. Правда у меня очень древний компилятор, дело в этом? Или код неправильный и прохфессор серит?
(array здесь поле класса.)
Решил заменить {0} на {}. Это самый правильный тру вей инициализации массива или есть получше?
Аноним 23/02/25 Вск 13:32:31 3395465 711
>>3395422
ты опять выходишь на связь шизойд ебучий?
Сколько тебе раз надо повторить что плюсы это не сишарп, не пытайся воспроизводить синтаксис, воспроизводи семантику, дебил блять.

class Foo {
-- std::vector<int> array; // динамический массив
public:
-- Foo(int s) { array.resize(s); } // динамическое выделение + заполнение
};
Аноним 23/02/25 Вск 14:20:04 3395498 712
>>3395465
>ты опять выходишь на связь шизойд ебучий?
Мой первый пост в треде. И еще раз для особо тупых - код не мой.
Больше часа листал SO и в каждом сука ответе обязательно вылезет плюсишная ебанашка со своим в сраку ебаным вектором когда вопрос четко задан про массивы. Ебанашки как же до вас не может дойти что чтобы использовать вектор нужно сначала разобраться с массивами а потом еще сверху разобраться с богатой внутренней жизнью вектора и тем как эти векторы перемещают массивы внутри себя. Что является невыполнимой задачей потому что если открыть код стандартной либы очень быстро глаза полезут на лоб и из них польется кровь.
Аноним 23/02/25 Вск 15:52:37 3395570 713
Какую архитектуру вы используете в проекте?
Аноним 23/02/25 Вск 15:56:10 3395575 714
>>3395422
> древний компилятор
> дело в этом
Вполне вероятно.

Можешь посмотреть этот видео материал. В нем на каком-то моменте обсуждается как инициализировать нулями массив. Плюс узнаешь много нового про компиляторы С.

https://youtu.be/RJ_6KZRg-HE?si=YnRRvKiOIRA6Rmq9
Аноним 23/02/25 Вск 15:56:30 3395578 715
Аноним 23/02/25 Вск 16:26:12 3395605 716
20131127110124o[...].jpg 336Кб, 1920x1080
1920x1080
>>3395498
>чтобы использовать вектор нужно сначала разобраться с массивами а потом еще сверху разобраться с богатой внутренней жизнью вектора и тем как эти векторы перемещают массивы внутри себя
>>Мой первый пост в треде
Спермошиз, плюсы это не сишарп здесь запросто можно вылезти за границы памяти что у тебя потенциально и происходит. Если ты нихуя в этом не одупляешь, то освой сначала безопасный стиль программирования с использованием стандартных объектов/операторов/шаблонов. Потом при наработке определенного уровня познаний и возникновения острой необходимости, осваивай ручное управление.
Аноним 23/02/25 Вск 17:52:33 3395660 717
>>3395422
С++ это компилируемый язык.
Куча выделяется под программу на этапе запуска/выполнения.
За выделение/распределение heap отвечает библиотека, она по идее должна "обнулять"/"обнулять по требованию" данные в куче.
То что ты написал {} {0} --> условно на это похуй так как это конструкции времени статики (компиляции). Когда еще нету выделенной памяти, тебе компил нихуя не сделает.
То что будет происходить во время выполнения зависит от многих факторов.
Вообщем просто иницилизируй массив нулями динамически in run time то есть.
Аноним 24/02/25 Пнд 00:23:00 3395856 718
>>3395498
>со своим в сраку ебаным вектором когда вопрос четко задан про массивы

Первое. "Массивы" - это в разных языках не совсем одно и то же. Вектор имеет интерфейс массива, поэтому какого хуя тебе, собственно, надо? Это массив! Или ты хочешь доебаться до слова? (Да.) Сложная реализация в исходниках STL? Лол, ну поищи реализацию массива в исходниках сишарпа, я уверен, что она не проще.

Второе, а если у тебя в массиве 5 элементов, а в инит-листе 2? Почему их надо повторять циклически, пока они попадают в границы массива? С какого хуя это должно быть именно так? Почему не сперва в прямом порядке, потом в обратном и так через раз? [1 2 2 1 1 boundary] Да и контроля попадания в границы в крестах нет, если это не вектор.

Третье, твое заполнить нулями - это вообще-то частный случай вызова конструктора с параметрами на элементах массива. Тогда по смыслу на каждом элементе надо запускать какой-то код. Но просто выделить память с нулями можно намного эффективнее вызовом mmap / VirtualAlloc. Ты мог бы обернуть эти вызовы в свой класс ZeroArray<T>.

Четвертое, ты можешь просто заполнить массив нулями в цикле.

Пятое, если у тебя массив int, то ты можешь взять один регистр avx, записать в него нули и просто интринсиками максимально быстро задолбить память настоящими нулями без всякого пейджинга с копи-он-райт.

Итого, кресты оставляют даже больше возможностей для обнуления "массива", чем многие другие языки. И так, кстати, с большинством "недостатков".
Аноним 24/02/25 Пнд 14:49:36 3396199 719
>>3395575
>>3395605
>>3395660
>>3395856
Какие же вы уебища, просто пиздец. Не вижу даже смысла отвечать вам по отдельности.
Аноним 24/02/25 Пнд 14:55:15 3396203 720
>>3396199
Да ты охуел. Я тебе классный видеоролик скинул, а ты меня уебищем называешь.
Аноним 24/02/25 Пнд 19:11:25 3396436 721
>>3396203
Уебище, что будет при size <= 0 ?
Поскрепи мозгами, пофантозируй кто и где должен это контролировать.
Аноним 24/02/25 Пнд 19:30:49 3396445 722
Думаете, будет UB?
Аноним 24/02/25 Пнд 19:39:36 3396449 723
>>3396445
terminate called after throwing an instance of 'std::bad_array_new_length'
what(): std::bad_array_new_length
Аноним 24/02/25 Пнд 19:45:11 3396455 724
Тут есть кто-нибудь, кто писал свой shared_ptr и успешно делал так, чтобы при множественном наследовании хранился указатель на объект, который находится в середине объекта наследника, но при удалении вызывался деструктор изначального объекта? Почему я использую type erasure, передаю поинтер типа предка, тот кастится к наследнику при вызове виртуальной функции (смотрю через typeid), но блять указатель не двигается. Я хочу отрезать Страуструпу голову бензопилой нахуй, какого хуя этот язык такое уебище ебаное.
Аноним 24/02/25 Пнд 19:50:10 3396459 725
>>3396455
Ты совсем припизднутый? У тебя только один объект есть. Кастануть ты его хоть в void* можешь, сам объект от этого другим не станет.
Аноним 24/02/25 Пнд 19:50:25 3396460 726
>>3396455
>Я хочу отрезать Страуструпу голову бензопилой нахуй
Лучше руки себе отпили от жопы.
Аноним 24/02/25 Пнд 19:57:57 3396465 727
>>3396459
В shared_ptr хранится 2 поля: указатель на объект того же типа, что и шаблонный параметр самого shared_ptr-а, и нешаблонный BaseControlBlock - абстрактный класс. Но в конструктор shared_ptr передается не сам BaseControlBlock, а его шаблонный наследник, в котором вызывается виртуальный метод, который принимает указатель того же типа, что и его шаблонный параметр, и вызывает delete от него. Без множественного наследования все ок, но при множественном наследовании тип указателя кастится (условно Dad->Son), но значение указателя не меняется.
Надеюсь, понятно объяснил.
Аноним 24/02/25 Пнд 20:09:36 3396470 728
>>3396455
>тот кастится к наследнику при вызове виртуальной функции >(смотрю через typeid),
122f: 48 89 c2 mov %rax,%rdx
1232: 48 8b 45 f8 mov -0x8(%rbp),%rax
1236: 8b 00 mov (%rax),%eax
1238: 89 c6 mov %eax,%esi
123a: 48 89 d7 mov %rdx,%rdi
123d: e8 6e fe ff ff call 10b0 <_ZNSolsEi@plt>
внимательно посмотри на последнюю строчку это вызов функции из .plt section, а теперб подумай, что ты делаешь неверно.
Аноним 24/02/25 Пнд 20:37:34 3396481 729
1690461312406.png 205Кб, 1030x1899
1030x1899
>>3396465
Хуй знает что ты там напердолил. Вот вызываются все деструкторы в порядке наследования, какой шаблонный тип указываешь не влияет на вызов конструкторов никак, как и множественное наследование похуй - вызываются по очереди все деструкторы переданного объекта.
Аноним 24/02/25 Пнд 20:48:43 3396490 730
>>3396470
Эти ребусы мне вообще ничего не говорят, сколько я на них не смотрю. Почему меня вообще должно беспокоить, что происходит на уровне ассемблера?
>это вызов функции из .plt section
Первый раз вижу такой термин. Как я нагуглил, это значит, что адрес вызываемой процедуры неизвестен в компайл тайме и считается в рантайме. Ну понятно, он и не должен быть известен, потому что тип смотрится в рантайме. И что?
Вообще, странно, что типы кастятся, хотя dynamic_cast явно не был вызван. Если вызвать его явно, ничего не происходит
Аноним 24/02/25 Пнд 21:02:41 3396498 731
Screenshot from[...].png 234Кб, 1838x980
1838x980
>>3396481
Без множественного наследования все ок работает, а при множественном вызывается нужный деструктор, но не по тому указателю.
Аноним 24/02/25 Пнд 21:29:34 3396521 732
>>3396498
> множественное наследование
Кто-то всё ещё его использует в 2025?
Аноним 24/02/25 Пнд 21:47:06 3396525 733
>>3396521
Наверно, никто, но я хочу пройти курс Мещерина целиком, а там эта задача у студентов, и момент, что каст указателей должен работать при множественном наследовании, проговаривается. Но эта проблема только вскользь упомянута, в отличие от остальных, типа enable_shared_from_this и передачи аллокатора и делитера.
Аноним 24/02/25 Пнд 22:03:25 3396536 734
>>3396525
А, понял, для самообразования полезно
Аноним 24/02/25 Пнд 22:10:21 3396543 735
>>3396498
Во-первых, то что ты делаешь не множественное наследование. Во-вторых, это ничего не меняет, деструкторы так же по очереди вызываются. Алсо, у меня чуть глаза не вытекли от твоего говнокода.
> вызывается нужный деструктор, но не по тому указателю
Это вообще перл, деструктор вызывается от объекта, в котором он объявлен, наследование тут не при чём. По другому и не может быть.
> reinterpret_cast
Если ты кастанул свой указатель к zalupa через reinterpret_cast, а потом сделал ей delete, то это вообще пиздец и UB. Ты бы ещё к int кастанул и потом спросил почему сегфолт. Кастуй только через static_cast.
Аноним 25/02/25 Втр 01:15:14 3396650 736
>>3396490
через readelf посмотри где у тебя .got.plt section и по какому смещению происходит переход _GLOBAL_OFFSET_TABLE_
[Nr] Name Type Address Off Size ES Flg Lk Inf Al
...
[21] .got PROGBITS 0000000000200fc8 000fc8 000020 08 WA 0 0 8
[22] .got.plt PROGBITS 0000000000200fe8 000fe8 000078 08 WA 0 0 8
Аноним 25/02/25 Втр 07:22:30 3396697 737
А компиляторы уже научились детектить UB?
Аноним 25/02/25 Втр 12:05:10 3396850 738
>>3396650
А это зависит от -no-pie? )
Аноним 25/02/25 Втр 13:12:33 3396945 739
>>3396850
ты же для обучения это делаешь
просто пересобери библиотеку под свои нужды и не еби тут людям мозг
Аноним 25/02/25 Втр 17:10:44 3397153 740
>>3396465
Тебе скорее всего нужны таблицы виртуальных функций, в базовом классе у тебя будет твой deleter. Чилды будут в этой таблице просто подменять адресс deleter на свой. Мещерина нахуй, ему лень даже 5 минут потратить для подготовки к своим сраным лекциям, постоянно что-то пишет/стирает, путается в терминах, ему бы листья мести у универа, а не преподавать.
Аноним 25/02/25 Втр 18:57:38 3397241 741
>>3397153
>Мещерина
За Мещерина и двор стреляю в упор!
Аноним 25/02/25 Втр 19:52:50 3397313 742
Это анон, который писал shared_ptr. Я написал студенту, у которого преподавал Мещерин, и оказывается, в их shared_ptr-ах в ControlBlock-е просто хранится нужный указатель нужного типа, по которому делается delete. А я 4 дня сидел и ебался с тем, чтобы передавать указатель из shared_ptr-а в ControlBlock, чтобы не хранить указатель в самом ControlBlock-e, чтобы было как в stl и ControlBlock занимал 24 байта, а не 32. Раз студенты забивают, мне тоже похуй, что сказать.
>>3396850 Это не я.
>>3397153
>Мещерина нахуй
А какой еще есть аналогичный курс, где 61 видос чистого контента? Да, там ~10% это "Ееееееее", "Посмотрите сами на сипипи референс" и втыкания в конспект. Зато остальные 90 по делу. Если есть курс лучше, кидай ссылку.
Аноним 25/02/25 Втр 20:02:07 3397324 743
>>3397313
> курс
Книги.
> 61 видос чистого контента
1000 страниц чистого контента.
Аноним 25/02/25 Втр 20:17:56 3397352 744
>>3397324
Хз, мой опыт показывает, что видосы усваиваются лучше книг. Я начинал читал Таненбаума по сетям, и мне в один момент стало физически больше терпеть этот пиздец, я нашел курс видосов, посмотрел за 10 дней и освоил то, что по книге бы осваивал за месяц, и пришлось бы все равно половину заново гуглить. Я не понимаю, как люди читают и не засыпают.
Ты можешь сказать "Ряя поколение тиктока", но имхо так это у всех людей.
Аноним 25/02/25 Втр 20:53:16 3397379 745
>>3397352
>но имхо так это у всех людей
Не у всех. Показывай видосы от своих пориджевых феллов бади где мув семантика поясняется глубже чем в книжке у скуфского Ждосатиса. И то же самое по шаблонам.
Аноним 25/02/25 Втр 20:57:42 3397384 746
>>3397379
Как вообще можн плюсы по видосам учить?. Каждую минуту ставить на паузу и лезть в иде набирать пример? А если что-то вылетело из головы прокручивать видео вместе со смехуечками?
Аноним 25/02/25 Втр 21:30:13 3397410 747
>>3397352
Зумеров с клиповым мышлением нынче много, вот и кажется, что так у всех людей.
Аноним 25/02/25 Втр 21:36:14 3397414 748
>>3397410
Сказал дваческролледуммер
Аноним 25/02/25 Втр 21:57:05 3397424 749
>>3397414
Я перед отправкой большинства постов сверяюсь со своими заметками и документацией, всё увиденное читаю внимательно, незнакомую инфу изучаю и конспектирую. Двач не пикабу, чтобы "скроллить", здесь серьёзные люди сидят!
Аноним 26/02/25 Срд 02:26:59 3397478 750
>>3397424
это серьезные люди там выше массивы обсуждали?
Аноним 26/02/25 Срд 03:00:21 3397479 751
>>3397478
Давай обсудим лучше, видел ли ты серьёзные мультипоточные проекты, где забили на выравнивание данных и получили из-за этого проблемы с производительностью?
Аноним 26/02/25 Срд 03:41:04 3397483 752
>>3397352
>Хз, мой опыт показывает, что видосы усваиваются лучше книг.
разницы нет, но часто у видео-лекций есть некая ламповость/уют, ты как бы больше вовлечен. Мещера в этом плане не плох, но в целом его курс слишком размазан, так как академический. Много лекций там вообще нахуй не нужны.

Я учил по статьям + видео-лекции (чаще всего университетские) на rus/eng. + важные вещи конспектировал в google docs.
Ну и параллельно практика конечно.
>Я начинал читал Таненбаума по сетям
Тантенбаум хуета хует. На ютубе есть годный курс от сетевого инженера по сетям. Да он слишком подробный, но в силу важности дисциплины похуй

а так из всего что я учил, самое полезное это АКОС это прям база базовая
Аноним 26/02/25 Срд 03:57:24 3397484 753
Где вы используете структуру данных set (множество)?
Чисто для быстрого поиска?
Это же просто дерево или хеш элементов. Знаю, что они используются для индексации в БД.
Но я про среднестатистическую практику больше.
Для поиска как правило использую Map, в виду того что помимо проверки на наличие нужна еще некая информация, которую содержит элемент.
Может кто из практики привести примеры применения
Аноним 26/02/25 Срд 14:25:09 3397693 754
Есть проект на смейке и проект просто с мейкфайлом. Как стянуть со второго куски сборки в первый?
Аноним 26/02/25 Срд 14:48:02 3397700 755
>>3397693
Сгенерировать мейклист через смаке и копипастить.
Аноним 26/02/25 Срд 17:34:33 3397828 756
>>3397693
у тебя голый симейк или аутотулз?
Аноним 26/02/25 Срд 17:47:41 3397841 757
>>3397828
>>3397700
голый симей. Я уже надергал кое как, заработало
Аноним 26/02/25 Срд 19:39:52 3397918 758
>>3397484
Ну, например, ты обходишь граф, и надо как-то хранить пройденные узлы (допустим, в самом узле поставить флаг нет возможности). В массиве хранить - линейное время поиска. Поэтому лучше взять сет. Дополнительно, у сета есть функции объединений, пересечений, это тоже бывает нужно.
Аноним 26/02/25 Срд 23:25:41 3398008 759
Сегодня в телеге пришло сообщения от приятеля фронтендера из Тайланда:
"Здорова байтоёб. Как жизнь??)
Не устал еще свои перделки-свистелки кодить?=)))"
Что ответить?
Аноним 26/02/25 Срд 23:49:07 3398016 760
>>3398008
>Что ответить?
Позови меня с собой
Я приду сквозь злые ночи
Я отправлюсь за тобой
Что бы путь мне ни пророчил
Я приду туда, где ты
Нарисуешь в небе солнце
Где разбитые мечты
Обретают снова силу высоты
Аноним 27/02/25 Чтв 00:34:48 3398029 761
>>3398008
>от приятеля фронтендера
Век фронтендера недолог. До 35 не успел выбраться в менеджмент или заработать на ренту - и пиздарики. На работу не берут по возрасту, фреймворки новые уже сил нет учить, а на фрилансе молодежь теснит вовсю, они дешевле и способнее. Плюс ИИ и всякие no-code за веревку дергают.
Аноним 27/02/25 Чтв 00:55:50 3398032 762
Чем сейчас программировать графику?
opengl(freeglut) и sdl явно скоро могут быть неактулаьный в силу того, что уже некоторые графические движки не работают с этим
Аноним 27/02/25 Чтв 01:07:28 3398035 763
Аноним 27/02/25 Чтв 02:54:48 3398056 764
планирую вкатиться в программирование микроконтроллеров.
база есть для этого, да и желание.
какие подводные?
Аноним 27/02/25 Чтв 07:45:12 3398088 765
>>3398029
>no-code
ахуеть я думал оно вымерло в 2015 еще
или просто мартыхологи так и не договорились между собой что такое zero code и придумали новый форс
Аноним 27/02/25 Чтв 07:48:43 3398091 766
>>3398016
на всякий случай зарепортил за материал от иностранного агента
Аноним 28/02/25 Птн 07:59:33 3398916 767
>>3390087
Попробуй emacs, сам на нем сижу и всем советую.
Аноним 28/02/25 Птн 08:04:57 3398926 768
>>3397483
>Тантенбаум хуета хует. На ютубе есть годный курс от сетевого инженера по сетям. Да он слишком подробный, но в силу важности дисциплины похуй
Че за курс? Дай ссылку пожалуйста. Вообще многим достаточно beej guide to network programming пробежать и хватит. Он там еще разные материалы наговнякал новые, по гиту например, тоже вроде интересно, но я уже не смотрел.
Аноним 28/02/25 Птн 16:03:06 3399237 769
Аноним 01/03/25 Суб 13:25:45 3399638 770
Я вот думаю, а это вообще нормально, что виртуальный класс, который ничего не знает про имплементацию указывает, что какой-то метод не должен менять состояние класса.

virtual void save(const std::string& filename) const = 0;

Ну, вот откуда создатель класса может знать, что вот этот const на конце не испортит жизнь тому кто должен будет реализовывать виртуальную функцию? Как будто бы виртуальные функции не должны вообще брать на себя ответственность за то, что могут они или не могут менять состояние класса.

Я не прав?
Аноним 01/03/25 Суб 13:45:58 3399641 771
>>3399638
Виртуальная функция - это интерфейс. Реализация его должна соответствовать интерфейсу. Если интерфейс говорит нельзя менять состояние, значит нельзя.
> испортит жизнь тому кто должен будет реализовывать виртуальную функцию
У него есть сигнатура метода, он обязан реализовать метод в соответствии с сигнатурой. Испортить жизнь - это позволить реализации менять интерфейс.
Аноним 01/03/25 Суб 13:55:16 3399643 772
>>3399641
> Испортить жизнь - это позволить реализации менять интерфейс.
Ну, это невозможно в принципе.

Возможно я не правильно выразился. У меня нет проблем с интерфейсом как с концепцией, но одно дело интерфейс определяющее поведение класса, а другое определяющее детали имплементации.

Может быть мне нужно сохранять сколько раз был вызван метод save из примера выше? В этом случае вызов метода save меняет состояние объекта. Но из-за того, что создатель виртуальной функции решил, что в его картине мира save не может менять состояние объекта я теперь не могу реализовать необходимый мне функционал.

Использование const с pure virtual function таким образом выглядит как какой-то анти-паттерн, который должен использоваться в редчайших случаях. Вместо этого я вижу, что в каждом втором интерфейсе суют этот const.

В общем, я не понимаю почему оно именно так, и почему я не смог найти ни одной статьи где бы подобная практика считалась бы не правильной.
Аноним 01/03/25 Суб 14:07:21 3399646 773
>>3399643
Чел, с большой вероятностью константность методов делается для потокобезопасности. Создатель интерфейса подразумевает что это метод можно вызвать и он не сломает объект. То что ты хочешь - это выстрелить себе в ногу.
> определяющее детали имплементации
Нет никаких деталей в константности. Это и есть определение поведения класса и то что вызов гарантировано не меняет его.
Аноним 01/03/25 Суб 14:16:20 3399649 774
>>3399646
> Чел, с большой вероятностью константность методов делается для потокобезопасности.
То есть создатель интерфейса предвидел, что имплементация будет использовать в многопоточном алгоритме? Это какой-то комплекс Бога уже.
> То что ты хочешь - это выстрелить себе в ногу.
Я хочу, чтобы интерфейс не ограничивал имплементацию бесполезными ограничениями.
Аноним 01/03/25 Суб 14:23:24 3399653 775
>>3399643
Потому что должно быть логическое разделение и метод save() должен делать только то для чего предназначен, а именно сохранять. Это требуется в большинстве случаев, поэтому общий интерфейс выглядит именно так.
Если ты хочешь что-то изменить в переменной, то делаешь класс/метод обертку уровня my_yoba_save(), обновляешь нужные данные, а затем дергаешь стандартный метод save().
Аноним 01/03/25 Суб 14:26:59 3399655 776
>>3399653
Хм, да, это звучит логично. Хотя я пожалуй не буду так ограничивать имплементаторов. Интерфейс должен только определять контракт А делает Б, а то как А делает Б пользователя интерфейса волновать не должно. Меняется или не меняется внутренее состояние объекта это уже детали.
Аноним 01/03/25 Суб 14:48:57 3399658 777
>>3399649
> Я хочу, чтобы интерфейс не ограничивал
Пиздос. Может ты ещё хочешь чтобы не было интерфейса вообще? Он же ограничивает тебя.
Аноним 01/03/25 Суб 14:52:30 3399660 778
>>3399658
Если он не нужен, то конечно я бы хотел, чтобы его не было. Если он нужен, значит я бы хотел, чтобы он был.

Абстракции и ограничения не нужны когда они не нужны.
Сунь-вынь-цзы
Аноним 01/03/25 Суб 14:55:42 3399662 779
>>3399660
Чел, не пользуйся ими, если тебе так печёт с ограничений. Замени наследование на концепты, например.
Аноним 01/03/25 Суб 14:58:03 3399665 780
>>3399662
Всё нормально с наследованием когда интерфейс не пытается зажать разработчика в необоснованные рамки.
Аноним 01/03/25 Суб 15:28:07 3399679 781
>>3399655
>Хотя я пожалуй не буду так ограничивать имплементаторов. Интерфейс должен только определять контракт А делает Б, а то как А делает Б пользователя интерфейса волновать не должно. Меняется или не меняется внутренее состояние объекта это уже детали
Что значит ограничивать? Вот давай разберем твой пример с подсчетом колчества вызовов save(), т.е. подсчет количества сохранений, изменяя одно поле класса.Пока ты изменяешь что-то незначительное, то проблем особо и нет. Но потом оказывается, что перед сохранением нужно изменить пару полей, вызвать пару функций, произвести какую-то магию и все это в большинстве случаев пойдет в метод save(), превращая безобидный метод, который по логике должен только сохранять, в лапшу.
Это, скорее, вопрос о протекании абстракций и нужно чсотреть в каком контексте используется интерфейс. Но лучше лишний раз анально ограничить на самом деле, выдав стабильный и универсальный интерфейс, чтобы пользователи лепили свои поделия уже поверх твоего.
Аноним 01/03/25 Суб 15:36:06 3399685 782
>>3399679
Иными словами, однажды можно обнаружить, что метод save(), который по логике должен делать ограниченный пул действий, при вызове ебет твою мамку, страпонит отца и рассылает твои голые детские фото.
Аноним 01/03/25 Суб 15:59:55 3399692 783
>>3399679
>>3399685
Ну, это букавльно считать, что создатель интерфейса умнее чем его имплементатор. Сомнительная мотивация как по мне, но я её понимаю
Аноним 01/03/25 Суб 16:02:01 3399693 784
tldr: Вместо использования умных указателей/счетчиков/RAII нужно использовать групповое время жизни выделяемой памяти, чтобы минимизировать количество мест в программе где память выделяется/очищается тем самым сделав её более стабильной

Мнение?

https://www.youtube.com/watch?v=xt1KNDmOYqA
Аноним 01/03/25 Суб 16:09:42 3399698 785
>>3399692
Ну это перестраховка и гарантии на уровне системы. Когда код пишут разные люди, то это очень помогает. А когда пишешь сам, то можешь хоть проверку типов выключить(условно).
В общем, по контексту ориентируйся.
Аноним 01/03/25 Суб 16:11:28 3399701 786
>>3399693
Это фактически как современные GC устроены, только тут ручное. Идея норм, особенно для производительности и гейминга, но при отстреле ноги будет отрывать всё по самую жопу. Проще ECS взять, но оно будет медленнее.
Аноним 01/03/25 Суб 16:26:23 3399710 787
>>3399693
Ну он всё верно рассказывает, и он сам же говорит, что никто не пропускает эти стадии. Ты сначала должен освоить RAII, понять на практике где динамическая память боттлнечит и почему, а только потом переходить к следующим стадиям. А иначе просто получишь в 10 раз кривее код. Сишникам с этим попроще, т.к. у них и так нет RAII.
Это одна из главных причин почему джава такая быстрая в вебе, даже Раст умудряется поёбывать - потому что раст дрочит алокации/деалокации посреди работающего кода, а GC может сделать это пачкой после.
Аноним 01/03/25 Суб 17:08:05 3399735 788
Аноним 01/03/25 Суб 17:17:29 3399742 789
Я вот сейчас читаю про параллельные вычисления.
В один момент на смену росту частоты CPU пришла многоядерная архитектура.
Язык Go был создан как раз таки для параллельных вычислений, но замечаю, что многие его хейтят.
С чем это связано? Не получилось, не фартануло?
Аноним 01/03/25 Суб 17:31:45 3399748 790
>>3399643
Каких в пизду объектов? Нету в рантайме никаких объектов. ООП-семантика в плюсах нужна для того что бы компилятор таких как ты отсеивал на этапе сборки/линковки.
Аноним 01/03/25 Суб 17:54:41 3399755 791
Аноним 01/03/25 Суб 17:58:45 3399758 792
>>3399748
> Каких в пизду объектов?
Тех для которых область памяти выделяется. Первый день с С++ работаешь?
Аноним 01/03/25 Суб 18:18:04 3399766 793
>>3399742
Потому что зелёные потоки выглядят хорошо только в документации и хелоуворлдах. При малейшем усложнении кода зелёные потоки превращаются в мешанину из багов. У тебя в коде есть куча многопоточных кусков кода с каналами, а куда что идёт и как синхронизируется вообще не понятно, ты должен всё это держать в голове, но прогрессия сложности системы слишком высокая. По итогу язык учится за две недели, а уверенное использование зелёных потоков за 5 лет. Асинхронность медленнее и течёт наверх, но она сильно проще. Если в обычной многопоточности многим сложно 10 потоков менеджить, то в ГОвне вообще ад.
> Go был создан как раз таки для параллельных вычислений
Нет. Для параллельных вычислений совсем другое используют. Они просто думали что если убрать ограничение на количество потоков, сделав их быстрыми и дешёвыми, то станет лучше и быстрее обрабатывать кучу запросов на бэке. Но как с ними работать никто даже не подумал.
Аноним 01/03/25 Суб 18:39:59 3399784 794
>>3399758
> Тех для которых область памяти выделяется. Первый день с С++ работаешь?
Тебе сколько раз шизойду повторять что это не сишарп и не джава? После компиляци C++ с объектами исчезает и остается процедурная имитация объектов, если бы оно поддерживалось аппаратно плюсы были бы так же безопасны как джава.
Аноним 01/03/25 Суб 18:47:37 3399789 795
>>3399784
Ладно, я тупой признаю, что означает аппаратно не поддерживается?
Аноним 01/03/25 Суб 19:16:14 3399801 796
>>3399766
Спасибо за развернутый ответ.

>сделав их быстрыми и дешёвыми, то станет лучше и быстрее >обрабатывать кучу запросов на бэке. Но как с ними работать >никто даже не подумал.
Я вот сейчас читаю про реализацию потоков в Java и Go. Как я понял в Java раньше тоже были зеленые потоки..
Когда Java плодит потоки они все отображаются в ОС, то есть нагружают планировщик и прочие расходы
В Go решили весь пул потоков держать внутри и самим устанавливать порядок выполнения. Для того чтобы не тратитья на переключение контекста и чтобы лучше синхронизировать их через отправку сообщений вместо shared memory.

Просто если это все сделано для бека, то бишь для I/O bound задач, то насколько я знаю исследования давно уже подтвердили, что асинхронная модель (конечный автомат) эффективней для этих задач. Собственно поэтому и Node.js пошли по пути асинхронщины.
Аноним 01/03/25 Суб 19:21:46 3399802 797
Аноним 01/03/25 Суб 19:36:46 3399808 798
>>3399789
>Ладно, я тупой признаю, что означает аппаратно не >поддерживается?
Он имеет ввиду что после компиляции C++ программа превращается в машинный код и все данные включая локальные переменные (в т.ч. константы) это просто области памяти к которым ты можешь получить доступ через указатели и делать все что хочешь. Поэтому после компиляции единственный способ себя обезопасить, это как-то через аппартные средства (например заносить константы в определенные регистры процессора), чтобы их нельзя было случайно или специально изменить. Но понятно, что таким никто заниматься не будет.
В Java между программой и машинным кодом есть прослойка в виде JVM, которая контролирует это. Ты не можешь просто так взять и изменить константу на стеке или данные в куче.
Аноним 01/03/25 Суб 19:41:58 3399810 799
>>3399808
Получается, что объекты есть и это просто области памяти, также как в Java, только разница в том, что в Java это виртуальная память контролируемая JVM, а в C++ это память контролируемая операционной системы. В общем, тип выше просто грубиян.

А такой вопрос: разве операционная система не ограничивает доступ к конкретным областям памяти только конкретным процессам? Если это так, то получается только сама программа может изменить память в которой лежит константа, например?
Аноним 01/03/25 Суб 20:04:06 3399815 800
>>3399810
запусти любую программу
И посмотри через PID процесса, что тебе выделила система и где:
cat /proc/$pid/maps
все что не readonly (сам код, глобальные константы) все твое. другие процессы сюда доступ не имеют.
область heap это твоя куча куда через new() ты кладешь объекты.
в коде твоей программы у тебя есть только указатель на начало объекта и все.
ты можешь сделать так:
*ptr + 100000 (главное в размер кучи уложиться)
Аноним 01/03/25 Суб 20:06:55 3399817 801
>>3399815
>ptr + 100000 (
(ptr + 10000)
самофикс
Аноним 01/03/25 Суб 20:24:43 3399821 802
Аноним 01/03/25 Суб 20:34:55 3399831 803
>>3399808
я имею в виду что плюсовая объектность играет примерно такую же роль как в расте борроу-чекер - предоставляет программисту безопасную семантику (через ООП) которая исключает большинство ошибок (раст тупо ебалом тычет в зассаное, макакам так привычней и понятнее).

Можно кумекать об объектах в контексте работы программы (так и задумано разработчиками плюсов), но когда разработчик начинает думать не о том как виртуальным функциям и деструкторам в объекте то живется и надо проверить все ли у них хорошо, это уже всё, такого к системной разработке допускать нельзя.
Аноним 01/03/25 Суб 20:45:40 3399834 804
16502027719590.jpg 397Кб, 1615x2048
1615x2048
>>3399815>>3399817
Люди второй десяток лет придумывают как у мартышек ружье отобрать чтоб они в ноги себе и людям не стреляли, из плюсов this спрятали, расто-зиг всякий придумали, а ты берешь и показываешь как зарядить и где предохранитель снимается.
Аноним 02/03/25 Вск 10:31:26 3399974 805
Я правильно понимаю, что стандарт говорит кидать исключение если функция не может выполнить ту задачу для которой предназначена, но при этом не дает инструментов, чтобы указать какие исключения может функция выбросить?

При этом передача ошибки как альтернативное значение (Result, Either из других языков) тоже не поддерживается в std и нужно писать своё?

Это какой-то слон в посудной лавке, который писатели стандарта игнорируют уже 30 лет? В С++ нет нормально сделанного обработчика ошибок?
Аноним 02/03/25 Вск 11:26:08 3400012 806
>>3399974
Нашел, что в 23 стандарте добавили std::exception как аналог Result/Either, но как обычно не без ложки дегтя.

> Happy path
> throw exception = 12ms
> return std::expected = 63ms

> Single threaded the fib code using std::expected is more than four times slower than using traditional exceptions. Of course the overhead is less when the function itself is more expensive, as in the sqrt scenario. Nevertheless the overhead is so high that std::expected is not a good general purpose replacement for traditional exceptions.

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2544r0.html
Аноним 02/03/25 Вск 11:55:11 3400043 807
>>3400012
Пидорас пиздуй изучать Си там все ответы на твои тупые вопросы.
Аноним 02/03/25 Вск 11:59:48 3400050 808
>>3400043
Иди нахуй.

Вот и поговорили.
Аноним 02/03/25 Вск 12:40:32 3400069 809
>>3399974
Чел, кидать ты можешь хоть строку.
>>3400012
> 23 стандарте добавили std::exception
Ты даже буквы читать не умеешь?
Аноним 02/03/25 Вск 13:12:02 3400091 810
>>3400069
А ты проигнорировал цитату и статью, да? Ну, потому что ты увидел очепятку и решил, что именно в ней был смысл сообщения. Умен анон, умен.
Аноним 02/03/25 Вск 13:43:58 3400115 811
>>3400091
Так ты сам не читал, раз не понял почему он медленнее. В расте точно так же Result медленнее его отсутствия, лол.
Аноним 02/03/25 Вск 13:59:15 3400124 812
>>3400115
А где я написал, что не понял почему он медленнее? Я хотел бы, чтобы разработчики языка сделали бы его использование в happy path бесплатным или почти бесплатным. Вместо этого очередная бесполезная фича в стандарте, которая делает код медленнее.

Разработчики стандарта не понимают, что программисты выбирают С++ не из-за "фичей", а потому что С++ способен обеспечить высокую, близкую к потенциально возможной, производительность.
Аноним 02/03/25 Вск 14:33:49 3400154 813
>>3400124
> Я хотел бы, чтобы разработчики языка сделали бы его использование в happy path бесплатным или почти бесплатным. Вместо этого очередная бесполезная фича в стандарте, которая делает код медленнее.
>
>Разработчики стандарта не понимают, что программисты выбирают С++ не из-за "фичей", а потому что С++ способен обеспечить высокую, близкую к потенциально возможной, производительность.
Да ты охуел, пес. Если у тебя есть предложения как это сделать, то пиши в комитет или хотя бы бабками решение этого вопроса пролоббируй.
Аноним 02/03/25 Вск 14:37:22 3400158 814
>>3400124
> Я хотел бы, чтобы разработчики языка сделали бы его использование в happy path бесплатным или почти бесплатным.
А я хотел бы миллион баксов. Заканчивай фантазировать. Тебе написали почему это невозможно.
Аноним 02/03/25 Вск 14:46:46 3400164 815
>>3400154
> Если у тебя есть предложения как это сделать, то пиши в комитет
У меня предложение не выпускать бесполезные для С++ разработчиков фичи в стандартной библиотеке. Никто не будет использовать в 4 раза более медленный std::expected по сравнению с использованием исключений. Что делает всю работу над этой фичей со стороны разработчиков не нужной.

Но не думаю, что кто-то в комитете позитивно воспримет эту мысль ведь тогда нужно будет признать, что руководство комитета некомпететны.
Аноним 02/03/25 Вск 14:53:07 3400168 816
>>3400164
> Никто не будет
В расте же используют все. Это только ты один не такой, пиздишь за всех.
Аноним 02/03/25 Вск 14:57:17 3400171 817
>>3400168
Зачем выбирать С++ как язык разработки если перформанс не критичен? Есть гораздо более удобный для разработки жава, го, питон и так далее.
Аноним 02/03/25 Вск 16:01:05 3400216 818
>>3400171
>задержка в 50мс
> РЯЯЯЯЯЯЯЯЯЯЯ НУ ТЕПЕРЬ НА ПИТОНЕ БУДУ ПИСАТЬ
Ясно.
Аноним 02/03/25 Вск 16:06:12 3400221 819
>>3400216
Лол, 50 мс для моего алгоритма это в 1,5 раза больше чем выделено на обработку одной пачки данных.

Может быть твоя программа действительно может быть переписана на питон и никто не заметит, но это не мой случай.
Аноним 02/03/25 Вск 18:18:33 3400294 820
>>3400221
А может ты хуй будешь?
Аноним 02/03/25 Вск 19:21:30 3400324 821
>>3400221
>Может быть твоя программа действительно может быть переписана на питон и никто не заметит, но это не мой случай.
У тебя проблемы с логикой и пониманием написанного. Ты даже не можешь понять, что тебе написали, но предьявляешь требования к комитету.
Аноним 02/03/25 Вск 19:57:23 3400340 822
Аноним 02/03/25 Вск 19:58:16 3400343 823
>>3400324
Я прекрасно понял, что было написано. То что ты не понимаешь, то что написано это твоя проблема, не рефлексируй её на других.
Аноним 02/03/25 Вск 22:13:51 3400415 824
Считаю, что добавление auto лучшее, что случалось с С++. Согласны, коллеги?
Аноним 03/03/25 Пнд 02:20:56 3400447 825
>>3400415
читать код без IDE становится невозможно, будто на интерпретируемый код смотришь
Аноним 03/03/25 Пнд 02:53:22 3400450 826
>>3400447
Это смотря как использовать. Если пытаться везде запихнуть, то даже ide не помогут. Но если из контекста понятен тип, то просто незаменимая вещь, чтобы длинные типы не писать.
Аноним 03/03/25 Пнд 16:11:25 3400741 827
Изучаю многопоточность.
Чтобы такое распараллелить, чтобы это не было искусственным примером из книг и пособий (аля массив или вектор)?
Для каких целей вы чаще всего используете. Запросы в БД вообще параллелят? (просто у меня пока единственное это в голову приходит).

как бы механика понятна, но вот зачем конкретно мне это надо пока еще нет
буду признателен за любой совет
Аноним 03/03/25 Пнд 16:30:33 3400758 828
>>3400741
>Изучаю многопоточность.
>Чтобы такое распараллелить,
Так тебе нужен просто пример задачи с многопоточностью или какой-то алгоритм, который можно решить через распараллеливание?
Если первое, то попробуй простенькую игру написать, где логирование, рендеринг, физика и ввод пользователя будут в разных потоках. Также попробуй написать вебсервер, который принимает запросы в некоторый пул и обрабатывает их. Сначала можешь сделать в лоб и на каждый запрос выделять по потоку, потом это оптимизируешь, делаешь какой нибудь планировщик и т.д.
Если второе, то в прикладных областях много таких задач, какие нибудь численные методы. N-body, barnes hut algorithm и т.д.
Аноним 03/03/25 Пнд 17:01:35 3400784 829
>>3400741
Две картинки, например 4К, нужно их сравнить, чтобы сказать это две одинаковые картинки попиксельно или нет. В качестве ответа нужно указать какой процент пикселей отличается.

Задача реальная на моей работе если описывать без лишних деталей. Хорошо паралелиться. Have fun.
Аноним 03/03/25 Пнд 17:47:43 3400832 830
>>3400784
Такое на ядрах никто не параллелит, это бессмысленно
Аноним 03/03/25 Пнд 18:16:39 3400858 831
>>3400832
Что предлагаешь если работаем на мобилках и нельзя тащить внешние зависимости?
Аноним 03/03/25 Пнд 18:54:59 3400884 832
>>3400858
Про какие именно зависимости речь? В любом случае картинки хорошо на gpu ложатся, на мобилках как раз зачастую нету SIMD зато GPU практически на любом.
Аноним 03/03/25 Пнд 19:22:16 3400898 833
>>3400884
Да любые по сути. Последний раз у ПМа случилась истерика из-за 120 КБ увеличения размера библиотеки, так что если что-то тащить в проект оно должно быть реально очень мелким.
> GPU
Я уже давно исследовал этот вопрос и могу ошибаться, но там есть серьёзные сложности в плане совместимости GPU мобилок и известных фронтов для того, чтобы алгоритм написанный на С++ запустился на GPU. Опять же вес фронта измеряется мегабайтами поэтому сразу нафиг.

Можно было написать свои шейдеры для opengl, но я попробовал, не получилось, наступил дедлайн и я оставил реализацию на CPU.
Аноним 03/03/25 Пнд 20:17:52 3400927 834
xZkR-UgFoXQ.jpg 184Кб, 1280x960
1280x960
>>3400898
>свои шейдеры для opengl
Ну так да, так и надо, плюсовые библиотеки сделаны что бы не-gpu задачи пытаться переложить на gpu, а изображения их повороты/зеркалки/прочие эффекты это считай типовая задача для шейдеров.
>наступил дедлайн
Так а это был аутсорс что ли? Ну вообще такие низкоуровневые оптимизации в дедлайн не делаются, если задача поставлена как "что-то по быстрому" то максимум обычный цикл с openmp и пошли нахуй.
Аноним 03/03/25 Пнд 20:51:10 3400946 835
>>3400927
Ты что какой аутсоуос мы продуктовая команда! Ты не смотри, что в бэклоге 130 задач только на тебя одного, релизы каждые две недели и на любой чих заказчиков мы бежим впендюривать новые "фичи" с дедлайнами в те самые две недели.

Вообще поэтому и забил. Остальные разрабы также забили. Выпустили в итоге не то, что на самом деле было надо из-за проблем с производительностью, но всем было пофиг, как обычно. Количество фичей, которые нужны ещё вчера, а потом никем не используется уже давно превысило все разумные отметки.
Аноним 04/03/25 Втр 02:11:38 3401073 836
Аноним 04/03/25 Втр 02:16:00 3401074 837
>>3400832
>Такое на ядрах никто не параллелит, это бессмысленно
почему бессмысленно? и именно на ядрах не могу понять.
ну да будет медленней чем на GPU
это все через OpenCL делается?
Аноним 04/03/25 Втр 04:14:14 3401092 838
>Бьёрн Страуструп призвал стандартизировать профили C++ для безопасной работы с памятью
https://www.opennet.ru/opennews/art.shtml?num=62821

Во-первых, поздравляю растаманов - вы напугали деда
Во-вторых, прошу мнений: будет ли толк от этой суеты? Сам я желаю Бьёрну удачи, но комитет надо годами тормошить, чтобы хоть что-то изменилось. Да и сами гайдлайны ЕМНИП не дают гарантий, только подсвечивают грабли.
Аноним 04/03/25 Втр 07:23:14 3401120 839
>>3401092
Да будет конечно почему нет. Тем кому безопасность важнее производительности смогут теперь и на С++ писать. Если Бьёрн прав и всё и так уже готово для этого в стандарте, то тем более почему нет.
Аноним 04/03/25 Втр 08:41:16 3401145 840
>>3401074
Я имел в виду ручное распараллеливание в коде, которое вроде как нужно для тренировки. Результатом будет перемудреный код который не стоил потраченного на него времени, лучше использовать предназначенный для этого инструмент:
#pragma omp parallel for
for (y=0; y < height;y++)
for (x=0; x < width;x++)
{...}

Я вот только не знаю OpenMP прокачкой данных в кэш тоже занимается, если нет то лучше потратить время на это. и на упихивание данных в simd
Аноним 04/03/25 Втр 09:22:31 3401164 841
>>3401092
Олды явно эту хуйню не поймут. Если посмотреть на олдов, то все возвращаются к процедурному стилю через 20+ лет. Отказываются от жесткого разбивания кода на искусственные блоки как учил ООП, отказываются от RAII из-за его дороговизны.
Аноним 04/03/25 Втр 09:25:06 3401166 842
>>3401164
Так все новые "фичи" С++ опциональны и эта тоже. Олды не поймут. ANB или кто там требует писать на безопасных языках поймут.
Аноним 04/03/25 Втр 09:44:00 3401176 843
>>3401166
> ANB
Agentstvo Natsionalnoy Bezopasnosti SShA?
Аноним 04/03/25 Втр 09:59:26 3401185 844
Аноним 04/03/25 Втр 11:14:13 3401256 845
Помоги мне, Оби Ван Кеноби, ты наша единственная надежда.
Есть класс "порт". У него есть std::any данные и отдельно метка, какого же типа там данные. Порт может соединяться с другими портами своего типа; соединившись, может передавать им свои данные.
Есть класс "нода". Это общий предок для всяких разных нод. Разные ноды между собой различаются разным набором портов и тем, что они с этими данными внутри себя делают. Я не придумал ничего лучше, чем прямо в конструкторах прописывать создание портов. И (вдруг это важно) у базового класса ноды есть функции-шаблоны read_port и write_port.
Ну и наконец, есть фабрика нод, чтобы можно было командами вида NodeFactory::create_node("имя_класса") создавать ноды любого типа. Соответственно, в этой фабрике есть ассоциативный массив, где индексы это стринги, а значения это указатели на создающие функции. В создающих функциях тупо делается new CLASS_NAME.
Регистрацию типов запихал в макрос, макрос вставляю в концах заголовочных файлов, описывающих ноды.

Ну и в общем проблема. Как я ни крутил-вертел всю эту конструкцию, всё равно на этапе линковки все указатели на функции-создатели в фабрике превращаются в тыквы, и компилятор ругается на неопределённые ссылки. Предположительно из-за new, потому что дальше надо создавать инстанс и вызывать конструктор, но это не точно.

Я пятый день с этой проблемой бьюсь, уж весь код с нуля переписал (его там не так уж много), но так и не смог победить эти неопределённые ссылки. Всё это время активно пинаю и нейронки, и живого товарища (но товарищ сишник, в плюсах не сильно больше моего разбирается) - безрезультатно. Так что, анон, вся надежда на тебя.
Аноним 04/03/25 Втр 11:25:02 3401270 846
1712770232211.png 212Кб, 970x1364
970x1364
Аноним 04/03/25 Втр 12:06:25 3401328 847
>>3401270
Ни че что для этого наследование придумали?
Не хуйня какая то непонятная будем долбиться в препроцессор и поинтеры
Аноним 04/03/25 Втр 12:46:58 3401375 848
>>3401270
Ты серьёзно думаешь, что после "пятый день пинаю нейронки" ты с одного промта возьмёшь да и найдёшь решение? Всё с твоей картинки уже либо попробовал, либо изначально так и сделал.
Так что уноси своё нейоговно. Тут нужна помощь опытного анона, имеющего опыт написания подобного.
Аноним 04/03/25 Втр 14:08:24 3401508 849
>>3401375
> макрос вставляю в концах заголовочных файлов
> компилятор ругается на неопределённые ссылки
> уже либо попробовал, либо изначально так и сделал
Какой же ты тупой.
Аноним 04/03/25 Втр 14:49:55 3401549 850
>>3400340
>Foo(int s)
vs
>template<typename T, std::size_t Size>
Еще одна дебка высралась.

Плюсоуебища все еще пишут fillMyArrayBestFunction.
Шел 25 год.
Аноним 04/03/25 Втр 14:54:11 3401553 851
HAHAHAHAno.jpeg 27Кб, 494x584
494x584
>>3401120
>и всё и так уже готово для этого в стандарте
В том стандарте, который поддерживает легаси из прошлого века и будет его поддерживать до тепловой смерти вселенной?
Аноним 04/03/25 Втр 15:03:10 3401563 852
>>3401164
Как я понял, политика Бьёрна в том, чтобы загнать олдов под шконки в их легаси проекты, а ньюфагам подать только разумное, доброе, вечное в виде последних "безопасных" фич языка.
Только я вот не понимаю, как обьяснять ньюфагу-нулёвке те же умные указатели, избегая темы "указатели". Это как стелить крышу без фундамента.
Аноним 04/03/25 Втр 15:04:27 3401567 853
>>3401508
Нет ты
На концы цппшников этот макрос я переносил. Не помогло. На момент написания поста выше уже забыл, где именно этот макрос у меня сейчас; только что перепроверил - он в цппшнике.

И так со всеми пунктами. Менял из во всех возможных вариантах.
Аноним 04/03/25 Втр 15:57:48 3401596 854
>>3401256
>Есть класс "порт".
Если проект учебный, то class Port<Data>, учебник в руки и вперёд. Прям хрестоматийный пример. Если в прод, то надёжнее class IntPort::Port, class FloatPort::Port... и туча одинаковых функций. Так или иначе, "соединяться с другими портами своего типа" по-хорошему проверяет компилятор, а не if в твоих методах. Move semantics тоже повтори, пригодится.
>прямо в конструкторах прописывать создание портов
Для того они и нужны, лол. И в целом ноды вроде приличные.
>функции-шаблоны read_port и write_port
Звучит как обход инкапсуляции. По хорошему пишут node.store(my_shit), а в какие порты нода что положит - не твоё собачье дело, вызывающий метод.
>есть фабрика нод
В которой ты переизобретаешь полиморфизм, структуры и конструкторы. Не надо так. Ладно бы городить их где-нибудь в джаве с рантаймом и нормальной интроспекцией. А на плюсах приличная фабрика - это гигабайты бойлерплейта, реально нужные 3.5 проектам. Будь проще. Не create_node("имя_класса"), а ClassName node(); не массив указателей на функции, а конструкторы у полей, желательно дефолтные; не макрос с типами, а поля класса а-ля GenericPort и FloatPort в инстансах (здравствуй, полиморфизм). Не отбирай у компилятора его работу по выбору конструкторов. Разберись с системой типов, набросай архитектуру и реализуй её так, как задумывали создатели языка.
И нахуй жпт, качай свою бионейронку.
Аноним 04/03/25 Втр 16:25:59 3401625 855
>>3401256
>всё равно на этапе линковки все указатели на функции-создатели в фабрике превращаются в тыквы, и компилятор ругается на неопределённые ссылки
Убедись, что статические объекты правильно создаются - не глобальная переменная, а функция (статический метод), которая возвращает определенную внутри нее статическую переменную. В таком случае будет правильный порядок инициализации.
Проблема в том, что если это все обернуто в статическую либу, такие функции линкер может удалить как мертвый код. Поэтому в cmake, надо добавить параметр "$<LINK_LIBRARY:WHOLE_ARCHIVE,libname>" (или нужный параметр для конкретного линкера).
Аноним 04/03/25 Втр 16:31:45 3401630 856
>>3401625
Т.е. это должно выглядеть как-то так:

// .h

extern MyClass⚹ my_class;

// .cpp

MyClass⚹ my_class_instance() {
static MyClass mc;
return &mc;
}

MyClass⚹ my_class = my_class_instance();
Аноним 04/03/25 Втр 16:50:10 3401645 857
>>3401596
О, анонче, от души спасибо за конструктивную критику.
>Если проект учебный
И да, и нет. Я делаю проект для себя, плюсы осваиваю с декабря, но на всяком скриптоговне кодю уже лет много. Но нацелен его допилить до конца, благо объём работы там совершенно детский, а штуковина для меня очень нужная.
>"соединяться с другими портами своего типа" по-хорошему проверяет компилятор
Нет, это должен делать мой if, и вот почему. Команда на соединение поступает от пользователя, и если типы не совпадают, то должен быть не краш, а просто ответ "не могу соединиться".
>Не create_node("имя_класса"), а ClassName node()
Опять же, поскольку команда на создание ноды поступает от пользователя, то фабрика просто выругается на несуществующее имя, и всё.
>Звучит как обход инкапсуляции.
Нет, это чисто для удобства. Эти функции вообще у меня лежат в протектеде. Собсно для чего ноды нужны: они берут данные их входных портов, что-то с ними делают и складывают в выходные порты.
Просто int a = read_port<int>(0) - это самый читаемый вариант из доступных.

Вообще, вся эта конструкция пишется сначала в виде консольной реализации, а потом я её прикручу к какой-нибудь гуйне со скриптингом (пока что целюсь на Годот, но это не игра, просто с данным движком уже несколько лет знаком, и там супер удобно делать гуи, собенно такие вот с графом соединений; да и менеджмент нод проще делать на скриптовом языке).

>И нахуй жпт, качай свою бионейронку.
Абсолютли. Весь код пишу сам. Нейронкой пользуюсь исключительно как собеседником, которому не стыдно задавать тупые вопросы по темам, которые не до конца понимаю. Одна из мотиваций заниматься программированием для меня - это прокачка мозгов. Ну, профилактика альцгеймера, как минимум.

>>3401625
Да, эту тему тоже с нейронкой обсуждали. Я попробовал два варианта. И со статической функцией в глобальном пространстве. И с безымянным неймспейсом, внутри которого самоинициализирующаяся структура. Проблема не здесь.

По последней версии всё дело в том, что:
1. В фабрике функция, создающая ноды, [по сути] делает просто return new CLASS_NAME().
2. В самих нодах в конструкторе происходит add_port(блабла)
3. Ну а в add_port, соответственно, происходит new Port
И сами указатели на порты были в виде сырых указателей. И хранились в сыром массиве.
Щас переписываю это всё на умные указатели и умные массивы. И есть надежда на один их двух сценариев:
а) Это всё починит
б) Проблема переедет из линковки в компиляцию, и с этим уже можно работать.
Аноним 04/03/25 Втр 18:08:11 3401683 858
image.png 364Кб, 400x400
400x400
>>3401645
>на всяком скриптоговне кодю уже лет много
Ух... ну добро пожаловать хуле. Мы тут разделяем compile-time и runtime, даже не представляю сколько привычно-очевидных вещей тебе придётся поломать.
>Команда на соединение поступает от пользователя
Тогда твой if, да. Но через dynamic_cast хотя бы.
>команда на создание ноды поступает от пользователя
Ты что, заставишь пользователя учить имена твоих классов? Прям подтираешься инкапсуляцией. Switch-case с удобными для юзера строками, обычными конструкторами в ветках и default чтобы ругаться на неизвестные имена.
Ах да, плюсы не признают строки в switch, их придётся мапать в словаре к int или enum. Неудобно, но не смертельно.
>функции вообще у меня лежат в протектеде
Ну допустим
>умные указатели и умные массивы
Годно. УКазывай на класс предка, клади в массивы через std::move и может быть даже от new избавишься. В современном C++ подход такой.
>спойлер
То-то у меня дежавю. Для первого или даже пятого плюсового проекта ИМХО широковато замахнулся, именно из-за статического/динамического выведения типов. Такая система нод в теории очень хорошо ляжет на плюсовые шаблоны если знать их на 5+, иначе ад. Ну и приёмчики попроще тоже можно задействовать конечно.
Желание сделать реюзабельную библиотеку и потом прикручивать гуйню - очень похвально. Будет шанс отработать лучшие практики и прочувствовать, что бывает, когда их не соблюдаешь. Попутного ветра.
Аноним 04/03/25 Втр 19:20:25 3401731 859
>>3401683
>Ты что, заставишь пользователя учить имена твоих классов?
Нет, конечно. Пользователь будет видеть красивенькие интуитивно понятные названия; но где-то в скриптах будет словарь, связывающий эти названия с именами классов. Ну а в консольной версии можно и именами классов обойтись, они достаточно понятные. Плюс, список нод будет со времнем расширяться, и очень желательно иметь возможность делать это по принципу "одна нода = один файл" (ну ладно, пара h/cpp), а не лазить каждый раз ковыряться в свич-кейсах.
>даже не представляю сколько привычно-очевидных вещей тебе придётся поломать.
Тащемта не так уж и ломает. Некоторые вещи (такие как строгая типизация) даже удобнее и очевиднее. Шаблоны в связке с std::any так вообще полностью закрывают ситуации, когда в скриптоговне пришлось бы заюзать гибкую типизацию. Только синтаксис лямбда-функций подбешивает немного.
>Такая система нод в теории очень хорошо ляжет на плюсовые шаблоны
Шаблонами у меня сделаны функции read_port и write_port. Те самые, которые протектед. Те самые, которые протектед.

Переписал на умные указатели. Ничего не поменялось. Где-то я с фабрикой накосячил, проверено методом отрезания лишних кусков кода. Ну, тут круг поисков сузился уже настолько, что дальше сам разберусь. Там всей фабрики - строчек 20-30.
Вот так вот.
Аноним 05/03/25 Срд 00:41:33 3401888 860
>>3400758
>простенькую игру написать, где логирование, рендеринг, физика и >ввод пользователя будут в разных потоках.
блин ну ради этого писать игру с графикой как то перебор...
там OpenGL надо подключать и все такое.
Аноним 05/03/25 Срд 02:19:26 3401891 861
>>3401145
>Я имел в виду ручное распараллеливание в коде, которое вроде >как нужно для тренировки.
хм, интересно.
А зачем тогда нужны эти Треды?
Для зеленых потоков?, но как я понимаю это зашквар перекладывать I/O в отдельный поток (в нормальных языках).
И epoll + callback для этих целей лучше.

P.S.
я тот анон, который просил задание на многопоточность.
Хочу написать что-то высоко CPU-bound нагруженное, смотреть через htop как оно скачает по ядрам и машина гудит, как память (полоска) начинает краснеть, ну и прочие "плюшки".
Затем усложнять, оптимизаировать, ну и перенести все это на GPU используя шейдеры.
В итоге я начал делать попиксельное сравнение двух картинок (для начала).
чатГпт мне выдал решение через OpenCV (почитал, интересно, но в МЛ мне пока рановато). сейчас openMP читаю.
Аноним 05/03/25 Срд 05:13:34 3401912 862
>>3401888
>блин ну ради этого писать игру с графикой как то перебор...
>там OpenGL надо подключать и все такое.
Так тебя никто же не просит аналог ГТА5 делать. Просто кубы по поверхностям погоняй, прыжок сделай. Любо же рогалик на основе двумерного массива сделай, там еще легче визуализировать. Если с OpenGL не хочешь возиться, то raylib возьми.
Аноним 05/03/25 Срд 09:27:53 3401972 863
>>3401891
Не советую использовать OpenMP для образования. Задача же не выполнить задачу как таковую, а разобраться в том как работает многопоточка. Поэтому лучше использовать мьютексы и сырые треды, чтобы понимать как оно работает на низком уровне.

Btw, когда решишь задачу с картинками, предлагаю решить её усложненную форму. Опять же из продакшена. Иногда нам не важен какой процент пикселей отличается между двумя картинками. Иногда нам нужно знать только если это количество пикселей больше N.

То есть вместо того, чтобы разбивать картинку на M подкартинок и ждать пока каждая из них будет полностью обработана мы вводим общий для всех тредов участок памяти 'int different_pixel_count', который обновляется в реальном времени несколькими тредами одновременно.

Когда different_pixel_count > N мы должны прекратить работу всех тредов и вернуть результат пользователю в виде ответа true/false.

Узнаешь как синхронизировать память между тредами. Померишь латенси и узнаешь, что синхронизация памяти не бесплатна (память должна быть положена в общую для всех тредов память, то есть хранить её в кэше процессора больше нельзя потому что кэш процессора виден только одному процессору, а не всем сразу) и что обновлять значение different_pixel_count на каждый обработанный пиксель это плохая идея. После чего придешь к выводу, что если можно избежать синхронизации памяти, то нужно её избегать.
Аноним 05/03/25 Срд 12:27:30 3402087 864
>>3401972
>Не советую использовать OpenMP для образования
>ранить её в кэше процессора больше нельзя потому что кэш процессора виден только одному процессору,

Толку от твоего "образования" если результат отрицательный? Вы высираете дырявый говнокод потом его растаскивают студенты/джуны по своим жидхабам и это говно неконтролируемо распространяется и дальше. Надо идти от малого к сложному, сначала библиотекой учиться пользоваться, далее по необходимости.

Нахуя через жопу то пытаться все постичь, токарь не разбирает станок чтоб научиться детали точить.
Аноним 05/03/25 Срд 14:51:27 3402229 865
>>3401972
спасибо Антоша, это то, что я и хотел
>Иногда нам нужно знать только если это количество пикселей >больше N
зачем вообще это надо? ну или знать процент отличия например
Аноним 05/03/25 Срд 15:01:00 3402240 866
>>3402087
ну ты не прав практически во всех тезисах.
я вот виртуальные функции понимал через:
простенькие примеры + objdump
сразу все стало ясно как божий день.
Потратил может пол дня, но зато не читал все эти статьи - "Есть класс Animal. Есть класс наследник Cat..." и прочую максимально абстрактную дичь.
Аноним 05/03/25 Срд 15:15:26 3402254 867
>>3402229
Например, есть видеопоток с камеры (мобилка) и мы ожидаем, что он будет в 30 фпс.

Считаем сколько кадров нам приходит и там действительно в среднем 25-30 кадров в 1 секунде. Мы помечаем эту сессию как валидную и данные идут дальше по пайплайну в ML модели, постпроцессоры и так далее.

Спустя время прибегает заказчик и говорит: вы мне обещали, что видео будет в 30 кадрах, а мои ребята отправили вам видео в 3 фпс и ваша либа этого даже не поняла.

Мы пошли разбираться и обнаружили, что видео действительно 30 фпс, вот только каждые 10 кадров это тупо копия одного и того же фрейма.

ML модели на этих данных ломаются, постпроцессы выдают инвалидной данные, надо как-то фильтровать такие приколы.

Оставим за скобки насколько вероятны такие данные на входе если специально не ломать решение. Главное, что заказчик поломал и хочет чтобы оно больше не ломалось.

Также нужно отметить, что именно видео нам не доступно. Нам доступны только фреймы которые прилетают с камеры в реалтайме. Получается нужен алгоритм, который бы в реальном времени находил "движение" между кадрами, какое-то минимальное изменение в освещении, цвете и так далее.

Самое очевидное решение это взять два фрейма и их сравнить между собой. Если разных пикселей меньше N процентов, то помечаем фреймы как подозрительные.

Дальше вступает в дело статистика, чтобы отличить просто неподвижное видео от видео с кучей одинаковых кадров.

Ну вот, это с некоторыми упрощениями и недосказанностями реальное применение алгоритма нахождения N разных пикселей картиное за несколько миллисекунд, чтобы успеть пока не прилетел следующий кадр.
Аноним 05/03/25 Срд 15:19:37 3402262 868
>>3402240
И что ты понял глядя в objdump?
Аноним 05/03/25 Срд 16:32:47 3402342 869
>>3402262
ну что просто компилятор во все объекты-наследники изначально заносит указатель на первую определенную "по иерархии функцию". Например базового класса.
Затем если класс наследник переопределяет эту функцию, то меняет этот указатель, если нет то оставляет (там они в табличке лежат)
ну и вызов этой функции происходит не через:
call 0x1aa4ff --> статическая привязка
а вызывает косвенно в рантайм:
read(mov) -- from VTABLE table --> R1 (получили адрес)
call %R1(вызываем)
ну в целом всё максимально просто, но зато стали понятней некоторые высокоуровневые конструкции языка и ошибки с ними связанные. Опять же я это все изучал когда вкатывался, сейчас уже все это кажется очевидным, но тогда нет.
Аноним 05/03/25 Срд 16:34:45 3402349 870
>>3402254
>Если разных пикселей меньше N процентов, то помечаем фреймы >как подозрительные.
дальше я так понимаю вступают в работы ML алгоритмы.
спасибо интересно, я как разу после этого буду OpenCV изучать
Аноним 05/03/25 Срд 17:33:26 3402396 871
>>3402342
Компилятор ничего не создает и ничего не вызывает, но это опустим. Ну вот ты увидел что виртуальная функция это тупо указатель на функцию как в сишке (удивительно, кто бы мог подумать) и какие выводы ты из этого сделал, то есть что конкретно ты понял про виртуальные функции?
Аноним 05/03/25 Срд 22:38:14 3402581 872
>>3397484
Под любую помойку в которой не должно быть повторений (очевидно же). Ну например обходишь сложную графовую структуру данных и сохраняешь указатели определенных узлов в сет. В целом полезно для любых структур в которых есть шаринг данных. У нас часто в тестах применяется для подсчета. Всякие уникальные итераторы могут быть на этом основаны.
Аноним 06/03/25 Чтв 00:51:53 3402623 873
Я считаю, что C++ пора на пенсию. И что вы мне сделаете!?
Аноним 06/03/25 Чтв 01:06:34 3402625 874
1696207371193.mp4 817Кб, 434x266, 00:00:11
434x266
Аноним 06/03/25 Чтв 01:15:55 3402627 875
>>3402396
>Компилятор ничего не создает и ничего не вызывает,
и создает и вызывает, но не в рантайм конечно же
>Ну вот ты увидел что виртуальная функция это тупо указатель на >функцию
где ты это прочитал?
>то есть что конкретно ты понял про виртуальные функции?
что в случае если класс содержит виртуальные методы. то сам объект в памяти видоизменяется. вначале объекта будет указатель
на таблицу с адресами виртуальных функций этого класса. берем его, идем в таблицу ну и далее по смещению берем адрес конретной реализации метода, ну и далее
ну пляты понимаешь разницу между прямым и косвенным вызовом функции? просто я как будто об стенку бьюсь)
Аноним 06/03/25 Чтв 07:53:44 3402681 876
>>3402623
Альтернативы всё равно нет. Есть раст, но он не взлетел.
Аноним 06/03/25 Чтв 10:22:15 3402756 877
>>3402627
Ты не пересказывай своими словами то что увидел в ассемблере, ты по языку (плюсам) расскажи что нового узнал.

Ну и раз уж залез в станок с претензией на что-то там понять, поделись выводами как писать эффективнее.
Аноним 06/03/25 Чтв 14:17:39 3402940 878
Аноним 06/03/25 Чтв 14:35:02 3402962 879
>>3402940
Пока ещё нет нихуя. Как будет компилятор, так и приходи. Знаю какой Гугл говнодел, получится очередное говно, зато модное-молодёжное.
Аноним 08/03/25 Суб 09:12:44 3404169 880
Screenshot20250[...].png 23Кб, 514x274
514x274
Как правильно добавлять библиотеки в проект, для которых нет cmake файла? Например, чисто сишные библиотеки. Я зделал это как на скрине, но чувствую, что это неправильно.
Аноним 08/03/25 Суб 09:13:26 3404170 881
Аноним 08/03/25 Суб 09:20:50 3404173 882
>>3404169
Алсо, хочу написать свою криптобиблиотеку для цифровой подписи на основе спаривания точек эллиптической кривой. Для вычислений взял библиотеку gmp. Как вообще в целом организовать проект, как управлять зависимостями, как делать поставку билдов? Как спроектировать апи для использования этой библиотеки в каких-нибудь других проектах?
Аноним 08/03/25 Суб 10:15:57 3404205 883
>>3404169
Создавать симейк-файл для этой либы с add_library и потом использовать его как либу симейка через add_subdirectory.
Аноним 08/03/25 Суб 10:35:40 3404213 884
>>3404173
> Как вообще в целом организовать проект
Добавить cland tidy. Включить все проверки. Выключать проверки по ходу разработки, в которых разобрался и уверен, что они не нужны.

Смотри видосы по архитектуре проекта. У тебя компонентный монолит. Компоненты лежат в отдельных поддиректориях внутри src. Каждый компонент имеет свой namespace, разделение на публичный апи, приватный апи и тесты публичного апи. Публичный апи компонента не значит, что его видит интегратор библиотеки. Это значит, что другой компонент через этот публичный апи может использовать компонент. Публичный апи самой либы это отдельная история.
> как управлять зависимостями
Вопрос-грааль С++. В идеале держать исходники в проекте в отдельной папке external и собирать из них нужные зависимости.
> как делать поставку билдов?
Исходниками, инструкцией как собрать и непосредственно библиотекой собранной под самые популярные платформы.
> Как спроектировать апи для использования этой библиотеки в каких-нибудь других проектах?
Хорошее публичное апи это минимальное количество методов и аргументов, которое нужно знать, чтобы решить проблему для которой создано апи. Впихивать кучу функционала, о которой никто не просил это прямой путь к тому, что не сможешь поддерживать проект. Если сможешь сделать весь апи из одной функции без аргументов будешь красавчиком. Btw, это невозможно если что, но к этому хорошо стремится.
Аноним 08/03/25 Суб 11:38:12 3404246 885
Нужно писать новый проект и хотел на плюсах его писать, но что-то в последнее время часто натыкаюсь на статьи, что все проблемы в мире из-за того, что С++ не memory safe. Из-за чего появился вопрос почему Rust не взлетел? И верите ли вы в Carbon от гугла?
Аноним 08/03/25 Суб 11:44:18 3404252 886
>>3404246
Меньше интернета читай, а больше кода пиши
Аноним 08/03/25 Суб 12:34:26 3404293 887
А почему при компиляции проекта с использованием библиотеки gmp размер исполняемого файла получается маленьким? Около 30 кб в дебаг сборке и 15 в релизе. Заглянул внутрь libgmp.a - там внутри множество маленьких объектников размером от 500 б до 1500 б примерно. Получается, что вся библиотека разбита на маленькие .c файлы с алгоритмами, каждый алгоритм компилируется в свой объектный файл и потом при использовании каждой функции из gmp.h линкуется только нужный объектник, а не вся большая либа целиком?
Аноним 08/03/25 Суб 13:03:56 3404326 888
>>3404293
Да, всё правильно понял
Аноним 08/03/25 Суб 14:18:45 3404416 889
>>3404169

set(OPENCV_LIB_DIR /home/sigma-boy/openCV/build/lib/)

add_executable(2picters main.cpp)

target_link_directories(my_sigma_proj PUBLIC "/home/sigma-boy/openCV/build/bin/")
target_include_directories(my_sigma_proj
PRIVATE
/home/sigma-boy/openCV/build/opencv2
/home/sigma-boy/openCV/build/
/home/sigma-boyopenCV/opencv-4.x/modules/
/home/sigma-boy/openCV/opencv-4.x/modules/core/include/
...
)

target_link_directories(my_sigma_proj PUBLIC "${OPENCV_LIB_DIR}")
target_link_libraries(my_sigma_proj libopencv_core.so libopencv_imgcodecs.so libopencv_photo.so)
Аноним 08/03/25 Суб 15:22:34 3404439 890
назови хотя бы одну причину почему ты до сих пор используешь CLion?

почему Cmake такое говно и есть ли альтернативы?
Аноним 08/03/25 Суб 16:41:52 3404487 891
не могу понять:
class A {
public:
static vector<int> foo(...)
{
vector<int> vec_foo; объект содержит данные в куче
vec.emplace_back(1);
vec.emplace_back(2);
return vec_foo;; вызовется деструктор??
}
};

int main()
{
vector<int> vec;
vec = A::foo(); присваивание перемещением?

for(auto i: vec){ cout << i << endl; → [1, 2]}}

у нас же по идее после возврата в функцию main, вызовется деструктор объекта vec_foo и данные в куче сотрутся, но тем не менее мы в функции foo можем получить к ним доступ...
Аноним 08/03/25 Суб 17:55:15 3404530 892
>>3404439
> назови хотя бы одну причину почему ты до сих пор используешь CLion?
Потому что я использую и остальные продукты жетбрейнс. Лень учиться работать на новой иде.
> почему Cmake такое говно и есть ли альтернативы?
Альтернативы есть. Он не говно.
Аноним 08/03/25 Суб 18:01:09 3404533 893
>>3404487
Ты копируешь вектор потому что при возвращении из функции. Компилятор может это дело оптимизировать и вместо копирования подставить объект (гугли RVO). Если не хочешь копировать вектор, то возвращай на него указатель, а не сам объект.
Аноним 08/03/25 Суб 19:59:23 3404610 894
>>3404439
Я неиронично ещё Rider использую, там божественный msbuild, хотя фич для крестов чуть поменьше чем в CLion.
А альтернатив нет. Студия устаревшая и за 5 лет никакого развития, ещё с недавних пор на больших проектах какое-то говно началось когда интерфейс начинает рендерится в 1 фпс и она бесконечно одно ядро в 100% долбит.
Вскод вообще калище, худший экстеншен для языков там именно крестовый. Алсо, им настолько похуй, что поддержку msbuild лень завести, при том что JetBrains уже давно справились с этим у себя.
Аноним 08/03/25 Суб 20:53:49 3404651 895
>>3404487
как ты заебал шизойд, прочитай уже стандарт.
Аноним 08/03/25 Суб 21:21:17 3404669 896
butirkathebest.[...].jpg 22Кб, 840x521
840x521
>>3404651
ой неуч, ну ты тоже зае
скажи еще что ты знал вопрос на этот ответ
Аноним 08/03/25 Суб 21:30:15 3404679 897
>>3404610
я для всего от С до TS VScode юзаю.
тут скорее дело привычки.
Clion для С++ только из-за статического анализатора.
Но после шустрого и удобного полуконструктора vscode, работать в Clion конечно не очень.
Аноним 08/03/25 Суб 21:50:48 3404695 898
>>3404669
да ты заебал со своими деструкторами, никакая память деструкторами не очищается и никакой объект нигде в памяти не создается, отключи нейросети и включи голову уже, пидорас. Или просто съеби с треда.
Аноним 08/03/25 Суб 22:25:45 3404721 899
>>3404679
> шустрого
И забагованного. В проекте больше 100 файлов подсветка синтаксиса отваливается каждые 10 минут.
Аноним 09/03/25 Вск 11:01:07 3404908 900
>>3402254
>Самое очевидное решение это взять два фрейма и их сравнить между собой
А нельзя вычесть один фрейм из другого, а не сравнивать?
Аноним 09/03/25 Вск 11:05:14 3404911 901
>>3404908
Чтобы потом сравнить результат с нулём? Это ты здорово придумал.
Аноним 09/03/25 Вск 11:08:34 3404914 902
>>3401563
>ньюфагам
>c++
Я понимаю, что это тупой вопрос. Но вот я в жизни (вне работы) кого только не встречаю: мльщиков, питонистов (много), девопсов (много), джаваскиптеров - но никогда не всетрчаю плюсовиков. Т.е. если на условном дне рождении чела среди гостей будет айтишник, он будет кем угодно, но не сишником или плюсовиком. ПОчему так?
Аноним 09/03/25 Вск 11:11:02 3404916 903
>>3404914
Потому что ты пидорас и общаешься только с такими же джавапидорами. Это лишь показывает твой круг общения и кто ты есть.
Аноним 09/03/25 Вск 11:23:26 3404926 904
>>3404908
Хм, так это одно и тоже, нет? Сравнить два фрейма это взять RGB пикселя из фрейма 1 и взять абсолютную разницу с RGB пикселем из фрейма. Повторить для всех пикселей.
Аноним 09/03/25 Вск 11:24:54 3404927 905
>>3404914
Не знаю, у меня достаточно много знакомых плюсовиков.
Аноним 09/03/25 Вск 14:09:21 3405024 906
Анон, подскажи. У меня проект с cmake. Структуры каталогов такая:
src/lib
src/test

lib - библиотека, для которой хочу написать тесты. Как в каталоге src/test подключить библиотеку src/lib вместе с хедерами и бинарником из src/lib?
Аноним 09/03/25 Вск 14:15:20 3405032 907
>>3405024
вынести lib на верхний уровень
Аноним 09/03/25 Вск 16:15:21 3405104 908
бутырка2.jpg 19Кб, 474x422
474x422
>>3404914
>но никогда не всетрчаю плюсовиков.
разный тип мышления, разные касты в ментальном плане.
Я когда вкатывался начал с питона. Пишу код и думаю "Я ведь вообще не понимаю, что там внутри, как это все работает".
И меня это не устраивало.
В итоге мой путь начался с pn-переходов, JK-триггеров, аssembler, C (благо это все надо было только повторить), затем только C++, python.
Я еще в универе замечал, что кому-то достаточно U=IR, а мне мало было. я колупал эм поля, волны. почему так, а не так.
По факту нужны и поверхностные кодеры, и те кто лезет вглубь.
Это не вопрос, кто лучше, кто хуже - у каждого подхода свои плюсы и минусы.
Аноним 09/03/25 Вск 18:38:05 3405240 909
image.png 134Кб, 732x603
732x603
image.png 129Кб, 814x613
814x613
>>3404926
>так это одно и тоже, нет?
Ну на уровне инструкций процессора и результата, который ты имеешь после исполнения инструкции - нет. После сравнения у тебя нет скалярной величины этого различия, а при вычитании - есть. А скалярная оценка очень важна, т.к. у тебя реальный мир может быть неподвижен, но какие-нибудь флукиуации на сенсоре камеры будут давать разные величину байтиков на выходе. Так что скалярная оценка база
Аноним 09/03/25 Вск 18:40:13 3405244 910
image.png 36Кб, 722x212
722x212
image.png 33Кб, 763x161
763x161
Аноним 09/03/25 Вск 18:41:28 3405247 911
>>3404911
>Чтобы потом сравнить результат с нулём? Это ты здорово придумал.
Раскрой своы мысль гениальную. Вижу, ты иксперд в компвижн
Аноним 09/03/25 Вск 18:41:49 3405250 912
Аноним 09/03/25 Вск 18:52:14 3405270 913
>>3405240
О, прикольно, вернусь домой почитаю
Аноним 09/03/25 Вск 18:55:39 3405277 914
Мартышки и simd.
Аноним 09/03/25 Вск 18:56:36 3405279 915
>>3405270
Да там читать нехуй, только как баловство. Зачем тебе ассэмблер, когда есть opencv и ещё всякое
Аноним 09/03/25 Вск 19:09:29 3405307 916
Аноним 10/03/25 Пнд 09:18:12 3405642 917
Аноним 10/03/25 Пнд 09:24:43 3405646 918
>>3405642
Это тот макака-фронтендер, который оправдывался что платформа говно, а не его код и он вынужден писать нечитаемую кашу?
Аноним 10/03/25 Пнд 09:37:32 3405653 919
>>3405646
Мне тоже его определение "хорошего кода" не нравится. Он каким-то образом способен читать кашу из символов и писать такую же кашу, но я не понимаю зачем так издеваться над остальными разработчиками.
Аноним 10/03/25 Пнд 10:46:06 3405710 920
>>3405646
> который оправдывался что платформа говно, а не его код и он вынужден писать нечитаемую кашу
впервые слышу, ты про что? и что за платформа
Аноним 10/03/25 Пнд 13:20:01 3405845 921
>>3405710
Ну он рассказывал что под смарт-тв ему приходилось кодить интерфейсы, типа платформа неудобная, поэтому и претензии к говнокоду не считаются.
Аноним 10/03/25 Пнд 17:31:59 3406027 922
Господа, какими знаниями сегодня должен обладать джун?
Расскажите о своих историях вката. Слышал, что когда-то для вката было достаточно не срать под себя.
Аноним 10/03/25 Пнд 18:01:00 3406044 923
>>3406027
> смарт-тв
звучит как реально говняная платформа

>>3406027
Основы языка, STL, leetcode из обязательного

Если qt макака, то нужно хотя бы основы его выучить
Если эмбедед макака, то не помешает посмотреть про протоколы в описании вакансий 99% о них написано, по крайней мере меня на собесах о них спрашивали
Веб (если яндекс, будь готовым к 4-6 собесам) нужно понимать основы бэкендов но ничего супер сложного спрашивать не будут

Если какие то топ кампании то будешь конкуировать с топ 1% выпусников с топ ВУЗов, там больше проблема на сами собесы попасть, потому что отсев просто ебейший
Аноним 10/03/25 Пнд 19:47:32 3406111 924
>>3406044
>эмбедед макака
почему ты эмбеддед в макаки записал?
Разве это не та сфера, где как раз таки и проявляется вся филигранность применения низкоуровневого языка.

про qt согласен
Аноним 10/03/25 Пнд 19:55:04 3406119 925
>>3406111
> филигранность применения низкоуровневого языка
)))))))))))))))
Аноним 10/03/25 Пнд 19:56:00 3406120 926
>>3406111
исключительно личный опыт при поиске работы и работающих знакомых
большинство ваканский это по для счетчиков или передача байтиков по сети из одной железке - другой
Аноним 10/03/25 Пнд 19:56:26 3406121 927
1000007408.jpg 81Кб, 1200x675
1200x675
Аноним 11/03/25 Втр 17:56:07 3406751 928
Аноним 11/03/25 Втр 18:01:44 3406754 929
>>3406751
> Bjarne
Литералли кто? Он уже 20 лет как маскот используется и нихуя не делает.
Аноним 11/03/25 Втр 18:03:14 3406755 930
>>3406754
Какая разница кто он? Он поднял важный вопрос. Правительство США отказывается от С++. С такими темпами скоро все откажутся и перейдут на раст.
Аноним 11/03/25 Втр 18:14:21 3406768 931
1728511432114.png 1864Кб, 1400x1400
1400x1400
>>3406755
> Правительство США отказывается от С++.
Звучит примерно как наш переход на Линукс. Ну переведут госов на безопасные языки, и что теперь? Вон АНБ у них уже на безопасной джаве давно сидит. Всё равно весь потребительский низкоуровневый код на крестах. У крестов даже намёка на спад популярности нет, в 2024 в десятке популярнейших языков гитхаба, а раст даже в двадцатку не попал.
Аноним 11/03/25 Втр 18:32:42 3406799 932
>>3406768
> потребительский
> низкоуровневый
дефайн потребитель и низкоуровневый

андройд - начинают использовать на раст
винда - начинают использовать раст
десткоп - мертв и давно плюсов тут нет

эмбедед - там как был си так и остался

> в 2024 в десятке популярнейших языков гитхаба
> php shell чуть ниже
ну да, очень перспективные направлениея
Аноним 11/03/25 Втр 18:47:35 3406805 933
>>3406799
> андройд - начинают использовать на раст
Уже 5 лет начинают, всё никак не начнут.
> винда - начинают использовать раст
Не было и не будет. Был какой-то эксперимент с Офисом 365 в вебе, но и он сдох. Свежее API винды WinRT и WindowsApps под кресты на крестах пилится.
Аноним 11/03/25 Втр 19:10:15 3406834 934
>>3406805
> копиум
https://www.youtube.com/watch?v=1VgptLwP588

сразу отвечу на популярные вопросы
> аря не переписали сразу всё и сразу
и не планировали так делать
> аря все еще плюсы поддерживают и даже новое пилят
и это вполне нормально и никак не противоречит увеличению раста
Аноним 11/03/25 Втр 19:20:26 3406850 935
>>3406799
Компилятор раста на чем написан?
А виртуальные машины приведенных выше языков?
Аноним 11/03/25 Втр 19:28:11 3406855 936
>>3406834
> Azure
> Windows
А ты не очень умный, да?
Аноним 11/03/25 Втр 19:31:54 3406857 937
>>3406799
>php
А в чем наброс на php? Это до сих пор аналоговнет, на котором 80% вебя держится.
Аноним 11/03/25 Втр 19:36:36 3406865 938
>>3406850
> Компилятор раста на чем написан?
ну глянь в гугле, или мне за тебя в гитхабе нужно смотреть?

> А виртуальные машины приведенных выше языков?
выше приведены только php и shell

>>3406855
> youtube: Microsoft is Getting Rusty
> ЧЗХ ПОЧЕМУТ ТУ AZURE???
А что тебя удивляет?
Если про ядро винды, то нужно посмотреть чуть более 3 минут видел посмотреть

>>3406857
> Это до сих пор аналоговнет
аналоги есть

> на котором 80% вебя держится
никак не противоречит его неперспективности
Аноним 11/03/25 Втр 19:55:31 3406876 939
>>3406865
>никак не противоречит его неперспективности
Дело в том, что перспективность почти нихуя не значит в нашем мире. После появления UNIX были десятки перпективных ОС, которые решали проблемы UNIX и предоставляли новые концепции, но так как кабанчики уже осели на юниксе и их потребности он покрывал, то им было глубоко похуй на переспективу. С языками программирования та же самая ситуация происходила. Поэтому понятие "перспективность" это очень жидкое понятие, особенно в мире, когда каждый день появляются "серебрянные пули" и любой стартап/менеджер готов напиздешь с три короба, чтобы побольше заработать. Есть инструменты, которые по сути монополисты в индустрии, на которых завязано ВСЕ и эти инструменты развиваются, а не стагнируют, так почему же они должны дать свои позиции?

Алсо, касательно раста. Как только я начал видеть политоту в ченджлогах языка/компилятора на официальном сайте, то сразу перехотел иметь с ним дело. Технический проект должен быть чистым от подобной параши. Никто из призводителей перфораторов не кладет в коробочку записку с призывом помогать условным гватемальцам, лол. Какого хуя меня вообще должна касаться пораша, если я защел техничекие штуки посмотреть?
Аноним 11/03/25 Втр 21:56:29 3406992 940
>>3406876
>начал видеть политоту в ченджлогах языка/компилятора на официальном сайте, то сразу перехотел иметь с ним дело. Технический проект должен быть чистым от подобной параши
Я думаю, сейчас будет долгий этап политоты во всём, где это неуместно. Время такое. Вспомни про кибернетику в ссср, лысенко и прочее
Аноним 11/03/25 Втр 22:05:11 3406998 941
>>3406876
> Алсо, касательно раста. Как только я начал видеть политоту в ченджлогах языка/компилятора на официальном сайте, то сразу перехотел иметь с ним дело. Технический проект должен быть чистым от подобной параши.
С линукса тоже пересел на винду когда узнал, что Линус удалил из контрибьютеров кучу российских разработчиков?
Аноним 11/03/25 Втр 22:09:40 3407000 942
>>3406998
И не закатывался в пердоликс, потому что всегда знал что там сборище прыщавых чмошников. Одни едят мозоли, другие притворяются что прошивка для докера это ОС, третьи ищут русских ботов под кроватью.
Аноним 11/03/25 Втр 22:28:53 3407012 943
>>3406998
>С линукса тоже пересел на бсд
Пофиксил
Аноним 11/03/25 Втр 22:35:02 3407017 944
>>3407000
> И не закатывался в пердоликс
И ты себя считаешь погромистом...
Аноним 11/03/25 Втр 22:37:14 3407019 945
>>3407017
Десктопных ОС всего две существует - Винда и Мак.
Аноним 11/03/25 Втр 23:43:00 3407046 946
>>3407019
Двачую. И плюсую: линукс ещё
Аноним 12/03/25 Срд 11:29:58 3407295 947
Считаю, что всех кто пишет рекурсивные алгоритмы нужно наказать ударами ремня по попе.

Работаю над либой сумрачного математика и вся либа в этих алгоритмах. То что по расчётам должно занимать не больше 3 ГБ в памяти из-за рекурсии сжирает 32 ГБ и программа падает.
Аноним 12/03/25 Срд 12:00:24 3407321 948
>>3407295
>сжирает 32
это рекурсия на корутинах или у вас стек в гигабайтах?
Аноним 12/03/25 Срд 12:30:26 3407351 949
>>3407321
Там всё на сырых указателях. Сумрачные гении не уважают стек.
Аноним 12/03/25 Срд 20:14:42 3407671 950
ОПТИМИЗИРУЕШЬ
@
180 МС ЛАТЕНСИ
@
ОПТИМИЗИРУЕШЬ
@
160 МС ЛАТЕНСИ
@
ЗАЕБАЛСЯ
@
ЗАХОДИШЬ СМАКЕ
@
БЕНЧМАРК ЗАПУСКАЕТСЯ НА DEBUG БИЛДЕ
@
ДЛЯ DEBUG БИЛДА ВЫКЛЮЧЕНА ОПТИМИЗАЦИЯ
@
ВКЛЮЧАЕШЬ О2
@
16 МС ЛАТЕНСИ


Я в шоке как решают оптимизации компилятора.
Аноним 12/03/25 Срд 21:49:17 3407702 951
>>3406998
>Линус удалил из контрибьютеров кучу российских разработчиков
часто встречаю в последнее время данный тезис
но не могу поверить, что он реально мог пойти на такой шаг.
и что хотите сказать что он просто вычеркнул людей по нац. признаку? думается мне, там были другие причины
Аноним 12/03/25 Срд 22:33:43 3407713 952
>>3407295
Ты какой то даун. Сама по себе рекурсия не означает, что памяти будеи в 10 раз больше использоватья
Аноним 12/03/25 Срд 22:34:29 3407714 953
>>3407671
Ну конечно оптимизации решают
Аноним 12/03/25 Срд 23:12:18 3407735 954
>>3407709
я не особо шарю за это все.
Но вроде как, почти всю "сетевую подсистему ядра" наш чел какой-то написал. Кузнецов что ли...могу ошибаться.
а так конечно, отмаза в духе "юристы посоветовали" лютый кринж, даже соя на такое не поведется.
в целом он мне сразу не понравился, интуитивно как-то.
ладно, придется бсд ставить, я такое отношение не потерплю!
Аноним 13/03/25 Чтв 00:18:23 3407775 955
>>3406876
>Как только я начал видеть политоту в ченджлогах языка/компилятора на официальном сайте, то сразу перехотел иметь с ним дело.
Ну теперь смотри, что ты наделал. Ты занёс политоту сюда.

>>3407737
>>3407709
Пшли нахер отсюда в свой загон /po/литачеры.
Аноним 13/03/25 Чтв 00:45:11 3407781 956
>>3407702
Не по нац. признаку, а по признаку того являются ли вычеркнутые люди сотрудниками организаций попавших под американские санкции. Например если человек был сотрудником компании Байкал производитель российских процессоров.

В основном был бугурт не в том, что люди были вычеркнуты из списка контрибьюторов, а в том, что он ещё их из credits удалил, где имена всех кто хоть когда-то добавил свой код в проект. То есть признаки их участия были полностью удалены из проекта, только сами коммиты не ревертнули.

Это во первых тупо, потому что если есть желание, то в истории гита найти подтверждение их участия это плевое дело. Во вторых нечестно, потому что будь ты хоть Гитлер, но авторское право на свою работу у тебя есть (я эту картину нарисовал, а не кто-то другой).
Аноним 13/03/25 Чтв 00:46:55 3407782 957
>>3407713
Это ты какой-то даун если сделал такой вывод из прочитанного.
Аноним 13/03/25 Чтв 00:51:34 3407784 958
>>3407709
>Был даже русский, работающий в Амазоне и живущий в Калифорнии, тоже забанили нахуй
Попробуй найди фамилию
Аноним 13/03/25 Чтв 01:02:50 3407789 959
>>3407735
> придется бсд ставить, я такое отношение не потерплю!
С пердоликсом есть ещё более абурдная хуйня - Фейсбук недавно начал линукс приравнивать к "cybersecurity threat" и тереть посты с обсуждениями, были забанены куча линукс-сообщества в фейсбуке. Даже за ссылки на Дистроватч банили.
Так что нужно на BSD/Mac переходить.
Аноним 13/03/25 Чтв 03:04:36 3407814 960
>>3407789
>С пердоликсом есть ещё более абурдная хуйня - Фейсбук недавно начал линукс приравнивать к "cybersecurity threat"
Не понял логику. А типа нахуя? Чтобы что?
Аноним 13/03/25 Чтв 14:45:18 3408045 961
>>3333359 (OP)
Ананасы, может не совсем по теме треда, но мне в дополнение к плюсам нужно поднять знания в линуксе - структура ОС, загрузчик, системд и прочее. Можете посоветовать достойную книгу по теме?
Аноним 13/03/25 Чтв 15:15:56 3408064 962
>>3408045
> структура ОС, загрузчик, системд и прочее
книги хорошей нет и такую книгу я думаю не реально даже написать.
Но есть книги/сайты (тот же opennet) с тем или иным погружением , можно использовать как шаблон/навигатор по темам.
Я просто брал тему и гуглил, гуглил, гуглил по картинкам пока не найду нормальный материал. Годнота с хорошим проникновением в тему + подробные схемы чаще всего попадались с китайских сайтов, где даже с ебанутым переводом многое становилось понятно.
Также на ютубе есть небольшой, но годный курс лекций про сетевую подсистему и планировщик, рекомендую.
Также используй картинки/схемы для изучения. Их много и часто подробные. аля Linux kernel map
Аноним 13/03/25 Чтв 15:28:48 3408071 963
>>3408064
Понял, спасибо за информацию, анон.
Аноним 13/03/25 Чтв 18:20:56 3408151 964
Существует ли способ асинхронного выполнения кода без блокировки основного потока (на join(), futex, epoll ect..)?
Допустим из main_thread передаю в new_thread(callback), он должен вызваться по завершении new_thread, в произвольный момент(например когда main_thread в цикле вычислений).
Механизма как вернуться в основной поток без его блокировки со стороны ОС я так понимаю сейчас нет.
К примеру new_thread завершается, делает syscall, ОС прерывает main_thread, меняет PC на адрес callback.
И тут все упирается в стек, нам надо как-то сохранить/завершить текущий фрейм и создать новый (с новым rbp, адрес возврата etc).
Единственный вариант это сделать --> создать новый stack, но это тоже самое что и "create new_thread()" так как новый поток это упрощенно: адрес PC (функции) + новый stack под неё.
В итоге получается, что такое невозможно просто из-за архитектуры PC (конечный автомат с магазинной памятью).
Все ли правильно в этом шизовысере? Или цепочка рассуждений не верна включая окончательный вывод.
Аноним 13/03/25 Чтв 19:21:16 3408204 965
>>3408151
Нихуя не понятно, звучит как пропуск приёма таблеток. Если не хочешь блокировок, то не блокируй пока второй поток не будет готов.
Аноним 13/03/25 Чтв 21:37:20 3408258 966
https://pastebin.com/ibmf7y2D
Аноны, почему после угадывания числа программа снова выполняет функцию game()? Я же вернул 1, сделал условие
Аноним 13/03/25 Чтв 21:41:51 3408260 967
>>3408258
Анон, а тебе не кажется, что инициализировать переменные вне скопа функций, а потом их испольщовать внутри этих функций это плохая идея если переменные не константы?

Вруби clang-tidy и включи все проверки. Читай и осознавай, что умный линтер тебе будет советовать.
Аноним 13/03/25 Чтв 21:44:15 3408262 968
>>3408258
Потому что ты вызываешь game на 54 строчке опять.
Аноним 13/03/25 Чтв 22:05:16 3408275 969
>>3408258
> using namespace std;
> int player;
> bool fact = true, fict = false;
Пиздец.
> srand
Комитет завёз <random>, но нет, так и будем писать на приплюснутой сишке.
> if (game(rnd) == 1)
Зачем вообще это условие? Цикл не может завершиться, если не 1, какой смысл ещё раз проверять, что 1?
Аноним 13/03/25 Чтв 22:19:03 3408280 970
>>3408275
>Зачем вообще это условие?
Логика была такая: game() возвращает либо 1 либо 0. Если 0 - цикл продолжается, если 1 - печатается результат. Вот я и проверял, что возвращается в game().

Че то я не могу понять, как организовать сравнение возвращенного функцией значения с чем-либо. То есть я ее в любом случае вызову снова. Как результат выполнения сравнить то?
Аноним 13/03/25 Чтв 22:19:36 3408281 971
Аноним 13/03/25 Чтв 22:24:20 3408284 972
>>3408280
int gameResult = game(random);
while (gameResult != 1) {
gameResult = game(random);
}

А вообще вопросы такого уровня нужно задавать нейронкам.
Аноним 13/03/25 Чтв 22:27:53 3408287 973
.png 15Кб, 628x319
628x319
>>3408280
Так записывай результат вызова функции в переменную, если хочется сложностей на ровном месте.
Аноним 14/03/25 Птн 19:34:55 3408859 974
Почему вы решили изучать именно C++?
Аноним 14/03/25 Птн 19:37:59 3408862 975
>>3408859
В вузе не было выбора. Потом писал на жабе в основном. Потом потребовался высокопроизводительный код и вновь начал писать на крестах. Сейчас смотрю в строну раста
Аноним 14/03/25 Птн 22:45:57 3408938 976
>>3408859
Я работал сисадмином. У меня была задача прокидывать ключ в одну из виртуалок. МОдуль ядра был - usbip, который глючил, я стал копаться там. Там всё на си, разумеется. Ну так и стал в общем. Потом и в с++ перекатился.
Аноним 14/03/25 Птн 22:57:22 3408950 977
>>3408938
> сисадмином
> ключ
> usbip, который глючил, я стал копаться там
Нахуя? Сколько не встречал виртуалок с ключами - везде вмварь и ни одной проблемы с прокидыванием. Сисадмин точно таким не должен заниматься.
Аноним 14/03/25 Птн 23:11:05 3408963 978
>>3408950
У меня стоял гипервизор xen. Там нельзя с самого железа гипервизора прокидывать ключи в гостя. Для этого был отдельный маленький комп с виндой, куда втыкались ключи и прокидывались в виртуальный линукс
Аноним 15/03/25 Суб 00:56:10 3408993 979
>>3405024
CMakeLists.txt в корне
в нем
add_subdirectory("src/lib")

add_subdirectory("src/test")

в директориях src/lib src/test свои CMakeLists.txt

src/lib/CMakeLists.txt

file( GLOB_RECURSE SOURCE_FILES
CONFIGURE_DEPENDS
${PROJECT_SOURCE_DIR}/.cpp
${PROJECT_SOURCE_DIR}/
.h
)
add_library(mylib STATIC ${SOURCE_FILES})
target_include_directories(mylib PUBLIC ${SOURCE_FILES})
target_link_libraries(mylib PUBLIC всякие зависимости)

src/test/CMakeLists.txt
Похоже только в
target_link_libraries(myapp PRIVATE всякие зависимости mylib)
добавляем mylib

add_executable вместо add_library
Аноним 15/03/25 Суб 01:01:31 3408994 980
>>3408993
${PROJECT_SOURCE_DIR}/<звездочка>.cpp
${PROJECT_SOURCE_DIR}/<звездочка>.h
Аноним 15/03/25 Суб 02:06:59 3409001 981
>>3402681
Альтернатив полно, все нерабочие
Аноним 15/03/25 Суб 02:18:44 3409004 982
>>3404914
На си/плюсы банально меньше вакансий. А те что есть заняты стариками (по стажу, не биовозрасту) и открываются очень редко. Переезжай куда-нибудь поближе к КБ электроники, прогуляйся по радиорынку, сдвинешь личную статистику.
Аноним 15/03/25 Суб 02:21:19 3409005 983
Аноним 15/03/25 Суб 02:26:44 3409008 984
>>3406755
Пук в лужу в газеты. Раст едва-едва вылезает из песочницы экспериментов, я скорее в Go поверю. А учитывая любовь госухи к легаси (в любой стране) переезжать они будут столетиями.
Аноним 15/03/25 Суб 02:36:26 3409010 985
>>3406799
>десткоп - мертв и давно плюсов тут нет
кеды лучший декстоп. qt в каждой третьей гуишке. винда сползает на js но поддерживать своё старьё на msvc не перестанет никогда.
Аноним 15/03/25 Суб 02:43:27 3409011 986
>>3407295
"по расчётам" лол. Но вообще сочуствую. Хорошо что хоть какие-то записи остались, брейкпоинты на условиях выхода и вперёд.
Аноним 15/03/25 Суб 05:12:10 3409031 987
>>3408993
Он имеет в виду как из папки lib добавить в топ уровень
В переменные на топ уровень добавлять можно через set(VAR_NAME "kukarek" PARENT_SCOPE) но если это какие то депендсы или локальные таргеты то надо их внутри папки делать либо выносить на топ уровень и тут и там использовать не получится
Аноним 15/03/25 Суб 09:49:12 3409054 988
>>3409031
Не понял что ты хочешь сказать. Я ответил на воппрос
>Как в каталоге src/test подключить библиотеку src/lib вместе с хедерами и бинарником из src/lib?
Очевидно для этого надо тесты с линковать с библиотекой и чтобы идешка хидеры видела. Для этого достаточно чтобы в target_include_directories и target_link_libraries был PUBLIC для цели lib
В глобальй таргет все добавляется через add_subdirectory и становится доступно глобально. Что такое уровни у цимейка? У таргетов свойства могут быть PUBLIC PRIVATE INTERFACE от этого зависит их видимость для других целей транзитивно через субдиректории.
Аноним 15/03/25 Суб 10:23:33 3409070 989
>>3409054
Вот пояснение нейронки:

Например такая структура проекта
root/
├── CMakeLists.txt
├── libA/
│ ├── CMakeLists.txt
│ └── libB/
│ ├── CMakeLists.txt
│ └── libC/
│ └── CMakeLists.txt
└── app/
└── CMakeLists.txt

Как сделать цель глобально доступной?
Если вам нужно сделать цель доступной для линковки в любом месте проекта?

Использование target_link_libraries по цепочке
Вы можете явно передавать цель через цепочку зависимостей. Например:

В libC/CMakeLists.txt создаете цель libC.
В libB/CMakeLists.txt линкуете libC к libB:

target_link_libraries(libB PUBLIC libC)
В libA/CMakeLists.txt линкуете libB к libA:

target_link_libraries(libA PUBLIC libB)
В app/CMakeLists.txt линкуете libA к вашему приложению:

target_link_libraries(app PUBLIC libA)
Таким образом, все зависимости будут разрешены автоматически благодаря механизму транзитивных зависимостей в CMake.

Просты подключением add_subdirectory цели глобально доступны не будут, ясное дело
Но у анона даже нет какой глубокой структуры.
Аноним 15/03/25 Суб 10:36:37 3409076 990
>>3409070
Те я вначеле не совсем корректно выразился. Как я понимаю: 1) Простым подключением add_subdirectory цели из поддиректорий не становятся доступны для линковки глобально, а только для родительской директории и тех директорий которые непосредственно подключаются в в родительской через add_subdirectory.
2) Транзитивность работает через свойства целей которые PUBLUC или INTERFACE
Аноним 15/03/25 Суб 10:53:00 3409081 991
>>3408859
Я несколько лет писал игори на скриптовых языках, было норм. Не работа не учёба, чисто для себя как хоббя. Но возникла и очень зачесалась задача, которая требует высокой производительности компилируемого языка. Плюс друг сишник помог начать. Плюс нейронки помогли разобраться, отвечая на тупые вопросы.
Аноним 15/03/25 Суб 15:57:46 3409241 992
>>3409076
да я же писал.
напиши Makefile.
затем попроси нейронку сгенерить на основе него Cmakefile (если так всарлся этот Cmake, для работы я так понимаю)
сам юзай make.
Аноним 15/03/25 Суб 15:59:49 3409242 993
>>3409076
Всё верно понял

на мейке не пиши, неосилятора выше не слушай
Аноним 15/03/25 Суб 22:21:49 3409413 994
За сколько сейчас мидлов в Москве нанимают по рынку?
Аноним 16/03/25 Вск 01:37:53 3409478 995
>>3409413
Столько сколько наторгуешь и куда пойдешь

знакомый qt макака получает около 220, 5 лет опыта
Аноним 16/03/25 Вск 02:46:25 3409481 996
image.png 38Кб, 790x615
790x615
>>3409478
Звучит как-то... грустновато. 200к мидлы получали лет 5 назад когда я сам стажером шел устраиваться, выходит что и нихуя не поменялось. Сейчас вот сам задался сменой работы, потому что больше не добавляют. Последние года масса денежная выросла в стране, все вверх скакнуло, а зарплаты где? Мне уже не хватает.
Рассчитывал что найм новых идет хотя бы от 250к, а реальную получить на 300 секундных. Но вижу что ~290 это уже потолок. Ну мне тогда и смысла нет менять ради условных +20-30 если я сейчас в стул пержу. Так почекал вакансии и дохрена всякого госушного говнища на кутах как раз за 100к, это просто финиш. И че делать? Стек менять что ли? Или уезжать?
Аноним 16/03/25 Вск 09:44:00 3409537 997
>>3409481
>Или уезжать?
Если только в штаты
Аноним 16/03/25 Вск 16:50:05 3409712 998
>>3409481
> Стек менять что ли
ну я вот потихоньку меняю(расширяю).
а так работа не куте-макакой есть и всегда будет, но придется поискать и ЗП там не выше 300.
так что сиди на попе ровно
Аноним 17/03/25 Пнд 00:24:41 3409962 999
>>3408045
Брайан Уорд, "Внутреннее устройство Linux". Пдф-сканы в интернетах есть.
Аноним 17/03/25 Пнд 01:18:52 3409977 1000
Ещезумер, сразу вкатился на бек за 210к, работаю полгода. Мб не те области смотрите?
Аноним 17/03/25 Пнд 02:08:08 3409984 1001
>>3409977
Какие области нам смотреть? Жабу или питон в банкинге с даунами и зумерами вроде тебя? Не интересно даже за миллионы
Аноним 17/03/25 Пнд 03:40:22 3409992 1002
>>3409984
С чего такая тряска сразу? Я бек на плюсах пишу, а не на жабе.
>Какие области нам смотреть?
HFT, робототехника, научные вычисления, инженерная графика и т.д. А вооще странный вопрос, учитывая, что программиста на цпп в вакууме не существует, разве что формы на QT клепать. Обычно какую нибудь предментую область нужно знать.
Аноним 17/03/25 Пнд 12:24:22 3410182 1003
>>3409977
>Мб не те области смотрите?
Плюсовые области за частую супер нишевые, одна две кампании (а может и ноль) на всю страну, найм соотвественно такое же.

>сразу вкатился на бек за 210к
Это в яндексе сейчас столько платят плюсовым на бэке? Сытно...

>>3409992
> робототехника, научные вычисления, инженерная графика
Эх, в каком бы мы мире жили, если бы в этих областях сытно платили хотя бы также как в вебе...
Аноним 17/03/25 Пнд 12:36:40 3410186 1004
>>3409992
И что ты пишешь?

> HFT, робототехника, научные вычисления, инженерная графика
А зумер там нахуя? Чтоб рядом постоял?
Аноним 17/03/25 Пнд 13:29:31 3410229 1005
C++ очень грязный язык! Хочется аж руки помыть после того как код на нем писал.
Аноним 17/03/25 Пнд 14:20:06 3410292 1006
>>3410229
Он не "грязный", он детальный.
Аноним 17/03/25 Пнд 14:31:55 3410299 1007
>>3410292
ундефайнд бегавиор
Аноним 17/03/25 Пнд 21:35:19 3410620 1008
highload.webm 6227Кб, 654x480, 00:00:23
654x480
>>3410186
Зумер будет твоим сто
Перекат Аноним 17/03/25 Пнд 22:34:27 3410645 1009
Аноним 17/03/25 Пнд 22:48:01 3410654 1010
>>3410645
Ты тут первый раз? До 1500 сидим.
Аноним 17/03/25 Пнд 22:52:28 3410658 1011
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов