Этого треда уже нет.
Это копия, сохраненная 23 мая 2023 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному /clang/ 2599695 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.
Прошлый: >>2495049 (OP)
2 2599701
Итак, котаны, базовый вопрос.
Какой шрифт используете?
Лично мне нравится Hack(нескучный DejaVU) и Iosevka. Не могу определиться...
3 2599867
>>599701
FantasqueSansMono
2023-02-05x15:06:15.png235 Кб, 1479x1175
4 2599889
>>2599845 →
орлы?

ну давай епт понятно что с каментами все понятно, но все равно модуль 1к лок это пиздец и погибель
5 2599892
>>2599259 →
Если интересно, то я 7 лет пишу под них, могу рассказать и научить.
6 2599932
>>599889
что за стрелки там в коде?
7 2600099
>>599701
firacode, конечно.
1537896837883.png23 Кб, 440x411
8 2600104
>>599932
Оператор "стремиться к"
9 2600125
>>599892
Привет, да, интересно. Вообще мне много не надо расписывать, я люблю сам вещи изучать, мне больше нужен старт. Во-первых как и спрашиал что по физике, во-вторых с каких лучше начать. В интернете посмотрел, нашел там AVR 8 битную, думаю с неё начать, но даже если и закажу её(кстати пока не смотрел ещё где и что заказывать), то не понимаю что с этим приборчиком делать, как я понимаю его надо подключить к чему-то, а к чему? вот эти вопросы меня и интересуют для старта. Заранее спасибо!
10 2600140
>>600104
а что я о таком с си первый раз слышу?
ну хотя я на 89 сижу и давно в стандарты новые не смотрел
11 2600142
>>600125
если интересно, то бери на али ардуино нано, они дешевые, потом набираешь к ним модулей и проводочков и тебя теряют на ближайшие лет 5-10
12 2600146
>>600140
Этот оператор еще у Керниган Ритчи бьл
13 2600159
>>600104
это говнокод какой-то, лол. Я уверен в мисре есть о таком слово, вы вообще в курсе что этот цикл неправильный, он не выводит 10. Инкремент/декремент всегда должен быть в конце итерации
14 2600168
>>600142
То есть с ардуино хорошо начинать? Просто я слышал такую точку зрения, что они "игрушечные" и ничему особо не научишься
15 2600216
>>600168
нормально научишься, в промышленности тоже используют, так что не бесполезно, есть для вката совсем новичков
16 2600258
>>600168
С них очень вредно начинать, засрут тебе голову своими подходами. Лучше с STM32.
17 2600264
>>599932

>что за стрелки там в коде?


Это серьезный вопрос, а не троллинг? Конечно, из-за лигатур не сильно понятно, но имхо это обычное "->" при обращение к полю структуры через указатель.
1619077717550.png79 Кб, 493x340
18 2600313
>>599932
В APL стрелочка означало присваивание, видимо по наследству досталось.
19 2600338
>>599892
подскажи как перехватить сигналы из кан шины - чтобы сделать хардверный макрос переключения режимов

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

и вдогонку нужно написать опенсурц ECU, вдогонку контролить 6-axis imu && abs
20 2600418
Что такое модель памяти в языке программирования? Иногда вижу как говорят: "вооооот тут такая модель памяти просто". Она же везде блять одинаковая в компилируемых языках, или я чего-то не понимаю?
21 2600502
>>600418
Что-то про многопоточность.
Ну и чтобы не было как с сегментами в 16-битном ассемблере было.
22 2600553
>>600418
Это вроде в DOS, в винде похуй.
23 2600717
есть вот такая дата стракча

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

подскажите как это по красоте сделать чтобы потом использовать в пик2

арифметика индексов это отдельный пиздец, но об этом познее
24 2600718

>пик3

25 2600756
>>600717
Что за контроллер/платка там у тебя?
26 2600776
>>600756
вдуше ничаю, какое то говно с алика, все вместе вышло около 25к₽ (сколько сама платка не помню)

а когда я узнал что эта паскудная параша не может в юникод, и весь мир жрет говно и костыляет юник через анси дрисню - мое срачло просто улетело на самый край галактики....
27 2600867
>>600717
Что за условие в case такое с троеточием?
Которое ast_amp ... er_eri:
Вообще смотрю иногда чей-то код и вообще не могу понять что там написано, хотя вроде Прату вроде осилил. Как учиться читать и понимать чужой код?
Причем есть вещи, с которыми был не знаком, но там интуитивно все понятно. Встречался с таким когда вкатывался в FreeRTOS, там весь код хорошо понятен был.
2023-02-06x10:30:02.png230 Кб, 1355x1091
28 2600883
>>600867

> Как учиться читать и понимать чужой код?


не заниматься бесполезной хуетой и дрочевом древней юзлес дрисни, типа

> Прату вроде осилил



гугли или спрашивай у нейросети минимально необходимый бит информации, который нужен прямо сейчас, для решения конкретной задачи
29 2601093
>>600104
Нет никакого оператора "стремится к"
Это просто
while ((x--) > 0)
30 2601101
>>600867
В си такого оператора нет, это какое-то васянское расширение компилятора. Делает очевидную вещь - срабатывает на всем диапазоне (как 1...5)
31 2601102

>error: expected identifier or '(' before '=' token


>error: 'st' undeclared (first use in this function)


>error: 'ed' undeclared (first use in this function)


начинает пригорать потихоньку

если два кейса переставить местами тоже перестает работать

хотя казалось бы ему должно быть похуй на первый айтем энума..
32 2601104
>>601093
Не толсти, я же привел код и он работает.
33 2601108
>>601102
У тебя код между кейсами.
image.png236 Кб, 895x503
34 2601114
>>601108

>switch() statements evaluates each case

35 2601117
>>601114
Я про uint8_t mod_state. Зачем оно там? Или в кейс помести, или до свитча выноси.
2023-02-06x14:56:32.png143 Кб, 984x1035
36 2601126
>>601117
ладно, помогло, спасибо

хотя я еще не заливал, хз как оно там будет работать
2023-02-06x15:04:18.png232 Кб, 1623x1328
37 2601138
ну а на переменные энума хуле он ругается?

это инты простые же

я что хочу вообще туда могу написать, ему тупо размер важен же

хуле он голову ебет?

как заэкстендить инам без говна?
38 2601144
>>599695 (OP)
Хочу запилить имплементацию сетевого протокола RTSP и RTP чтобы смотреть картинку со своей камеры как хочу и не платить охуевшим комерсам знаю что плееры умеют в ртсп, но хочу сам и чтобы дальше кодирование в hls было, про модуль для нджинкса тоже знаю
Стоит ли выбрать для этого си, или сложно для типикал формошлепа будет?
И что вообще можно почитать про работу с сетью/сокетами/tcp/udp? Не книгу же Танненбаума на миллион страниц читать
2023-02-06x15:50:09.png216 Кб, 2058x1139
39 2601212
уже очень близко ребятишки
40 2601233
>>600125
Давай пиши телегу, тут все расписывать не оч.
41 2601349
кароче мне тут накатали солюшен, но не полностью, предложили доебать финальные байты самостоятельно ~_~

мой вариант лаконичнее и проще и никакой интерференции со стоковыми байтами
image.png195 Кб, 435x604
42 2601367
>>601233

>пиши телегу, тут все расписывать не оч.

43 2601390
>>601367
а я тебе сразу сказал няш что тут гниль по большей части, да школота
44 2601391
>>601233
Почему не очень? Я думаю многим было бы тоже интересно, кто сюда в будущем может зайти!
45 2601506
>>601393 (Del)
Иди нахер, лигатуры рулят.
46 2601509
>>601367
>>601391

Отлично, раз есть запрос, то отвечу тут.

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

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

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

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

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

С чего же начинать самообучение.
Как всегда ответить себе на главный вопрос: А зачем мне этот навык.
->Если для поиска работы, то идем в вуз. Может заграницей берут без диплома, не знаю. Надо уточнять.
->Если для себя, то встает вопрос как учиться.

Для простоты поделим умение программировать МК на три области:
1. Знание С/C++, компиляторов, IDE и т.д.
2. Понимание архитектур МК, рынок производителей, различных протоколов CAN, UART, I2C, SPI и т.д.
3. Матан, схемотехника, физика.

1. Сам язык Си простой, и не надо верить что он сложный, легко прострелить колено, это как клюква про матрешку, водку и медведя. Берем книгу Керниган и Ричи, и всю ее с примерами проходим. Простая книга, простые примеры. Примеры печатаем сами руками, чтобы лучше запоминалось. IDE можно взять Code Blocks с предустановленным mingwб чтобы сразу компилировать проекты по винду. Под Линуксом есть компилятор cc,там можно и руками собрать.
Чтобы писать примерно 90% кода под МК достаточно этой книги. Уж поверьте. Большинство программистов в первую очередь инженеры, и пишут на троечку с минусом. Если быть упорным, то через пару лет можно писать код лучше чем большинство коллег.
Ну пару недель читаем учебник, делаем примеры. Если что-то не идет, то возвращаемся через неделю.

2. Без холливаров про ардуино и STM, покупаем отладочные платы как под ардуинку, и ставим arduino IDE. И сразу же покупаем отладочную плату с STM и ставим STM32CubeIDE и keil uvision IDE.
Покупаем пару датчиков: например температуры и дальномер, любые. Покупаем паяльник дешевый, припой и т.д.
По схемам из интернета собираем сначала на ардуино оба датчика и отправляем полученные данные на компьютер по uart. Так же поступаем и с платой STM.
Уйдет на это пару тройку неделю и вуаля, вы уже сами можете сравнить не на словах, а на деле, что для вас лучше, ардуино или STM.

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

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

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

А вообще проще все это объяснять в телеге и отвечать на конкретные вопросы.
46 2601509
>>601367
>>601391

Отлично, раз есть запрос, то отвечу тут.

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

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

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

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

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

С чего же начинать самообучение.
Как всегда ответить себе на главный вопрос: А зачем мне этот навык.
->Если для поиска работы, то идем в вуз. Может заграницей берут без диплома, не знаю. Надо уточнять.
->Если для себя, то встает вопрос как учиться.

Для простоты поделим умение программировать МК на три области:
1. Знание С/C++, компиляторов, IDE и т.д.
2. Понимание архитектур МК, рынок производителей, различных протоколов CAN, UART, I2C, SPI и т.д.
3. Матан, схемотехника, физика.

1. Сам язык Си простой, и не надо верить что он сложный, легко прострелить колено, это как клюква про матрешку, водку и медведя. Берем книгу Керниган и Ричи, и всю ее с примерами проходим. Простая книга, простые примеры. Примеры печатаем сами руками, чтобы лучше запоминалось. IDE можно взять Code Blocks с предустановленным mingwб чтобы сразу компилировать проекты по винду. Под Линуксом есть компилятор cc,там можно и руками собрать.
Чтобы писать примерно 90% кода под МК достаточно этой книги. Уж поверьте. Большинство программистов в первую очередь инженеры, и пишут на троечку с минусом. Если быть упорным, то через пару лет можно писать код лучше чем большинство коллег.
Ну пару недель читаем учебник, делаем примеры. Если что-то не идет, то возвращаемся через неделю.

2. Без холливаров про ардуино и STM, покупаем отладочные платы как под ардуинку, и ставим arduino IDE. И сразу же покупаем отладочную плату с STM и ставим STM32CubeIDE и keil uvision IDE.
Покупаем пару датчиков: например температуры и дальномер, любые. Покупаем паяльник дешевый, припой и т.д.
По схемам из интернета собираем сначала на ардуино оба датчика и отправляем полученные данные на компьютер по uart. Так же поступаем и с платой STM.
Уйдет на это пару тройку неделю и вуаля, вы уже сами можете сравнить не на словах, а на деле, что для вас лучше, ардуино или STM.

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

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

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

А вообще проще все это объяснять в телеге и отвечать на конкретные вопросы.
47 2601512
кароче вот так оставлю

все комплёхается и корректно работает, но организация низушная, всратая, нихуя неудобная, невозможно сделать красиво

поэтому вытащу это дерьмо в хедер, и напишу ЕБАННЫЙ ФРОНТЕНД где бы я все хранил, отрисовывал и генерил конфиги сразу в буфер обмена

но на самом деле мне только сейчас пришла мега идея - просто нахуй забить хуй на это уебищное дефолтное дерьмище, просто Шифт это ебучий костыль для нищебродов и калоедов (запятая в верхнем регистре - охуенна да?))))

и просто создать кастомный слой, где бы я все обернул в модификаторы!
16750228156092.png481 Кб, 960x1440
48 2601521
>>601509

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


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

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

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

> видеокурсу с кафедры


нудный пидирас бурчит чето полтора часа - открываешь АНГЛИЙСКИЙ тубик и смотришь охуенного челика который на бодряках с задором и смехуечками в охуенной студии со спец эффектами тебе поясняет за всю хуйню за 12 минут

все твои задачи типовые, все давно придумали за тебя и даже я, занимаясь уникальной разработкой, находил кусочки которые мне в разной степени помогали строить аналоговнетную систему
image.png29 Кб, 535x388
49 2601533
>>601521

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


>ряяя скучно, где эффекты и терминатор вылезающий из стены?


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

Aa83vRghue4-00-02-35.png2 Мб, 2560x1440
50 2601549
>>601533
просто ты привык жрать говно, а я привык брать только самое лучшее.
51 2601557
>>601549
Да-да, это же я дурачок с СДВГ, которому нужен скачущий негр, чтобы его величество соизволило учиться.

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


Поэтому ты смотришь говновидосы на ютубе, а не читаешь книги. А в книгах же спецэффектов нет...
52 2601572
>>601557
какое

> СДВГ


додик

я ебашу сутками олмост нанстап

> а не читаешь книги


потому что это НННАХУЙ невсравшийся дрочь

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

но тебе же надо перед барином выслужиться, барин каргокультный кусок дерьма пынямает только корочки и лычки, а по факту ты как ебашил за два мрота свое говно пыльное и убогое, так и продолжаешь это делать без изменений...
53 2601580
>>601572
Ладно.
54 2601684
>>601509
Спасибо большое за развёрнутый ответ
55 2601852
>>601572
Не рвись, а то туза порвешь.
56 2603025
Как сделать так, чтобы программа (вин) не открывала консоль, но при этом могла писать в нее, когда запущена из командной строки?
57 2603026
>>603025
сек
59 2603063
>>603028
Не работает.
#define _WIN32_WINNT 0x0501

#include <stdio.h>
#include <windows.h>

int main(int argc, char argv) {
AttachConsole(ATTACH_PARENT_PROCESS);
printf("Test");
return 0;
}
gcc -Wl,-subsystem,windows -O2
sdzdzsd.png7 Кб, 582x222
60 2603070
61 2603083
>>603070
Просто прячет окно командной строки.
62 2603089
>>603063
>>603028
Хотя сейчас проверил, работает если писать в stderr. В stdout почему-то не хочет.
63 2603092
>>603089
А нет - это я опции линковки убрал.
64 2603124
>>603083
ну так ты в винде либо скрываешь консоль приложения либо показываешь, третьего не дано
65 2603128
>>603124
Консоль можно просто не открывать, а присосаться к существующей. И оно присасывается, но почему-то не хочет туда писать.
66 2603161
В общем история такая. Есть проект Си, на который я внезапно попал да и тем более x86-x64, на котором вообще в продакшене не прогал, был до это этого байтоебом, дрочил-дрочил себе всякие MCU и горя не знал, думал оптимизация это не более чем DMA и IRQ, и аппаратные поддержки того-сего, которые сами делают магию.
Но не тут-то было и настало время делать невротебенные оптимизации и тем более разбираться в них.

Почитал про всякие SSE, AVX2, AVX512, вроде как понятно, но как их юзать вообще не ебу.
Анонче, посоветуй, пожалуйста, нормальных книг по оптимизации и использовании всяких расширений проца. Ну, там книжки, маны, которые знаешь, с которых начать. Как, собственно пользоваться всеми прелестями современных процессоров и использовать эти длинные инструкции, для оптимизации программ?
Как например, вогнать данные принудительно в кеш, например, и там перемолотить словами по используя шины 256-бит?
167584324020460541.jpg121 Кб, 705x1063
67 2603322
>>603212 (Del)
Ладно, думаю стоит ли вообще изучить ассемблер x86 от и до. А потом уже разговаривать.
Я так собственно микроконтроллеры учил, начал с ассемблера, за 2 месяца освоил азы, потом понял куда двигаться. Начну с пикрил. Там посмотрим.
68 2603371
>>603322
Чел учение и знание это конечно хорошо, но особого смысла нету.
Если только не ради науки, и я не про практическую реализацию чего то научного, а про сугубо прогоамистские изыскания.
Я сравнивал скорость нескольких популярных математических библиотек, некоторые из них с ключами собираются с ссе или авх, а некоторые исключительно под авх и написаны, а так же свою простую скалярную.
Так вот с о0 разница действительно есть, те что фул авх быстрее гебридов, а те быстрее скаляров.
Но если собирать в релиз с арчнатив и о3, то все. Современные компиляторы и процы такие крутые что все, практически никакой разницы.
69 2603564
>>603161
Расскажи свою историю переката из МК в большие процы,
Чем компания занимается? Свое сетевое оборудование делает?
70 2603584
>>603564
Я не он, а всего лишь около годовалый вкатышь, но тоже перкатываюсь на линупс с микроконтроллеров.
Вкатился почти год назад в микрокамни, пока оформлялся началась заваруха с сво. В итоге вкатился в микроконтроллеры, даже кой чего уже написал, а в итоге к концу лета совсем все поставки оборвали. Теперь в суматохе переходим в эмбедед линукс и соответствующую комплектуху.
71 2603585
>>603584
Твой отклик не оч, сорян. Сумбурно, как-то, да и опыта у меня больше, хотелось бы кого-то постарше.
72 2603845
>>603564
Я - он.
Вообще, когда я работал в эмбедде, мне помогли широкого круга задачи на разных проектах, это SIO, эмбеддед Линукс АРМ (сборка ядра, дергание ануса драйверов) IoT, чипсеты, биосы, со всем работал по чуть чуть, так что появился кругозор.
Потом понял, что просто вырос и надо двигаться.

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

Да, компания занимается и сетью, ОС и куча эмбеддеда, крупная компания по разработке всякого железа. Сейчас проект как раз - оптимизация алгоритмов и допил KVM и сетевых штук (DPDK, IOMMU, SDN)
73 2603878
>>603845

>крупная компания


Каждый разработчик этой компании бегает на двач с вопросами "как и что делать?" или ты один такой уникальный ширококругозорный растишка?
74 2603883
>>603878
Да ладно тебе, тред и так полумертвый. А так хоть какой-то движ есть.
75 2603898
>>603584
то есть ты за год мк освоил? вундеркинд что ли?
76 2603911
>>603898
Нет конечно, была небольшая база до этого, просто в серьезных проектах никогда не учавствовал. Да и не писал я, что все за год освоил. Только вкатился же.
77 2603963
>>603878
Во первых я не спрашивал что делать, я спросил литературу, не каждый день тебе ставят задачу по AVX. И не знать это нормально. Ненормально ходить вокруг да около годами и не пытаться узнать или спросить.
А во вторых каждый разработчик ходит ещё и на StackOwf, LOR, а ещё ходит на дейлики и рассказывает проблему там, в которой ему, незнающему как делать, подсказывают.
78 2604306
>>603584

> В итоге вкатился в микроконтроллеры, даже кой чего уже написал, а в итоге к концу лета совсем все поставки оборвали.


Так программирувай отечественные mik51 и миландры.

> Теперь в суматохе переходим в эмбедед линукс и соответствующую комплектуху.


Китайские клоны π?
79 2604574
>>604306
Лол, я на миландры и вкатился. Но они ушли с рынка. Сейчас ждем ответа от другой фирмы.
Ну и да, юзаем "отечественные" клоны малинок, если это так можно назвать, хотя малинки не были первыми.
80 2604608
>>603845
О, а есть сейчас вакансии?
Я б вписался. Это Москва же?
81 2605046
>>603845
Платят хоть нормально?
А то я много лет занимаюсь байтоёбством в госконторе за копейки, думаю развиваться в этой области и попробовать найти работу с нормальной ЗП, либо попытаться перейти в бэкенд.
82 2605220
>>603161
Куссвюрм -- Профессиональное программирование на ассемблере x64
83 2605416
>>604608
>>605046
Платят нормально, ДЦ.
Хотите к нам - пишите, команда пока набирается, так что и стартануть будет проще. Скидывайте резюме или профили LinkedIn, что у вас есть.

fakemail.ano/QRnANUSmaioy7lPUNCTUMr!oXu
84 2605420
>>605220
Спасибо, вот тут >>603322 и написал, что имено ее и начал листать
Ещё поглядываю Йо Ван Гуй - программирование на ассемблере
2023-02-10x05:42:31.png161 Кб, 1335x773
85 2605612
>>605416

> fak^NHemail.anonANUSmaH9+ilPUNCTUMr_//u


гречневые низушные мрот-скот животные не ведитесь!

спалите профиль на линкеде которого у вас нет и никогда не было ахахах и на него прийдет повестка прямиком из госуслуг!!!11
86 2605653
>>605420

>Ван Гуй



Эта книга прям для совсем начинающих ассемблерщиков. Но в ней чел хорошо также раскрывает авх инструкции и действие в основном происходит в убунту 18.04 (только, чтобы gdb заработал должным образом в 20/22.04 нужно ручками пересобрать glibc) и он подходит к объяснению некоторых фишек ассемблера с помощью Си, а Круссвюрм с помощью плюсов и кодит в винде, но и раскрывает Круссвюрм авх, авх2, авх512. Так что, да, разница в этих книгах есть, поэтому, если совсем плох в ассемблере, то можно (и я бы сказал нужно) Ван Гуя почитать.
167601054433064364.jpg112 Кб, 976x648
87 2605672
>>605653
Спасибо за разъяснения.
Ну, ассемблер-то, естественно понимаю, а на слабых 8бит архитектурах вообще чаще с ним работал. Но сейчас каждневного использования нет, естественно.
Ну и понимание, конечно в большей степени это RISC или близкие к ней. Так что что посмотрю обе, в них вещи и там и там есть которые не знаю.
Книги хорошие, это да, но как я понял про asm их вообще мало.

