24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Тред синтаксического сахара над языком ассемблера, ака языка си. /clang/

 C 09/02/24 Птн 19:47:31 #1 №3042192 
image.png
Давно меня не было и вероятно прошлый сдох.
Однако назрел вопрос с чем вы, аноны, склеиваете свои числодробилки, чтобы красивенько отображать информацию на экране монитора?

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

У вас какие мысли?
Аноним 09/02/24 Птн 20:15:33 #2 №3042241 
>>3042192 (OP)
А что, консоль тебе недостаточно красивенькая?
Аноним 09/02/24 Птн 20:23:27 #3 №3042249 
>>3042241
Возможностей консоли недостаточно. Нужна именно пиксельная графика, то бишь мордорисование. Через какие костыли не так уж важно, я могу и с нуля накалякать какой нибудь визуальный конвеер для покраски кнопочек (прямоугольник в котором текст, это разве страшная задача для отрисовки кнопки), но хотелось бы не сильно заморачиваться именно с мордорисованием а все творческие силы пустить на алгоритмы числодробилок.
sage[mailto:sage] Аноним 09/02/24 Птн 21:02:14 #4 №3042273 
image.png
>>3042192 (OP)
>ассемблера
>>3042192 (OP)
>си
>>3042192 (OP)
>джаву
>>3042192 (OP)
>CSS
Аноним 09/02/24 Птн 21:13:22 #5 №3042282 
>>3042192 (OP)
Во-первых, тебе помирать уже скоро, а ты ui озаботился.
Во-вторых, бери винформс и не еби мозги.
Аноним 09/02/24 Птн 22:22:47 #6 №3042390 
image.png
ncurses если нужен минимализм
qt если надо быстро
Аноним 12/02/24 Пнд 16:10:33 #7 №3045262 
Мужики, а книги:
C Primer Plus - Стивен Прата
C Programming - A Modern Approach - Kn King
Есть на русском языке?
Аноним 14/02/24 Срд 08:22:26 #8 №3047807 
>>3042390
ебать ты знаток канеш.
qt для c++ а для с gtk
Аноним 14/02/24 Срд 08:34:54 #9 №3047812 
>>3047807
C если нужен минимализм
C++ если надо быстро
Аноним 14/02/24 Срд 16:01:10 #10 №3048326 
>>3045262
Конечно есть, в Москве брал недавно Прату для коллекции.
Аноним 14/02/24 Срд 22:06:34 #11 №3048919 
>>3047807
Нах C++. Можно в qt quick все сделать с минимумом плюсов, знаток.
Аноним 18/02/24 Вск 01:48:26 #12 №3053278 
Аноны, подскажите дегенерату, пожалуйста, а можно ли за-memset-ить двумерный динамическивыделенный массив?
Обеспечивается ли линейность памяти для массива массивов?
Аноним 18/02/24 Вск 01:49:58 #13 №3053282 
>>3053278
Да.
Линейно в памяти.
Аноним 18/02/24 Вск 02:18:25 #14 №3053301 
image.png
>>3053282
Можно какой нибудь простейший пример? Или обьясните почему пикрил валится с сегфолтом?
Аноним 18/02/24 Вск 02:20:54 #15 №3053303 
>>3053301
На вывод массиав не смотрите, судя по gdb он валится прямо на мемсете. "Сжатый" двумерный массив мемсетится легко, двумерный статический массив мемсетится легко, а вот массив массивов нихрена.
Аноним 18/02/24 Вск 02:23:12 #16 №3053306 
>>3053301
У тебя не двкхмерный массив. У тебя массив указателей на массивы.
Аноним 18/02/24 Вск 02:30:37 #17 №3053311 
>>3053301
Не уходи далеко. Через пару минут включу комп, проверю и покажу как правильно.
Аноним 18/02/24 Вск 03:10:09 #18 №3053327 
image.png
>>3053301
Короче, с динамической аллокацией двухмерных массивов не всё так радужно.
Легче моделировать самому через арифметику, как показано вот тут - https://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/

Но если ты вот прям хочешь поебаться с массивами, то на картинке рабочий пример.
Аноним 18/02/24 Вск 03:27:01 #19 №3053329 
image.png
>>3053301
Аноним 18/02/24 Вск 03:54:29 #20 №3053332 
image.png
>>3053329
А можно и так извратиться. Чтобы не делать разименование указателя. Дело привычки и предпочтений.
Аноним 18/02/24 Вск 21:02:33 #21 №3053976 
Что будет если сделать free на память, которая на стеке
Аноним 18/02/24 Вск 21:23:55 #22 №3053985 
>>3053976
будет ашипка
Аноним 18/02/24 Вск 22:14:15 #23 №3054006 
>>3053976
Упадет с ошибкой.
Куча и стек находятся в разных концах виртуальной памяти. Например, в линуксе куча растет снизу вверх, а стек - сверху вниз. Есть специальный регистр stack pointer, который указывает на текущую вершину стека (или низ). Можно вычислить, находится ли твой адрес в куче или нет, и упасть по ассерту.
Аноним 29/02/24 Чтв 16:12:32 #24 №3068213 
https://pastebin.com/n5fEZnW6
Возможно ли мою хуйню было сократить по кол-ву строк хоть сколько нибудь?
Аноним 01/03/24 Птн 03:51:41 #25 №3068946 
>>3042192 (OP)
>а скорость вычислений мы как раз поручаем числодробилкам на языке си, запакованным в билбиотечки.
Если нормально писать то и джава неплохо дробит числа. Вот недавно был челлендж
https://github.com/gunnarmorling/1brc - джава обошла раст по скорости и почти догнала С++ (но тут неточно, потому что С++ запускался не на эталонном железе, которое само было производительнее)
Аноним 01/03/24 Птн 04:55:49 #26 №3068965 
image
>>3068213
>https://pastebin.com/n5fEZnW6
можешь задать свою хуйню одномерным массивом по типу
char huyn9[] = {,,,,,,'#',,'#' ... ,,,};
и потом вором вывести на экран где каждый n символ будет принтефатся \n

>>3068946
сомнительно, потеря скорости вычислений на трансляцию в джавамашине, это даже в теории не близко к числодроблению
Аноним 01/03/24 Птн 05:06:24 #27 №3068974 
>>3068965
>вором
фором
>будет принтефатся \n
но можно и не принтить перенос строки если ты фулл экран консоли заливаешь каким то своим рисунком в псевдографике
Аноним 01/03/24 Птн 06:06:43 #28 №3069005 
>>3068965
>char huyn9[] = {,,,,,,'#',,'#' ... ,,,};

или
char huyn9[] = " # # # ";
и выводить фором

или
char\* huyn9 = " твоя ебаная строка с рисунком хуйни ";
puts(huyn9);

лан похуй пойду посплю
Аноним 03/03/24 Вск 12:53:46 #29 №3071526 
image
бля дайте рабочий гайд за ллдб (lldb)
все что я нашел нихуя не работает, хочу глянуть брекпоинты как рекурсия себя ведет, но пока нихуя не понимаю
Аноним 06/03/24 Срд 02:54:02 #30 №3074808 
image
Ну что вы, аноны, кодите что то на сях?
Аноним 06/03/24 Срд 03:01:39 #31 №3074810 
>>3074808
> кодите что то на сях?
Полностью переехал на плюсы. Благо они уже для кофеварок научились компилировать.
Не помню уже когда писал что-то на чистом Си.
Аноним 06/03/24 Срд 13:38:09 #32 №3075227 
>>3074808
Я проштрудил книжку оч хорошую OOC, которая в шапке треда раньше висела. Потом ппц мотивация привалила, решил сделать свой евентлуп с асинхронными корутинами, ебался с этим парк недель, но забросил и уже полгода не притрагивался.
Аноним 10/03/24 Вск 06:27:15 #33 №3079569 
За сколько вы K&R осилили?
Аноним 10/03/24 Вск 07:45:27 #34 №3079578 
>>3079569
Да хз. Черт дернул пройти заного эту христоматию. Ковыряю задачки все подряд прямо с первой. Но так... не на энтузиазме, а лениво, час ютюба 2 строчки кода если грубо говорить.

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

Крч, вот так прям с наскока хуй кто осилит K&R Clang. Реально сложная книга со своими заковырками и неочевидными подводными камнями.

Я вот сидел и пытался в a.out скормить файлик чтобы проверить по заданию работу гетча, и нихуя у меня не вышло, но зато я нашел Heredoc о котором не знал, сижу вот читаю про эту волшебную штуку-дрюку.
Аноним 10/03/24 Вск 08:10:10 #35 №3079586 
image
>>3079578
upd
Если у кого то то же возникает затык в первых главах как программа Кернигана считает символы из файла без фопена, то задумка у них была пикрил.
Аноним 11/03/24 Пнд 00:12:39 #36 №3081013 
image
У меня вопросы по кодстайлу. Анончики скажите пожалста, вы стараетесь писать читабельно как в этом примере: в ифе стейт сравнивается со значением. Или стараетесь писать более краткие формы: иф(стейт) иф(!стейт)
Аноним 11/03/24 Пнд 00:19:38 #37 №3081016 
>>3068965
>трансляцию
Ты почитай как жавамашина работает
Аноним 11/03/24 Пнд 00:20:33 #38 №3081018 
>>3042192 (OP)
>У вас какие мысли?
На дворе уже давно не 2000 год, пора из бункера вылезать
Аноним 11/03/24 Пнд 00:24:49 #39 №3081022 
>>3081016
транслирует опкод в байткод а што
Аноним 11/03/24 Пнд 07:34:14 #40 №3081107 
image
Бля пиздец, всю башку сломал себе этими вертикальными гистаграммами. Нет, я понимаю можно просто нарисовать гистаграмму челез юникодовые управляющие последовательности или курсы подрубить... Но смысл в том чтобы решить задачку средствами которые предоставлены в книжке, а там хуй да нихуя, циклы ифы и путчары... Еще блять эта кодировка вайдчарами русского текста... Непечатные символы...
Аноним 11/03/24 Пнд 12:53:55 #41 №3081379 
>>3081022
Вылезай из бункера, уже третий десяток пошел как jit запилили
Аноним 11/03/24 Пнд 20:52:08 #42 №3082115 
>>3068965
>сомнительно, потеря скорости вычислений на трансляцию в джавамашине, это даже в теории не близко к числодроблению
Там есть специальные подсистемы в JIT (C1 и C2), которые по сути кэшируют трансляцию часто используемого кода. То есть ты будто в рантайме бинарник компилишь и с ним работаешь. Плюс т.к. джава может в рантайме менять код, в отличии от С++, она может оптимизировать в зависимости от того как код используется - разворачивать циклы, переставлять операции и т.д.
https://habr.com/ru/articles/305894/
Аноним 11/03/24 Пнд 22:33:13 #43 №3082317 
>>3081379
ты контролируешь джит? нет? тогда о чем спор, бункерный?
Аноним 11/03/24 Пнд 22:36:32 #44 №3082318 
>>3082115
хабр помойка, тем не менее, это потеря скорости
компил в рантайме/трансляция это потеря скорости исполнения кода, как вы этого понять то не можете? совсем обджавились уже
заместо пармы мувов по регистрам ты делаешь компил + пара мувов по регистрам
уже на пальцах вынужден объяснять джавистам как работает джавамашина пиздец до чего дошли
Аноним 11/03/24 Пнд 22:53:02 #45 №3082326 
>>3082317
спора нет, жаба уже двадцать лет по производительности не хуже плюсов, и ебет в хвост и гриву всякие высокоскоростные всхрюки типа растов. и причину тебе уже озвучили - оптимизация кода в рантайме основанная на статистике исполнения кода, фича, которая в принципе недоступна компилируемым языкам.

>>3082318
>компил в рантайме/трансляция это потеря скорости исполнения кода, как вы этого понять то не можете?
книжки почитай прежде чем хуйню пороть
Аноним 11/03/24 Пнд 22:57:25 #46 №3082329 
>>3082318
ты там на перфокартах код пишешь что у тебя программы штучными мувами по регистрам измеряются?

