ca.jpg6 Кб, 235x250
C язык программирования #666 clang /clang/ 3386488 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

- Stephen Prata "C Primer Plus, 6th Edition" (2014) (в русском переводе: Стивен Прата "Язык программирования C. Лекции и упражнения (6-е издание)" ): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Идеально для начинающих.
- Brian Kernighan, Dennis Ritchie "The C Programming Language".
- Стандарт 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 (февраль, с диффами)
- Последний черновик ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2583.pdf (октябрь)

Прошлый тред: https://2ch.hk/pr/res/3304338.html (М)
2 3386491
>>386488 (OP)
Лудчший езык. Изучил за пару недель си, еще пару недель на сисколы. И ты уже у мамки хакер.
3 3386589
Когда люди изучают разговорный иностранный язык, то им рекомендуют максимально погрузиться в языковую среду. Так и с языком программирования - лучше на время изучения забыть про винду и делать все на линуксе. Средства разработки там легко доступны, исходники - тоже. Хотя не все исходники одинаково полезны. Начинать лучше с изучения минималистичных программ, типа тех, что на suckless.org чтобы не только искусственные упражнения делать, но и что-то реально используемое дорабатывать для своих нужд.
image.png306 Кб, 1331x497
4 3387008
>>386589

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


Не понимаю, зачем?
Я учил С по видео этого толстячка. Виндовс + студия.
5 3387030
Замечательный язык. Первый язык, кроме Паскаля в школе, но изучение Паскаля не особо зашло.

Увы, но этот язык я изучал не по той литературе, что рекомендуется в посте, а по руководству некоего Полякова(4 файла по 20 страниц в каждом) так как именной тогда от нечего делать я случайно нашел сайт Полякова.

Теперь работаю с c++(пишу динамические библиотеки для некоторых проектов под Андроид). И пусть с чистым си я сейчас особо не пересекаюсь, но именно этот язык дал путь к понимании всех трюков с адресами и одной из самых главных сущностей программирования, от которой не убежать, а лишь чуть-чуть замаскировать: все данные - лишь набор байтов.

Просто снимаю шляпу перед этим языком.
6 3387163
>>386488 (OP)
В книжках Праты и Ритчи нет ничего про многопоточку, мьютексы и прочие семафоры (а в Си это все есть). Нет ничего про архитектуру.
7 3387292
>>387163

>про многопоточку, мьютексы и прочие семафоры


Windows для Профессионалов, крутая книга для настоящего программиста. Никакой гуманитарной академической блевотины, чисто по делу, техника для технарей, есть система и книга как с ней работать.
8 3387307
>>387163
Есть книжка роберта лава системное программирование в линупс. Для нубов есть книжка иванова программирование в линупс. Есть новая книжка си бранд билдинг дебагер от трапа из майкрософта. Хоть книжка и про написание дебугера на си плас плас, но книжка хорошо поясняет для нубов про сишные сисколы в линупсе и ахитектуру пк.
9 3387311
>>387292
У виндовса нет си компалера и никогда небыло. У вижуал студии плюсовой компилятор. Были только древнии компиляторы от ноунеймов как пелес си компилер
10 3387316
>>387307

>линупс


брысь
11 3387321
>>387316
Си это исключительно юникс лайк системы, ну еще эмбед. Сам брысь в плюсовой тред.
image.png810 Кб, 1300x815
12 3387328
>>387311
>>387321

>У вижуал студии плюсовой компилятор


И что? С89 он компилирует без проблем. И туторы есть хорошие от толстячка.
13 3387341
>>387328
Ну и си под винду никакого практического смысла не имеет. Чисто забава для задротов. Под линупс же системные вещи активно пишут - возьми например разработку ядра linux или например рантайм для контейнеров crun от красношапки
14 3387351
>>387341
А еще где-то разрабатывают банковские системы на коболе, и что? Нинужное нинужно это никак не меняет, засунь себе в сраку линупс с чистоси, ведь это твоё хобби хипстера - пороться в сраку мечтая отрезать себе хуй.
15 3387360
>>387351
1) ты мне свои фантазии не приписывай, соевый любитель ретро игр под винду
2) кобол + хипстер? Ты дурачек?
3) виртуализацию и контейнеризацию майкрософт тоже в линупс комитит, нейронки на линупсе на фермах запускаются Так что с коболом сравнение линупса нерелевантное
16 3387816
>>387360
Хватить срать, урод, ты кто из них:
- разработчик ядра линукс?
- разработчик виртуалок майкрософт?
- разработчик контейнеров красношапки?
Правильно, никто, тупой урод который вообще никто никакого кода не пишет, простой хисптосральник с линуп.сру и подобных помоек для быдла попугающих соевую пропаганду.
17 3387857
>>386488 (OP)
Ну хотя бы потому в линуксе сишка это буквально часть системы и работать там на низком уровне гораздо проще и приятнее чем на винде.
18 3387858
19 3387863
>>387163
Шапка сильно устарела, вышло много неплохих книжек с тех пор, те же дейтелы постоянно обновляют книги по си.
20 3388345
>>387863
А что они там такого важного наобновляли? Ведь основной стандарт сейчас в индустрии это C99.
21 3388351
>>387008

>Не понимаю, зачем?


Для эффективности.

>Я учил С по видео этого толстячка. Виндовс + студия.


По виндовидосикам тоже можно выучиться программировать. Только времени это займет гораздо больше. Ну знаете, как в школе люди иностранный язык годами учат, а толку мало.
22 3388401
>>388345
Ну как бы Прата не единственная и не самая важная книга по современной сишке, я это хотел сказать.
23 3389029
>>388351

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


Ну не. По мне так как раз книги для вкатунов очень малоэффективны. На видосиках обычно учат программированию, делая какой-то большой сложный проект. В большинстве же книг для вкатунов сюжеты очень элементарные, решаемые в пару строк. В итоге, когда вкатун пытается сделать что-то полезное, а следователньо и большое, он не знает даже за что браться.
Против же книг по углубленным темам против ничего не имею.
>>387857
1) Зачем вкатуну рабоать в линуксе на низком уровне?
2) Я честно не понимаю, зачем для чего комитить. Я могу понять осуществление просветительской работы забесплатно, но делать забесплатно продуктовую рабоу, на которой потом наварятся меты-гуглы, как-то зашкварно.
Помню вначале нулевых было полно маленьких утилит, с которых авторы получали копеечку. Сейчас же благодаря опенсурс выблядкам так не заработать, остаются варианты только ебашить на дядю.
24 3389061
>>389029
Чтобы перестать быть вкатуном. Двощ - борда 18+, а не дом детского творчества. С агуша-кормом в виде игрулек под винду с житием бытием типичного сишника ничего общего не имеет.
25 3389081
>>389029

>По мне так как раз книги для вкатунов очень малоэффективны.


А ты сам-то по видосикам вкатывался в программирование?

>делая какой-то большой сложный проект


При обучении должен быть виден явный прогресс, чтобы с первых же дней была рабочая программа, к которой потом уже можно добавлять какие-нибудь фичи. А большой и сложный проект демотивирует.
26 3389090
>>389029

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



Если б ты не пиздил виндовый софт, то ты б вообще нихуя не смог бы на винде сделать. Своему дрочу на винду ты обязан прежде всего пиратству. Это не говоря о том, что слозетсурсного фриваре/шареваре софта всегда было дохуя. Не факт, что на винде кто-то бы позарился на твои проприетарные поделки. Так же бы ебашил на дядю, не выдержав конкуренции с корпорастами.
27 3389116
>>389029

>но делать забесплатно продуктовую рабоу,


Ты не в курсе, что кроме денег на свете существует и другая мотивация?

>на которой потом наварятся меты-гуглы, как-то зашкварно.


Эти наварятся в любом случае. Тотальная закрытость всего софта не спасет.
28 3389140
>>389029

>Я честно не понимаю, зачем для чего комитить.


Чтобы резюме пополнить, если говорить о монетизации.
29 3389151
>>389029

>работать в линуксе.


Шо це?

>линукс и сишка


Пчелик, у тебя документация функций для сишки прямо из командной строки доступка, есть ебейший конпелятор, который ставится обычным пуком в современном дистре.
30 3389153
>>389140
Либо они и сами пользуются софтом, который помогают разрабатывать, а не только ради чужих хотелок.
31 3389157
>>388401
Только не надо говорить про устаревание инфы, ведь сишка это не какой-то там одноразовый язычок, в котором часто ломают совместимость и дропают говнофреймворки. Про быстрое устаревание - это к веб-макакам.
32 3389469
Тред говна. Худший тред по Си. Обсуждают залупинукс и вкатунов. Моча, снеси.
33 3389472
>>389469
Так весь раздел деградировал. 95% постов от дегенератов, которые к айти вообще отношения не имеют. Срут бессмысленными постами в треде-чатике и временами с троллингом тупостью протекают в другие треды.
sage 34 3389473
>>389469
>>389472
Что вы там под винду на си пишете ебанутые
image.png17 Кб, 675x135
35 3389509
>>389061
Раньше все игры на С писались. Не только во времена ДОСа, но и во времена Виндовса уже. Тот же Q3A на С.

>в виде игрулек под винду


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

>А ты сам-то по видосикам вкатывался в программирование?


Да.

>чтобы с первых же дней была рабочая программа


По мне так сложно испытывать восторг от программ уровня подсчитать факториал.
>>389090
Видишь, винда даёт заработать на пиратстве, взломе. Опеншурш же ничего не даёт. Только отбирает. Либо твоя поделка будет незамечена, либо ею буду тпользоваться корпорации, генерирующие себе миллиарды в день, а ты будешь без денег сидеть.
>>389116

>Ты не в курсе, что кроме денег на свете существует и другая мотивация?


Имело бы смысл, если бы опенсусрс нельзы было использовать коммерчески. А так ты просто генерируешь прибыль Безосу, Брину и прочим.
>>389473
Что угодно можно написать. Ты просто промытка. Заразили тебя вирусом и ты его разносишь дальше.
36 3389520
>>389509

>А так ты просто генерируешь прибыль Безосу, Брину и прочим.


Оправдания жлоба. Сначала говоришь не хочу бесплатно помогать гуглу, потом будешь говорить не хочу бесплатно помогать соседу-васе, потом бесплатно никому помогать не хочу. Жлоб это жлоб, дегенерат-вырожденец у которого интерес только один - нахапать самому и отобрать у других. Что-то кому-то дать? Нет, у жлоба от этого дикая ломка, весь его организм восстаёт, жаба давит. Эгоистичная тварь мечтающая чтобы у соседа корова сдохла, а не кому-нибудь помочь.
37 3389533
>>389520
Что же такого бесплатного сделал ты?
38 3389546
>>389533
Всё, целая куча прог которыми куча народу пользуется, плюс мои инициативы подтолкнули других разработчиков создавать подобное и намного лучше, а до меня не могли жопы оторвать от дивана. И всё выкладываю с открытыми исходниками, без защит, лицензий, кредитсов, вниманиеблядства, требований донатов, нытья, и прочего говна. Просто потому, что сам пользуюсь чужой работой, естественно хочется дать в ответ. Полюс, многие разрабы припизднутые неадекваты, так что открытые исходники совершенно необходимы для исправлений которые они сами делать не хотят, а без этого кривым говном пользоваться невозможно.
39 3389607
>>389509

>>А ты сам-то по видосикам вкатывался в программирование?


>Да.


Ну и нахуй ты так быстро слился? Кто после этого будет подыгрывать твоему тупому троллингу?
40 3389628
>>389520

>Оправдания жлоба.



Вначале годами живут на спизженном софте, играх, книгах, музыке, фильмах, а потом, когда у самих софт даже не спиздили, а просто создали бесплатную альтернативу в рамках закона, то поднимают вой: ОБОКРАЛИ! НЕ ДАЮТ ЗАРАБОТАТЬ ВЫБЛЯДКИ! АААА111!!! ВСЕ ЗАКРЫТЬ!!! ВСЕХ ПОСАДИТЬ!!!111

Я лично, ничего против пиратства не имею, особенно в бедных местах нашей планеты. Кстати, а вы уже удалили у себя всю пиратскую порнуху?
41 3389640
>>389520
Не удивлюсь, если у него и бабы до сих пор нет. Патологические жлобы с ними несовместимы. Такие и на детей, на джунов смотрят как на врагов, да и вообще реальный общественный прогресс не жалуют.
Кстати, лучше всех типы жлобства описывал Салтыков-Щедрин. Почитайте, например, его "Господа Головлевы".
42 3389661
>>389473

>Что вы там под винду на си пишете


Игрульки.
43 3389665
Какие библиотеки для удобной работы со строками в Си считаются наилучшими?
44 3389682
>>387307

>Есть новая книжка си бранд билдинг дебагер от трапа из майкрософта. Хоть книжка и про написание дебугера


Спасибо за наводку. Надо будет почитать.
45 3389698
>>389665
CString, UnicodeString, std::wstring
46 3389962
>>387307

> си бранд билдинг дебагер от трапа из майкрософта


Чего? как это гуглить епта
47 3389979
ну давайте, показываете свои макросы, кто что умеет
Без имени.jpg70 Кб, 1578x291
48 3389982
49 3390030
>>389509

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


Стандартная лицензия GNU GPL не дает возможности генерировать миллиарды. Если ты сам распространяешь свой код под более либеральной LGPL или тем более MIT, то это уже твои проблемы.
Core-JS распространяется как раз под MIT.
50 3390572
>>389982
Спасибо
51 3390579
Расскажите про винапишку, прям четенько что бы по полочкам всё разложено было
Спасибо всем кому не трудно будет это)
52 3390791
>>390579
Винапишка — это народное название игры, которая в официальных источниках называется "винопишка" или "виноснаряд". Это игра с карточками, которая популярна на вечеринках и в компаниях, особенно среди молодежи. Суть игры заключается в том, чтобы с помощью карточек и их комбинаций придумывать интересные задания, которые игроки выполняют, а за нарушения (или невыполнение заданий) могут быть наказаны — обычно это выпить определённое количество алкоголя (чаще всего вина).
53 3391020
>>390579
Древний набор мрачноватого вида функций прямиком из 1995 года. Когда-то знание этой хрени давало возможность работать с виндой на низком уровне, но сейчас это мало актуально.
54 3391098
>>391020

>но сейчас это мало актуально.


А что сейчас актуально? Жить в Индии? Красить волосы в розовый цвет? Совать в жопу мобилку?
55 3391101
>>391098
У сишорперов спроси на чем актуально писать под новую винду
56 3391379
>>391101
Сишорперы как все пишут вебмакакинг. И ты не ответил на вопрос, отвечай. Или молчание знак согласия?

Ну я так и думал, очередной "актуальный" петух в си-треде, который даже не может сказать что это за актуальность такая, слишком позорно и мерзко чтобы говорить вслух. Но ничего, я озвучил >>391098
57 3391618
>>390791
Очень занимательно)
58 3391621
>>391379
Если не затруднит, что есть похожие на winapi , что бы работать на низком уровне?
59 3391669
>>391621
Это какой-то тупой тралль накидывает, не слушай его истерики. Скорее всего он вообще ничего не программирует, просто срет тут во всех тредах. Посмотри в сисп треде - там такой же дебильный наброс.
Ладно, по сути. Короче смотри.
Есть винапи - набор системных функций винды, он очень древний. Да, на нем все еще можно программировать, но современные приложения под винду пишут не на нем, а на .NET - это такая надстройка над системой, у которой свои функции и свои правила.
Аналог винапи - это системные вызовы ядра в линуксе.
Короче определись что ты хочешь кодить и тогда будет ясно что тебе для этого нужно.
60 3391686
>>391669
Syscall?
.net не очень нравится, вот хочешь чисто c/c++ , но что бы на уровне ядра работать)
61 3391694
У меня просто любительский проект, и нужно что то кроме winapi , для работы на уровне ядра)
62 3391697
Просто на линухе не делал ещё программы, можем пойти в лс все объясню, если не лень будет можешь оставить контакты, я напишу
63 3391707
>>391697
1) Какая связь между линухом и винапи?
2) И что ты понимаешь под уровнем ядра? Сисколы в линуксе используются в юзерспейсе. Это прослойка между ядром и прикладным софтом. Низким уровнем это называется потому что на этом уровне мало абстракции и для реализации простых вещей надо много кода написать. Это все уже все написано в стандартной библиотеке. У тебя любительский проект где надо свой личный malloc писать?
64 3391743
Типо )
Мне не под userspace и под kernel mode
И ещё нужно написать kmdf
173987890394187494.webp6 Кб, 300x168
65 3391747
1vidur.jpg101 Кб, 1920x1080
66 3391754
67 3391760
Двач съел качество
68 3392194
В юбилейном треде дам советы малятам:
- архитектура важнее реализации
- не оставляйте непродуманных ветвей в алгоритме
- покрывайте тестами с самого начала
- если очень хочется сделать ограничение статикой, сделайте его в 10 раз больше
- об UB и ID не шкварьтесь
69 3392962
А можно ли написать рантайм для си? Свой сборщик мусора и безопасное управление памятью
. 70 3393049
>>392962
Сборщик мусора прикрутить можно с такой-то матерью (Boehm GC).
Безопасное управление возможно только в такой форме, что программа остановится и сообщит об ошибке, а не ОС её убъёт.
И всё это не на 100% надежно.
71 3393077
Каким образом fgets понимает, где заканчивается строка?
Изначально есть "hello world", это 1 пик. Потом его читает fputs и помещает файл, по пути он убирает тернарный символ в конце. Получается пик 2.
Каким образом fgets понимает, что файл всё, если у него нет тернарного или символа пробела?
https://pastebin.com/kujNxU08
x 72 3393082

