Этого треда уже нет.
Это копия, сохраненная 11 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C Propaganda.jpg1,9 Мб, 2000x2610
C Programming Language #64 /clang/ # OP 1830513 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ https://wandbox.org/ или https://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2479.pdf (февраль 2020, с диффами)

Чем компилировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard и http://web.archive.org/web/20190213011655/homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

https://github.com/kozross/awesome-c

Онлайн-утилиты:

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

Прошлые треды:

- №61: https://arhivach.net/thread/610541/
- №62: https://arhivach.net/thread/616070/
- №63: https://arhivach.net/thread/623165/ >>1818156 (OP)
2 1830534
Хочу в новом стандарте бесконечную память, чтобы делать new и не проверять на ноль.
3 1830550
>>1830541 →
The C++ standard guarantees that it is legal to use a null pointer in a delete-expression (§8.5.2.5/2). However, it is unspecified whether this will call a deallocation function (operator delete or operator delete[]; §8.5.2.5/7, note).

If a default deallocation function (i.e. provided by the standard library) is called with a null pointer, then the call has no effect (§6.6.4.4.2/3).

Аналогично в С для вызовы free.
4 1830551
>>30534
Не проверяй. Если ты не ембеде, то у тебя в системе всё равно memory-overcommit включён и NULL никогда (почти) не будет.
5 1830552
>>30550
Я, оказывается, промахнулся тредом.
Сорян.
В любом случае, требования стандарта в этом плане одинаковые.
image.png29 Кб, 702x148
6 1830557
>>30552
Исправляюсь.
7 1830596
Ну-ка, как обнаружить переполнение при сложении 2-х long? Машина с дополнением до двойки.
8 1830609
>>30596
x = a + b
if(x < a) {
overflow;
}
9 1830632
>>30609
Это только для беззнаковых.
10 1830635
>>30632
Да.
Я только с беззнаковыми и работал.
Для знаковых надо определять возможность переполнения до сложения.
11 1830683
>>30596
в интернете есть код проверки, возьми там
12 1830686
>>30534
У тебя 0 может вылезти из-за фрагментации памяти. Поэтому все же надо бы придумать дефрагментатор оперативной памяти
Если ты точно уверен насчёт использования памяти своей программой - пиши свой аллокатор памяти на базе mmap и madvise.
13 1830737
>>30686

> Поэтому все же надо бы придумать дефрагментатор оперативной памяти


Только через managed возможно. В противном случае невозможно. Да и не нужно, пока есть страничная организация памяти.
14 1830813
>>30737

> Да и не нужно, пока есть страничная организация


Это 64 бита 48 бит хватит всем. А в 32-битных ОС есть проблема фрагментации адресного пространства, особенно со всеми этими рандомизациями.
15 1830821
>>30813
Пойми простую вещь - дефрагментация кучи невозможна, поскольку "дефрагментатор" не имеет понятия об указателях на выделенную память. Двигать блоки в памяти не проблема, но нет средств чтобы сообщить об этом программе, которая запрашивала память. При любой попытке склеить свободные фрагменты в куче, указатели в программе сразу станут невалидны и всё рассыпется.

Если тебя так волнует проблема фрагментации, пиши свою обёртку над malloc и free и добавь абстракцию, которая из нескольких фрагментов будет эмулировать непрерывный блок памяти.
16 1830828
>>30821
В Wolfenstein 3d была дефрагментация - у них было так что мог быть только один указатель на каждый блок памяти, указатель на этот указатель хранился в заголовке блока, соответственно дефрагментатор мог его обновить.
17 1830857
>>30821

> Пойми простую вещь - дефрагментация кучи невозможна


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

>>30828
В винде были Local/GlobalAlloc(), они возвращали хэндл, который программы и хранили вместо указателей. А для получения "реального" указателя требовалось сделать явный Lock(), который ставил блоку флаг, что на данные есть живые указатели. По Unlock() флаг убирался, и после этого система могла двигать блок как ей угодно безо всяких последствий (пользовательских указателей нет, внутренний указатель на блок в таблице хэндлов обновляла сама система). Сейчас апи остались (для совместимости), но ничего никуда уже не двигается, флаг стоит перманентно.
.jpg11 Кб, 480x360
18 1830884
>>1830817 →

> лямбду калбэк поинтером в сишную библиотеку с выкидыванием прерывания


А в обычном си вообще есть ловушка исключений?
19 1830905
>>30884

> лямбду калбэк поинтером в сишную библиотеку


Все таки оказалось что полноценно с видимостью переменных внутри текущей функции - нельзя, то есть использовать тут лямбды и смысла тогда нет.
20 1830971
>>30857
Решение с Lock/Unlock мне нравится. В этом что-то есть.
Возьму на заметку.
И ещё аргумент Exclusive в функции Lock не помешает - если TRUE то критическую секцию включить, если FALSE то подсчёт ссылок.
21 1831151
>>30857
В PalmOS что то подобное тоже было.
sage 22 1831166
>>30686
>>30828
>>30813

Дефрагментатор, съеби в свой /гд/ач и сосите там с гондотей друг другу хуйцы.

Здесь серьёзные люди общаются.
23 1831168
>>31166
Не надо мне ничего сосать, я натурал
24 1831169
>>31166

>С-тред


>серьёзные люди


Аххахахаха.
25 1831191
Лишний indirection, дебаф производительности.
26 1831331
>>30596
Это отчасти философский вопрос, или если угодно архитектурный - а что ты будешь делать, если переполнение произошло? Значит у тебя что то не то с данными, а значит надо было валидировать их заранее.

А так - логика простая.
Во-первых, переполнение будет только если знаки у обоих равны.
Во-вторых, в таком случае переполнение будет при условии a+b > LONG_MAX
Что можно переписать как a > LONG_MAX-b
(Переполниться это вычитание не может, т.к. a>0 и b>0, т.о. LONG_MAX-b >= 0)
Это для положительного случая, для отрицательного аналогично
Условие переполнения a+b < LONG_MIN
Переписывается как a < LONG_MIN-b

Пример на байтах
-101 + -100 < -128
-101 < -128 - -100 (== -128+100 == -28) переполнение есть

-101 + -10 > -128
-101 > -128 - -10 (== -128+10 == -118) не меньше, поэтому переполнения нет.
27 1831354
>>31331

> а что ты будешь делать, если переполнение произошло


Трапать или пересчитывать результат в бигнумах.

> логика простая.


Решение правильное, но громоздкое. Где битовые хаки?
28 1831375
>>31354

>или пересчитывать результат в бигнумах.


Так считай сразу в "бигнумах".
long long для кого придумали?
29 1831383
>>31354

> громоздкое. Где битовые хаки?


А сейчас же битовые хаки медленнее чем компилятор делает, не?
30 1831385
>>31354
И трапы по моему тоже не работают в современных компиляторах.
31 1831393
>>30596
Как вариант посмотреть в мануале проца наличие флагов для индикации переполенния при выволнении арифметических операций.
32 1831395
>>31393
Если это x86, то 11 бит регистра FLAGS
33 1831414
>>31393
Знаковое переполнение это UB (по умолчанию по крайней мере), не получится ли так, что ты выполняешь сложение, потом асмом проверяешь флаг, а компилятор выкинул сложение из за UB и ты глотаешь воздух?
34 1831422
>>31414
Если проверку делать через флаговый регистр, то и складывать лучше в асме, потому что тебе никто не гарантирует, что между выполнением арифместичекой операции в коде и проверкой в асме компилятор не вставит какую-нибудь операцию, которая сбросит этот флаг
35 1831498
>>31422
Ты не прав. Складывать лучше всего в бинарном коде.
36 1831505
Я недавно делал вот это >>1829511 →

Сама задача про криптографию и электронную подпись.
Производительность при переписывания лоу-левел части кода (математика, бигнума) с асма на С упала в десять раз.
В некоторой степени (но не только) из-за невозможности нормально работать с флагами, переполнением, производить умножение uint64_t на uint64_t с получением 128-bit результата без интринсиков, етц.
37 1831519
38 1831526
>>31519
Да хуй знает.
39 1831530
>>31505

>при переписывания лоу-левел части кода (математика, бигнума) с асма на С упала в десять раз.



Цена за простоту кодирования и портабельность.
А зачем переписывал-то? Мог бы на каждую платформу заделать библиотеку на ассемблерне .
40 1831531
>>31530

>А зачем переписывал-то?


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

>Мог бы на каждую платформу заделать библиотеку на ассемблерне


Дальше если требования будут, то буду приделывать, да
41 1831581
>>31393
>>31395
Это тред си, вы дисквалифицированы.

Я в шоке: почему мне предлагают складывать long long? А если нет такого типа? А если надо обнаружить переполнение 64-битного сложения?
42 1831584
>>31505
У тебя время подписи строго постоянное, я надеюсь?
43 1831587
>>31581

>А если надо обнаружить переполнение 64-битного сложения?


Тебе тут уже ответов накидали на все случаи жизни, а ты всё горишь.
44 1831589
Привет, я хочу программировать роботов. Нагуглил информацию, что в 2020 всех роботов, по для дронов и авто пишут на мисра си. Погуглил, что такое си - гавно мамонта из 1980 года. Неужели светлые умы не придумали ничего более прогрессивного за это время? Поясните плиз, почему этот язык актуален и останется ли.

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

Спасибо
45 1831596
>>31589

> почему


Это язык роботов, очевидно же.
46 1831605
>>31596
А как же Раст и си плюс плюс?
47 1831611
>>31605
Раст ещё слишком молодой.
Плюсы используются там, где они нужны.
48 1831612
>>31584
Ага
49 1831614
>>31589
А что в робототехнике появилось прогрессивного с 1980 года? Там же количество логики на уровне бота для кс1.6, написанного школьником 15 лет назад.
Снимок.PNG7 Кб, 664x142
50 1831615
Блять, я жопу устал зашивать. Учусь по МакГрату 4 издание, редактору в аду отдельный котел за такое непотребство уготовлен, 3 или 4 раз натыкаюсь на ошибки в примерах. Башка пухнет, прохожу указатели на функции, готовое задание такое:

https://pastebin.com/Qcc5QW5V

То ли я дебич конченый, то ли действительно пример корявый, но gcc выдает хуйню на пике, скобки по всякому ставил, что он от меня хочет?
51 1831616
>>31614

Бешаные кекогерцы и, как следствие, возможности сложной обработки сигналов в рилтайме.
52 1831617
>>31615