>>605612
Негатива не делаю.
Ну разве что могу попросить прийти на Петровско-Разумовскую и принести с собой самый длинный AVX.
88 2605721
>>605672

>но как я понял про asm их вообще мало


asm нынче не в моде, потому и книги по нему хорошо не продашь. Страшно подумать что будет, когда челы допилят гпт и копилот, потому что тогда вообще никакие книги не нужны будут. Это с одной стороны, но с другой стороны, если это будет век невероятного макакинга, то и багов будет в этом коде уйма, следовательно, если обладаешь навыками кодинга на ассемблере, плюс обладаешь навыками дизассемблирования, то в эпоху бесконечного макакинга можно иметь конкурентное преимущество. Так что сейчас нужно впитывать как губка всё, что связано с asm и дизассемблированием.
89 2605723
>>605721
до логики и архитектуры программ gpt еще долго
90 2605729
>>605723

>gpt еще долго


Долго != никогда. Так что готовь, как говорится, сани летом, а телегу зимой.
91 2605731
>>605729
не на моем веку, на ближайшее время участь гпт в кодинге будет уровня помощника, стили погенерировать для ui и все такое
92 2605735
>>605731
Так если всё больше и больше макак будут доверять прокодить часть своей работы недоработанному боту, то и кол-во багов в коде должно расти пропорционально. Так что, вот тебе и конкурентное преимущество.
93 2605751
>>605735
ну так ты можешь и макакить как и раньше, у тебя уже будет преимущество, нейроночки тебе только будут быстрее подсказки выдавать, чем stackoverflow или когда что подзабыл, кодить все равно пока даже такое банальное человеку эффективнее
94 2605756
>>605751
Короче, ты дебс, который нихуя не шарит в дизассемблировании и ревёрс-инжиринге, а потому и не понимаешь в чём именно сейчас преимущество у чела, который хорошо шарит в ассемблере и дизассемблировании; а потому и диалог с тобой я прекращаю уёбок, блять!!!!!
95 2605764
>>605756
я шарю в нейросетях помимо всего прочего, потому что занимаюсь ими
96 2605767
>>605764
Хочешь, сказать, что нейронки выдают сразу идеально правильный код?
2023-01-22x20:17:37.png53 Кб, 1170x225
97 2606024
>>605756
обнял подгоревшего няша :3

этот пидарас чванливый меня тоже выбесил, ууу, гандон ебанный!

>>605764
нихуя ты не шаришь даун, гпт3 был обучен через очко, уже признались что обосрались и начали делать лучше

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

но не прямо сейчас, а потом, уже вот-вот
98 2606060
>>606024
Когда нейросеть научится эвристическому подходу, тогда и приходи.
99 2606088
>>606060

>эвристическому подходу


Да причём тут это? Ты сетке говоришь: "Я хочу, чтобы мой алгоритм выполнял то и то.", а она и пишет для этой задачи код. Любая программа состоит из большого числа таких вот элементарных подпрограмм, которые за тебя пишет сетка, а ты потом всё это компилишь. Т.е. от будущей макаки требуется только разбить задачу на мелкие подзадачи, а после того, как сетка напишет каждую подзадачу, задача макаки переводится в сбор всех этих подзадач в единое целое.

Вот и представь какое это непаханое поле для дизассемблирования и ревёрс-инижиниринга.
100 2606106
>>606088

> Я хочу, чтобы мой алгоритм выполнял то и то.", а она и пишет для этой задачи код.


там такое говно неоптимизированное будет, даже если будет работать правильно, что разгребать это все придется тоже долго или деньги вбрасывать для увеличения накладных ресурсов для поддержания такого бизнеса, что одно и то же, поэтому - пока это только отдаленное светлое будущее
101 2606120
>>606060
бля реально ты пиздец бесячий душнила сука....
102 2606236
>>606120
как будто от тут один тебе это пишет
103 2606240
>>606106
Та что за прямолинейное мышление то, блять? Наоборот же!!! Сейчас у нас какая картина: говно на Мете (Еблокниге) выпускает под свою аську (ватсапп) обновы по 250-300 метров, блять: Ёбанный чатик получает обновы по 250-300 мегабайт, блять!!!!!!!! Их ебейшее говно под названием инстасрам, блять, нагружает сеть на 1,5-2 секунды на, блять, 25-50 Мбит/сек, когда ты перелистывешь в их приложухе один пост: БЛЯТЬ, ты в их ебанной приложухе, сука, перелистываешься с одного поста на следующий, и у тебя в этот момент, блять, нагрузка на сеть в 25-50 Мбит/сек в течении полутора-двух секунд, сука!!!!!!! Ты не хуйнул пальцем с дури по экрану смартфона, чтобы, блять, долистаться до середины всех постов, блять, за всю историю этой ебанной соц. сети, а просто пролистнул тихо, спокойно на след. пост в твоей выдаче!!!!!!!!!!!!! Ебать, веб-макаки шо вы, блять, делаете??????????!!!!!!!!!!!!!!

Понятно, что эти дебилы считают байты в уме только в фильмах как можно быстрее хотят выложить свою приложуху, чтобы захватить часть рынка, а дальше, блять, ебануто-огромными обновами всё стараться допилить, но также обсираться, как попрёт. Вот тут-то и помогут эти нейронки, потому что, когда не будет затрачиваться время на то, чтобы дебилам веб-макакам писать код, после того, как уже на блок-схемах или, блять, в майнд-картах или ещё где-нибудь, но сука, главное, чтобы не в голове, а то голова этих дебилов разорвёртся из-за такой сложной инфы, задача разложена на мелкие подзадачи, эти самые мелкие подзадачи скармливать нейронке, а остальное время оптимизировать всё то, что она высрала. Вот тебе и "коллаборация" нейронки и ревёрс-инженера, с навыками дизассемблирования. Так что и по времени и по деньгам будет примерно всё равно, но только приложуха, с большой долей вероятности, будет уже оптимизрована и ахуенна.
104 2606250
>>606240
этот тролль порвался, несите следующего
16748064920460.jpg137 Кб, 1024x576
105 2606258
>>606250

>этот тролль порвался, несите следующего

2023-02-01x05:44:05.png62 Кб, 1167x855
106 2606269
>>606240

> нагружает сеть на 1,5-2 секунды на, блять, 25-50 Мбит/сек


ПОЧУВСТВУЙ СИЛУ ПИТОНИЯ ССУЧЕЧКА!!!

> Ебать, веб-макаки шо вы, блять, делаете??????????!!!!!!!!!!!!!!


нажми F12 и посмотри, хуле ты до нас доебался поехавший

>>606258
питоняшка топ! пошел нахуй.
107 2606279
>>606269
Как же у питонической шлюхи горит то!!!!!!!!!! Полыхает!!!!!!!!!!!! Мы байтоёбы тебя заменим, сучка!! Бойся нас и нейронок!!!!!!
108 2606280
>>606258
теперь еще боевыми картинками будет тут тред засирать как школота типичная
109 2606283
>>606120

> этот первый ответ уровня гороскопа в газете по обобщенности


И че, скоро у твоих нейросеток появится интуиция? А свои собственные суждения она вообще научиться делать?
110 2606289
>>606280
Как же припикает то!!! Это боевая картиночка, похоже, многим суть на них раскрывает!!!!! Каааааайф!!!
111 2606314
>>606279

> Мы байтоёбы тебя заменим, сучка!! Бойся нас и нейронок!!!!!!


ты смотри там от голода не умри байтоебик лол

300кнс то у меня 😉

>>606283

> интуиция


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

> свои собственные суждения она


пусть запихает себе в электронное очко

я не двачной додик, я сам осужу кого хочешь
112 2606346
>>606314

>300кнс то у меня


Чел, просто ты не понимаешь куда всё движется, потому что ты что-то бОльшее, чем мат. анализ и теор. вера, чтобы обучать свои нейроночки, не изучал. Чел, мне тебя искренне жаль, потому что ты сейчас со своим замыленным взгладом от того, что у тебя всё получается, роешь себе же могилу, обучая нейроночки. Я уже вижу твою голодную смерть, через 3-4 года.
113 2606423
>>606346

> мат. анализ и теор. вера


нахуй не нужны, это все форс для додиков-даунов и тупорылых скотопидорашьих кабанов, которые не могут отличить DS от CS

> Я уже вижу твою голодную смерть, через 3-4 года.


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

плюс у меня два велосипеда (электро и обычный) и мотоцикл

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

ну и плюс слесарные навыки, и умение варить тигом в инертной среде аргона

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

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

>на мотоциклетные мозги, и сносить нахуй эту пропритарную пидарастию


Представил новости того периода:
Увеличение количества "хрустиков" в 15,6 раз власти связывают с неким программистом. Дело под свой контроль взял лично Министр Внутренних Дел.

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


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

>ядерный апокалипсис

photo2022-07-1717-19-13.jpg93 Кб, 1024x768
115 2606451
>>606440

> количества "хрустиков


это константа, ты просто туповатый додик нихуя не разбирающийся в вопросе

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

если жив - значит достоен доверия.

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

таким образом планета очищается, мир становится лучше

жаль у клеточных нет подобного механизма

> на зоне


кодеры это привелигированная каста, они пилят софт за еду, либо делают прозвоны и наебывают твою ебанутую бабку и мамку на бабки
116 2606465
>>606451

>это константа


Туповатый додик тут только ты! Собираешься запускать авто-пилотные мотоциклы, но не знаешь того, что автопилот не с неба берётся, а его обучают, а в ходе обучения могут происходить разные казусы. Казусы, которые связаны с обучением твоей нейронки, я уже описал, и это похоже на правду, потому что ты туповатый додик, который не может связать А с Б. Этот диалог окончен! Мне больше нечего донести до дегенерата (тебя).
117 2606466
>>605721
Если идеализировать, что нейронка умеет самообучаться, именно делать выводы, то да, может она и сделает что то и даже кого-то заменит.

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

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

Я как занимавшийся электроникой могу сказать что даже симуляция железа эмуляция схем, ну это ОЧЕНЬ не точные данные. Все эти Верилоги, симуляторы электронных схем, полноплатформенные симуляторы железа, статические анализаторы кода пишутся крупными компаниями годами, а они все не могут полностью заменить реальную практику. Там можно только обкатать и сделать претест.

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

Ну, мой вывод такой: на данный момент замена ограничена не более чем отсутствием реального мыслительного процесса. Имитация мышления это не мышление. Машина не может сделать анализ больший чем написан в документе или написанный в коде. Это так себе затея. Тогда все программисты превратятся в техпичав по сути. А зачем тогда? Сидеть писать тонны бумаг, чтобы превращать из в код? Тогда и второй вопрос встаёт - рентабельность бесконечной декомпозиции задач.
118 2606489
>>606465
какой же ты блядь дегинерат сука ты элементарно прочитать ответ не можешь

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

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

но это все не важно, потому ты даун, а я нет. я собираюсь прописывать движение в колонне, но с учетом окружения и нейро-предикта
119 2606520
>>606489
Ясно! Школьник-фантазёр перед нами. Пока есть такая возможность, то учи математику и физику, особенно налегай на олимпиадные задачки по физике, потому что они хорошо развивают как логику, так и математический аппарат. И поменьше трать времени на двач, потому что это помойка. И не прерикайся с мамкой. Понял, школота???! А то приеду и ремня тебе всыплю!!!
120 2606535
>>606466
Чел, это всё, если не учитывать то, что нейронки не будут дальше развиваться.

Не понимаю, почему ты так прицепился к декомпозиции задачи? Разве это не является нормальным решением любой мало-мальски сложной задачи? Конечно, тут можно пофантазировать, допустим, отталкиваясь от того, что а для чего программа разбивается на на подпрограммы? Разбивается она для того, чтобы этот код можно было читать людям. А, если весь код будут писать нейронки, то зачем тогда вообще декомпозитить программу? Получил пласт кода и норм. Правда, как это оптимизировать - хз? Но и тут можно придумать что-нибудь, исходя из соображения, что на уровне машинных команд, по сути все программы, допустим Word, Openoffice writer, Гугл док, etc, выглядят одинаково. Потому можно обучить нейронку, как бы мыслить паттернами, ну и оптимизировать эти её паттерны.
121 2606790
>>606535

>Не понимаю, почему ты так прицепился к декомпозиции задачи? Разве это не является нормальным решением любой мало-мальски сложной задачи?


Да ты прав, любую задачу нужно декомпозировать. Но, я не просто так написал про мышление.
В жизни ты можешь вертеть декомпозицию как хочешь, если ты пишешь задачу человеку даже так (только без предирок, мы ж про абстрактную задачу):
"Посмотри документацию, там не соответствует действительности решение: галка "запомнить" при входе стоять не должна, поэтому у тебя автологин" в принципе все. Ты поверхностно описал техзадание, на один кейс. Сплочённая команда, где люди работают более полугода они варятся в задаче и поймут про что и как идёт речь. Им не надо рассумоливать.
В случае с компьютером, ты ему должен объяснить досконально что надо, о чём идёт речь, какое место в доке, про что ты точно говоришь и номер главы и пункта документа. Иначе тебе компьютер сделает чтобы ГАЛКА НЕ СТОЯЛА,а логику не поменяет.
Другими словами ты будешь писать человеческими словами программный код. Только мнемоника поменялась.

Далее, я говорил про рентабельность. Например, при появлении мультиплексора исчезла такая профессия как переключатель телефонной линии.

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

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

Таких задач масса. Даже схемы элементарно читать.

Анон, я не хочу сказать что все пиздец нейронки говно и не нужно. Но круг задач очень сужается какая бы она умная не была. Ещё раз:
рентабельность, глубочайшая декомпозиция, программист пишет текст а не код и является прослойкой для нейронки.
Если и сейчас взглянуть на мир как в примерах выше, технологии появились, но не все заменили, но все же облегчили.
121 2606790
>>606535

>Не понимаю, почему ты так прицепился к декомпозиции задачи? Разве это не является нормальным решением любой мало-мальски сложной задачи?


Да ты прав, любую задачу нужно декомпозировать. Но, я не просто так написал про мышление.
В жизни ты можешь вертеть декомпозицию как хочешь, если ты пишешь задачу человеку даже так (только без предирок, мы ж про абстрактную задачу):
"Посмотри документацию, там не соответствует действительности решение: галка "запомнить" при входе стоять не должна, поэтому у тебя автологин" в принципе все. Ты поверхностно описал техзадание, на один кейс. Сплочённая команда, где люди работают более полугода они варятся в задаче и поймут про что и как идёт речь. Им не надо рассумоливать.
В случае с компьютером, ты ему должен объяснить досконально что надо, о чём идёт речь, какое место в доке, про что ты точно говоришь и номер главы и пункта документа. Иначе тебе компьютер сделает чтобы ГАЛКА НЕ СТОЯЛА,а логику не поменяет.
Другими словами ты будешь писать человеческими словами программный код. Только мнемоника поменялась.

Далее, я говорил про рентабельность. Например, при появлении мультиплексора исчезла такая профессия как переключатель телефонной линии.

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

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

Таких задач масса. Даже схемы элементарно читать.

Анон, я не хочу сказать что все пиздец нейронки говно и не нужно. Но круг задач очень сужается какая бы она умная не была. Ещё раз:
рентабельность, глубочайшая декомпозиция, программист пишет текст а не код и является прослойкой для нейронки.
Если и сейчас взглянуть на мир как в примерах выше, технологии появились, но не все заменили, но все же облегчили.
122 2607213
>>606790
Жиза, большая часть разрабов мыслят о мире, только как о цифровом, потому что ни разу не физики и не инженеры.
Если перейти к физике, то там люди на порядке лучше нейронок решают проблемы, которые появляются в процессе исследования и разработок.
123 2607218
>>607213
где итер додик, а где батки нормальной йомкости, ха сука?
124 2607299
>>607218
Ты это сам с собой разговариваешь?)
125 2607317
>>607299
нет)
126 2607518
>>606489
Какая твоя игра на этом твг, датасаентист?
img.png86 Кб, 512x470
генрих_геев 127 2607941
Аноны, можете пожалуйста объяснить как работает wmemcpy...
Я выделяю массив "a" в куче, потом передаю туда байты используя ReadConsoleW, выделяю массив "b" в стеке размером wcslen(a)+2, далее копирую из массива "a" набор байтов меньше на 2 в массив "b" используя wmemcpy, т.е. wmemcpy(b,a, wcslen(a)-2), НО происходит ошибка, gdb показывает что в массиве "b" хранится лишний символ "P" который я явно не передавал в консоль.

(gdb) x/20ch copy
0x61fd70: 102 'f' 105 'i' 108 'l' 101 'e' 95 '_' 56 '8' 60 '<' 79 'O'
0x61fd80: 46 '.' 116 't' 120 'x' 116 't' 80 'P' 0 '\000' 0 '\000' 0 '\000'
0x61fd90: -32 'а' 22 '\026' 0 '\000' 0 '\000'

(платформа шиндовс, x64 )
генрих_геев 128 2607948
Да кстати, забыл упомянуть, что в качестве имени файла я передаю набор широких байтов, с кирилическими и латинскими символами: file_имя.txt
129 2607957
>>607948
Я если честно не могу там разобрать что ты понаписал. Ты бы лучше скриншот памяти показал и все.
Вот такие вот ребята приходят на митинг и хуярят хуй пойми что какие-то байты, биты, еще что-то там, потом переходы, возвраты. Уже голова на третьем предложении взрывается. И он там стоит 5 минут монолог читает, все молчат, а тимлид покорно кивает головой. Потом его это доебет он говорит: "Ну ты там в таску свои исследования кратко прикрепи... Давайте, кто там следующий?".

А так, если ты с клавы что-то вводил, может у тебя там нуль-терминатор.
130 2607966
>>607957
>>607957

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

(gdb) x/20i copy
0x61fd70: data16 add %ch,0x0(%rcx)
0x61fd74: insb (%dx),%es:(%rdi)
0x61fd75: add %ah,0x0(%rbp)
0x61fd78: pop %rdi
0x61fd79: add %bh,(%rax)
0x61fd7b: add $0x3c,%al
0x61fd7d: add $0x4f,%al
0x61fd7f: add $0x2e,%al
0x61fd81: add %dh,0x78(%rax,%rax,1)
0x61fd85: add %dh,0x50(%rax,%rax,1)
0x61fd89: add %al,(%rax)
0x61fd8b: add %al,(%rax)
0x61fd8d: add %al,(%rax)
0x61fd8f: add %ah,%al
0x61fd91: (bad)
0x61fd92: mov $0x0,%esp
0x61fd97: add %bh,%cl
0x61fd99: adc $0x40,%eax
0x61fd9e: add %al,(%rax)
0x61fda0: loopne 0x61fdb8
изображение.png197 Кб, 552x372
131 2607970
>>607957
Ты ток не злись на меня, мне стыдно в этом признаваться, но я глупенький пока, учусь работать с отладчиками, пока работаю с gdb, и не в курсе как правильно сделать снапшот памяти...
132 2607973
>>607957
Или тебе нужен вывод (gdb) info all-registers ?
image.png88 Кб, 1232x800
133 2607987
>>607970
Да скриншот обычный оперативки в отладке. Там байты есть.
Вот этого я просил.

>0x61fd70:


>0x61fd80:


>0x61fd90:



Просто то что ты написал ну совсем непонтно и нечитаемо.

Ты сюда смотрел?
https://en.cppreference.com/w/c/string/wide/wcslen

Посмотри что в массивах до введения в них данных и после.
Может ты когда массив выделяешь он забивается мусором?
134 2607993
>>607987
Я другой но для этого есть мемсет 0 при инициализации чего либо
изображение.png47 Кб, 645x773
135 2607997
>>607987

>Посмотри что в массивах до введения в них данных и после.


>Может ты когда массив выделяешь он забивается мусором?



Я посмотрел, а там мусор...там ведь нули должны быть ?
Я думал при объявлении массива в стеке, он автоматически нулями заполняется, а там каши.... bylaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
136 2607998
>>607997
ну теперь знаешь, что выделение памяти, если это не специальная функция, не присваивает никакие дефолтные значения, потому что это не всегда нужно, а ресурсы отъедает, поэтому если в твоей задаче это необходимо, то просто дописываешь зануление или какими там значениями тебе нужно
16488181523360.mp43,4 Мб, mp4,
386x480, 0:53
137 2608002
>>607998
Самое обидное что я про это знал, но совсем забыл....
В общем, спасибо анон за помощь, хорошей ночи и хороших снов тебе.
fv03IaqMbA-00-03-31.png2,1 Мб, 2560x1440
138 2608097
>>608002
какая милота на видосике :3

а еще говорят мл-педофилы кукареку :Р
image.png52 Кб, 1545x635
139 2608141
двач привет, незнаю по адресу ли я, (незнаю у кого спросить) обьясните пожалуста почему getch() не работает? При вводе буквы ни одно из условий ниже не выполняется и в строке "предедущая команда" переменная Key не отображается
140 2608156
>>608141
Заголовочный файл conio.h включил?
141 2608161
>>608156
да, кониох написал, но прикол в том что даже без него программа работает так же, +принтф работает без стдио
142 2608165
>>608161
Это какая-то идэешка, что ли? Раз так, то беги в отладчик, смотреть почему программа не работает так, как запланировал.
143 2608167
>>608165
я не знаю что такое отладчик
программа называется кодблокс
144 2608170
>>608167
Хз, анон, на стаке пишут, что это баг в винде и кто-то советует на прямую компилить программу, либо попробуй добавить заголовочный файл stdlib.h
145 2608172
>>608170
Кинь код через pastebin, я попробую у себя в линупсе посмотреть что к чему.
146 2608175
>>608172
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>