>заместо пармы мувов по регистрам ты делаешь компил + пара мувов по регистрам
правильно так - заместо пары миллиардов мувов по регистрам ты делаешь пару миллионов мувов, потом оптимизацию, и потом еще пару сотен миллионов мувов.
Аноним 11/03/24 Пнд 23:18:47 #47 №3082336 
>>3082326
>по производительности не хуже плюсов, и ебет в хвост и гриву всякие высокоскоростные всхрюки типа растов
чел мы в ситреде, тут бенчи по асму меряются, а не по твоим тормозным джавам плюсам растам питонам джиэсам, проснись

>>3082329
оптимизировать и гцц умеет и будут теже мувы но зато без потери процессорного времени

джависты вам тут не рады
Аноним 11/03/24 Пнд 23:21:00 #48 №3082339 
>>3082336
>оптимизировать и гцц умеет
в рантайме?
Аноним 11/03/24 Пнд 23:23:00 #49 №3082341 
image
>>3082339
умоляю хватит тралить тупостью
>без потери процессорного времени
на компил в рантайме

так понятно стало?
Аноним 12/03/24 Втр 12:56:34 #50 №3082798 
>>3082318
>компил в рантайме/трансляция это потеря скорости исполнения кода, как вы этого понять то не можете? совсем обджавились уже
>заместо пармы мувов по регистрам ты делаешь компил + пара мувов по регистрам
Чел ну ты ебанат? Трансляция 1 раз происходит, потом ты из кэша достаешь свои мувы по регистрам
>тем не менее, это потеря скорости
манямирок затрещал, но выстоял, упорный!
Аноним 12/03/24 Втр 12:58:38 #51 №3082802 
>>3082336
>оптимизировать и гцц умеет и будут теже мувы но зато без потери процессорного времени
гцц не знает как ты будешь использовать программу каждый раз когда ты её запускаешь, а жит знает
>джависты вам тут не рады
не гори только от джавабогов
Аноним 12/03/24 Втр 13:02:08 #52 №3082807 
>>3082336
>чел мы в ситреде, тут бенчи по асму меряются, а не по твоим тормозным джавам плюсам растам питонам джиэсам, проснись
Спецом для тебя я скинул пруф https://github.com/gunnarmorling/1brc , тут как раз на джаве угорают по лоу левелу и постят результаты бенчмарков
Аноним 12/03/24 Втр 13:06:25 #53 №3082817 
>>3082341
на стартапе, да - потом нет
Аноним 12/03/24 Втр 13:08:11 #54 №3082819 
>>3082317
А ты контролируешь свой си-компилятор-нейм? Может еще знаешь как каждый из них UB резолвит?
Аноним 12/03/24 Втр 23:46:39 #55 №3083990 
>>3082819
я свой написал так что спок слови уб шиз
Аноним 13/03/24 Срд 00:05:38 #56 №3084007 
>>3082807
пруф чего ты мне скинул? это чисто джава бенчи насколько я вижу тк тут написано напишите программу на джаве
пруф того что жаба умеет складывать вычитать и компейрить числа? ахуенно

>>3082802
>гцц не знает как ты будешь использовать программу каждый раз когда ты её запускаешь, а жит знает
хз чо ты высрал, даже разбирать тобою написанное не хочу

>>3082798
а если проц без кешлиний? поешь говна лучше и не пиши сюда
Аноним 13/03/24 Срд 05:17:27 #57 №3084105 
image
Вы тут срете бесполезной хуйней в тред, а лучше бы занялись ментальной гимнастикой. Вот вам пикрил задачка и книги K&R попробуйте решить ее. Из доступных инструментов первой главы: ветвления ифами, циклы, массивы, функции (без поинтеров, векторов, макросов и всего прочего).

Без каких либо ограничений на размер строки означает что нам недоступно хранение строки внутри char arr[size_t]. Удачи.
Аноним 13/03/24 Срд 10:46:59 #58 №3084306 
>>3084105
просто взять указатель на строку и отправлять байты на вывод пока не встретишь нулевой байт?
Аноним 13/03/24 Срд 10:49:39 #59 №3084313 
>>3084007
>пруф чего ты мне скинул? это чисто джава бенчи насколько я вижу тк тут написано напишите программу на джаве
>пруф того что жаба умеет складывать вычитать и компейрить числа? ахуенно
здесь сравнения с другими языками
https://github.com/gunnarmorling/1brc/discussions
Аноним 13/03/24 Срд 10:50:22 #60 №3084314 
>>3084007
>а если проц без кешлиний?
джавамашина кэширует, не процессор
Аноним 13/03/24 Срд 11:04:57 #61 №3084333 
>>3084306
В этой главе нет указателей.
Прикрепляйте пастебины.
Аноним 13/03/24 Срд 11:26:51 #62 №3084361 
image
image
>>3084313
так пруфы чего?
Аноним 13/03/24 Срд 11:27:45 #63 №3084362 
>>3084314
это примерно в 6 раз медленнее чем держать мувы в линиях
Аноним 13/03/24 Срд 12:49:32 #64 №3084462 
>>3084361
Пруфы того что ты не читаешь ридми. Там эталонный сервер на Хетцнере, иначе каждый бы мог просто на более мощной машине запустить и сказать что у него питон быстрее работает.
Аноним 13/03/24 Срд 12:51:58 #65 №3084467 
>>3084362
а если проц без кешлиний?
Не пойму как ты через сишку кажешь процу что ему кэшировать, а что - нет, может расскажешь? Просто хочу разобраться
Аноним 13/03/24 Срд 12:55:48 #66 №3084476 
>>3084462
ты принес какую то хуету, а я должен бегать по крупицам собирать инфу что это все значит и что ты хотел сказать своим высером?
да пошел ты нахуй анон, поебать мне на твои бенчи хуенчи сделанные ПАПРИКОЛУ, жаба медленне си, это аксиома, хочешь опровергнуть - неси бенчмарки

>>3084467
>а если проц без кешлиний?
тогда одинакого будет, холодный старт только медленее, нужно время на транслейт
> как ты через сишку кажешь процу что ему кэшировать, а что - нет
префетчинг, паттерны известны, однако это все равно неуправляемый напрямую процесс
Аноним 13/03/24 Срд 12:59:34 #67 №3084485 
>>3084333
Тебе надо - ты и прикрепляй
Ну раз в главе нет указателей, то и в языке нет, понимаю
Аноним 13/03/24 Срд 13:01:53 #68 №3084491 
>>3084476
>ты принес какую то хуету, а я должен бегать по крупицам собирать инфу что это все значит и что ты хотел сказать своим высером?
Ты ничего не должен, я дал тебе таблицу результатов, ты со сгровешей жопой побежал проверять на локалке, потому что не верил что джабба может быть такой быстрой. Тут уж не моя вина.
Аноним 13/03/24 Срд 13:07:05 #69 №3084501 
>>3084485
чо ты понимаешь то? систему уравнений то же через теорию игр решать будешь?

>>3084491
на какой локалке, даун? это твои две ссылки, делать мне нехуй проверять на своей машине какой то паприколубенч

пиздец двач наплодил даунов
Аноним 13/03/24 Срд 13:07:20 #70 №3084502 
>>3084476
>неси бенчмарки
И да, эта репа фактически и есть бенчмарк, так что бенчмарки я принёс. Просто ты сравнил не Си с джавой, а джаву на локале и джаву на хетцнере.
Вот сишное решение https://github.com/gunnarmorling/1brc/discussions/46
Аноним 13/03/24 Срд 13:09:31 #71 №3084507 
>>3084501
>на какой локалке, даун? это твои две ссылки, делать мне нехуй проверять на своей машине какой то паприколубенч
Не гори только, скуф
Что тогда за вторая картинка с замерами от тебя была? Мне мысли твои чтоли читать?
Аноним 13/03/24 Срд 13:11:20 #72 №3084508 
>>3084502
я вообще ничо не сравнивал, тут нечего сравнивать
ты принес ссылки я их открыл нашел сишный тредик и сфоткал результы
теперь ты говоришь что я принешь жабу на локалке, а вот ты то принес сишник на хетцентре, но по твоей ссылке как раз сишник на локале
покинь тредик, ты не в адеквате, чел
Аноним 13/03/24 Срд 13:52:01 #73 №3084554 
ладно я то же погорячился
давайте раз и навсегда определимся почему си быстрее жабы
есть только одно пруфабельное определение - си быстрее жабы потому, что на совершение действия А ему не нужно совершать дейтсвие Б. о чем ручь? о строительстве объектов и вызове череды колбеков для записывания какого нибудь несчастного стринга в память. ооп это априори медленно.

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

к слову мне кажется этот странный челлендж из ссылки - посчитать много даблов в мультипотоке, звучит как задача для гпу
Аноним 13/03/24 Срд 15:42:40 #74 №3084669 
>>3084554
>есть только одно пруфабельное определение - си быстрее жабы потому, что на совершение действия А ему не нужно совершать дейтсвие Б. о чем ручь? о строительстве объектов и вызове череды колбеков для записывания какого нибудь несчастного стринга в память. ооп это априори медленно.
Это слишком упрощенное определение, потому что:
1) совершение меньшего количества действий не всегда даёт быстрее выполнение на современных процах.
2) Java - мультипарадигма, а не чистый ООП, писать как на С никто не запрещает, даже с ручным выделением памяти
3) Тот же пример с размоткой цикла - сишка тупая и если ей сказали крутить циклы - она будет крутить циклы и нарушать instruction pipelining, в то время как джава умная и может понять что цикл можно развернуть и ускорить таким образом код.
4) возвращаясь к "совершение действия А ему не нужно совершать дейтсвие Б" -> джава может в рантайме понять что ей не нужно что-то совершать и таким образом будет быстрее кода, который не адаптируется к рантайму.
А захламить код мусорными аллокациями можно и на С, было бы желание.

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

>к слову мне кажется этот странный челлендж из ссылки - посчитать много даблов в мультипотоке, звучит как задача для гпу
Ну так челлендж выжать максимум конкретно из джавы, а не просто считать числа где-нибудь
Аноним 13/03/24 Срд 16:43:45 #75 №3084755 
>>3084669
>сишка тупая
кукарек, ничем не подкрепленный
>джава может в рантайме понять что ей не нужно что-то совершать и таким образом будет быстрее
время на "понять" конечно же не нужно, ведь это происходит по волшебству

>конкретно из джавы
типичная жавазадача - компайрить даблы, верим

>суррогатные гонки - это и есть суть бенчмарков, ты о чем?
то к чему они пришли, а не их суть
Аноним 14/03/24 Чтв 17:14:29 #76 №3086159 
image
image
пизда вам цифры ебаные
Аноним 14/03/24 Чтв 18:10:17 #77 №3086197 
>>3084755
Я тут мимо проходил, если что