>int caller ((int(*function), (int), int b);


У тебя здесь 4 открывающих скобки и 3 закрывающих. Так не бывает.
53 1831618
>>31616
Сервоприводам и прочей поебени кекогерцы не нужны. В этом печаль робототехники - пока остальная индустрия уже general AI проектирует, в робототехнике все те же шаговики, никаких тебе наномышц и йоба-композитов.
Поэтому даже если у тебя в роботе будет нвидиа джетсон с бегающей на ней нейронкой, для кручения двигателями все равно будет достаточно той абстракции, которую предлагает сишка
изображение.png3 Кб, 662x66
54 1831620
>>31617
По идее так должно быть, но один хуй пишет это
55 1831621
>>31620
Вряд ли. Пришли фотку книжки с этой строчкой
изображение.png45 Кб, 684x448
56 1831622
>>31615
>>31617

В учебнике так написано
57 1831624
>>31622
Самая первая скобка лишняя
int caller (параметры)
int caller (параметр1, параметр2)
int caller (параметр1, int b)
параметр1=int(*function)(int) - указатель на функцию под именем function которая принимает int и возвращает int
изображение.png13 Кб, 851x235
58 1831627
59 1831630
>>31627
https://ideone.com/HAGtVb
Та вроде все работает, хотя и код странный, будто прошлись сканером по книжке, потом image to text(чем собственно и проебали все скобки, кое-где и лишние запятые есть), а потом переводили.
60 1831632
>>31615
Этак говнина заработала, но сука, я опять наткнулся на ошибку в примере знак разыменования не с той стороны поставлен. Улетел в стратосферу с этого учебника, полет нормальный.
61 1831636
>>31630
Как конверится пдф я не вкурсе, но разве артефакты на скане не должны остаться? Во всяком случае в других учебниках ctrl+c/v не прокатывало, текст с лишним мусором вставлялся
62 1831645
>>31632
Чем такой учебник, лучше курсы на Ютубе от Кумара из Раджастана.
63 1831697
>>31645

>курсы на Ютубе от Кумара


наркоман штоле?
64 1831719
>>31615
А зачем ты ставишь скобки в прототипах?
65 1831723
>>31615
У тебя весь код по пизде написан. Учебник нормальный, просто ты не понимаешь, что делаешь.
66 1831726
>>31723

>Учебник нормальный



Это тот, в котором скобки не парные?
Это тот, в котором автор не додумался сделать typedef указателя на функцию?

Нахуй такие учебники и их авторов.
67 1831729
>>31726
Возьми нормальный учебник блеадь. Зачем тебе перевод? Я понял бы если бы ты читал какой нибудь учебник написанный русским автором.
68 1831758
>>31729
Двачую.
Тем более, все равно английский придется изучать. Особенно, если хочешь получить адекватную работу.
69 1831770
>>31697
А почему бы и нет? Заодно человек сможет написать дефрагментатор стека для нужд треда после таких онлайн курсов.
70 1831882
>>31729
>>31758

i hope that I can write technical materials by myself.
That book is awful and must be burned.
Those, who promotes that book, must be burned too.
I beg your pardon for my English.
71 1832206
>>31615
>>31632
Ёпта, да ты так нихуя не выучишь дружок. В тех скринах, что ты скидываешь очевидные синтаксические ошибки - если ты не смог их заметить и поправить - то тему ты очевидно разобрал абы-как.
72 1832251
>>32206
Синтаксические ошибки я пофиксил, с указателем в прототипе функции я затупил, и поставил лишнюю запятую. Но бля, как бывалый вкатывальщик (можете гнать ссаными тряпками, но учиться не возбраняется, НИ В ОДНОМ учебнике до этого, я не встречал таких грубых ошибок в пунктуации кода. Это же не задачник по багфиксам, тут базу по си дают, а тут эта срань.
73 1832263
>>32251
Нахуй ты читаешь десятый учебник подряд? Прочитай K&R и пиздуй ебашить код
74 1832309
Если я использую free() на невыделенной malloc() памяти, будет ошибка?
75 1832316
>>32309
man free
76 1832329
>>32309
UB, зависит от реализации
77 1832340
>>32309
free можно вызывать только с NULL или с тем указатем, который ранее был получен с помощью malloc (и только единожды).
Всё остальное — UB.
78 1832351
аноны, привет
дело такое: хочу перейти из сферы микроконтроллеров в что-нибудь более серьезное а ля системное программирование
Вопроса два: насколько это востребованно в Мск и какой бы проект в портфолио ебануть, чтобы заинтересовать работодателя?
Спасибо
79 1832354
>>32351

> из сферы микроконтроллеров в что-нибудь более серьезное а ля системное программирование


Это не одно и то же?
80 1832392
>>32309
Менеджер памяти хранит свои данные по отрицательному смещению от указателя. Если ты ему скормишь рандомное число, он по отрицательному смещению найдет мусор и корруптит тебе кучу, в лучшем случае программа упадет
81 1832449
>>32392
Зависит от реализации. Причём не в ядре, а реализации malloc/free. В юниксах malloc изредка дёргаяет вызов sbrk().
iu.jpeg55 Кб, 1280x720
82 1832527
Олды помогите, нужен совет. Вот я щас сижу на кодварсе, да? И решаю задачу, одну, две и одну не осиливаю. Пишу всё на бумаге как положено, анализирую сначала че делать. Но попадается сука сложная задача, я не могу решить. Тупо пропускать её на следующий раз? Может я чего то не понимаю просто? Там же эти алгоритмы блять. Математика сука. А я в математике даунич.
Хотя вот была задача про прайм числа, я её решил с нуля. Оказалось просто. С помощью википедий.
83 1832557
>>32527

>Математика сука


Для пидоров. Решай нормальные задачи, приближенные к реальности.
84 1832559
>>32557
Куда мне блять реальные если я не могу даже эти решить? Тем более, они прокачивают мозг и помогают понять язык. Проверено уже.
85 1832562
>>32559

>Проверено уже.


Сотнями безработных маняматиков? Ну решай, хули.
86 1832568
>>32562
Иди нахуй даун. Про работу никто не спрашивал.
87 1832572
>>32568
Ну а хули тогда ноешь, ребенок?
88 1832584
>>32527
Ты просто тупой, не переживай
89 1832585
>>32572
Тебя уже один раз нахуй послали, еще раз хочешь?
90 1832586
>>32584
Бля ну ты тоже тупой, но что это меняет?
91 1832615
>>32559

>Тем более, они прокачивают мозг


Дебилу прокачивать мозг вредно. Просто дебил это еще ничего, а вот с прокачанным мозгом получается активный агрессивный дебил, от которого куча вреда сраньем, и ИТТ тред тому уже демонстрация.
92 1832622
>>32527
Математика прям жёстко в Си тебе не потребуется. Необходимо понимание основ и умение разобраться в математических моделях с интернета и закодить их.
Если ты смог решить задачу с простыми числами и закодить по описанию решето Эратосфена, то не все так плохо.
93 1832752
>>32351
Возьми L4/hazelnut и портируй на любимый МК.
94 1832795
>>32752

>Возьми L4/hazelnut и портируй на любимый МК


А ты не прост.
Где глянуть доку на hazelnut?
95 1832874
>>32752

>L4/hazelnut


Хуй будешь?
image.png20 Кб, 445x437
96 1832882
На выходе программа выводит ноль. В чем здесь ошибка? По условию программа должна выводить сумму кубов всех чисел, лежащих в промежутке [x ; y].
97 1832888
>>32752
реально хороший кейс что ли? я думал, что сейчас буду советы а ля НАПИШИ СВОЙ ОС, НАПИШИ ВИРТУАЛ МАШИН и тд
98 1832889
>>32882

> double pow(double x, double y);


Я думаю намек должен быть понят.
99 1832900
>>32889
не очень если честно
100 1832906
>>32900
pow результат возвращает, а на кладет в первый аргумент
101 1832916
>>32906
я все равно не понял, pow должен значение i возвести в третью степень, потом это значение прибавить к z и все. Объясни пожалуйста, где я не прав и как это пофиксить
102 1832937
>>32916
pow(i, 3); возведет в третью степень и отбросит результат, так как ты его никуда не запоминаешь
Надо запомнить результат в i обратно
не буду я ж все за тебя фиксить
image.png24 Кб, 509x420
103 1832940
>>32937
все равно выводит ноль
104 1832942
>>32940
Код не читай
@
Сразу отвечай


Где счётчик i увеличивается? Какое начальное значение? У тебя оно равно мусору со стека. Таки результат pow() лучше сразу плюсовать к z как-то так: z += pow(i,3);.

Лабораторку в универе делаешь?
105 1832954
>>32942
да, лабораторную
может в тг пройдем и объяснишь это?
106 1832956
>>32954

А ты няшный?
107 1832957
>>32956
а ты хочешь не только лабораторную обсудить?
108 1832959
>>32586
Поумнее тебя
109 1832960
>>32954
Имел опыт помощи лабораторных, который сводился к таким подсказкам что не так. Закончилось плохо. Люди вроде и с мозгами нихуя не освоили, лучше сам изучай построчно свою программу и пытайся понять что ж не так, иначе результат будет хуёвыйне хочешь ведь быть неучем?
110 1833199
пацаны, реально ли к вам из питона перекатиться?
111 1833204
>>33199
Ага
112 1833205
>>33204
вот так просто? никакого тролина и тд?
а насколько тогда мои знания будут нужны?
113 1833207
>>33205
А хуй знает. Смотря где ты будешь пытаться их применять.
114 1833211
>>33207
не ну понятно что сам питон в системном нахуй не нужен
ну кроме как разве всяких сборочных скриптов
меня в уныние вгонять 0.1 вакансия по системному проганью
все так плохо или не там ищу? (я не про embedded)
115 1833243
>>33211
Для того, чтоб найти работу, достаточно удачно воспользоваться одной вакансией.
116 1833248
>>32615
Чел, когда тебе дебилы будут отвечать неправильно на вопрос, ты тоже будешь агрессировать. Я не спрашивал про работу или нужно ли мне этим заниматься, просто долбоебы начали отвечать не в тему на те вопросы которые не спрашивали, из-за чего делается вывод что это какие то долбоебы. Я знаю что мне нужно и как мне это делать, вопрос был в другом. Но мани начали плакать мол, ууу он дегенерат решает че то там не зоробатывает деньги но я этого как бэ ни знаю уууу он плахой.
>>32622
Спасибо. Я кстати знаешь что заметил? Когда надо было закодить задачку с координатами, там понадобились знания икса и егрека. Тип расчитать расстояние которое нужно пройти за 10 минут и вернуться в точку из которой начал. Ты прав.
>>32959
Хуй будешь?
117 1833250
>>33211

> вакансия по системному проганью


>все так плохо или не там ищу?


Настоящий embedded, тот, который не Ардуино, это и есть системное программирование.

Но если тебе интересуют ОС, то ищи вакансии в МЦСТ, Базальте или подобных компаниях.

Но в целом в России это глухая тема. Если шаришь, то можешь перекатиться в Юго-Восточную Азию. В Китае и Корее тебя примут. Можно и в Японию, но сложнее. Это надо быть известным специалистом.
118 1833251
>>33211
Вакансий много чел, много. В моем городе хоть и платят мало, но имеются. Судя по всему там немного то и надо работать за сотку.
119 1833252
>>33250
Двачую про Китай, там он будет миллионером рмбишным.
120 1833258
Продолжаю искать: DO-178C.PDF (A и В тоже подойдут), DO-254.PDF, DO-385.PDF (пока некритично), ARINC-653.PDF.
Без смс и регистрации!
121 1833263
>>33250
грустно, очень грустно
не очень хочу из рашки переезжать. А так видел похожие вакансии только в Яндексе, Касперском и (внезапно для меня) Баду
122 1833264
>>33263
На апворке можешь всякие задания на патчинг ведра линукса поискать
123 1833265
>>33264
серьезно? Апворк и системщина? я думал там только сайты сраные
124 1833290
>>32622

>решето Эратосфена


Очко Тьюринга пусть закодит
125 1833294
>>33265
И не такое аутсорсят
126 1833295
>>33290
Отличная идея. А где можно инфу почитать?
127 1833309
>>33290
И пропустить через 3 анальные корзины истины Сократа.
128 1833310
Помогите всунуть хуй в допу. У меня не получаеца.
129 1833330
>>32557
Анон прости меня за грубость. Я шизик просто у меня нервы иногда сдают.
130 1833715
Пацаны, хочу вот начать контрибьютить в линукс кернел, но понимаю, что уровень пока не дотягивает
есть ли какие-нибудь похожие опен сорс системы, которые менее популярны и обладают меньшим комьюнити разрабов, но в которые ниже порог входа? Конечно круто, если это также системщина, но мб есть что-то иное интересное, где также было бы круто поучаствовать
Спасибо
131 1833887
>>33715

>но в которые ниже порог входа?


Разве что Minix. Но не факт что Таненбаум принимает патчи.
132 1833938
>>30513 (OP)
Соси писос
133 1833957
>>33715
Хуй будешь?
Все б хотели такой проект. Но их мало. Ищи по гитхабу рандомную ос или ядро на си.
И ссы на ебало любителям микроядер L4, они выблядки говноедских хуесосок.
134 1833960
Сыро тут как-то. Плесень вот расцвела -> >>33957
135 1833986
>>33957
бля иди нахуй вообще, шизик агрессивный
136 1833987
>>33957
Чем тебе L4 не угодила, болезный?
137 1833992
>>33960
Мать твоя с пизды расцвела
>>33986
Сам катись впизду
>>33987
Говно без задач
sage 138 1834006
Очередные непонятки
https://pastebin.com/FMV0xt8b

Компилируется без проблем, но при любом раскладе флаг вернет 1 , что за хрень
139 1834008
>>33938
Почему бафомёт на маскоте ГНУ?
140 1834017
>>34006
isdigit() return Value
A value different from zero (i.e., true) if indeed c is a decimal digit. Zero (i.e., false) otherwise.
141 1834048
>>34006
for(i; i<6; i++) => for(i=0; i<6; i++)
142 1834062
Первый раз писал на C, считай все выходные просидел над этим.
Прошу оценить и поставить звездочку указать на проблемы:
https://github.com/texhnolyzze/buddy
Думаю без CLion-а я бы еще долго над этим просидел (пиздец сколько до меня допирало, что void x -- это указатель на массив указателей).
Блин, после веба это прям глоток свежего воздуха лол.
Короче, хочу вкатиться в сишку, так как веб заебал и бизнес-логика заебала. Хочу программировать микроволновки и газовые котлы. Чтоб было ощущение, что занимаешься чем - то значимым. В общем нужен совет как найти работу C-программером, какой проект сделать и тд. Спасибо за внимание
143 1834064
>>34062
Блин, звездочки пропали, имелось ввиду void ∗∗x
144 1834071
>>34062
положи в репозиторий README.MD
и исходник сравнения скорости твоего менеджера памяти с либсишным.
145 1834086
поцоны, на мой вопрос только божм агрессивный ответил какой-то
реквестую вопрос еще раз, сорян
Хочу вот начать контрибьютить в линукс кернел, но понимаю, что уровень пока не дотягивает
есть ли какие-нибудь похожие опен сорс системы, которые менее популярны и обладают меньшим комьюнити разрабов, но в которые ниже порог входа? Конечно круто, если это также системщина, но мб есть что-то иное интересное, где также было бы круто поучаствовать
Спасибо
146 1834088
>>34062
бля респект за переход
расскажи немного плз - у меня просто такая же тема: прогал на си - ушел в геймдев - хочу обратно,но ссу, что не возьмут
на чем писал? по чем осваиваешь си? какие планы?
147 1834090
>>34086
Хуй будешь?
И я б хотел такой проект, если найдешь - кидай сюда, всем /pr/ будем контрибьютить.
Главное чтоб не микроядро.
148 1834091
>>34090
если ты тот же хуесос, то со второй попытки ответ несколько лучше
149 1834092
>>34062
Интересная техника аллокатора.
Было бы здорово, если бы он был сделан lockfree для МТ приложений, не использовать calloccalloc хорош, просто было бы круто не юзать вообще левые аллокаторы памяти, ну и сделать свои malloc/realloc/calloc/free.
Ну и тест производительности с glibcшным аллокатором было бы интересно глянуть.

Подобный подход buddy memory allocator использует jemalloc, он lockfreeв дебри не лез, но работает будто без мьютексов написан и умеет по аренам память выделять, очень быстрый, дефолтный аллокатор в freebsd. Прикольно было бы и с ним сравнить.
150 1834093
>>34091
А я уже другой хуесос.
Хуй будешь? Будешь у меня сосать? А я тебе за это крутой проект скину. На си. С микроядром и windows/visual studio.
151 1834102
>>34086
ReactOS
152 1834107
>>34102
Не пали гондоту быдлу.
153 1834111
>>34102
Давно оно проще Linux?
154 1834126
Есть массив, из него нужно взять два меньших числа и вернуть их сумму как результат.
Есть идеи как можно это сделать не используя сортинг? А ли к черту?
155 1834251
>>34126
Сделай за прохода для начала. Первый проход это поиск наименьшего. Второй проход - поиск наименьше, которое больше заданного числа. На этом этапе ты увидишь как свернуть поиск в один цикл.
156 1834456
>>34251
Из практической точки зрения сортингом будет лучше думаю, но ограничить при этом до двух итераций функцию сорта. Ибо лучший Варик с одним циклом это зачизить два начальных значения до максимальных по типу возврата и потом уже сравнивать, что не есть канон. Но это тем не менее хороший пазл.
157 1834485
>>34126
if(length == 2) return arr[0] + arr[1];

int min_a = max(arr[0], arr[1]);
int min_b = min(arr[0], arr[1]);

for(int i = 2; i < length; ++i) {
if(arr < min_a) {
min_b = min_a;
min_a = arr;
}
return min_a + min_b;
}
158 1834486
>>34485
Проебался со скобками, return min_a + min_b на строку ниже
159 1834841
>>34093
о долбаебик прилетел
ты как? уже все хуи пересосал? хуесосик
160 1834852
https://pastebin.com/sMagbAPd
И почему не бабахает?
161 1834860
>>34852
проверь что возвращает raise(babah);

The signals SIGKILL and SIGSTOP cannot be caught or ignored.

RETURN VALUE
signal() returns the previous value of the signal handler, or SIG_ERR
on error. In the event of an error, errno is set to indicate the
cause.
ERRORS
EINVAL signum is invalid.
162 1834983
>>34852
https://man7.org/linux/man-pages/man7/signal.7.html
Судя по мануалу по 0 индексу нету никакого сигнала. И отловить соответственно его никак нельзя судя по всему. Вполне вероятно на других posix системах так же
163 1835057
>>34486
Они чан, а что за функции max() и min()?
164 1835059
>>35057
Хочешь функции, хочешь макросы. Выбирай чего душа желает.
165 1835143
>>35059
А как они работают? Берут максимальное и минимальное число из массива?
166 1835153
>>35143
Из двух аргументов.
167 1835267
>>35143
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
168 1835288
>>35267
Бля бро рейдж массива может достигать 0 - INT_MAX
Но ты попал в точку на счет INT_MAX.
169 1835353
>>35143
Максимальное и минимальное из аргументов которые лежат на стеке.
170 1835376
>>35288
Больно читать твои вопросы. Потому что нет понимания у тебя.
Макросы min и max это просто подстановки проверки на меньшее или большее число. Они сравнивают два простых значния.

Иди наверное в тред С++, там есть шаблоны min и max для массивов. В Си тебе придётся писать цикл, пробегающий по всем элементам масссива и сравниваюший каждый элемент с найденным наименьшим.
171 1835406
>>35376

> Си тебе придётся писать цикл, пробегающий по всем элементам масссива и сравниваюший каждый элемент с найденным наименьшим.


Я об этом изначально подумал. А макросыч не понимаю всё равно, не дорос. Ну чуть-чуть, т.е это как шорткат, чтобы постоянно не писать if else?
172 1835416
>>35406
Макросы обрабатываются препроцессором и в компилятор попадают уже в виде Си кода. Во многих случая это даёт оптимизацию на этапе препроцессора. И повышает читабельность кода.

В макросы можно помещать разные вещи, не только проверку.
173 1835441
>>35416
Я еще до макросов не дошел. Я рак. По Прате на 12 главе малоки ток начал изучать.
174 1835675
>>35353

> лежат на на стеке


Чак Мур, ты жив ещё?
175 1835814
>>35353
Фрагментировано?
176 1835827
>>35675
Жив.
>>35814
Да, надо бы отдефрагментировать стек.
Вообще считаю операционные системы без дефрагментации стека неполноценными. Они убивают производительность игр на корню отсутствием этой важной функциональности.
177 1835851
>>35827
Сука, как же я ору с дефрагментации стека. Каждый раз вижу и не могу сдержать ржекич.
178 1835855
>>35851
А что смешного? Вполне серьезная идея. Возьму и напишу для ядра Линукс патч с дефрагментацией стека. Буду под виртуальными страницами стека физические дефрагментировать.
179 1835941
Короче, стак это место куда программа складывает автоматические классы хранилища, да? Входим в блок функций, или лупа, создаем авто переменную и она складывается на стак, потом выходим из блока и эта переменная исчезает, если мы не объявим её статической?

А heap, это типа "кучка" из динамически выделенной памяти с помощью малоков и т.д ? Там нет порядка получается или как?

Далее есть еще литералы (строки присваемые) и статические переменные которым память выделяет сам компилятор?

Прата нормально объяснит далее по книжке, или покурить надо по теме материала?
180 1835944
>>35941
До этого места не дошёл, но думаю что то типа зависит от конкретной реализации.
181 1835945
>>35941

> Там нет порядка


Для тебя нет. Адреса получаются случайно.
182 1835955
>>35945

>случайно


Как решит менеджер памяти в malloc.c. Он может быть и собственноручно написанным.
183 1835969
>>35955
Не подскажешь, почему называется кучкой? Потому что адреса кучкуются? Или как? Я почитаю по теме, но любая помощь будет драгоценна. Плиз
184 1836024
>>35941

> Короче, стак это место куда программа складывает автоматические классы хранилища, да? Входим в блок функций, или лупа, создаем авто переменную и она складывается на стак, потом выходим из блока и эта переменная исчезает, если мы не объявим её статической?


Если судить про язык Си, то на всё воля божья

> А heap, это типа "кучка" из динамически выделенной памяти с помощью малоков и т.д ? Там нет порядка получается или как?


В языке Си на подобное воля божья

> Далее есть еще литералы (строки присваемые) и статические переменные которым память выделяет сам компилятор?


И на это воля божья

> Прата нормально объяснит далее по книжке, или покурить надо по теме материала?


Да, но не может быть неправ, ведь на всё воля божья
185 1836431
>>35855
Нет, ты должен дефрагментировать стек как он есть. Например, бесконечно рекурсирующая пара функций должна работать в конечном объеме. Эту задачу уже решили для Чикена и нормальных Прологов, так что вперёд.
dead per dead 186 1836467
Подымите руку, кто способен сходу, не заглядывая в доку, написать КОД, отличающий snan от qnan?
187 1836472
>>36467
Пришлось погуглить термины.
188 1836480
>>36431

чёт я тебя не понимаю.
в схеме(в чикене, например) бесконечная рекурсия решается оч просто. У тебя каждый вызов функции создаёт новый энвайронмент (сопоставление символов реальным объектам), фика в том, что энвайронмент тоже нормальный объект (только тебе недоступный), потому. он может быть спокойно сожран обычным сборщиком суора. такие дела. никакой специальной дефрагментации стека не нужно.
189 1836484
>>36480
Ты хочешь сказать, их сборщик мусора не дефрагментирует стек?
А не слишком ли много ты на себя берешь? Мертвые объекты - дырки на стеке. Между ними живые фрагменты.
190 1836485
>>34062
Ох, двачую, анон.
Формошлеплю, а хочу ковырять железяки на Си. Ну, я рад, что не один такой, хех :)
191 1836487
уважаемые аноны, дайте плиз инфу где взять "Learn C the Hard Way". Не могу найти
с меня как обычно <3
192 1836502
>>36487
Ты же понимаешь, что такая книжка - это не трудный путь, а очередное инфоцыганство? Что мешает тебе поставить Бсд с исходниками и ПОГРУЗИТЬСЯ В ЯЗЫК С ГОЛОВОЙ?
193 1836608
>>36431
Я кстати дошел до фрагментаций, но не могу её понять щас.
>>36487
libgen.is
>>36502
Ой да ну
>>34062
Я щас параллельно изучаю Си с Пыхой. У меня нет денег на существование, а Си вакансию без образования я врятли найду, хотя попытаюсь, в треде отпишусь об успехах, до чего доведёт самообразование по Прате, Кернигану и куче книг по Си, алсо плюсах.
Думаю фрилансить делая людям форумы, сайты, магазины и параллельно заниматься тем, что люблю больше всего, Сишечкой.
194 1836611
Где вы кодите? Виртуалка или прям в системе?
sage 195 1836619
>>36467
Ну я. А еще я знаю про pseudo-infinity и pseudo-NaN, которым не нашлось места в IEEE-754, но которые однажды мелькали в этих ваших компьютерах, и из-за этого кое-где их все еще приходится тащить.

>>36611
Дай угадаю, ты воспринял всерьез шуточки про форматирование диска посредством UB в Си?
196 1836678
>>35969

> Не подскажешь, почему называется кучкой?



Потому что так перевели слово heap

А за "почему обозвали словом heap" так и за прочими похожими вопросами ща спалю годноту действенную методу.

Когда ты встречаешь английское слово и чувствуешь что вокруг него прямо таки вьются всякие контекстные мемасы и аллегории и что ты не догоняешь прикола, то заходишь в гугл, набираешь там это слово и, ВНИМАНИЕ, тыкаешь на вкладку картинки, после чего вдумчиво скроллишь увиденное.

В 70% случаев из 100 ты таким макаром увидишь подтекст того или иного слова как его воспринимает загадочная англосаксонская душа.

Второй способ (постоянное общение с носителями языкаи и перестройка внутреннего диалога на иностранный язык) более действенный - но требует заводить трактор и съебывать.
197 1836679
>>36619
Типа того. Вроде компилятор защитит меня от этого, верно? И утечки памяти не опасны на нубном уровне да? Я справшиваю в общем, я рак и мне нужно знать, смогу ли я случайно направив не туда указатель, или использовать малок, сломать систему?
>>36678

>Потому что так перевели слово heap


Это я перевел. Мог бы и догадаться. Алсо можешь идти нахуй я понял что ты несущественную хуйню несешь.
198 1836684
>>35969
Потому что данные лежат неупорядоченные как куча говна, в отличие от статически размеченной памяти и стэка.
199 1836687
>>36684

>Потому что данные лежат неупорядоченные как куча говна


Лучший, лучшее объяснение.
200 1836689
>>36484

>дырки на стеке



Вот смотри, шиз, ты сейчас делаешь классическую ошибку гондоти из треда откуда ты сюда съебал и где тебя уже обоссали.

Обосравшись на ровном месте.

Дырок на стеке не бывает по определению, этого самого стека - у него как у структуры данных добавлять и убирать можно только с конца, причем с одного.

И вот по причине этой промашки тебе в место красивой, пусть даже жирной, демагогии придется начинать демедж-контрол путем врубания тупого гондоти.
201 1836694
>>36684
Это понятно, а от кого сам термин пошёл. кто первый его употребил.
202 1836696
>>36689

>Дырок на стеке не бывает по определению


Двачую. Я сначала подумал, что он имеет ввиду динамическую память.
203 1836697
>>36608
У тебя Прата нормальный скан? Счас до 6ой главы дошёл глаза потекли, так херово видно.
pdf.png283 Кб, 1718x1168
204 1836708
>>36697
Вот такой
205 1836719
>>36696

Это залетный мамкин тралль из /gd/, там он в треде движкосрачей урину ловил, вот теперь и сюда перебрался.
206 1836722
>>36689

>Дырок на стеке не бывает по определению,


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

Ну это так, к слову. На самом деле я не понимаю что там надо оптимизировать и отношусь к этим предложениям как троллингу.
207 1836727
>>36722

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



>По улице идет старенькая бабушка (Б), рядом проходит пионер (П), подтянутый, бодрый, с барабаном. Бабушка громко чихает.

>П: - Будьте здоровы!


>Б: - Да, внучек, я здорова. А чихаю потому, что табачек нюхаю.


>П: - По мне, бабушка, Вы хоть хуй нюхайте, а пионер должен быть вежливым!



А никого не ебет что ты его не используешь - раз ты его выделил значит обязан лежать по условию контракта этой структуры данных, в противном случае контракт будет нарушен и стек перестанет считаться стеком.
208 1836734
>>36727

Вот, кстати, почему когда процессорам придумали виртуальную память, то аппаратную трансляцию и таблицу страниц им сделали, а дефрагментацию аппаратную нет, хотя уже в 70х и 80х были такие технологии и даже специальные процессоры-ускорители на них основанные.

https://en.wikipedia.org/wiki/Intel_8237
209 1836735
>>36734

Причем проблема эта действительно есть, именно из-за неё в AMD64 и позже в ARM появилась концепция больших страниц в 1GB, как раз для нивелирования фрагментации в тех случаях, когда традиционные мелкие странички засирали память.
210 1836768
Как вы профи пишете вообще код на работе? Если для меня простые задачки это брейнфак, то как вы пишете кучу кода я не понимаю.
211 1836789
>>36768

На работе 99% задач это бойлерплейт и типовая рутина, только и всего.

А задачки нужны что бы искусственно раздувать конкурс для кандидатов.
212 1836814
>>36789
Ну понятно что олимпиады ниочем. Но это тоже самое что и знать математику, она не нужна вообще, как Линус Торвальдс говорит, но бэкграунд который она дает, развивает мышление, это имеет пользу.
213 1836843
>>36814
Математика не нужна ровно до тех пор когда она нужна.
Потом резко начинаются изобретения неэффективных велосипедов.
То же самое и с паттернами программирования и алгоритмами тащемта.
214 1836846
>>36689
Толсто. Дефрагментатор стека - пользователь юнити.
215 1836862
>>36843
То есть ты за программные задачки для развития мышления?
216 1836874
>>36484
Не дырки, а отверстия.
217 1836877
>>36846

Так один хуй оба шизы.

Айда к нам в тред, кста, там у нас сейчас гондотя интерполятор, графики интерполирует, доказывает что дроуколы ничего не стоят.
218 1836989
>>36679

>случайно направив не туда указатель, или использовать малок, сломать систему?


Нет. Но теоретически, если компилятор будет таким образом интрпретировать UB, то это не будет противоречить стандарту.
219 1837016
>>36877
Можно поныть?
Хочу вкатиться к вам, но думаю что шансы у меня почти нулевые, а раньше были амбиции игры создавать, даже идеи были. А щас не знаю, если буду создавать игры это сложно. Пытался в сурсе ковыряться но плюсов не знаю и ООП. А на их изучение уйдет наверное еще год минимум. А деньги зарабатывать надо, планирую в Laravel вкатываться и пыху.
220 1837043
>>37016

У нас никаких игорь писать не нужно, у нас можно хвастаться вымышленными играми, можнотак же играть за годотю, тогда высасываешь из пальца аргументы, а когда всем тредом обоссут, то говоришь что это был не годотя а его подражатель.
sage 221 1837100
>>36679

> И утечки памяти не опасны на нубном уровне да


Да. Вот будешь драйвера писать - там опасно, спектр эффектов очень широкий, и бсодами не ограничивается. А в юзермоде ничего не сломаешь. Ну разве что, если ты написал программу для удаления да или просто записи файлов, и у тебя UB, ты можешь случайно удалить/перезаписать не тот файл, с каким-нибудь похожим названием. Но ничего нелогичного не произойдет.
222 1837123
>>37016
игры на чистом Си? нахуя?
224 1837238
>>36502
я хочу что бы мне объяснили как для дебила ^^
225 1837271
>>37211
ну и чего ты мне этим говно мамонта тычишь? не нашел игр на ассемблере?
226 1837274
https://kunaifusu.livejournal.com/551392.html

... Единственная причина писать на C вместо C++ это если нужно написать библиотеку, доступную из чего угодно, все остальные причины это хипстерское кривляние а ля Линусовское "C++ превращает любого человека в индуса!".

> Что значит хуже? Больше буковок набирать? Больше шансов багу словить?



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

... Давай по существу выступать, что такого можно написать на современном С, что не будет современным С++ или нельзя сделать современным С++ с минимальными изменениями? Вот чего можно сделать на современном С++ и нельзя на современном С: дефолтные аргументы, дефолтная инициализация, нэймспейсы, генерик функции, метапрограммирование. Это что было в, например, языке Лисп 1958го года и нет в современном С. И никто не заставляет тебя в С++ писать паттерны из книги четырех придурков и вызывать библиотеку, клянусь.

https://kunaifusu.livejournal.com/467799.html

.... Стотья и каменты в хакерньюз доставляют.
Пока Кармаковские кракозябры (это кодом назвать сложно, разве что в смысле "код Да Винчи") продаются и вызывают ахи и вздохи хипстеров я на хлебушек смогу заработать.

... Кармака пинать не надо. Сделать то, что он, даже умея программировать, это охуенно. Кармак же, со своим программированием на уровне шестиклассника, просто гений

.... Там куча проблем с перформансом и с логикой ...

https://kunaifusu.livejournal.com/210876.html

... все что он сказал из критики ПС3 было "может быть в этом поколении хбокс и не сольет", от человека, предсказавшего победу PowerVR над GeForce, такие заявы вообще мало чего стоят. Вот ежели бы он хоть одну консольную игрушку с тиражом хотя бы миллион сделал тогда может быть это можно было воспринимать как плохой прогноз для ПС3, а пока что - писишник о чем-то своем, писишном...

https://kunaifusu.livejournal.com/488092.html

... Как бы мы не смеялись над его кодом и "продвинутыми" алгоритмами ...
226 1837274
https://kunaifusu.livejournal.com/551392.html

... Единственная причина писать на C вместо C++ это если нужно написать библиотеку, доступную из чего угодно, все остальные причины это хипстерское кривляние а ля Линусовское "C++ превращает любого человека в индуса!".

> Что значит хуже? Больше буковок набирать? Больше шансов багу словить?



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

... Давай по существу выступать, что такого можно написать на современном С, что не будет современным С++ или нельзя сделать современным С++ с минимальными изменениями? Вот чего можно сделать на современном С++ и нельзя на современном С: дефолтные аргументы, дефолтная инициализация, нэймспейсы, генерик функции, метапрограммирование. Это что было в, например, языке Лисп 1958го года и нет в современном С. И никто не заставляет тебя в С++ писать паттерны из книги четырех придурков и вызывать библиотеку, клянусь.

https://kunaifusu.livejournal.com/467799.html

.... Стотья и каменты в хакерньюз доставляют.
Пока Кармаковские кракозябры (это кодом назвать сложно, разве что в смысле "код Да Винчи") продаются и вызывают ахи и вздохи хипстеров я на хлебушек смогу заработать.

... Кармака пинать не надо. Сделать то, что он, даже умея программировать, это охуенно. Кармак же, со своим программированием на уровне шестиклассника, просто гений

.... Там куча проблем с перформансом и с логикой ...

https://kunaifusu.livejournal.com/210876.html

... все что он сказал из критики ПС3 было "может быть в этом поколении хбокс и не сольет", от человека, предсказавшего победу PowerVR над GeForce, такие заявы вообще мало чего стоят. Вот ежели бы он хоть одну консольную игрушку с тиражом хотя бы миллион сделал тогда может быть это можно было воспринимать как плохой прогноз для ПС3, а пока что - писишник о чем-то своем, писишном...

https://kunaifusu.livejournal.com/488092.html

... Как бы мы не смеялись над его кодом и "продвинутыми" алгоритмами ...
sage dead per dead 227 1837276
Опять унылый форс антикармака.
228 1837397
>>37274
микрочелика обоссали в С++ треде, он пошел в С тред срать. Необучаемый.
229 1837421
>>37211
Пиши на Zig. Быстро, модно, молодежно.
230 1837426
>>37421
Весь рот в говне от вашего Zig. C код глазу всяко приятнее чем это ваше нинужно.
1546522560879.png40 Кб, 533x704
231 1837434
>>37426

>БА-БАХ


Да не, Zig вполне себе приятный.
232 1837438
>>37123
Да необязательно на Си, можно и на плюсах. Просто на их изучение уйдет уйма времени. Хотя интересно было бы. У меня лежит пратовская книжка по плюсам, там под 1к страниц.
233 1837446
>>37434
Не выдавай свои маняфантазии за реальность.
Был бы Zig приятным и самое главное полезным в реальной жизни - был бы у него отдельный тред в /pr/, и думаю комьюнити побольше чем 1.5 дебила.
234 1837447
>>37438
Самое страшное в плюсах это libstdc++. Остальное реально за 21 день выучить. Кроме шаблонов
235 1837470
>>37447
Т.е если я на сишке писать умею, то с плюсами тогда вообще проблем не будет и я быстро схвачу?
236 1837486
>>37426
То есть ты не можешь оценить няшность синтаксиса сам, без чьего то мнения, если кто то не создал тредик на дваче?
237 1837505
>>37470
Постепенно схватишь.
Концепция классов довольно проста. Когда осознаешь, всё на классах будешь делать, даже там где это ненужно и вредно. Затем придёт понимание когда они нужны, а когда нет. И тогда постепенно остальное изучишь.
238 1837559
Пачаны, как включать статические либы в бинарник при компиляции?
Дело в том что у меня программа на Qt а библиотеки сторонние на си, собранные их стандартными опциями компиляции. Хочу чтоб просто при компиляции qt/qmake их всасывало в бинарник программы но как то не совсем понимаю как это сделать

LIBS += -L/путь/до/либы/ -lname

Это я так понимаю оно просто внешние библиотеки линкует, естественно статические так не пашут.
Помохите уже въебал с горя нахуй
239 1837621
>>37438
нет ну плюсы это другое дело, там и привет от анриал и пр
но чистые Си в играх - это уже архаизьмь
240 1837681
>>37559

>статические либы в бинарник при компиляции


cc -o yourprog yourprog.c libstatic.a
cc -o yourprog yourprog.c -lstatic

LIBS += -L/путь/до/либы/ -lyoba

Если по пути L есть либа libyoba.a
241 1837684
>>37274

Дада, помню как этот мудак обосрался с железом каррентгена соснулей.

CPU БОЛЬШЕ НИНУЖЕН ЯСКОЗАЛ ВИДИТЕ БУДУЩЕЕ ЗА GPU, CPU ЭТО ПРОСТО ТАКОЙ СТАРТЕР ОТ МАШИНЫ УЖЕ НИКОМУ НЕ ВАЖНО НАСКОЛЬКО ОН МОЩНЫЙ

В итоге консоли, как это и ожидалось, сели на бутылку своих говноплатшетных процессоров, растеряв весь свой потанцевал.
242 1837721
В Unreal, например, с самого начала заботились о качестве кодовой базы. Можно посмотреть совсем старые версии, в которых еще даже нет Unreal Script, но в которых видно, что соблюдается строгая дисциплина писать чистый и логичный код, пусть и в несколько своеобразном стиле, не совсем по-моему уместном в игровом коде.

http://talonbrave.info/files/software/games/unreal/source/
243 1837727
>>37684

>консоли сели на бутылку своих говноплатшетных процессоров


Почему не на бутылку говнопланшетных видеочипов? Ведь именно на неё приставки и сели, а ЦПУ и правда не нужен, имеющегося ноутбучного хватит.
244 1837754
>>37684

Ядро Jaguar на 1.6 ГГц в консолях - это что-то примерно как Athlon 64 3200+ (2.0 ГГц) из 2005, который у меня был? Ну и что принципиально изменилось в игровой логике со времен Far Cry 1 (раз уж берем условный "опенворлд"), который на нем летал в 100+ ФПС? Да, конечно же, объектов больше, но и ядер теперь шесть (из доступных). Вон, есть тесты двухсокетного Pentium III в Crysis 1 на Youtube. Там было что-то вроде 15-30 ФПС.
245 1837805
>>37754

> Ядро Jaguar на 1.6 ГГц в консолях - это что-то примерно как Athlon 64 3200+ (2.0 ГГц) из 2005, который у меня был?


Нет. Jaguar это что-то типо атлонов А4/А6 годов 2013-2014.

> Ну и что принципиально изменилось в игровой логике со времен Far Cry 1 (раз уж берем условный "опенворлд"), который на нем летал в 100+ ФПС?


Чем больше объектов тебе надо рендерить - тем больше тебе надо в очереди видеоускорителя напихать задач для карточки, плюс симуляция становится сложнее, систем симуляции в игре больше.

>Да, конечно же, объектов больше, но и ядер теперь шесть (из доступных). Вон, есть тесты двухсокетного Pentium III в Crysis 1 на Youtube. Там было что-то вроде 15-30 ФПС.


Смешно, но Интел на базе архитектуры Pentium III делала архитектуру Core 2(пентиумы 4 дропнули отчасти). Она таки у них была пиздецки удачной и с большим запасом на вырост, и буст производительности.
246 1837980
Можешь посмотреть, кстати, Heavenly Sword. Есть полный слив кода, с исходниками для PS3, на гитхабе, лол. Я не говорю, что там все замечательно, но это пример того, как нормальные игры писались не так давно.
247 1838007
В вин32 завезли файберы?
dead per dead 248 1838100
Но файберы можно написать за день, если это тебе нужно. Другое дело, что это вряд ли нужно, когда есть ПОТОКИ.
249 1838182
бля анонсы, у вас не было такого, что вы уже пиздец ебать как выгорели и уже вообще не видите смысла в работе? я уже мелкие таски на час-два по два дня выполняю, ебать вообще
спрашиваю именно в этом треде, тк я тут за все время одного-двух шизов увидел, остальные адекватные ребята
250 1838185
>>38182

Рекомендую попросить отпуск. Лечится только так. В крайнем случае, попробуй сменить рабочее место, имею в виду передвинуть мебель в другое место или поменяться с кем-то, если в офисе сидишь. Это поможет на 2-3 дня.
251 1838187
>>38007
угу
четверть века назад
252 1838193
>>37805
третий пень и core2?
мне кажеться, ты путаешь
253 1838210
>>38193
Ничего не путаю. Pentium 4 поняли что хуйня с кукурузными частотами, и новые камни в 2006 делались на базе более старой архитектуры, которая использовалась в мобильных процессорах. Из пня 4 насколько знаю забрали только самые удачные идеи, одна из них это HT.
Архитектура к слову до сих пор усовершенствуется у Интела. В лице всех этих Cascade Lake, Coffee Lake и прочего.
254 1838230
>>38182

>тк я тут за все время одного-двух шизов увидел,


А тебе не приходило в голову что "шиза" это следствие выгорания?

>остальные адекватные ребята


Да, мы такие ;-)
255 1838286
>>38193
Все инцеловские ядра, за исключением р4 и атома, микроархитектурно являются развитием пняПро 92-го года. Поговорите мне тут о прогрессе.
256 1838289
>>37274