int main() {

setlocale(LC_ALL, "Rus");
// Создаём сетку
int Biom[20][15];
for(int y_pos=0; y_pos<19; y_pos++) {
for(int x_pos=0; x_pos<14; x_pos++) {
Biom[y_pos][x_pos] = 0;
}
}
// Строим стены
for(int x_pos=0; x_pos<14; x_pos++) {
Biom[0][x_pos] = 1;
}
for(int x_pos=0; x_pos<14; x_pos++) {
Biom[18][x_pos] = 1;
}

for(int y_pos=1; y_pos<18; y_pos++) {
Biom[y_pos][0] = 1;
}
for(int y_pos=1; y_pos<18; y_pos++) {
Biom[y_pos][13] = 1;
}
// Точка спавна собаки
Biom[10][9] = 5;
int Dog_x = 9;
int Dog_y = 10;

printf("Нажмите любую клавишу для старта\n");

char Key = getch();

while (Key != "r") {
system("cls");

printf("Предыдущая команда: %c\n", Key);
printf("Dog_x: %d\n", Dog_x);
printf("Dog_y: %d\n", Dog_y);

for(int y_pos=0; y_pos<19; y_pos++) {
for(int x_pos=0; x_pos<14; x_pos++) {
printf(" %d", Biom[y_pos][x_pos]);
}
printf("\n");
}

Key = getch();

if (Key == "w") {
Biom[Dog_y][Dog_x] = 0;
Biom[Dog_y-1][Dog_x] = 5;
Dog_y--;
}
else if (Key == "s") {
Biom[Dog_y][Dog_x] = 0;
Biom[Dog_y+1][Dog_x] = 5;
Dog_y++;
}
else if (Key == "a") {
Biom[Dog_y][Dog_x] = 0;
Biom[Dog_y][Dog_x-1] = 5;
Dog_x--;
}
else if (Key == "d") {
Biom[Dog_y][Dog_x] = 0;
Biom[Dog_y][Dog_x+1] = 5;
Dog_x++;
}
}
}
146 2608175
>>608172
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>

int main() {

setlocale(LC_ALL, "Rus");
// Создаём сетку
int Biom[20][15];
for(int y_pos=0; y_pos<19; y_pos++) {
for(int x_pos=0; x_pos<14; x_pos++) {
Biom[y_pos][x_pos] = 0;
}
}
// Строим стены
for(int x_pos=0; x_pos<14; x_pos++) {
Biom[0][x_pos] = 1;
}
for(int x_pos=0; x_pos<14; x_pos++) {
Biom[18][x_pos] = 1;
}

for(int y_pos=1; y_pos<18; y_pos++) {
Biom[y_pos][0] = 1;
}
for(int y_pos=1; y_pos<18; y_pos++) {
Biom[y_pos][13] = 1;
}
// Точка спавна собаки
Biom[10][9] = 5;
int Dog_x = 9;
int Dog_y = 10;

printf("Нажмите любую клавишу для старта\n");

char Key = getch();

while (Key != "r") {
system("cls");

printf("Предыдущая команда: %c\n", Key);
printf("Dog_x: %d\n", Dog_x);
printf("Dog_y: %d\n", Dog_y);

for(int y_pos=0; y_pos<19; y_pos++) {
for(int x_pos=0; x_pos<14; x_pos++) {
printf(" %d", Biom[y_pos][x_pos]);
}
printf("\n");
}

Key = getch();

if (Key == "w") {
Biom[Dog_y][Dog_x] = 0;
Biom[Dog_y-1][Dog_x] = 5;
Dog_y--;
}
else if (Key == "s") {
Biom[Dog_y][Dog_x] = 0;
Biom[Dog_y+1][Dog_x] = 5;
Dog_y++;
}
else if (Key == "a") {
Biom[Dog_y][Dog_x] = 0;
Biom[Dog_y][Dog_x-1] = 5;
Dog_x--;
}
else if (Key == "d") {
Biom[Dog_y][Dog_x] = 0;
Biom[Dog_y][Dog_x+1] = 5;
Dog_x++;
}
}
}
image.png47 Кб, 789x352
147 2608179
148 2608189
>>608179
фак май моск, кто там интегер?
149 2608206
>>608189
Короче, во-первых, попробуй заюзать функцию getchar, во-вторых, у тебя идёт сравнение между целым и указателем на строку, потому что функция getchar или getch получает код символа, а не сам символ. Вот пример: это выход из цикла и я изменил твой код пик2 (114 это код символа "r"). Попробуй для начала заюзать getchar, а потом дальше иди.
150 2608237

>>260820


а какая функция считывает именно символ?
151 2608246
>>608237
scanf()
152 2608255
>>608237
Спасибо, наконец то разобрался! часа два с этим getсhar промучился...
153 2608282
>>608255
если что для ввода-вывода повсеместно sdl2 используют, лучше учи его сразу
154 2608285
>>608255
Компиль напрямую, либо поставь себе на виртуалку убунту и кодь в ней через терминал, как диды. Обычно компилятор сообщает в чём проблема, при компиляции.
155 2608289
>>608206
ещё какая то странная фигня, когда нажимаю esc, у строки "Dog_x:" пропадает буква D
156 2608304
>>608289
Это явно баг идэешкия.
157 2608362
>>608141
getchar возвращает тип int с ASCII кодом символа, а текст в двойных кавычках - это указатель на строку. Т.е. ты сравниваешь int с указателем.
Буква в одинарных кавычках - это как раз ASCII код символа, а не указатель на строку. Так что замени у себя в условиях двойные кавычки " на одинарные '
158 2608443
>>608362
Двойные кавычки, одинарные, пять сортов каких-то скобочек, подчеркивания, табуляции. Почему нельзя сделать как у людей, и обозначать информацию общепринятыми методами a-zA-Z, а не какими-то манясимволами из глубин уникода?
159 2608492
>>608362
а почему не выскакивает никакой ошибки, ведь Key инициализируется через char а не int
160 2608494
>>608492
Неявное преобразование типов. Великом ту за клаб, так сказать.
161 2608495
>>608097
МЛ- это датасаенс ?
Я видео взял из треда "субкота", вчера пару часов просидел в том треде, насмотревшись на котов и кошек, и мне оно тоже показалось очень милым, хотя надо всё таки было другое webm выложить, чтобы не было каверзных мыслей, ибо я не люблю педофилов, но в этом треде вроде как нормальный контингент, программисты, и таких персонажей тут нет надеюсь.
162 2608602
>>608289
Ничего странного, как думаешь почему escape-последовательности в терминале называются ESCAPE-последовательностями.
163 2608646
>>608495

> МЛ- это датасаенс ?


обвиосли

> не люблю педофилов


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

для начала >=14 уже не педофилия, и даже в этой стране ты можешь завести жену этого возраста совершенно легально

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

протестовать нужно против насилия (в той же шкале например) и против сука тупорылых ублюдков и неабортированных даунов (читай невежества) а от нормальных мужиков нужно просто взять и отъебаться нахуй

> программисты


люди думающие, а интеллект это не краник, его не прикрутишь, он работает всегда и как вода - постоянно точит рамки дозволенного, это рост братишка, это энтропия - так устроенна вселенная!
164 2608653
а можно один дурацкий вопрос как принтэфнуть с розовыми буквами?
165 2608664
>>608653
наложить шейдер
166 2608677
>>608664
не фига себе это как
167 2608700
>>608677
берешь полупрозрачную розовую пленку и она приклеивается к экрану под действием статического электричества
168 2608862
>>608653

> как принтэфнуть с розовыми буквами?


В гугле "Управляющие последовательности ANSI"
color.png11 Кб, 725x299
169 2608886
>>608653
а вообще если ты серьезно, то вывод зависит от эмулятора консоли и операционной системы, по нормальному как выше написали бери sdl2

для консоли винды - ну вот тебе пример на разные цвета, выбирай, устанавливай
170 2608887
Вопрос немного не по теме, а где тут на дваче борда, где можно спросить конкретно про компьютерные сети? здесь есть такое вообще?
171 2608888
>>608653
Смотри в википедии ANSI escape sequences
hashcat.png7 Кб, 225x225
172 2608949
>>608646
Слушай все люди не идеальны.
Вот ты считаешь нормальным, что например 40летняя чурка-педофил, толкает дурь крупными партиями и проводит время с 13-14 летними девочками ???!!!
А представь, что эта девочка будет твоей сестрой, или дочкой.

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

Предмет он блядь знает, ой пиздец....
173 2608961
>>608886
А как "взять" sdl2? Не понял, что это значит
И с пикчи можно обьяснить, что этот цикл делает 255 раз?
174 2608965
>>608495
Да нормальный видос, снимали же её родители и выкладывали потому что это выглядит смешно.
О чем люди думают то и пишут. Исходя из этого мнения можно вообще считать что нельзя выкладывать видео с маленькими девочками, а не то за педойфила примут.
175 2608978
>>608961

>Не понял, что это значит


Забей. У тебя есть windows.h, его хватит.

>что этот цикл делает 255 раз


Печатает текст 256 раз (8 бит) разными цветами, очевидно же.
photo2023-02-1110-47-14.jpg70 Кб, 640x640
177 2609014
>>608949

> А представь, что эта девочка будет твоей сестрой, или дочкой.


тян не человек

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

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

себе в тарелку смотри додик

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

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

так что отмени трясску и не завидуй успешным мужчинам с юга.
1640950272539-2.jpg401 Кб, 733x1100
178 2609020
>>608965

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


я бы так и сделал кстати

это самое натуральное растление малолетних

овуляшек с ютуба делающих из своих детей блядей на пожизненное нахуй, как и фк
изображение.png186 Кб, 858x800
179 2609034
>>609014

>ЫГЫГЫГЫГГЫ МОРАЛФАААГГ В ТРЕДЕ, ЩА ЕГО ЗАТРАЛЛЮ ЫФХХЗВФПАХАХАХА ЫЫЫЫЫЫЫЫЫЫЫЫЫ


>Я ТИПА СМИЩНОЙ ТИПА ОЛД, КОРОЧ ВСЕМ СМИЯТЬСЯ, Я ЕГО ЗАТРАЛЛИЛ, ВСЕМ СМОТРИТЕ НА МИИЯНЯЯЯ ЫЫЫЫЭАЭАЭ



Дауненок, что ты забыл в этом треде ?
Пиздуй в /b/ыдлятню, там тебе будут рады.
изображение.png116 Кб, 320x180
180 2609038
>>609020
Зря ты это написал дурачок, тролль мамкин)))
В отличие от /b/ этот тред долго не будут стирать, считай тебе повезло если ты сидишь через VPN+Tor)))
Посмотрим как ты будешь улыбаться, когда когда с тебе придут с обыском)))
16617257353550.jpg453 Кб, 960x1280
181 2609040
>>609034
слив засчитан додик.

>>609038
обыск за то что я против выкладывания любых видео с маленькими девочками?

ты ебанутый?
182 2609062
>>608653
Бери сразу ncurses. Там за тебя уже диды погуглили ansi цвета.
изображение.png193 Кб, 455x297
183 2609070
>>609040

Ты сам не понимая того, демонстрируешь свой низкий интеллект.
Сначала ты писал что тян не человек, и то что педофилия это нормально >>609014

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



Потом ты пытался "траллировать" и писал что выкладывать видео в которых есть девочки не нормально.
Ты сам того не понимая палишь себя, своей же тупостью.
Сам факт того что ты доебываешься до анонов, и засираешь этот тред, посвященный языку Си, уже не нормально.
Малолетний выблядок, ты занимаешься хуйней, портишь этот тред засоряя его мусором и доёбываясь до анонов, считаешь себя смешным и думаешь что твоя "псевдоанонимность" спасет тебя от ответственности и того что ты написал выше, но это не так, не забывай кому пренадлежит этот форум, не забывай что это не /b/ а когда нариману придёт запрос на твой ip-адрес, он особо мешкаться не будет (потому что должен по закону).

Я тебе дам совет, остановись анон, закрой вкладки с этим сайтом, посмотри фильм, почитай книгу или подготовься к экзаменам в своей школе/ПТУ или куда ты там ходишь, перестань портить этот тред и свою репутацию, пока ты не нахлобучил себе ещё больше проблем.
Тебе ведь не нужно, чтобы в 6 утра в квартире у твоих родителей выбивали дверь ?
184 2609082
>>609070
какой же ты душный зачморенный низушник...

я не школьник, я уже давно знаю что анонимности не существует, i'm ok with it

> засираешь этот тред


это называется свободное общение, не, не слышал додик?

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

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

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

поэтому пройди нахуй со своим манямиром и трясской.
изображение.png750 Кб, 900x900
185 2609135
>>609082
Двачедаун ебанный, вжлинк мамкин, посмотрим кто из нас додик, и кто трястись будет, когда к тебе и твоим родакам в 4-6 утра придут дяди в форме, когда заберут твой комп. (и не только), твои родители будут визжать и охуевать от сыночки-долбоеба, а ты будешь с сонливым испуганным ебалом, своим тоненьким голосочком, оправдывать перед камерой всё что ты тут написал, следователь с радостью запишет это в рапорт)))
186 2609153
>>609135
Анон хватит спорить с дебилом. Ты ж понимаешь, что он будет стоять до последнего, оставляя последнее слово за собой. Маняврирует, ставит анонов в неловкое положение за видосы, пишет что он против педоистерии, хотя триггерится на видос как педоистеричка.
Я вот вообще увидел в том видео, что анон >>607998 хочет показать, типа он как кот пытается что-то понять внимательно слушая других анонов, и было в тему, кстати.

Так что отпусти ситуацию, чуваку просто надо свое говно излить, поизливает да съебет.
187 2609168

> эти жирные набросы на датасаентиста который до сих пор не уехал из этой страны


> (хотя были оферы и линкед мой китайцы чекают регулярно)


=)
188 2609314
>>608978
А зачем одно и тоже печатать столько раз?
189 2609331
>>601104
потому что ты долбоеб даже в душе не едешь как он работает. Мать твою ебали всем отделом
190 2609359
>>608886
а что значит первая строка после инт мейн?
191 2609363
>>609359
Тип Переменная Операция присваивания Функция(Константа);
192 2609369
>>609359
получаешь ссылку на консоль вывода своего приложения
193 2609370
>>609359
потом с помощью ссылки на эту консоль, настраиваешь ее "стиль" вывода внутри цикла
194 2609482
>>609359
Дескриптор консоли входного буфера если я не ошибаюсь.
195 2609487
>>609482
*выходного буфера
196 2609576
%c
%d
%i

%f
%g

%s
%x

%n
%u
%[]Читает одиночные символы
Читает десятичное число
Читает десятичное число
Читает число с плавающей запятой
Читает число с плавающей запятой
Читает число с плавающей запятой
Читает восьмеричное число
Читает строку
Читает шестнадцатиричное число
Читает указатель
Получает целочисленное значение, равное числу прочитанных символов
Читает беззнаковое целое
Сканирует множество

А почему столько одинаковых знаков для одного и того же?
196 2609576
%c
%d
%i

%f
%g

%s
%x

%n
%u
%[]Читает одиночные символы
Читает десятичное число
Читает десятичное число
Читает число с плавающей запятой
Читает число с плавающей запятой
Читает число с плавающей запятой
Читает восьмеричное число
Читает строку
Читает шестнадцатиричное число
Читает указатель
Получает целочисленное значение, равное числу прочитанных символов
Читает беззнаковое целое
Сканирует множество

А почему столько одинаковых знаков для одного и того же?
197 2609818
Поясните что значит (char[]){8, 9} в аргументе функции. Это строка с символами ascii 8 и 9? Перевожу на другой язык код.
198 2609917
>>609576
Видимо оставлены по аналогии с printf. Хотя при выводе это не совсем одно и то же, наприме %e выводит в научной записи. (1.2e+2).
199 2609924
>>609818
Не совсем строка, потому что нет завершающего 0. Поэтому просто массив из двух байт, 8 и 9. Char часто обозначает просто байт, а уж по совместительству массивы байт могут являться строками в кодировке ascii.
200 2609938
>>609924
Да точно, это байты
201 2609965
>>609576

>для одного и того же



Это не одно и тоже! Это разные типы данных, которые занимают различный объём памяти: https://metanit.com/c/tutorial/2.3.php

Вот тебе ещё скрины из книги Столярова:
SAGE - Telesto.mp44,5 Мб, mp4,
500x500, 2:22
202 2610019
>>607998
>>607987

Кстати анон, тут ещё такой прикол...
Когда я объявлял массив я использовал длину другого массива, т.е. что-то вроде такого:
short unsigned int new_array[wcslen(dif_array)]

Теперь то я знаю что так делать нельзя, т.к. получается этот массив будет иметь неопределенное поведение, для таких целей нужно использовать выделение в куче calloc() и memset() (чтобы избавить массив от мусора и заполнить нулями на начальном этапе), я правильно понимаю, или есть какой-то способ попроще?
1547596193402.png2 Кб, 150x43
203 2610168
>>609965

>Это не одно и тоже


Таблетки.
204 2610229
>>610019
ну если тебе массив определенного размера int array[4] - создаст массив из четырех интов на стеке
если тебе массив в куче, то любым из alloc-ов:
void malloc(size_t size) - выдаст тебе указатель на первый байт области памяти, что ты выделил, т.е. если тебе нужно 4 инта, каждый который по 4 байта, то тебе нужно size = 4 4
аналогично можно calloс(4,4 )

memset-ом ты можешь заполнить область памяти какими-то значениями,:
memset (src, 'a', 10) - заполнить десятью символами 'a'
а вообще подводных много
https://habr.com/ru/post/272269/
16755148508051.webm8,6 Мб, webm,
368x360, 0:41
205 2610248
>>610229
Спасибо за ссылку анон :З
206 2610289
смтарите счто нашелhttps://www.microsoft.com/en-us/research/publication/implementing-algebraic-effects-c/#
действительно можно же из сишки сделать самый топовый языкг псоле липса конеша
207 2610304
>>610019
Ещё есть ньюанс, функция malloc выделяет память, которая будет содержать неопределенные значения, а calloc выделяет память и заполняет её нулями.

Или вот ещё прикол.
Думаешь что объявление в функции
char *str = "stroka";
и
char str[] = "stroka";
это одно и то же?
А вот и нет.
В первом случае память со строкой будет доступна и после выхода из функции, а во втором случае строка создаётся в стеке функции, который перестанет сосуществовать после выхода из функции.
208 2610317
>>610304

>В первом случае


Память не выделяется в принципе, юзвер просто срет по адресу в созданном указателе говном. Если в следующей строчке юзвер создаст еще один указатель, который попадет в расположенный рядом участок памяти, программа вместо выполнения пошлет юзвера на хуi.
209 2610334
>>610304
>>610317
ЕМНИП в первом случае это указатель на read-only секцию со статичными данными (например кусок загруженного в память .exe), при некоторых усилиях можно ее перезаписать конечно.
1538575570229.png90 Кб, 1585x515
210 2610339
>>610334
Вот это я имею в виду. Записать в такую строку не получится, поскольку та память защищена флагом в операционной системе, но если бы получилось, то изменились все три строки, поскольку видно что везде используется один и тот же адрес.
211 2610350
>>610304

>char *str = "stroka";



>char str[] = "stroka";


>это одно и то же?


Ну нет, я не настолько плохо знаю Си.
Я уже чего только не делал с массивами и указателями (двойными, тройными и т.д.)
А так да, ты всё верно подметил, я только недавно, посмотрев в очередной раз в отладчике, заметил что при вызове calloc массив при инициализации заполняется нулями.
212 2610353
>>610317
А под юзвером ты имеешь ввиду обычного пользователя программы ?
213 2610505
>>610168
И что ты мне это подсовываешь, шиз? Таблетки надо было принимать твоей мамашке, когда она была тобою беременна, так бы, возможно, у мира было бы в распоряжении на одного дегенерата меньше.
Как ты это объяснишь, уёба:

>%c


>%d


?
214 2610514
>>609965

> Вот тебе ещё скрины из книги Столярова:


Это из какого тома/главы?
мне для себя интересно
215 2610535
>>610514
2-й том, где речь идёт про основы языка Си.
216 2610540
>>610304
многие оси сами затирают страницы нулями
217 2610572
>>610540
Да вроде только при первом запросе на выделение страниц процессом. В целях безопасности, чтобы данные из старого процесса не попали в хитрые лапки.
218 2610816
А что это за недоразумение в треде сверху? Я сначала стало быть подумал, что /b открыл, это ведь тред по си, где бан за нерилейтед?
219 2611376
>>611353 (Del)
Под каждое устройство, операционку и железо свои либи и api.
Мне кажется без asmа особо далеко не уйдешь на одном Си.

Вот пример написания драйвера (на Си, то что там C++ на смотри, просто по умолчанию в доке все примеры под плюсы пишутся, хотя там чисто сишный код) из документации Microsoft.

https://learn.microsoft.com/ru-ru/windows-hardware/drivers/gettingstarted/writing-a-very-small-kmdf--driver
220 2611460
>>611353 (Del)
наверное для начала надо определиться что за драйвер ты хочешь сделать и для чего
221 2611525
>>611353 (Del)
Изучи API операционки, под которую будешь писать драйвер.
Например, вот для Linux https://www.kernel.org/doc/html/v4.11/driver-api/index.html