Бля, даже для кубейсика был компилятор, который исполняемый файл выдавал.
Для тех же джавы и сишарпа есть АОТ, которая выдаёт машинный код. Только это нахуй не надо, потому что собираешь в машинные коды ты для конкретного набора инструкций, и на более старых процессорах это просто не запустится, а на более новых не будут использоваться новые сокращающие время исполнения инструкции.
В это же время байткод джавы, ИЛ сишарпа, да даже код джаваскрипта выполняются рантаймом, который знает, что поддерживает процессор, а что нет, и во что можно код переводить, а во что нельзя.
Аноним 15/03/24 Птн 05:03:31 #78 №3086615 
>>3086197
>рантаймом, который знает
ему надо в што где когда
Аноним 15/03/24 Птн 06:32:39 #79 №3086630 
>>3086615
тебе надо в клуп веселых и находчивых
Аноним 15/03/24 Птн 15:24:15 #80 №3087089 
>>3042192 (OP)
Если я в проге использую printf с параметром %d, компилятор засовывает в прогу весь функционал функции или даже stdio.h? Как удалить ненужное?
Аноним 15/03/24 Птн 17:01:46 #81 №3087213 
image
>>3087089
линкуй только функцию
так как есть скрытый флаг в компиляторе -lstd то линкер так или иначе найдет бинарное исполнение любых функций из стд либы без хидера (малоки хуялоки)
вопрос лишь в том нахуй оно тебе надо? бинарь все равно форматный, будут просто куча пустых адресов, покури ELF если ты на винде
Аноним 17/03/24 Вск 10:29:52 #82 №3089003 
>>3084105
В чем проблема определить сначала размер большей строки, и тогда по смещению от потока вывести ее?
Аноним 17/03/24 Вск 12:26:26 #83 №3089112 
>>3089003
В том, что ты не читал пост, на который отвечаешь.
Аноним 17/03/24 Вск 14:41:56 #84 №3089393 
Screenshot2024-03-17-14-35-25.png
>>3089112
>>3084105
Аноним 17/03/24 Вск 16:22:27 #85 №3089498 
image
>>3089393
Чо сказать то хотел?
Аноним 17/03/24 Вск 16:48:29 #86 №3089517 
>>3086197
>даже для кубейсика был компилятор
Что значит даже? Для бейсика есть компилятор, а для джавы и шарпа нет, потому что, в отличие от бейсика, жабошарп это скриптовое говно, а не языки программирования.
Аноним 17/03/24 Вск 16:54:26 #87 №3089524 
>>3089498
Перевод некорректный
Аноним 17/03/24 Вск 16:59:16 #88 №3089542 
>>3089524
Да я не настаиваю, решай задачу которая тебе удобней. В любом случае это был просто челлендж ак 100 задачек литкода или типа того, и каждый сам для себя решает принимать участие или нет. Я только прошу внимательно читать условия задачи, а то я уже заебался повторять одно и то же.
Аноним 17/03/24 Вск 17:49:32 #89 №3089618 
>>3089542
Ты вбросил задачу, которой нет в КР. И очень даже возможно, что она не решаема
Аноним 17/03/24 Вск 18:30:52 #90 №3089767 
image
>>3089618
Есть. Решаема. Тебе не надоело набивать посты этим бесполезным спором? То перевод тебе не нравится, то вообще задачи нет такой.
Аноним 18/03/24 Пнд 08:28:36 #91 №3090322 
image
Ошибся, но где?
Есть какой нибудь гайдик что засунуть в мантиссу и сонование чтобы получить максимальное и минимальное значение флоатов по границам? Я ничего не нашел в интернетике кроме формулы.
Пойду пока цветовую схему поковыряю, а то дефолтная всратая.
Аноним 20/03/24 Срд 18:43:24 #92 №3094012 
>>3042192 (OP)
Всем салют. Чисто из любопытства: как в чистых сях обстоит дело со строками, конкретно с кодировкой? Вот чтобы максимально переносимо было, какой тип используют люди? Utf8, или 16 или 32?
Спасибо
Аноним 20/03/24 Срд 19:18:05 #93 №3094041 
>>3094012
я не иксперт, но вроде как в чистых сях есть какая то библа в наборе стандарта которая работает с вайдчарами и переносимо покрывает все кодировки
но я хз, не пишу переносимые. обработчики текста, так что на своей машине юзаю утф8 юникоды где латинские в один байт русские в два вот собсна и все
Аноним 20/03/24 Срд 20:18:20 #94 №3094103 
>>3094012
>чтобы максимально переносимо было, какой тип используют
Первые 128 символов ascii
Аноним 20/03/24 Срд 20:38:23 #95 №3094136 
>>3089517
>>даже для кубейсика был компилятор
>Что значит даже? Для бейсика есть компилятор, а для джавы и шарпа нет, потому что, в отличие от бейсика, жабошарп это скриптовое говно, а не языки программирования.
Это ложь.
https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/?tabs=net8plus%2Cwindows
Для джавы тоже есть.