>дефолтные аргументы


Есть с COM

>дефолтная инициализация


Специфика сишных примитивов и отсутствия ООП оверхеда мешает

>неймспейсы


Неймспейсы есть везде, нету пользовательских неймспейсов

>дженерики


Завезли ещё в бородатом с11

>метапрограммирование


Пчел метапрограммирование это не какой-то товарный знак, ты можешь на чем угодно писать в стиле метапрограммирования. Нет никакого правила что мол тру метапрограммирование эт ток в рантайме. Мб пояснишь как же сишка мешает тебе в этом. Да, нету сахарка и конкатенации строк изкаропки и чё?
257 1838293
>>38289
Ты говоришь с пастой
258 1838354
>>38230

>>> А тебе не приходило в голову что "шиза" это следствие выгорания?


да я любя же, все ведь одним делом занимаемся
259 1838649
>>38286
Это как ядро Линукс, монолит из начала 90х, в 2005 кажись последний раз с нуля переписывали. Юзают и пилят до 2020 года, и конца и края не видно. Уж слишком много сил было вложено, быстро работает и в какой-то мере все очень даже удачно как для монолита спроектировано.
260 1838680
Анончики, хелп, нужно написать функцию разбивающую строку на слова по пробелам и возвращающую кол-во слов в строке int split(char s, char words), (принимает адрес строки и адрес переменной, куда в результате работы функции должен быть помещён адрес массива слов). При этом память для массива слов и для ASCIIZ-строк, представляющих слова, должна выделяться динамически.
Можете описать в общих чертах идею/алгоритм? У меня нихера не выходит
261 1838683
>>38680
проебались звездочки, офк перед s одна звездочка, перед words 3
262 1838767
>>38680