Ещё нужно изучить собственно саму железку, для которой будешь писать драйвер (Datasheet) и интерфейс, к которому подключена железка, например, PCI, SPI и т.д.
Ну и общие принципы драйверописания (что такое IRQ, DMA, режим ядра, пространство ввода-вывода и т.д).
Знание ассемблера при написании скорее всего не понадобится, но бывает полезно при отладке.
222 2611638
>>611525

>Ну и общие принципы драйверописания


где про это можно почитать?
223 2611653
>>611638
Наверное проще всего найти какую-нибудь книгу по написанию драйверов, типа такой http://dmilvdv.narod.ru/Translate/LDD3/Linux_Device_Drivers_3_ru.pdf
Только эта книга 2005г, там версия ядра Linux 2.6.10.
Лучше найди что-нибудь похожее, но по новее.
Ещё пригодится https://wiki.osdev.org/Expanded_Main_Page
Ещё можешь найти на торрентах книги Гук М.Ю. по интерфейсам. Правда они тоже старые, но могут пригодится, поскольку интерфейсы не так быстро меняются.
изображение.png524 Кб, 640x479
224 2611676
>>611653
Спасибо анон.
шиндовс жопег.jpg101 Кб, 480x319
HeapAlloc vs malloc генрих_геев 225 2613582
HeapAlloc или malloc ?
Что лучше, и почему ?
226 2613749
>>613582
aligned_alloc
227 2613905
>>613582

>проприетарная параша или стандарт


Хм даже не знаю.
изображение.png1,1 Мб, 1280x720
228 2613927
>>613905
Я уже узнал, оказывается HeapAlloc лучше использовать при вызове из DLL, т.к. при вызове malloc из DLL нужно оттуда же вызывать free, иначе существует вероятность повредить данные выделенные в куче, а лучше всего, если пишешь под винду всегда использовать HepAlloc, и дело тут не в проприетарности, а в том что винда так устроена.
Но я пока что на этапе лишь изучения джедайских искусств, поэтому обхожусь статической линковкой без использования DLL и использую malloc (не смотря на частое использование методов WinAPI).
229 2613928
>>613905
Actually, malloc() (and other C runtime heap functions) are module dependant, which means that if you call malloc() in code from one module (i.e. a DLL), then you should call free() within code of the same module or you could suffer some pretty bad heap corruption (and this has been well documented). Using HeapAlloc() with GetProcessHeap() instead of malloc(), including overloading new and delete operators to make use of such, allow you to pass dynamically allocated objects between modules and not have to worry about memory corruption if memory is allocated in code of one module and freed in code of another module once the pointer to a block of memory has been passed across to an external module.

https://stackoverflow.com/questions/8224347/malloc-vs-heapalloc
230 2613931
>>613749

>aligned_alloc


Почитал про эту функцию, спасибо анон.
Надо бы это в дизассемблере посмотреть... но мне лень
Стикер512x512
231 2613948
>>613928

>DLL


>Проприетарная параша

232 2613998
233 2614410
Друзья подскажите если кто знает, как в сдл2 создать вейленд сюрфейс для вулкана? х11 все норм
234 2614454
>>614410

>сдл


какаято нинужная проприетарная парша
235 2614511
>>614454
БЛЯДЬ ИДИ НАХУЙ ПЕТУХ!!!!
Я ТЕБЕ УЖЕ ПИСАЛ, СУКА ТЕБЕ МАЛО БЫЛО ПЕТУШОНИКС ЕБУЧИЙ!!!?
РЕШИЛ ЧТО ТЫ ЛИНУКСОИД НО ТЫ НИХУЯ СКОРЕЕ ВСЕГО НЕ ЗНАЕШЬ ПРО ЛИНУКС, ТВОЙ УРОВЕНЬ ЭТО МАКСИМУМ UBUNTU СКАЧАТЬ ЧТОБЫ В ВК ПОСИДЕТЬ И РАССКАЗАТЬ ВСЕМ КАКОЙ ТЫ ОХУЕННЫЙ ЛИНУКСОИД, ИДИ К ЧЁРТУ СО СВОИМ ТУПЫМ ЖИРНЫМ ТРОЛЛИНГОМ, ПЕРЕСТАНЬ ПОРТИТЬ ТРЕД, ЛУЧШЕ ПОМОГИ АНОНУ, А ЕСЛИ НЕ МОЖЕШЬ ПОМОЧЬ, ТО ИДИ НА ХУЙ ИЗ ТРЕДА СУКА!!!
ЭТОТ ТРЕД СОЗДАН ДЛЯ ПОДДЕРЖКИ, ВЗАИМОПОМОЩИ ДРУГ ДРУГА В ТЕХНИЧЕСКИХ ВОПРОСАХ, А НЕ ДЛЯ ТУПОГО ТРОЛЛИНГА, ИДИ В /b/ БЛЯДЬ!!!
236 2614688
>>614511
...
>>614454

> >сдл


> какаято нинужная проприетарная парша


Это тролинг я надеюсь?
С сдлем пока лень разбираться, глфв нормально под вейленд работает.
изображение.png170 Кб, 427x320
237 2614707
>>614688

>...


Извини, видимо я тебя перепутал с другим аноном, думал это ты >>613948 опять пишешь, просто в этом треде был один петушоникс который доебывался до анонов и портил тред.
238 2614715
>>614511
Нормально тебя так разорвало.
изображение.png2,5 Мб, 1024x1024
239 2614746
>>614715
Да.

>>614688

>...


Ещё раз прошу прощения, просто это тематический тред, сильно раздражает когда много пишут всякие клоуны не в тему, и засоряют тред всяким мусором, а он и так еле живой.
Всё таки я рассматриваю это место как площадку, где аноны могут обмениваться технической информацией, давать полезные советы, делиться опытом, ссылками на статьи и литературу, помогать друг другу.
240 2615315
Анончики, здравствуйте.
На Ютубе есть некий Александр Григорин, продает свои курсы по программированию, подскажите, есть ли у него GitHub или типо того, просто хотелось бы посмотреть на его код-стайл или хотя бы уровень сложности кода, а то слова-то красивые подаёт, но смущает, что сидит на дваче, да и к тому же сидит на тупичке Гоблина и смотрит его до сих пор, да и прогоняет слишком популистские темы
241 2615320
>>615315
Если у него норм курс, то уже давно должен на рутрекере лежать бесплатно, там и посмотри.
242 2615342
>>615320
Меня больше ебет то, что он о себе говорит, какой-то он мутный и слишком выебистый, говорит, что участвовал в написании софта для китайских ледоколов и писал программы по типу CAD для графики, вот и интересует соответствует ли его гонор с его реальными заслугами
243 2615346
>>615320
А за совет спасибо, поищу, только боюсь, что на рутрекеры выкладывают проги со всякими malware
244 2615347
>>615346
не проги, а файлы*
быстрофикс
245 2615407
>>615346
Если сомневаешься в раздаче, скачай на линуксе или в виртуалку и глянь, что там. Хз, какой малварь может быть в раздаче с видеозаписями, максимум раржипег какой-нибудь, и то врядли.
246 2615613
>>615407
ВМ это часть диска в любом случае, вирус может и дальше распространиться

У меня просто на Винде стала командная строка появляться внезапно, боюсь как бы какой-то вирус или программу шифровальщик, или ещё хуже программа вор не закачал, проверял Malware bytes, ничего не нашло, из-за чего причина, как думаете, анончики
247 2615824
>>615613
Судя по всему люди разбили лбы себе из-за моих слов, прошу прощения, плохо разбираюсь
изображение.png405 Кб, 680x426
248 2615959
>>615613

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



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

Почитай ещё вот это будет полезно:

https://support.microsoft.com/ru-ru/topic/%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8-%D0%BF%D0%BE-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B5-%D0%B2%D0%B8%D1%80%D1%83%D1%81%D0%BE%D0%B2-enterprise-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0%D1%85-%D1%81-windows-%D0%B8%D0%BB%D0%B8-windows-server-kb822158-c067a732-f24a-9079-d240-3733e39b40bc
изображение.png238 Кб, 700x424
249 2615970
>>615613
Хак. группировки которые зарабатывают на шифровальщиках, интересуют в основном крупные акулы бизнеса, их задача, это в первую очередь взломать корпоративную сеть, скомпрометировать контроллер домена, удалить бэкапы, "выпустить своего монстра" чтобы зашифровать сеть, и выставить ценник на миллионы долларов, а обычные юзеры из RU их не интересуют, так что на счёт шифровальщиков расслабься.
250 2615975
>>615970
Там смищнее, они ищут партнеров, которые внедряют их малварь на найденные сочные цели за комисионные от выкупа, лол.
251 2615979
>>615975
Да знаю, просто не написал об этом.
252 2615982
>>615975
*смишнее
253 2615996
>>615959
Спасибо за совет и ссылочку, собственно Defender я не выключал, он у меня всегда стоит по дефолту, просто скачал малварьбайтс и сканирую иногда систему, а картинка сразу навеяла воспоминания о байках Мурка, где он рассказывал как его вызвал фотограф, чтобы закинуть денег на биткоин кошелек, чтобы получить ключ для расшифровки своих файлов
254 2616028
>>615315

>но смущает, что сидит на дваче,


Пруфы?
255 2616074
>>616028
Это догадки, косвенные доказательства есть
256 2616078
>>616074
Например?
По его фразам и приколам иногда прослеживается что-то битардское, но я думаю, что это отпечаток той интернет культуры, которая была в его молодости. Не обязательно, что он сейчас капчует.
257 2616119
>>616078
Типо в середине видео останавливается, и спрашивает:"Хуй будешь?", или представляется в начале на Японском: "хай-ме-ма-ши-тэ, ва-ТА-ши НО на-МА-е ва Александр Григорин де-су." ?
258 2616127
>>616124 (Del)
Анимешникам ?
Первые имиджборды родом из Японии.
259 2616352
>>615342

>для китайских ледоколов


Не, ну, если он писал такой софт, чтобы взламывать в киберпространстве какие-нибудь "Орасаки" или "Дойче Накасоне", то это, конечно, серьёзнейший тип и ему стоит верить и ему и его скилам. Это однозначно!
260 2616383
хуй знает где спросить. спрошу тут.
кто то пилить софт десктопный под гном линупсовый?
есть что путевое почитать по vala и gnome sdk gobjects ?
261 2616591
>>616352
Не, как я понял имелось ввиду буквально ледоколы.
Я сначала тоже про киберпук подумОл.
2023-02-19 17-40-56.mp4701 Кб, mp4,
1280x720, 0:20
262 2616656
Есть тут эксперты по QT?
Кто может подсказать, в чём сцуко проблема?
Почему такие охуевшие визуальные баги?
Линия должна по сути, просто связывать два прямоугольника, но она ведёт себя как ебанутая, когда начинаешь прямоугольники двигать.
263 2616661
>>616656
Так, извините - я тредом ошибся
264 2616688
>>616591
Угу, так и есть, он говорил вроде бы, что даже там на верфи был, не знаю, можно ли ему верить, так как никаких документов не показывал, а это настораживает
265 2616721
Красивое...

int len;
double vla[len]; //UB, понятно потому что len неопределено
printf("sizeof vla = %zu\n", sizeof vla);

int len = 0;
double vla[len]; //UB, хотя возможно есть расширение компилятора
printf("sizeof vla = %zu\n", sizeof vla);

int len = 100;
double vla[len]; //ну тут то все в порядке?
printf("sizeof vla = %zu\n", sizeof vla); //бабах - UB, evaluation of uninitialized vla

Еще красивое

int m = 10, n = 20;
double A[n][m];
int i = 0, j = 0;
printf("sizeof is %zu\n", sizeof A[++j][++i]);
printf("now j is %d, i is %d\n", j, i);
printf("sizeof is %zu\n", sizeof A[++j]);
printf("now j is %d\n", j); // what is printed here? 0, 1, or 2?
266 2616731
>>616721
// what is printed here? 0, 1, or 2?
Бонусный вопрос - что напечатает C? А что C++?
267 2616735
>>616731
С напишет нуль, а вот что С++ не знаю, я из cpp функцию printf не вызывал (но думаю тоже самое).
268 2616737
>>616731
И вообще, что за тупой вопрос, как там может быть 1 or 2 если там j со значением 0 ?
269 2616740
>>616731
А блин, я не туда посмотрел, извини, это я дурак.
270 2616752
>>616740
Не страшно, анончик, вопрос со звездочкой.
изображение.png209 Кб, 361x420
271 2616795
>>616752
Анон, ты настоящий Джокер.
Объясни пожалуйста, почему префиксный инкремент ++j,
сработал на printf("sizeof is %zu\n", sizeof A[++j]);, с другой стороны мы знаем что А - это указатель, значит можем привести к виду *(A+j=j+1), получается сначала срабатывает доступ к элементу, но лишь потом инкрементируется j т.е. как две последовательные операции, именно поэтому j увеличивается на 1 только после явного указания A[++j], я правильно понял ?
272 2616821
>>616795
>>616752

Хотя почему тогда ++i не увеличился... получается два инкремента перекрывают друг друга, и не дают правильно выполнить операции...
Нужно в дизассемблере посмотреть.
273 2616857
>>616821
Мне это будет сложно объяснить. Автор загадки пишет, что A[++j][++i] не срабатывает, потому что компилятор точно видит что там просто double (из double A[n][m];)
А sizeof A[++j] срабатывает, потому что компилятор видит тип VLA, double[*]
По видимому, фокус в том, что sizeof от VLA должен работать в рантайме, а не в компайл тайме...
niteboi - u..mp44,9 Мб, mp4,
640x360, 2:54
274 2616919
>>616857

>что sizeof от VLA должен работать в рантайме


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

Спасибо анон за VLA.
изображение.png185 Кб, 419x358
275 2616935
>>616857
Я тут ещё такую интересную статью нашёл:

https://habr.com/ru/post/681312/
276 2617204
>>616919
Если в куче, то вроде как можно просто calloc место malloc использовать.
А инициализация нулями в современных Сях пишется char arr[100] = {0}, но на VLA это почему то не работает.
277 2617410
>>614410
там вроде у вэйланда косяки, поэтому его не торопятся добавлять
https://www.opennet.ru/opennews/art.shtml?num=57038
278 2617412
>>614454

>сдл


> какаято нинужная проприетарная парша


открытая либа, повсеместный стандарт... а я смотрю ты в теме
279 2617434
А есть простая графическая библиотека для си? Кроссплатформенная. Куда не гляну - всё говно: sdl и аллегро тормознутые какие-то, и sdl даже круг нарисовать не умеет. Есть чё попроще? Для начинающего? Типа вот это фон, вот кружок нарисуй вот спиральку теперь очистки экран кроме фона. А не вызывай 20 функций для этого и мурыжь текстуры туда сюда обратно.
280 2617439
кто там из анонов выше спрашивал про выделение памяти, вот интересная статья как раз на эту тему
https://habr.com/ru/post/707032/
281 2617443
>>617434

> всё говно: sdl


это одна из самых быстрых кроссплатформенный и наиболее проработанных, которая используется везде от стима до UE

> даже круг нарисовать не умеет. Есть чё попроще? Для начинающего? Типа вот это фон, вот кружок нарисуй вот спиральку теперь очистки экран кроме фона. А не вызывай 20 функций для этого и мурыжь текстуры туда сюда обратно


а вот это, что ты описываешь, вместо мурыженья текстур - это как раз и есть говно и тормоза, сначала разберись в вопросе, а уже потом свое ценное мнение оставляй про скорость работы
для начинающих, кому скорость не нужна, а нужно просто рисование каких-то примитивов есть всякие либы надстройки, открываешь гугл и находишь любую понравившуюся
https://www.ferzkopp.net/Software/SDL2_gfx/Docs/html/index.html
только в современном мире в реальных приложения отрисовка на холсте старыми методами винды уже давно в прошлом, используют контекст рендера opengl, так и даже он уже последние года отсиживает и вытесняется вулканом с одной стороны и wgpu с другой

функций как нарисовать круг/спиральку на чистом SDL2 в гугле тоже вагон, просто копируй и используй, но новички видимо теперь даже в гугл не умеют
282 2617452
>>617412
Так и нахуя нужен этот юзлесс понос, когда для задач языка в 146% случаев хватает консоли?
283 2617463
>>617452
у вас там сегодня день открытых дверей или как?
человек спросил как создать surface для vulkan
ты что там на консоли собрался выводить, ascii-render ему предложишь как альтернативу?
284 2617545
>>617434
Winapi в помощь. Берешь канвас и рисуешь кружочки, пишешь текст и так далее что угодно.
285 2617755
Разработчики ядра тут?
286 2617756
>>617434
GTK на Си пишется
1655032803443.gif3,5 Мб, 525x446
287 2617955
>>617434
Рисовать кружочки - это на самом деле путь-ловушка. Поэтому на таких примитивах никто и не акцентируется. Тут лучше смотреть в сторону шейдеров.
288 2617960
>>617755
Да, ядра локалхоста.
289 2618175
>>617755
Тут.
290 2618178
>>617755
Туту ту туту ту ту ту ту ту тутутуту
291 2618386
>>617755
пописываем немножко
292 2618419
>>618386
>>618178
>>618175
модули ядра трудно писать?
293 2618581
>>618419
Извини анон, я >>618419 не разрабатываю ядро, это была шутка.
294 2618582
>>618581
блядь сука, хотел написать "я >>618178"
295 2618583
>>618582
Ты уже совсем ту-ту-ру со своими шутками.
296 2618600
>>618583
Ну нет не совсем ещё, я уважаю этот тред и он является для меня единственным и по настоящему ценным местом на дваче, ну ещё тред по ассемблеру, но его я пока что просто читаю.
297 2618619
>>618419
ты же понимаешь, что это все очень относительно, ну мне не трудно, Васе будет трудно
298 2618697
>>617955
Еба, скинь код, который это рисует, пожалуйста
1675694666909.png40 Кб, 990x578
299 2618717
>>618697
Ну это первый попавшийся их гугла был. Он под юнити, но его можно адаптировать под что угодно, наверное.
http://anthonieportfolio.nl/portalshader.html
Можешь тупо на shadertoy поискать portal.
300 2618842
>>618717
Блядский хлсл
301 2618935
Здарова, отцы.
Расскажите, существуют ли джуниоры Си девелоперы? Если да, то чем они занимаются? У меня вообще нет представления о том, что пишут на Си, только какие-то возможно устаревшие представления о каких-то заводах, микросхемах и т.д. Вообще, если кому не лень, поясните за Си в 2023 году, не конкретно в какой-то стране, а в целом, чем живёт.
302 2618948
>>618935
любые вычислительные либы под любые задачи, хоть для верчения на серваках сайтов, что потом только дергается js или еще чем
пишут под кучу портативных устройств в куче компаний, эти ваши умные часы и микроволновки
пишут для дронов...
много всего короче на любой вкус и цвет
303 2618963
>>618935

>Расскажите, существуют ли джуниоры Си девелоперы?


Ебать ну естественно! Они существуют потому что есть рынок и есть капитализм. Компания сама не заинтересована в обучении, учится - это твоя задача, а задача компании - делать деньги. Соответственно, недостаток опыта она всегда конвертирует в свою пользу. Компании выгодно найти дурачков, так называемых "джуниоров", которые будут пахать по 8 часов в сутки за 25 тысяч рублей в месяц. Тебя будут ебать по-всякому, продавливать на самую низкую зарплату, ниже дворника, при этом вешать обязанностей как на министра финансов. Короче, "джуниор" это синоним "дешёвого лоха".
304 2618971
>>618963
Без выебонов никак не смог, да? Так и чесалось съязвить.
305 2618976
>>618971
А чё не так-то? Хочешь сказать джуниор это не "дешёвый дурачок"?
306 2619097
>>618935
Честно говоря не представляю, под микроконтроллеры сейчас проще писать на c++
308 2619220
>>619108
Лол, это ведь почти сишный код, или мне кажется ?

мимо другой анон
309 2619222
>>619108
Ой млять, я опять невнимательно посмотрел, там ведь и C++ думал там всё на C++ написано.
Засиделся за компом...
310 2619223
>>619222
Я немного объебался со скриншотами
1 скрин - это как у него было на Си.
2 и 3 - а вот так стало на Си++ (удобное использование и всякие типы и контрль компилятора в либе).
При этом код сдулся в 3 раза, что должно по идее лучше сказаться на качестве.
По бинарникам получаемым тоже вроде все хорошо, нет какого то лютого оверхеда.
Не, правда, я без троллинга, я сам дед 40 лет, но когда я беру условную ардуинку, мне хочется писать надежно, а не как диды на Си писали... Но я на заводах не работал.
изображение.png99 Кб, 239x320
311 2619243
>>619223

>а не как диды на Си писали


То чувство, когда ты зумер который топит за Си (из-за того что был знаком с очень крутым инженером (больше 40 лет) который замотивировал серьезно изучить Си)) а тебе пишет дед про C++ называя дИдами тех кто пишет на Си. :)
312 2619329
>>619223

> хочется писать надежно


На контроллерах это не про С++. Особенно когда while(1){} это UB.
Да и большого количества абстракций стараются избегать. Можно, конечно, писать на Си с классами, но от того же сишного кода это будет мало отличаться. Поэтому в критических к надежности системах лучше на крестах не писать, а на них и не пишут.
Но поиграться с пердуинками или с stm32 на крестаэ прикольно, ради этого хотел бы вкатиться в кресты.
313 2619578
>>619329

>На контроллерах это не про С++.


> Поэтому в критических к надежности системах лучше на крестах не писать


Это очень устойчивый миф, который годами не могут развеять.

>. Особенно когда while(1){} это UB.


Страшилка уровня /pr.
while(true) { int const volatile x = 1; }
В Си тоже полно UB, это никого не останавливает.

>Да и большого количества абстракций стараются избегать.