>fgets(buffer, 256, fp) == EOF


А давай ты варнинги включишь для начала?)
73 3393680
>>392962
Нет, бро, операционки пишут, дрова пишут, а простейший алгоритм подсчёта ссылок, увы, реализовать не получится.
74 3394001
>>393082
Окей, включил. Исправил на fopen_s. Больше варнингов нет. Вопрос всё тот же.
https://pastebin.com/uDY2wen0
75 3394049
>>394001

> Каким образом fgets понимает, что файл всё


Ну давай подумаем как устроен fgets. Сделай strace, посмотри сисколлы, там наверняка будет какая-нибудь форма сискола read.

man 2 read
If the file offset is at or past the end of file, no bytes are read, and read() returns zero.
Сискол тебе возвращает 0 = файл закончился.
76 3395245
>>386488 (OP)
Сап, аноны кто-нибудь шарит в winapi? У меня тут непонимание некоторых вещей возникло, часто вижу что текст(label) инициализируют через createwindow("static"....), но как только текст должен быть красивый то есть иметь не стандартный цвет/шрифт/ размер то заместо первого метода все начинают подключать GDI и рисовать в wm_print, неужели нет нормального способа работы с текстом как и с остальными контролами и обязательно нужен gdi?
77 3395324
>>395245

>неужели нет нормального способа работы с текстом как и с остальными контролами


Остальные конторылы которые не стандартные то же отрисовываются пользовтелем, другого нет
78 3395326
>>395245
Ну так winapi это очень старая хрень, в те времена были только самые примитивные контролы, а нормальные шрифты вообще только начали появляться.
79 3395515
>>395245
Контролы так и так рисуются через GDI. Windows это стандартизованная система, контролы такие как положено в системе им быть, дизайн сделан гениальными дизайнерами, аналогов нет. Хочется васянства, значит рисуй сам как хочешь, никто не мешает.
80 3395641
>>395515

>Windows это стандартизованная система, контролы такие как положено в системе им быть, дизайн сделан гениальными дизайнерам


Windows ХР is dead, старче...
81 3395684
>>395641
WinAPI не менялся со времен Windows 95, там вся архитектура осталась именно такой какой была в 90е, включая захардкоденные контролы.
82 3395685
>>395684
И где в винапи "стандартный интерфейс" видовс сторе, настроек и прочей современной гуйни напоминающей вебприложения.
83 3395763
>>395515
Спасибо, я почему-то думал что GDI был создан уже после стандартных элементов, а стандартные элементы какая-нибудь совсем глубинная хуйня рисует, теперь более менее осознал.
84 3395769
Какой есть годный контент (статьи, книги, видео и пр.) для тех, кто знает базу, чтоб углубиться в нюансы под разные системы, разные компиляторы и т.д.

P.s. В частности под Linux и ведро
85 3395859
>>395769
В ведроид-студии, когда делаешь приложение NDK, то есть с использованием C/++, компилятор - это простой Clang, сконфигурированный под кросс-компиляцию. И система сборки CMake. Чтобы посмотреть пример, как это объединяется с гуем, нагугли на гитхабе файл с именем "SDLActivity.java".
86 3395889
>>395763

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


Потому что ты скриптовая макака с магическим мышлением привыкшая к черным ящикам. Да, скрипты именно так устроены, непонятные черные ящики в себе, а пользователю дают отдельно огрызки. И пишут код на скриптах именно так, наугад воображая хуйню и тыкая методом проб и ошибок.
Но Си это программирование, а не скриптинг. Нельзя программировать сам не зная что, черный ящик, нельзя писать код наугад, сам не зная как работающий. Программирование - не шаманизм, не посыл молитв богу машины в надежде получить результат. Программирование это техника. Прежде чем что-то писать, необходимо открыть документацию и разобраться как работает машина, только потом уже пишешь код осознавая что делаешь. Но макака уже испорчена скриптами, такое обычно не лечится, психика изуродована, это конец.
87 3396195
>>395889
Я не знал о GDI потому что на него не похуй 0.1% включая меня. В документации описаны общие положения и описания функций, никакой исторической сводки, или инфы о том как оно все функционирует изнутри нет. Собираю инфу о winapi по ебаным крупицам в интрнете. А вообще пошел нахуй, зачем ты мне вообще отвечаешь?
88 3396207
>>396195

> Собираю инфу о winapi по ебаным крупицам в интрнете.


Книги же есть, ну. Ты классику не читал что ли.

мимо
89 3396217
>>396195
Главное, чел, вот таких слушать опасайся >>395889
Они якобы логичные и компетентные, но на самом деле они только свой шизомусор в голове по полчкам раскладывают.
90 3396218
>>396207
Так оно точно так же работает. Тебе дают функцию, ее параметры и то что она делает, и больше ничего. Информация о том как и что работает изнутри это крохи, потому что си это высокоуровневый язык, никто не хочет разбираться как оно работает изнутри.
91 3396291
>>396218

>ищу инфу про винапи


>дают инфу об апи


>ря крохи нито шта нада


Ты даже не макака, а просто тупой скот. Говорит одно, тут же требует другое, даже не замечает что несет бессмыслицу не понимая значения слов которыми пукает.
92 3396382
>>396291
Слабоумный, ты сам себе противоречишь
>>395889

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



Не пиши мне больше
93 3397570
>>395769

>то есть с использованием C/++



Он про ядро спрашивает, а плюсы там не к месту. Есть пояснение от создателя ядра, почему писать ядра операционных систем на c++ является неимоверной тупостью https://lkml.org/lkml/2004/1/20/20
94 3397576
>>397570

>создателя ядра


>Пинус Трольвальдос


Ты так тролякаешь? Пинус говноговна в ядрах ОС
95 3397622
>>397576
А самая распространенная ось, почему не на C++ написана?
96 3397721
>>397622

>А самая распространенная ось, почему не на C++ написана?


А почему она должна быть на С++ написана?
97 3397734
>>397570

>Есть пояснение от создателя ядра


>any compiler or language that likes to hide things like memory allocations behind your back just isn't a good choice for a kernel


Поэтому он пропихивает хрюст который не только скрывает, но еще и активно верещит на тех кто не скрывает? Типичная шавка, что хозяин ему сказал, то и тявкает. Но ему хотя бы за это платят, а тебе, шавка, разве платят за подтявкивание корпоративному барину, или бесплатно сосешь?
98 3397736
>>397721
Ты тупостью троллишь? Разговор про был про плюсы и ядро ОС.
99 3397760
>>397736
Ядра серьезных ОС писались в то время когда плюсов либо не было, либо они были в зачаточном состоянии. Никто не будет писать ядро системы рассчитанной на долгосрочный успех на васянском языке который может завтра сдохнет, пишут на взрослом развитом языке проверенном временем и опытом. В данный момент С++ уже давно такой, нет причин на нем не писать, кроме политического визга наймитов триллиардных еврейских фондов.
100 3397800
>>397736
Твой Пинус Трольвальдос Раст в свое говноядро тянет, а ты чего то до Крестов докопался
17356500042620.jpg292 Кб, 1590x400
101 3397928
>>397760

>В данный момент С++ уже давно такой


А что там к лучшему с тех пор изменилось? Многие плюются от новых стандартов.

>>397800
С++ хуже раста. Даже Троллвалдс это понимает.
102 3397951
>>397928
Кстати, сишка еще хороша тем, что облегчает интероп с другими языками. Так называемый lingua franca в программировании, который полезно знать.
103 3398009
>>397928

>Многие плюются от новых стандартов.


С++ мультипарадигменный, ничто не мешает в ядре установить правила, и ничто не обязывает писать по самому новому стандарту, я же кажется говорил, что ядро должно писаться на стабильном проверенном временем, это не хипсторская игрушка дрочить на обновления, а потом потыкал и бросил, читай руст, и ничего пидор проплаченный готов угробить ядро гнилью, а вот С++ - низя, нидопущу, ну конечно барину не надо, вот и кукарекает как болванчик, кукла сраная.
104 3398021
>>386488 (OP)
В чем особенное отличие С++ от Си, кроме того что в С++ добавили ООП, то есть если я например возьму не GCC а G++ и скомпилирую код Си, будет ли какая-то разница в ассемблере?

Вообще если посмотреть на С++ со стороны глазами не профессионального программиста С++ выглядит как какой-то костыль когда код стартует с ФУНКЦИИ main, когда читая чужой год часто встречаешь какую-то мешанину из stdlib/io вместе с высокруповневыми библиотеками, и все это выглядит как какая-то мешанина, особенно позабавило как запихивают string в сишные функции которые принимают char* и там вродебы какой то костыль прикрутили в методы, типо string.tochar.
105 3398075
>>398021

>кроме того что в С++ добавили ООП


ООП это цела парадигма, а не что то малозначительное
106 3398076
>>398009

>готов угробить ядро гнилью


Оно изначально гнилое
107 3398103
>>398021

>когда читая чужой год часто встречаешь какую-то мешанину


Как я понял С++ это и есть адская мешанина которой недоволен никто. Тем не менее, надо учить. Не вечно же на С красноглазить. Надо и к современным технологиям переходить. Может хоть работу найду
108 3398112
>>398103

>Может хоть работу найду


Ооо, мнение безработного вкатуна по ЯП очень важно конечно
109 3398118
>>398021

>как какой-то костыль когда код стартует с ФУНКЦИИ main


А как будет не костыль?
110 3398145
>>398118
Как в ЖС наверное
111 3398236
>>398021

> костыль когда код стартует с ФУНКЦИИ main



В си тоже самое, чел.
112 3398251
>>398236
>>398145
>>398118
>>398112
>>398103
Вы задолбали тут чатик устраивать. Когда код писать будете, балаболы? А ну быстро запилили драйвер на сишке до завтра к 14.00
113 3398303
>>398118
Как в С#
114 3398304
>>398236
Так Си функциональный, там это норма.
1740655022469.jpg186 Кб, 987x1886
115 3398307
>>398118
>>398236
>>398103
>>398075
Разве не костыль? Сами плюсовики говорят что хотелось бы избавиться от наследия Си но никак.

https://habr.com/ru/companies/intel/articles/156863/
116 3398397
В чем претензия ко точке входа и почему это костыль, лол? Она есть у любого компилируемого языка как минимум. Да и чем предлагается ее заменить?

> if __name__ == '__main__'


как в питоне?
117 3398403
>>397928

>Даже Троллвалдс это понимает.


Торвальдс ВСЕ.
Плюсы в своей время он просто не осилил, а сейчас ему уже на все похуй и он даже своей жопе не хозяин. Что барья из корпораций скажут, то и будет делать. От гениального руководителя куча крупных мейнтейнеров ушла за последний год, даже некоторые именитые растовики сьебались, лол. Про политическую возню даже говорить не буду.
1740662610596.png26 Кб, 1054x541
118 3398415
119 3398433
>>398415
Я понимаю, что это троллинг, поэтому все же хотелось услышать ответ от автора оригинального поста.
120 3398521
>>398307

Если тебе так сильно хочется, то в аргументах линковщика ты можешь указать другую функцию, как точку входа, но как уже написали выше, не понятно, в чем тут вообще костыль.
121 3398870
>>398307
Ебать шиза. Си тред.
122 3398878
>>398870
Это между прочим сотрудник Intel
123 3398888
>>398878
Это соевый урод, тралящий тупостью интернет. Такого говна нынче как грязи, даже тараканов наверное меньше чем сральщиков в соцсетях.
124 3398993
>>398878

>Это между прочим сотрудник Intel


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

Когда я статью читал, ей уже года четыре было. Я решил загуглить никнейм автора, нашел его соцсети. А он за это время в США переехал и в Интел устроился. Вот и думайте.
125 3399199
Аноны подскажите по сабжу. Часто сталкиваюсь с тем что какая-то структура или переменная должна быть обработана в нескольких файлах, как организуют такие глобальные объекты? Использовать гетеры и сетеры как в ооп и передавать в них указатель? Или как то глобально объявлять переменную? Как вы решаете такие моменты?
126 3399201
>>398993

>Интел устроился. Вот и думайте.


Типа Интел не говно производят
Аноним 127 3399307
>>387030
Как я понял С лучший язык для новичка. Честно сказать кажется будто плохая идея начинать с этого языка. Эта страшная троица: С, С++ и С#
128 3399322
>>399199
Глобальные структуры передаются статическим функциям. Какие нах гетерысетеры в Си?
129 3399386
>>399322
Я имею в виду, как организовывать большие проекты на Си? Вот есть структура которая пишется и читается в куче файлов, как такие вещи организовывают? Потому что все говорят о том что "глобальные переменные это зло", но как без них организовавывают такое?
130 3399486
>>399386

>глобальные переменные это зло


>goto зло


Меньше долбоебов-кукаретиков слушай
131 3399507
>>397928
https://media.defense.gov/2022/Nov/10/2003112742/-1/-1/0/CSI_SOFTWARE_MEMORY_SAFETY.PDF
плюсы лучше раста, но раст пропихивает американская гебуха, а по патриотическому акту находящееся в юрисдикции американского суда лицо не имеет права даже сказать о том что его к чему-то принуждает гебуха без её разрешения.

так что гебуха говорит корпорациям - програмировай на расте. корпорации они же платиновые спонсоры linux foundation говорят яфинскому - програмировай на расте. сын одного финского коммуниста https://en.wikipedia.org/wiki/Nils_Torvalds учившегося в москве на кремлёвские деньги на это реагирует по принципу "партия сказала надо комсомол ответил есть".

вот и вся причина по которой раст барским сапогом забивают в холопьи жопы.
132 3399517
>>399386
Кто все лол? Меньше таких всех слушай.
>>399507
Это понятно. Но останься вопрос начальной причины пропихивания. Ну это же не голивуд куда гомолезбонегров квотировали.
133 3399532
>>399199

>структура или переменная должна быть обработана


1.
static_shluha.c -> static type_of_shluha _shluxa;
static_shluha.h -> bool static_shluha_put(...);
Через функции, чтобы не ебаться с многопотоком в вызывающем коде.
user_(1-1000).c -> static_shluha_put(...);

2.
shluhset.h -> shluha_1, shluha_2
user_(1-1000).c -> abstract_shluha_put(ПОКАЗЫВАЕШЬ ПАЛЬЦЕМ НА ИСПОЛЬЗУЕМУЮ);
image.jpg176 Кб, 728x900
134 3399566
>>399307

>Честно сказать кажется будто плохая идея начинать с этого языка