> У меня нихера не выходит


Пиздуй формы на ЖС клепать
263 1838769
>>38680
Распиши по шагам. Пиши в тетради в клетку. Смотришь - ага вот у меня указатель дошел до пробела, в этот момент я должен выделить память, для этого мне надо запоминать начало слова пока еще не было пробела, значит надо второй указатель. Так, а размер слова это расстояние между этими указателями. Так, теперь надо добавлять слово в массив. Но его размер ты заранее не знаешь, так что либо в 2 прохода сначала узнать сколько слов, либо каждый раз выделять на n+1 элементов и копировать старые.
image.png305 Кб, 474x474
264 1839136
>>38182
Если ты будешь себя мучать, то кончишь как пикрил
que-11196726656.png189 Кб, 320x369
265 1839154
>>39136
Найс углы, чел.
266 1839179
Возник вопрос недавно по Си, ответ на который никак не могу найти. Я упростил свой код, только чтобы показать непонятный мне случай.

Есть 2 кода:
1) https://wandbox.org/permlink/YanLdqAjqQksxn2l
Работает, только если размер массива 1, 2, 3 или 5. Иначе до функции "out" сам массив не доходит по какой-то причине и не выводится корректно в функции "out".
2) https://wandbox.org/permlink/9gZDuBHw3gOqZ5UI
Работает с любым размером.