В с++ много compile-time и zero-cost. Которые дают удобные и мощные абстракции на стороне программиста, которые превращаются в пару инструкций asm.
75859CB6-D191-4D97-8890-B05107F5EBDA.jpg30 Кб, 720x669
314 2619598
>>619223
Нууу 3000 строк тоже можно сжать используя макросы.
Главное же - в данном сишном коде легко модифицировать одну конкретную функцию, буде это понадобится, добавив любые безумные отступления от шаблона.
315 2619625
>>619598

>используя макросы.


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

>в данном сишном коде легко модифицировать одну конкретную функцию


Может можно, а может нельзя, ведь 99% случаях придется перелопачивать и остальные функции, потому что они были созданы методом копипасты, спасибо отсутствию перегрузок, и какую-то пропустить. Ведь про _Generic никто не знает, в книгах дидов его не было.
316 2619739
>>619578

> Это очень устойчивый миф, который годами не могут развеять


Ты тоже этого делать не собираешься, похоже. А я бы послушал. И я не пытаюсь доебаться ес что, просто все что я писал - было в основном под контроллеры, опыта в других областях почти нету. Но базовая программа на большом количестве контроллеров содержит бесконечный цикл. ОСРВ FreeRTOS буквально состоит из множества while(1){}, и как там что-то писать на крестах?

> В Си тоже полно UB, это никого не останавливает


Потому что о нём заранее знают, есть тот же embedded c coding standard. Писать надёжно в контексте контроллеров - это не про кресты.

> В с++ много compile-time и zero-cost. Которые дают удобные и мощные абстракции на стороне программиста, которые превращаются в пару инструкций asm


Здорово, только писать на Си с классами писать не всем удобно, да и хз как это вообще делать под некоторые контроллеры. Когда говоришь, что здорово писать на крестах под эмбедед, лучше уточни под какую конкретно железку ты пишешь.
Асло, вот тут чел интересно пишет про краткость кода https://250bpm.com/blog:4/ интересно сравнение без шизы и поливания говном одного языка, по сравнению с другим. Я сам пытаюсь вкатиться в кресты, но больно дохуя там надо знать. А ещё заметил, что почти любой вопрос по крестам скатывается в долгое обсуждение стандартов, которые подзаебывают, и учить их ебанешься кмк. Но это чисто субъективная херня.
317 2619764
Парни, что-то не могу нагуглить нужную инфу, а потому продолжаю тупить, потому прошу вашей помощи:

Ситуация следующая - есть строка, допустим "hello", получается, что в памяти эта строка выглядит как набор ячеек памяти (массив) определённого размера. Допустим, если мы эту строку занесли на языке ассемблера nasm в переменную txt размером db (байт), то получается, что переменная txt это набор из идущих друг за другом ячеек размером в байт, а каждый символ в этой строке это определённый набор нулей и единиц каждый в своей ячейке, т.е. первая ячейка в этом массиве будет выглядеть так 0110 1000 (код "h" из таблицы ascii), вторая ячейка 0110 0101 (код "е" из таблицы ascii), и т.д., и до тех пор, пока строка не закончится, правильно понимаю? А если, допустим мы выделим под переменную txt размер типа данных dw (два байта), то ячейки памяти с этой строкой будут выглядеть так - 0000 0000 0110 1000 (код "h" из таблицы ascii), 0000 0000 0110 0101 (код "е" из таблицы ascii)? Правильно понимаю? И получается, что общий размер строки "hello", если под неё выделяются ячейки размером байт (т.е. на языке ассемблера инструкцией db), составляет 5 байт?
image21 Кб, 473x270
318 2619782
>>619764
Размер строки 6 байт, так как в конце всегда 0.
Если выделишь 3 dw и скопируешь туда строку, то первое слово будет содержать 'e' : 'h'.
319 2619788
>>619764
Возьми дебаггер и посмотри, что в памяти лежит.
320 2619800
>>619782

>Размер строки 6 байт, так как в конце всегда 0.



Не, это, если строка представляется на языке Си, но, если ты кодишь на ассемблере, то 0 указывать не обязательно.

>Если выделишь 3 dw и скопируешь туда строку, то первое слово будет содержать 'e' : 'h'.



Мне хочется узнать именно как на уровне нулей и единиц представлена строка.

>>619788

Прикол в том, что он показывает, что инструкция, которая копирует строка в регистр занимает 8 байт, т.е. в независимости от типа данных или длины строки, он пишет, что инструкция занимает 8 байт. Мб, какой-нибудь дизассемблер сможет показать сколько именно ячеек памяти занимает строка, и как вообще выглядит она на уровне нулей и единиц, но я чёт не знаю какой дизассемблер поставить в линукс, который сможет показать именно на уровне нулей и единиц.
321 2619824
>>619800
Любой дебаггер умеет показывать память процесса, в этом суть дебаггера
322 2619835
>>619800

>Мне хочется узнать именно как на уровне нулей и единиц представлена строка.


Я открою тебе секрет, малыш.
echo -n hello|xxd -b
00000000: 01101000 01100101 01101100 01101100 01101111 hello
323 2619879
>>619824
Как это посмотреть на gdb? У него есть есть команды x/(набор параметров), но чёт они не выводят то что я хочу.

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

>>619836 (Del)

>Нет такого


Да, ладно, мб неправильно выразился, мб память представлена не "ячейками", а сплошным массивом нулей (свободная память), либо сплошным массивом нулей и единиц (занятая).

>нулевые байты после каждого символа


И этих нулевых байтов будет один, если dw; три если, dd; семь, если dq?
image38 Кб, 341x364
324 2619913
>>619879

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

325 2619921
>>619913
Да, всё, можешь больше не отвечать! Я прозрел и теперь понимаю, как организована память в компьютере и что значат эти ваши db, dw, dd, dq. Спасибо анонам, которые попытались подвести меня до ответа.
326 2620016
>>619739

>Ты тоже этого делать не собираешься, похоже. А я бы послушал.


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

>Но базовая программа на большом количестве контроллеров содержит бесконечный цикл. ОСРВ FreeRTOS буквально состоит из множества while(1){}, и как там что-то писать на крестах?


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

> Писать надёжно в контексте контроллеров - это не про кресты.


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

>только писать на Си с классами писать не всем удобно


А примеры не про Си с классами, а про например constexpr вычисления времени компиляции. Про то что это будет не приседание с || и && с магическими битами, а вменяемый АПИ, когда ты явно говоришь что включаешь. Грубо говоря разница между пик1 и пик2. (Это не идентичный код, просто первый попавшийся с гитхаба).

>лучше уточни под какую конкретно железку ты пишешь.


Сейчас ни под какие не пишу, только пишу либу под llvm-mos чтобы собирать под C64/NES эмули.
1557013276389.png16 Кб, 468x347
327 2620039
>>619764
Ради интереса могу посоветовать еще узнать как выглядит в памяти строка "helloµ死👋", и как это зависит от кодировки файла и кодировки терминала операционной системы.
328 2620042
>>619879
Байты и биты объясняются в первых главах учебников по информатике, да думаю и учебников по Си.
329 2620191
>>620039
Вот это интересно, анон, спасибо за совет - надо будет глянуть. UTF-8, пишут в педивикии, использует переменное кол-во байт, следовательно, я так понимаю строка в этой кодировке может быть не набором из однобайтных "ячеек", а смешанным набором из однобайтных и до 4-х байтных "ячеек". Только мне вот теперь стало интересно что за тип данных нужно указать в ассемблере, чтобы можно было работать с кодировкой UTF-8? Если указать dd, то это же может быть неэкономично?
330 2620246
>>620191
ну так utf-8 - это просто массив байт
331 2620290
>>620246
https://ru.wikipedia.org/wiki/UTF-8

>UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит») — распространённый стандарт кодирования символов, позволяющий более компактно хранить и передавать символы Юникода, используя переменное количество байт (от 1 до 4), и обеспечивающий полную обратную совместимость с 7-битной кодировкой ASCII. Стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D.



Анон, ты что-то путаешь.
332 2620307
>>620290
ну да, на каждый символ от 1 до 4 байт, соответственно строка - байтовый массив и будет, а это кодировка - как извлечь конкретный символ
333 2620318
>>620246
>>620191

Любая строка это массив байтов, просто зависит от того, где они и как будут обрабатываться.
Суть в том, что Юникод являющийся современным стандартом, включает в себя знаки почти всех письменных языков мира, более того, практически все (или боьшинство) языков можно закодировать при помощи двух байтов, в Шиндовс для этого существует псевдотип wchar_t но на самом деле он является макросом для short unsigned int (между ними нет отличий), в тоже время существуют различные инкарнации ANSI (KOI-8, CP-1251, 1252 (256 символов, 8 бит) ) из которых 0 до 127 - изначальные символы ASCII, которыми как рыз ты и пользуешься при вводе английского текста.

Как ты можешь догадаться, всё что нам нужно, это уметь преобразовывать "широкие" байты (wchar, или short unsigned int) в последовательность обычных байтов, и обратно для того что бы мы могли манипулировать ими.
Например ?
Нужно написать утилиту, которая будет запрашивать в консоли название файла на русских символах (или испанских, хоть японских) после чего программа должна будет прочитать, содержимое файла а потом например перевернуть данные и записать в другой файл, но суть в том что ты не можешь просто так работать с Юникодом как с обычным ANSI (ASCII), т.к. каждый символ на самом деле кодируется двумя байтами, и просто изменив последовательность, ты получишь ошибку.

Для того чтобы этого не возникло, существуют методы, которые позволяют преобразовывать кодировку из ANSI в Юникоде и наоборот из Юникода в Анси.

MultiByteToWideChar (преобразует ANSI в Юникод (двухбайтовую строку, т.е. каждый символ два байта)) и WideCharToMultiByte (преобразует Юникод в ANSI (мультибайтовую строку, т.е. в 8-битную последовательность байтов))
334 2620323
>>620318
Вот пример такой программы (чисто для примера):

//gcc -g prog2.c -o prog2
#include <stdio.h>
#include <tchar.h>
#include <wchar.h>
#include <windows.h>

unsigned long get_string(
short unsigned int stn, //массив куда передастся мультибайтовая строка
const size_t BUFFER_SIZE, //размер буфера (256)
TCHAR
messg); //сообщение для вывода в консоли

int ReadData(char read_data, short unsigned int file_name);
int WriteData(char write_data, short unsigned int file_name);
int ReverseStringW(short unsigned int rev_data);
int StringReverseA(char
pMultiByteStr, unsigned long cchLength);
//объявим и инициализируем новую структуру
//в поле field структуры SaveStrings
//запишем в её поле field строку
typedef struct SaveStrings{
char field[1024];
}SaveStrings;

//ГЛАВНАЯ ВЕТКА ПРОГРАММЫ
int main(void){
SetConsoleOutputCP(CP_UTF8);
SetConsoleCP(CP_UTF8);
//массив в который будет записано название файла
short unsigned int wstr = (short unsigned int)calloc(255, sizeof(short unsigned int));
//char read_data[1024]={0};//массив в который запишутся данные из файла
SaveStrings
saveobj = (SaveStrings)malloc(sizeof(struct SaveStrings));
memset(saveobj->field, 0, sizeof(saveobj->field));
//получим название файла, запишем имя в wstr
unsigned long readble = get_string(wstr, 255, "Название файла: ");
//объявим массив copy длиной wstr+2
short unsigned int file_name[255]={0};
//скопируем часть массива wstr, на два символа меньше
wmemcpy(file_name, wstr, (wcslen(wstr)-2));
//прочитаем данные из файла в буфер saveobj->field
//в виде обычного набора байтов в char-массиве (МультиБайтовая Строка)
ReadData(saveobj->field, file_name);
//Перевернем мультибайтовую строку.
StringReverseA(saveobj->field, strlen(saveobj->field));
//Запишем перевернутые данные в другой файл
WriteData(saveobj->field, L"reverse_output.txt");
}

int WriteData(char
write_data, short unsigned int file_name){
//t - число прочитанных данных
unsigned long t;

//Дескриптор файла
//для записи данных
HANDLE hFile = CreateFileW(
file_name, // имя файла
GENERIC_WRITE, // режим доступа
0, // совместный доступ
NULL, // SD (дескр. защиты)
CREATE_ALWAYS, // как действовать (Открыть существующий)
FILE_ATTRIBUTE_NORMAL, // атрибуты файла
NULL); // дескр.шаблона файла

WriteFile(
hFile, // дескриптор файла
write_data, // буфер данных
strlen(write_data), // число байтов для записи
&t, // число записанных байтов
NULL ); // асинхронный буфер

return 1;

}

int ReadData(char
read_data, short unsigned int file_name){
//n - буфер данных
//t - число прочитанных данных
unsigned long n, t;

//Дескриптор файла
//для чтения данных
HANDLE hFile = CreateFileW(
file_name, // имя файла
GENERIC_READ, // режим доступа
FILE_SHARE_READ, // совместный доступ [Разрешено Чтение]
NULL, // SD (дескр. защиты)
OPEN_EXISTING, // как действовать (Открыть существующий)
FILE_ATTRIBUTE_NORMAL, // атрибуты файла
NULL); // дескр.шаблона файла

if (INVALID_HANDLE_VALUE == hFile){
_tprintf(_TEXT("\nError: INVALID_HANDLE_VALUE\n"));
return 0; }

do{
ReadFile(
hFile, //дескриптор файла
read_data, //буфер данных
1024, //размер записыаемых данных
&t, //колличество прочитанных данных
NULL); //асинхронный буфер

}while(t);

//закроем дескриптор на чтение файла
CloseHandle(hFile);

return 1;
}

int StringReverseA(char
pMultiByteStr, unsigned long cchLength)
{
short unsigned int pWideCharStr;
int LenOfWideCharStr;
int fok=0;

//вычисляем колличество символов, необхоимых
//для хранения широкосимвольной версии строки.
LenOfWideCharStr = MultiByteToWideChar(
CP_UTF8, 0, pMultiByteStr, cchLength, NULL, 0
);

pWideCharStr = (short unsigned int
)calloc(LenOfWideCharStr, sizeof(short unsigned int));

if (pWideCharStr==NULL){
return fok; }

//преобразуем мультибайтовую строку в широкосимвольную
MultiByteToWideChar(
CP_UTF8, 0, pMultiByteStr, cchLength, pWideCharStr, LenOfWideCharStr
);

//Вызываем широкосимвольную версию этой функции
//для выполнения настоящей работы
fok = ReverseStringW(pWideCharStr);

if (fok){
//преобразуем широкосимвольную строку
//обратно в мультибайтовую, т.е. просто последовательность байт
WideCharToMultiByte(
CP_UTF8, 0, pWideCharStr, cchLength, pMultiByteStr,
(int)strlen(pMultiByteStr), NULL, NULL); }

}

//Метод переворачивает набор байтов, изменяя их последовательность.
//Алгоритм говно, но я решил не париться.
int ReverseStringW(short unsigned int rev_data){

short unsigned int rev_string[1024]={0};
wmemcpy(rev_string, rev_data, wcslen(rev_data));
wmemset(rev_data, 0, sizeof(short unsigned int));
int lnstr = wcslen(rev_string)-1;

for(int i=0; (lnstr-i)!=-1; i++){
rev_data=rev_string[lnstr-i];
}

return 1;
}

//Метод просит ввести строку в консоли
unsigned long get_string(short unsigned int
stn, const size_t BUFFER_SIZE, TCHAR* messg)
{
unsigned long read;
HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
_tprintf(_TEXT("%s"), messg);

if (ReadConsoleW(handle_in, stn, BUFFER_SIZE, &read, NULL) == 0)
{
printf("\nError: %ld", GetLastError());
return 0;
}

return read;

}
334 2620323
>>620318
Вот пример такой программы (чисто для примера):

//gcc -g prog2.c -o prog2
#include <stdio.h>
#include <tchar.h>
#include <wchar.h>
#include <windows.h>

unsigned long get_string(
short unsigned int stn, //массив куда передастся мультибайтовая строка
const size_t BUFFER_SIZE, //размер буфера (256)
TCHAR
messg); //сообщение для вывода в консоли

int ReadData(char read_data, short unsigned int file_name);
int WriteData(char write_data, short unsigned int file_name);
int ReverseStringW(short unsigned int rev_data);
int StringReverseA(char
pMultiByteStr, unsigned long cchLength);
//объявим и инициализируем новую структуру
//в поле field структуры SaveStrings
//запишем в её поле field строку
typedef struct SaveStrings{
char field[1024];
}SaveStrings;

//ГЛАВНАЯ ВЕТКА ПРОГРАММЫ
int main(void){
SetConsoleOutputCP(CP_UTF8);
SetConsoleCP(CP_UTF8);
//массив в который будет записано название файла
short unsigned int wstr = (short unsigned int)calloc(255, sizeof(short unsigned int));
//char read_data[1024]={0};//массив в который запишутся данные из файла
SaveStrings
saveobj = (SaveStrings)malloc(sizeof(struct SaveStrings));
memset(saveobj->field, 0, sizeof(saveobj->field));
//получим название файла, запишем имя в wstr
unsigned long readble = get_string(wstr, 255, "Название файла: ");
//объявим массив copy длиной wstr+2
short unsigned int file_name[255]={0};
//скопируем часть массива wstr, на два символа меньше
wmemcpy(file_name, wstr, (wcslen(wstr)-2));
//прочитаем данные из файла в буфер saveobj->field
//в виде обычного набора байтов в char-массиве (МультиБайтовая Строка)
ReadData(saveobj->field, file_name);
//Перевернем мультибайтовую строку.
StringReverseA(saveobj->field, strlen(saveobj->field));
//Запишем перевернутые данные в другой файл
WriteData(saveobj->field, L"reverse_output.txt");
}

int WriteData(char
write_data, short unsigned int file_name){
//t - число прочитанных данных
unsigned long t;

//Дескриптор файла
//для записи данных
HANDLE hFile = CreateFileW(
file_name, // имя файла
GENERIC_WRITE, // режим доступа
0, // совместный доступ
NULL, // SD (дескр. защиты)
CREATE_ALWAYS, // как действовать (Открыть существующий)
FILE_ATTRIBUTE_NORMAL, // атрибуты файла
NULL); // дескр.шаблона файла

WriteFile(
hFile, // дескриптор файла
write_data, // буфер данных
strlen(write_data), // число байтов для записи
&t, // число записанных байтов
NULL ); // асинхронный буфер

return 1;

}

int ReadData(char
read_data, short unsigned int file_name){
//n - буфер данных
//t - число прочитанных данных
unsigned long n, t;

//Дескриптор файла
//для чтения данных
HANDLE hFile = CreateFileW(
file_name, // имя файла
GENERIC_READ, // режим доступа
FILE_SHARE_READ, // совместный доступ [Разрешено Чтение]
NULL, // SD (дескр. защиты)
OPEN_EXISTING, // как действовать (Открыть существующий)
FILE_ATTRIBUTE_NORMAL, // атрибуты файла
NULL); // дескр.шаблона файла

if (INVALID_HANDLE_VALUE == hFile){
_tprintf(_TEXT("\nError: INVALID_HANDLE_VALUE\n"));
return 0; }

do{
ReadFile(
hFile, //дескриптор файла
read_data, //буфер данных
1024, //размер записыаемых данных
&t, //колличество прочитанных данных
NULL); //асинхронный буфер

}while(t);

//закроем дескриптор на чтение файла
CloseHandle(hFile);

return 1;
}

int StringReverseA(char
pMultiByteStr, unsigned long cchLength)
{
short unsigned int pWideCharStr;
int LenOfWideCharStr;
int fok=0;

//вычисляем колличество символов, необхоимых
//для хранения широкосимвольной версии строки.
LenOfWideCharStr = MultiByteToWideChar(
CP_UTF8, 0, pMultiByteStr, cchLength, NULL, 0
);

pWideCharStr = (short unsigned int
)calloc(LenOfWideCharStr, sizeof(short unsigned int));

if (pWideCharStr==NULL){
return fok; }

//преобразуем мультибайтовую строку в широкосимвольную
MultiByteToWideChar(
CP_UTF8, 0, pMultiByteStr, cchLength, pWideCharStr, LenOfWideCharStr
);

//Вызываем широкосимвольную версию этой функции
//для выполнения настоящей работы
fok = ReverseStringW(pWideCharStr);

if (fok){
//преобразуем широкосимвольную строку
//обратно в мультибайтовую, т.е. просто последовательность байт
WideCharToMultiByte(
CP_UTF8, 0, pWideCharStr, cchLength, pMultiByteStr,
(int)strlen(pMultiByteStr), NULL, NULL); }

}

//Метод переворачивает набор байтов, изменяя их последовательность.
//Алгоритм говно, но я решил не париться.
int ReverseStringW(short unsigned int rev_data){

short unsigned int rev_string[1024]={0};
wmemcpy(rev_string, rev_data, wcslen(rev_data));
wmemset(rev_data, 0, sizeof(short unsigned int));
int lnstr = wcslen(rev_string)-1;

for(int i=0; (lnstr-i)!=-1; i++){
rev_data=rev_string[lnstr-i];
}

return 1;
}

//Метод просит ввести строку в консоли
unsigned long get_string(short unsigned int
stn, const size_t BUFFER_SIZE, TCHAR* messg)
{
unsigned long read;
HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
_tprintf(_TEXT("%s"), messg);

if (ReadConsoleW(handle_in, stn, BUFFER_SIZE, &read, NULL) == 0)
{
printf("\nError: %ld", GetLastError());
return 0;
}

return read;

}
335 2620325
>>620246
>>620191
Кстати, если вас интересует программирование на Cи в среде Windows, рекомендую книгу:

Рихтер Дж., Назар К. - Windows via C C++. Программирование на языке Visual C++ - 2009
336 2620330
>>620318
Двух байтовый юникод - это UCS-2 (UTF-16), UTF-8 совсем по другому работает, это последовательности от 1 до 4 байт, и таких преобразований ты не провернешь.
Алсо в юникоде вообще не любят когда их называют "символами" или "буквами", потому что там "глифы", потому что там есть комбинированные символы. Например, á может храниться как "◌́" + "a", то есть уже strlen() или strchr() нетривиальные, потому что они возвращают размер в байтах, а не в символах, вроде бы.
337 2620332
>>620330