Повторяю, в подавляющем большинстве случаев JIT лучше, чем нативная компиляция, потому что JIT может транслировать твою программу в команды текущего процессора, используя всю его мощь, а говноязык без JIT может только нацелиться на какой-то конкретный процессор, причём на более старых моделях программа просто не будет работать, а на более новых она будет выполняться неоптимально.
Аноним 20/03/24 Срд 20:42:41 #96 №3094140 
>>3094136
да успокойся ты, джитошиз, покури флаги компилов и статистику по используемым инструкциям процессоров
а еще раз тебе не лень срать ссылкми принеси джит компиляцию которая юзает все 2к+ инструкций современно проца
Аноним 20/03/24 Срд 23:23:15 #97 №3094343 
я прпльно понимаю что для иучения с в visual studio мне нужно иметь примерно 50 гб свод места? пиздец много весят "файлы" для него. охуеть.
жаль а) я нищий б) у ноута всего один слот ссд.
придется отлодить учебу (
так бы купил 8тб ссд м.2
Аноним 21/03/24 Чтв 00:09:49 #98 №3094382 
>>3094140
>покури флаги компилов и статистику по используемым инструкциям процессоров
а можно просто использовать жабку и в ус не дуть
Аноним 21/03/24 Чтв 00:12:30 #99 №3094384 
>>3094136
>Для джавы тоже есть.
Вот кстати
https://www.graalvm.org/latest/docs/introduction/
Аноним 21/03/24 Чтв 08:52:06 #100 №3094528 
>>3094382
а можно просто писать на сишечке и в ус не дуть
Аноним 22/03/24 Птн 13:59:45 #101 №3095859 
>>3086630
c если нужен минимализмc++ если проц без хидера (малоки хуялоки)вопрос лишь в отличии от бейсика, жабошарп это скриптовое говно, а лениво, час ютюба 2 строчки кода в рантайме понять то дефолтная всратая.
Аноним 22/03/24 Птн 19:58:10 #102 №3096372 
>>3095859
ты лиспом объебался чи шо? переведи на человеческий
Аноним 24/03/24 Вск 12:37:22 #103 №3097769 
image
image
схера ли варнинг?
сначала мы определяем что это присваивание и что инкремент постфиксный (после присваивания)
потом начинаем вычислять правую часть присваивания
где сначала вычисляется условие тернарника, а затем вычисляется одна из его веток
потом происходит само присваивание
и вот только теперь постфиксный инкремент

докажите что компилер не даун?
Аноним 24/03/24 Вск 14:37:08 #104 №3097828 
>>3097769
Ну да, на пустом месте ругается. Но может быть у него крыша едет из за тернарной операции?
Аноним 24/03/24 Вск 15:06:36 #105 №3097841 
>>3097769
Это UB. Поведение зависит от того, будет ли сначала выполнено выражение слева от знака равенства, или справа. Так что ругается он по делу. Не делай так, короче.
Аноним 24/03/24 Вск 15:10:30 #106 №3097849 
>>3097841
приветствую уб шиза в этом итт треде
поясни за выполнение выражения слева от знака равенства или справа
как вычисление этих частей соотносится с приоритетом вычисления постфиксного инкремента слева от знака присваивания?
Аноним 24/03/24 Вск 15:32:25 #107 №3097895 
>>3097769
https://en.cppreference.com/w/c/language/eval_order
> и вот только теперь постфиксный инкремент
Найди ордеринг рул который говорит что сайд-эффект постфиксного инкремента вычисляется после assignment оператора.
Я сходу такой не нашёл, есть что-то похожее в последних стандартах плюсов.
Аноним 24/03/24 Вск 15:39:48 #108 №3097912 
image
image
image
>>3097895
ну вот например тебе твой ордеринг рул который говорит что сайд эффект постфиксного инкремента вычисляется после эсс игнмент оператора
как видно из таблички приоритетов = и += обладают одним уровнем приоритета выполнения и вычисляются справа налево

и пик 3 небольшая справочка для тебя лично, любителя носится со стандартом как со святой грамотой

лучше бы ты K&R читал а не хуйней маялся
Аноним 24/03/24 Вск 16:43:20 #109 №3098043 
>>3097849
> скрины из K&R
Ну хуй знает.
> и вычисляются справа налево
Я аж сначала охуел от такого пиздабольства, потом открыл и понял что "справа-налево" это сука про ассоциативность оператора. И в этой же сука главе тебе говорят что порядок вычисления операндов не специфицируется для большинства операторов, и приводят твой же UB как пример UB: a[ i ] = i++, долбоёба ты кусок.
> любителя носится со стандартом как со святой грамотой
Если в стандарте нет явно-указанного ордеринга вычисления, они спокойно могут быть как угодно упорядочены компилятором, и разрабам компилятора похуй что ты там думал, щенок ебаный.
Аноним 24/03/24 Вск 16:51:08 #110 №3098074 
>>3098043
ладно хуесос этот раунд ты выйграл уб так уб
Аноним 24/03/24 Вск 16:59:50 #111 №3098100 
image
image
зафиксировали проснулись подтянулись
Аноним 24/03/24 Вск 17:07:04 #112 №3098113 
>>3098100
Лучше на for поменяй, понятнее будет.
Аноним 24/03/24 Вск 17:16:05 #113 №3098121 
image
>>3098113
почему бы и нет
Аноним 25/03/24 Пнд 00:03:30 #114 №3098564 
Так все таки, что лучше (с фактами) jit или компиляция в машиный код?

И есть ли реальная компиляция джава/шарпа говна в машинный код.
Аноним 25/03/24 Пнд 00:06:51 #115 №3098566 
>>3098564
критерии лучшести огласите
ты же понимаешь что проц умеет только машкод выполнять?
Аноним 25/03/24 Пнд 00:31:21 #116 №3098585 
>>3098564
Лучше конечно компиляция в машинный код с глубокой оптимизацией. В идеале под конкретную модель процессора, с учётом его микроархитектуры.

Касательно c# - претензий к скорости программ не имею, но вот этот jit во время работы большого проекта (300 тыс. строк, не считая библиотек) очень неприятно и мерзко лагает. Слава богам что не часто. Но при старте программы есть несколько мест где реакция гуя достигает несколько секуд (!!!).
К этому быстро привыкаешь, потому что дальше всё работает весьма сносно. Но когда запустил аналогичную программу, написанную на компилируемом языке, было очень приятно работать из за неестественно отзывчивого интерфейса с нулевой латентностью.

Короче, однозначного ответа на твой вопрос нет.
Аноним 25/03/24 Пнд 00:48:08 #117 №3098603 
>>3098564
PGO на твоей пеке под твои юзкейзы со всеми --march=native, графитами, lto и прочим, чем гентушизы упарываются
Аноним 25/03/24 Пнд 11:11:26 #118 №3098923 
>>3098566
В плане скорости, эффективного использования ресурсов
Аноним 25/03/24 Пнд 12:24:48 #119 №3099029 
>>3098923
в этом плане компил в нативный машкод конечно же
за это заплатишь скоростью разработки
Аноним 25/03/24 Пнд 23:36:49 #120 №3099655 
>>3098564
>И есть ли реальная компиляция джава/шарпа говна в машинный код.
Конечно есть, иначе бы программы не выполнялись.
>Так все таки, что лучше (с фактами) jit или компиляция в машиный код?
В большинстве случаев JIT лучше - это факт
У джавы и шарпа есть возможность компилить сразу в машинный код, без JIT, как на C. Судя по бенчам выигрышь получается в потреблении памяти, но не в производительности (после разогрева конечно).
Иметь рантайм оптимизации лучше чем не иметь - это тоже факт

Вот пожалуйста
Аноним 26/03/24 Втр 02:56:52 #121 №3099710 
>>3099655
Был бы я не ленив, посоревновался бы с тобой, чья программа быстрее - твоя с git, или моя в нативном коде.

Например, N-ферзей
Аноним 26/03/24 Втр 04:01:11 #122 №3099718 
>>3099710
Это будет не соревнование языков, а соревнование кто ебанутей оптимизации напишет.
Я, при этом, абсолютно уверен, что программа на си будет быстрее программы на сишарпе/джаве хотя бы за счёт оверхеда из-за абстракций и управляемой памяти.
Одновременно я абсолютно уверен, что в большинстве случаев си не нужен, потому что код на си будет писаться раз в пять медленнее и содержать в пять раз больше богов. И выбор в итоге будет не между быстрой программой на си и медленной на джарпе, а между работающей программой на джарпе и недописанной на си.
мимо
Аноним 26/03/24 Втр 08:55:43 #123 №3099791 
>>3099655
упитанно
Аноним 26/03/24 Втр 09:22:29 #124 №3099813 
>>3099718
>программа на си будет быстрее программы на сишарпе/джаве
Если не будет сборки мусора, будут работать с одинаковой скоростью. Шарп и джава очень хорошо могут в оптимизацию.
Аноним 26/03/24 Втр 09:52:56 #125 №3099828 
image
>>3099813
>Если не будет сборки мусора
то это будут не жабошарпы
Аноним 26/03/24 Втр 14:05:12 #126 №3100307 
Продублирую сюда, не совсем про язык, но либа же тоже часть языка:

Согласно POSIX:
https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/

В math.h обработка ошибок зависит от значния math_errhandling. Если math_errhandling & MATH_ERRNO != 0, то в errno выставляется значение ошибки, если math_errhandling & MATH_ERREXCEPT != 0, то выкидывается соответствующий excpetion.

Тогда почему у меня при math_errhandling = MATH_ERNNO | MATH ERREXCEPT при вызове acos(2) не происходит исключения? glibc вроде как выполняет стандарт POSIX 2008, я проверил там точно также

Я ожидаю что мне придет SIGFPE, но де факто лишь errno выставляется
Аноним 26/03/24 Втр 14:32:47 #127 №3100367 
>>3100307
>math_errhandling = MATH_ERNNO | MATH ERREXCEPT
>math_errhandling & MATH_ERRNO != 0
>math_errhandling & MATH_ERREXCEPT != 0
я не наблюдаю эквала между a = b|c и a&c !=0 а ты наблюдаешь?
Аноним 26/03/24 Втр 15:13:26 #128 №3100450 
>>3100367
При условии того, что и ERRNO и ERREXCEPT 1 и 2 по POSIX соответсвенно.

Тогда a = b|c && b != 0 && c != 0 => a & c != 0 && a & b != 0
Аноним 26/03/24 Втр 15:20:31 #129 №3100454 
>>3100450
хмм ну вроде все верно. для чисел 1 и 2
а не пробовал вызвать троу макрос из глибси принудительно?
Аноним 26/03/24 Втр 15:34:35 #130 №3100464 
>>3100454
Не понял, про какой именно макрос ты говоришь?

Вообще я ожидал что будет что-то типа raise из csignal

Может я просто не правильно понимаю что имеется ввиду под invalid floating-point exception shall be raised, но нигде инфы не могу найти
Аноним 26/03/24 Втр 15:37:46 #131 №3100466 
image
>>3100464
не похоже на сигналы
Аноним 26/03/24 Втр 15:48:27 #132 №3100474 
>>3100466
Дык этож даже не glibc, а отедльная либа

Ну и не вышло к слову...
Аноним 26/03/24 Втр 15:58:17 #133 №3100483 
>>3100307
Отдельно попробовал с мюслями - тоже самое

А потом полез их сурсы:
/ if |x|>1, return NaN with invalid signal./

Реализация:
/ |x| >= 1 or nan /
if (ix >= 0x3ff00000) {
uint32_t lx;

GET_LOW_WORD(lx,x);
if ((ix-0x3ff00000 | lx) == 0) {
/ acos(1)=0, acos(-1)=pi /
if (hx >> 31)
return 2*pio2_hi + 0x1p-120f;
return 0;
}
return 0/(x-x);
}

ЗБс соотвествие стандарту
Аноним 26/03/24 Втр 16:39:49 #134 №3100534 
>>3100483
не хочу вдаваться в подробности, но
>ЗБс соотвествие стандарту
арифметика не может быть стандартизирована так как она за исключением ансигнедов абсолютно машинозависима
ты стандартошиз что ли?
Аноним 26/03/24 Втр 18:46:08 #135 №3100708 
>>3100534
Нет, просто делаю диплом по модельному тестированию на соответствие POSIX, и тут вот это начало стрелять

А на чем мне теперь проверяться то, раз тесты справедливо фейлятся?
Аноним 26/03/24 Втр 21:38:14 #136 №3101014 
>>3100708
хммм я наверное глупость сейчас скажу, но последнее время чот на меня напал интересный язык лисп, кажется он идельно подходит для быстрого прототипирования (макеты программ) ну и соответственно тестирования всякой фигни то же, но лисп СТРАННЫЙ, условно сумма всех чисел в обычном языке это забить массив, пройтись фором все сложить, в лиспе это (PLUS числа через пробел) вот и все
манит меня попробовать эту штуку
Аноним 27/03/24 Срд 02:12:17 #137 №3101271 
>>3099710
Пожалуйста, соревнуйся - https://github.com/gunnarmorling/1brc выбирай победителя, напиши свою имплементацию и попробуй
Аноним 27/03/24 Срд 02:15:56 #138 №3101272 
>>3099828
да нет, достаточно просто не сорить и всё
Аноним 27/03/24 Срд 02:17:51 #139 №3101273 
>>3099718
>программа на си будет быстрее программы на сишарпе/джаве хотя бы за счёт оверхеда из-за абстракций и управляемой памяти
ты можешь писать на джаве (и наверное на шарпе?) без абстракций и без управляемой памяти
Аноним 27/03/24 Срд 02:49:37 #140 №3101285 
>>3101273
А можно из буханки хлеба сделать трамвай, и линукс на домашний комп поставить.
Вся суть джарпа в менеджд коде и ООП. Глупо отказываться от таких удобных вещей в угоду небольшого буста производительности.
Аноним 27/03/24 Срд 10:00:56 #141 №3101462 
>>3101271
ой посоревновались >>3084361 выбираем си

>>3101272
ды да, достаточно просто выбрать нужный инструмент
Аноним 27/03/24 Срд 16:30:51 #142 №3102112 
>>3101462
>ой посоревновались
И что ты из этих картинок понял?
Аноним 27/03/24 Срд 16:43:11 #143 №3102125 
>>3101285
Конечно глупо, но это ведь абстрактное соревнование в скорости. Плюс к тому Ява позволяет выборочно писать высокопроизводительный код только там где это необходимо и писать как удобно там где нет смысла гнаться за скоростью.
Аноним 27/03/24 Срд 16:52:05 #144 №3102138 
я решительно не понимаю почему в жопу ужаленный джавист продолжает серить в треде лучшего языка программирования
ему нравится как его обоссывают?
Аноним 27/03/24 Срд 21:13:34 #145 №3102480 
image
image
изящно? или говно?
Аноним 27/03/24 Срд 21:39:38 #146 №3102511 
>>3102480
Говно. Но хороший компилятор способен оптимизировать это.
Аноним 27/03/24 Срд 21:59:21 #147 №3102533 
>>3102511
а что ты тут собрался оптимизировать?
Аноним 27/03/24 Срд 22:14:44 #148 №3102556 
>>3102480
Если гцц/мингв, то изящнее range switch.
case 'A' ... 'Z': и тп.
А тут у тебя восемь лишних проверок а худшем случае.
Аноним 27/03/24 Срд 22:24:55 #149 №3102571 
>>3102556
ну это не особо влияет задачка не под бенчмарки и эта функция вызывается 5 раз, все основные мощности в другом куске
ренджовый свич еще не был рассмотрен в этой главе так что его тут быть не могло
Аноним 27/03/24 Срд 22:37:32 #150 №3102591 
>>3102533
>а что ты тут собрался оптимизировать?
Во первых - ничего. Зачем мне оптимизировать твой код, пущай этим занимаешься ты и/или компилятор.

Во вторых, isdigit() и isalpha() для простоты.

В третьих, неоптимизирующий компилятор сгенерил бы такой говнокод, что ты бы охуел - s[p-1] на х86 выродился бы в нечто такое mov %al, (%esi,%eax, -1) и постоянно обращался бы к памяти.

Оптимизирующий компилятор выполнит обращение к памяти один раз, загонит значение из памяти в регистр и дальше будет сравнивать с регистром.
Аноним 27/03/24 Срд 22:56:47 #151 №3102623 
image
>>3102591
>Во вторых, isdigit() и isalpha() для простоты.
на пике просто наружка твоих издигитов изальф
это уже кому какие сексуальные предпочтения по душе, кто то любит блекбоксить кто то нет

>В третьих, неоптимизирующий компилятор сгенерил бы такой говнокод, что ты бы охуел - s[p-1] на х86 выродился бы в нечто такое mov %al, (%esi,%eax, -1) и постоянно обращался бы к памяти.
чот я тут такого не увидел
Аноним 27/03/24 Срд 23:18:32 #152 №3102643 
image.png
>>3102623
>чот я тут такого не увидел

Смотри внимательнее.

Как же ARM посасывает у x86 на этом примере. Загляденье.
Аноним 27/03/24 Срд 23:21:08 #153 №3102647 
>>3102643
у тебя процентики а тут их нет
а еще я тут могу только sp регистр опознать остальное не знаю
>Как же ARM посасывает у x86 на этом примере. Загляденье.
ну и в чем же?
Аноним 27/03/24 Срд 23:28:30 #154 №3102655 
>>3102647
>ну и в чем же?
4 инструкции вместо одной.
Аноним 27/03/24 Срд 23:30:14 #155 №3102660 
>>3102655
покажи как ты делаешь одну инструкцию
Аноним 27/03/24 Срд 23:39:08 #156 №3102666 
image.png
>>3102660
Аноним 27/03/24 Срд 23:48:26 #157 №3102678 
image
>>3102666
а такие мувы не считаются ансейфед или типа того?

видимо никто не собирается слушать байки о том как х86 ебет арм жопой
Аноним 27/03/24 Срд 23:52:22 #158 №3102680 
>>3102678
>а такие мувы не считаются ансейфед или типа того?
Так за этим ядро следит. Если к незамапленой странице полезет, то сгенерится прерывание, OC его перехватит и посмотрит что произошло - полезла программа в чужую память или страницы в свопе.

Если в свопе, то подгрузит страницу и свопа и перезапустит операцию, а если память чужая, то Core Dump и программа вылетела в ОС с ошибкой.
Аноним 28/03/24 Чтв 00:00:56 #159 №3102687 
>>3102680
бля чел
твой мув это ldrsb
ты как без вычисленных оффсетов по стеку решил грузануть мувом байты? получается ты меня наебываешь вот тут - >>3102655
точно так же будешь делать свои 4 инструкции
Аноним 28/03/24 Чтв 00:05:33 #160 №3102693 
>>3102687
>ты как без вычисленных оффсетов по стеку решил грузануть мувом байты?
Хмм. Ну да, я форшманулся. Две инструкции на ARM, одна инструкция на X86.
Аноним 28/03/24 Чтв 00:17:13 #161 №3102702 
>>3102693
насколько я знаю разница архитектур в том что на арме интрукции одинаковой длинны по машкодам а в х86 разной
думаю листинг асма не такой уж и показатель
не получится так что твой волшебный мув по машкодам и декодингу длиннее в тактах чем мой крестьянский мув в две инструкции? вот щепетильный вопрос
вообще я хуй знает какой то оффтредовый холивар надо в асмотред идти там срать этим
Аноним 28/03/24 Чтв 03:04:04 #162 №3102760 
>>3102702
>думаю листинг асма не такой уж и показатель
я придерживаюсь другого мнения.

Не сказать вот чтобы x86 настолько хороша, но плотность кода у неё повыше будет, чем у ARM.

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

> Вообще я хуй знает какой то оффтредовый холивар надо в асмотред идти там срать этим

Асмотред помер. RIP. А ОП опрометчиво упомянул ассемблер в названии темы, решив нагнать сюда анонов. У него почти получилось, хоть коряво и неумело.
Аноним 28/03/24 Чтв 15:35:43 #163 №3103653 
>>3100307
Итак, нашел причину тряски
Оказывается Posix ТАК ХОРОШО написан, что под raise invalid pointer exception он имеет ввиду лишь установку флага в структуре из <fenv.h>
Аноним 30/03/24 Суб 00:19:53 #164 №3106074 
А кто-нибудь шарит за асинхронный ввод-вывод в Linux? А то нужно скопировать файл с помощью aio_read и aio_write, а на выходе какая-то херня...
Код:
https://pastebin.com/EaiXPnUz
ЧЯДНТ?
Аноним 30/03/24 Суб 18:31:35 #165 №3106814 
>>3106074
Ну у тебя т.к. n == 1 чисто aio_read пройдёт и программа выходит, не? Мб просто не успевает aio нихуя сделать, программа выходит
Аноним 30/03/24 Суб 18:54:08 #166 №3106846 
>>3106814
>Ну у тебя т.к. n == 1 чисто aio_read пройдёт и программа выходит, не?
У меня же getchar в конце. Пока не нажму enter - программа не выйдет.
Аноним 04/04/24 Чтв 12:36:51 #167 №3111587 
image.png
image.png
Аноны, чёт ничего не понимаю!
Вроде у меня везде unsigned long long, а результат всё равно - превышение предельного значения (пик 1).
Щито делать? В чём причина?
Аноним 04/04/24 Чтв 14:52:46 #168 №3111716 
image.png
image.png
>>3111587
Аноны, я чутка улучшил ф-цию, но всё равное какая-то залупа происходит: величина переменной num правильная, а когда сохраняю её в массив, то он мне выдаёт превышение допустимого значения!!! Как это побороть?
Аноним 04/04/24 Чтв 16:48:06 #169 №3111822 
>>3111716
Может это залупа, отображающая числа в режиме отладки не понимает unsigned, и рисует так как будто число signed?

У тебя там по идее должно быть 1600...00000, а вышло -8....1616

Максимальное 64-битное беззнаковое целое оканчивается на 18...1615
Аноним 04/04/24 Чтв 17:09:51 #170 №3111842 
>>3111822
Да, анон, это, короче, мой косяк я в деббагере не увидел, что можно также unsigned выбрать.
И вообще я победил эту проблему - у меня спецификатор в sprintf был неверно указан.
Аноним 04/04/24 Чтв 21:31:31 #171 №3112085 
image
не могу заставить себя продолжить делать K&R, уже вторую или третью неделю прокрастинирую... как найти мотивейшон, анонцы?
ладно бы какая то задача попалась сложная и поставила бы в тупик, я бы себя понял, но я даже не вникал, чисто глазами пробежался что там надо atoi() переписать и все, тупо не могу даже файлик точнуть...
Аноним 04/04/24 Чтв 22:15:46 #172 №3112121 
>>3112085
>и поставила бы в тупик
Пиши на чистом Си, без использования ф-ций из стандартной библы, но только, если ввод/вывод, и то, можешь сам сделать эти ф-ции, используя низкоуровневые вызовы.
Аноним 04/04/24 Чтв 23:53:46 #173 №3112244 
>>3112121
да я так и делаю
хули толку, мотивации нет говорю же
Аноним 05/04/24 Птн 00:14:30 #174 №3112258 
>>3112244
А как ты их решаешь?
Компилируешь хоть?
Аноним 05/04/24 Птн 00:28:17 #175 №3112262 
image
>>3112258
канешн, пишу велосипедики, конпелирую, отлаживаю, стараюсь делать для общих случаев, но юникод с разной длинной символов уже заебал костылить его так что последние только на энглюсике работают
ну листинг с пика мало чо показывает, бинари на гит не заливаются, а дебаг выхлопы и кордампы я деличу прост (хотя там то же гитигнор на наих настроен, но прост привычка подчищать всякое говное ненужное)
Аноним 05/04/24 Птн 01:06:57 #176 №3112274 
>>3112262
>пишу велосипедики, конпелирую, отлаживаю, стараюсь делать для общих случаев

Логично. Правильно. Верно.

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

Не, в юникод тебе рано лезть. Правильно что пишешь на английском. Юникод это своя вселенная.
Аноним 05/04/24 Птн 09:19:06 #177 №3112475 
>>3112244
>хули толку, мотивации нет говорю же
Ну тут хуууй знает, чем тебе помочь. Отдохни, отвлекись, или, если нет мотивации, то и живи дальше в говне (в скрипто-макакном высоко-уровневом мире)!!!
Аноним 06/04/24 Суб 23:46:13 #178 №3114631 
шо такое сокет .
Аноним 06/04/24 Суб 23:54:56 #179 №3114643 
16196567560590.png
>>3114631

это файл но не файл. в него пишется информация для передачи, а читается для получения
Аноним 08/04/24 Пнд 10:02:13 #180 №3116165 
Пытался понять ошибку
Затем файл просто исчез непонятно почему и я ебанулся
:~/so$ vim lol.c
user@user-A320M-S2H:~/so$ gcc lol.c
lol.c: In function ‘main’:
lol.c:20:40: warning: passing argument 2 of ‘connect’ from incompatible pointer type [-Wincompatible-pointer-types]
20 | int result = connect(socketFD, &address, sizeof address);
| ^~~~~~~~
| |
| struct sockaddr_in
In file included from /usr/include/netinet/in.h:23,
from lol.c:2:
/usr/include/x86_64-linux-gnu/sys/socket.h:126:52: note: expected ‘const struct sockaddr
’ but argument is of type ‘struct sockaddr_in *’
126 | extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
| ^
user@user-A320M-S2H:~/so$ gcc -o lol.c c
/usr/bin/ld: cannot find c: No such file or directory
collect2: error: ld returned 1 exit status


Хуй мне кто поможет, но я ахуел, что файл просто так исчез и все что я писал
Аноним 08/04/24 Пнд 11:26:07 #181 №3116224 
>>3116165
Ето не так. Современный гцц не съест твой файл.
Аноним 08/04/24 Пнд 12:27:25 #182 №3116259 
>>3116165
>gcc -o lol.c c
>/usr/bin/ld: cannot find c
Ну ты почитай хоть что пишет. Не может найти файл "с".
Аноним 08/04/24 Пнд 14:02:46 #183 №3116340 
>>3116165
>incompatible pointer type
>‘const struct sockaddr ’ but argument is of type ‘struct sockaddr_in *’
>No such file or directory
помог тебе понять

>файл просто так исчез
ну мб у тебя остался вимдамп, а может и не остался нехуй вирусы всякие писать
Аноним 08/04/24 Пнд 14:08:57 #184 №3116343 
>>3116340
Во втором случае у него какая-то хуйня в командной строке. Ругается на неё.
Аноним 08/04/24 Пнд 14:11:31 #185 №3116344 
>>3116343
выглядит так будто ругается на параметр с в строке
>gcc -o lol.c c
но на первый взгляд все правильно, хоть и корявенько
>gcc lol.c -o c
Аноним 08/04/24 Пнд 15:02:06 #186 №3116373 
>>3116344
>>gcc -o lol.c c

Молись, чтобы в той директории у тебя не было файла с
Иначе твой исходник отправится в страну, откуда файлы не возвращаются. Ибо ключ -о требует аргумент (параметр).
Аноним 08/04/24 Пнд 15:11:19 #187 №3116382 
>>3116373
>>3116344
Так-то надо мейкфайл написать.
Можно сделать это один раз, написать "дженерик" мейкфайл, который потом всегда реиспользовать для мелких проектиков типа лаб.

CC=gcc
TARGET=c
SOURCE=main.c huy.c pizda.c nebo.c allah.c

all:
$(CC) $(SOURCE) -o $(TARGET)

ну и конечно по желанию клин и ран. Всё, универсальная сборка для подобных проектов готова.
Аноним 08/04/24 Пнд 20:08:19 #188 №3116552 
>>3116382
соглашусь с этим аноном
минималистичный тулчейн для поделок (текстовик + сборщик + линтер + тесты) это уже не только уровень, но и удобство
мейк такой же простой как и вим, чуть подрочить его и впринципе уже будет готов мейкфайлик со всеми таргетами ветвелниями параллельной сборкой флажками на тестолинтерах и прочими наваротами
потом уже можно поковырять какие нибудь грейдлы мавены если нужда есть для галеры

по изоляции приложунек я хуй знает, я ничо не юзаю никаких докеров кубернейтсов, пока что не было нужды
Аноним 12/04/24 Птн 15:16:43 #189 №3120324 
Почему за столько лет не разработали удобную инфраструктуру под си? Чтобы удобно было собирать проект одной командой, подтягивать библиотеки из репозитория? Такое ощущение, что всё застряло на уровне 80-90-х и не развивается.
Аноним 12/04/24 Птн 21:47:36 #190 №3120623 
>>3120324
чем мейк неудобен?
Аноним 12/04/24 Птн 22:02:05 #191 №3120633 
>>3120324
> Почему за столько лет не разработали удобную инфраструктуру под си?
Да а нахуй он нужен? Си никому не интересен кроме парочки нердов. Кроме программирования каких-нибудь PIC16 как альтернатива ассемблеру. Нерды умеют и любят пердолить конфиги. А обычным нормальным людям си нахуй не обосрался. Поэтому и удобную инфраструктуру никто не делает.
Аноним 12/04/24 Птн 22:58:07 #192 №3120658 
>>3120324
MS Visusl Studio.
Аноним 12/04/24 Птн 23:43:51 #193 №3120680 
>>3120633
это
Аноним 12/04/24 Птн 23:59:12 #194 №3120691 
>>3120324
>удобную инфраструктуру под си
Зиг
Аноним 13/04/24 Суб 02:16:33 #195 №3120718 
>>3120623
Да ему всё будет неудобно.
А make - хорош.
Аноним 13/04/24 Суб 05:52:21 #196 №3120736 
>>3120623
>>3120718
Он очевидно имеет ввиду аналог npm, pip и прочей такой хуйни, которая сама подтягивает зависимости.
Аноним 13/04/24 Суб 14:54:41 #197 №3120984 
>>3120736
пусть себе напишет такую хуйню
pip то же на сях написан полагаю
все написано на сях
одни только питухонисты о нердах каких то говорят
Аноним 13/04/24 Суб 19:23:33 #198 №3121286 
show(1).png
>>3120984

кроме го

го написан на
Аноним 15/04/24 Пнд 21:02:26 #199 №3124045 
>>3120324
> Такое ощущение, что всё застряло на уровне 80-90-х и не развивается.
Этот о чем-то догадывается.
Аноним 15/04/24 Пнд 21:34:32 #200 №3124080 
>>3120324
Meson уже есть, то что вы на него не перешли - ваша проблема.
Аноним 17/04/24 Срд 16:02:30 #201 №3126404 
>>3120736
Можно деб пакеты ставить, но вообще пакеты - это зло ёбаное.
Аноним 18/04/24 Чтв 14:52:17 #202 №3127516 
>>3079569
Когда понадобилось написать парсер, прочёл за выходные.
Аноним 18/04/24 Чтв 15:04:37 #203 №3127534 
>>3120324
vcpkg работает и под линупсом
Аноним 18/04/24 Чтв 18:49:33 #204 №3127830 
>>3114643
А куда тогда данные записываются/считываются при сокетном соединении?
Аноним 18/04/24 Чтв 19:10:26 #205 №3127854 
>>3127830
В буфер в сетевой подсистеме.
Аноним 19/04/24 Птн 07:07:57 #206 №3128130 
>>3127516
ну если прочесть = осилить
Аноним 19/04/24 Птн 14:55:52 #207 №3128661 
>>3114631
> шо такое сокет .
Oh boi https://docs.kernel.org/networking/skbuff.html
Аноним 19/04/24 Птн 15:57:53 #208 №3128722 
>>3114631
Шо такое сокет - это файлы,
Файлы, куда байты шлют сетями,
В дейтаграммах видео приходит без задержки,
Для надежной передачи сделан TCP.

Сокет - база для UNIX систем,
Для работы с сетью сокет нужен всем.
Там, где REST сервис шлет JSON,
Сокетом получается он.
Аноним 20/04/24 Суб 05:54:04 #209 №3129305 
Как в C/C++ можно вычислять и выводить рисунки на экран без всяких opengl(через системные вызовы)?
Аноним 20/04/24 Суб 06:10:26 #210 №3129309 
>>3129305
псевдографика/другие эйпиаи (например вулкан)
Аноним 20/04/24 Суб 08:26:40 #211 №3129343 
>>3129305
Никак. В современных многозадачных ОС с экраном работать невозможно, это прерогатива ОС которая пользовательским приложениям такого делать не позволяет, иначе одно приложение поломает другие. Если же пишешь под DOS, там просто пишешь в видеопамять и готово, так же в DOS можно пользоваться функциями BIOS, но они тормозные.
Аноним 20/04/24 Суб 08:40:39 #212 №3129349 
>>3129343
>это прерогатива ОС которая пользовательским приложениям такого делать не позволяет
А как тогда opengl работает?
Аноним 20/04/24 Суб 14:24:06 #213 №3129634 
>>3129349
тыр тыр тыр тыр тыр
Аноним 20/04/24 Суб 15:43:06 #214 №3129704 
>>3129634
Безусловно, ты, конечно, весёлый парень, но всё же - как opengl работает, если не через системные вызовы?
Аноним 20/04/24 Суб 17:34:26 #215 №3129787 
>>3129704
Ты и сам знаешь, даже текст обрезал чтобы было удобнее жопой вилять.
Аноним 20/04/24 Суб 20:09:42 #216 №3129920 
>>3129305
> без всяких opengl
Нет смысла игнорировать то что тебе даёт драйвер gpu.
Аноним 20/04/24 Суб 20:30:33 #217 №3129939 
>>3129787
>даже текст обрезал чтобы
Т.е. ты знаешь как оно работает, но не хочешь говорить! Ну и как же оно работает, если не через системные вызовы?

P.S. я не знаю как это работает, от того и задаю этот вопрос.
Аноним 20/04/24 Суб 21:31:35 #218 №3129990 
>>3129939
Библиотеки графики через системный вызов ioctl общаются с драйвером gpu.
Аноним 20/04/24 Суб 22:39:48 #219 №3130034 
>>3129990
Спасибо, анон!
Аноним 21/04/24 Вск 05:41:43 #220 №3130199 
>>3120324
>Почему за столько лет не разработали удобную инфраструктуру под си?
Разработали, и имя ей - UNIX. Командная строка рулит.

>Чтобы удобно было собирать проект одной командой
make и CMake в той же командной строке

>подтягивать библиотеки из репозитория
Средства Linux для работы с пакетами, а единого центрального репозитория нет. Сишники - люди свободные и гордые, их не заставишь ходить строем, и в цифровой концлагерь Шваба с жучиной похлебкой они не пойдут.

>Такое ощущение, что всё застряло на уровне 80-90-х и не развивается.
Дух старой школы, хакерской романтики и цифрового анархизма жив только в Си. Дедушка Столлман наш учитель и вождь, а порриджам-смузизлебам из пейсбука и реддита здесь не рады.
Аноним 21/04/24 Вск 05:55:23 #221 №3130201 
>>3129305
На низком уровне по-разному, зависит от архитектуры ОС. Например, в Linux можно записывать в файлы /deb/fb (фреймбуфер экрана) и /dev/dri (интерфейс DRI/DRM). Вот пример вывода 2D графики без библиотек, путем записи во фреймбуфер:

https://github.com/BartekLew/fblib/blob/fb-example/fbgrad.c

Библиотеки SDL, OpenGL, Vulkan и др. являются надстройками над ОС и позволяют делать это кроссплатформенно, не вникая в детали, не нужные прикладному программисту.

>>3129349
Реализация OpenGL и Vulkan предоставляется драйвером видеокарты и работает на уровне ядра. А пользовательское приложение уже вызывает OpenGL функции.
Аноним 23/04/24 Втр 11:47:34 #222 №3132647 
Подскажите литературу по Vala
Аноним 23/04/24 Втр 12:29:26 #223 №3132699 
>>3094012
Wchar_t не везде есть и не везде работает. Поэтому только char и utf8.
Аноним 23/04/24 Втр 13:10:06 #224 №3132785 
>>3132699
>только char
ну не будь таким строгим, не обязательно только чары, можно и инты, а в случаях ловли ЕОФа исключительно инт
да и вообще инты как то предпочтительнее, так как у большинства машин шина четырехбайтная - меньше жонглирования = быстрее рантайм
Аноним 23/04/24 Втр 14:07:02 #225 №3132836 
Как создать массивы гарантированной размерности элементов в 1, 2, 4 или 8 байт?
Аноним 23/04/24 Втр 14:16:22 #226 №3132845 
>>3132836
char arr[garantie_size] = {0};
Аноним 23/04/24 Втр 14:18:29 #227 №3132847 
>>3132836
>>3132845
или ты имеешь ввиду что это длина элемента в массиве что ли?
типдеф тогда слепи себе из структуры в котором массив чаров лежит нужной длины
Аноним 23/04/24 Втр 14:37:00 #228 №3132863 
>>3132845
А если 2 байта надо?

>>3132847
В других языках типы данных делают точной длины, поэтому можно делать массивы нужного размера, а си расплывчато. Тип может 1 байт, а может 2, иногда 4, хуй знает вообщем. Кто вообще это придумал? Неужели нельзя было сделать чёткие типы в 1, 2, 4 или 8 байт?
Аноним 23/04/24 Втр 15:12:10 #229 №3132899 
>>3132863
Нельзя, потому что наличие таких типов зависит от системы, на которой исполняется код. А вообще смотри типы в stdint.h, если не пишешь код под что-то экзотическое.
Аноним 23/04/24 Втр 15:13:10 #230 №3132901 
>>3132863
>Кто вообще это придумал? Неужели нельзя было сделать чёткие типы в 1, 2, 4 или 8 байт?
Нельзя, это зависит от железа. Я например имел дело с железкой с минимальной адресацией 16 бит, соответственно и char был 16 бит. Остальные языки или работают на виртуальных машинах, или это раст, работающий в тепличных условиях (не на любом говне).
Аноним 23/04/24 Втр 15:15:48 #231 №3132905 
>>3132901
В Vala как-то сделали типы с гарантированным размером (int8, int16, int32, int64, uint8, ..., uint64), хотя это кросс-компилятор поверх обычного си.
Аноним 23/04/24 Втр 16:12:18 #232 №3133006 
>>3132785
> ну не будь таким строгим, не обязательно только чары, можно и инты, а в случаях ловли ЕОФа исключительно инт
Я только и исключительно о представлении строк.
> да и вообще инты как то предпочтительнее, так как у большинства машин шина четырехбайтная
Отстал ты.
Аноним 23/04/24 Втр 16:16:34 #233 №3133009 
>>3132863
>. Кто вообще это придумал?
Ричи. Он отталкивался от В, где был один тип данных.
> Неужели нельзя было сделать чёткие типы в 1, 2, 4 или 8 байт?
Нельзя было вот так вот сплеча. На пдп-11 слово было длиной 36 бит.
Аноним 23/04/24 Втр 16:41:40 #234 №3133045 
А если я так напишу?
typedef signed char int8;
typedef unsigned char uint8;
typedef signed short int16;
typedef unsigned short uint16;
typedef signed int int32;
typedef unsigned int uint32;
typedef signed long long int64;
typedef unsigned long long uint64;
Аноним 23/04/24 Втр 16:45:15 #235 №3133047 
>>3133045
Не изобретай велосипед. Читай, что тебе пишут. >>3132899
Аноним 23/04/24 Втр 18:07:26 #236 №3133102 
Аноны, вопрос: Как понять с каким типом данных я имею дело? Т.е. задача такая: в зависимости от типа данных направить исполнение кода в нужном направлении? Например, при выводе на экран, т.е., в зависимости от типа данных, я должен выбрать необходимый спецификатор. Поискал в тырнете, и мне пишут, что можно использовать ф-цию typeof(), но эту ф-цию понимают компиляторы, начиная со стандарта С11. И мне стало интересно, а как до этого стандарта определяли тип данных? И какой алгоритм определения типа у ф-ции typeof()? И да, речь не идёт, допустим, о типах данных int или double, которые отличаются размером и можно ветвление построить через sizeof(), мне интересны такие моменты, как допустим long long int и double?
Аноним 23/04/24 Втр 18:33:34 #237 №3133120 
>>3133102
Никак. Что сам написал в объявлении, с тем дело и имеешь. И typeof() тебе не поможет решить такую задачу.
Аноним 23/04/24 Втр 18:37:56 #238 №3133121 
Хотя можешь форматную строку делать с помощью _Generic. Но это всё равно не
>в зависимости от типа данных направить исполнение кода в нужном направлении
Это просто удобная генерация кода на этапе компиляции.
Аноним 23/04/24 Втр 18:47:30 #239 №3133125 
>>3133102
> И какой алгоритм определения типа у ф-ции typeof()?
Это не функция.
Аноним 23/04/24 Втр 21:05:32 #240 №3133260 
>>3133120
Понял, анон, спасибо! Жаль!
Аноним 24/04/24 Срд 01:33:07 #241 №3133530 
>>3132863
>А если 2 байта надо?
тогда >>3132847
при условии что чар однобайтный
камон мы тут не на экзотике
Аноним 24/04/24 Срд 01:57:43 #242 №3133533 
>>3133530
>при условии что чар однобайтный
опять же чар всегда однобайтный так как чар это синоним байта на любой машине
Аноним 24/04/24 Срд 02:03:47 #243 №3133534 
>>3133102
полагаю дженериками/макросами ветвили, ну в общем то си как раз и предполагает, что такие ветвления делаются до рантайма
прямо в рантайме нахуя если можно до? ну это примерно кейс мультиплатформенности:
ифдеф дарвин
типдеф лонг инт инт32_т
типдеф лонг лонг инт инт32_т
эндиф

ну вот нахуя нам этот кусок в рантайме вычислять? нет никакой необходимости
Аноним 24/04/24 Срд 07:58:54 #244 №3133598 
А вы планируете переходить на более современный язык Vala?
Аноним 24/04/24 Срд 11:04:03 #245 №3133703 
>>3133598
>Vala
Да мёртвая твоя вала, сами гномерасты говорят, что нужно всё на расте писать. Кому ещё она была нужна, не представляю.
Аноним 24/04/24 Срд 12:29:41 #246 №3133793 
>>3133703
Но ведь раст сложный, а вала простая
Аноним 24/04/24 Срд 14:25:12 #247 №3133935 
>>3133703
Раст не подходит:
- Большой порог входа. Вы должны освоить borrowed checker семантику с которой поставляется Rust. И он совсем не похож на парадигму C к использованию которой мы все привыкли.
- Приличный, но недостаточный набор инструментов. До сих пор нет IDE для раста. Плагины для других редакторов кода в вечной бете.
- Очень мало GTK приложений написанных на Rust, там 5 или 6 toy приложений на которые можно посмотреть, состоящих из 200 строчек кода, но ничего большого сделанного на Rust я не видел(эмм fractal, привет, он уже был в 2017)
- Медленная компиляция, что плохо для итерационного цикла разработки который вам действительно нужен при разработке GUI
Аноним 24/04/24 Срд 14:26:12 #248 №3133938 
>>3133935
>Вы должны освоить borrowed checker семантику
ну охуеть супер сложное достижение лол
растоклоун твой раст хуйня из под ногтей
Аноним 24/04/24 Срд 14:50:04 #249 №3133959 
>>3133598
>переходить
зачем?
это какая то психологическая болезнь - постоянно переходить на инструмент посвежее? чисто по фрейду: в детстве играл деревянными игрушками прибитыми к полу а дноклы в сегу - теперь вечно прыгаешь на все что вышло вчера. мои соболезнования
Аноним 24/04/24 Срд 14:55:54 #250 №3133966 
>>3133959
Да, у меня не было компа до 15 лет, а до этого изучал программирование по книжкам и писал программы в тетрадках.
Аноним 24/04/24 Срд 19:55:13 #251 №3134241 
>>3133966
>писал программы в тетрадках
А как исполнял эти программы?
Аноним 24/04/24 Срд 20:17:21 #252 №3134271 
>>3134241
Я считал, что они все работают правильно
Аноним 25/04/24 Чтв 03:29:05 #253 №3134515 
Можно как-то к указателю прибавлять без адресной арифметики?
Например:
int pInt = 0;
pInt = pInt + 3;
в этом случае прибавится 3
sizeof (int)
а мне нужно, чтоб прибавилось 3 и выглядело не так уёбищно:
pInt = (int)((char)pInt + 3);
Аноним 25/04/24 Чтв 03:32:40 #254 №3134516 
image.png
>>3134515
звездочки отвалились
Аноним 25/04/24 Чтв 03:57:44 #255 №3134518 
>>3134516
>>3134515
Без адресной арифметики нельзя. Можешь использовать поинтер на чары или на войды и делать сдвиги нужного типоразмера.
Но вообще хуй пойми зачем тебе нужно сдвигать на 3 байта если это поинтер на инты.
Аноним 25/04/24 Чтв 05:59:50 #256 №3134535 
Пожалуй стоит добавить что это часть механизма переносимости сишника. На одной машине инты дефолтные четырехбайтные, а на другой вот допустим шестибайтные. В этом случае тебе не нужно парится и писать костыли чтобы вычислять нужные адреса на разных машинах. Все механики и типоразмеры уже зашиты в типс.аш и в стд либы нужной машины. Ты просто делаешь поинтер на инты и он каждый раз будет двигаться на сайзоф инта той машины на которую скомпилен. Очень удобно. Хайлевл язык. Никакой ебли с БЕ ЛЕ и размерами.
Аноним 25/04/24 Чтв 20:36:16 #257 №3135496 
>>3134515
Макрос пиши.
Аноним 25/04/24 Чтв 21:34:49 #258 №3135597 
>>3134515
Ты расскажи что ты хочешь этим добиться, может есть путь попроще
Аноним 28/04/24 Вск 11:06:55 #259 №3137632 
>>3134515
Используй union, чтобы не приводить типы. Без самой адресной арифметики никак.

union P {
unsigned char ×pb;
int ×pi;
};

union P ptr;
ptr.pb += 3; // сдвиг на 3 байта
printf("%d\n", ×ptr.pi); // взять int по адресу

(x вместо звездочек)
Аноним 28/04/24 Вск 11:11:43 #260 №3137635 
>>3134518
>Но вообще хуй пойми зачем тебе нужно сдвигать на 3 байта если это поинтер на инты.
Мне такое требовалось для динамической кодогенерации. Указатель на int, short и т.д. - когда нужно записать параметр такого размера, указатель на байт unsigned char - когда нужно записать опкод инструкции. Еще возможно работа с видеопамятью, байты - отдельные цветовые компоненты, 4 байта - 1 пиксель. Во всех таких случаях следует использовать union.
Аноним 28/04/24 Вск 11:20:04 #261 №3137637 
>>3134535
>На одной машине инты дефолтные четырехбайтные, а на другой вот допустим шестибайтные
Для этого нужно использовать типы из <stdint.h> - uint32_t и т.д. Они явно задают размер в 1/2/4/ 8 байтов.
Аноним 28/04/24 Вск 11:53:50 #262 №3137666 
>>3137637
><stdint.h>
Это интринсики, задаются компилятором, а не стандартом, и зависят от машины. Естественно на машине с шестибайтным интом они будут отличаться.
Хотя конечно сейчас надо постараться, чтобы найти чтото настолько нестандартное.
https://en.cppreference.com/w/c/language/arithmetic_types
Аноним 28/04/24 Вск 13:55:08 #263 №3137832 
>>3137666
Машину с шестибайтным словом сейчас наверно будет тяжело найти. Сейчас практически везде стандартные архитектуры: x86, ARM, PowerPC, SPARC или RISC-X. На других тоже кратная 8 разрядность. Хотя PDP-7 (на котором появился первый компилятор Си) был как раз нестандартным, 18-битным.
Аноним 28/04/24 Вск 13:57:50 #264 №3137838 
>>3094343
поставь vs 6.0, ну и опционально плагин visual assist туда;
и то и то можешь спиздить на рутрекере;
Аноним 28/04/24 Вск 14:49:30 #265 №3137913 
>>3098564
jit это и есть компиляция байт-кода в машинный код;
иногда это называют еще и "интерпретатор компилирующего типа" чтобы отличать от "простого интерпретатора";
тащем то в вики неплохая статья https://en.wikipedia.org/wiki/Interpreter_(computing)
Аноним 28/04/24 Вск 16:37:43 #266 №3138041 
>>3137832
>Машину с шестибайтным словом сейчас наверно будет тяжело найти.
>>3137666
>Хотя конечно сейчас надо постараться, чтобы найти чтото настолько нестандартное.

Это было просто для примера взято с потолка. Всегда проще объяснять принципы на пальцах.

Меня вот из хардварных вопросов больше интересует почему не спроектируют шину потолще. Многоядерность есть, а широкие шины чтобы сразу по 100500 слов забирать - не, интовой достаточно, копошитесь там как нить, жонглируйте.
Аноним 28/04/24 Вск 21:46:33 #267 №3138260 
>>3138041
Вам подарили hdl - напиши шину сам.
Богатым и знаменитым будешь.
Аноним 29/04/24 Пнд 07:57:24 #268 №3138449 
>>3138260
Может мне самому еще и комплюктир сделать надо?
Аноним 29/04/24 Пнд 08:27:28 #269 №3138480 
>>3138449
Виртуальный - можно, есть такой курс. Начинаешь с логических вентилей, кончаешь ассемблером.
Аноним 30/04/24 Втр 20:15:33 #270 №3140114 
>>3138260
Эти дебилы на нём софт-процессоры делать начали.
Аноним 01/05/24 Срд 16:26:41 #271 №3141041 
Пытаюсь собрать окамл и с в один бинарник. Но почему то когда я добавляю файл bindings.o который был получен компиляцией исходника ocaml, вся сборка начинается выжирать 100Гигов оперативки (и больше). Как так получается, что попытка добавить один объектный файл приводит к такому результату?
Аноним 01/05/24 Срд 17:30:53 #272 №3141130 
>>3141041
Очевидо, что там ещё какие-то либы загружаюся в память
Аноним 01/05/24 Срд 17:35:15 #273 №3141140 
>>3141130
На 100 гигабайт?
Аноним 01/05/24 Срд 18:28:42 #274 №3141236 
>>3141140
Да хуй знает, чекни объектник там же таблица символов есть чо откуда куда и зачем. Либо ошибка в ней, либо он реально дохуя референсов тащит.
мимо
Аноним 01/05/24 Срд 18:29:42 #275 №3141238 
>>3141236
Ща попробую. Пока не очень понял что именно я там должен увидеть
Аноним 01/05/24 Срд 18:30:31 #276 №3141241 
>>3141238
Незакрытую скобку например.
Аноним 01/05/24 Срд 18:31:42 #277 №3141244 
>>3141238
U caml_apply2
00000054 D camlBindings
000001d0 d camlBindings__1
000001b4 d camlBindings__10
000001ac d camlBindings__11
000001a0 d camlBindings__12
00000194 d camlBindings__13
00000188 d camlBindings__14
00000168 d camlBindings__15
0000015c d camlBindings__16
00000144 d camlBindings__17
00000128 d camlBindings__18
00000048 d camlBindings__19
0000011c d camlBindings__2
00000038 d camlBindings__20
0000002c d camlBindings__21
00000020 d camlBindings__22
00000014 d camlBindings__23
00000004 d camlBindings__24
00000110 d camlBindings__3
000000fc d camlBindings__4
000000f0 d camlBindings__5
000000dc d camlBindings__6
000000d0 d camlBindings__7
0000009c d camlBindings__8
00000090 d camlBindings__9
00000000 T camlBindings__code_begin
000004aa T camlBindings__code_end
00000000 D camlBindings__data_begin
000001fc D camlBindings__data_end
00000440 T camlBindings__entry
00000220 T camlBindings__fix_union_349
000000d0 T camlBindings__flattern_type_351
00000200 D camlBindings__frametable
000000b0 T camlBindings__fun_420
00000330 T camlBindings__fun_433
00000064 D camlBindings__gc_roots
00000410 T camlBindings__ocaml_function_hello_407
000003d0 T camlBindings__ocaml_function_sum_367
00000000 T camlBindings__remove_duplicates_281
U caml_call_gc
U caml_c_call
U caml_curry2
U caml_notequal
U caml_register_named_value
U Caml_state
U camlStdlib
U camlStdlib__failwith_7
U camlStdlib__List__1
U camlStdlib__List__find_all_679
U camlStdlib__List__flatten_477
U camlStdlib__List__fold_left_521
U camlStdlib__List__length_aux_270
U camlStdlib__List__map_482
U camlStdlib__List__rev_append_308
U camlStdlib__Printf__fprintf_422
Аноним 01/05/24 Срд 18:33:19 #278 №3141245 
image.png
image.png
>>3141244
Аноним 01/05/24 Срд 18:42:30 #279 №3141259 
>>3141244
>>3141245
куча какого то нонейм говна тут вижу по циферкам которые не относятся к исполняемому коду
так что полагаю второй вариант - реально тащит дохуя референсов чтобы это твое говно на 1200 строк работало
скомпиль через раздутый своп да и все, в итоге я думаю линкер выкинет все оттуда на твои 100 гигов, это чисто какой то билдинг блоб для окемла, всяких типов хуипов и прочего говна под циферками
это лично мое мнение, я не знаю как на самом деле
Аноним 01/05/24 Срд 19:04:09 #280 №3141309 
>>3141259
>скомпиль через раздутый своп да и все
Уже выставил своп 128 гигов. Хуй знает куда дальше. У меня всего на диске 500. Еще, конечно, до 248 попробую поднять, если наскребу где то, но он так быстро все жрет, что я до сих пор думаю, что где то ошибка
Аноним 01/05/24 Срд 19:40:11 #281 №3141409 
1714581589497405.jpg
>>3141309
Вспомнил, что есть второй диск
Аноним 04/05/24 Суб 01:33:37 #282 №3144133 
5goRu4q-rO4.jpg
Есть книга/сайт где от-и-до расписан современный синтаксис "C"?

А то я работая в embedded, не зная его, но вижу часто такие конструкции что как будто и вовсне не язык, а какой-то плейбук с макросами.
Аноним 04/05/24 Суб 15:36:13 #283 №3144541 
>>3144133
ну чел, ты работаешь и не знаешь
а я знаю и не работаю
чувствуешь подвох?
врят ли тебе тут будут помогать, давай сам выгребай, удачи с наебом хозяина работодателя
а мы уже на дне
Аноним 04/05/24 Суб 19:03:47 #284 №3144851 
Спрошу тут. Это не совсем вопрос. Но тем не менее.

Обзавёлся серверов в домашней сети. Построил на нём инфраструктуру в виртуалках.. Самое главное - gitlab. Переащил в него пару проектов. Это предыстория.

Гитлаб нндоступен за пределами сервера.
Насколько безопасно открыть его в домашнюю сеть?
А насколько безопасно сделать его доступным из Интернета?
Аноним 04/05/24 Суб 19:27:29 #285 №3144885 
>>3144851
в сапорт гитлаба задай вопрос
Аноним 06/05/24 Пнд 00:15:46 #286 №3145990 
Как проверить, что можно вписывать и считывать из ячейки памяти так, чтобы не полетела вся программа?

Я думаю, что вполне может быть функция, которая возвращает возможность/невозможность обращаться к ячейке памяти.
Аноним 06/05/24 Пнд 00:30:11 #287 №3146000 
>>3145990
да очень просто проверить на самом деле
все адреса или их алиасы в виде названий переменных куда ты можешь писать/откуда можешь читать должны быть объявлены в коде заранее (декларативный язык же)
все остальные адреса и попытка записи туда это сегфолт, попытка чтения - 50/50 сегфолт
Аноним 06/05/24 Пнд 00:36:44 #288 №3146009 
>>3145990
а касательно данных которые ты можешь засунуть в ячейку памяти заранее объявленную в коде - тут то же все просто
инфа это инфа, "ophuy" это или числа абсолютно без разницы, можешь в массив интов сунуть строку и потом вычислить сумму всех элементов
инфа это просто биты и все, они приобретают какую либо форму только когда ты их к этой форме приводишь, например напечатав на экран printf("%d\n", a); приводишь к десятичному виду

подведем итог

можешь сунуть чо угодно куда угодно если это куда находится в пихаемом сегменте твоего процесса
Аноним 06/05/24 Пнд 00:58:32 #289 №3146025 
>>3145990
Нет, нельзя. Как ты себе это представляешь? У тебя же не просто обращение к ячейке как сам факт. А какое то действие с памятью происходит
Аноним 06/05/24 Пнд 10:12:14 #290 №3146140 
>>3146025
Я так понимаю, что на уровне системы может быть какая-либо таблица с указанием, какому процессу какая область памяти дана.
И из этого есть мысль, что как-то можно проверить доступность ячейки.
Аноним 06/05/24 Пнд 10:16:45 #291 №3146142 
>>3146140
В чистом С нет такого, это ОС специфичные вещи. Даже если есть, что ты с этой информацией будешь делать? Если ячейка в пространстве процесса, еще не значит, что из нее можно читать или писать
Аноним 06/05/24 Пнд 11:12:21 #292 №3146181 
>>3145990
Ты хотя бы ОС назови.
Под Виндой дофига чего можно было делать с памятью.

Ну а так-то, в общем случае, любое обращение к незамапленной странице вызывает Page Fault прерывание, ОС его смотрит и решает что делать - подкачивать память из свопа или прибивать программу.
Аноним 06/05/24 Пнд 17:08:07 #293 №3146602 
>>3145990
Ставишь обработчик SIGSEGV и разыменовываешь указатель. Из обработчика архитектурно-зависимым способом пропускаешь инструкцию.
Аноним 10/05/24 Птн 21:51:18 #294 №3151064 
>>3133935
ты дибил, зайди на гитлаб гнома, там все новые гтк4 на расте делают
Аноним 11/05/24 Суб 11:03:19 #295 №3151493 
>>3133938
>>3151064
Раньше была традиция разговаривать с пастами, теперь разговаривают с нейросетками. Прогресс, ёпт!
Аноним 11/05/24 Суб 18:05:23 #296 №3151932 
>>3133102
_Generic

Ну это в компайл тайм

#define ncw_is_array(arg) (((void ) &arg) == ((void ) arg))


#define ncw_gui_add_field0(gui, label, data, max_len) \
ncw_gui_add_field(gui, \
label, \
sizeof(label), \
_Generic(data, char: NCW_FIELD_CHAR, \
int16_t: NCW_FIELD_INT16, \
int32_t: NCW_FIELD_INT32, \
long: NCW_FIELD_NUM, \
double: NCW_FIELD_DOUBLE, \
char *: ncw_is_array(data) ? NCW_FIELD_STR : NCW_FIELD_CHAR), \
&data, \
&data, \
sizeof(data), \
ncw_is_array(data) ? sizeof(data) : max_len \
)
Аноним 12/05/24 Вск 00:10:38 #297 №3152431 
>>3151932
За такое надо убивать.
За такой код.
Аноним 12/05/24 Вск 00:15:42 #298 №3152438 
>>3152431
Согласен. Но ты чел не знаешь ради какого говна я это написал. Это был жутко быдло си код, полученный путём авто конвертирования проги с кобола на си. Дальше его пилили индусы и там ваще треш был. Я там микролибу написал вот с таким дерьмом, чтобы немного улучшить ситуацию. Мне даже старшие индусы премию дали за это улучшение.
malloc, free и unix Аноним 12/05/24 Вск 21:30:08 #299 №3153470 
Если получить кусок памяти через malloc и не отдать его перед завершением программы, этот кусок памяти освободится или будет весть занятым?
Аноним 12/05/24 Вск 22:58:56 #300 №3153560 
>>3153470
Освободится вместе с завершением программы.
Но если ты хочешь чтобы программа завершилась корректно, а не от нехватки памяти, то так делать нельзя.
Аноним 13/05/24 Пнд 18:51:14 #301 №3154685 
>>3151493
Сам ты нейросетка. Я глубоко изучил тему, поэтому дал развёрнутый ответ.
Аноним 13/05/24 Пнд 19:09:19 #302 №3154721 
>>3153470
Зачем же ты принес вопрос с зачета?
>>3153560
> то так делать нельзя.
Запретить! не пущать!
Аноним 14/05/24 Втр 06:32:42 #303 №3155208 
>>3154721
>> то так делать нельзя.
>Запретить! не пущать!
Ну ладно, можно. Но!
Так можно делать только тем, кто писал свой аллкоатор памяти и понимает как он работает. При этом не освобожать память дозволительно лишь для программ узкого класса задач, например для хитровыебанного консольного парсера каких-то документов со сложной структурой. И чтобы не стримовый был, а файлы с диска брал. Когда заведомо память не перелопнится. В общем, так можно делать только одному из миллиона, да и то не факт.
Аноним 14/05/24 Втр 08:51:22 #304 №3155266 
>>3155208
> Так можно делать только тем, кто писал свой аллкоатор памяти и понимает как он работает.
Достаточно прочитать доки.
Более того, можно и fclose не вызывать перед завершением. Однако лысые обезьяны так делают, хотя возвращаемое значение не проверяют.
> При этом не освобожать память дозволительно лишь для программ узкого класса задач
Большинство утилит командной строки так делают или могут делать.
Аноним 14/05/24 Втр 10:56:43 #305 №3155372 
>>3155266
>хотя возвращаемое значение не проверяют
если ты не проверяешь не значит все не проверяют
шо с ебалом, лысый бибизян?
Аноним 14/05/24 Втр 13:46:18 #306 №3155696 
>>3155266
А можно пример таких утилит, и когда выгодно не освобождать память? Просто интересно
Аноним 14/05/24 Втр 17:00:11 #307 №3155942 
Реально ли устроится си-разработчиком на удаленку? Или сейчас си - это только офис гараж с паяльником?
Какие типовые задачи решают на си в бизнесе?
Аноним 14/05/24 Втр 21:21:29 #308 №3156261 
>>3155942
> Какие типовые задачи решают на си в бизнесе?
Ну вот nginx напейсан на си. Некоторым нужен странный функционал от него - пишут модули.
Аноним 14/05/24 Втр 23:19:48 #309 №3156348 
>>3155942
Виртуализация, операционки, эмбед и легаси.
sage[mailto:sage] Аноним 15/05/24 Срд 16:34:56 #310 №3157046 
>>3045262
Прата точно есть. У меня у самого валяется. Читай на англ, в любом случае он нужен будет
Аноним 18/05/24 Суб 20:24:07 #311 №3160919 
>>3155942
Много легаси: биллинг, процессинг, бангкинг. Причём, это не всегда говнокод, но очень может быть.

Например, в инотехе допиливыют опенсурс для замены майкрософтской activedirectory - samba ad, которая написана на си.

Во всяких конторах разработчиках железа используются эмулятор qemu - тоже хорошо бы мочь допилить. Им же нужно пилить ядро под linux

Про nginx - чел написал.
Аноним 19/05/24 Вск 13:01:08 #312 №3161656 
Можно ли в си вызывать библиотеки для С++. Например, Qt?
Аноним 19/05/24 Вск 13:24:43 #313 №3161688 
>>3161656
Можно вызывать лишь те функции, которые объявлeны как extrn "C".

Не, шаряшие пацаны могут и метод класса вызвать из Си. Но на свой страх и риск, потому что это абсолютно непереносимо между...
Аноним 19/05/24 Вск 15:11:49 #314 №3161802 
>>3161688
Получается лучше учить С++, а не С.
Аноним 20/05/24 Пнд 00:13:31 #315 №3162392 
>>3161802
каму ат этава лучши?
Аноним 20/05/24 Пнд 00:35:00 #316 №3162413 
>>3161802
лучше учить джаву
Аноним 20/05/24 Пнд 00:37:28 #317 №3162417 
>>3162413
>топ-топ-топ
Аноним 20/05/24 Пнд 00:37:39 #318 №3162418 
Сап, я тот анон что ебется с системой тестирования для POSIX

На данный момент дергаю с питонидзе через CDLL сишные либы и оттуда получаю функцию.
Примерно как выглядит на примере math.h - с-шный файл обьявляет test_acos(double x) { acos(x) }, компилит в либу и питон использует этот test_acos.
Такой велосипед нужен т.к. ебу где и как будет находиться libc.
Вопрос - можно ли не через обертки экспортировать тот же acos?
Аноним 20/05/24 Пнд 01:34:42 #319 №3162437 
>>3162418
в твоем примере нет уже оберток кроме питухона ты ачём?
Аноним 20/05/24 Пнд 02:26:55 #320 №3162450 
>>3162418
Если ты создаёшь либу, которая линкуется с libc, как ты можешь не знать где лежит libc?
Аноним 20/05/24 Пнд 12:34:48 #321 №3162753 
>>3162418
F F I
F
I
Аноним 20/05/24 Пнд 22:39:01 #322 №3163502 
попробуй ray lib для отрисовки гуи, много языков поддерживает и быстрый
Аноним 23/05/24 Чтв 22:11:32 #323 №3167145 
image.png
В этой книге самый первый пример с Hello Wolrd не компилируется.
Позднее узнал, что она написана под древний стандарт, а текущий C 2017 уже другой.
Это ставит под сомнение идею учиться языку по этой книге, потому что дальше будет только хуже и я буду тратить время на проблемы совместимости стандартов, вместо обучения.

Есть более актуальные книги для 2017 версии языка?
Аноним 23/05/24 Чтв 23:16:07 #324 №3167235 
>>3167145
>не компилируется
cc hello.c -ansi

там читать -то нечего особо, епрст, язык маленький, книжка тоже. код поправить(указать тип int main() и вернуть 0) пара пустяков.
c11/с17 можно по докам и интернетам нагнать

а ты пишешь как робот зубрилка какой-то, неудивительно что с таким мышлением возникают подобные вопросы
Аноним 23/05/24 Чтв 23:35:26 #325 №3167249 
вообще не знаю кем надо быть чтобы не уметь гуглить, вкатунам уже бесплатно целые книжки дарят оффициально и без либгенов https://inria.hal.science/hal-02383654
Аноним 23/05/24 Чтв 23:44:12 #326 №3167258 
>>3167235
Я знаю как поправить этот код. Я просто ебал в рот запоминать неактуальные конструкции говна мамонта.
Аноним 23/05/24 Чтв 23:53:24 #327 №3167267 
>>3167235
>cc hello.c -ansi
Ещё с
>gcc test.c -o test.c-compiled -std=c89
сработало. Так понятнее. Спасибо.
Аноним 24/05/24 Птн 00:03:09 #328 №3167276 
>>3167267
>-o test.c-compiled
Прихуел от такого именования файлов.
Аноним 24/05/24 Птн 00:13:09 #329 №3167281 
>>3167276
Да, доебись до того что мне в голову пришло в /tmp набрать чтобы потестить
Аноним 24/05/24 Птн 00:58:50 #330 №3167307 
>>3167276
прикольно кстати
но лично мне нравится классические .о объектники и .b бинарники
Аноним 26/05/24 Вск 17:19:54 #331 №3170048 
Screenshot from 2024-05-26 17-14-11.png
Всем привет. Кто-то может пояснить, почему значимость теряется в одном случае как и задумано после 6ой и 15ой цифры после запятой, а в другом случае на одну цифру позже?
Аноним 26/05/24 Вск 18:07:20 #332 №3170085 
>>3167235
Не, ну вы понимаете, я весь такой умный. Да уж, были бы все такие умные как я. С таким великолепным мышлением. Эх, каким был бы мир вокруг тогда.
Аноним 26/05/24 Вск 20:46:29 #333 №3170237 
>>3170048
акругление/проскальзывание
/нить
Аноним 26/05/24 Вск 23:51:58 #334 №3170301 
>>3170048
Число значимых цифр одинаковое, цифра перед запятой тоже значимая.
Аноним 27/05/24 Пнд 00:33:54 #335 №3170324 
>>3170301
Пон, я думал, что значимые только после запятой. Странно.
Аноним 27/05/24 Пнд 00:43:52 #336 №3170329 
>>3170324
Точка плавающая. Раскладка по битам такая примерно, насколько я помню (для одинарной точности):
1 бит знак - 8 бит экспонента - 23 бита мантисса
Значимые цифры хранятся в мантиссе, кроме первого бита, он для экономии места считается всегда равным 1. Вот и получается, что 1.0/3.0 и 1.0//0.3 различаются только в экспоненте, мантисса у них одинаковая, а значит и число значимых цифр тоже. Сколько их там до и после запятой — не важно, это просто printf для кожанного мешка рисует число в привычном ему виде.
Аноним 27/05/24 Пнд 01:39:23 #337 №3170347 
Хотя не, посмотрел ради интереса битовую раскладку, она у них совсем разная. Думаю, тут это просто совпадение, что 7 цифр значимые для обоих чисел.
Аноним 27/05/24 Пнд 16:50:56 #338 №3171027 
>>3170347
почему совпадение? он же притефает во флоаты, экране просто куча флоатов типа
Аноним 28/05/24 Втр 00:29:34 #339 №3171456 
>>3171027
Потому что в десятичном представлении гарантирована точность 6 знаков (для чисел одинарной точности).
Аноним 28/05/24 Втр 04:43:00 #340 №3171482 
>>3170329
>1.0/3.0 и 1.0//0.3 различаются только в экспоненте, мантисса у них одинаковая,
Нет, поскольку экспонента двоичная, а не десятичная
Аноним 28/05/24 Втр 11:28:43 #341 №3171657 
>>3170048
_DIG дает гарантированное число цыфер. Если ты заставляешь gcvt идти дальше, ты поручаешь мусор.
comments powered by Disqus

Отзывы и предложения