Поэтому в этом и вопрос. Почему первый код работает только при определенных размерах? Какая вообще свзязь с размером массива там может быть?
Если там ошибка, то какая и почему все же иногда это может работать?
267 1839180
>>39179
Два кода отличаются лишь 1 стокой. В 1 я вызываю функцию "out" в функции "create" сразу после "fill". А во втором коде "out" вызываю в конце функции "fill".
268 1839189
>>38680
разбей задачу на подзадачи
сделай динамический массив
сделай динамическую строку
те которые автоматически увеличивают свой размер
а потом уже пиши свою фунцию сплит, которая использует две первых
269 1839194
>>38286
шину fsb поменяли на кольцо в сендике
это только один пример, но который рушит твое категоричное утверждение
270 1839196
>>38210
вернемся к исходному
ты утверждал что на третьем пне была уже core2
мне кажеться, это не правда
271 1839239
Core - последняя итерация P6
Core2 и дальше - наследник P6
Еще были отдельные netburst и atom
вроде так
на вики почитал
272 1839241
>>39239
еще p6 начался с pentium pro
image.png317 Кб, 665x415
sage 273 1839261
Не нужны нам эти ваши 32 и 64 бита.
Пентиумы-хуентиумы.
8086 - RuleZ 4ever.
274 1839278
>>39196
Где я это утверждал?
Я утверждал что P6 архитектура с 3 пня была была весьма удачной, настолько что ее положили в основу более новой, прям которая пошла через поколение после.
275 1839279
>>39261

>8086


Не нужны эти ваши микроподелки.
Только миникомпьютеры из 70х, только хардкор.
Слабо написать программу в эмуляторе pdp11 на си, скомпилировать и скинуть сюда результат работы?
276 1839288
>>39179
Поздравляю, ты разъебал стек. Если меняешь порядок функции - ты просто обходишь эту проблему. Вероятнее всего ты перезаписал значение аргумента функции.

Там есть строчка в коде

>array = &A[array_size];


Нахера это написано? Собственно оно и вызывает это все говно.
277 1839297
>>39288
Это я присвоил указателю адрес массива.
А в чем именно проблема и как переделать тогда?
278 1839309
>>39288
Я еще пробовал через malloc создавать массив. Так работает даже при первом коде.
Но я так и не понял, в чем беда изначального кода и что именно лучше не делать...
Когда размер массива не известен, то всегда динамический массив надо брать же?

Я с Си знаком всего полтора месяца, а с массивами еще меньше, поэтому такие вопросы и задаю...
279 1839316
>>39309

>Но я так и не понял, в чем беда изначального кода и что именно лучше не делать...


Тебе дали проблемную строчку.
1. Погугли как брать адрес массива.
2. Подумай.
3. Сообрази, адрес чего ты на самом деле взял и куда пишешь свои числа.
280 1839320
>>39278

>но Интел на базе архитектуры Pentium III делала архитектуру Core 2


формально это не так
не на базе
"на базе" была последняя итерация p6 - Core
а Core 2 наследник p6, а не на базе
281 1839324
>>39297
Ты взял указатель за пределами массива, на последний элемент. После пары вызова fill ты начинаешь писать рандомные числа в стек фрейм вышестоящей функции, где у тебя выделены все массивы, array_size и прочее.
Если хочешь передать адрес начала массива - просто используй его имя(его идентификатор уже является указателем):

> array = A;


И все заработает как следует.
282 1839325
>>39324
Это я уже понял.
Но почему тогда оно может работать, когда размер массива 1, 2, 3 или 5? С такой ошибкой вовсе всегда не должно было работать ведь.
283 1839326
>>39320
Прекрати баловаться с солями, мальчик. Я твоих претензий вообще не понимаю.
1603629652.jpg23 Кб, 544x166
284 1839332
>>39324
А такая запись считается же правильной?
285 1839333
>>39325
Но стек то имеется, и программе пофигу куда что писать. Управляешь всем ты. Логика компилятора - если ты это написал, значит зачем-то это нужно.
По сути у тебя последний элемент твоего массива А переписывает значение размера массива для последней функции в стек фрейме. Попадание в четные числа явно связано с какой-то оптимизацией, например использовался битовый сдвиг для взятия адреса &A[array_size];
Чисто предполагаю. Надо в код смотреть под микроскопом в godbolt.
286 1839335
>>39332
А то.
Кстати, int A[array_size], где array_size не константа(в твоем случае вводится с клавиатуры) это расширение gcc, на каком-то msvc компилироваться не будет.
287 1839337
>>39335
Хорошо, спасибо за помощь.
288 1839353
>>39325
Если тебе на самом деле интересно, то запускай отладчик и смотри ассемблерные инструкции. Это путь в реверс.
snap002650.png17 Кб, 792x723
289 1839355
>>39332
в Си нет массивов
290 1839375
>>39335

>это расширение gcc


Хуецц. vla ввели в C99.
291 1839389
>>39375
В его случае был С89, так что - я все верно сказал.
292 1839407
293 1839409
>>39326
на вики написано:
"Микроархитектура Intel Core проектирована с нуля, но по философии микроархитектуры Pentium M"
294 1839411
>>39320
>>39239
вот тут я напутал:
первые цп архитектуры core - это семейство core 2
295 1839413
>>39409
но следует учитывать что
"Микроархитектура Intel Core основана на обновлённой версии ядра Yonah и может рассматриваться в качестве последней итерации микроархитектуры Intel P6"
296 1839414
>>34086
там без тебя куча корпораций контрибютят) максимум драйвер для чегото можешь законтрибютить ,если его еще не существует там
297 1839455
>>39279

>Слабо написать программу в эмуляторе pdp11 на си, скомпилировать и скинуть сюда результат работы?



Нет, конечно, не слабо. Но не интересно, если писал на листке инструкции PDP11, а затем проверял их на БК-0010Ш
298 1839766
>>39194

> ядра

299 1839768
>>39409

> но по философии


Так, падажжите, не надо размывать своей гуманитарщиной технический вопрос. Не по философии, а развивая. С нуля вряд ли серьезные люди проектируют что-то серьезное.
300 1839827
>>37980

Это же стартовый тайтл с никаким использованием потанцевала и кодом в 1 покпок PPU.
301 1839829
>>39827

Это не совсем так. Можно убедиться, что кода для SPU немало (вплоть до чего-то вроде волос и одежды IIRC). Во-вторых, посмотреть на то, что реально зашипили в любом случае интересно.
302 1839952
>>39829

Интереснее бы было поздний тайтлы посмотреть, где GPU рисует только GBuffer, а весь deferred shading сделан на CPU + посмотреть ранние идеи ECS вроде тех, которые упомянуты в постмортеме-презенташке нотидогов про дрейкфекйс 2.
303 1840048
>>37274

> пук

304 1841898
Ебать, тут тихо...
306 1841968
Раз такая пьянка пошла, задам вопрос.
Аноны, хуяру код под МК на C. И хотел бы повысить свои навыки путем чтения исходников других проектов. Может быть, у вас найдется для меня какой-то совет?
307 1841969
>>41942
Лучше уж тогда так: https://youtu.be/0yOhTFqTd4k
308 1841979
>>41969

> Кожаные мешки и аналоговые инструменты



void foo();
309 1842065
>>41968
Говно вопрос
github.com к вашим услугам
310 1842178
я тут поною. Как же у вас хватает сил читать Прата. всего 150 страниц прочитал, до конца еще далеко. Конечно он красавчик пишет все подробно. Но иногда возникает желание все бросить и прочитать K&R2(
311 1842186
>>42065
Дядь, я знаю про гитхаб.
Может быть, есть какие-то прям вот проекты эмбеддерские, лол.
312 1842306
>>42178
Работаю уже в embedded порядка 8 лет, и ни разу ни одну книжку целиком не прочитал. Все изучал по крупицам и из разных источников.
Тоже восторгаюсь теми кто может прочитать эти большие рукописи.
313 1842350
>>42306
Двачую этого
314 1842363
>>42306
Годные книжки это
W. Richard Stevens - Advanced Programming in the Unix Environment
Kyle Loudon - Mastering algorithms with C
315 1842392
>>42306
А потом после таких кулибиных-левшей самолеты падают и котлы взрываются. Но ведь это так сложно просто взять и обучться.
Ньюфагопроблемы 318 1842488
>>42483
При выполнении упражнения, хочу считать из файла две строки символов. При выводе на консоль, вместо строки выводится мусор - очевидно, что путаюсь где-то с указателями, но что не так понять не могу.
https://pastebin.com/S04i0XYz
319 1842500
>>42488

>rmvstr


На, ты потерял: e o e i

>malloc(sizeof(char))


Ну и сколько по твоему памяти ты запросил?
320 1842504
>>42500

>Ну и сколько по твоему памяти ты запросил?


На один символ, пока длина строки неизвестна. Дальше при считывании каждого следующего символа и под него запрашиваю.
321 1842537
>>42504
s1 = realloc (s1, (len[0]) * sizeof (char));
Видимо, проблема в этой строке - всё ломается при достижении строкой длины 16+ символов. Осталось понять что её так ограничивает.
322 1842617
>>42537
realloc - та ещё беда. Использовать его можно при крайней необходимости, а в повседневной жизни от него лучше отказаться.
323 1842632
>>42392
Да похуй)) Бабосик уплочен, а дальше хоть камни с неба)))
sage 324 1842634
>>42617
Давай расскажи нам, какие могут быть беды с реаллоком?
sage 325 1842635
>>42488
После реаллоков ты рано или поздно получаешь новый указатель, но в main() его никак не возвращаешь, и main() продолжает использовать старый, уже инвалидный.