>Двух байтовый юникод - это UCS-2 (UTF-16), UTF-8 совсем по другому работает, это последовательности от 1 до 4 байт, и таких преобразований ты не провернешь.



Согласен, спасибо что поправил, речь шла именно про двухбайтовый Юникод (он же UTF-16) который используется в Шиндовс для кодировки "широких символов".

>>620330

> "◌́" + "a"


>>620330

> то есть уже strlen() или strchr() нетривиальные, потому что они возвращают размер в байтах, а не в символах, вроде бы.



Знаю, хотел написать пример широких символов (строки в Юникоде) и в ANSI в gdb но мне чёт лень...
Вместо strlen() есть wcslen() и другие аналогичные методы с приставкой W для обрадотки "широких байтов".
338 2620333
>>620330
Вот >>620323 я небольшой пример программы написал.
1585890074489.png22 Кб, 500x170
339 2620335
>>620332
Дело не в wcslen, а в том, что "символ" даже в двухбайтной может занимать несколько двухбайтов. Например, состоять из 5, как на пике.
340 2620336
>>620330
Понял анон, спасибо за информацию.
А можно об этом в какой-нибудь книге по системному программированию прочитать, потому что я в последнее время читал только вот это >>620325

(Мне хочется именно по программированию, т.к. я всегда люблю совмещать теорию и практику вместе.)
341 2620337
342 2620340
>>620335
А хотя, ты же про UTF-8, про это я знаю, ещё в документации читал... но особо сильно не интересовался.
1649177872700.png148 Кб, 900x400
343 2620341
>>620340
Нет, это везде. Посмотри на коды на картинке, они двухбайтовые. Глиф собирается из буквы a и значков.
Про книги не знаю, не читал, знаю только что есть C/C++/Java либа ICU. Она по идее идет с функциями преобразований какими-то и базами данных символов.
1604144275981.png17 Кб, 699x221
344 2620342
>>620340
А UTF-8 больше на Huffman code из zip похож - там чем чаще символ, тем он короче, а длинные кодируются единичками в старших битах.
Nohzdyve The Tuckersoft ZX Spectrum Game from Black Mirror Bandersnatch.mp48,5 Мб, mp4,
640x360, 2:27
345 2620343
>>620341
>>620342
Понял анон, спасибо большое что поправил меня.
изображение.png612 Кб, 1000x799
346 2620348
>>620341
>>620342
Вот за это я и люблю этот тред, тут появляются умные аноны вроде тебя, поправляют и рассказывают что-то интересное, ещё раз спасибо.
347 2620406
>>620016
Я не на столько продвинуть как ты, анон. Поэтому элементарно не понимаю, как можно для, например моих микрух использовать С++. Да и во всех гайдах, по которым я учился, использовался Си. Хз короче, пытаюсь вкатиться по учебнику Праты потихоньку, но объем знаний слишком большой, а ведь помимо этого надо ещё и саму архитектуру конкретной микрух хорошо знать.
348 2621203
Как в GCC называется опция оптимизатора, которая для переменных из разных блоков кода не выделяет новую ячейку стека, а использует уже существующую? Например такой код:
```
int main(void)
{

{
int x;
SetX(&x);
}
{
int y;
SetY(&y);
}
}
```
С этой опцией у переменных x и y будут одинаковые адреса.
Как называется эта опция?
349 2621205
>>621203
это называется указателеи
350 2621225
>>621205
И какую же опцию передать в GCC, чтобы указатели были одинаковыми?
16422874621390.jpg67 Кб, 595x680
352 2621429
Сижу 10 лет на 1се, по выходных подрачиваю кресты для души.

На с++ сложно деньги зарабатывать? Вакансии вообще есть? Платят деньгами или ссаными тряпками?
353 2621655
>>621203
Я думал это по умолчанию так, ведь ты новый скоуп открываешь. К локальной переменной же все равно нельзя обращаться после окончания ее лайфтайма, это UB. А опция наоборот существует чтобы отключать эту оптимизацию, для устаревших программ написаных кое-как.
354 2621656
>>621429
Сложно. Тряпками. Вакансии и сам мог бы глянуть. С++ отдельный тред есть кстати.
image.png545 Кб, 960x768
355 2621946
>>599695 (OP)
Почему не в шапке?
356 2622020
>>621946
си шарп дитя корпорастов
357 2622149
>>621946
А где 1С?
358 2622738
Все, тред сегфолтнулся?
359 2622850
>>622738
выходные, праздники, отдыхаем
360 2623363
нахуй cmake нужен? Почему нельзя использовать gcc просто
361 2623475
>>623363
cmake делает по описанию makefile или .sln или что то еще платформенное. Потом оно собирается.
Без него ты должен каждый раз ручками где-то править аргументы компилятора - релизная или дебаг сборка, целевая платформа, и т.д.
image164 Кб, 701x1069
362 2623712
В C++ треде видимо всем похуй на расход памяти, спрошу тут.
Пишу под arduino, пытаюсь в C строки, потому что родной String выжирает очень много памяти.
Написал функцию, которая принимает сообщения от сервера и парсит.

>topic = "building_a/room_123/switch/light_left"


>payload = "on"


Оно разбивает на

>room = "room123"


>cmd = "switch"


>sw = "light_left"


И передаёт дальше.
Я всё правильно пишу? Так и надо?
363 2623735
>>623712
Нет, все совсем не так, мне сейчас правда некогда пояснять, ну смотри ты начинаешь с копирования массива byte в массив char - зачем? Потом еще sprintf, а перед ним еще и strlen который пробежит всю строку. Потом ты еще раз копируешь все в массивы (хотя strcpy бы возможно соптимизировался быстрее). Не удивлюсь если ты еще и по значению копируешь массивы в process_msg.
Думаю C-way было бы просто один раз скопировать топик, заменяя / на \0 и передать указатели на первые буквы слов, и занимало бы это раз в 5 меньше кода.
364 2623755
>>623712
А вообще, если ты пишешь только обработчик, который с этими строками ничего не делает, то наверное еще более Си-way было бы написать конечный автомат (возможно создать его генератором кода) который вообще ничего не копирует.
Ну типа смотрит сдедующий символ, если это / то переключается на следующий анализатор, если буква b, то ожидает следующую букву u, и так до _a, где он просто запишет в целую переменную результат - номер здания.
365 2623779
Как сделать указатель на структуру доступным в нескольких .c файлах?

https://pastebin.com/9PYP3wSN

Пробовал создать заголовочный файл и подключить его в нужных
.c файлах, объявив в нём указатель как extern esp_modem_dce_t dce; , а в .с файлах просто как esp_modem_dce_t *dce;

Проект сорался без ошибок, но в реале крашится.
Скорее всего я чего-то не понимаю, поэтому объяснил как мог. Сорян.
366 2623782
>>623779
А ты его инициализируешь? Просто если у тебя esp_modem_dce_t *dce; то там тупо мусор.
367 2623784
>>623779
ЕМНИП объявлен он должен быть везде, а определен только в одном .c файле.
368 2623825
>>623735

>ты начинаешь с копирования массива byte в массив char - зачем


Мне потом надо проверить payload == "on" например. Я в strcmp не могу передать byte, ему надо char.

>Потом еще sprintf, а перед ним еще и strlen который пробежит всю строку.


sprintf для вывода текста в консоль для дебага.
А без strlen я не узнаю длину строки. Она не передаётся для topic.

>один раз скопировать топик, заменяя / на \0 и передать указатели на первые буквы слов


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

>конечный автомат


Это какое-то нереальное кунгфу, о котором я пока ничего не знаю.
369 2623872
>>623825

>Я в strcmp не могу передать byte, ему надо char


Ты бы хоть типа данных загуглил... Там тебя ждёт сюрприз.
370 2624001
>>623872
Загуглил тип данных бул и понял, что мне порали в лицо.
371 2624042
>>624001
_Bool в C с 99 года.
372 2624087
>>623825
byte это скорее всего unsigned char, то есть скорее всего можно передавать.

>sprintf для вывода текста в консоль для дебага.


>А без strlen я не узнаю длину строки. Она не передаётся для topic.


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

>Правда не факт, что MQTT либа, которая мой коллбек вызывает, переживёт то, что я ей строку в памяти поменял, которую она мне передала


Не переживет, потому что там const char. Поэтому я написал что ее один раз скопировать все же придется.

>конечный автомат


Ну это довольно простая концепция так то. Если ты в состоянии state1 и пришел нужный символ ch, то перейти в состояние state2, а если нет - то или ошибка, или что-то другое началось.
373 2624089
>>624074 (Del)
Он битовый чар ¯\_(ツ)_/¯
Не меньше чара занимает, да. Если хочешь битовый, надо ебаться самому (но я не помню где не надо, в Zig вроде бы)
374 2624092
>>624074 (Del)
Алсо он чар потому, что у каждого элемента массива булов все равно должен быть уникальный адрес для указателей, а дробные адреса не завезли.
375 2624124
>>624087

> ардуиновский String жрет, но не думаю что он жрет больше чем у тебя тут


Он прям в разы должен меньше жрать. Потому что каждый String+String то ли новый String создавал, то ли менял размер буффера и в моих

>"MQTT recv(" + topic + "): " + payload;


несколько раз пересоздавался буффер внтури, фрагментируя память.
Но именно тут это херня. Посмотри пик 1. Именно этот код крашил мне микруху. Причём не каждый раз. Причём там всё зависело от таймингов. Если добавить где-нибудь delay(5) то крашить переставало, либо наоборот ещё чаще начинало.
Слишком много плюсов было.
А стало пик 2. Память выделяется 1 раз при запуске и дальше пишется в неё весь лог, смещая старый текст. Краши пропали. Хотя из-за таймингов не факт, может просто везёт.

>ты же можешь напечатать debug сначала одну строку


Там не только вывод в консоль, она там ещё в MQTT отправляет сообщения и для вебсервера их откладывает.

>ее один раз скопировать все же придется


Ну я в принципе своей конвертацией в char* это и делаю.

А вообще я понял, что я только в начале изучения всякого этого C образного. Там ещё столько всего есть оказывается.
image.png128 Кб, 1128x1254
376 2624129
Скажите пожалуйста, почему если тип short занимает 2 байта, а тип double 8, то после компиляции при прибавлении единицы мне выводится в типе double сначала +8 байтов, а затем +2 байта? как такое возможно?

компилятор gcc
377 2624137
>>624124
Я про то, что можно сделать debug("topic="); debug(topic); debug("buffer="); debug(buffer);
Ну иногда не до красивостей.
378 2624141
>>624129
Почему ты решил что "затем +2 байта"? Первый указатель растет на 2, второй - на 8. Ты пользуешься арифметикой указателей, увеличивая его на 1 "шаг типа".
379 2624145
>>624141
оказывается у меня проблемы с переводом из 16 ричной в 10, вопрос исчерпан, всё верно получается...
380 2624146
>>624145
А, да, я подумал но не написал. Там же круглые цифры, на 0 заканчиваются. Это 16, да.
1639464412051.webm13,6 Мб, webm,
1920x1080, 3:35
381 2624204
>>623825

>>конечный автомат


>Это какое-то нереальное кунгфу, о котором я пока ничего не знаю.

382 2624929
>>623712
Убери динамический массив, сволоч. Из-за таких как ты все!!!
383 2624951
>>624042

> _Bool


Не нужен с таким именем.
1667961343737.png59 Кб, 990x384
384 2624987
>>624951
Все новые кейворды в Си вводятся в виде _Name, чтобы у дидов которые надефайнили не отвалилось.

Остальные могут явно подключить #include <stdbool.h>
и писать
bool variable = true;
385 2624999
>>624987
Теоретически лет через 10 когда все перейдут, можно переделать в кейворд, а потом через 20 лет переходного периода _Bool задепрекейтить.
386 2625007
В конце концов, nullptr же введут в C23.
https://en.wikipedia.org/wiki/C2x
Алсо int foo() теперь будет означать int foo(void).
387 2625251
Когда я делаю malloc(), я могу получить nullptr если не хватает памяти.
А когда я делаю "char str[xxx]", я как должен понять, что памяти нет?
388 2625368
>>625251

> они начинают догадываться

389 2625413
>>625251
Тебе сегфолт прилетит.
390 2625420
>>625368
Хоспаде, какие же кожаные мешки бесполезные.
Память оказывается в стеке выделяется. Я не знал.
391 2625427
>>625420
Тебе написали, что для динамических массивов надо использовать malloc только на три абзаца.
392 2625445
>>625420
И нахуй тогда этот тред нужен?
393 2625454
>>625445
Чтобы угорать с додика, пишущего под винду, бесконечно сраться по какому-нибудь UB, типа i++ и мечтать о перекате в С++.
394 2625554
>>625420
>>625251
Си тред. 2023. Итоги.
395 2625890
>>625251

>доктор, когда я так делаю, больно


Не делай так. Стек не для выделения больших объемов.
396 2625892
>>625420
Ну вообще то еще есть alloca. А еще есть VLA.
397 2626252
Сап, програмач
Джавист, 3 года опыта (банк), писал в основном на спринге (rest + бекенд для личных кабинетов)
Сейчас предлагают на работе новый проект: программировать под Java Card
Кто имел опыт? Или это болото и лучше туда не лезть?
398 2626287
>>626252

> Сейчас предлагают на работе новый проект: программировать под Java Card


> Кто имел опыт? Или это болото и лучше туда не лезть?


Это охуенно. Как МК, только пишешь на урезанной яве. Никакой периферии, только апи. Тройной дэс, ух бля.
399 2626305
>>626252

>Java Card


Лучшее, что изобрело челов-ство.
400 2627024
Здравствуйте, анончики, учусь в ВУЗе и зашел вопрос о требованиях к джунам, сам в дискуссии не участвовал, одни говорили, что в резюме лучше не врать, ибо мир тесен, разнесут остальным, что ты врунишка, другие говорят, что эти требования как в макросах смехуечков -- "опыт разработки __ года для джуна", так сказать фильтр для тупых, ибо все понимают, что у джуна, ну, максимум год может быть

Извините, что немного не по теме Си
401 2627175
>>627024
что сказать то хотел?
402 2627177
>>627024
Если ты в JS, то ври конечно, а если в Си, то не ври. Тебя еще и служба безопасности проверит, это же будет оборонка или что то подобное.
403 2627183
>>627175
Где истина? Кто прав из двух сторон?
Explaining Meme Programming Languages.mp46,2 Мб, mp4,
1280x720, 0:28
генрих_геев 404 2627719
405 2630997

>RGBTRIPLE (image)[width] = calloc(height, width sizeof(RGBTRIPLE));



Поясните, аноны, зачем выделять под массив, в котором width элементов, память под height width элементов? И нахуя там круглые скобки в названии массива? В чем отличие от RGBTRIPLE image [width]?
406 2630999
Ебучая разметка, вместо знака умножения впердолился курсив
image.png48 Кб, 619x433
407 2631001
Пикрил, короче
408 2631028
Все, епта, понял, это так двумерный массив делается через указатель, ну и залупа. Почему нельзя просто сделать RGBTRIPPLE [height] [width]? Весь массив это просто указатель
409 2631087
>>631028

>Весь массив это просто указатель


В смысле нельзя ?
Тебе никто не запрещает сделать так в стеке.
410 2631435
>>631028
Потому что [height][width] это не двумерный массив, а массив массивов (а значит, массив указателей), иными словами они могут вести в разные места, а не быть последовательно в памяти, и доступ там через лишний указатель.
В c++23 есть Multidimensional subscript operator array[height, width], но в Си такого нет, кажется, даже через расширения.
Поэтому и делают по старинке, 1 плоский массив и доступ через i + j * width.
411 2631454
>>631435
Нихуясе прикол, я думал, что двумерный массив это и есть просто массив массивов. Понял, спасибо. Обращаться к i элементу первого массива, получается, тогда надо так: звездочка(m[0] + i звездочка sizeof(int))? Если массив из инт офк
412 2631489
скажите пожалуйста, я вот одно не понимаю, неужели все эти массивы применяют при разработке софта? какой код не посмотрю, там просто методы друг дёргают и либы всякие
413 2631504
>>631489
Ну так ты посмотри исходники какого-нибудь кодека или ядра ос.
414 2631514
>>631489
Попробуй парсер для .bmp написать и через условный OpenGL на экран картинку вывести. Вот и узнаешь зачем динамические массивы нужны.

>>631028
???
После выделения памяти под двумерный массив в куче через calloc/malloc, ты можешь к элементам массива через A[j] обращаться(если ты массив массивов создаешь). Если по каким-то причинам тебя не устраивает массив массивов, то можно двумерный массив в одномерный запихнуть, тогда и будешь с голыми указвтелями ебаться.
415 2631523
>>631514

> A[j] [k]


Конечно же две скобки. Ебучая макака не может разметку для тематической доски сделать.
416 2631528
>>631454
>>631435

>Поэтому и делают по старинке, 1 плоский массив и доступ через i + j * width.



Апхахах да, это Си, я уже привык.
Осталось плюсы выучить, но они мне пока не нужны.
Муд.mp44,1 Мб, mp4,
1920x1080, 0:03
генрих_геев 417 2632212
Привет аноны.
Можете пожалуйста объяснить, какие опции передаются параметру -Wl,... через запятую, его использует линковщик на этапе сборки, и как я понимаю его также нужно использовать для того чтобы указать путь до импорта динамической библиотеки, помимо параметра -L.

-Wl,<options> Pass comma-separated <options> on to the linker.

Как вообще правильно слинковать свою программу с динамической библиотекой в Windows, используя gcc ?
Top Sigma Males Grindset..mp415,7 Мб, mp4,
1280x720, 1:22
генрих_геев 418 2632221
А всё, я туплю.
-Wl это параметр для дополнительных опций линковщика, как например поиск нужной dll для работы программы.
Тогда возникает другой вопрос, как правильно указать в опции -Wl путь для поиска динамических библиотек ?
419 2632424
Как визуализировать аудиопоток как в эквалайзерах?
420 2632479
>>632424
Ну посмотреть что там в файле, изучить формат.
У всех аудиоформатов (тут к гадалке не ходи) будет какой-то единый интерфейс, типа
время @ частота @ громкость
Ну и дальше понятно
421 2634464
Когда-то был сайт, где можно было вбить сложный сишный код с указателями, и тебе их расшифровывало - где указатель, а где дереференсинг указателя, и т.д.

Не напомните?
422 2634466
>>634464
Ладно, я аутист немножко.
Зато зацените какой я ещё онлайн тул знаю.

https://pythontutor.com/visualize.html#mode=display
423 2634690
>>634466
чо за хуйня? чем printf(...) не устраивает...
наплодили ебланов которые не понимают как работает память
424 2634709
>>634690
Ето пример - демонстрация работы указателя на функцию.
425 2634711
Ткните ебалом в тред, где для слабых умом, рассказывают как настроить окружение, Эклипс там, или DS-5, для работы с определенным камнем?
426 2634713
>>634711
Надо писать код в блокноте
427 2634716
>>634713
А дальше? Ручками переводить в машинные коды?
428 2634736
>>634716
Скачай интерпритатор или компилятор, на чем ты там кодишь, хотя судя по тому, что в треде про Си, то компилятор. Скачай MinGW, если на Винде, или gcc, если на Linux, там это через терминал можно сделать
429 2634738
>>634711
Пиши код в SublimeTxT, там даже можно компилить код, если в PATH прописан путь до компилятора
430 2634785
>>634736
>>634738
Я вроде по русски спросил про Эклипс? Зачем вы меня грузите? Я купил на торрентах DS-5 от самого ARM, только не разберусь как настроить по определенный камень.
431 2634790
>>634785
ПС. Вы же в курсе, что на С можно ваять под разнообразные контроллеры/SoC? А не только под х86?
432 2634835
>>634790
Если не можешь осилить текстовый редактор, программирование не осилишь тем более, это фильтр от даунов.
433 2634878
>>634711
я всё в gnu emacs пишу
434 2634910
>>634790
Как нахуй разница, если все на ассемблер переводится, а ассемблер на язык машинных команд?inb4: да знаю я, что есть разные версии ассемблера, не души, ты понял, что имел в виду
435 2634918
>>634878
Помню приглашенный гость из Варгейминга, на писал который писал, на интервью АйТи борода советовал его
436 2634971
>>634835

>Если не можешь осилить текстовый редактор


Ты совсем дурачок? Причем тут текстовый редактор, если мне нужно компилить код под определенный контроллер?
437 2635017
>>634918
А что в флаге компиляции нельзя указать эту фичуэто не притензия, просто самому интересно?
438 2635020

>>263497


Бля, reply: >>634971
439 2635264
Анончики, как положить три байта из памяти в uint? Указателем офк
440 2635267
Аноны, помогите разобраться, почему код успешно компилируется и выполняется в pythontutor (gcc), а в godbolt ни в какую?
дрочу примеры из учебника

https://pythontutor.com/visualize.html#code=main%20%28%29%0A%7B%0Aint%20strlen%28%29,%20x%3B%0Achar%20a%5B10%5D%3B%0Astrcpy%28a,%22COMPUTER%22%29%3B%0Ax%20%3D%20scarp%28a,strlen%29%3B%0Aprintf%28%22%25d%5Cn%22,%20x%29%3B%0A%7D%0Aint%20scarp%28c,girl%29%0Achar%20c%3B%0Aint%20%28girl%29%28%20%29%3B%0A%7B%0Areturn%28%28*girl%29%28c%29%29%3B%0A%7D&cumulative=false&curInstr=8&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D&textReferences=false