Говорят, что начинать с С - действительно плохо. Начинать лучше с Pascal.
Но я уже не вспомню почему. В С по-моему более гибкий синтаксис, соответствующей больше функциональной парадигме. Например, в С ты можешь спокойно написать
(A = B) == C + D
Новичкам обычно это выражение кажется лишённым смысла, так как "императивный полход" подразумевает последовательность команд, продедур, операций. А тут какая-то каша не понятная из операций. На самом деле если рассматривать это с парадигмы функции которые что-то возвращают, то тут всё просто:
Вначале выполняется "А = B", еоторая присваивает, B к А, и самое важное - сама эта операция превращается в выражение B, как функция. В паскале такого нет. В паскале присваивание A := B нельзя никуда запихнуть. А тут можно. Итого, "А = B" теперь имеет значение B , затем "B == C" даёт 1 или 0, Да. Как ты только что понял. В С нет никакого "логического типа bool". Тут всё близко к аппаратной основе, поэтому у нас есть только целые числа разных машинных слов, и флоаты с фпу. Поэтому B == C возвращает нам int, либо 1 либо 0. И к этому 1 либо 0 уже прибавляется D.
И такие конструкции вполне легально писать, и это считается нормой.
Например, типично
while( (int c = getc()) != EOF){
То есть вначале инициализируется "с" значкнием прямо из потока, а потом сразу же сравнивается с EOF.
Кстати, я сказал недавно что в С нет типа "bool". Так вот, не только его нет. В С вообще мало что есть. В С нет:
- массивов (даже одинарных!)
- операции возведения в степень
- строк
- модулей
Ты наверное подумал что я пиздабол, ведь как можно кодить на языке без массовов, в то время как С один из популярных языков? Так вот. В С есть "указатели на массивы". А самих массивов не завезли. Квадратные скобки [] - эквивалентны операциям адресной анифметики. Что это такое - ознакомишься позже, но суть в том что в С можно прибавлять числа к указателям (т.е. к адресам) и это будет означать "следующий адрес" , и таким образом и достигаются "псевдо массивы" из обычных типов. А когда хочется сделать двойной массив, на помощь приходит тип "указатель на массив", т.е. при помощи него можно смешаться сразу на пачку адресов. Вот такой мозгоеблей приходится заниматься сишнику, если он захочет сделать что-то прикладное.
На счёт строк - ещё проще. В С нет даже букв! Значения типа char тут равносильны типу byte в паскале - то есть это просто один байт. В одном байте, как мы знаем, помещается одна буква ascii. Функции стандартной библиотеки благо эту кодировку поддердживают, да ещё и на уровне синтаксиса одинарные литералы типо 'F' уместны. Так и получается что массив чисел от 0 до 255 - это и есть "строка". Но разумеется.. никто тебе не даст её так просто расширить или сложить, или что хуже - взять с ввода. Если вывести строку можно стандартной функцией printf("%s") где "%s" - это строка, во вводить её scanf хоть и физически можно но строго запрещено - в программе появляется уязвимость переполнения буфера таким образом. Дело в том что если у тебя строка 5 байт, а слово ты ввел 36 байт, то программа никого жалеть не будет и смело захуярит все 36 байт в твои 5 байт нарушив стек впизду. Правило очевидно "для ввода данных нужно заранее знать их количество"
Что ещё в С нет? Модулей. Да, в С каждый файл компилится сразу в обьектный или в исполняемый. #include тупо нещадно вставляет весь файл в твой проект. А заголовки .h - это просто "хак" прилуманный программистами чтобы избежать путаницы, которая и так появляется периодически.
Так что вот так как-то. Мне лично С понравился.
image.jpg176 Кб, 728x900
134 3399566
>>399307

>Честно сказать кажется будто плохая идея начинать с этого языка


Говорят, что начинать с С - действительно плохо. Начинать лучше с Pascal.
Но я уже не вспомню почему. В С по-моему более гибкий синтаксис, соответствующей больше функциональной парадигме. Например, в С ты можешь спокойно написать
(A = B) == C + D
Новичкам обычно это выражение кажется лишённым смысла, так как "императивный полход" подразумевает последовательность команд, продедур, операций. А тут какая-то каша не понятная из операций. На самом деле если рассматривать это с парадигмы функции которые что-то возвращают, то тут всё просто:
Вначале выполняется "А = B", еоторая присваивает, B к А, и самое важное - сама эта операция превращается в выражение B, как функция. В паскале такого нет. В паскале присваивание A := B нельзя никуда запихнуть. А тут можно. Итого, "А = B" теперь имеет значение B , затем "B == C" даёт 1 или 0, Да. Как ты только что понял. В С нет никакого "логического типа bool". Тут всё близко к аппаратной основе, поэтому у нас есть только целые числа разных машинных слов, и флоаты с фпу. Поэтому B == C возвращает нам int, либо 1 либо 0. И к этому 1 либо 0 уже прибавляется D.
И такие конструкции вполне легально писать, и это считается нормой.
Например, типично
while( (int c = getc()) != EOF){
То есть вначале инициализируется "с" значкнием прямо из потока, а потом сразу же сравнивается с EOF.
Кстати, я сказал недавно что в С нет типа "bool". Так вот, не только его нет. В С вообще мало что есть. В С нет:
- массивов (даже одинарных!)
- операции возведения в степень
- строк
- модулей
Ты наверное подумал что я пиздабол, ведь как можно кодить на языке без массовов, в то время как С один из популярных языков? Так вот. В С есть "указатели на массивы". А самих массивов не завезли. Квадратные скобки [] - эквивалентны операциям адресной анифметики. Что это такое - ознакомишься позже, но суть в том что в С можно прибавлять числа к указателям (т.е. к адресам) и это будет означать "следующий адрес" , и таким образом и достигаются "псевдо массивы" из обычных типов. А когда хочется сделать двойной массив, на помощь приходит тип "указатель на массив", т.е. при помощи него можно смешаться сразу на пачку адресов. Вот такой мозгоеблей приходится заниматься сишнику, если он захочет сделать что-то прикладное.
На счёт строк - ещё проще. В С нет даже букв! Значения типа char тут равносильны типу byte в паскале - то есть это просто один байт. В одном байте, как мы знаем, помещается одна буква ascii. Функции стандартной библиотеки благо эту кодировку поддердживают, да ещё и на уровне синтаксиса одинарные литералы типо 'F' уместны. Так и получается что массив чисел от 0 до 255 - это и есть "строка". Но разумеется.. никто тебе не даст её так просто расширить или сложить, или что хуже - взять с ввода. Если вывести строку можно стандартной функцией printf("%s") где "%s" - это строка, во вводить её scanf хоть и физически можно но строго запрещено - в программе появляется уязвимость переполнения буфера таким образом. Дело в том что если у тебя строка 5 байт, а слово ты ввел 36 байт, то программа никого жалеть не будет и смело захуярит все 36 байт в твои 5 байт нарушив стек впизду. Правило очевидно "для ввода данных нужно заранее знать их количество"
Что ещё в С нет? Модулей. Да, в С каждый файл компилится сразу в обьектный или в исполняемый. #include тупо нещадно вставляет весь файл в твой проект. А заголовки .h - это просто "хак" прилуманный программистами чтобы избежать путаницы, которая и так появляется периодически.
Так что вот так как-то. Мне лично С понравился.
135 3399586
>>399566
По сути си по его устройству можно назвать прокачеными макросами для ассемблера?
136 3399590
>>399586
Ну, скорее нет. Но да, суть С в том что он низкоуровневый. У него чистый zero-runtume, т.е. он не тащит в компиляцию никаких своих библиотек и транслирует всё прямо в машинный код. Тем не менее, с точки зреня парадигмы он на ряду с паскалем, годится и для прикладного программирования. Универсальный язык получается.
137 3399636
>>399566
Вообще я когда только начинал изучать программирование, я первым попробовал Си, около 4 месяцев на него потратил и мне тогда показалось что во первых он очень сложный из-за указателей, отсутствия строк, арифметики указателей, малок/калок и всего веселого а во вторых было ощущение что написать настоящую программу на нем сложно из-за низкого уровня. И я начал как сдвгшный ребёнок прыгать в поисках "нормального" языка и мне каждый раз очередной язык бил по голове, это нельзя, то нельзя, это ошибка синтаксиса, это переполнение стека(рекурсия в питоне ага), половина вещей без си вообще не возможна и постоянно утыкается в то что делают какие-то костыли типо cython и другой хуйни. И вот спустя 1.5 года я опять здесь, я опять пришел к богу. Все что выше это интерпретаторы Си, пошло оно все нахуй.
138 3399668
>>399636
Двачую. Я правда ещё сам вкатун, и у меня обратное поведение. Я всегда с детства бросал кодить на первом же уроке пайтона, потому что я не понимал "а зачем все эти if-else, еще какая то аутическая срань. Возьмите да на языке схем сделайте все что нужно, и понятее и удобнее. Что за глупым каким-то бесполезным вещам нас учат". Учится программированию я начал вовсе не последних курсах унивеситета, когда начались микроконтроллеры, релейные схемы. Вот тогда уже был создан так сказать "лор" компьютерного знания. То есть стало отдаленно понятно, что из себя представляет железо, и как оно должно работать. После чего естественно пошел Паскаль, ассемблер и С.
Так вот, если Паскаль просто был не особо интересен ввиду довольно кривого синтаксиса, ассемблер мне показался довольно бессплодным в плане написания прикладных программ. Ну а С как-то затянул своим подходом. Говорят что в нем нетипичный синтаксис для языков тех лет, а мне он наоборот показался каким то догичным и понятным. Собственно, около года я на этом сраном С прокодил, и понял, что с такими знаниями я никогда в жизни работы не найду. Надо переходить на С++ потом на Python или Java где больше платят. В общем то пока что обучение С++ не задаётся - синтаксис кажется таким тупым и нелогичным, что вот порой думаешь, что кроссворды какие-то решаешь, а не код пишешь. Вроде как классы должны упрощать построение программы, но в итоге по несколько часов чешишь репу как это класс правильно сделать, чтобы не выскочило непредвиденных ошибок. И порой кажется что обычны С куда более предсказуем и понятен, чем С++ со всеми его наворотами.
Ну а Python с его производительностью вообще непонятно как может полноценно использоваться. Ладно если ещё нужно сделать то, для чего и предназначены скрипты: различные парсеры, обработка текста, сортировка, статистика, машинное обучение в конце концов. Но писать " прикладную программу" или игру на python? Зачем? Все ведь явно будет тормозить. У меня сложилось впечатление, что вообще не существует ни одного языка общего назначения помимо С.
138 3399668
>>399636
Двачую. Я правда ещё сам вкатун, и у меня обратное поведение. Я всегда с детства бросал кодить на первом же уроке пайтона, потому что я не понимал "а зачем все эти if-else, еще какая то аутическая срань. Возьмите да на языке схем сделайте все что нужно, и понятее и удобнее. Что за глупым каким-то бесполезным вещам нас учат". Учится программированию я начал вовсе не последних курсах унивеситета, когда начались микроконтроллеры, релейные схемы. Вот тогда уже был создан так сказать "лор" компьютерного знания. То есть стало отдаленно понятно, что из себя представляет железо, и как оно должно работать. После чего естественно пошел Паскаль, ассемблер и С.
Так вот, если Паскаль просто был не особо интересен ввиду довольно кривого синтаксиса, ассемблер мне показался довольно бессплодным в плане написания прикладных программ. Ну а С как-то затянул своим подходом. Говорят что в нем нетипичный синтаксис для языков тех лет, а мне он наоборот показался каким то догичным и понятным. Собственно, около года я на этом сраном С прокодил, и понял, что с такими знаниями я никогда в жизни работы не найду. Надо переходить на С++ потом на Python или Java где больше платят. В общем то пока что обучение С++ не задаётся - синтаксис кажется таким тупым и нелогичным, что вот порой думаешь, что кроссворды какие-то решаешь, а не код пишешь. Вроде как классы должны упрощать построение программы, но в итоге по несколько часов чешишь репу как это класс правильно сделать, чтобы не выскочило непредвиденных ошибок. И порой кажется что обычны С куда более предсказуем и понятен, чем С++ со всеми его наворотами.
Ну а Python с его производительностью вообще непонятно как может полноценно использоваться. Ладно если ещё нужно сделать то, для чего и предназначены скрипты: различные парсеры, обработка текста, сортировка, статистика, машинное обучение в конце концов. Но писать " прикладную программу" или игру на python? Зачем? Все ведь явно будет тормозить. У меня сложилось впечатление, что вообще не существует ни одного языка общего назначения помимо С.
139 3399683
>>399668
Есть момент, на С++ больше времени тратится на архитектуру программы чем собственно на саму программу что сильно дизморалит при разработке своих проектов в одиночку, я помню ситуации когда я просто бросал проекты потому что в один момент код становился просто ужасен и я не мог организовать программу, да это моя вина, я не осилил плюсы, но на си при организации проектов проблем в сто раз меньше, я как то создавая очередную 2d игрушку на плюсах поймал себя на том что я просто не хочу писать очередной класс и описывать ебаные ооп системы из-за которых полезного кода(который что-то делает) остается 50% остальное это ебаные абстрактные сальтомортале которые нужны только для того чтобы вызвать этот самый код. И это я писал на по принципу "Си с классами" а потом я посмотрел что такое настоящий С++ с шаблонами на шаблон, абстрактными класами, виртуальными методами и просто выпал в осадок, это же ад. Когда в C++ QT только у одного класса 100 наследников блять, это настоящий пиздец.

Во первых я слаб для плюсов, во вторых я не работаю программистом поэтому я не хочу ооп.
140 3399763
>>399683
Не, ну если в одиночку по фану что-то пилить, то можно и сишкой обойтись.
141 3399774
Подскажите GUI фреймворк , библиотеку, функцию или как это называется? Для windows. Нужно что-то совсем простое и быстрое. Манипулирование пикселями в окошке, реагирование на курсор мышки. И всё. Минимум возможностей, но и код должен быть простой, понятный и красивый. Я новичок в этом. Сейчас пробую язык Processing, но это java и графика медленно работает.
Что хочу вообще? Написать симулятор распределения тепла, в объектах кубиках. Ну, просто цветные пиксели: красные движутся вверх, синие вниз. Перераспределение тепла от объекта к объекту и т.п. и т.д.
Вообщем, домашний долгострой, для изучения языка.
Хотя вот думаю, если код на С и выбранный gui фреймворм будет жуткий, то лучше останусь на Processing.
142 3399782
>>399774
WINAPI, GDI
143 3399860
>>399774
Про WinAPI и GDI уже сказали.
Всякие библиотеки для UI-шек говно ебанное и каждый пишет кто во что горазд.
Проще изучить DirectX или OpenGL и рисуй окошки через них, а для остального запили конечный автомат, который перехватывает сообщения(клава-мышь-таймер) от оконной процедуры.

Для твоего симулятора лучше всего подойдет писать все на пиксельном шейдере.
Если взялся писать на C, то лучше на OpenGL с библиотекой glfw. Минимум мороки и готовый фрейворк для конечного автомата.
Если совсем не хочешь связываться, просто запили минимальный рендеринг одной текстуры, которая будет транслироваться из удобного тебе массива.
Можешь и на DirectX, но он заточен на C++ и на C всякие ООПшные кишки не спрятаны под капот и придется в ручную с ними работать. А еще он более низкоуровневый чем opengl, отчего его сложнее освоить.
144 3399930
>>399860

Ну насчет dx/og я не согласен, все таки они больше для 3д, GDI для 2d графики намного удобнее, очень легко рисуются линии, круги, квадраты и все остальные базовые фигуры, не надо самому описывать внутренние системы для отрисовки этих самых примитивов, можно сразу же приступить к созданию своих виджетов.

Мимо >>399782
145 3399931
>>399860
Но насчет мультиплатформености да, GDI уже не подойдет, кроме opengl ничего не остаётся.
146 3400376
>>399931
Мультиплатформа это чтобы на семерке и икспи работало. А линукс не мультиплатформа, а долбоебизм. Написание графических приложений под роутер иначе как даунизмом нельзя назвать, это не платформа настольных приложений. Если даже до такого додуматься не можешь, наверное стоит пойти нахуй из программирования, ну или продолжать инфоцыганить поносом из СМИ, всё равно код не пишешь, только попугаишь инфомусор как нейросеть.
147 3400647
>>400376

>Мультиплатформа это чтобы на семерке и икспи работало.


Нищебродина, спокуху оформи. Такую мультиплатформу ты себе сам на помойке соберешь из отходов.
А линукс это удобная, современная и прогрессивная операционная система для компьютеров последнего поколения.
148 3400664
>>400376
Не-не, линупс нахой не нужен. Я ибал писать под него. В новостях постоянно читаешь, как очередную программу героически переписаои на свежайший фреймворк. Я прям соболезную потери сил и времени затраченное на очередное (!) переписывание с гтк3 на ГТК4, с кути5 на кути6. Что там на очереди ?. При этом программа остаётся по сути той же самой, но на новом фрейворке и с новыми багами. А так же с новыми аппетитами на цпу и рам. Без слез не посмотришь, как эти бедолаги варятся в своей экосистеме да ещё и гордятся этим. Жесть просто. Как хорошо, что я вовремя всё это понял и спрыгнул с этого поезда.
149 3400696
>>399590

>У него чистый zero-runtume, т.е. он не тащит в компиляцию никаких своих библиотек


libgcc

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


Как и хаскель. Причем простой оператор С может обернуться десятками команд.
150 3400856
>>400664
Это еще цветочки, я на гитхабе наблюдаю обновление программ, консольная залупа, думаешь что там обновляется? Фреймворки? Нет. Библиотеки? Нет. Обновляется язык программирования.

>"Обновлен язык до 2.3"


>"Обновлен язык до 2.4"


>"Обновлен язык до 2.5"


И ко всему прочему, обновляет бот, и на каждое обновление, такой гордый релиз новой версии публикуется. Молодая, дерзкая, активная разработка ПО из 10, охуеть просто.

А ответ прост - имитация деятельности.

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


А чего им плакать, они довольны как коты обожравшиеся сметаны, имитируют работу, но за результат никто не спросит. Они и не хотят ничего делать рабочее, это же работать надо, труд, ответственность. Не, это не про сою, которая развлекается с кодом всю жизнь играя в показуху.
151 3400868
>>399930
GDI легаси говно из бородатых 90-ых, когда графон на CPU рисовали. Оно тормозит даже при аппаратном ускорении, ибо реализация однопоточна и идет через еблю системных вызовов и постоянном переключении контекста. Рисовать графон несколько десятков линий и битмапов может и проще, но когда дело доходит по кастомного виджета, то становиться хуево.
И DirectX и OpenGL универсальны и в себе содержат фреймфорки для 2D графики и текста. Хотя зачем они нужны если есть шейдеры?
152 3400938
>>400376
Хуя неосилятор бабахнул
153 3400942
>>400868
Просто судя по тому что анон спрашивает он не имеет достаточно опыта, и отправлять его на OpenGl это а тем-более DX это в его случае 99% забрасывание своего проекта, щас он нарисует первый разноцветный треугол и охуеет.
154 3401087
>>400868
>>400942
Я уже охуел. Такая большая портянка для одного треугольника? Нет, спасибо.
155 3401100
>>401087
Посмотри на GDI/GDI+
156 3401108
>>401100
Пишут, что медленно. Вот, сколько теоретически ФПС выдаёт окно 800х600 в котором черно-белые пиксели в виде шума рисуются?
157 3401123
>>401108

>Пишут, что медленно.


Самое простое что ты можешь сделать, это рисовать свои точки в память RGB буфер, а потом его выводить сразу 30 раз в секунду как картинку или через GDI или GL. А еще лучше, реализуй это на JS + Canvas в браузере и не еби мозги.
мимо
158 3401135
>>401108
Вызов одной функции рисования примерно 5-10 тыщ тактов процессора + задержка памяти. В итоге выходит 12-30 микросекунд. При самом оптимистичном варианте у тебя около 80 тыщ вызове в секунду, если ты рисование в отдельный поток вынесешь. На практике же не более 50 тыщ вызовов в секунду.
Точки и линии довольно одинаково прожорливые как и отображение битмапа. Так что рисуй в массивы и отправляй на рисовку как спрайты.
По сложности это примерно как разместить два треугольника и натянуть на нею свою текстуру в opengl. В GDI тебе нужно заново создавать устройство, привязать к окну, создать контекст устройства и привязать к нему структуру, в которую входить битмап.
159 3401262
>>401123
>>401135
Сейчас я использую Processing, как написал здесь >>399774
И по быстродействию предложенное вами медленнее. Значит нет смысла переходить на С.
160 3401321
>>401135

>Точки и линии довольно одинаково прожорливые как и отображение битмапа.


Отображение битмапа бесплатное. А точки, линии и прочее зависит от того каким образом их рисуешь. Рисовать пиксели по алгоритму, будут дичайшие тормоза.
161 3401408
>>401321
Чтоб битмап отобразить, то нужно как минимум переключение контакта для обработка абстракции железки. Видеопамять бутылочное горлышко и оно создает главный тормоз. Так получается, что функции отображения битмапа стоят примерно так же как и рисовании линие или изменение одного единственного пикселя.
162 3401544
>>400696

>libgcc


Это если динамически линковать, то да, типа рантайм. Причём он уже в системе, загруженный сотней системных утилит и под капотом у каждой третьей прикладной.
Не, ну если кто-то принципиально против stdlib, то компиляй статически только те функции, что реально используешь. Или велосипедь свои. Запарно но выполнимо.

>простой оператор С может обернуться десятками команд


C не перегружает операторы, это тема плюсов.
163 3401583
>>400696

>libgcc


Gcc не является единственным компилятором С, более того, он не является каноничным.

>Как и хаскель. Причем простой оператор С может обернуться десятками команд.


Нет. Если простой оператор С превращается всего лишь в десять команд, то хаскел вообще делает другое: он вначале подрубает функции из стандартной библиотеки, и также выполняет сборку мусора. Хаксель ни разу не низкоуровневый. А С вполне себе. На С можно писать без стандартной библиотеки вообще, чисто как на ассемблере.
164 3401593
>>401408
Брехло, ты же никогда не писал ничего, тупой баран, ничего не понимаешь, только серешь инфомусором изображая ыксперда.
165 3401614
>>401583

>не является каноничным


Дико извиняюсь, а что есть каноничный компилятор? Portable заточенный под стандарт `69?
166 3401639
>>401614
TCC - Tiny C Compiler
167 3401653
>>401639
двачую
tcc -r batch-rename-files.c форева
но блин попробуй хотя бы calcurse через него собрать
168 3401714
>>401639
Охуеть, его 1 человек делал? Это реально? Насколько сложно реализовать компилятор, это же пиздец.
169 3401721
>>401714
Нереально, поэтому заброшенный бесполезный кал годный только для хеллоуворлда. Игрушка уровня тех хакерских соревнований делать графические демки не более килобайта в размере. Показать дебилам, те покудахтают "вау! крута!" и на том всё, уровень тиктоко-видосов.
170 3401866
>>399566

> массивов (даже одинарных!)


Формально таки есть, можно сделать же
int arr[] = {};
И arr будет массивом.
171 3401949
>>401866
Не будет, в си нет массивов, это просто еще один вид указателя обмазанный чуток сахарком. То же самое со строками, строк в си нет, это буфера байтов, чуток обмазанные сахарком. Заметь, буфера байтов, а не массивы, потому что массивов, как уже сказано, в си нет.
172 3401966
>>401949
Как раз arr будет статическим массивом, ты же сам только что признался, что для него и sizeof по-другому работает.

А почему нет строк? Есть же стандартная библиотека string.h

Я понимаю, что ты говоришь об структурах данных и о сопутствующих им методах, но на уровне железа это и будут те самые участки памяти в куче.
173 3401979
>>401966

>sizeof по-другому работает


Это не делает из указателя массив, указатель есть указатель.

>Есть же стандартная библиотека string.h


Поэтому сишники пердолят сырые литералы и буферы?
Вот в крестах есть std::string, все юзают, понятно как, а что с твоим файликом? Покажи как его используют и где. Ты же не считаешь что натравить какую-нибудь strlen(void*) на байтобуфер это строка?
174 3401986
>>401966

>А почему нет строк? Есть же стандартная библиотека string.h


Стандартная бибиотека С... Увы не "стандартная". Все функции в ней также написаны на С и предсталяют собой пердолинг с буферами. Как я уже и говорил, из-за этого некоторые функции запрещено использовать, так как они несут уязвимость переполнения буфера, а во время создания string.h никто даже не думал что найдется еблан которому зачем-то нужно будет переполнять буфер. В С++ вроде бы есть полноценные строки из настоящей "стандартной" библиотеки которая идёт в рантайм.
175 3401987
>>401979
А использование питона не отменяет использования ассмеблера и что?
Нет, делает, потому что sizeof возвращает количество байт, которое относится к массиву, а не максимальную длину машинного слова, ок-да? Да, сопутствующих методов методов нет для массива нет, но это статический массив в стэке, а не указатель.

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

Тебе надо, чтобы в заголовочном файле был typedef struct {char* str, int size;} string; или что? Я понять не могу.
176 3401990
>>401987

>Нет, делает, потому что sizeof возвращает количество байт, которое относится к массиву, а не максимальную длину машинного слова, ок-да?


Так тебе уже пояснили, что это достигается за счёт типа "указатель на массив". Т.е. в С можно указать на произвольное количество байт, причем сами эти байты не ведут себя как массивы в привычных языках, и массивами не являются даже чисто из определения.
177 3402000
>>401987
Ты дятел, троллишь тупостью, даже не понимаешь что такое тип. Вот в си есть тип int это число, пишешь a=123; и получаешь свое число, пишешь a+b и получаешь сумму чисел. Вот что такое тип. А что со строками или массивами? Их не существует, нет никаких строк и массивов, это лишь указатели на память. Ты не можешь сложить две строки, ты не можешь сложить два массива, это не типы. Работая со строками и массивами в си ты думаешь не о строках и массивах, а о байтах. Это байты, а байты не тип, это сырая память, машина.

Про определению типа невозможно выйти за его пределы. Ты не можешь выйти за пределы int, потому что это тип числа, нельзя выйти за пределы числа работая с числами, это абсурд. Если ты выходишь за пределы типа, это значит ты работаешь не с типом, а с системой ниже уровнем, то есть типа нет, ты бредишь, отыгрываешь тип которого нет у себя в воображении, это шизофазия.
дедушка 178 3402002
>>401990

>не ведут себя как массивы в привычных языках,


Нет ошибки при выходе за границу.
Многомерная индексация ломается при передаче в функцию.
Вот и всё.

> и массивами не являются даже чисто из определения.


Определение массива хоть на вики прочитай.
179 3402008
>>402002

>Нет ошибки при выходе за границу.


>Многомерная индексация ломается при передаче в функцию.


Так это уже о многом говорит. Ещё нет ключевого слова array как во многих языках. Потому что такого типа как "массив" нет в С. Поведение квадратных скобочек [] аналогично поведению операции разыменовывания. Сказать что в С есть массивы, это всё равно что сказать "В С есть ссылки" и привести в качестве ссылки - указатель. Потом можно ещё больше дристануть и сказать "в С есть классы" - и привести в пример структуру с указателем на функции. Ну уж нет. С не предусматривает ни ссылок, ни классов, ни массивов. Однако для простоты можно сказать "масссивы", как мне неоднократно говориои " попробуй передать значения по ссылке" - явно имелось ввиду что по указателю, ссылок то в С нет.
180 3402014
>>401990
Ладно.
>>402000
В языке типы есть, но на уровне железа это всё равно байты в памяти, ими можно манипулировать как хочется. если язык позволяет.
image28 Кб, 523x384
181 3402017
>>402014
Хотя пусть даже так будет. Оно наверное даже по-разному обработается или чепуху выведет, а не содержимое str...
182 3402019
>>402008
Гы-гы-гы, угадай на основе чего реализованы ссылки в плюсах.
Но спорить не буду, механизм классный.
183 3402026
>>402017
>>402014
Я же не спорю, что в стандарте Си нет именно строк и векторов как структур данных.
Но это фича, Си минималистичен и гибок.
184 3402314
>>402026

>Но это фича, Си минималистичен и гибок.


Фича фичей, но не будь дауном пердолящим сырые сишные строки, кончается это очень плохо, коррупцией памяти с непредсказуемым результатом. У меня есть программа работы с текстом написанная лоулевел-дебилом, она падает, может раз в день или даже раз за разом, а может год не падать, вот и сиди думай что там не так. Аналогично с массивами являющимися такими же указателями как строки. Самый верный путь обсёра - пилить на сишке эти математические задачки которые так любят в шкалках, типа "сортировка массива". Игра в сапера, один неверный шаг и подрыв.
185 3402328
>>402314
Вим и емакс написаны на ассемблере и Си. Что-то не замечал, что они часто падают.
186 3402376
>>402314

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


Ну, потому что дебил неправильно сделал программу.
Я вот на С++ пытаюсь перейти, и не понимаю в чём суть: дроч со строками и с памятью остался. А поведение стало более непредсказуемым. Если твой С-шный код лего отдебагать и выяснить в какой момент происходит ошибка, то С++ код это какой-то говняк, в котором половина всего происходит на уровне компилятора, и нихрена не понятно что куда должно пойти.

А если брать python - то там очевижно производительность низкая, да и в бинарнико по нормальному не откомпилишь.
187 3402415
>>393077
Интуиция
188 3402423
>>402376
Питон это вообще не язык. Питон, java, Lua там всякие..
На C++, C#, ASM, и даже на Bas и Pas'e пишешь код и получаешь готовый продукт.
Ну что это за языкы , если для запуска творений написанных на этих языках, необходимо тщательно организовать среду выполнения (окружение так называемое) . Потом надо убедиться есть ли трансляторы этих языков на ПК (питона транслятор , джавы и т.д). Потом что-то там скомпилировать через ёбаный в рот и с божьей помощью, через какое-то консольные команды. А потом выясняется, что под эту платформу код не подходит. А писал на 32й машине, но запустить надо к примеру на 64й.

Вы извините меня за грубость конечно же, но и накипело просто.
Меня убивает главный лозунг джавы
"Напиши единожды и запускай везде"
Да нихуя это не так. Там ебля жёсткая будет если даже с разных Винд будешь байт код запускать.
Там весь код нахуй переделывать придётся.в чем смысла тогда этой ихней мультиплатформенностм?!
Я тогда лучше буду на ассемблере писать. Один хрен как и там придётся под каждую платформу переписывать код, так зато я на голом железе буду код делать высокоскоростной, чем на тех «мультиплатах» которые нихуя не мульти на самом деле и к тому же интерпретируемые.
189 3402426
>>386589
А да, ещё по Линуксу.
Эх Линукс Линукс.. (ниже буду метафоры использовать)

А какой смысл вообще овладевать Линуксом? ( не важно на низком уровне / или на высоком уровне). Какой в этом смысл если это мёртвая система. Ну ок пусть не мертвая но сугубо «Островная» ОСь не имеющая связи с материком.

Если и овладевать Линуксом на очень хорошем уровне, то надо сразу же первым делом софт писать начинать для него. Моё мнение. Чтобы он постепенно приобрёл «связь» с материковым миром.
Материковым миром я называю софтовую экосистему где Word'oвские файлы открываются хорошо (одинаково) у всех пользователей на любых машинах, директивы одинаково выглядят, приложения легко протираются. Или чтобы хотя-бы исходные коды компилировались и запускались и там и там без проблем.
А Линукс ну хз.. Реально остров какой-то сделали непонятный. В далеке от материка.
И ладно бы если этот остров начали заселять и развивать, но нет же сука. Рядом ещё Островок поменьше сделали. И ещё рядом. И в итоге островков наебенили кучу. И все полудикие в итоге.
190 3402437
А вообще мне нравится философия Линукса. Хотя я больше провёл времени за чтением статей про Линукс чем за просиживанием штанов за своей Убунтой ( поскольку все-же предпочитаю свой второй более древний комп с windows 7).

Но он сырой же , ваш этот Линукс. Ну чувствуется же
191 3402438
>>402426

>Материковым миром я называю софтовую экосистему где Word'oвские файлы открываются хорошо (одинаково) у всех пользователей на любых машинах


Что за бредятину ты несёшь? Я думал ты сейчас зайдёшь с козырей, начнёшь рассказывать что в ентерпрайсе используют windows server, и админ винды - намного более образованный человек чем рукожоп на линупсах. Но нет, началось "пук серьк, а на моём линуксе 1С предприятие не открывается!!! это што получается линух - не актуал". Твой вонючий ворд и 1С - не актуал. А на libreoffice всё отлично работает.
192 3402440
>>402438
Нет Линукс не не актуал

> > на моём линуксе 1С предприятие не отурывется, это што получается линух - не актуал".


Нет, дело не в актуал или не актуал.
Идея Линукса хорошая. НО он просто СЫРОЙ.
Понимаешь. Их много очень просто и вместо того чтобы оставить 2-3 разновидности Линьки и довести их до ума, их наплодили несколько десятков.
В этом вся проблема.
193 3402446
>>402440

> НО он просто СЫРОЙ.


Какой впизду сырой. То что на линуксе нет 1С и нескучных обоев - это проблема только твоей больной головы. Сырой блядь... А вот если заменить линукс полностью на винду то не сырой. Траву потрогай.
194 3402480
>>402446
Почему 1С нет? Есть же десктопная версия под линукс. Вот например учебная версия https://online.1c.ru/catalog/free/28766016/

мимо
195 3402483
>>402440
Это фича, а не баг. Комуто убунта, а кому-то арч. А не как барин за всех решил, то и жрите.
196 3402491
>>402480
Тем более. Хз что "недопиленного" в линукс. В линукс наоборот, есть "искажённое" и "перепиленное". Например, я адепт того что по-умолчанию в unix-like системах не должно быть видеоядра, только сонсоль. И это не какая-то дань традициям, просто вот юникс он сделан под консоль. Графика там тоже есть, но пытаться впихнуть графику в ядро - это какое-то бесполезное подражание шиндовсу. Зачем? нужен шиндовс - сиддите на шиндовс. У юникса свой путь, своя философия.
197 3402536
>>402446
Я терпеть не могу кстати эти ваши нескучные обои и эти анимированные курсоры.. у меня на всех компьютерах дома стиль оформления win98. Щас сфоткаю рабочий стол свой и оформление компа
198 3402540
>>402536
Я всё понимаю, Си и юникс связаны, но давайте без этой хуйни, пожалуйста.
199 3402545
>>402483
Нет, должно быть не так бро. Должно быть так : это Линукс! А вы уважаемый пользователь может собственноручно его под себя настроить. Хотите, можете подружить свой Линукс с такимто пакетным менеджером, хотите можете с другим и т д.
А не как на самом деле. Вот есть Линукс к примеру а он для таких то целей предназначен, есть Линукс та он для таких целей предназначен, есть Линукс ли он для тестирования безопасности, а есть ещё Линукс для музыкантов к примеру.
Эта хреновая концепция. Должно быть как в Винде . Это Линукс Линукс, он для чего угодно, он чистый, стоковый, девственный. А какие программы вы туда поставите тем и будете, хотите музыкантом станьте, хотите криптографом, хотите врачём, хотите программистом.
Вот так должно быть
200 3402547
>>402540
Ладно извини. Хорошо
201 3402553
>>402545
Ну и какие проблемы? Поставил себе в арч LMMS и ты уже еба диджей, поставь криту - ты уже еба художник.
202 3402776
>>402545
Двачую. Существование нескольких ПАРКЕТНЫХ МЕНЕЖЕРОВ со своими репозиториями - это уже шиза.
203 3402777
>>402776
Ты дурак? Дистрибутив = репозиторий = свои мейнтрейнеры. Если бы была одна репа, то небыло бы 100500 линуксов. Все должны подчиняться красношапке или Шатлворту и жрать корпоративные анальные зонды убунты?
204 3402781
>>402777
Софта под Линупс нет, так что по хуй. Будущее за тонкими клиентами.
205 3402784
>>402781
Будущее за тивоизаций линупса и превращение его в прошивку для тех самых анальных зондов.
206 3402806
>>402784

>превращение прошивки в анальную прошивку


Велика разница, и если начистоту, уже анальная прошивка, делают корпорации для корпораций, чем не анал.
207 3402807
>>402784

>превращение его в прошивку


Для такого нужны RTOS, а высер Пиунса Трольвальдоса не нужен.
208 3402814
>>402806

>чем не анал


Тем что еще живы дебианы с арчами. Но тенденция такова что опенсорс загнется рано или поздно. Причины в том что корпорациям станет нвыгодно опеносрсить из-за иишки
1) Сокращения ит штатов - нехватка рук
2) Увеличение веса ad hoc решений генерированых иишкой - они по определению не могут быть переиспользованы где-то еще
3) Деквалификация уволеных айтишников, которые не смогут корпоративные решения мейтенить в опеносорсе.Те больше вопросами выживания будут заняты, чем поддержкой свободного софта.
4) Недоступность мощного ии вне корпораций. Опять же корпораци будут внедрять технологии, которые за их пределами никто не поймет и не сможет адаптировать.
209 3402819
>>402814

>иишки


проораунькал с иишизика
210 3402825
>>402819
Зарыть голову в песок тоже не очень умная стратегия. Вы щас визжите что llm-ки не станут ии, как раньше визжали что не может быть летательных аппаратов тяжелее воздуха.
По мне так правый поворот в мире, очень кстати по времени сочетается с желанием заменить людей везде и всюду. Корпорации будут рыть в этом направлении еще долго, потому что разочаровались в возможности управления людьми.
211 3402829
>>402825
Ну так если ты не понимаешь как это работает, то это твои проблемы, хорошо что тебе фокусников в цирке мамка еще не показывала.
212 3402831
>>402829
Ты конечно больше понимаешь, но не можешь понять что прогресс не стоит на месте. Первичны не технологии, а первичны идеи. В данный момент истории - желание заменить человека. Откуда стала форсится идея что у челов нет свободы воли? Оттуда что дяди в пиджаках решили, что человек - тоже стахостический попугай, а раз тоже самое, то зачем платить больше. Можно заменить на железного стохастического попугая.
213 3402834
>>402831
таблы
214 3402835
>>402834
пей. я тут причем?
215 3402847
на это вашей Си вообще есть вакансии для джуниоров?
Или фриланс?
216 3402875
>>402847

>вакансии для джуниоров


В токаря пиздуй
217 3402919
>>402847
В треде сидят два-три Сишных джуниора, ты не один их них.
218 3402936
>>402919
У тебя явные проблемы с логикой.
Я спрашивал есть ли вакансии для джунов и фриланс.
219 3402939
>>402936
Нет вакансий для джунов больше нет. Два сидящих здесь джуна все оставшиеся вакансии закрыли.
220 3402998
>>402936
>>402936
Сишники самые низкооплачивамые даже до кризиса АйТи были, а сейчас и подавно.
221 3403015
>>402831

>форсится идея что человеки не нужны


>прогресс


Значение знаешь? Сам понял что спизданул?

Маня, проснись и просрись. Если форсится идея что "человеки не нужны", это банальная атака. Кто-то уничтожает своих врагов, только и всего. Прогресс это развитие человека, а не его самоубийство. Самоубийств вообще не бывает, это абсурд, бывают только убийства, в том числе и непрямые, когда жертву убеждают убить себя. Но какая разница, это всё равно что взять и застрелить, просто используется другое оружие, не огнестрельное, а психологическое.
222 3403051
>>403015
А теперь прочитай определение киберпанка.
image.png6 Кб, 402x287
223 3403595
по моему запрет этой операции противоречит самой идеи си
image90 Кб, 1220x725
224 3403631
>>403595
откуда компилятор ебёт что с твоими структурами делать? Руками допиши, там работы на миниту.
225 3403636
from: >>403631
mailto: >>403595

А это я ещё не ел, пиздец, такие как ты не заслуживает пищи, почему я должен перебиваться с хлеба на воду, пока такие твари как ты жрут мяса? Тварь ты ебанная.
226 3403642
>>403595
В чем противоречит? Применение побитовых операций к высокоуровневым объектам? Нахуя?
227 3403646
>>403631
берёшь и применяешь сложение к каждой паре битов, ебать компилятор никого не должен
228 3403649
>>403646
Тупой ты пидор, а если размер структуры превышает размер регистра? Он за тебя должен цикл создать, где к каждому байту применит побитовое сложение? Иди нахуй, пидор.
229 3403653
>>403649

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


ну да, логично, почему нет
230 3403656
>>403653
Иди пользуйся трансформерами, Си не для тебя.
231 3403658
>>403656
я кроме си ничего не знаю
232 3403660
>>403658
Иди нахуй, ты не заслужил есть мясо.
233 3403661
>>403660
мясо я не ем
234 3403667
>>403658
Нихуя ты не знаешь Си, если бы знал, то не писал бы подобную чепуху, ты не заслужил потреблять углеводы и протеины, ты тварь поганная.
235 3403668
>>403667
ну ладно извините я ухожу
vanomas.gif3,4 Мб, 640x640
236 3403872
>>402835
Эххх.. феназепама бы.. или прегабалина. но мне не продают без рецепта.

>>402847
Нет конечно. Вообще 0. Я больше скажу, в С++ практически нереально вкатится, не то что в С ебаное.

С - это чисто для души. Если нужна работа - жава, пайтон, 1С.

>>403595
А что такое "идея С". Помоему, в С вообще использовать структуры - это зашквар. Их используют редко, и чисто по делу. Структуры - это к С++. В С принято выёбываться адресной арифметикой, и байтоёбствовать. Поэтому правильнее было бы реализовать двойной массив а и б.
237 3403932
Аноны, делаю мини игру из system shock 2, по сути сапер. Никогда не показывал никому свой говнокод, но понимаю что без указаний на ошибки или какие-то недочеты сам не буду расти, прошу не закидывать говном сильно, это по сути мой первый полноценный проектик на Си.

https://github.com/hezenberg/Swinekeeper
238 3403933
>>403932
Не обращайте внимание на моменты где нет комментариев или указаны неиспользуемые типы, я ее еще не доделал, но основа уже готова, остается дописать gamelogic и в общем то все.
239 3403940
>>403932

>что без указаний на ошибки или какие-то недочеты сам не буду расти


Предлагаешь анонам вникать в твой код и искать ошибки? Неси кусок пообсуждем, ну и скриншоты игры на гитхабе выложи
240 3403942
>>403940
Окей, я думаю что тогда не стоит
241 3403946
>>403942
Дип-сику скорми, зайчик, он быстрее сделает, чем мы :0
242 3403948
>>403946
Что сделает?
243 3403949
>>403948
Код ревью.
244 3403950
>>403946
У меня нет проблем с отладкой, код работает как я задумывал, я принес обсудить в общем моменты проектирования, правильного использования тех или иных инструментов и т.д. Тут люди с опытом может объяснять что-нибудь или укажут что нужно исправить, какие у меня есть недочеты.
245 3403952
>>403949
Бездушная машина, не хочу. Такое только с людьми обсуждать.
246 3403958
>>403932
Ну и хуле ты высрал? на чём работает твоя говно-игра? какой-то кал. пару строк - и говно.
247 3403960
248 3403962
>>403960
Т.е. он захадкоден. Т.е. На FreeBSD я твою хуйню посмотреть не могу. Ну тогда открывай рот, лови мочу, хуле сказать. Либо делаешь для BSD и топовые адепты опенсорса тебя оценивают - либо терпи попуски. Извини, жЫзнь такая :(
249 3403965
>>403962
Я не автор проекта.

А как это сделать? Это надо на Qt делать получается? Он, вроде бы, кроссплатформенный.
250 3403968
>>403962
В общем счете да это только для windows, писать для линукса и ему подобных никакого интереса, к сожалению там нет полноценного единого графического API у системы. Нет так нет, в любом случае.
251 3403970
>>403965
Да, через костыли в основном, как и все там.
252 3403973
>>403965

>А как это сделать? Это надо на Qt делать получается? Он, вроде бы, кроссплатформенный


Хотя бы сделай обёртку для своей хуйни. Вот я сделал на С. Обрати внимание на модуль IO. В зависимости от того что ты подключишь io_xlib или io_winapi у тебя то и будет!!
https://github.com/drvptr/CrimewareRender

>>403968

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


Ну тада диннах. Чё мне твоё говно под свиндус тестить.
Писю пасаси патом праси азаза.
253 3403976
>>403973
Нет так нет
254 3403978
>>403968
Окошки рисовать != графическое апи. Зачем тебе системные контролы в игре? Ты где с этим игры видел? В линупсах есть sdl есть вулкан, возьми высокоуровневую обертку для этого. Какое тебе еще надо единое?
17413680883914.png1,4 Мб, 1280x1280
255 3403979
>>403976
чо нiтак?
256 3403981
257 3403982
>>403973
Почему ты в другом проекте используешь статические функции?
258 3403984
>>403982
Вчмысле? Не использую. Их и не возможно использовать. Статические функции в С означают что ты их не можешь использовать в других модулях. И логика кода как бы подразумевает, что если есть слово static - значит это не для тебя написано и не для таких как ты. А в .h такие функции даже не регламентируются.
259 3403991
Ебать у вас тут шиза и дурка
260 3403992
>>403991
Это называется рабочая атмофэра ваще-то
1741372133165.jpg413 Кб, 1080x2340
261 3403994
>>403984
Да я про это.
Почему, кста, не использовал быстрое возведение в степень?
262 3403997
>>403872
Так в плюсах та же адресная арифметика.
Да и в остальных ЯП тоже, даже в питоне индексация массива с нуля.
А вот в Паскале по массиву с единицы ходят :)
Не люблю Паскаль
263 3404005
>>403962

> На FreeBSD посмотреть не могу.



Все стабильно
1741470702431.png8 Кб, 188x296
264 3404779
>>403932
Залил скрин, если кому интересно, да выглядит как говно, но это пародия на говно с пикрила.
265 3404794
>>386488 (OP)
Родные, прошу, посоветуйте для C годных курсов на степике бесплатных, пожалуйста... Очень хотелось бы обучение начинать, теорию с практикой совмещая
266 3404836
>>404794
У Тимофея Хирьянова очень классный вводный курс по Си. Советую.
Знаю, что вопрос был про степик и задания, но всё равно.
267 3404851
>>404836
Анончик, спасибо !!!
268 3404855
>>404779
Мб к вечеру закину пул-реквест.
269 3404875
>>403997

>Да и в остальных ЯП тоже, даже в питоне индексация массива с нуля.


При чё здесь это? Сразу видно ты похожу нихуя кроме пайтона и не знаешь.
270 3404880
>>403872
А зачем си плюс плюсы структуры, если там есть их стероид версия в виде обьектов
17411296125150.jpg267 Кб, 540x682
271 3404884
>>403994
Этот фрагмент кода используется только для загрузки tga изображений. На тот момент я хотел сделать игру более независимой от любых библиотек (вдруг для условного tcc забвли math.h разработать). Он не используется более нигде, кроме загрузки изображений, поэтому на скорость рендера не влияет, ведь изображение всего раз пожгружается, а затем используется из оперативной памяти.
272 3404898
>>404880
В плюсах структуры и классы это практически одно и тоже. У них всего одно отличие. В классах данные по-дефолту private, а в структурах public.
273 3404899
>>404880
Структуры и классы буквально одно и то же, за исключением что у классов private по-умолчанию. В целом можно и в структуре сделать конструкторы и деструкторы, методы.
Структура нужна просто чтобы логически отделить, когда мы имеем дело с композитным типом данных, а когда с классом а ООП. Язык же он для человека в первую очередь, а не для компилятора.
274 3404907
>>404855
Не закину, вообще не понял твоих идей. Походу легче будет с нуля написать.
275 3404913
>>403994
Вообще на счёт этого модуля, как ты понял он писался первым. Вначале идёт гора статик-функций. Эти функции используются только в самом зтом модуле (очевидно, ведь они статические, их линкер не индексирует). В файле .h перечисленны уже "внешние" функции, типо api. Они находятся внизу .с файла.
Там вначале по-моему идет
0.немного математики для этого модуля
1. Работа с разрядностью. Тут функции для конвертации пикселей от 8 до 48 битовой разрядности. В конечном итоге в памчти всё в 32 разрядности хранится, просто потому что удобно по байтам доступ иметь типо 0xRRGGBBAA
2. По-моему дальше идёт описание самого формата tga. Тут структура из "заголовка", опционально палитра, сам канвас, и "подвал".
Тут реализованы функции распознавания типа изображения, функции импорта заголовочника, функции импорта канваса, функции для выделения памяти под всё это, в также удаления этой памяти. Функции для RLE сжатия итд.
3. Прикладная часть.
Вот тут уже чисто полезные функции. Не статические.
Импорт тга, экспорт тга, удаление тга из памяти, закрасить пиксель на тга, "взять" пиксель на тга, изменить порядок байтов RRGGBBAA -> AARRGGBB, изменить размеры картинки (билинейная интерполяция). Короче всё что можно использовать на практике.
276 3404922
>>404875
Наследие адресной арифметики, не?
Вообще, я с синтаксисом Паскаля(кроме указателей), питона(кроме ООП классов) и Си знаком.
277 3404942
>>404922
Хотя по поводу Паскаля обосрался, там индексация может быть и с нуля.
278 3404978
>>404922
>>404942

> Паскаля(кроме указателей)


> питона(кроме ООП классов)


Да ты и не только в этом обосрался. Что ты о программировании знаешь вообще?
В пайтоне нет массивов, потому что там вместо массивов есть более удобные вещи типо списков, библиотек, итд, более высокоуровневая масштабируемая хуйня. В Numpy есть массивы, как отдельный модуль, но я уже и не знаю зачем он нужен если есть list.
В C++ есть как обычные Сишные "псевдомассивы", так и полноценные массивы std::array.
В паскале есть полноценный тип "array" то есть тупо массив как массив.
А при чём тут "с чего начинаются" массивы, я вообще в душе не понимаю к чему ты это спизданул. Пусть хоть со 100 начинаются. Что это меняет?
279 3404992
Прочитал Кернигана и Ричи. Но не понимаю как программировать.
280 3404994
>>404992
А что ты хочешь запрограммировать? Давай помогу.
image8 Кб, 922x47
281 3405001
>>404978
Ну, разъебал, нечего добавить. Но в плюсах массивы и вектора всё так же базируются на псевдомассивах, можешь сам попробовать взять адрес первого элемента и вывести следующие за ним данные.
Или нет, вроде бы, в PascalABC индексация именно, что с нуля была
282 3405003
>>404907
Что не так?
283 3405006
>>405001
с единицы*
284 3405019
>>405001
Псевдмассивы должны быть в скобочках, а то доёбешься ещё, что реально считаю, что есть такой тип данных как псевдомассив.
285 3405025
>>405001

>всё так же базируются на псевдомассивах


И всё это в конечном итоге транслируется в машинный код. Так и запишем С++ = машинный код. Диннах, клоун.
286 3405027
>>404913

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



А вообще есть какие-то паттерны как организовывать такое? Ну то есть взаимодействие между файлами, есть какие-то правила? Иди кто во что горазд?
287 3405030
>>405025
Ты язык ассемблер пропустил перед машинными кодами. Соси бибу!
288 3405047
>>405027
А какие паттерны нужны?
Для ТГА подходит помоему очевидная "фабрика" т.е. у нас есть обьект TGAimage и операции над ними обучловлены.

У меня ещё были паттерны "стратегия" в модуле с кнопками gui. Дело в том, что я не знал как описать всё разнообразие кнопок, и решил, что пусть будет абстрактная структура gui_element, в которую можно набивать всякие свойства, и в зависимости от свойств она меняет поведение. Например вон, смотри, одна кнопка - перемещается за мышью, другая кнопка - закрывает программу, третья - ничего не делает. Тут как ты видишь, я скрестил этот функционал с паттерном "наблюдатель". Дело в том, что все элементы gui_element, они ещё и помещаются в список gui, и существует функция NotifyGui, которая все кнопки опрашивает на их ответ, в зависимости от текущего состояния кнопок/мыши итд.

Просто, в какой-то момент мне показалось что всё что я делаю - это уродство, и я решил забросить. Модули gui.c, animation.c - не сохранил. Хотя реализуются они довольно просто, я думаю если хочешь - запросто допилишь. Анимация сделана по всё тому же паттерну "фабрика". Есть у нас обьект "анимация" который ссылается на какую-то 3d модель (кстати, модуль 3d моделей в том же паттерне), и мы можем воспроизвести кадр анимации, изменив её внутреннее состояние в качестве побочного эффекта.

В render3d.c фишечки с call-back. Сомневаюсь что это тянет на какой-то паттерн, но решил добавить. Там же в отрисовке как линии так и треугольника присутствует "отработчик", т.е. то каким образом отрисовывать треугольник ты задаёшь call-back функцией. Вот на третьем пике: 1.сплошной, 2.градиентный, 3.рандомный, 4. Рандомный с прозрачностью. Это и позволяет в дальнейшем сделать текстурированный отработчик для отрисовки полигонов модели.
289 3405063
>>405027
Могу впринципе иерархию рассказать. В большинстве своём преобладает паттерн "фабрика".

I.НЕЗАВИСИМЫЙ УРОВЕНЬ.
-GRAPH/tgatool.c , можно вообще использовать самостоятельно, без всяких там других модулей. То есть можешь в отдельный каталог откомпилить tgatool и пользоваться им как инструментом для обработки tga картинок. Сам tgatool включён только в render3d, для того чтобы загрузить текстуру, и дальше елозить по ней, просто как по массиву памяти.

- IO/xlib_io.c Тоже можно использовать отдельно. Это просто обётки для стандартных функций xlib. Она описывает два обьекта - контролы, и "окно". Всё просто, окно - это в твоей графической оболочке какая-то область, на которой можно рисовать. КОнтролы - это клаво/мышь.
На окне можно рисовать.
Контролы можно "опрашивать" ожидая изменения состояния. (Точнее, опрашываются не контролы, опрашивается сервер, на наличие изменений, сам "тип" контролы обозначат состояние клавиатуры и мыши, т.е. в нём содержится массив по всем кнопкам и об их состоянии). Тут таже есть макросы типо "нажата ли кнопка".
Зачем эта херота нужна? Очевидно, чтобы инкапсулировать ввод. Теперь достаточно переписать этот модуль под винду, а обёртки функций останётся те же. То есть переписав этот модуль, вся ебучая программа портируется на Windows одним кликом!!! Все остальные модули не используют xlib, они используют только обёртки из этой функции, чтобы быть платформо-независимыми.

- GRAPHIC/algebra.с - тут даже никакого паттерна нет. Это просто чисто немного математических функций. Тут, конечно описан тип "вектор", который представляет собой массив из трёх чисел. Также описаны векторные операции, типо скалярное произведение, векторное произведение. Под вектором подразумевается только трёхмерный вектор. Двухмерных веторов у меня нет, посчитал их бесполезными. Собственно, этот модуль также можно использовать отдельно, он ни с чем не связан. Можно просто взять и начать использовать векторные операции где-то у себя в коде. Также тут реализован Fixed-point типо, т.е. числа с фиксированной точкой. Никакой скорости по сравнению с FPU он не даёт, зато смотри эффект (см скришоты) - типо погрешность, красиво.

II. ЗАВИСИМЫЙ УРОВЕНЬ

- GRAPHIC/wavefront.h - Парсер wavefront obj, 3д моделей. Также, "фабрика", есть тип "3d модель", её можно открыть, удалить, повернуть, передвинуть из неё отдельные точки, распечатать лог о модели, реканкулировать нормали. Для последних функций типо "повернуть" и "реканкултровать нормали" нужны вектора. Поэтому он зависим от модуля algebra.c.

- GRAPHIC/basics.c - тут описаны базовые примитивы для рисования. Как в паскалике на уроке "DrawLine, DrawRectangle". Исключение составляет лишь треугольник, как говорилось, треугольники требуют отработчика. Для тех кто не хочет ебать мозг есть макрос TRIANGLE(w,x1,y1,x2,y2,x3,y3,color) который использует стандартный отработчик default_plot (просто закрасить пикселы указанным цветом, без особенностей).
Данный модуль, к сожалению, зависим от IO/io.h. Ему для вывода необходимы какие-то функции вывода в окно. Я когда только разрабатывал, фантазировал сделать полносью независимый модуль который бы "рисовал ни на чём", а при подкрутке к нему графики рисовал бы графику итд. Но я не додумался как это реализовать и решил просто захардкодить. Кроме того, этот модуль поддерживает fixed-point так что если используются фикседы, то нужно и algebra.c подключеить. Впрочем, по-умолчанию тут на флоатах всё.

- GRAPHIC/render3d.c - Ну и финальный модуль, для его работы необходимо очевидно и algebra, и basics и wavefront_obj, да к тому же и tgatool.c в него включён. Собственно, в модуле описаны такие обьекты как "камера", и методы рендера. Сами модели тут не описаны, так как они уже были описаны в wavefront.
Камеру мы можем создать двух типов: перспективная, и ортогональная. Вроде всё очевидно. Схема работы такая: создаём камеру, инициализируем камеру, загружаем 3d модель, загружаем текстуру (при необходимости). И далее "фотографируем" нашу модель при помощи любой из следующих процедур:
RenderWireframe - отрендерить проволочную модель.
RenderZBuffer - отрендерить отдельно значения буфера глубины для данной модели.
RenderShaded - отреднерить плоско-затенённую фигуру
RenderTextured - отрендерить плоско-затенённую фигуру, со следующей текстурой.
RenderGouraud - отрендерить сглаженную по-Гуро обьект с текстурой.
Солнце тут захардкожено, настраивается макросом SUN, который представляет собой вектор. Т.е. чтобы изменить направление солнца - нужно изменить направление этого вектора.
Падающие тени отсутствуют.

РЕФАКТОРИТЕ!! (если хотите. если не хотите - то и пох)

-
289 3405063
>>405027
Могу впринципе иерархию рассказать. В большинстве своём преобладает паттерн "фабрика".

I.НЕЗАВИСИМЫЙ УРОВЕНЬ.
-GRAPH/tgatool.c , можно вообще использовать самостоятельно, без всяких там других модулей. То есть можешь в отдельный каталог откомпилить tgatool и пользоваться им как инструментом для обработки tga картинок. Сам tgatool включён только в render3d, для того чтобы загрузить текстуру, и дальше елозить по ней, просто как по массиву памяти.

- IO/xlib_io.c Тоже можно использовать отдельно. Это просто обётки для стандартных функций xlib. Она описывает два обьекта - контролы, и "окно". Всё просто, окно - это в твоей графической оболочке какая-то область, на которой можно рисовать. КОнтролы - это клаво/мышь.
На окне можно рисовать.
Контролы можно "опрашивать" ожидая изменения состояния. (Точнее, опрашываются не контролы, опрашивается сервер, на наличие изменений, сам "тип" контролы обозначат состояние клавиатуры и мыши, т.е. в нём содержится массив по всем кнопкам и об их состоянии). Тут таже есть макросы типо "нажата ли кнопка".
Зачем эта херота нужна? Очевидно, чтобы инкапсулировать ввод. Теперь достаточно переписать этот модуль под винду, а обёртки функций останётся те же. То есть переписав этот модуль, вся ебучая программа портируется на Windows одним кликом!!! Все остальные модули не используют xlib, они используют только обёртки из этой функции, чтобы быть платформо-независимыми.

- GRAPHIC/algebra.с - тут даже никакого паттерна нет. Это просто чисто немного математических функций. Тут, конечно описан тип "вектор", который представляет собой массив из трёх чисел. Также описаны векторные операции, типо скалярное произведение, векторное произведение. Под вектором подразумевается только трёхмерный вектор. Двухмерных веторов у меня нет, посчитал их бесполезными. Собственно, этот модуль также можно использовать отдельно, он ни с чем не связан. Можно просто взять и начать использовать векторные операции где-то у себя в коде. Также тут реализован Fixed-point типо, т.е. числа с фиксированной точкой. Никакой скорости по сравнению с FPU он не даёт, зато смотри эффект (см скришоты) - типо погрешность, красиво.

II. ЗАВИСИМЫЙ УРОВЕНЬ

- GRAPHIC/wavefront.h - Парсер wavefront obj, 3д моделей. Также, "фабрика", есть тип "3d модель", её можно открыть, удалить, повернуть, передвинуть из неё отдельные точки, распечатать лог о модели, реканкулировать нормали. Для последних функций типо "повернуть" и "реканкултровать нормали" нужны вектора. Поэтому он зависим от модуля algebra.c.

- GRAPHIC/basics.c - тут описаны базовые примитивы для рисования. Как в паскалике на уроке "DrawLine, DrawRectangle". Исключение составляет лишь треугольник, как говорилось, треугольники требуют отработчика. Для тех кто не хочет ебать мозг есть макрос TRIANGLE(w,x1,y1,x2,y2,x3,y3,color) который использует стандартный отработчик default_plot (просто закрасить пикселы указанным цветом, без особенностей).
Данный модуль, к сожалению, зависим от IO/io.h. Ему для вывода необходимы какие-то функции вывода в окно. Я когда только разрабатывал, фантазировал сделать полносью независимый модуль который бы "рисовал ни на чём", а при подкрутке к нему графики рисовал бы графику итд. Но я не додумался как это реализовать и решил просто захардкодить. Кроме того, этот модуль поддерживает fixed-point так что если используются фикседы, то нужно и algebra.c подключеить. Впрочем, по-умолчанию тут на флоатах всё.

- GRAPHIC/render3d.c - Ну и финальный модуль, для его работы необходимо очевидно и algebra, и basics и wavefront_obj, да к тому же и tgatool.c в него включён. Собственно, в модуле описаны такие обьекты как "камера", и методы рендера. Сами модели тут не описаны, так как они уже были описаны в wavefront.
Камеру мы можем создать двух типов: перспективная, и ортогональная. Вроде всё очевидно. Схема работы такая: создаём камеру, инициализируем камеру, загружаем 3d модель, загружаем текстуру (при необходимости). И далее "фотографируем" нашу модель при помощи любой из следующих процедур:
RenderWireframe - отрендерить проволочную модель.
RenderZBuffer - отрендерить отдельно значения буфера глубины для данной модели.
RenderShaded - отреднерить плоско-затенённую фигуру
RenderTextured - отрендерить плоско-затенённую фигуру, со следующей текстурой.
RenderGouraud - отрендерить сглаженную по-Гуро обьект с текстурой.
Солнце тут захардкожено, настраивается макросом SUN, который представляет собой вектор. Т.е. чтобы изменить направление солнца - нужно изменить направление этого вектора.
Падающие тени отсутствуют.

РЕФАКТОРИТЕ!! (если хотите. если не хотите - то и пох)

-
290 3405084
>>405047
>>405063
ну и говно
291 3405120
>>405084
А как надо то? Вот я сделал свою игруньку у нее архитектура говно, этот анон сделал либу, у нее ты тоже говоришь архитектура говно, я блять не понимаю как надо тогда.
292 3405122
>>405120
Я смотрю на код людей и он у них всегда разный, поэтому я вообще не могу понять как надо и как правильно, даже правил общих никаких вывести их этого всего не могу.
293 3405472
>>405120
>>405122
я даже код не смотрел. по скринам вижу - говно
294 3405560
>>403872

>в С++ практически нереально вкатится



Почему это?
295 3405561
>>405560
Вакансий для джуниоров в текущих реалиях отсутствуют, может косвенно только через UE5
296 3405583
Что скажите про watcom/openwatcom?
297 3405684
>>405583
давно протух
298 3405720
>>405063
Надо ещё переварить что ты написал, спасибо, поизучаем 😃
299 3405754
>>403653
более того, s1 = s2 это буквально побитовое копирование одной структуры в другую, всего один шаг до побитового сложения
image58 Кб, 1722x426
300 3405801
>>405754
Блять, я обосрался, а ведь действительно...
С другой стороны одно дело байты скопировать, а другое сделать побитовую операцию для каждого числа, тут проблема в восприятии каждого отдельного поля. У компилятора Си и так проблема на уровне сложения безнакового и знакового, ТОЧНЕЕ UB, а тут структура с разными полями
301 3405849
>>405801
А если сделать побитовую операцию через цикл?
Вот, допустим, известен размер структуры в байтах. Тогда можно взять адрес на объект структуры, привести его к char, а далее брать побайтово и совершать операцию с последующей записью назад.
К примеру:

struct foo{
int a;
long b;
char c;
};

int main()
{
struct foo o1={.a=21;.b=-6;.c=55},o2;
int s=sizeof(struct foo);
char
p=(char)&o1;
do
{
s=s-1;
(p+s)=~*(p+s);
}
while(s);
}
302 3405852
>>405849

>(p+s)=~*(p+s);


Надо заменить на
p=~p
303 3405854
>>405852
(p+s)=(p+s);
304 3405855
>>405849
Да я более изящное решение уже писал >>403631
Но опять же, проблема в том как компилятор должен воспринять твою просьбу, типо к каждому байту применить OR или к каждому полю? А если для элемента поля невозможен OR? Короче, тут проблема именно в компиляторах.
305 3405856
>>405854
звёздочка(p+s)=звёздочка(p+s);

Кривой движок сайта не умеет работать с квадратными скобками и звёздочкой напрямую.
306 3405857
>>405855

>Да я более изящное решение уже писал


Где?
307 3405861
>>405857
Зная размер структуры можно не побайтово копировать, а по 2, 4, 8 даже, ибо размеры регистров позволяют.
Правда это и компилятор за меня сделает при -O2/-O3/-Ofast, но всё равно.
308 3405871
>>405861
Я понимаю, что можно и по несколько байт, но для перестраховки я рекомендую сделать так.
309 3405875
>>405871
Это правда.
image.png120 Кб, 455x412
310 3405886
>>405047
она?
311 3406246
>>403932
Бля ебать в натуре охуенная игрушка анончик. Бля залип прям.
Бля ебать в натуре братишка а можешь мне на Xbox портировать её?? Ни в заподло внатуре.. так хорошо в неё на большой Юм экране подрлбить и джойстиком бы..

А кстати да, ещё. Я видел у тебя в сорцах строки процедурной генерации изображений. RGB (128,0,0)....
Бля ебать внатуре нахуй надо чуть чуть исправить этот файлик. На (126, 2,2). Должно чуть чуть улучшить дизайн
312 3406247
>>403940
А вот я кстати вник!!
Бля ебать внатуре охуенный код нахуй. Вообще четенький код ебать..

Этож надо додуматься то:

if(flag == YOULOSER)
DrawText(hdc, "--- YOU LOOSER ---", -1, &looser_rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
if(flag == YOUWINER)
DrawText(hdc, "+++ YOU HACKER +++",

Бля ебать внатуре отдушина братишка. Ты талант! Не то шо эти rage и гта 5
313 3406257
>>406247
А как надо было? Делать 2 функции? Передавать число а не константу? Что не так тут?
314 3406258
>>406247
Передавать строку в параметр бессмысленно, там онли 2 состояния.
315 3407116
В С нет смысла вкатываться? Нет работы?
316 3407118
>>407116
Работа есть, хоть и меньше, чем в популярных направлениях. В основном embedded, от микроконтроллеров до написания драйверов под Linux.
Очень желательна техническая вышка и начальные знания в схемотехнике, иначе выкатываться, наверное, смысла нет.
317 3407154
>>407116
Он пиздит >>407118
Работы нет ВООБЩЕ. И точка.

Может на С++ пару вакансий найдется.
output.mp45,5 Мб, mp4,
1920x1080, 1:40
318 3407191
>>404907

>Походу легче будет с нуля написать


Удалось выделить пару часов и насрать.
https://vcs.v0idh4nd.xyz/v0idh4nd/sw1nek23per
319 3407257
>>407116
работы мало кому то в жизни?
320 3407336
>>407154
ты хоть бы на хх зашёл. В России с++ цветёт и пахнет, никогда не было столько вакансий.
321 3407404
а как в хх искать вакансии на С?
Там же если вбить просто "с" то блядь все подряд находится.
322 3407478
>>407404

>а как в хх искать вакансии на С?


Пишешь блять "embedded разработчик", "программист микроконтроллеров", "freertos", "программист встраиваемых систем". Очевидно же, что С-программисты нигде больше не нужны, кроме как программировать RTOS/микроконтроллеры.
323 3407573
Щас глянул ХХ, встраиваемая фигня си (контроллеры СТМ или пердуина примерно такой уровень) и питон (видимо приложухи) и линух, примерно такие требования, но зп конечно не фонтан. Где си плюс там выше зп, но и ебля очелла тоже выше
matousuto 324 3407635
аноны прогеры, всем ку. подскажите, зачем учить С и какие перспективы будут?
325 3407667
>>407635
Никаких перспектив. Для джунов вакансий нет, без опыта работы нет, только через связи.
Чем полезен? Более углубленной понимание устройства программы, работа с памятью, с АПИ вызовами ОСи, но если ты человек не глупый, то изучая любой язык это поймёшь.
326 3407675
>>407635
Ну в принципе выше написал что требуют: контроллеры, робототехника, драйверы, ембедед, в принципе много возможностей. Забыл добавить что риск и арм архитектуры нужно понимать немного, само железо.
327 3407703
>>407635

>зачем учить С и какие перспективы будут?



C это "лингва франка". Перспективы стать программистом на любом языке будут.
328 3407992
>>407703

Лингва франка -- скорее уж JS.
329 3408117
>>407635
Чтоб вкатиться в дивный мир байтоебства и ощутить анальное единение с духом машины.
330 3408273
>>407635
это интересно.
331 3408304
>>407635

>зачем учить С


Многим это не надо. Если ты студент по-настоящему технического направления(та же радиофизика, где вам надо программировать контроллеры) или собираешься в системное программирование или программирование драйверов, то нужны C++/C+алгосы+ассемблер. Если ты собираешься в фронтенд/бекенд, то достаточно js+php(может с натяжкой питон[сейчас иногда бек на нем желают]) и sql + умение работать с open server или чем-то иным заранее готовым и многим известным для разворачивания сервера.

>какие перспективы будут?


Зависит от тебя + ситуации на рынке. Но ситуация на рынке сейчас не очень радостная: питонистов и js'ников очень много, а C/C++ требует реального опыта работы со сложными вещами, куда новичков не берут.
332 3408596
>>408304

>C/C++ требует реального опыта работы со сложными вещами, куда новичков не берут.


Значит сикресты не требуются. Если бы требовались, брали бы без опыта и учили. Ведь даже дебилу ясно, что опыт не появится без работа, сначала работа и только потом опыт. Нельзя отказывать в работе требуя опыта наперед, это деление на ноль, фатальная ошибка C/C++.
333 3408611
>>408596
Это тебе очевидно, а кабан хочет все и сразу. Особо упоротые готовы год ждать принца и проебывать бабло на всякие рекрутинговые агенства, вместо того, чтобы за этот год обучить человека под себя.
334 3408625
>>408611

>готовы ждать принца


Это и есть не требуется. Если бы требовалось, не могли бы ждать. Когда не нужно, можно ждать сколько угодно кого угодно, манны небесной, всё равно похуй найдется или нет.

>кабан хочет всего и сразу


Смотри выше, ты сам себе противоречишь. Если бы хотели, да еще и сразу, брали бы на работу сразу. Не нужно, вот и не берут.
335 3408654
>>408625
В таких местах есть Вася, который тащит всю разработку. Кряхтит, пердит, жалуется, но тащит. Вроде как и надо найти второго разработчика в помощь Васе, а вроде как пока и так сойдет. Если Вася таки психанет и уволится, будет ОЙ ВСЕ, но пока еще Вася терпит и въебывает.
336 3408657
>>408596
>>408611
Я думаю то что неподходят вкатуны, как минимум теорию знать, желательно глубоко, и ряд программ чтоб мог написать – буквально работа с массивами, сортировки и функции, ну и очевидно знание радиоэлектроники, схемотехники. Так же видимо основы электротехники.
Других причин почему не берут я не знаю, работал в сторону АСУТП там в электро службу берут кого попало, а оттуда перекатить в АСУТП и работать с низким уровнем реально, но там чаще другие языки, редкость чтоб на st кто то писал, чаще fbd язык и скада среды и что то типа овенов-ложиков и кодесисов. В принципе если очень хочется можно там себя реализовывать сколько влезет, к тому же сишка универсальная как инструмент по железу
337 3409363
Здравствуйте, анончики, сегодня/вчера пытался улучшить свои знания по языку Си и узнал, что компилятор оптимизирует размеры полей структуры для попадания в кэш-линии. Конечно, этот механизм понял крайне поверхностно, но из-за этого родился вопрос.
Есть ли в треде работающие на бэке плюсов или чистого Си? Вот условно вам через протоколы самописные пришёл пакет с заголовком в виде структуры, каким образом бы парсите данные из заголовка, чтобы их нормально интерпретировать, ибо судя по всему это вещь и от платформы зависит, и от компилятора, который код и оптимизировал.
338 3409392
>>409363
Чел ну ты подумай. Ты знаешь размер чего то. Структуры своей. Все, большего не надо.
339 3409395
>>409392
Я знаю содержимое структуру, но не факт, что знаю размер структуры, его только компилятор знает точно.
Да вопрос скорее как парсить данные, ибо пустые байты могут в рандомных местах оказаться по сути между полями.
340 3409410
>>409395
Ну, условно так, если бы я не знал об оптимизации комплиятором, то я бы думал, что размер структуры 13байт и пытался бы парсить байты совсем иначе.
341 3409420
>>409410

>и пытался бы парсить байты


какие байты ты там парсить собрался?
342 3409423
>>409420
Окей, лежит бинарник, в который побайтово хранятся N структур, как правильно интерпритировать их, если мне неизвестно, что на той стороне не использовали макросы, которые отменяют упаковку компилятором данных?
Аргумент про то, что размер файл делиться без остатка на число N * sizeof(struct sample) можно рассмотреть конечно, но может там в конце данные остаточные о предназначении которых нам неизвестно.
343 3409427
Вприниципе на си можно и веб писать главное захотеть.
344 3409432
>>409363
>>409395
Размеры полей компилятор не меняет. Но каждое поле выравнивается в памяти на размер этого поля. Т.е. int16_t на 2 байта, int32_t на 4 байта и т.д. Между полями, если это нужно для выравнивания, компилятор оставляет дырки. В конце структуры, если нужно, компилятор тоже добавляет дырок до границы слова.
Размер структуры можно узнать с помощью sizeof.

#include <stdio.h>
#include <stdint.h>
struct
{
int8_t val1;
int16_t val2;
int32_t val3;
int8_t val4;
} my_struct;
int main()
{
printf("%li\n",sizeof(my_struct));

return 0;
}

Для 32-х систем размер структуры будет равен 12 байт (для 64-х битных может добавит ещё дырок до 64-х битного слова, точно не знаю.).
Эта структура будет располагаться в памяти так (дырки обозначаю нулями):
val1 0 val2 val3 val4 0 0 0

Никакого рандома в размещении дырок нет.

Можно сказать компилятору, чтобы он не оставлял дырок в структуре, для каждого компилятора это делается по разному. Для gcc используй __attribute__((__packed__))
Естественно, тогда снизится скорость работы со структурой и нельзя будет использовать указатели на поля структуры, т.к. они не будут выровнены на размер поля.
344 3409432
>>409363
>>409395
Размеры полей компилятор не меняет. Но каждое поле выравнивается в памяти на размер этого поля. Т.е. int16_t на 2 байта, int32_t на 4 байта и т.д. Между полями, если это нужно для выравнивания, компилятор оставляет дырки. В конце структуры, если нужно, компилятор тоже добавляет дырок до границы слова.
Размер структуры можно узнать с помощью sizeof.

#include <stdio.h>
#include <stdint.h>
struct
{
int8_t val1;
int16_t val2;
int32_t val3;
int8_t val4;
} my_struct;
int main()
{
printf("%li\n",sizeof(my_struct));

return 0;
}

Для 32-х систем размер структуры будет равен 12 байт (для 64-х битных может добавит ещё дырок до 64-х битного слова, точно не знаю.).
Эта структура будет располагаться в памяти так (дырки обозначаю нулями):
val1 0 val2 val3 val4 0 0 0

Никакого рандома в размещении дырок нет.

Можно сказать компилятору, чтобы он не оставлял дырок в структуре, для каждого компилятора это делается по разному. Для gcc используй __attribute__((__packed__))
Естественно, тогда снизится скорость работы со структурой и нельзя будет использовать указатели на поля структуры, т.к. они не будут выровнены на размер поля.
345 3409434
>>409423

>как правильно интерпритировать


А их тебе не нужно интерпретировать, кто хранит, тот знает в чем они
346 3409443
>>409432
Я не пониманию по какому принципу дырки ставятся.
347 3409449
>>409443
Я предположил, что ставится, что по памяти было удобно перемещаться по числам кратным двум, но если в структуре будет 3 байтовых поля, то он оставит без оптимизации. Сложно и не понятно.
Первый скрин это структура с упаковкой от компилятора, а второй без упаковки от компилятора.
348 3409469
>>409449
Каждое поле выравнивается в памяти на размер этого поля, а не на двойку. Начало структуры выравнивается минимум на размер слова.

В моей структуре val1 хранится в 0 байте структуре.
val2 занимает 2 байта, значит его нужно выровнять на 2. В 1 байт ставим дырку, байты 2 и 3 занимает val2.
val3 нужно выровнять на 4. Как раз следующий свободный байт в структуре - 4, записываем в байты 4,5,6,7 val3.
val4 выравнивать не нужно, т.к. он занимает 1 байт, записываем его в байт 8 (в данном случае совпадение, что val4 выровнен на 8).
Теперь занято 9 байт. Выравниваем размер структуры до размера слова добавлением 3-х дырок.
349 3409607
>>409469
Слово, которое в информатике "word" 2 байтовое? Или максимальная длина машинного слово в архитектуре, которое от разрядности ОСи зависит?
Я всё равно не понял как дырки ставятся, простите, больше объяснять не надо, сам буду читать, не хочу тратить время твоё.
image68 Кб, 897x303
350 3409616
>>409469
А вот, что ты имел в виду.
image81 Кб, 1692x840
351 3409627
>>409616
Всё сошлось, это хорошо, спасибо автору статьи...
352 3409655
>>409410
>>409395
Чел ты шиз.
>>409434
Истина.
353 3409715
а что такое ячейки?
Я так понимаю на разных системах они разного размера?
354 3409723
>>409616
В статье написано, что у типа long размер 8 байт, хотя на 32-х разрядной системе его размер 4 байта.
Вообще размеры сишных типов char, short, int, long зависят от архитектуры машины, поэтому лучше используй зазвания типов например int64_t вместо long, чтобы всегда знать размер независимо от архитектуры машины.
355 3409732
>>409363
Если твоя программа передаёт структуру в сеть, то передавай структуру с упаковкой, чтобы избежать дырок.

В документации к твоему протоколу не привязывайся конкретно к структурам на C. Просто опиши какие данные в каком порядке идут и порядок байт (little endian или big endian).
На другом конце твои данные может принимать программа на Python/Java/Go/C# и т.д. Пусть её автор сам думает, как он будет хранить твои данные.

Например, вот описание одного из стандартов NAND-флэша https://onfi.org/files/onfi_2_0_gold.pdf
На стр.94 в разделе 5.6.1. там таблица с описанием данных, которые нам передаёт чип памяти. Есть указание, что порядок байтов - little endian (там панисано For parameters that span multiple bytes, the
least significant byte of the parameter corresponds to the first byte.)
Делаешь такую же таблицу для своего протокола.

Для чтения данных делаешь упакованную структуру по таблице, неиспользуемые поля заполняешь массивами. Например, в таблице написано, что байты 10-31 не используются, в структуре в этом месте пишешь uint8_t unused[22];
356 3409793
>>386488 (OP)
Аноны, а можно ли в WINAPI получить привелегии отладчика для всех процессов? Чтобы например я мог делать (point + любое число) и прыгать в память чужих программ, брать и менять там данные? Или хотя бы запрашивать подобное к одному процессу? Ведь artmoney как то это делает.
357 3409804
>>409723
У мсвц лонг тоже 4 лол.
359 3410078
вы можете объяснить зачем нужны указатели? что такого можно сделать с помощью указателей чего нельзя сделать с помощью чего-то другого? на ютубе тонна роликов про адресную арифметику и как работать с указателями, но нет ни одного про то зачем с ними работать.
360 3410087
>>410078
Ты еще букварь не осилил а уже претензии строчишь. В любом учебнике есть главы про виды памяти и типы данных. В сишке массивы и строки реализованы как указатель на участок памяти. Во-вторых динамическая память доступна через указатель, не все можно запихать на стек он резиновый тольк до какого-то предела. В линупсе можешь посмотреть ulimit -s в килобайтах
361 3410095
>>410078
Очевидный шаринг ресурса без копирования.
362 3410097
>>410087
Ну и способ передачи данных в функцию без копирования. Тоже начальная концепция обязательная к изучению.
363 3410099
>>410097
Ага, только вместо записи значения переменной в стэк будет записан адрес переменной, что не особо выиграет по памяти, только для структур разве что, размер которых превышает размер регистров.

Я понимаю, что передавая адрес переменной мы может изменить её значение вне области определения и видимости этой переменной.
364 3410116
>>410099
Я пользуюсь либой box2d (физический движок на с++). Долго была версия 2. Там обычно настройки для тел, фикстур создаются на стеке в виде структур, а потом указатель на них передается в функцию конструктор этих самых объектов. Автор обещал что все перепишет на современный с++. Недавно вышла версия 3. Автор переписал на чистый СИ. И там таже самая хуйня.
365 3410121
>>410116
Тейк в том что это очень популярный физ движек для 2д и автор шарит за оптимизацию, так как это критично для физ движка
366 3410190
>>410078
у тебя фотка весит 10мб ты хочешь в ней поменять несколько пикселей, размер стека винды 1мб. Что будешь делать?
367 3410233
>>410190
А вот ты попался, файлы всегда посредством кучи обрабатываются.
368 3410240
>>410233
ssize_t read(int fd, void buf[.count], size_t count);

берешь и считываешь в свой буффер который на стеке лежит.
369 3410246
>>410240
Ага, только вот копия файла с диска в RAM загружена, а куда данные для обработки будешь записывать уже выбор программиста.
370 3410253
>>410233
Почему он не прав?
А если
char line[10000000];
scanf("%s ", line);

./myprog < image.tiff

Будет мгновенный сегфолт из-за нехватки стека как раз для хранения массива
371 3410259
>>410246
Куда там файл системой загружен к твоей программе не имеет отношения. Вопрос же был в том нахуя мне указатели если есть стек
372 3410260
>>410253
Эх, чертовы линуксоиды со своим перенаправлением потоков!
По идее myprog даже не скомпилируется.
>>410259
Справедливо...
373 3410276
>>410253
Хотя там еще косяк.

>scanf("%s ", line);


логичнее
scanf("%[^\n]", line);
хоть и шиза
374 3410290
>>410253
Программа на этапе загрузки в память ломается с segfault, но она скомпилируется, тут я обосрался.
>>410276
Жесть у вас там линиксоидов приколы всякие.
375 3410318
>>410078
Без указателей не напишешь функцию, которая меняет значения аргументов. scanf как пример.
376 3410846
>>410078
не нужны, мы за чистый СИ без указателей и прочей чепухи!!!
377 3410904
>>410078
Си это машинный язык. Машина (компьютер) работает на указателях, поэтому в Си указатели, их не может не быть, они не могут быть не нужны.
А "что-то другое" в Си может быть или не быть, не важно, это уже высокоуровневые абстракции реализованные всё равно на указателях.
378 3410994
>>410078
Представь что ты хочешь создать программу, куда ты можешь записывать все испробованные тобою модели дилдаков. У тебя есть простейший текстовый файл-база данных. Ты запускаешь программу, открывается консольку, ты вводишь что-то вроде add dragondildo, и когда закрываешь программу это всё сейвится. Ты хочешь добавить функциональность, поиск по названию, сортировку, выставлять оценку. Для этого тебе придется все дилдаки скопировать в оперативную память, а не работать с файлом.
Ты не знаешь заранее, сколько у тебя дилдаков будет испробвованно. Можешь создавать при запуске программы массив из 100 позиций. Но может случитсья, что он закончится спустя пару мес, или будет пустовать первое время. Ты зря выделил память, или её не хватает. Придется переписывать программу. Так вот динам. переменные(и след указатели) нужны, например, чтобы выделить памяти ровно столько, сколько нужно.
>>410097
Не знаю как в С, но в ++ и Паскале можно легко передавать по ссылке и без знания, что такое указатель.
379 3411000
>>410994
Тред про Си
@
Вопроси по Си
@
Не знаю как в Си, но вот в паскале..

Чел а в 1С вообще только по ссылке можо и больше никак. Только причем тут ЭТОТ тред
image.png894 Кб, 996x996
380 3411021
капец писал два дня рейкаст максимально locked in,а он не рейкастится!!!
https://pastebin.com/Sskf5hLh
381 3411152
Сап двачеры
Вопрос назрел
Значица есть у PS3-4, свой формат библиотек sprx видо изменённый .elf, может у кого завалялся загрузчик .sprx
Или можете дать совет как работать с .elf и их загрузкой в связке с .bin файлами
382 3411167
>>411152
Анончик, а это разве не слишком узкоспециализированный вопрос? Я бы такое искал на сайтах типо 4pda или подобных.
383 3411183
А сишка то нужна еще если растишка быстрее работает.
384 3411185
>>411183
Как Раст может быстрее Си работать, если он постулирует себя как безопасный язык, а значит там постоянные проверка на выход за границы памяти?
385 3411188
>>411183

>растишка быстрее работает.


Если только в больных фантазиях чулочников.
https://habr.com/ru/companies/astralinux/articles/891064/

>В связи с разницей в числе итераций был проведен тест с 2 048 итерациями для алгоритма на RUST (изменено значение переменной с перекомпиляцией в новые пакеты).


Результат: PBKDF2_SHA256 (на C) кратно быстрее, чем PBKDF2-SHA256 (на RUST)
Чтобы раст был быстрее Си по классике жанра растотестов нужно:
1) Переписать приложение с учетом старого опыта и использованием более оптимальных алгоритмов
2)Выбросить большую часть функциональности
3) Использовать инструкции, привязанные к конкретному тестовому стенду
4) Собирать сишный код в с -O0
5) Получить прирост в 20% перфа
386 3411190
>>411185
Как раст может быстрее си работать, если, насколько я понимаю, раст использует llvm и только промежуточный код генерит. Оптимизации под архитектуру это не забота разработчиков раста, потому что оптимизации делает llvm из промежуточного кода. Потому что все распутывания циклов и прочее после промежуточной фазы генерации делается. Надо тода сравнивать сишку clang и руст, а не вообще сишку и руст. В чем я ошибаюсь?

мимо
387 3411194
>>411190
>>411188
>>411185
Rust против C: библиотека zlib-rs демонстрирует 13% прирост производительности
Подробнее: https://www.securitylab.ru/news/557393.php
388 3411196

>3411194


И? А на сишке либу переписали или со старым говном сравнивается? Может дело в алгосах?
389 3411201
>>411196
почитал там почему-то в качесте улучшений флаги для llvm приводятся, а не что использовано из раста для улучшения
390 3411205
>>411201
Т .е из этого нельзя сказать что раст в общем сулчае быстрее сишки. Просто пререписали код для zlib на расте, провели работу над оптимизацией и получили лучший результат. Они так же могли переписать либу на Си, оптимизировать и с компилить на сланге.
391 3411208
>>411194
То есть они настроили компилятор под конкретную задачу и говорят, что Раст лучше Си?
392 3411315
>>411000
зачем мне учить С если я знаю С++?
393 3411340
>>411167
Думаю да, но там скинули документацию слитую в 2017 , просто думаю там мало про это люди знают, именно устройство .elf и тп
Поэтому ту решил спросить
394 3411358
>>411340
А ты чем занимаешь и что хочешь сделать? Расскажи, мб заинтересуемся и поможем, если сможем.
395 3411360
>>411358
Попытка написания эмулятора, но скорее запуска конкретного тайтла с PS4
396 3411361
Сейчас частенько общаюсь с 1 из создателей psOff (emulator)
Ник в дискорде Daydreamer
397 3411365
>>411360
Гит репа есть?
398 3411512
>>411365
Гит репа чего?
399 3411996
Я создал репо на гите, лицензия будет unlicense
400 3412005
давайте напишем что-нибудь толковое, например супер быстрый терминал и минимал.
401 3412074
>>412005
Зачем а главное для кого
402 3412091
>>411996
Кидай ссылку ИТТ.
Время autism development.
403 3412124
>>411365
>>412091
Немного не шарю, что ща ИТТ?
404 3412125
*за
406 3412170
>>404794
Добрый, добрый C/C++ с Сергеем Балакиревым
https://stepik.org/course/193691/
407 3412172
>>412124

>что ща ИТТ?


ин вис треад
Он имел ввиду сюда кидай.
408 3412227
>>412172

Понял, ну я кинул, ждём ответа )
409 3412659
Двач тупой вопрос, но почему если скомпилировать main с хелло ворлд, и запустить это, кликнув на .exe файл, откроется именно консоль/терминал а не третий варкрафт или фотошоп?
410 3412685
>>412659
Я писал ответ, но мне стало хуёво, я хочу умереть, я заебал свою семью, я заебал сам себя, я ненавижу себя, я проебал свою жизнь, я устал от самого себя, я хочу отстраниться от себя, я не хочу видеть себя в зеркале, я не хочу иметь хоть что-либо общее с собой. Так больше жить нельзя.
411 3412987
Как в приложение (десктоп) на си встроить жавасткрипт с хтмл? (для юзер интерфейса). Это вообще возможно напрямую сделать без всяких электронов? Например, после запуска exe файла чтоб открывался браузер?
17424945021790.jpg199 Кб, 622x630
412 3412991
>>412685
Крепись.
413 3413049
>>412987
Надо или свой набор функций для работы с тегами и js писать, или брать готовые варианты.

Есть ещё вариант запускать отдельным процессом движок js и движок для работы с тегами и посредством семафоров взаимодействовать, но это тоже, по сути, готовый вариант.
414 3413287
>>412987

>Например, после запуска exe файла чтоб открывался браузер?


Да.
415 3413459
Вопрос по винде, как получить указатель на PTE?
416 3414001
мужики, изучаю C. хочу вкатиться в написание ядер для ОС. нужен вектор движения
417 3414016
>>414001
Я думаю, тут надо будет совмещать C и ассемблер.
Сам ни разу чистый C(без системы) никогда не запускал, но вот nasm в qemu пробовал.
418 3414019
>>414016
Без ассемблера никак? почему на голом C не получится?
419 3414022
>>414019
Допускаю, где-то финты ушами для чистого си уже проделаны(ведь целый linux и подобные ядра написаны на си), но мне такое не известно.
420 3414023
>>414019

>почему на голом C не получится?


Для работы с вводом-выводом ядру(ос) надо использовать прерывания биоса, а в си такого я никогда не видел, кроме случая, когда такое делалось через взаимодействие с ядром.
421 3414101
>>414019
Через Си нельзя сделать прямое управление железкой без асмы. Даже элементарная инициация системного таймера. Или передача управления от загрущика к ядру.
У АРМ и 86 разные алгоритмы по работе с памятью и дял каждого своя ебля с регистрами и флагами. Такое только через ассемблер можно.
422 3414494
хорошо. тогда в каком направлении двигаться C разработчику?
423 3414508
>>414494
Я хотел бы стать Си разработчиком, куда двигаться новичку? Учить ассемблер? Прошу тебя, помоги мне, пожалуйста!
424 3414513
>>414508
язык C будет твоим первым языком программирования?
425 3414516
>>414513
Нет.
426 3414521
>>414516
на самом деле я сам не профессионал. затрудняюсь тебе ответить. могу посоветовать классный курс на stepik. вроде бы о нем уже здесь говорили.
https://stepik.org/course/193691
427 3414566
>>414494

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


В сторону отдела с дошиками.
428 3414626
>>414494
Электроника и линукс.
429 3414740
>>414494
пердуино
image.png23 Кб, 1215x226
430 3414778
двач, функция вызывает функцию, и передаёт ей все те же аргументы, которые получила сама. есть способ сделать это элегантно?
431 3414785
>>414778
Подрочи препроцессор.
432 3415017
>>414778
На скрине все отлично, что значит элегантно? Засунуть все в один дефайн в одну строку что бы получилась нечитаемая хуйня?
433 3415168
>>414778
Можешь запихнуть эти данные в структуру и передать указатель на структуру в функцию, можешь создать "указатель на область в пямати в стэке" ака статический массив и передевать его, всё что ты захочешь.
434 3415174
>>412126
Так вот, если кто хочет присоединиться на энтузиазме, может создадим группу где нибудь?
435 3415502
>>411152
Погоди, а как ты собрался испольнять код с ps4 под хуём86_64?
>>412005
Мишка Хашимото, нахуй ты на дваче сидишь?
436 3415704
>>415168
ну ладно, выглядит странно, наверно лучше тупо копировать все переменные
437 3416115
>>415502
1. Использовать эмуляцию ФС
2. Использовать библиотеки от пс4 СДК .prx, .sprx и тп

Как мне рассказывал 1 из разрабов psOff , их эмуль эмулирует(сори за тавтологию) ФС и всё то что я перечислил
438 3416116
>>415502
Кто такой "Мишка Хашимото" ?
439 3416172
440 3416276
>>416115
Разобрать бинарник с ps4 по докам вроде выполнимая за разумное время задача, а вот как потом это пихать в эмулятор и вообще всю эту обвязку писать - как-то сложно уже звучит.
>>416116
Да какой-то борщехлёб, пишет всякие шелы.
441 3416290
>>411021
https://pastebin.com/hNU2Gz5X

заработало! осталось теперь только отрендерить это на дисплей и я стану успешным человеком!!!
442 3416667
>>416276
У меня есть на руках документация (которую сливали в 2к17) от SDK
Там немного расписано что за что отвечает
Но про ФС там инфы 0
Но нейросети творят чудеса
QWEN (https://chat.qwen.ai/s/6899f427-9214-4838-ac14-8b2d07502414) (я не просто инженер так что не обсудьте) рассказал что за что отвечает
(Не факт что правильно)
Осталось эту кучу информации собрать
И начать писать
+ собрать всё .sprx и .self файлы
Потом с помощью scetool декриптнуть
И работать с этим набором
444 3416673
>>416667

>просто


*промпт
445 3416713
>>414001
вкатывайся в гейдев через raylib, потом меня констультировать будешь
одно небольшое открытие. 446 3419065
Пишу на си с 2017. Изначально си изучал по одной книге Кернигана и по файлам, которые были на сайте некоего Столярова.
Сегодня узнал, что в gnu c есть вот такой финт:
int a=({int a=6,b=76; a=a^b; a;});
Я понимаю, что для многих тут это открытием не будет, но для меня это было чем-то очень-очень новым в области си.
Собственно теперь вопрос: а есть ли книга по си, где подобные финты все собраны?
447 3419078
>>419065
Ого, я тоже не знал, аж пришлось к ГПТ обратиться:
"Хорошо, пользователь попросил объяснить строчку кода на Си: int a=({int a=6,b=76; a=a^b; a;});. Начну с разбора каждой части этой строки.

Сначала вижу, что объявляется переменная a типа int и инициализируется выражением в фигурных скобках. Такая конструкция похожа на составной литерал или блок внутри выражения. Но в стандартном Си так нельзя, фигурные скобки обычно используются для составных операторов, а не выражений. Возможно, это расширение компилятора, например, GCC, которое позволяет использовать блочные выражения в круглых скобках.

Проверю: в GCC есть расширение, называемое "statement expressions", где можно использовать блок кода внутри ({ ... }), и результатом будет значение последнего выражения в блоке. То есть ({ ...; выражение; }) вернёт значение этого выражения. Значит, здесь используется это расширение.

Теперь внутри блока: int a=6, b=76; a = a ^ b; a;. Создаются две переменные a и b с значениями 6 и 76. Затем a присваивается результат операции XOR между исходным a (6) и b (76). Потом возвращается значение a. Внешняя переменная a инициализируется этим результатом."

Код походу не очень переносимый, скомпилирует ли это clang условный, да и в целом трудночитаемый, если честно.

А по теме — от себя могу посоветовать только подобную сайт-статью https://graphics.stanford.edu/~seander/bithacks.html
448 3419081
>>419065
А вообще вся эта хрень буквально синтаксический сахар и буквально стараюсь писать на стандарте с89. Да, даже без цикла for, а заменяю так. Если в c99 пишут так:
for (int i = 0; i < N; i++);
То я пишу так:
{
int i = 0;
while (i < N ) {
...
i++;
}
}
Уже привык, да я знаю, что я долбаёб.
image.png31 Кб, 1423x353
449 3419101
>>419065
Попытался на 89 что-нибудь подобное написать и только такое придумал.
450 3419115
>>419065
Вот тебе ответ гопоты, товарищ, я бы больше хотел помочь, но не могу...

1. Для понимания языка Си и его "тёмных уголков"
"Expert C Programming: Deep C Secrets"
Питер ван дер Линден
— Идеальна для тех, кто уже знает основы.
— Объясняет тонкости языка, включая неочевидное поведение компиляторов, указатели, стек, макросы и особенности оптимизации.
— Разбирает примеры, близкие к вашему вопросу (например, затенение переменных и работу с памятью).

"C Traps and Pitfalls"
Эндрю Кёниг
— Короткая, но ёмкая книга о подводных камнях Си.
— Описывает ошибки, связанные с областями видимости, приоритетом операторов и неявным поведением компиляторов.

2. О компиляторах и низкоуровневых особенностях
"The Definitive Guide to GCC"
Уильям фон Хаген
— Практическое руководство по GCC.
— Подробно разбирает флаги оптимизации, расширения компилятора (включая вложенные функции и statement expressions), а также работу с ассемблерными вставками.

"Compilers: Principles, Techniques, and Tools" (Книга дракона)
Альфред Ахо, Моника Лам и др.
— Классика о теории компиляторов.
— Полезна, если хотите понять, как компиляторы обрабатывают код, включая анализ областей видимости и оптимизации.

3. Продвинутое программирование на Си
"Advanced Programming in the UNIX Environment"
Ричард Стивенс
— Хотя книга фокусируется на системном программировании, она затрагивает тесное взаимодействие с компиляторами, особенности линковки и работы с памятью.

"C Interfaces and Implementations"
Дэвид Хэнсон
— Учит писать переносимый и эффективный код, используя продвинутые техники (например, макросы и inline-функции).
— Показывает, как обходить ограничения стандартного Си с помощью компиляторных расширений.

4. Онлайн-ресурсы
Официальная документация GCC:
GCC Manual
— Самый авторитетный источник по расширениям GCC, включая ({ ... }), атрибуты функций, встроенные инструкции.

"What Every Programmer Should Know About C" (Блоги и статьи):
Например, Блог Эли Бендерски — множество статей о тонкостях Си и компиляторов.

5. Для углубления в оптимизацию
"Write Great Code: Understanding the Machine"
Рэндал Хайд
— Объясняет, как код преобразуется в машинные инструкции.
— Полезна для понимания, как компиляторы оптимизируют код и какие расширения они используют.
450 3419115
>>419065
Вот тебе ответ гопоты, товарищ, я бы больше хотел помочь, но не могу...

1. Для понимания языка Си и его "тёмных уголков"
"Expert C Programming: Deep C Secrets"
Питер ван дер Линден
— Идеальна для тех, кто уже знает основы.
— Объясняет тонкости языка, включая неочевидное поведение компиляторов, указатели, стек, макросы и особенности оптимизации.
— Разбирает примеры, близкие к вашему вопросу (например, затенение переменных и работу с памятью).

"C Traps and Pitfalls"
Эндрю Кёниг
— Короткая, но ёмкая книга о подводных камнях Си.
— Описывает ошибки, связанные с областями видимости, приоритетом операторов и неявным поведением компиляторов.

2. О компиляторах и низкоуровневых особенностях
"The Definitive Guide to GCC"
Уильям фон Хаген
— Практическое руководство по GCC.
— Подробно разбирает флаги оптимизации, расширения компилятора (включая вложенные функции и statement expressions), а также работу с ассемблерными вставками.

"Compilers: Principles, Techniques, and Tools" (Книга дракона)
Альфред Ахо, Моника Лам и др.
— Классика о теории компиляторов.
— Полезна, если хотите понять, как компиляторы обрабатывают код, включая анализ областей видимости и оптимизации.

3. Продвинутое программирование на Си
"Advanced Programming in the UNIX Environment"
Ричард Стивенс
— Хотя книга фокусируется на системном программировании, она затрагивает тесное взаимодействие с компиляторами, особенности линковки и работы с памятью.

"C Interfaces and Implementations"
Дэвид Хэнсон
— Учит писать переносимый и эффективный код, используя продвинутые техники (например, макросы и inline-функции).
— Показывает, как обходить ограничения стандартного Си с помощью компиляторных расширений.

4. Онлайн-ресурсы
Официальная документация GCC:
GCC Manual
— Самый авторитетный источник по расширениям GCC, включая ({ ... }), атрибуты функций, встроенные инструкции.

"What Every Programmer Should Know About C" (Блоги и статьи):
Например, Блог Эли Бендерски — множество статей о тонкостях Си и компиляторов.

5. Для углубления в оптимизацию
"Write Great Code: Understanding the Machine"
Рэндал Хайд
— Объясняет, как код преобразуется в машинные инструкции.
— Полезна для понимания, как компиляторы оптимизируют код и какие расширения они используют.
image.png85 Кб, 1691x717
451 3419147
>>419115
Кста, сейчас только что вспомнил, что первая книга от Питера ван дер Лидена была в старой шапке...
>>419065
Да, синтаксический сахар...
452 3419248
>>419081
А можно while(++i<10)
453 3419250
>>419248
Конкретно для этой хуйни - да.
А так - нет, конечно, условно, если бы с массивом работал, то пропустил бы (первый)нулевой элемент.
454 3419736
У кого есть декрипт прошивки ps4?
image.png3 Кб, 259x42
455 3420012
>>419065
А про запятую знал?
456 3420105
>>420012
Нет.
457 3420813
>>420012
а что это за занчок между A и B? Это возведение в степень? В си же вроде этого нет.
458 3420844
>>420813
Это XOR
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

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