Не делой так. Во-первых, почини возврат указателеей. Во-вторых, выкинь маллоки: realloc(NULL, size) отлично работает. В-третьих, не дергай реаллок на каждый чих. Увеличивай размер буфера сразу на 16 байтов, например: string_size++; if ((string_size & 15) == 1) realloc(ptr, string_size+16).

А стандартный подход к динамическим массивам вообще хранить сразу два размера: used и available, и по необходимости перевыделять буфер двукратного размера или 3/2. Ты, например, такой while (used + size_needed > available) available ∗= 2;, и потом realloc(ptr, available).
326 1842652
>>42634
Ну это вообще опасная функция, она может выделить как-то не так память. И вообще, ты хочешь со мной и моим 20 летним авторитетом поспорить? Я такую малявку с сажей легко могу раскусить, ты чмырдяй не совмевайся в моих словах. Я вас таких в 2000х легко щёлкал после МФТИ.
327 1842653
>>42392
Обучение и учеба это разные вещи.
Обученние - человек делает дело и учится.
Учеба - ясли с программой для сопливчиков дебилов, где нянечки с ложечки кормят, и пасут как скот, говоря что и как делать, а сопливые дебилы ноют, жрут и подчиняются. Учебник это лишь запись с оной программы.
sage 328 1842654
>>42652

> может выделить как-то не так


Проиграно. А system - опасная функция, она может выполнить как-то не так rm -rf /, ага.
329 1842655
>>42654
Естественно опасная, иначе сидели бы под рутом как на винде и в ус не дули. Но СТРАШНА же, вот и не сидят, опасно.
330 1842657
>>42654
Ничего ты не понимаешь в серьёзном программировании, щенок.
system действительно опасная функция, через нее можно выполнить произвольный код. Это игры с огнем.
sage 331 1842658
>>42657
Си - опасный язык, на нем можно написать произвольный код. Ух, страшна!
332 1842660
>>42658
Ты не понимаешь всей тяжести и сложности Си.
Ссал тебе в рот, щенок. Наберешься опыта - поймёшь меня. Наверное и пары лет не пишешь на нем, а уже выебываешься.
333 1842744
>>42537
А почему у тебя индекс на <= проверяется относительно длинны? Ты всегда будешь залазить на один символ за массив
for ( i = 0; i <= len; i++)
В функции вывода
334 1842774
>>42652
Хуя ты толстый. Ещё и физтех приплёл.
image.png455 Кб, 600x509
335 1842856
>>42634

>Давай расскажи нам, какие могут быть беды с реаллоком?


Нарежет тебе кусочков. Для GUI в основном похуй, но если будешь использовать его для серверной програмы, которая работает годами - ОХУЕЕШЬ.
336 1842860
>>42856
Очнись, давно контейнеры рестартующие раз в сутки. Какие еще годами...
image.png60 Кб, 825x521
337 1842871
>>42860
Богатыри - не вы.
338 1842875
>>42871
Более семи лет аптайма.
339 1842919
>>42871
А теперь попробуй выполнять на нем какую то полезную работу.
340 1842921
>>42856
Кстати в реализации динамического массива использую realloc, приложуха с диким аптаймом, не падает. Стек слегка фрагментируется. А так в принципе норм.
Sage 341 1842964
>>42635
Спасибо, буду исправлять. А чем плох malloc, что вместо него realloc лучше использовать?
342 1843042
>>42856

>серверной програмы, которая работает годами


Хуя, манядебильный мирок.
Эта серверная говнопараша - апофеоз непредсказуемого говнокода, который работает только благодаря постоянным перезагрузкам.
343 1843047
>>42871
По-твоему, ядро ос это сервер?
Можешь не отвечать, дебилоид.
344 1843138
Если это >>43042 и это >>43047 написали разные люди, то разочаруюсь в людях.
Шучу - давно разочаровался.
345 1843220
>>42964
Realloc плох, используй всегда malloc.
346 1843315
>>42856
Не нарежет, если блоки вменяемой длины. Блоки одного размера в аллокаторах группируются в списки. Если ты увеличишь размер своего блока, то произойдет одна из двух вещей (зависит от аллокатора): либо он займет соседние слоты такого же размера (лежал в списке блоков из 64 байт, слился с соседним блоком, стал 128 байт), либо он попадет в список блоков большего размера. При уменьшении размера блока он либо переедет в список поменьше, либо кусок, кратный размеру блоков в списке будет помечен свободным (и соответственно, будет реюзнут в новых аллокациях такого размера). Никаких дыр. Собственно, у анона выше именно это и происходит.

>>42964

> А чем плох malloc


Ничем, просто он там не нужен.
347 1843572
>>43315
Ну вот зачем и зачем? Лучше бы они "фрагментацию стека" realloc-ом задетектить и победить пытались, может чему полезному научились бы. Или на собесе повеселили кого
348 1843711
Аноны, я начал изучать C, до этого пытался в питон, забил хуй и через год вернулся. Сейчас пытаюсь понять про указатели.
Можете нубасу объяснить что будет если в указатель записать число? К примеру:
int * pi = 5;
Указатель просто стал переменной или чо? printf без разыменования даёт на выходе 5.
Не бейте плз, просто в гугле ответ не нашёл
349 1843717
>>43711

>int * pi = 5;



ты число 5 напрямую в память записал молодец
350 1843733
>>43717
Ты тоже с питона пытаешься переехать?
351 1843735
>>43711

> int * pi = 5;


Указатель начнет указывать на int по адресу 5. Если включишь предупреждения (а должен был сразу включить!), будет предупреждение, что ты неявно кастишь инт в указатель.

Если ты после этого сделаешь ∗pi = 123; то по адресу 5 (точнее, по адресам 5, 6, 7, 8 из-за того, что sizeof(int) = 4) будет записано число 123.

Если ты хочешь пользоваться указателем правильно, то тебе сначала нужно создать где-то int (или выделить sizeof(int) байтов), а потом уже записать адрес этого объекта в указатель: int myvar = 5; int ∗pi = &var; Если вывести pi, выведется большое число, если вывести ∗pi, увидишь 5.
352 1843738
>>43733
Алсо, в питоне все то же самое, просто там обычных переменных вообще нет, они все ссылки (указатели).
353 1843743
>>43735
спасибо, абуанон

да, в предупреждении выдаёт

ПредупреждениеC4047инициализация: "int *" отличается по уровням косвенного обращения от "int"
354 1843745
>>43711

>int pi = 5;



Посмотри на это как на

int
pi = 0x00000005;

А затем pi[0] = 77777;
355 1843827
>>43738
Т.е. вместо 64 инта он хранит 64 ссылку на 64 инт и жрет в два раза больше памяти?
356 1843830
>>43735

>по адресам 5, 6, 7, 8


Необязательно

>sizeof(int) = 4


Тоже необязательно.

>>43827
Для примитивных типов часто делаются исключения.
357 1843889
>>43830
Да, необязательно. Но мне кажется, что лучше привести конкретный пример, чем рассказывать, что Си гарантирует только минимальную длину int, не гарантирует последствия преобразования интов к указателям, а потом еще рассказывать, что на самом деле там будет сегфолт, потому что современные ОС не мапят ничего в нулевую страницу.

>>43827
А в питоне нет 64-битных интов, лал. Они там безразмерные, и они гораздо жирнее: 28 байт для самых коротких. Но они еще и иммутабельные, это позволяет создать первые 256 чисел заранее, при старте интерпретатора, и многие переменные с пятеркой в программе ссылаются на одну и ту же пятерку:

>>> a = 5; b = 4; с = b + 1; print('%x %x' % (id(a), id(c)))


7f119cefa820 7f119cefa820
358 1844064
>>43889

>Но они еще и иммутабельные


Те когда я делаю а = а + 1 реально создаётся новая переменная? Смутно догадываюсь что это для тредсейф но как тогда другой тред догадывается к какой версии обращаться?
359 1844159
>>44064
Создается новый объект, а не переменная. Переменная - это именованная ссылка на что-то, переменные хранятся в одном из словарей, поэтому проблемы с версиями не возникает - у тебя есть имя, по имени получаешь актуальную ссылку на объект-значение. Но во-первых, мы сильно ошиблись тредом, и пора это заканчивать, а во-вторых, в питоне есть функция id(), и так уж получилось, что в CPython id равен адресу объекта. Поиграй сам. Можешь заодно и с sys.getsizeof() поиграть.
360 1844184
>>43711
Представь себе что у тебя микроконтроллер или ретрокомпьютер какой. А там вместо участка памяти могут быть замаплены пориы ввода вывода или видеопамять к примеру. Например на c64 запись по 0xD021 меняла цвет фона экрана. В винде конечно такое не прокатит, там куча слоев виртуальной памяти и т.д.
361 1844187
>>44184
порты*
362 1844379
>>42654

> опасная функцыя system


Так вот оно какое, системное программирование!
363 1844477
>>44379
execve
364 1845298
Преподы тут есть?
Поделитесь опытом, что ли.
Как вы оцениваете студентов?
Меня на старости лет запрягли студентам преподавать. С подачей материала проблем нет, а вот как оценивать х.з.
365 1845305
Дайте какое-нибудь руководство по организации обмена данными между процессами на винде, а то мне поисковики какую-то хуйню для плюсов предлагают.
366 1845325
>>45305
"Windows для профессионалов", Джеффри Рихтер
Полугли, если есть в электронном виде, там всё что надо расписано.
367 1845651
>>45325
На Русском хоть?
368 1845851
Почему си такой конченный? В школе лампово писал на плюсах и пайтоне и кайфовал от процесса, а сейчас на первом курсе проходим СИ, и спустя несколько часов пердолинга уже сижу со вздувшимися венами и желанием разъебать монитор. Ну кому сука нужно это говнище? Даже паскаль лучше.
369 1845857
>>45851

>пайтоне


Твой первый язык?
370 1845858
>>45851

>Ну кому сука нужно это говнище? Даже паскаль лучше.


Ты так говоришь, будто иежду ними большая разница.
371 1845864
>>45857
Да.
372 1845869
>>45864
Тогда это и есть твоя проблема. Нам в универе рассказывал один препод, что ни в коем случае не стоит учить питон как первый язык, иначе ты от него отупеешь и будет сложнее выучить нормальные языки. А лучше, вообще не учить этот недоязык, программы, написанные на нём, работают через жопу.
373 1845875
>>45869

> Нам в универе рассказывал один препод


Молодой, наверное.
Страый препод вслух бы не стал такое говорить, даже если так думает. Тоже наверное.
374 1845877
>>45869
Отчасти правда, если не знать что весь твой говнокод в 20 строк строк с целью считать строку неизвестного размера из потока ввода заменяется единственным s = input() на питоне, то и баттхерта от этого не будет.
375 1845878
>>45877
А всё потому, что питонодети, как этот, >>45875, привыкли писать компилятору "сделай заебись" и получать еле как что-то работающее, умоляющее убить его. И они ещё утверждают, что за думающими за программиста компиляторами будущее.
376 1845879
>>45877
Массив строк кстати тоже можно создать в одну строчку на питоне. И потом просто передать его в функцию, лол. И изменить. И скопировать. И никаких тебе указателей, никакой блядь динамической памяти, просто блядь ты можешь не думать об этом блядь, а заниматься чистой математикой, писать алгоритмы - творить. Твой препод был прав, да, пересесть с питона на си, все равно что всю жизнь работать экскаваторщиком на карьере, а потом у тебя отбирают экскаватор, дают в руки пластиковую говнопалку, которая постоянно ломается, и говорят теперь копать ей.
377 1845887
>>45877
Написав такой говнокод, его можно вынести в функцию и использовать только скромную короткую команду.
378 1845888
>>45879
Привыкнут к своим экскаваторам, а потом пытаются им зубы удалять, а на возмущение отвечают что надо просто было рот шире открыть.
379 1845890
>>45877
две с половиной строчки, анон.
Цикл с fgetc, и наращивание буфера realloc/malloc если потребуется.
380 1846010
Дело в том, что С предназначен для писания питонов и других ограниченных программ.
381 1846023
>>46010

Напомню, ваш бог кармак перешёл на кресты после Q3.