https://godbolt.org/z/cqj6P1cjE
441 2635268
>>635267
Хз братан, у тебя какой-то странный синтаксис вообще. Это си или плюсы?
442 2635269
>>635268
Си, из книги 90х.
Это дрочево с указателем на функцию, можешь погонять по шагам в pythontutor.
443 2635271
>>635269
Я, видимо, слишком тупой для такого, половину строк в твоем коде вообще не понимаю. Че такое, например, intstrlen()? Что возвращает strlen без параметров и почему ты хочешь этим назвать переменную?
444 2635273
>>635271
Это функция "донор", "объявлять" её требуется, чтобы можно было заиметь на неё указатель. Именно её мы будем дергать путём подсовывания в другую функцию указателя на неё.
Mastering C Pointers, Traister

>Pointers to Functions


A C language function is not a variable, but you can declare pointers to functions that can be used in a m a n n e r that other pointers
are used, such as placing them in arrays, or passed to other func-
tions. One doesn't see a lot of use of pointers to functions, but this
technique can sometimes be used to advantage. One common
usage of pointers to a function is in purposely hiding the intent of a
program. Pointers to functions serve to hide the n a m e and source
code of that function. Muddying the waters is not a normal routine
in C programming, but with the security placed on software these
days, there is an element of misdirection that seems to be growing.
The following program demonstrates the basic technique of de-
claring a pointer to a function:

This process may look a little ridiculous, and maybe it is, but it
does effectively demonstrate a pointer to a function. In this case,
the function in question is strlen(), which returns the length of a
string argument. Notice that strlen() is declared as a p a r t of the
calling program. This is a necessity, even though the function is a
p a r t of the linked library code.
Within the calling program, another function is invoked.
ScarpO, arbitrarily named, passes two values. The first is the char
array, which now contains "COMPUTER". The second is the n a m e

of the strlenO function, proper. In this usage, s t r l e n without
parentheses is the address of the strlen() function.
Within scarp(), the address of a is given to c h a r ЗВЕЗДОЧКА c , and the
address of s t r l e n is passed on to a pointer to this function ar-
bitrarily named g i r l . Note the declaration of this entity within
the function. The expression:
i n t ( ЗВЕЗДОЧКА g i r 1 ) ( )
says that g i r l is a pointer to a function that returns an int value.
At this juncture, the expression (ЗВЕЗДОЧКА g i r 1 ) may be used exactly as
you would strlen(). In the function:
r e t u r n ( ( ЗВЕЗДОЧКА g i r l ) ( c ) ) ;
means exactly the same thing as:
r e t u r n ( 5 t r l e n ( c ) ) ;
ЗВЕЗДОЧКА ( g i r 1 ) ( ) points to the storage address set aside for strlenQ
when it is declared in the program
444 2635273
>>635271
Это функция "донор", "объявлять" её требуется, чтобы можно было заиметь на неё указатель. Именно её мы будем дергать путём подсовывания в другую функцию указателя на неё.
Mastering C Pointers, Traister

>Pointers to Functions


A C language function is not a variable, but you can declare pointers to functions that can be used in a m a n n e r that other pointers
are used, such as placing them in arrays, or passed to other func-
tions. One doesn't see a lot of use of pointers to functions, but this
technique can sometimes be used to advantage. One common
usage of pointers to a function is in purposely hiding the intent of a
program. Pointers to functions serve to hide the n a m e and source
code of that function. Muddying the waters is not a normal routine
in C programming, but with the security placed on software these
days, there is an element of misdirection that seems to be growing.
The following program demonstrates the basic technique of de-
claring a pointer to a function:

This process may look a little ridiculous, and maybe it is, but it
does effectively demonstrate a pointer to a function. In this case,
the function in question is strlen(), which returns the length of a
string argument. Notice that strlen() is declared as a p a r t of the
calling program. This is a necessity, even though the function is a
p a r t of the linked library code.
Within the calling program, another function is invoked.
ScarpO, arbitrarily named, passes two values. The first is the char
array, which now contains "COMPUTER". The second is the n a m e

of the strlenO function, proper. In this usage, s t r l e n without
parentheses is the address of the strlen() function.
Within scarp(), the address of a is given to c h a r ЗВЕЗДОЧКА c , and the
address of s t r l e n is passed on to a pointer to this function ar-
bitrarily named g i r l . Note the declaration of this entity within
the function. The expression:
i n t ( ЗВЕЗДОЧКА g i r 1 ) ( )
says that g i r l is a pointer to a function that returns an int value.
At this juncture, the expression (ЗВЕЗДОЧКА g i r 1 ) may be used exactly as
you would strlen(). In the function:
r e t u r n ( ( ЗВЕЗДОЧКА g i r l ) ( c ) ) ;
means exactly the same thing as:
r e t u r n ( 5 t r l e n ( c ) ) ;
ЗВЕЗДОЧКА ( g i r 1 ) ( ) points to the storage address set aside for strlenQ
when it is declared in the program
445 2635274
>>635271
И да, это далеко не самый удачный пример
446 2635275
>>635273
>>635274
Пиздос сложна
447 2635279
>>635275
Концепт проще синтаксиса, там львиная доля сложности это неудобоваримый синтаксис.
448 2635285
>>635275
https://metanit.com/c/tutorial/5.11.php

Очень даже просто, если не лезть в дебри типа https://metanit.com/c/tutorial/5.12.php
image.png50 Кб, 894x721
449 2635286
450 2635288
>>635264
Если честно вообще не понял тебя, мог бы хотя примерно вводные данные описать
451 2635437
>>634711
В эклипсе особо и настраивать ниче не надо. Скачиваешь тулчейн ARM Cross GCC для компиляции, openOCD для отладки. При создании проекта в окошках подтягиваешь всё это дело и кодишь.
1599432622739.png27 Кб, 647x416
452 2635449
>>635273
Это называется K&R синтакс, и его в ближайшие годы отменят.
Раньше компы были слабее поэтому позволялось вместо
int foo(int x, char☆ c) { ... }
Писать
int foo()
int x
char☆ c
{ ... }
Переписал твой пример по современному.
И не забывай переключить язык на C в годболте, если там C++ выставляется сам.
453 2635466
>>635449
Не пон, но ведь в первом примере вызов функции с аргументами, а во втором вызов функции без аргументов. Это же не одинаковые записи.
Всм в стек-то может оно всё запишется при вызове, но функционал-то разный.
1605913009305.png39 Кб, 630x577
454 2635476
Что же касается указателей на функции
char☆ foo(int param) - функция
char☆ (☆ptr)(int param) - указатель на функцию

char☆ res = foo(param); - вызов функции
char☆ res = (☆ptr)(param); - вызов чере указатель.

Алсо, тайпдефы.
455 2635479
>>635466
Я тебя не понял.

Есть вызов scarp с аргументами: 1) строка a, 2) адрес функции strlen (тут strlen не вызывается)
Внутри scarp вызывается по указателю переданная функция, в данном случае strlen, c аргументом c (куда была передана строка a)

(*girl)(c) === strlen(c)
456 2635480
>>635476
А не вызывается он, потому что нет скобок
scarp(a, strlen)
Сравни с
scarp(a, strlen()) - вот это было бы без аргументов, но это ошибка компиляции, потому что strlen требует аргумент
some_other_func(s, strlen(s)) - тут бы ты взывал some_other_func(char* str, int len)
457 2635481
>>635476
Если же ты про то, что в старой книге написано
main()
{
int strlen(), x;
}
То это не вызов функции, а ее объявление в стиле K&R
Иными словами,в той программе не делают #include, Но объявляют что функция strlen существует
Потом ее во время линковки прилепляют из стдлиб или где она там живет.

Сорри что многабукв.
458 2635484
>>635481

> а ее объявление в стиле K&R


Заболтался. Просто объявление.
Ну как ты объявляешь
int foo();
image.png70 Кб, 1108x607
459 2635617
>>635449
Всё равно не пашет....
В отличие от pythontutor где на том же девятом GCC с теми же флагами всё работает.

>переписал


Блин, ты бы лучше ссылку кинул. Ладно, сейчас перепечатаю, посмотрю, взлетит ли.
В любом случае вопрос по Pythontutor остаётся.
https://pythontutor.com/visualize.html#code=main%20%28%29%0A%7B%0Aint%20strlen%28%29,%20x%3B%0Achar%20a%5B10%5D%3B%0Astrcpy%28a,%22COMPUTER%22%29%3B%0Ax%20%3D%20scarp%28a,strlen%29%3B%0Aprintf%28%22%25d%5Cn%22,%20x%29%3B%0A%7D%0Aint%20scarp%28c,girl%29%0Achar%20c%3B%0Aint%20%28girl%29%28%20%29%3B%0A%7B%0Areturn%28%28*girl%29%28c%29%29%3B%0A%7D&cumulative=false&curInstr=8&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D&textReferences=false

там всё работает без лишних движений.
460 2635627
>>635476
Этот пример тоже интересен, спасибо!

Но не очень понимаю, зачем тут тайпдефы - они ведь тут тупо код в полтора раза раздули, и всё.
461 2635657
>>635449

>Это называется K&R синтакс, и его в ближайшие годы отменят.


c чего его должны отменить? новые стандарты по идее должны сохранять обратную совместимость
462 2635866
>>635617
Поясняю - объявлять int strlen() не нужно сейчас, потому что ты его и так инклюдишь. А если объявляешь, теперь тип возвращаемого значения size_t, а не int, о чем компилятор ругается.
463 2635867
>>635627
Чтобы не ломать глаза об ((*ptr)()) постоянно. Думаю во всяких WINAPI так сделано.
464 2635877
>>635657
Ну вот так написано в статье и вики и ссылка на пропозалы WG14-N2432 и WG14-N2841
Remove K&R function definitions/declarations
А также foo(); будет теперь означать foo(void);
https://en.wikipedia.org/wiki/C2x
А прочитал я это в статье, которая может быть уже в чем то устарела
https://habr.com/ru/company/badoo/blog/503140/
465 2635923
А нахуя мне указывать на указатель или в пустоту, в чем понт?
466 2635945
>>635867

> Чтобы не ломать глаза об ((*ptr)()) постоянно


Можно в идешке сахарку подкинуть и не ломать глаза. Какая-нибудь подсветка фиолетовым.
467 2635948
>>635945
Это фантастика. Регекспом такое что ли искать? Да и код должен быть читаемым даже в блокноте.
468 2635951
>>635866
Не пахало, т.к. я проебал звездочку одну у c.
Странно, что ты не заметил.
Вот исправленная версия, пашет как миленькая. https://godbolt.org/z/3v7qdYj34

Лишнее доказательство какой пиздец этот синтакс
469 2635952
>>635948

> Регекспом такое что ли искать


Почему бы и да?
470 2635954
471 2635961
>>635951
Да я уже потом не просматривал внимательно, у меня сейчас работка кипит своя.
472 2635963
>>635923
Указатель на указатель - это, например, массив массивов. Или последующий элемент в связном списке. В обоих случаях он может указывать никуда.
473 2636066
>>635948
>>635963

>он может указывать никуда.


И как такое применять в реальном мире на обычной задаче для людей?
474 2636082
>>636066
такое только в пердольных задачах очень нужно
475 2636119
>>636066
Так стопэ ты сейчас про что?
Если про *void - то это просто тип any (любой). Например, malloc тебе возвращает память, а ты там уже можешь хоть структуру, хоть массив интов, хоть строку чаров разместить.
Если же про указатель на NULL, то это традиционно последний или пустой элемент. Например в связном списке. A -> B -> C -> NULL. У последнего элемента C нет следующего.
476 2636272
Тут есть пердоли ядра?
image82 Кб, 1067x334
477 2638500
>>625890
>>625427
Так, пажите.
Я пишу под ESP32, у меня там stack на 8кб, и heap на 300кб.
Если я буду делать malloc() для каждой динамической временной строки, у меня heap фрагментируется и всё перестанет работать.
А в stack место просто очистится после выхода из функции и всё.

Вот пикрелейтед.
Тут 2 строки создаётся, одна для передачи в функцию для отправки её по сети, другая для передачи в debug() который и в консоль напишет и сохранит для дебага.
Я правильно делаю, что тут не выделяю память для этих двух строк через malloc() в heap, а выделяю в stack?
478 2638501
>>638500

>Я пишу под ESP32, у меня там stack на 8кб


>Если я буду делать malloc()


На микрухах надо просто заранее выделять массивы нужного размера. Статичные.
479 2638654
>>638501
У меня появилась гениальная идея.
Что если я на старте сделаю malloc() в 2кб, а потом функцией str_write() напиример буду добавлять пришедшие char* в эту область памяти.
А функцией str_get() ставить в конец нуллбайт и возвращать указатель на нулевой символ.
Так я могу работать с строками вообще не занимая никакой лишней памяти.
Гениально?
Главное не делать паузы между вызовами, чтоб 2 разных кода в одну память не писали по очереди.
480 2638666
>>638654
У меня появилась гениальная идея.
Пошел нахуй отсюда, пидарас, со своим говнобложеком. Кусок тупого макакоговна никому не интересен.
image915 Кб, 1280x720
481 2638765
Джеффри Рихтер кот_в_шляпе 482 2639001
А я напоминаю всем, кто хочет научиться профессионально программировать в среде Windows, особенно это касается системных программистов.
Книги Джеффри Рихтера лучшие в этой области, мне кажется он знает архитектуру Windows лучше чем сами создатели Windows.
483 2639021
>>639001
Интересно, как ему разрешили ее издать. Это же явно реверсинг + слив коммерческой тайны.
image61 Кб, 478x758
484 2639022
>>638666
>>638654
Всё правильно сделал?
485 2639029
>>639022
Зачем тебе malloc, ты можешь просто написать в файле глобальный массив.
image427 Кб, 809x561
486 2639031
>>639029
Мне чатжпт сказал, что в таком случае память окажется в стеке.
487 2639041
>>639031
Вот жеж пидор. Наебал.
Я проверил, размер heap уменьшается, когда я увеличиваю размер массива в начале файла.
Он не в стек попадает, а в heap.

>>639029
А если я в начале файла int объявляю, она тоже будет в хипе?
488 2639048
>>639021

>Интересно, как ему разрешили ее издать. Это же явно реверсинг + слив коммерческой тайны.



Я пока что не нашёл чего-то "закрытого" в его книгах, как раз таки всю эту информацию можно найти в документации Майков, просто автор преподносит её в очень информативном и приятном для познавания виде, совмещая этот процесс с практикой.
изображение.png263 Кб, 900x574
489 2639050
>>639021

>>639048 + скорее всего он согласовывал это с майками, прежде чем выпустить книгу.
490 2639477
>>639041
Да, на стеке идет то что явно в внутри функций.
CbBPH.png73 Кб, 696x570
491 2639479
>>639041
Нет, он не в стеке и не в куче, он в статическом сегменте памяти.
492 2639483
>>635286
Спасибо, попробую разобраться
493 2639629
>>639001

> це тред


> windows


Достаточно.
494 2639677
>>639629
По какому поводу подрыв?
Winapi - сишный интерфейс.
495 2639700
>>639677

> winAPI


> Си тред


Ну хватит плез
изображение.png218 Кб, 561x782
496 2639810
>>639629
>>639677

Напоследок добавлю >>639001, очень хорошо сочетается с книгой Павла Йосифовича "Работа с ядром Windows", материал в книге изложен очень кратко и понятно.
изображение.png193 Кб, 728x485
497 2639869
>>639700

>Ну хватит плез


Блядь, ты заебал со своим линуксом.
Чтобы ты понимал, не все пишут под linux, я в прошлом треде общался с тобой, и как выяснилось ты ни имел и не имеешь дела с этой платформой, но постоянно яростно её обсираешь, а потом выясняется что ты пишешь под linux код для каких-то микроконтроллеров. Перестань обсирать вещи, только потому что ты их не понимаешь, либо не имел с ними дело.

Без WinApi в среде Windows ты не напишешь ничего значимого и безопасного кроме "hello world" с использованием стандартных библиотек, функций и структур, и да, я говорю именно про современные операционные системы, а не про то что ты там мог писать в 90-х (в зависимости от твоего возраста).
Вообще для того чтобы что-то стоящее писать, нужно даже не сам Си знать, важнее знать архитектуру ОС под которую ты пишешь, её API и железо под которое ведется разработка (если нужно), а сам Си при желании меньше чем за неделю изучить, знание только одного Си не принесет вообще никакого профита, кроме самовнушения о том что ты познал системное программирование, даже нормальную консольную утилиту не напишешь, скорее кал который будет держаться на соплях и содержать в себе множество уязвимостей.

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

>Без WinApi в среде Windows ты не напишешь ничего значимого и безопасного кроме "hello world"


Верно.

>и да, я говорю именно про современные операционные системы, а не про то что ты там мог писать в 90-х


Чего, простите, лол? Ты бредишь.
Я еще в 80х писал сначала на нормальном фиксированном компьютере с использованием железа естественно, там всё необходимое было из коробки, как аппаратура, так и программная поддержка. А потом в начале 90-х попробовал этот ПК-конструктор с Си и сразу же выяснил, что это тыква, в Си на ПК ничего нет, т.к. сама архитектура ПК - ни о чем, железо может быть какое угодно, а значит никакое. Там на голом Си никогда и нельзя было ничего написать кроме хеллоуворлда в калсольку, позорище которые было дичайшим зашкваром даже в 80-х, это даже не программирование вообще, а чистая алгоритмика в вакууме, теоретическая хуета.
Pepe the Frog animation dissecting (FULL CLIP).mp45 Мб, mp4,
720x720, 2:25
499 2639924
>>639911
Прошу прощения за мат выше, на эмоции вынесло.
500 2639937
>>639869
Шизло, ты в треде не с одним аноном сидишь. Какие микроконтроллеры наху?
изображение.png1,8 Мб, 1080x1344
501 2639949
>>639937
К тебе это не относится, можешь пойти на хуй.
502 2639953
>>639949
Нахуя меня репоаишь тогда? Тебя гринтекст так триггерит?
Пиши дальше под свою проприетарную парашу да насасывай корпам, нахуя сюда-то лезешь тварь.
изображение.png521 Кб, 976x549
503 2639993
>>639953
На ебало тебе ссу, мразь.
504 2640006
>>639953
Согласен, я бы тоже линуксоидов нахуй послал, но всё же линукс имеет применение в виде WSL, чтобы пердольные компиляторы запускать если вдруг понадобится, иногда случается.
505 2640078

>2023


>не Линукс


>и даже не макОСь


Ебало говноедов представили?
506 2640228
>>640078
Я понимаю, что 2023 синоним корпорабства, но всё же давайте не поддаваться на общие тренды когда они явно ведут в жопу. Имейте мужество твердо сказать "нет" линуксу, а уж про макос и напоминать стыдно.
507 2640294
>>639869
А где ты увидел что то про линукс? Это тред чистого языка Си.
508 2640301
Есть массив из структур, в каждой струткуре по 5 чисел, условно: m.a, m.b, m.c, m.d, m.e. Надо сложить все переменные структур друг с другом: m.a + m[i + 1].a, m.b + m[i + 1].b и так дальше. Можно ли это как-то автоматизировать, а не писать для каждой переменной стуктуры отдельное действие?
509 2640360
>>640301
Можно, через union и цикл например (или это UB? не помню уже).
510 2640782
>>640301
Да, какие проблемы?
Открываешь свою структуру в дебагере, смотришть оффсеты каждого поля, если они одинаковые пишешь цикл увеличивающий указатель на нужное значение, так чтобы он каждый раз указавал на следующее поле, и суммируешь значения по указателю.
511 2640791
>>640782
А если неодинаковые, в структуру можно добавить массив с набором размеров, и по нему увеличивать указатель. Или держать отдельный массив, чтобы каждую структуру не раздувать одинаковыми данными.
Ах, да, если типы получаются разные, тогда в массиве надо еще хранить некие идентификаторы типов, и при суммировании проверять каждый тип и использовать соответствующий указатель.
512 2641032
Что думаете про ZIG ? это типо современный сишка
513 2641099
>>641032
Очень нравится, но ужасно сырой, месяц возился с релизной версией, банально не готово.
514 2641955
бутлоадер надо написать
515 2641976
>>641955
Сыглы, надо бы
516 2643171
Аноны, с помощью какой библиотеки можно сделать tui интерфейс?
517 2643191
>>643171
Если по дедовски, то ncurses, PDcurses и вариации. Там есть всякие аддончики вроде st-menu.
Если посовременнее, то, видел, FTXUI используют.
518 2643750
Подскажите, я в отчаянье.
Пишу под чип ESP32, написал макрос, который вставлен в функцию, которая отправляет ответ на запрос в вебсервер.
У меня сломалась математика.

>int records_count_##name


>int record_item_i


>records_count = 10 из макроса


Как 10-1=1061159396 рандомно?
Даже если я где-то насрал в память не по адресу, как это сломало математику?
519 2643752
>>643750
И это не ошибка вывода в консоль, у меня ниже не срабатывает условие, которое видит, что record_item_i больше 10.
520 2643838
>>643750
Лень разбираться, проверь snprintf, почитай что она принимает и возвращает. Может ли быть, что буферу не хватает одного символа на \0 и ты видишь мусор, который идет сразу за ней? Так же, ты просто прибавляешь возвращенное значение, но в случае ошибки она возвращает отрицательные. В общем, мое паучье чутье подсказывает что странно кодга в printf-функциях не видно где-то +1 для \0.
521 2643914
педолю 0.0.1 ядро линукса
ведь там всего лишь 10 тысяч строчек кода
522 2643942
>>643914
А чего не миникс? Там же ещё меньше.
523 2643970
>>643838
>>643750
Мне помогли разобраться. Произошла интересная штука.
record_item_i была объявлена в loop() на стеке и потом передана в функцию, которая вызывается коллбеком много раз.
Но сам loop() выполняется и сразу выходит и переменная удаляется. И у меня в коллбеке остаётся ссылка на какую-то рандомную память на стеке.
Сделал static int record_item_i и всё заработало.
Такие дела.
524 2646973
>>599695 (OP)
Где почитать про используемые либы и подходы для concurrency/asynchronous programming? Задача максимально утилизировать ядро процессора.
525 2646977
>>599695 (OP)
Какие есть топовые современные веб-сервера для Си? Чтобы были вебсокеты и mqtt.
526 2647017
>>599695 (OP)

>Zed A. Shaw "Learn C the Hard Way"


Здесь https://www.iso-9899.info/wiki/Main_Page#Stuff_that_should_be_avoided советуют избегать эту книгу
527 2647027
>>639001
Книга устарела.

>>639869
Уже наворотили разных api.
528 2647037
>>646977
Надеюсь, что таких нет. Все же безопасность это не шутки.
529 2647038
>>647037
Шта?
530 2647040
>>647038
Ну я просто представил себе наглядно как мои данные крадут через очередное UB переполнения буффера. Аж передернуло.
изображение.png605 Кб, 650x905
531 2647209
>>647027

>Книга устарела.


В книге дают основы, я параллельно вместе с книгой использую техническую документацию Microsoft, а вообще я смотрю информацию в нескольких книгах, мне ещё нравится "Внутреннее устройство Windows" Русиновича (7-е издание).

>>647027

>Уже наворотили разных api.


Что значит разных, я говорю конкретно про WinAPI.
532 2647211
>>643750
Ты походу где-то вычитаешь указатель из целого числа, из-за чего такой результат.
534 2647411
>>647276
Да, мне один знакомый советовал когда-то эту книгу, но я пока что без неё обхожусь, но спасибо за ссылку и совет.
535 2647415
>>647276
А книга и вправду хорошая, зря я её не читал раньше.
536 2647416
>>647040
Не пиши код с уб и контролируй буфер. Ты специально чтоли буфер переполняешь, когда код пишешь?
537 2647449
>>647416

>просто будь богатым и здоровым

538 2647779
>>599695 (OP)
Где смотрите вакансии? Как искать на HH? По языку искать невозможно, потому что однобуквенное название. Какая вообще работа есть для программиста на Си, что пишут на Си в РФ?
539 2649391
>>647779

>однобуквенное название


А ты ищи по двум буквам, на русском (Си).

https://hh.ru/search/vacancy?text=%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82+C%D0%B8&salary=&area=1&ored_clusters=true
540 2649398
>>647779
Либо системный инженегр/программист.
541 2649401
>>647779
Ещё есть всякие телеграмм каналы, либо через знакомых, общение в чатах с теми кто уже работает в каких-то компаниях.
Но как ты понимаешь, одного только Си недостаточно.
543 2649582
Немножко не по теме вопрос. Посмотрите, пожалуйста. https://cdnpdf.com/embed/21259-programmirovanie_na_c_dlya_nachinayushhix_3-e_izdanie
У вас книжку эту открывает или только обложку?
544 2649647
>>649582
Норм открывается.
545 2650658
>>649401
для написания программ под линукс разве си не достаточно? может раст начать изучать, но на него нет работы
546 2650826
>>650658

> си не достаточно


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

Да и ты сам можешь открыть любую вакансию, посмотреть какие там требования, ещё есть всякие роадмапы.
Знание одного только языка программирования в любой сфере недостаточно, это касается не только Си.
547 2650855
>>600258
Чем конкретно засрут?
Наличием недоООП?
548 2651579
>>650826
Спасибо за ответ
изображение.png478 Кб, 480x584
549 2651781
>>651579
Да не за что анончик.
VID20230325001222562.mp45,7 Мб, mp4,
1280x720, 0:55
550 2651791
551 2654147
Здравствуйте, анончики, где можно посмотреть курс Александра Григорина по основам программирования, а то не могу найти что-то
552 2655581
Анончики, есть какие-то книжки по встраиваемым системам? Чтобы понять как что делать с UART, SPI, I2C и прочее? Пока только смог ручками потыкать в платке, и настроить кое как UART, но это вышло через боль и явные блуждания без понятия чего я ищу.

Вообщем есть какой-то организованный подход к микроконтроллерам, встраиваемым системам и прочему?
553 2656438
Мой случай: .wav файлы хранятся ввиде массива hex символов.
Вроде как первые 44 байта должен занимать заголовок
.wav файла.

Мне надо как-то распарсить эти 44 байта, чтобы заполнить структуру на пике 3.

Как это сделать?

Обрезанный массив залил на пастбин: https://pastebin.com/vcGddRTW
554 2656986
>>656438
Тебе обязательно всю структуру забивать заголовком? Возьми только нужные тебе значения по индексам и всё.
Давно работал с вав, но когда работал (выводил выборки на ЦАП) брал из заголовка только размер и частоту выборки, насколько я помню.
555 2657321
>>656438
В чем суть вопроса? Можешь просто ручками читать следующие N байт и присваивать.
header.chunkID[0] = bytes[0];
header.chunkID[1] = bytes[1];
header.chunkID[2] = bytes[2];
header.chunkID[3] = bytes[3];
header.ChunkSize = bytes[4] + (bytes[5] << 8) + (bytes[6] << 16) + (bytes[7] << 24);
Понятно что это говнокод и все это можно автоматизировать/украсить написав красиывые функции которые будут увеличивать указатель текущей позиции, как будто из файла читаешь: header.ChunkSize = readNextInt();

Можно наверное и просто memcpy сделать, но надо чтобы струтура точно совпадала, без всяких паддингов между элементами. Например в gcc это включается __attribute__((packed))

Есть готовые либы (не уверен что именно для Си, но для С++ и раста точно есть), которые умеют читать структуры по их описанию. Но для тебя это будет оверкилл.
556 2657617
>>656438
Просто memcpy? Или сразу в структуру читать, там же всё ровно, без какой-то дополнительной хуйни.
вонни.jpg49 Кб, 505x373
557 2657904
>>656986
>>657321
>>657617
memcpy работает.
Спс.
558 2659799
Что за книга Си. Грязные истории?

Пробовал гуглить даже как C. Filthy Stories, типо filthy имеет два перевода - откровенный/грязный, но книгу так и не нашел
559 2660110
Уже задавал вопрос год назад, задам ещё раз тут, хоть тред и умер

Выучил самые основы языка Си, делаю задачи на codewars, дошел до 7 уровня, начал сегодня. Пока интересна книга Андре Ламот Программирование игр под Windows, хочу учить ассемблер

Как мне повысить свои навыки в Си, чтобы не быть обезьяной с гранатой?
560 2660115
>>660110

>Си


>не быть обезьяной с гранатой?


Книги по научной фантастике в соседнем отделе.
561 2660118
>>660115
Да ты зачем это делаешь, не писал же, что спец
Просто хочу понять как повысить навыки, что почитать
562 2660121
>>660118
Я про тебя лично ничего не хотел сказать. Язык такой, небезопасный.
563 2660130
>>660121
Ну, это понятно, просто интересно, никаких поисков не производил, а какой язык безопасный? Только какой-нибудь высокоуровневый по типу Java, Kotlin или Python?
564 2660133
>>660121
Просто ещё читал какую-то статью и там писали, что раньше Си был совершенно другим, был ближе к языку Ассемблера, к машинным командам, а начиная с какого-то стандарта стал считай, что высокоуровневым и медленным
565 2660138
>>660121
Помню, когда на первом курсе учился был удивлен, что в Си раньше не было цикла for, только while, поэтому может и в правду быстрый был только старый Си, а нынче и Питон Си обгонет
566 2660587
аноны, есть роадмап по реверси нженерингу?
567 2660868
>>659799
Там в оригинале как-то по другому называется. Гугли по имени автора.
568 2660902
>>660868
Автор в оп-посте не указан
569 2660903
>>660868
Блять, я даун, прости, не туда посмотрел

>>660902 мимо
570 2660919
>>660133
Это правда?
571 2660922
>>660130

>а какой язык безопасный?


Rust
573 2660938
>>660922
Можешь вкратце разложить почему так?
574 2661176
>>660938
это как язык со сборщиком мусора, но без него

без знания Сишки всё равно не поймёшь его преимущества
575 2661204
>>660922

>Rust


Блеванул.

>>660938
не слушай додиков, расту несколько и на нем пишут трапы.
смысла раста чтонибудь переписать, ничего своего не сделали.
а на си держится весь костяк.
576 2661318
>>661176
Сап, аноны, тупой как пробка.
Если запросил памяти из кучи и забыл ее освободить до какой поры она будет недоступна? До тех пор процесс, в котором был запрошен этот самый кусок памяти в куче, не завершится или пока ты не перезагрузишь ПК, чтобы RAM очистилась?
577 2661319
>>661176
Ну, есть знание самых основ Си, может что и пойму
578 2661511
>>661204

>смысла раста чтонибудь переписать, ничего своего не сделали.


>а на си держится весь костяк.


Бессмысленный набор слов.
579 2661512
>>661318
Зависит от операционной системы.
580 2661517
>>661318
Операционная система сама выделяет память под программу, если разраб криворукий, то зависнет только программа, а не вся ОС
581 2661682
>>661517
Ну, я плюс-минс понимаю, что выделения памяти через API происходит

Извини, не совсем тебя понял

Имел в виду, вот условно я выделил 100 Мегабайт памяти для своего процесса, пусть это будет чисто .exe, и забыл освободить, что будет дальше? Память сама освободится после завершения процесса или придется перегрузить ПК, чтобы состояние RAM обнулилось
582 2661715
>>661682
Тебе уже два раза ответили.
583 2661919
>>660925
Спасибо анончик
584 2661927
>>661682

В зависимости от ОС, но распишу подробнее.

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

А вот если у тебя уже более древняя ОС или ОС для всяких микроконтроллеров/платок, то там уже смотреть надо

Ребут устройства практически точно освободит тебе память, если только какой-нибудь шиз не придумает при ребуте восстанавливать состояние системы до ее ухода.
585 2662025
Спасибо тебе огромное, анончик
586 2662048
>>661927

Спасибо >>662025

А вот, если в какой-нибудь функции будет выделена память?

Например так:

#include <stdlib.h>

void foo { void* p = malloc(100000); }

int main(){

foo();

return 0;
}

Вроде как, указатель на область памяти размером 100к байт будет занят, и освободится в описанных тобой условиях

Но есть ли вероятность, что память для p будет освобождена при завершении работы функции? Или условно какой-нибудь оптимизирующий компилятор, где увидит, что указатель не глобальный, не static, не external и сам вызовет вызов функции free()? И если такой есть, так будет освобождаться память под матрицы и тензоры всякие?
587 2662049
>>662048
при завершении работы функции foo*
588 2662077
>>662048
Если компилятор увидит, что p не используется, он само выделение памяти выкинет.
589 2662739
Как протестировать функцию которая содержит стандартный ввод ? Мне уже подсказали что нужно как то использовать std::istream но я блять нихуя не могу нагуглить.
590 2662741
>>662739
Это си тред
591 2662745
>>662741
Дак мне и надо протестировать Си код. Если вы знаете как это сделать без использования либы из плюсов , то прошу , поделитесь!
592 2662761
>>662745
C++ тред ниже.
593 2662762
>>662745
<stdio.h>
scanf
594 2663376
>>662739
Ну, хз, вроде стандартный ввод в C это stdin, как тебе выше ответили, для ввода данных с клавиатуры используется scanf(), ну, или на крайняк попробуй функцию fscanf()
595 2663377
Анончики, здравствуйте. Плохо усвоил структуры данных. Можете, пожалуйста, посоветовать литературу по ним?
596 2663417
>>663377
Википедия
597 2663482
есть ли в линуксе способ отключить отправку родителю SIGCHLD при завершении процесса ?
598 2663527
Как люди вообще догадались о представлении чисел в дополнительном коде? Это же пиздец как ахуенно
codeC.png20 Кб, 630x508
599 2663547
аноны, объясните как работает это дерьмо.

создаем две переменные - c и pred, даем последнему значение 0.

пока си получает значение не равное eof выполняем{
если си == пробел
если пред == 0
достаем значение си, а пред делаем равным 1
если си не равен пробелу
достаем значение си и делаем пред равным нулю
}

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

в общем я ничего не понимаю, кусок кода будто бы убрали отсюда, но это ведь работает!

это код с книги Кернигана и Ричи "Язык программирования С", если что.

буду сильно благодарен за объяснение.
600 2663551
>>663547
фикс - это решение какого-то чела с какого-то сайта на задание из этой книги
601 2663585
>>663547
Если был введен пробел{
Если пробела был до этого не было{
Печатаем пробел
Запоминаем, что пробел был pred = 1
Если дальше будет пробел, то пробел
напечатан не будет
}
}
Если с клавиатуры ввели не пробел, то{
Печатаем символ
Обнуляем переменную, которая
отвечала за то -- был ли введён пробел
}
602 2663591
>>663547
Совет, если не понимаешь как работает часть программа, то сделай блок-схему и сделай пару итераций
спс.png27 Кб, 1165x543
603 2663600
>>663585
>>663591
спасибо, будто прозрел
604 2663761
>>663547
Тебе не нужно считать пробелы. Тебе нужен только факт - был предыдущий пробелом, или не был, когда тебе встретился пробел.
Все остальное сводится к этим случаям.
605 2665616
>>663600
Самый важный совет: называй счетчики c или n. И вообще, все локальное обзывай одной-двумя буквами.

дедушка
воу.jpg18 Кб, 464x222
606 2665634
>>662077
И в результате эта функция
без оптимизации напечатает null или умрет
а с оптимизацией напечатает не null.
Как же охуенно.
607 2665713
>>665616
Еще i ii iii и m/n/k
бабушка
608 2665757
>>662077
Ебать, это чё за компилятор такой, что вызовы функций сам регулирует? Или я отстал от жизни, какие это хоть флаги примерно?
>>665634
Всм, причём тут оптимизация? Ты просто выделяшь в heap память, но при этом теряешь указатель, и логично, что у тебя будет или нихуя не выделенно (null) или выделена память, напечатан на неё указатель и сразу проёбан
609 2667611
>>665757

> Ебать, это чё за компилятор такой, что вызовы функций сам регулирует? Или я отстал от жизни, какие это хоть флаги примерно?


Банальный clang -O. Еще может malloc + memset заменить на calloc, а printf на puts.

> Всм, причём тут оптимизация?


При том, что она выкинет весь цикл.
610 2667709
>>667611
Мдэ, нихуя себе работник
611 2670997
Накидайте проектов с годным кодом, чтоб читать на досуге для саморазвития. Можно с асмом
545154615616132132.gif82 Кб, 384x512
612 2671953
После обновления либы выскочила ошибка: the comparison will always evaluate as 'true' for the address of '' will never be NULL [-Werror=address]

Ошибка в функции, код которой по ссылке: https://pastebin.com/2f6xKhTu

Ок, проверку не пустой ли массив, если я правильно понял

> && name->host[0]


можно пофиксить как:

> && (name->host[0] != '\0')



А что разработчики пытались проверить с помощью:

>name->host


и как это фиксить???

Есть ещё вариант подавить проверку -Waddress, но для GCC и мэйк-хунйк файлов я не знаю как это сделать. Но тогда есть вероятность ошибки.
613 2671959
>>671953
Я бы добавил проверку name на NULL в самое начало условия, а всякие name->host, name->service удалил нахрен ибо эти поля всегда не NULL.
614 2671991
>>671959
name->host и была проверка на NULL
615 2671994
>>671991

> name->host проверка на NULL


Каким образом? Всё крашнется, если name==NULL.
host - массив чаров в структуре, он не может быть NU
Снимок экрана 2023-04-14 в 21.32.01.png43 Кб, 827x335
616 2672269
Аноны! Я новичок в си. Мне нужно скомпилировать программу указав в ключах -lncurses. Как можно прописать ключи компиляции в XCode? Если вообще можно...
617 2672395
>>672269
Что за вкладка кастомайзед?
618 2672689
>>671953
Короче, убрал

>name->host && name->host[0]


Заменив на

>(strlen(name->host) > 0)



Запустил, вроде работает в моём случае.

И накатал баг-репорт. А там пусть фиксят как хотят.
619 2674062
>>672269
В терминале же
620 2674407
>>672689

> Короче, убрал


Закон сохранения говнокода as is.

Я же объяснил как писать
return(
(name && name->host[0] && !strcasecmp(name->host, "_services"))
&& (name->service[0] && !strcasecmp(name->service, "_dns-sd"))
&& (name->proto[0] && !strcasecmp(name->proto, "_udp"))
&& (name->domain[0] && !strcasecmp(name->domain, MDNS_DEFAULT_DOMAIN))
&& type == MDNS_TYPE_PTR
);
621 2675085
Уже достал всех с вопросом, но все же

Есть ли тут люди, которые проходили курс по программированию у Александра Григорина? Посоветовать можете?
622 2675096
На codeWars рейтинг 4 kyu, то бишь могу какие-никакие алгоритмы нищие писать, более менее как в памяти располагаются байты знаю(все алгоритмы писал на Си). Что посоветуете почитать вдовесок, чтобы взяли на работу, ибо боюсь, что отчислят из ВУЗа, а как жить дальше не знаю, а хотелось бы реализоваться в IT-сфере?
623 2675713
>>675096
На сишке слишком много движений надо чтобы алгоритмы писать, уж лучше хаскель
624 2675888
>>675713
Сложно сказать, как по мне Си для алгоритмов не так плох, разве что в нем нет изобилия синтаксического сахара как в условном Пайтоне
625 2678836
>>599695 (OP)
Привет Си аноны посоветуйте материалы по программированию unix
626 2678854
>>678836
Роберт Лав - Системное программирование (2014)
image.png8 Кб, 355x107
627 2679224
Как получить данные из TLS в библиотеке pthread без использования глобальных переменных ? get/set_specific не канает , для этого нужен глобальный ключ. Создать глобальную static thread_local тоже нельзя. Функция должна вытягивать id из тлс , которы был туда положен в другой части кода .
628 2679322
>>679224
Pthread это и есть айди потока. Футкция птреад_селф.
А вообще можно сделать стракт {птреад, лонг айди} и передавать в функцию этого же треда и брать готовый айди, если тебе таое значение нужно, а не тид.
629 2681824
>>679322
Да , я знаю. Просто задание звучит "Реализовать свою функцию". А как получить переданную струтуру ? Я так и делаю , просто функция гет тид, сигнатуру которой нельзя менять, вызывается уже внутри функции в которую передана структура через pthread_create.
630 2682991
Что-то у меня, аноны, жеппа сгорела с нового стандарта С23. Зачем старую добрую сишку превращать в плюсы?
631 2683013
>>682991
А что там в стандарте добавили?
632 2683016
>>683013
auto, contsexpr, ....
633 2683053
>>683016

Autotype и typeof ужк давно быди, шило на мыло. Ну и старый добры -с99 никуда не делся ведь
634 2684850
>>601349
Можно название шрифта?
635 2686441
>>684850
Покопай в стоорону Anonymous Pro и Fira Code
636 2688967
Друзья может подскажет кто, а то что то не выходит нагуглить.
Как переключать xcb окно из оконного в фулскрин и обратно?
2023-05-08 001117-Intel® oneAPI standalone component installation files - Atom.png36 Кб, 784x515
637 2691507
Установил пикрил. Как теперь из консоли компелять? Не найду эксешника нигде, он вообще есть в этом пакете или это что-то другое я поставил?
16523592500280.jpg45 Кб, 449x500
638 2692005
Можно как-то наебать GCC-подобный компилятор и передать в функцию, принимающую указатель на void для работы с адресом выделенной памяти, реальное значение?

https://pastebin.com/deDHSaKb
pwd: 2ch
639 2692182
>>692005
Нет так врятли сработает. Оно ждкт указатель, тоесть это то что тр должно существовать вне функции в момент ее вызова.
Да и какой в этом смысл?
image.png10 Кб, 567x74
640 2692464
Всем привет. Встала цель написать декомпрессор на си, открыл книгу по сжатиям и архиваторам и сразу сел в лужу(см.пик). Какие разделы математики надо знать, чтобы понимать написанное? Я просто не понимаю от куда берется формула, даже с некоторыми объяснениями. Математикой никогда не занимался серьёзнее квадратных примеров и анализом графиков на парах.
641 2692545
>>692464
Компрессоры декомпрессоры уже гаписаны подо все. Бкри злиб зстд и дальше от них более профилтные баису всякие
642 2692583
>>692545
Я не нашёл рабочей реализации LZSS, которая бы мне подошла.
643 2692675
>>691507
>>692464

Ооо, дай название книги, пожалуйста
343240-9324873074937409.jpg27 Кб, 640x480
644 2692707
>>692182

>Да и какой в этом смысл?


Функции захардкожены автором с большой вложенностью.

Переписывать их вообще не стоит...

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

Думал, что есть какой-нибудь ХАК, чтобы наебать компилятор. Хотя бы для случая, когда требуется просто чтения и функция не будет писать по адресу.
645 2692887
>>692675
Привет. Книга называется "Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео" Д.Ватолин, А.Ратушняк, М.Смирнов, В.Юкин. 2003 год
646 2704906
Чому никто не перекатывает?
647 2705101
>>704906

>>Чому никто не перекатывает?


Кто, я?!
Возьми да перекати
Или как с опенсорсом? пиздеть горазды, а как взять да исправить/сделать, так всё?
648 2705214
>>705101

>Или как с опенсорсом? пиздеть горазды, а как взять да исправить/сделать, так всё?


Чёт какие-то ёбики заполонили этот тред.
649 2705550
>>705214
Причина тряски?
Тред утонул или удален.
Это копия, сохраненная 23 мая 2023 года.

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

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