Ваш бог Трольвардс одобрил раст в ядре и признал что С устарел.

Ваша вера тщетна, ваш инструмент устарел.
382 1846040
>>46023
Устарела ли отвертка? Нож? Ложка?
383 1846067
>>46040

>Устарела ли отвертка?



Да. Шурик и аккумуляторная отвертка передают привет.
384 1846266
>>30513 (OP)
Посоветуйте литературу по эффективному программированию на C для embedded. Интересуют виды оптимизаций в коде (а не флаги компиляции), как сократить количество бесполезных тактов и не удариться в асм. Пример типовой задачи: Есть монохромный дисплей и указатель на видеопамять. Требуется функция прорисовки прямоугольника disp_fill(x1, y1, x2, y2) с произвольными сторонами. Однако, каждый байт видеопамяти управляет восемью пикселами, тут-то я и обсираюсь нахуй. При заливке по невыровненным координатам я должен каким-то образом считать смещения для пикселей или делить прямоугольник на разные части(?) с сохранением производительности.
385 1846285
>>46266
Как тут вообще можно обосраться, лол?
Нарисуй в тетрадке в клетку если что то непонятно
386 1846298
>>46266
SSD1306?)))00))00)))))000)
387 1846299
>>46298
Чи 12864? Чи ще щось?
388 1846303
>>46266
Вот тебе подсказка

unsigned char left_mask = 0xff >> (x1 % 8);
unsigned char right_mask = 0xff << (x2 % 8);
389 1846467
>>46303
А если компилятор тупой, то вот так красивее будет.

if((x1 & 7) | (x2 & 7) )
{
unsigned char left_mask = 0xff >> (x1 & 7);
unsigned char right_mask = 0xff << (x2 & 7);
// алгоритм c учётом границ здесь...
}
else
{
// алгоритм без учёта границ здесь...
}

Быстрее уже не бывает.
390 1846611
>>46467
Ты пишешь очевидные вещи. Давай про неочевидные лучше: как именно ты будешь делать проверки на границы, и как именно ты будешь рисовать прямоугольник шириной в 1 пиксел.

> Быстрее уже не бывает


Бывает. Анон, задавший вопрос, сам написал, как быстрее можно:

> делить прямоугольник на разные части


За счет трех отдельных циклов (невыровненное начало, выровненная часть, невыровненный конец) можно экономить такты на проверках внутри цикла. Алсо, именно таким способом реализована memcpy() в сишной либе.
391 1846655
не нужен там третий цикл, вот так будет выглядеть тело вложенного цикла.

int i;
video_ptr++ |= left_mask;
for(i=x1+1; i<x2; ++i)
video_ptr++ = 0xff;
*video_ptr++ |= right_mask;
392 1846657
>>46655
Вакаба сука, восприняла звёздочку как разметку.
393 1846748
>>46655
но это оптимально для восьмибитного процессора, таких сейчас днём с огнём не найдёшь. Нужно маску и указатель переделать на тип данных, чей размер равен разрядности процессора.
394 1847097
>>46611

> и как именно ты будешь рисовать прямоугольник шириной в 1 пиксел.



Там ещё одна проверка для такого случая понадобится.

if( (x1 & ~7) ) == (x2 & ~7)
{
unsigned char thin_mask = left_mask & right_mask;
// Здесь цикл, ресующий вертикальную составляющую для случая когда пиксели не выходят за ширину байта
}

И вот теперь самый быстрый алгоритм для отрисовки на 8-битных процессорах
395 1847107
Раз уж тут пошла такая пьянка...
Как вообще организовывают ОРХЕТЕХТУРНО в коде на C UI во встраиваемых системах (мелких всяких, типа на stm32f1)? Абстрагируют ли функции отрисовки хуюзеринтерфейса от "низкоуровневых" функций отрисовки драйвера дисплея?

Мне пока пришли в голову структуры с указателями на функции драйвера дисплея, лол.
396 1847173
>>47107

> Лол


Отцы юникса одобрительно посмеиваются.
397 1847175
>>47173
Про структуры, в смысле?
398 1847202
>>47175
Да. Это cdevsw[]
399 1847212
>>47202
Ага... Тогда догнал.
Благодарю.
400 1847221
>>47107
Ну надо сделать микросервис для отрисовки на экран. Микросервис блиттера. Микросервис для общения с аппаратурой. Микросервис HAL. Все на FreeRTOS, общение микросервисов наладить через mqtt.
401 1847232
>>47221
Толсто, чувак. Очень-очень толсто, иди в гейскийJS тред.
402 1847264
>>47232
Вот ты меня туда посылаешь, но на каком-то espruino пилят железок тоже немало.
Си - устарел. Феминистки не могут найти логику в вашем языке. Все эти указатели, адресная арифметика. Все должно быть куда проще. Память это объект, а женщина - это феминистка. Поэтому и скриптовые языки захватывают мир. Скоро победим вас ебучих капиталистов, зальем ваши лица гендерноравными смузи. Да будет власть меньшинств!
403 1847321
>>47107

>Как вообще организовывают ОРХЕТЕХТУРНО в коде на C UI во встраиваемых системах



Паяют микросхему ftdi FT8XX серии
404 1847396
>>47264
Нахуй фемок! Нахуй смузи! Нахуй коммуняк! Нахуй меньшинства!
Слава мужикам, да здравствует маскулинность! Пиздуйте, мужики в качалку и на борьбу! Слава Си! Слава адресной арифметике!
405 1847400
>>47321
Понял, спасибо. Чекну даташиты.
Добра.
406 1847473
>>47264

>Поэтому и скриптовые языки захватывают мир.


Сдохнут они.
407 1847481
>>47264
Надо им рассказать про Zig.
408 1847542
>>47481
Zig hail
409 1847702
>>47542
Zip file! Ты ж программист.
411 1847961
>>47473
Не сдохнут. Гарантирую.
>>47481
Отличная идея. Да здравствует Zig - самый гендернейтральный и феминитивный язык в мире!
412 1848003
>>47961
ZIP FILE! o/
Say no to pidors!
413 1848007
Аноны, давайте лучше поможем анону стать хорошим разработчиком прошивок для встраиваемых девайсов.

А вопрос такой вот. Кто чем пользуется для генерации шрифтов под монохромные дисплеи с разными контроллерами? Вот, например, есть шрифт с буквами-пиписьками в TTF и хочу я его отрисовать на дисплее с контроллером SSD1306. Вот чем его генерить?

Неужели, тока писать свой скрипт?
414 1848011
А, и ещё вопрос такой. Что там с кодировками строк/символов в gcc arm-none-eabi-gcc? Как их задавать во время сборки? Где об этом можно почитать?

Вчера заюзал строку с украинскими матюками и собрал прошивку, затем "колупнул" секцию .rodata - выяснил, что кодирование там идет utf-8, но явно я его не указывал. А хотелось бы. И хотелось бы со всем этим "собрать чехлы".
415 1848057
>>48007
Воровать ttf-шрифты нехорошо. Просто извлеки шрифт из пзу ega/vga, в интернете есть целые коллекции.
416 1848086
>>48057
Лол. А воровать из пзу хорошо? Полно опенсорсных ttf.
417 1848090
>>48057
Понял, воровать шрифты не буду.
По поводу ПЗУ EGA/VGA - спасибо, учту. Дельный, кстати, совет для нюфага.

Все таки по поводу TTF... А если шрифт фриварный? Или если я, например, куплю шрифт? (да, есть такая тема) Тоже нельзя, получается?
418 1848091
>>48090
Просто отрендери его в нужном размере на компе.
419 1848096
>>48091
Понял. Благодарю.

Так, в общем, и собирался сделать.
sage 420 1848107
>>48011
-fexec-charset, алсо сишный стандарт, там описывается как source character set превращается в execution character set.
421 1848130
>>48007

>Вот, например, есть шрифт с буквами-пиписьками в TTF


Вот тут было смешно.
Не лезь туда, оно тебя убъёт.
422 1848288
>>48107
Ооо, найс! Громадное спасибо! Почитаю за этот ключик.
>>48130
Каво? Хто убъет? ТТФ? Так я ж не собираюсь его самостоятельно парсить, лол)
423 1848564
>>48007
BitFontCreator Grayscale. Экспорт в си формате, куча настроек формата выходных данных, рекомендую.
424 1848596
>>30513 (OP)
Почему С а не С++?
425 1848691
>>48596
Шапку внимательно прочитай, похуй что ничего не поймёшь, читай до просветлеия.
426 1848694
>>48691
просветления
быстрофикс
427 1848697
>>48691
А зачем Си нужен, если есть С++?
428 1848698
>>48691
Не нашел там ответа.
429 1848711
>>48697
Попробуй написать компилятор к плюсам и к си, и всё станет ясно.
430 1848797
>>48711
Хороший ответ. Без иронии.
431 1848970
>>48697
Разные же языки. Вот я хочу, чтобы символ foo в дизассемблере выглядел как foo, a не fooZzbh12i. И чтобы можно было назвать локальную переменную new, a функцию - delete.
432 1848980
>>30513 (OP)
ну вот я знаю это ваш си, есть у меня программатор и микросхема и как погромировать это всё?
433 1848983
>>48007
Берёшь, и без задней мысли программируешь.
434 1848984
>>48983
>>48980
Промазал
435 1849029
>>48984
а как? скажи какая либра нужна, как то всё привести к виду пошивки чтобы через программатор зажить?
436 1849095
>>48970

> Вот я хочу, чтобы символ foo в дизассемблере выглядел как foo, a не fooZzbh12i


Нормальные дизассемблеры умеют делать demangle. Алсо, extern "C".

>>49029
Пишешь ld-скрипт, в нем указываешь, чего куда класть (где код, где память и стек размещены). Если не знаешь, смотришь в даташите микроконтроллера. Компилируешь, линкуешь, получаешь бинарник. Берешь objcopy, делаешь из бинарника .hex, его и шьешь программатором.
437 1849164
Продолжаю искать: DO-178C.PDF (A и В тоже подойдут), DO-254.PDF, DO-385.PDF, ARINC-653.PDF.
438 1849173
>>48564
Чекнем-с, благодарю.
439 1849241
>>49095
спасибо большое, приблизительно понял. пойду гуглить как это делать.
440 1849318
>>48711

>Попробуй написать компилятор к плюсам и к си



Но ведь сам компилятор писать не нужно, и прыщецц и прыщешланг модульные, если ты изобрел новый процессор с невиданной ранее архитектурой то тебе нужно писать
бэкенд IL->Machine code,
а не
Language->Machine Code
441 1849322
>>49095

> нормальные турбодебаггеры


Я использую objdump -xd и не хочу писать какие-то заклинания.
442 1849355
>>49318
Что-то в этом, конечно, есть. Я думаю, си просто проще. Проще выглядит, проще читать и писать. Намного быстрее компилируется. Но сам я на плюсах ебашу, не мне на такие вопросы отвечать
443 1849505
>>49318
Удачи написать под 8 или 16 битный.
444 1849608
>>49505
Я пытался написать кодогенератор на основе Tiny C Compiler. Охуел и забил (на tcc), начал писать компилятор с нуля.
Когда охуел со сложностью кодогенерации, решил сделать для начала интеппретатор.
445 1849668
>>49608
Зачем делать интерпретатор примитивного языка? Если уж интерпретировать, то сложные операции, дополняя это сборкой мусора, бигнумами, исключениями, нитями и пр. То есть лиспы-питоны-луа... У лиспа ещё и синтаксис элементарный, то есть можно не тратить время на возню с грамматикой, а скорее делать вкусности.
446 1849679
>>49668

>Зачем делать интерпретатор примитивного языка?


Чтобы наработать опыть для написания компилятора, чтобы попробовать в оптимизацию. Больше незачем. IMHO
sage 447 1849945
>>49608
А какие сложности? В тцц кодогенератор максимально просто пилится. Проще, чем где бы то ни было, потому что оптимизаций на уровне машинного кода там нет.
448 1850035
>>49945
Возможно квалификации не хватило. Не помню.
449 1851503
Какой же С херня.
Компилю на VS простую прогу. Запускаю. ОК. Переношу на Виртуалку с 7кой.
И что я вижу?
ОТСУТСТВУЮТ КАКИЕ-ТО ЕБАНЫЕ БИБЛИОТЕКИ. ок.
Ставлю vc_redist.x86.exe.
Нихуя. ок.
Пробую комплить через MinGW.
Ставлю, компилю, переношу
отсутствует libstdc++-6.dll
Блять. Гуглю. Надо поставить флаг -static-libstdc++ ОК
Ставлю, компилю, переношу
отсутствует libgcc_s_seh-1.dll
Блять. Гуглю. Надо поставить еще флаг -static-libgcc ОК
на компьютере отсутствует libwinpthread-1.dll
СУКА БЛЯТЬ
Почему ебаный питон прокрученный через косой и убогий pyinstaller запускает мои проги? а?
Если ваш С такой пиздатый, то почему я не могу компилировать его под сперму?
С с++ такая же херня
450 1851516
>>51503
Хули выёбуешься? Собирай статиком и забудь о проблеме.
451 1851518
>>51516
Что это? Каким статиком? Я прописал все возможные и невозможные флаги, но оно по-прежнему просит какие-то библиотеки
452 1851519
>>51503
Уходи от сюда
454 1851589
>>51503
Миша лох.
455 1851664
>>51503
Стааь линукс, таких проблем не будет.
456 1851740
>>51503
Пиши на диалекте Визуальный С++, который предназначен для выньдос. Это стандартный спермоязык со стандартными спермобиблиотеками.
457 1851750
>>51503
Твой питон конченная залупа, впрочем как и ты сам. Макакам в Си нечего делать, тебя сам язык и компилятор нахуй посылают дурак блять, очнись! Иди В тред для питоноанананистов и жабадаунов и там высирайся! А то пришел глав.петух ебанный к элите и хайло свое вонючее открыл, срыгнул блять отсюда, куда указали.
458 1851767
Объясните одну вещь. В Winapi при асинхронном чтении/записи файла нет возможности повесить обработчик на завершение операции, и нужно болтаться в цикле проверять статус этой самой операции, я все правильно понял?
459 1851815
>>51767

>В Winapi при асинхронном чтении/записи файла нет возможности повесить обработчик на завершение операции



Как и в Nodejs под капотом, да.

Лоулевел, что ты хотел? Что бы шиношс сам тебе такой асинхронно поток ломал как в прерывании ардуины?

Можешь поток усыпить, можешь другие полезные задачи поделать и потом вернуться и еще раз проверить
460 1851819
>>51815

>Лоулевел, что ты хотел?


Но ведь в шинде есть колбеки и события.
461 1851830
>>51815

>Как и в Nodejs под капотом, да.


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

>Что бы шиношс сам тебе такой асинхронно поток ломал как в прерывании ардуины?


В шиносе тоже треды есть, так уж.

>Лоулевел, что ты хотел?


Да не настолько уж и лоулвл.
462 1851871
>>51767

Схуяли? ReadFileEx/WriteFileEx, 5й параметр как раз колфбэк.
463 1851882
>>51871
Хм, про лп-оверлаппед я всякой хуйни читал читал, а за колбек вообще ни слова не было. Спасибо, гляну.
464 1851888
>>51871

> 5й параметр как раз колфбэк


Он вызывается, когда поток в alertable состоянии. А в этом состоянии поток, когда чего-то ждет. Например, события. Так что, как ни крути, а WaitForSingleObject/MultipleObjects/SleepEx все равно нужен. И это нормально. Если ждать не хочется, а работы много, можно посмотреть в сторону IOCP, там потоки.
465 1851892
>>51830

> просто обработчик приколотить и дальше пойти


Ой, с такими познаниями и таким подходом просто стартуй отдельный, в котором синхронно выполняется IO. Других способов "прикрутить обработчик и пойти дальше" нет и никогда не будет.
466 1851893
>>51871

Да, но он сработает только в том случае когда тред после вызова ReadFileEx/WriteFileEx усыпили c помощью SleepEx или WaitForXXXObject.

Просто так продолжать что то делать в треде и что бы процедура завершения (тот самый колбек) сама дернулась прервав тред нельзя.
sage 467 1851894
>>51892

> стартуй отдельный


отдельный поток
468 1851898
>>51892

Вообще, семантика Async Fire and forget это UB в чистом виде по определению, именно поэтому во всех языках она или с ньюансами, или от нее избавляются деелая ее применение максимально болезненным.
469 1851903
>>51894

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

>>51898

Почему?
470 1851914
>>51903

>, нужно что бы потоков было ровно по количеству ядер и они были загружены только полезной работой?



Ты про Job System?

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

>Почему?



Просто ответь, как сам думаешь, файл святым духом читается вне потока и его процессорного времени? Fire And Forget - это тупо магическая семантика, предполагающая что что то где то в варпе магически исполнится и вызовется колбек по результату.

В реальности никакого варпа нет, а в ноде, которая сожрала твой мозг, его роль выполняют невидимые тебе потоки от батареек и внутренних библиотек и локстепнутый цикл, про который бы тебе следовало почитать.
sage 471 1851918
>>51903

> Но ведь стартовать кучу потоков считается зашкваром


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

>>51898
Большинство мелких серверов раньше писалось по такому принципу - соединение получил, поток стартовал и пошел хуячить синхронно. А UB - это если ты на что-то надеешься. Например, что оно прочитается/запишется за какое-то время и без ошибок. К тому же, никто не заставляет тебя forget, можно из тредов срать ошибками в основной поток, хоть в глобальный массив, который потом основной поток будет поллить, лал.
sage 472 1851923
>>51914

> файл святым духом читается вне потока


Но ведь он так и читается! Святой дух называется DMA.
473 1851931
>>51923

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

Без шуток, в консолях прошлых поколений сосони доступный быдлокодеру DMA контроллер являлся главным средством раскрытия потанцевала.

Ну и в целом, даже если и так, то одним из контрактов многозадачных OS является явный виртуальный поток управления без всякой хуйни уровня "возврат из прерывания, которое магически что то там переписало"
474 1851943
>>51918

В forget как раз основной смысл нодовской модели асинхронности,
точнее - в комбинации асинхронной логики в цепочки.
475 1851944
А вы пробовали вызвать srand() в основном потоке,
а rand() вызывать в дочерних потоках?

Ничего интересного не заметили?
476 1851946
>>51892
Каким подходам уж обучен, зачем стукать. Просто, ну епт, я это еще в коде для стм (та же ардуина) первое время делал, пока не обучился dma, прерываниям и вытекающим из них ивентам.
>>51914

>а в ноде, которая сожрала твой мозг


Как что-то плохое.

>файл святым духом читается вне потока и его процессорного времени


Другим потоком на другом ядре или перемежающимся с основным благодаря планировщику. Да уйма способов, просто какой смысл в таком асинхроне когда можно действительно сделать отдельный поток с синхронными методами, который будет сам по себе вариться и в конце вызывать тот же самый обработчик, располагаясь при этом где-то в задворках структуры проекта. Нюанс только в том, что его нужно писать самому, а не юзать что есть, потому что этого тонет.
13404077984605.jpg22 Кб, 555x408
477 1851969
>>51944

> дочерних потоках


Сыновних потоках
478 1851970
>>51969

Дочерних потоковках.
479 1851979
>>51970

ПОТОКИНЯХ же
480 1852052
>>51969

>Сыновних потоках


Забавно. Да. Спасибо. Наверное "порождённых" будет гендер-нейтрально. Но замечание ценное.
481 1852066
>>51979

Так всё таки

ПОТОКОВКИ ИЛИ ПОТОКИНИ?
482 1852097
>>52066
Нити?
483 1852165
>>52066
Как же там воняет.
484 1852189
>>52165

Ты чо пес хуемразь? Их тело их дело, хотят вогяют, хотят разлагаются.
485 1852209
>>51503
Эти либы не отсутствуют на компе, они идут в поставке с gcc. Обычно их можно отыскать в каталоге с MinGW, и скопировать в каталог к выходящему бинарю.
Зачем все эти либы нужны? Windows не posix система, и ей нужны либы переходники для запуска гнутого кода as is.
То что ты плохо разбираешься в теме и юзаешь шиндошс, это не означает что технология говно.
486 1852285
>>52189
Селедки - пидарасы \thread
487 1852289
И всё же хотелось бы вернуться к генератору случайных чисел.
У меня получилось что все потоки выдают одну и ту же последовательность псевдослучайных чисел.

srand() был вызван в родительском потоке.

Забавно, да?
488 1852290
>>52289

>генерация случайных чисел


>srand()


проиграл
489 1852292
>>52290
Что ты предлагаешь взамен?
490 1852302
>>52289

>rand() is not guaranteed to be thread-safe.


RTFM

>Что ты предлагаешь взамен?


Как насчет PCG?
https://www.pcg-random.org/download.html
491 1852305
>>52302
Хотя не уверен что он дает хорошие результаты в multithread
492 1852310
>>52292
tls-prf или mt на основе сида из hw rng
493 1852313
>>52302

>https://www.pcg-random.org/download.html


Интересно. Спасибо.
Я решил проблему проще - вынес генерацию случайных чисел в отдельный поток и прошу случайное число у него. Сложнее, медленнее в несколько раз, но как вариант - вполне.
photofile1035.jpg493 Кб, 1600x1107
494 1852336
Привет!

Где располагается нессылочная переменная в ссылочном объекте с++?
Допустим, я создал класс:
class X
{
QVector<int> var;
};

Теперь создаю объект этого класса, но как ссылку:
X * x = new X;

Вопрос - переменная var у объекта x будет создана в стеке или куче(Оперативной памяти)?
Вообще - как вы выбираете где создавать переменные - в куче или стеке?
Важно ли это вообще? Где можно нормального почитать об этом?

Благодарю!
495 1852362
>>52336
Ты ссылки с указателями то не путай. "Переменная" объекта - це часть объекта.
496 1852408
>>52313
Ты настоящий индус.
497 1852424
>>52336
1. Тебе в плюсотред.
2. Выбор создавать на стеке или нет определяется тем, использовал ли ты new или написал просто int a = 5;
3. Любая переменная любого типа создаётся там, где ее разместить, то же касается и сложных типов (классы, стракты..)
4. Как выше написали - не путай указатели и ссылки
498 1852462
>>52336
В куче.
Выбираю исходя из задачи. В разных случая по-разному. На стеке дешевше.
Да, это важно.
Пиши больше - сам разберёшься.
499 1852466
>>52408
Ах ты неполиткорректная сука!
ИНДИЕЦ, А НЕ ИНДУС!
Мы за тебя тут шествием за права трансгендеров шли, а ты уротребляешь и-слово!
500 1852472
>>52408
Да ладно тебе. Я и тест написал. Супротив обычного вызова rand() оказалось лишь на 20%-25% медленнее.
501 1852536
Бакулюм в треде.
Делайте перекат.
502 1852569
>>52336
Это не переменная, это член объекта, поле.
503 1852603
Пиздец, чувак нихуя не знает о плюсах, но уже полез в Qt.
504 1852626
>>52472
Наверное потому, что в rand уже есть мьютекс. А вообще для многопотока есть rand_r или нормальный генератор из Личной Библиотеки Сишника.
D4uyAsYWkAAIvJf.jpg large.jpg224 Кб, 1000x634
505 1852680
>>52462
>>52569
>>52424
>>52362
Благодарю!

Провёл тут эксперимент. Получается - любой нессылочный сложный объект в ссылочном объекте эквивалентен ссылочному объекту.

В примере >>52336 дестуктор для var и x не вызывается.
506 1852685
>>52680

>Провёл тут эксперимент.


Неебаться ты ученый
Братишка.mp4444 Кб, mp4,
396x484, 0:02
507 1852696
>>52685
Токсик, прими харчу себе на ебало.
508 1852699
>>52685
Ты как бы такой умный всё знаешь. Представь себе - не все такие. Этот тред для вопросов, а не для твоего выпендрёжа.
509 1852702
>>52680
Нихуя себе ты исследователь. Прям открытие уровня /pr/ по С++ в Сишном треде. А сразу в тред по назначению зайти сложно?
510 1852706
>>52680
НЕССЫЛОЧНЫЙ СЛОЖНЫЙ ОБЪЕКТ

Что несёт этот долбоеб?
Используй нормальную терминологию.

Сейчас бы блядь деструктор вызывался для объекта, который ты создал и не удалил, просто охуеть.
511 1852709
>>52706
Прости, бес попутал, больше не буду так ругаться.
Но иди в с++-тред.
513 1852721
>>52696
Не плач, снежиночка.
514 1852722
>>52680

>Провёл тут эксперимент.


ДВАЧ - НА ОСТРИЕ НАУКИ
515 1852728
>>52721
Спермой тебе в рот поплачу и твоей маме :))))
516 1852733
>>52728
Пока что ты только свой монитор слюной забрызгала.
517 1853229
>>52626

>А вообще для многопотока есть rand_r



Да, это неплохой вариант, но этой функции нет в майкрософтовских хидерах.

Последний ответ вот тут - https://social.msdn.microsoft.com/Forums/vstudio/en-US/3263ab0b-da3f-4737-9d80-0788a5b426db/randr-identifier-not-found?forum=vcgeneral предлагает решение -при инициализации генератора случайных чисел подмешивать к времени GetCurrentThreadId().
518 1854397
Не бейте, почему тут scanf на срабатыает? Уходит в бесконечный цикл?
519 1854400
А тут при выходе за границу массива следующий элемент выводится и именно 16?
>>54397
вопросы из Праты.
2020-11-12174050.jpg96 Кб, 1035x393
520 1854401
>>54400
Картинка отвалилась
2020-11-12180524.jpg115 Кб, 1020x467
521 1854411
>>54401
Теперь правильная
522 1854719
>>54397
Потому что ЖМИ клавишу ENTER!
sage 523 1854891
>>54411
Что попалось в памяти, то и выводится. UB говорит, что если ты нарушаешь, то никто тебе ничего не обязан, и результаты непредсказуемые.
Тред утонул или удален.
Это копия, сохраненная 11 апреля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски