Сохранен 656
https://2ch.hk/pr/res/2599695.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному /clang/

 Аноним 05/02/23 Вск 12:01:04 #1 №2599695 
image.png
image.png
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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)
Аноним 05/02/23 Вск 12:06:14 #2 №2599701 
Итак, котаны, базовый вопрос.
Какой шрифт используете?
Лично мне нравится Hack(нескучный DejaVU) и Iosevka. Не могу определиться...
Аноним 05/02/23 Вск 14:50:15 #3 №2599867 
>>2599701
FantasqueSansMono
Аноним 05/02/23 Вск 15:07:29 #4 №2599889 
2023-02-05x15:06:15.png
>>2599845 →
орлы?

ну давай епт понятно что с каментами все понятно, но все равно модуль 1к лок это пиздец и погибель
Аноним 05/02/23 Вск 15:12:23 #5 №2599892 
>>2599259 →
Если интересно, то я 7 лет пишу под них, могу рассказать и научить.
Аноним 05/02/23 Вск 16:06:04 #6 №2599932 
>>2599889
что за стрелки там в коде?
Аноним 05/02/23 Вск 18:07:16 #7 №2600099 
>>2599701
firacode, конечно.
Аноним 05/02/23 Вск 18:10:25 #8 №2600104 
1537896837883.png
>>2599932
Оператор "стремиться к"
Аноним 05/02/23 Вск 18:37:06 #9 №2600125 
>>2599892
Привет, да, интересно. Вообще мне много не надо расписывать, я люблю сам вещи изучать, мне больше нужен старт. Во-первых как и спрашиал что по физике, во-вторых с каких лучше начать. В интернете посмотрел, нашел там AVR 8 битную, думаю с неё начать, но даже если и закажу её(кстати пока не смотрел ещё где и что заказывать), то не понимаю что с этим приборчиком делать, как я понимаю его надо подключить к чему-то, а к чему? вот эти вопросы меня и интересуют для старта. Заранее спасибо!
Аноним 05/02/23 Вск 18:43:39 #10 №2600140 
>>2600104
а что я о таком с си первый раз слышу?
ну хотя я на 89 сижу и давно в стандарты новые не смотрел
Аноним 05/02/23 Вск 18:44:39 #11 №2600142 
>>2600125
если интересно, то бери на али ардуино нано, они дешевые, потом набираешь к ним модулей и проводочков и тебя теряют на ближайшие лет 5-10
Аноним 05/02/23 Вск 18:45:58 #12 №2600146 
>>2600140
Этот оператор еще у Керниган Ритчи бьл
Аноним 05/02/23 Вск 18:54:20 #13 №2600159 
>>2600104
это говнокод какой-то, лол. Я уверен в мисре есть о таком слово, вы вообще в курсе что этот цикл неправильный, он не выводит 10. Инкремент/декремент всегда должен быть в конце итерации
Аноним 05/02/23 Вск 19:02:59 #14 №2600168 
>>2600142
То есть с ардуино хорошо начинать? Просто я слышал такую точку зрения, что они "игрушечные" и ничему особо не научишься
Аноним 05/02/23 Вск 19:33:21 #15 №2600216 
>>2600168
нормально научишься, в промышленности тоже используют, так что не бесполезно, есть для вката совсем новичков
Аноним 05/02/23 Вск 20:04:30 #16 №2600258 
>>2600168
С них очень вредно начинать, засрут тебе голову своими подходами. Лучше с STM32.
Аноним 05/02/23 Вск 20:07:08 #17 №2600264 
>>2599932
>что за стрелки там в коде?
Это серьезный вопрос, а не троллинг? Конечно, из-за лигатур не сильно понятно, но имхо это обычное "->" при обращение к полю структуры через указатель.
Аноним 05/02/23 Вск 20:31:08 #18 №2600313 
1619077717550.png
>>2599932
В APL стрелочка означало присваивание, видимо по наследству досталось.
Аноним 05/02/23 Вск 20:49:50 #19 №2600338 
BRXNWksYeq0-00-08-39.png
2023-02-05x20:49:09.png
>>2599892
подскажи как перехватить сигналы из кан шины - чтобы сделать хардверный макрос переключения режимов

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


и вдогонку нужно написать опенсурц ECU, вдогонку контролить 6-axis imu && abs
Аноним 05/02/23 Вск 21:55:12 #20 №2600418 
Что такое модель памяти в языке программирования? Иногда вижу как говорят: "вооооот тут такая модель памяти просто". Она же везде блять одинаковая в компилируемых языках, или я чего-то не понимаю?
Аноним 05/02/23 Вск 23:33:11 #21 №2600502 
>>2600418
Что-то про многопоточность.
Ну и чтобы не было как с сегментами в 16-битном ассемблере было.
Аноним 06/02/23 Пнд 00:52:44 #22 №2600553 
>>2600418
Это вроде в DOS, в винде похуй.
Аноним 06/02/23 Пнд 06:31:49 #23 №2600717 
2023-02-06x06:26:51.png
2023-02-06x06:30:14.png
2023-02-06x06:26:59.png
есть вот такая дата стракча

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


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


арифметика индексов это отдельный пиздец, но об этом познее
Аноним 06/02/23 Пнд 06:32:46 #24 №2600718 
>пик3
Аноним 06/02/23 Пнд 07:46:38 #25 №2600756 
>>2600717
Что за контроллер/платка там у тебя?
Аноним 06/02/23 Пнд 08:33:06 #26 №2600776 
>>2600756
вдуше ничаю, какое то говно с алика, все вместе вышло около 25к₽ (сколько сама платка не помню)


а когда я узнал что эта паскудная параша не может в юникод, и весь мир жрет говно и костыляет юник через анси дрисню - мое срачло просто улетело на самый край галактики....
Аноним 06/02/23 Пнд 10:13:03 #27 №2600867 
>>2600717
Что за условие в case такое с троеточием?
Которое ast_amp ... er_eri:
Вообще смотрю иногда чей-то код и вообще не могу понять что там написано, хотя вроде Прату вроде осилил. Как учиться читать и понимать чужой код?
Причем есть вещи, с которыми был не знаком, но там интуитивно все понятно. Встречался с таким когда вкатывался в FreeRTOS, там весь код хорошо понятен был.
Аноним 06/02/23 Пнд 10:31:13 #28 №2600883 
2023-02-06x10:30:02.png
>>2600867
> Как учиться читать и понимать чужой код?
не заниматься бесполезной хуетой и дрочевом древней юзлес дрисни, типа
> Прату вроде осилил


гугли или спрашивай у нейросети минимально необходимый бит информации, который нужен прямо сейчас, для решения конкретной задачи
Аноним 06/02/23 Пнд 14:35:23 #29 №2601093 
>>2600104
Нет никакого оператора "стремится к"
Это просто
while ((x--) > 0)
Аноним 06/02/23 Пнд 14:38:48 #30 №2601101 
>>2600867
В си такого оператора нет, это какое-то васянское расширение компилятора. Делает очевидную вещь - срабатывает на всем диапазоне (как 1...5)
Аноним 06/02/23 Пнд 14:39:00 #31 №2601102 
2023-02-06x14:34:58.png
2023-02-06x14:38:34.png
>error: expected identifier or '(' before '=' token
>error: 'st' undeclared (first use in this function)
>error: 'ed' undeclared (first use in this function)
начинает пригорать потихоньку


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

хотя казалось бы ему должно быть похуй на первый айтем энума..
Аноним 06/02/23 Пнд 14:39:17 #32 №2601104 
>>2601093
Не толсти, я же привел код и он работает.
Аноним 06/02/23 Пнд 14:41:06 #33 №2601108 
>>2601102
У тебя код между кейсами.
Аноним 06/02/23 Пнд 14:46:27 #34 №2601114 
image.png
>>2601108
>switch() statements evaluates each case
Аноним 06/02/23 Пнд 14:47:47 #35 №2601117 
>>2601114
Я про uint8_t mod_state. Зачем оно там? Или в кейс помести, или до свитча выноси.
Аноним 06/02/23 Пнд 14:57:47 #36 №2601126 
2023-02-06x14:56:32.png
>>2601117
ладно, помогло, спасибо

хотя я еще не заливал, хз как оно там будет работать
Аноним 06/02/23 Пнд 15:04:57 #37 №2601138 
2023-02-06x15:04:18.png
ну а на переменные энума хуле он ругается?

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

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

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

как заэкстендить инам без говна?
Аноним 06/02/23 Пнд 15:10:20 #38 №2601144 
>>2599695 (OP)
Хочу запилить имплементацию сетевого протокола RTSP и RTP чтобы смотреть картинку со своей камеры как хочу и не платить охуевшим комерсам знаю что плееры умеют в ртсп, но хочу сам и чтобы дальше кодирование в hls было, про модуль для нджинкса тоже знаю
Стоит ли выбрать для этого си, или сложно для типикал формошлепа будет?
И что вообще можно почитать про работу с сетью/сокетами/tcp/udp? Не книгу же Танненбаума на миллион страниц читать
Аноним 06/02/23 Пнд 16:08:59 #39 №2601212 
2023-02-06x15:50:09.png
уже очень близко ребятишки
Аноним 06/02/23 Пнд 16:28:30 #40 №2601233 
>>2600125
Давай пиши телегу, тут все расписывать не оч.
Аноним 06/02/23 Пнд 18:11:06 #41 №2601349 
2023-02-06x18:08:16.png
2023-02-06x18:08:41.png
кароче мне тут накатали солюшен, но не полностью, предложили доебать финальные байты самостоятельно ~_~


мой вариант лаконичнее и проще и никакой интерференции со стоковыми байтами
Аноним 06/02/23 Пнд 18:24:01 #42 №2601367 
image.png
>>2601233
>пиши телегу, тут все расписывать не оч.
Аноним 06/02/23 Пнд 18:40:48 #43 №2601390 
>>2601367
а я тебе сразу сказал няш что тут гниль по большей части, да школота
Аноним 06/02/23 Пнд 18:41:05 #44 №2601391 
>>2601233
Почему не очень? Я думаю многим было бы тоже интересно, кто сюда в будущем может зайти!
Аноним 06/02/23 Пнд 20:04:15 #45 №2601506 
>>2601393
Иди нахер, лигатуры рулят.
Аноним 06/02/23 Пнд 20:23:11 #46 №2601509 
>>2601367
>>2601391

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

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

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

Если учиться хорошо, и не пить пивко, то можно уже курса с третьего получать 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. С физикой столкнетесь, если будите использовать ультразвуковой датчик расстояния. С матаном столкнетесь, как только придется написать первые фильтры, на полученные данные с датчика температуры и расстояния.

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

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

А вообще проще все это объяснять в телеге и отвечать на конкретные вопросы.
Аноним 06/02/23 Пнд 20:30:02 #47 №2601512 
2023-02-06x20:11:53.png
2023-02-06x20:28:45.png
кароче вот так оставлю

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

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



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

и просто создать кастомный слой, где бы я все обернул в модификаторы!
Аноним 06/02/23 Пнд 20:38:47 #48 №2601521 
16750228156092.png
>>2601509
> но обычно все учатся без интереса, и только через пару лет работы понимают что упустили кучу прибыльных знаний
потому что все вокруг безинициативные престарелые пидарасы, которые трахают тебя юзлес дрисней, нахуй не нужной, которую ты забудешь через два года

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

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

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

все твои задачи типовые, все давно придумали за тебя и даже я, занимаясь уникальной разработкой, находил кусочки которые мне в разной степени помогали строить аналоговнетную систему
Аноним 06/02/23 Пнд 20:45:29 #49 №2601533 
image.png
>>2601521
>самостоятельно пошел получать образование
>ряяя скучно, где эффекты и терминатор вылезающий из стены?
>почему моему зумерскому мозгу не предоставили клоуна?
Аноним 06/02/23 Пнд 20:57:52 #50 №2601549 
Aa83vRghue4-00-02-35.png
>>2601533
просто ты привык жрать говно, а я привык брать только самое лучшее.
Аноним 06/02/23 Пнд 21:03:04 #51 №2601557 
>>2601549
Да-да, это же я дурачок с СДВГ, которому нужен скачущий негр, чтобы его величество соизволило учиться.
>я привык брать только самое лучшее
Поэтому ты смотришь говновидосы на ютубе, а не читаешь книги. А в книгах же спецэффектов нет...
Аноним 06/02/23 Пнд 21:18:07 #52 №2601572 
image.png
image.png
XPVC4IyRTG8-00-00-07.png
16728578380110.jpg
>>2601557
какое
> СДВГ
додик


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

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

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

но тебе же надо перед барином выслужиться, барин каргокультный кусок дерьма пынямает только корочки и лычки, а по факту ты как ебашил за два мрота свое говно пыльное и убогое, так и продолжаешь это делать без изменений...
Аноним 06/02/23 Пнд 21:20:35 #53 №2601580 
>>2601572
Ладно.
Аноним 07/02/23 Втр 00:05:27 #54 №2601684 
>>2601509
Спасибо большое за развёрнутый ответ
Аноним 07/02/23 Втр 09:28:48 #55 №2601852 
>>2601572
Не рвись, а то туза порвешь.
Аноним 07/02/23 Втр 22:22:45 #56 №2603025 
Как сделать так, чтобы программа (вин) не открывала консоль, но при этом могла писать в нее, когда запущена из командной строки?
Аноним 07/02/23 Втр 22:23:57 #57 №2603026 
>>2603025
сек
Аноним 07/02/23 Втр 22:24:50 #58 №2603028 
>>2603025
https://stackoverflow.com/questions/493536/can-one-executable-be-both-a-console-and-gui-application
Аноним 07/02/23 Втр 22:39:56 #59 №2603063 
>>2603028
Не работает.
#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
Аноним 07/02/23 Втр 22:45:06 #60 №2603070 
sdzdzsd.png
>>2603025
Аноним 07/02/23 Втр 22:53:50 #61 №2603083 
>>2603070
Просто прячет окно командной строки.
Аноним 07/02/23 Втр 22:57:10 #62 №2603089 
>>2603063
>>2603028
Хотя сейчас проверил, работает если писать в stderr. В stdout почему-то не хочет.
Аноним 07/02/23 Втр 22:58:58 #63 №2603092 
>>2603089
А нет - это я опции линковки убрал.
Аноним 07/02/23 Втр 23:42:07 #64 №2603124 
>>2603083
ну так ты в винде либо скрываешь консоль приложения либо показываешь, третьего не дано
Аноним 07/02/23 Втр 23:51:29 #65 №2603128 
image.png
image.png
image.png
image.png
>>2603124
Консоль можно просто не открывать, а присосаться к существующей. И оно присасывается, но почему-то не хочет туда писать.
Аноним 08/02/23 Срд 00:42:06 #66 №2603161 
image.png
image.png
В общем история такая. Есть проект Си, на который я внезапно попал да и тем более x86-x64, на котором вообще в продакшене не прогал, был до это этого байтоебом, дрочил-дрочил себе всякие MCU и горя не знал, думал оптимизация это не более чем DMA и IRQ, и аппаратные поддержки того-сего, которые сами делают магию.
Но не тут-то было и настало время делать невротебенные оптимизации и тем более разбираться в них.

Почитал про всякие SSE, AVX2, AVX512, вроде как понятно, но как их юзать вообще не ебу.
Анонче, посоветуй, пожалуйста, нормальных книг по оптимизации и использовании всяких расширений проца. Ну, там книжки, маны, которые знаешь, с которых начать. Как, собственно пользоваться всеми прелестями современных процессоров и использовать эти длинные инструкции, для оптимизации программ?
Как например, вогнать данные принудительно в кеш, например, и там перемолотить словами по используя шины 256-бит?
Аноним 08/02/23 Срд 11:03:52 #67 №2603322 
167584324020460541.jpg
>>2603212
Ладно, думаю стоит ли вообще изучить ассемблер x86 от и до. А потом уже разговаривать.
Я так собственно микроконтроллеры учил, начал с ассемблера, за 2 месяца освоил азы, потом понял куда двигаться. Начну с пикрил. Там посмотрим.
Аноним 08/02/23 Срд 11:59:37 #68 №2603371 
>>2603322
Чел учение и знание это конечно хорошо, но особого смысла нету.
Если только не ради науки, и я не про практическую реализацию чего то научного, а про сугубо прогоамистские изыскания.
Я сравнивал скорость нескольких популярных математических библиотек, некоторые из них с ключами собираются с ссе или авх, а некоторые исключительно под авх и написаны, а так же свою простую скалярную.
Так вот с о0 разница действительно есть, те что фул авх быстрее гебридов, а те быстрее скаляров.
Но если собирать в релиз с арчнатив и о3, то все. Современные компиляторы и процы такие крутые что все, практически никакой разницы.
Аноним 08/02/23 Срд 15:00:40 #69 №2603564 
>>2603161
Расскажи свою историю переката из МК в большие процы,
Чем компания занимается? Свое сетевое оборудование делает?
Аноним 08/02/23 Срд 15:35:32 #70 №2603584 
>>2603564
Я не он, а всего лишь около годовалый вкатышь, но тоже перкатываюсь на линупс с микроконтроллеров.
Вкатился почти год назад в микрокамни, пока оформлялся началась заваруха с сво. В итоге вкатился в микроконтроллеры, даже кой чего уже написал, а в итоге к концу лета совсем все поставки оборвали. Теперь в суматохе переходим в эмбедед линукс и соответствующую комплектуху.
Аноним 08/02/23 Срд 15:44:14 #71 №2603585 
>>2603584
Твой отклик не оч, сорян. Сумбурно, как-то, да и опыта у меня больше, хотелось бы кого-то постарше.
Аноним 08/02/23 Срд 18:53:15 #72 №2603845 
>>2603564
Я - он.
Вообще, когда я работал в эмбедде, мне помогли широкого круга задачи на разных проектах, это SIO, эмбеддед Линукс АРМ (сборка ядра, дергание ануса драйверов) IoT, чипсеты, биосы, со всем работал по чуть чуть, так что появился кругозор.
Потом понял, что просто вырос и надо двигаться.

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

Да, компания занимается и сетью, ОС и куча эмбеддеда, крупная компания по разработке всякого железа. Сейчас проект как раз - оптимизация алгоритмов и допил KVM и сетевых штук (DPDK, IOMMU, SDN)
Аноним 08/02/23 Срд 19:21:52 #73 №2603878 
>>2603845
>крупная компания
Каждый разработчик этой компании бегает на двач с вопросами "как и что делать?" или ты один такой уникальный ширококругозорный растишка?
Аноним 08/02/23 Срд 19:29:15 #74 №2603883 
>>2603878
Да ладно тебе, тред и так полумертвый. А так хоть какой-то движ есть.
Аноним 08/02/23 Срд 19:42:43 #75 №2603898 
>>2603584
то есть ты за год мк освоил? вундеркинд что ли?
Аноним 08/02/23 Срд 19:53:55 #76 №2603911 
>>2603898
Нет конечно, была небольшая база до этого, просто в серьезных проектах никогда не учавствовал. Да и не писал я, что все за год освоил. Только вкатился же.
Аноним 08/02/23 Срд 20:54:15 #77 №2603963 
>>2603878
Во первых я не спрашивал что делать, я спросил литературу, не каждый день тебе ставят задачу по AVX. И не знать это нормально. Ненормально ходить вокруг да около годами и не пытаться узнать или спросить.
А во вторых каждый разработчик ходит ещё и на StackOwf, LOR, а ещё ходит на дейлики и рассказывает проблему там, в которой ему, незнающему как делать, подсказывают.
Аноним 09/02/23 Чтв 08:32:50 #78 №2604306 
>>2603584
> В итоге вкатился в микроконтроллеры, даже кой чего уже написал, а в итоге к концу лета совсем все поставки оборвали.
Так программирувай отечественные mik51 и миландры.
> Теперь в суматохе переходим в эмбедед линукс и соответствующую комплектуху.
Китайские клоны π?
Аноним 09/02/23 Чтв 12:53:57 #79 №2604574 
>>2604306
Лол, я на миландры и вкатился. Но они ушли с рынка. Сейчас ждем ответа от другой фирмы.
Ну и да, юзаем "отечественные" клоны малинок, если это так можно назвать, хотя малинки не были первыми.
Аноним 09/02/23 Чтв 13:21:51 #80 №2604608 
>>2603845
О, а есть сейчас вакансии?
Я б вписался. Это Москва же?
Аноним 09/02/23 Чтв 20:52:23 #81 №2605046 
>>2603845
Платят хоть нормально?
А то я много лет занимаюсь байтоёбством в госконторе за копейки, думаю развиваться в этой области и попробовать найти работу с нормальной ЗП, либо попытаться перейти в бэкенд.
Аноним 09/02/23 Чтв 23:45:48 #82 №2605220 
>>2603161
Куссвюрм -- Профессиональное программирование на ассемблере x64
Аноним 10/02/23 Птн 01:55:31 #83 №2605416 
>>2604608
>>2605046
Платят нормально, ДЦ.
Хотите к нам - пишите, команда пока набирается, так что и стартануть будет проще. Скидывайте резюме или профили LinkedIn, что у вас есть.

[email protected]
Аноним 10/02/23 Птн 01:58:37 #84 №2605420 
>>2605220
Спасибо, вот тут >>2603322 и написал, что имено ее и начал листать
Ещё поглядываю Йо Ван Гуй - программирование на ассемблере
Аноним 10/02/23 Птн 05:44:53 #85 №2605612 
2023-02-10x05:42:31.png
>>2605416
> [email protected]
гречневые низушные мрот-скот животные не ведитесь!

спалите профиль на линкеде которого у вас нет и никогда не было ахахах и на него прийдет повестка прямиком из госуслуг!!!11
Аноним 10/02/23 Птн 08:44:19 #86 №2605653 
>>2605420
>Ван Гуй

Эта книга прям для совсем начинающих ассемблерщиков. Но в ней чел хорошо также раскрывает авх инструкции и действие в основном происходит в убунту 18.04 (только, чтобы gdb заработал должным образом в 20/22.04 нужно ручками пересобрать glibc) и он подходит к объяснению некоторых фишек ассемблера с помощью Си, а Круссвюрм с помощью плюсов и кодит в винде, но и раскрывает Круссвюрм авх, авх2, авх512. Так что, да, разница в этих книгах есть, поэтому, если совсем плох в ассемблере, то можно (и я бы сказал нужно) Ван Гуя почитать.
Аноним 10/02/23 Птн 09:35:12 #87 №2605672 
167601054433064364.jpg
>>2605653
Спасибо за разъяснения.
Ну, ассемблер-то, естественно понимаю, а на слабых 8бит архитектурах вообще чаще с ним работал. Но сейчас каждневного использования нет, естественно.
Ну и понимание, конечно в большей степени это RISC или близкие к ней. Так что что посмотрю обе, в них вещи и там и там есть которые не знаю.
Книги хорошие, это да, но как я понял про asm их вообще мало.

>>2605612
Негатива не делаю.
Ну разве что могу попросить прийти на Петровско-Разумовскую и принести с собой самый длинный AVX.
Аноним 10/02/23 Птн 10:39:42 #88 №2605721 
>>2605672
>но как я понял про asm их вообще мало
asm нынче не в моде, потому и книги по нему хорошо не продашь. Страшно подумать что будет, когда челы допилят гпт и копилот, потому что тогда вообще никакие книги не нужны будут. Это с одной стороны, но с другой стороны, если это будет век невероятного макакинга, то и багов будет в этом коде уйма, следовательно, если обладаешь навыками кодинга на ассемблере, плюс обладаешь навыками дизассемблирования, то в эпоху бесконечного макакинга можно иметь конкурентное преимущество. Так что сейчас нужно впитывать как губка всё, что связано с asm и дизассемблированием.
Аноним 10/02/23 Птн 10:41:41 #89 №2605723 
>>2605721
до логики и архитектуры программ gpt еще долго
Аноним 10/02/23 Птн 10:46:03 #90 №2605729 
>>2605723
>gpt еще долго
Долго != никогда. Так что готовь, как говорится, сани летом, а телегу зимой.
Аноним 10/02/23 Птн 10:52:43 #91 №2605731 
>>2605729
не на моем веку, на ближайшее время участь гпт в кодинге будет уровня помощника, стили погенерировать для ui и все такое
Аноним 10/02/23 Птн 10:57:02 #92 №2605735 
>>2605731
Так если всё больше и больше макак будут доверять прокодить часть своей работы недоработанному боту, то и кол-во багов в коде должно расти пропорционально. Так что, вот тебе и конкурентное преимущество.
Аноним 10/02/23 Птн 11:07:56 #93 №2605751 
>>2605735
ну так ты можешь и макакить как и раньше, у тебя уже будет преимущество, нейроночки тебе только будут быстрее подсказки выдавать, чем stackoverflow или когда что подзабыл, кодить все равно пока даже такое банальное человеку эффективнее
Аноним 10/02/23 Птн 11:12:32 #94 №2605756 
>>2605751
Короче, ты дебс, который нихуя не шарит в дизассемблировании и ревёрс-инжиринге, а потому и не понимаешь в чём именно сейчас преимущество у чела, который хорошо шарит в ассемблере и дизассемблировании; а потому и диалог с тобой я прекращаю уёбок, блять!!!!!
Аноним 10/02/23 Птн 11:19:36 #95 №2605764 
>>2605756
я шарю в нейросетях помимо всего прочего, потому что занимаюсь ими
Аноним 10/02/23 Птн 11:24:25 #96 №2605767 
>>2605764
Хочешь, сказать, что нейронки выдают сразу идеально правильный код?
Аноним 10/02/23 Птн 15:00:07 #97 №2606024 
2023-01-22x20:17:37.png
>>2605756
обнял подгоревшего няша :3

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

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

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

но не прямо сейчас, а потом, уже вот-вот
Аноним 10/02/23 Птн 15:14:14 #98 №2606060 
>>2606024
Когда нейросеть научится эвристическому подходу, тогда и приходи.
Аноним 10/02/23 Птн 15:24:26 #99 №2606088 
>>2606060
>эвристическому подходу
Да причём тут это? Ты сетке говоришь: "Я хочу, чтобы мой алгоритм выполнял то и то.", а она и пишет для этой задачи код. Любая программа состоит из большого числа таких вот элементарных подпрограмм, которые за тебя пишет сетка, а ты потом всё это компилишь. Т.е. от будущей макаки требуется только разбить задачу на мелкие подзадачи, а после того, как сетка напишет каждую подзадачу, задача макаки переводится в сбор всех этих подзадач в единое целое.

Вот и представь какое это непаханое поле для дизассемблирования и ревёрс-инижиниринга.
Аноним 10/02/23 Птн 15:31:11 #100 №2606106 
>>2606088
> Я хочу, чтобы мой алгоритм выполнял то и то.", а она и пишет для этой задачи код.
там такое говно неоптимизированное будет, даже если будет работать правильно, что разгребать это все придется тоже долго или деньги вбрасывать для увеличения накладных ресурсов для поддержания такого бизнеса, что одно и то же, поэтому - пока это только отдаленное светлое будущее
Аноним 10/02/23 Птн 15:37:20 #101 №2606120 
2023-02-10x15:29:57.png
2023-02-10x15:30:18.png
2023-02-10x15:33:51.png
y3iLOxBTuy4-00-01-18.png
>>2606060
бля реально ты пиздец бесячий душнила сука....
Аноним 10/02/23 Птн 16:35:11 #102 №2606236 
>>2606120
как будто от тут один тебе это пишет
Аноним 10/02/23 Птн 16:37:44 #103 №2606240 
>>2606106
Та что за прямолинейное мышление то, блять? Наоборот же!!! Сейчас у нас какая картина: говно на Мете (Еблокниге) выпускает под свою аську (ватсапп) обновы по 250-300 метров, блять: Ёбанный чатик получает обновы по 250-300 мегабайт, блять!!!!!!!! Их ебейшее говно под названием инстасрам, блять, нагружает сеть на 1,5-2 секунды на, блять, 25-50 Мбит/сек, когда ты перелистывешь в их приложухе один пост: БЛЯТЬ, ты в их ебанной приложухе, сука, перелистываешься с одного поста на следующий, и у тебя в этот момент, блять, нагрузка на сеть в 25-50 Мбит/сек в течении полутора-двух секунд, сука!!!!!!! Ты не хуйнул пальцем с дури по экрану смартфона, чтобы, блять, долистаться до середины всех постов, блять, за всю историю этой ебанной соц. сети, а просто пролистнул тихо, спокойно на след. пост в твоей выдаче!!!!!!!!!!!!! Ебать, веб-макаки шо вы, блять, делаете??????????!!!!!!!!!!!!!!

Понятно, что эти дебилы считают байты в уме только в фильмах как можно быстрее хотят выложить свою приложуху, чтобы захватить часть рынка, а дальше, блять, ебануто-огромными обновами всё стараться допилить, но также обсираться, как попрёт. Вот тут-то и помогут эти нейронки, потому что, когда не будет затрачиваться время на то, чтобы дебилам веб-макакам писать код, после того, как уже на блок-схемах или, блять, в майнд-картах или ещё где-нибудь, но сука, главное, чтобы не в голове, а то голова этих дебилов разорвёртся из-за такой сложной инфы, задача разложена на мелкие подзадачи, эти самые мелкие подзадачи скармливать нейронке, а остальное время оптимизировать всё то, что она высрала. Вот тебе и "коллаборация" нейронки и ревёрс-инженера, с навыками дизассемблирования. Так что и по времени и по деньгам будет примерно всё равно, но только приложуха, с большой долей вероятности, будет уже оптимизрована и ахуенна.
Аноним 10/02/23 Птн 16:40:45 #104 №2606250 
>>2606240
этот тролль порвался, несите следующего
Аноним 10/02/23 Птн 16:46:07 #105 №2606258 
16748064920460.jpg
>>2606250
>этот тролль порвался, несите следующего
Аноним 10/02/23 Птн 16:51:36 #106 №2606269 
2023-02-01x05:44:05.png
>>2606240
> нагружает сеть на 1,5-2 секунды на, блять, 25-50 Мбит/сек
ПОЧУВСТВУЙ СИЛУ ПИТОНИЯ ССУЧЕЧКА!!!

> Ебать, веб-макаки шо вы, блять, делаете??????????!!!!!!!!!!!!!!
нажми F12 и посмотри, хуле ты до нас доебался поехавший

>>2606258
питоняшка топ! пошел нахуй.
Аноним 10/02/23 Птн 16:58:12 #107 №2606279 
>>2606269
Как же у питонической шлюхи горит то!!!!!!!!!! Полыхает!!!!!!!!!!!! Мы байтоёбы тебя заменим, сучка!! Бойся нас и нейронок!!!!!!
Аноним 10/02/23 Птн 16:58:48 #108 №2606280 
>>2606258
теперь еще боевыми картинками будет тут тред засирать как школота типичная
Аноним 10/02/23 Птн 16:59:36 #109 №2606283 
>>2606120
> этот первый ответ уровня гороскопа в газете по обобщенности
И че, скоро у твоих нейросеток появится интуиция? А свои собственные суждения она вообще научиться делать?
Аноним 10/02/23 Птн 17:04:31 #110 №2606289 
>>2606280
Как же припикает то!!! Это боевая картиночка, похоже, многим суть на них раскрывает!!!!! Каааааайф!!!
Аноним 10/02/23 Птн 17:16:28 #111 №2606314 
2023-01-22x15:14:49.png
2023-01-22x15:15:12.png
Figure1.png
Figure1-cleared.png
>>2606279
> Мы байтоёбы тебя заменим, сучка!! Бойся нас и нейронок!!!!!!
ты смотри там от голода не умри байтоебик лол

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


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

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

я не двачной додик, я сам осужу кого хочешь
Аноним 10/02/23 Птн 17:30:20 #112 №2606346 
>>2606314
>300кнс то у меня
Чел, просто ты не понимаешь куда всё движется, потому что ты что-то бОльшее, чем мат. анализ и теор. вера, чтобы обучать свои нейроночки, не изучал. Чел, мне тебя искренне жаль, потому что ты сейчас со своим замыленным взгладом от того, что у тебя всё получается, роешь себе же могилу, обучая нейроночки. Я уже вижу твою голодную смерть, через 3-4 года.
Аноним 10/02/23 Птн 18:13:23 #113 №2606423 
GOPR3752.JPG
Screenshot20211026152752.png
image.png
2023-02-10x18:07:12.png
>>2606346
> мат. анализ и теор. вера
нахуй не нужны, это все форс для додиков-даунов и тупорылых скотопидорашьих кабанов, которые не могут отличить DS от CS

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

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

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

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

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


поэтому додик умрешь от голода ты, а я всегда найду чем заниматься по кайфу и рубить ловешку даже в постядерный апокалипсис.
Аноним 10/02/23 Птн 18:26:06 #114 №2606440 
>>2606423
>на мотоциклетные мозги, и сносить нахуй эту пропритарную пидарастию
Представил новости того периода:
Увеличение количества "хрустиков" в 15,6 раз власти связывают с неким программистом. Дело под свой контроль взял лично Министр Внутренних Дел.

>чем заниматься по кайфу и рубить ловешку
В итоге, после новости выше, оказавшись на зоне, ты не долго думая, понимаешь как рубить ловешку, продавая свои услуги(ротешник и очелло), что не нравится главным авторитетам этой зоны, ибо петуч это бесплатные ротешник и очелло, а этот просит деньги, твоим дыркам устраивают:
>ядерный апокалипсис
Аноним 10/02/23 Птн 18:33:50 #115 №2606451 
photo2022-07-1717-19-13.jpg
>>2606440
> количества "хрустиков
это константа, ты просто туповатый додик нихуя не разбирающийся в вопросе

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

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


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

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

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


> на зоне
кодеры это привелигированная каста, они пилят софт за еду, либо делают прозвоны и наебывают твою ебанутую бабку и мамку на бабки
Аноним 10/02/23 Птн 18:43:30 #116 №2606465 
>>2606451
>это константа
Туповатый додик тут только ты! Собираешься запускать авто-пилотные мотоциклы, но не знаешь того, что автопилот не с неба берётся, а его обучают, а в ходе обучения могут происходить разные казусы. Казусы, которые связаны с обучением твоей нейронки, я уже описал, и это похоже на правду, потому что ты туповатый додик, который не может связать А с Б. Этот диалог окончен! Мне больше нечего донести до дегенерата (тебя).
Аноним 10/02/23 Птн 18:43:40 #117 №2606466 
>>2605721
Если идеализировать, что нейронка умеет самообучаться, именно делать выводы, то да, может она и сделает что то и даже кого-то заменит.

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

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

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

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

Ну, мой вывод такой: на данный момент замена ограничена не более чем отсутствием реального мыслительного процесса. Имитация мышления это не мышление. Машина не может сделать анализ больший чем написан в документе или написанный в коде. Это так себе затея. Тогда все программисты превратятся в техпичав по сути. А зачем тогда? Сидеть писать тонны бумаг, чтобы превращать из в код? Тогда и второй вопрос встаёт - рентабельность бесконечной декомпозиции задач.
Аноним 10/02/23 Птн 18:52:51 #118 №2606489 
ODSJsviDSU-01-15-41.png
ODSJsviDSU-01-10-33.png
ODSJsviDSU-01-06-51.png
ODSJsviDSU-01-01-43.png
>>2606465
какой же ты блядь дегинерат сука ты элементарно прочитать ответ не можешь

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

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

но это все не важно, потому ты даун, а я нет. я собираюсь прописывать движение в колонне, но с учетом окружения и нейро-предикта
Аноним 10/02/23 Птн 19:08:10 #119 №2606520 
>>2606489
Ясно! Школьник-фантазёр перед нами. Пока есть такая возможность, то учи математику и физику, особенно налегай на олимпиадные задачки по физике, потому что они хорошо развивают как логику, так и математический аппарат. И поменьше трать времени на двач, потому что это помойка. И не прерикайся с мамкой. Понял, школота???! А то приеду и ремня тебе всыплю!!!
Аноним 10/02/23 Птн 19:17:24 #120 №2606535 
>>2606466
Чел, это всё, если не учитывать то, что нейронки не будут дальше развиваться.

Не понимаю, почему ты так прицепился к декомпозиции задачи? Разве это не является нормальным решением любой мало-мальски сложной задачи? Конечно, тут можно пофантазировать, допустим, отталкиваясь от того, что а для чего программа разбивается на на подпрограммы? Разбивается она для того, чтобы этот код можно было читать людям. А, если весь код будут писать нейронки, то зачем тогда вообще декомпозитить программу? Получил пласт кода и норм. Правда, как это оптимизировать - хз? Но и тут можно придумать что-нибудь, исходя из соображения, что на уровне машинных команд, по сути все программы, допустим Word, Openoffice writer, Гугл док, etc, выглядят одинаково. Потому можно обучить нейронку, как бы мыслить паттернами, ну и оптимизировать эти её паттерны.
Аноним 10/02/23 Птн 23:31:15 #121 №2606790 
>>2606535
>Не понимаю, почему ты так прицепился к декомпозиции задачи? Разве это не является нормальным решением любой мало-мальски сложной задачи?
Да ты прав, любую задачу нужно декомпозировать. Но, я не просто так написал про мышление.
В жизни ты можешь вертеть декомпозицию как хочешь, если ты пишешь задачу человеку даже так (только без предирок, мы ж про абстрактную задачу):
"Посмотри документацию, там не соответствует действительности решение: галка "запомнить" при входе стоять не должна, поэтому у тебя автологин" в принципе все. Ты поверхностно описал техзадание, на один кейс. Сплочённая команда, где люди работают более полугода они варятся в задаче и поймут про что и как идёт речь. Им не надо рассумоливать.
В случае с компьютером, ты ему должен объяснить досконально что надо, о чём идёт речь, какое место в доке, про что ты точно говоришь и номер главы и пункта документа. Иначе тебе компьютер сделает чтобы ГАЛКА НЕ СТОЯЛА,а логику не поменяет.
Другими словами ты будешь писать человеческими словами программный код. Только мнемоника поменялась.

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

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

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

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

Анон, я не хочу сказать что все пиздец нейронки говно и не нужно. Но круг задач очень сужается какая бы она умная не была. Ещё раз:
рентабельность, глубочайшая декомпозиция, программист пишет текст а не код и является прослойкой для нейронки.
Если и сейчас взглянуть на мир как в примерах выше, технологии появились, но не все заменили, но все же облегчили.
Аноним 11/02/23 Суб 12:53:16 #122 №2607213 
>>2606790
Жиза, большая часть разрабов мыслят о мире, только как о цифровом, потому что ни разу не физики и не инженеры.
Если перейти к физике, то там люди на порядке лучше нейронок решают проблемы, которые появляются в процессе исследования и разработок.
Аноним 11/02/23 Суб 12:55:21 #123 №2607218 
>>2607213
где итер додик, а где батки нормальной йомкости, ха сука?
Аноним 11/02/23 Суб 13:52:25 #124 №2607299 
>>2607218
Ты это сам с собой разговариваешь?)
Аноним 11/02/23 Суб 14:06:39 #125 №2607317 
>>2607299
нет)
Аноним 11/02/23 Суб 16:42:13 #126 №2607518 
>>2606489
Какая твоя игра на этом твг, датасаентист?
генрих_геев 11/02/23 Суб 23:50:02 #127 №2607941 
img.png
Аноны, можете пожалуйста объяснить как работает 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 )
генрих_геев 11/02/23 Суб 23:53:55 #128 №2607948 
Да кстати, забыл упомянуть, что в качестве имени файла я передаю набор широких байтов, с кирилическими и латинскими символами: file_имя.txt
Аноним 12/02/23 Вск 00:02:40 #129 №2607957 
>>2607948
Я если честно не могу там разобрать что ты понаписал. Ты бы лучше скриншот памяти показал и все.
Вот такие вот ребята приходят на митинг и хуярят хуй пойми что какие-то байты, биты, еще что-то там, потом переходы, возвраты. Уже голова на третьем предложении взрывается. И он там стоит 5 минут монолог читает, все молчат, а тимлид покорно кивает головой. Потом его это доебет он говорит: "Ну ты там в таску свои исследования кратко прикрепи... Давайте, кто там следующий?".

А так, если ты с клавы что-то вводил, может у тебя там нуль-терминатор.
Аноним 12/02/23 Вск 00:17:34 #130 №2607966 
>>2607957
>>2607957

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

(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
Аноним 12/02/23 Вск 00:21:47 #131 №2607970 
изображение.png
>>2607957
Ты ток не злись на меня, мне стыдно в этом признаваться, но я глупенький пока, учусь работать с отладчиками, пока работаю с gdb, и не в курсе как правильно сделать снапшот памяти...
Аноним 12/02/23 Вск 00:26:08 #132 №2607973 
>>2607957
Или тебе нужен вывод (gdb) info all-registers ?
Аноним 12/02/23 Вск 01:04:10 #133 №2607987 
image.png
>>2607970
Да скриншот обычный оперативки в отладке. Там байты есть.
Вот этого я просил.
>0x61fd70:
>0x61fd80:
>0x61fd90:

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

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

Посмотри что в массивах до введения в них данных и после.
Может ты когда массив выделяешь он забивается мусором?
Аноним 12/02/23 Вск 01:22:49 #134 №2607993 
>>2607987
Я другой но для этого есть мемсет 0 при инициализации чего либо
Аноним 12/02/23 Вск 01:35:17 #135 №2607997 
изображение.png
>>2607987
>Посмотри что в массивах до введения в них данных и после.
>Может ты когда массив выделяешь он забивается мусором?

Я посмотрел, а там мусор...там ведь нули должны быть ?
Я думал при объявлении массива в стеке, он автоматически нулями заполняется, а там каши.... bylaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Аноним 12/02/23 Вск 01:38:02 #136 №2607998 
>>2607997
ну теперь знаешь, что выделение памяти, если это не специальная функция, не присваивает никакие дефолтные значения, потому что это не всегда нужно, а ресурсы отъедает, поэтому если в твоей задаче это необходимо, то просто дописываешь зануление или какими там значениями тебе нужно
Аноним 12/02/23 Вск 01:44:47 #137 №2608002 
16488181523360.mp4
>>2607998
Самое обидное что я про это знал, но совсем забыл....
В общем, спасибо анон за помощь, хорошей ночи и хороших снов тебе.
Аноним 12/02/23 Вск 06:38:30 #138 №2608097 
fv03IaqMbA-00-03-31.png
>>2608002
какая милота на видосике :3

а еще говорят мл-педофилы кукареку :Р
Аноним 12/02/23 Вск 09:41:46 #139 №2608141 
image.png
двач привет, незнаю по адресу ли я, (незнаю у кого спросить) обьясните пожалуста почему getch() не работает? При вводе буквы ни одно из условий ниже не выполняется и в строке "предедущая команда" переменная Key не отображается
Аноним 12/02/23 Вск 09:54:25 #140 №2608156 
>>2608141
Заголовочный файл conio.h включил?
Аноним 12/02/23 Вск 10:25:47 #141 №2608161 
>>2608156
да, кониох написал, но прикол в том что даже без него программа работает так же, +принтф работает без стдио
Аноним 12/02/23 Вск 10:30:40 #142 №2608165 
>>2608161
Это какая-то идэешка, что ли? Раз так, то беги в отладчик, смотреть почему программа не работает так, как запланировал.
Аноним 12/02/23 Вск 10:33:39 #143 №2608167 
>>2608165
я не знаю что такое отладчик
программа называется кодблокс
Аноним 12/02/23 Вск 10:40:12 #144 №2608170 
>>2608167
Хз, анон, на стаке пишут, что это баг в винде и кто-то советует на прямую компилить программу, либо попробуй добавить заголовочный файл stdlib.h
Аноним 12/02/23 Вск 10:44:19 #145 №2608172 
>>2608170
Кинь код через pastebin, я попробую у себя в линупсе посмотреть что к чему.
Аноним 12/02/23 Вск 10:49:13 #146 №2608175 
>>2608172
#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++;
}
}
}
Аноним 12/02/23 Вск 11:04:11 #147 №2608179 
image.png
>>2608175
gcc
Аноним 12/02/23 Вск 11:12:28 #148 №2608189 
>>2608179
фак май моск, кто там интегер?
Аноним 12/02/23 Вск 11:23:55 #149 №2608206 
image.png
image.png
>>2608189
Короче, во-первых, попробуй заюзать функцию getchar, во-вторых, у тебя идёт сравнение между целым и указателем на строку, потому что функция getchar или getch получает код символа, а не сам символ. Вот пример: это выход из цикла и я изменил твой код пик2 (114 это код символа "r"). Попробуй для начала заюзать getchar, а потом дальше иди.
Аноним 12/02/23 Вск 11:40:51 #150 №2608237 
>>260820
а какая функция считывает именно символ?
Аноним 12/02/23 Вск 11:45:38 #151 №2608246 
>>2608237
scanf()
Аноним 12/02/23 Вск 11:52:38 #152 №2608255 
>>2608237
Спасибо, наконец то разобрался! часа два с этим getсhar промучился...
Аноним 12/02/23 Вск 12:04:26 #153 №2608282 
>>2608255
если что для ввода-вывода повсеместно sdl2 используют, лучше учи его сразу
Аноним 12/02/23 Вск 12:05:56 #154 №2608285 
>>2608255
Компиль напрямую, либо поставь себе на виртуалку убунту и кодь в ней через терминал, как диды. Обычно компилятор сообщает в чём проблема, при компиляции.
Аноним 12/02/23 Вск 12:06:54 #155 №2608289 
>>2608206
ещё какая то странная фигня, когда нажимаю esc, у строки "Dog_x:" пропадает буква D
Аноним 12/02/23 Вск 12:20:15 #156 №2608304 
>>2608289
Это явно баг идэешкия.
Аноним 12/02/23 Вск 12:57:17 #157 №2608362 
>>2608141
getchar возвращает тип int с ASCII кодом символа, а текст в двойных кавычках - это указатель на строку. Т.е. ты сравниваешь int с указателем.
Буква в одинарных кавычках - это как раз ASCII код символа, а не указатель на строку. Так что замени у себя в условиях двойные кавычки " на одинарные '
Аноним 12/02/23 Вск 14:05:39 #158 №2608443 
>>2608362
Двойные кавычки, одинарные, пять сортов каких-то скобочек, подчеркивания, табуляции. Почему нельзя сделать как у людей, и обозначать информацию общепринятыми методами a-zA-Z, а не какими-то манясимволами из глубин уникода?
Аноним 12/02/23 Вск 14:33:50 #159 №2608492 
>>2608362
а почему не выскакивает никакой ошибки, ведь Key инициализируется через char а не int
Аноним 12/02/23 Вск 14:37:06 #160 №2608494 
>>2608492
Неявное преобразование типов. Великом ту за клаб, так сказать.
Аноним 12/02/23 Вск 14:37:57 #161 №2608495 
>>2608097
МЛ- это датасаенс ?
Я видео взял из треда "субкота", вчера пару часов просидел в том треде, насмотревшись на котов и кошек, и мне оно тоже показалось очень милым, хотя надо всё таки было другое webm выложить, чтобы не было каверзных мыслей, ибо я не люблю педофилов, но в этом треде вроде как нормальный контингент, программисты, и таких персонажей тут нет надеюсь.
Аноним 12/02/23 Вск 15:40:11 #162 №2608602 
>>2608289
Ничего странного, как думаешь почему escape-последовательности в терминале называются ESCAPE-последовательностями.
Аноним 12/02/23 Вск 16:22:26 #163 №2608646 
2023-02-08x08:31:35.png
2023-02-08x08:25:28.png
2023-02-08x08:25:17.png
>>2608495
> МЛ- это датасаенс ?
обвиосли

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

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

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

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

> программисты
люди думающие, а интеллект это не краник, его не прикрутишь, он работает всегда и как вода - постоянно точит рамки дозволенного, это рост братишка, это энтропия - так устроенна вселенная!
Аноним 12/02/23 Вск 16:30:40 #164 №2608653 
а можно один дурацкий вопрос как принтэфнуть с розовыми буквами?
Аноним 12/02/23 Вск 16:40:00 #165 №2608664 
>>2608653
наложить шейдер
Аноним 12/02/23 Вск 16:44:39 #166 №2608677 
>>2608664
не фига себе это как
Аноним 12/02/23 Вск 17:00:25 #167 №2608700 
>>2608677
берешь полупрозрачную розовую пленку и она приклеивается к экрану под действием статического электричества
Аноним 12/02/23 Вск 18:41:23 #168 №2608862 
>>2608653
> как принтэфнуть с розовыми буквами?
В гугле "Управляющие последовательности ANSI"
Аноним 12/02/23 Вск 19:05:22 #169 №2608886 
color.png
>>2608653
а вообще если ты серьезно, то вывод зависит от эмулятора консоли и операционной системы, по нормальному как выше написали бери sdl2

для консоли винды - ну вот тебе пример на разные цвета, выбирай, устанавливай
Аноним 12/02/23 Вск 19:06:18 #170 №2608887 
Вопрос немного не по теме, а где тут на дваче борда, где можно спросить конкретно про компьютерные сети? здесь есть такое вообще?
Аноним 12/02/23 Вск 19:07:26 #171 №2608888 
>>2608653
Смотри в википедии ANSI escape sequences
Аноним 12/02/23 Вск 20:08:01 #172 №2608949 
hashcat.png
>>2608646
Слушай все люди не идеальны.
Вот ты считаешь нормальным, что например 40летняя чурка-педофил, толкает дурь крупными партиями и проводит время с 13-14 летними девочками ???!!!
А представь, что эта девочка будет твоей сестрой, или дочкой.

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

Предмет он блядь знает, ой пиздец....
Аноним 12/02/23 Вск 20:17:13 #173 №2608961 
>>2608886
А как "взять" sdl2? Не понял, что это значит
И с пикчи можно обьяснить, что этот цикл делает 255 раз?
Аноним 12/02/23 Вск 20:20:15 #174 №2608965 
>>2608495
Да нормальный видос, снимали же её родители и выкладывали потому что это выглядит смешно.
О чем люди думают то и пишут. Исходя из этого мнения можно вообще считать что нельзя выкладывать видео с маленькими девочками, а не то за педойфила примут.
Аноним 12/02/23 Вск 20:27:52 #175 №2608978 
>>2608961
>Не понял, что это значит
Забей. У тебя есть windows.h, его хватит.
>что этот цикл делает 255 раз
Печатает текст 256 раз (8 бит) разными цветами, очевидно же.
Аноним 12/02/23 Вск 20:30:23 #176 №2608985 
число a....mp4
кот и расческа.mp4
кот играет в шахматы.mp4
16349958364380.jpg
>>2608965
Спасибо.
Аноним 12/02/23 Вск 20:43:56 #177 №2609014 
photo2023-02-1110-47-14.jpg
>>2608949
> А представь, что эта девочка будет твоей сестрой, или дочкой.
тян не человек

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

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

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

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

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

так что отмени трясску и не завидуй успешным мужчинам с юга.
Аноним 12/02/23 Вск 20:52:14 #178 №2609020 
1640950272539-2.jpg
>>2608965
> Исходя из этого мнения можно вообще считать что нельзя выкладывать видео с маленькими девочками, а не то за педойфила примут
я бы так и сделал кстати

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

овуляшек с ютуба делающих из своих детей блядей на пожизненное нахуй, как и фк
Аноним 12/02/23 Вск 21:10:40 #179 №2609034 
изображение.png
>>2609014
>ЫГЫГЫГЫГГЫ МОРАЛФАААГГ В ТРЕДЕ, ЩА ЕГО ЗАТРАЛЛЮ ЫФХХЗВФПАХАХАХА ЫЫЫЫЫЫЫЫЫЫЫЫЫ
>Я ТИПА СМИЩНОЙ ТИПА ОЛД, КОРОЧ ВСЕМ СМИЯТЬСЯ, Я ЕГО ЗАТРАЛЛИЛ, ВСЕМ СМОТРИТЕ НА МИИЯНЯЯЯ ЫЫЫЫЭАЭАЭ


Дауненок, что ты забыл в этом треде ?
Пиздуй в /b/ыдлятню, там тебе будут рады.
Аноним 12/02/23 Вск 21:17:12 #180 №2609038 
изображение.png
>>2609020
Зря ты это написал дурачок, тролль мамкин)))
В отличие от /b/ этот тред долго не будут стирать, считай тебе повезло если ты сидишь через VPN+Tor)))
Посмотрим как ты будешь улыбаться, когда когда с тебе придут с обыском)))
Аноним 12/02/23 Вск 21:20:52 #181 №2609040 
16617257353550.jpg
>>2609034
слив засчитан додик.


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

ты ебанутый?
Аноним 12/02/23 Вск 21:32:40 #182 №2609062 
>>2608653
Бери сразу ncurses. Там за тебя уже диды погуглили ansi цвета.
Аноним 12/02/23 Вск 21:37:59 #183 №2609070 
изображение.png
>>2609040


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

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

Я тебе дам совет, остановись анон, закрой вкладки с этим сайтом, посмотри фильм, почитай книгу или подготовься к экзаменам в своей школе/ПТУ или куда ты там ходишь, перестань портить этот тред и свою репутацию, пока ты не нахлобучил себе ещё больше проблем.
Тебе ведь не нужно, чтобы в 6 утра в квартире у твоих родителей выбивали дверь ?
Аноним 12/02/23 Вск 21:57:16 #184 №2609082 
>>2609070
какой же ты душный зачморенный низушник...

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

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

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

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

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

поэтому пройди нахуй со своим манямиром и трясской.
Аноним 12/02/23 Вск 22:34:07 #185 №2609135 
изображение.png
>>2609082
Двачедаун ебанный, вжлинк мамкин, посмотрим кто из нас додик, и кто трястись будет, когда к тебе и твоим родакам в 4-6 утра придут дяди в форме, когда заберут твой комп. (и не только), твои родители будут визжать и охуевать от сыночки-долбоеба, а ты будешь с сонливым испуганным ебалом, своим тоненьким голосочком, оправдывать перед камерой всё что ты тут написал, следователь с радостью запишет это в рапорт)))
Аноним 12/02/23 Вск 22:44:19 #186 №2609153 
>>2609135
Анон хватит спорить с дебилом. Ты ж понимаешь, что он будет стоять до последнего, оставляя последнее слово за собой. Маняврирует, ставит анонов в неловкое положение за видосы, пишет что он против педоистерии, хотя триггерится на видос как педоистеричка.
Я вот вообще увидел в том видео, что анон >>2607998 хочет показать, типа он как кот пытается что-то понять внимательно слушая других анонов, и было в тему, кстати.

Так что отпусти ситуацию, чуваку просто надо свое говно излить, поизливает да съебет.
Аноним 12/02/23 Вск 22:53:12 #187 №2609168 
> эти жирные набросы на датасаентиста который до сих пор не уехал из этой страны
> (хотя были оферы и линкед мой китайцы чекают регулярно)
=)
Аноним 13/02/23 Пнд 05:13:52 #188 №2609314 
>>2608978
А зачем одно и тоже печатать столько раз?
Аноним 13/02/23 Пнд 07:39:11 #189 №2609331 
>>2601104
потому что ты долбоеб даже в душе не едешь как он работает. Мать твою ебали всем отделом
Аноним 13/02/23 Пнд 08:46:52 #190 №2609359 
>>2608886
а что значит первая строка после инт мейн?
Аноним 13/02/23 Пнд 08:56:03 #191 №2609363 
>>2609359
Тип Переменная Операция присваивания Функция(Константа);
Аноним 13/02/23 Пнд 09:04:20 #192 №2609369 
>>2609359
получаешь ссылку на консоль вывода своего приложения
Аноним 13/02/23 Пнд 09:05:59 #193 №2609370 
>>2609359
потом с помощью ссылки на эту консоль, настраиваешь ее "стиль" вывода внутри цикла
Аноним 13/02/23 Пнд 11:01:00 #194 №2609482 
>>2609359
Дескриптор консоли входного буфера если я не ошибаюсь.
Аноним 13/02/23 Пнд 11:08:36 #195 №2609487 
>>2609482
*выходного буфера
Аноним 13/02/23 Пнд 12:52:47 #196 №2609576 
%c
%d
%i

%f
%g

%s
%x

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

А почему столько одинаковых знаков для одного и того же?
Аноним 13/02/23 Пнд 16:35:01 #197 №2609818 
Поясните что значит (char[]){8, 9} в аргументе функции. Это строка с символами ascii 8 и 9? Перевожу на другой язык код.
Аноним 13/02/23 Пнд 17:23:45 #198 №2609917 
>>2609576
Видимо оставлены по аналогии с printf. Хотя при выводе это не совсем одно и то же, наприме %e выводит в научной записи. (1.2e+2).
Аноним 13/02/23 Пнд 17:29:43 #199 №2609924 
>>2609818
Не совсем строка, потому что нет завершающего 0. Поэтому просто массив из двух байт, 8 и 9. Char часто обозначает просто байт, а уж по совместительству массивы байт могут являться строками в кодировке ascii.
Аноним 13/02/23 Пнд 17:34:53 #200 №2609938 
>>2609924
Да точно, это байты
Аноним 13/02/23 Пнд 17:58:01 #201 №2609965 
Спецификаторы преобразования ф-ции printf.PNG
Спецификаторы преобразования ф-ции scanf.PNG
>>2609576
>для одного и того же

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

Вот тебе ещё скрины из книги Столярова:
Аноним 13/02/23 Пнд 18:45:42 #202 №2610019 
SAGE - Telesto.mp4
>>2607998
>>2607987

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

Теперь то я знаю что так делать нельзя, т.к. получается этот массив будет иметь неопределенное поведение, для таких целей нужно использовать выделение в куче calloc() и memset() (чтобы избавить массив от мусора и заполнить нулями на начальном этапе), я правильно понимаю, или есть какой-то способ попроще?
Аноним 13/02/23 Пнд 20:54:38 #203 №2610168 
1547596193402.png
>>2609965
>Это не одно и тоже
Таблетки.
Аноним 13/02/23 Пнд 21:31:57 #204 №2610229 
>>2610019
ну если тебе массив определенного размера 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/
Аноним 13/02/23 Пнд 21:56:36 #205 №2610248 
16755148508051.webm
>>2610229
Спасибо за ссылку анон :З
Аноним 13/02/23 Пнд 22:43:51 #206 №2610289 
смтарите счто нашелhttps://www.microsoft.com/en-us/research/publication/implementing-algebraic-effects-c/#
действительно можно же из сишки сделать самый топовый языкг псоле липса конеша
Аноним 13/02/23 Пнд 23:08:51 #207 №2610304 
>>2610019
Ещё есть ньюанс, функция malloc выделяет память, которая будет содержать неопределенные значения, а calloc выделяет память и заполняет её нулями.

Или вот ещё прикол.
Думаешь что объявление в функции
char *str = "stroka";
и
char str[] = "stroka";
это одно и то же?
А вот и нет.
В первом случае память со строкой будет доступна и после выхода из функции, а во втором случае строка создаётся в стеке функции, который перестанет сосуществовать после выхода из функции.
Аноним 13/02/23 Пнд 23:25:56 #208 №2610317 
>>2610304
>В первом случае
Память не выделяется в принципе, юзвер просто срет по адресу в созданном указателе говном. Если в следующей строчке юзвер создаст еще один указатель, который попадет в расположенный рядом участок памяти, программа вместо выполнения пошлет юзвера на хуi.
Аноним 13/02/23 Пнд 23:50:08 #209 №2610334 
>>2610304
>>2610317
ЕМНИП в первом случае это указатель на read-only секцию со статичными данными (например кусок загруженного в память .exe), при некоторых усилиях можно ее перезаписать конечно.
Аноним 13/02/23 Пнд 23:57:31 #210 №2610339 
1538575570229.png
>>2610334
Вот это я имею в виду. Записать в такую строку не получится, поскольку та память защищена флагом в операционной системе, но если бы получилось, то изменились все три строки, поскольку видно что везде используется один и тот же адрес.
Аноним 14/02/23 Втр 00:22:24 #211 №2610350 
>>2610304
>char *str = "stroka";

>char str[] = "stroka";
>это одно и то же?
Ну нет, я не настолько плохо знаю Си.
Я уже чего только не делал с массивами и указателями (двойными, тройными и т.д.)
А так да, ты всё верно подметил, я только недавно, посмотрев в очередной раз в отладчике, заметил что при вызове calloc массив при инициализации заполняется нулями.
Аноним 14/02/23 Втр 00:26:25 #212 №2610353 
>>2610317
А под юзвером ты имеешь ввиду обычного пользователя программы ?
Аноним 14/02/23 Втр 10:17:49 #213 №2610505 
>>2610168
И что ты мне это подсовываешь, шиз? Таблетки надо было принимать твоей мамашке, когда она была тобою беременна, так бы, возможно, у мира было бы в распоряжении на одного дегенерата меньше.
Как ты это объяснишь, уёба:
>%c
>%d
?
Аноним 14/02/23 Втр 10:25:07 #214 №2610514 
>>2609965
> Вот тебе ещё скрины из книги Столярова:
Это из какого тома/главы?
мне для себя интересно
Аноним 14/02/23 Втр 10:55:23 #215 №2610535 
>>2610514
2-й том, где речь идёт про основы языка Си.
Аноним 14/02/23 Втр 10:57:41 #216 №2610540 
>>2610304
многие оси сами затирают страницы нулями
Аноним 14/02/23 Втр 11:27:38 #217 №2610572 
>>2610540
Да вроде только при первом запросе на выделение страниц процессом. В целях безопасности, чтобы данные из старого процесса не попали в хитрые лапки.
Аноним 14/02/23 Втр 13:52:53 #218 №2610816 
А что это за недоразумение в треде сверху? Я сначала стало быть подумал, что /b открыл, это ведь тред по си, где бан за нерилейтед?
Аноним 14/02/23 Втр 20:02:23 #219 №2611376 
>>2611353
Под каждое устройство, операционку и железо свои либи и api.
Мне кажется без asmа особо далеко не уйдешь на одном Си.

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

https://learn.microsoft.com/ru-ru/windows-hardware/drivers/gettingstarted/writing-a-very-small-kmdf--driver
Аноним 14/02/23 Втр 21:32:39 #220 №2611460 
>>2611353
наверное для начала надо определиться что за драйвер ты хочешь сделать и для чего
Аноним 14/02/23 Втр 22:24:20 #221 №2611525 
>>2611353
Изучи API операционки, под которую будешь писать драйвер.
Например, вот для Linux https://www.kernel.org/doc/html/v4.11/driver-api/index.html

Ещё нужно изучить собственно саму железку, для которой будешь писать драйвер (Datasheet) и интерфейс, к которому подключена железка, например, PCI, SPI и т.д.
Ну и общие принципы драйверописания (что такое IRQ, DMA, режим ядра, пространство ввода-вывода и т.д).
Знание ассемблера при написании скорее всего не понадобится, но бывает полезно при отладке.
Аноним 15/02/23 Срд 00:07:16 #222 №2611638 
>>2611525
>Ну и общие принципы драйверописания
где про это можно почитать?
Аноним 15/02/23 Срд 00:28:31 #223 №2611653 
>>2611638
Наверное проще всего найти какую-нибудь книгу по написанию драйверов, типа такой http://dmilvdv.narod.ru/Translate/LDD3/Linux_Device_Drivers_3_ru.pdf
Только эта книга 2005г, там версия ядра Linux 2.6.10.
Лучше найди что-нибудь похожее, но по новее.
Ещё пригодится https://wiki.osdev.org/Expanded_Main_Page
Ещё можешь найти на торрентах книги Гук М.Ю. по интерфейсам. Правда они тоже старые, но могут пригодится, поскольку интерфейсы не так быстро меняются.
Аноним 15/02/23 Срд 03:13:45 #224 №2611676 
изображение.png
>>2611653
Спасибо анон.
HeapAlloc vs malloc генрих_геев 16/02/23 Чтв 18:36:42 #225 №2613582 
шиндовс жопег.jpg
HeapAlloc или malloc ?
Что лучше, и почему ?
Аноним 16/02/23 Чтв 21:15:56 #226 №2613749 
>>2613582
aligned_alloc
Аноним 17/02/23 Птн 00:19:40 #227 №2613905 
>>2613582
>проприетарная параша или стандарт
Хм даже не знаю.
Аноним 17/02/23 Птн 01:18:03 #228 №2613927 
изображение.png
>>2613905
Я уже узнал, оказывается HeapAlloc лучше использовать при вызове из DLL, т.к. при вызове malloc из DLL нужно оттуда же вызывать free, иначе существует вероятность повредить данные выделенные в куче, а лучше всего, если пишешь под винду всегда использовать HepAlloc, и дело тут не в проприетарности, а в том что винда так устроена.
Но я пока что на этапе лишь изучения джедайских искусств, поэтому обхожусь статической линковкой без использования DLL и использую malloc (не смотря на частое использование методов WinAPI).
Аноним 17/02/23 Птн 01:18:29 #229 №2613928 
>>2613905
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
Аноним 17/02/23 Птн 01:27:15 #230 №2613931 
>>2613749
>aligned_alloc
Почитал про эту функцию, спасибо анон.
Надо бы это в дизассемблере посмотреть... но мне лень
Аноним 17/02/23 Птн 02:35:02 #231 №2613948 
Стикер
>>2613928
>DLL
>Проприетарная параша
Аноним 17/02/23 Птн 07:20:44 #232 №2613998 
>>2613948
>i.e.
Аноним 17/02/23 Птн 15:27:53 #233 №2614410 
Друзья подскажите если кто знает, как в сдл2 создать вейленд сюрфейс для вулкана? х11 все норм
Аноним 17/02/23 Птн 16:28:42 #234 №2614454 
>>2614410
>сдл
какаято нинужная проприетарная парша
Аноним 17/02/23 Птн 17:04:34 #235 №2614511 
>>2614454
БЛЯДЬ ИДИ НАХУЙ ПЕТУХ!!!!
Я ТЕБЕ УЖЕ ПИСАЛ, СУКА ТЕБЕ МАЛО БЫЛО ПЕТУШОНИКС ЕБУЧИЙ!!!?
РЕШИЛ ЧТО ТЫ ЛИНУКСОИД НО ТЫ НИХУЯ СКОРЕЕ ВСЕГО НЕ ЗНАЕШЬ ПРО ЛИНУКС, ТВОЙ УРОВЕНЬ ЭТО МАКСИМУМ UBUNTU СКАЧАТЬ ЧТОБЫ В ВК ПОСИДЕТЬ И РАССКАЗАТЬ ВСЕМ КАКОЙ ТЫ ОХУЕННЫЙ ЛИНУКСОИД, ИДИ К ЧЁРТУ СО СВОИМ ТУПЫМ ЖИРНЫМ ТРОЛЛИНГОМ, ПЕРЕСТАНЬ ПОРТИТЬ ТРЕД, ЛУЧШЕ ПОМОГИ АНОНУ, А ЕСЛИ НЕ МОЖЕШЬ ПОМОЧЬ, ТО ИДИ НА ХУЙ ИЗ ТРЕДА СУКА!!!
ЭТОТ ТРЕД СОЗДАН ДЛЯ ПОДДЕРЖКИ, ВЗАИМОПОМОЩИ ДРУГ ДРУГА В ТЕХНИЧЕСКИХ ВОПРОСАХ, А НЕ ДЛЯ ТУПОГО ТРОЛЛИНГА, ИДИ В /b/ БЛЯДЬ!!!
Аноним 17/02/23 Птн 19:43:25 #236 №2614688 
>>2614511
...
>>2614454
> >сдл
> какаято нинужная проприетарная парша
Это тролинг я надеюсь?
С сдлем пока лень разбираться, глфв нормально под вейленд работает.
Аноним 17/02/23 Птн 19:50:41 #237 №2614707 
изображение.png
>>2614688
>...
Извини, видимо я тебя перепутал с другим аноном, думал это ты >>2613948 опять пишешь, просто в этом треде был один петушоникс который доебывался до анонов и портил тред.
Аноним 17/02/23 Птн 19:54:29 #238 №2614715 
>>2614511
Нормально тебя так разорвало.
Аноним 17/02/23 Птн 20:15:02 #239 №2614746 
изображение.png
>>2614715
Да.

>>2614688
>...
Ещё раз прошу прощения, просто это тематический тред, сильно раздражает когда много пишут всякие клоуны не в тему, и засоряют тред всяким мусором, а он и так еле живой.
Всё таки я рассматриваю это место как площадку, где аноны могут обмениваться технической информацией, давать полезные советы, делиться опытом, ссылками на статьи и литературу, помогать друг другу.
Аноним 18/02/23 Суб 14:28:48 #240 №2615315 
Анончики, здравствуйте.
На Ютубе есть некий Александр Григорин, продает свои курсы по программированию, подскажите, есть ли у него GitHub или типо того, просто хотелось бы посмотреть на его код-стайл или хотя бы уровень сложности кода, а то слова-то красивые подаёт, но смущает, что сидит на дваче, да и к тому же сидит на тупичке Гоблина и смотрит его до сих пор, да и прогоняет слишком популистские темы
Аноним 18/02/23 Суб 14:34:36 #241 №2615320 
>>2615315
Если у него норм курс, то уже давно должен на рутрекере лежать бесплатно, там и посмотри.
Аноним 18/02/23 Суб 14:59:10 #242 №2615342 
>>2615320
Меня больше ебет то, что он о себе говорит, какой-то он мутный и слишком выебистый, говорит, что участвовал в написании софта для китайских ледоколов и писал программы по типу CAD для графики, вот и интересует соответствует ли его гонор с его реальными заслугами
Аноним 18/02/23 Суб 15:01:08 #243 №2615346 
>>2615320
А за совет спасибо, поищу, только боюсь, что на рутрекеры выкладывают проги со всякими malware
Аноним 18/02/23 Суб 15:01:42 #244 №2615347 
>>2615346
не проги, а файлы*
быстрофикс
Аноним 18/02/23 Суб 15:50:47 #245 №2615407 
>>2615346
Если сомневаешься в раздаче, скачай на линуксе или в виртуалку и глянь, что там. Хз, какой малварь может быть в раздаче с видеозаписями, максимум раржипег какой-нибудь, и то врядли.
Аноним 18/02/23 Суб 18:15:08 #246 №2615613 
>>2615407
ВМ это часть диска в любом случае, вирус может и дальше распространиться

У меня просто на Винде стала командная строка появляться внезапно, боюсь как бы какой-то вирус или программу шифровальщик, или ещё хуже программа вор не закачал, проверял Malware bytes, ничего не нашло, из-за чего причина, как думаете, анончики
Аноним 18/02/23 Суб 20:25:58 #247 №2615824 
>>2615613
Судя по всему люди разбили лбы себе из-за моих слов, прошу прощения, плохо разбираюсь
Аноним 18/02/23 Суб 21:47:37 #248 №2615959 
изображение.png
>>2615613
>У меня просто на Винде стала командная строка появляться внезапно, боюсь как бы какой-то вирус или программу шифровальщик

Шифровальщик маловероятно, ты как обычный пользователь скорее всего не подцепишь шифровальщика (а если подцепишь то он не станет работать), тем более если ты находишься в 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
Аноним 18/02/23 Суб 21:55:08 #249 №2615970 
изображение.png
>>2615613
Хак. группировки которые зарабатывают на шифровальщиках, интересуют в основном крупные акулы бизнеса, их задача, это в первую очередь взломать корпоративную сеть, скомпрометировать контроллер домена, удалить бэкапы, "выпустить своего монстра" чтобы зашифровать сеть, и выставить ценник на миллионы долларов, а обычные юзеры из RU их не интересуют, так что на счёт шифровальщиков расслабься.
Аноним 18/02/23 Суб 22:00:21 #250 №2615975 
>>2615970
Там смищнее, они ищут партнеров, которые внедряют их малварь на найденные сочные цели за комисионные от выкупа, лол.
Аноним 18/02/23 Суб 22:01:52 #251 №2615979 
>>2615975
Да знаю, просто не написал об этом.
Аноним 18/02/23 Суб 22:05:22 #252 №2615982 
>>2615975
*смишнее
Аноним 18/02/23 Суб 22:15:40 #253 №2615996 
>>2615959
Спасибо за совет и ссылочку, собственно Defender я не выключал, он у меня всегда стоит по дефолту, просто скачал малварьбайтс и сканирую иногда систему, а картинка сразу навеяла воспоминания о байках Мурка, где он рассказывал как его вызвал фотограф, чтобы закинуть денег на биткоин кошелек, чтобы получить ключ для расшифровки своих файлов
Аноним 18/02/23 Суб 23:07:46 #254 №2616028 
>>2615315
>но смущает, что сидит на дваче,
Пруфы?
Аноним 18/02/23 Суб 23:47:32 #255 №2616074 
>>2616028
Это догадки, косвенные доказательства есть
Аноним 18/02/23 Суб 23:53:36 #256 №2616078 
>>2616074
Например?
По его фразам и приколам иногда прослеживается что-то битардское, но я думаю, что это отпечаток той интернет культуры, которая была в его молодости. Не обязательно, что он сейчас капчует.
Аноним 19/02/23 Вск 00:28:34 #257 №2616119 
>>2616078
Типо в середине видео останавливается, и спрашивает:"Хуй будешь?", или представляется в начале на Японском: "хай-ме-ма-ши-тэ, ва-ТА-ши НО на-МА-е ва Александр Григорин де-су." ?
Аноним 19/02/23 Вск 00:34:58 #258 №2616127 
>>2616124
Анимешникам ?
Первые имиджборды родом из Японии.
Аноним 19/02/23 Вск 11:22:06 #259 №2616352 
>>2615342
>для китайских ледоколов
Не, ну, если он писал такой софт, чтобы взламывать в киберпространстве какие-нибудь "Орасаки" или "Дойче Накасоне", то это, конечно, серьёзнейший тип и ему стоит верить и ему и его скилам. Это однозначно!
Аноним 19/02/23 Вск 11:39:40 #260 №2616383 
хуй знает где спросить. спрошу тут.
кто то пилить софт десктопный под гном линупсовый?
есть что путевое почитать по vala и gnome sdk gobjects ?
Аноним 19/02/23 Вск 15:09:37 #261 №2616591 
>>2616352
Не, как я понял имелось ввиду буквально ледоколы.
Я сначала тоже про киберпук подумОл.
Аноним 19/02/23 Вск 15:44:53 #262 №2616656 
2023-02-19 17-40-56.mp4
Есть тут эксперты по QT?
Кто может подсказать, в чём сцуко проблема?
Почему такие охуевшие визуальные баги?
Линия должна по сути, просто связывать два прямоугольника, но она ведёт себя как ебанутая, когда начинаешь прямоугольники двигать.
Аноним 19/02/23 Вск 15:46:22 #263 №2616661 
>>2616656
Так, извините - я тредом ошибся
Аноним 19/02/23 Вск 15:58:32 #264 №2616688 
>>2616591
Угу, так и есть, он говорил вроде бы, что даже там на верфи был, не знаю, можно ли ему верить, так как никаких документов не показывал, а это настораживает
Аноним 19/02/23 Вск 16:26:05 #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?
Аноним 19/02/23 Вск 16:35:05 #266 №2616731 
>>2616721
// what is printed here? 0, 1, or 2?
Бонусный вопрос - что напечатает C? А что C++?
Аноним 19/02/23 Вск 16:40:14 #267 №2616735 
>>2616731
С напишет нуль, а вот что С++ не знаю, я из cpp функцию printf не вызывал (но думаю тоже самое).
Аноним 19/02/23 Вск 16:41:18 #268 №2616737 
>>2616731
И вообще, что за тупой вопрос, как там может быть 1 or 2 если там j со значением 0 ?
Аноним 19/02/23 Вск 16:43:34 #269 №2616740 
>>2616731
А блин, я не туда посмотрел, извини, это я дурак.
Аноним 19/02/23 Вск 16:58:04 #270 №2616752 
>>2616740
Не страшно, анончик, вопрос со звездочкой.
Аноним 19/02/23 Вск 17:36:46 #271 №2616795 
изображение.png
>>2616752
Анон, ты настоящий Джокер.
Объясни пожалуйста, почему префиксный инкремент ++j,
сработал на printf("sizeof is %zu\n", sizeof A[++j]);, с другой стороны мы знаем что А - это указатель, значит можем привести к виду *(A+j=j+1), получается сначала срабатывает доступ к элементу, но лишь потом инкрементируется j т.е. как две последовательные операции, именно поэтому j увеличивается на 1 только после явного указания A[++j], я правильно понял ?
Аноним 19/02/23 Вск 17:51:06 #272 №2616821 
>>2616795
>>2616752

Хотя почему тогда ++i не увеличился... получается два инкремента перекрывают друг друга, и не дают правильно выполнить операции...
Нужно в дизассемблере посмотреть.
Аноним 19/02/23 Вск 18:06:28 #273 №2616857 
>>2616821
Мне это будет сложно объяснить. Автор загадки пишет, что A[++j][++i] не срабатывает, потому что компилятор точно видит что там просто double (из double A[n][m];)
А sizeof A[++j] срабатывает, потому что компилятор видит тип VLA, double[*]
По видимому, фокус в том, что sizeof от VLA должен работать в рантайме, а не в компайл тайме...
Аноним 19/02/23 Вск 18:42:25 #274 №2616919 
niteboi - u..mp4
>>2616857
>что sizeof от VLA должен работать в рантайме
Лол, буквально недавно поднимал эту тему, про инициализацию таких массивов в автоматической памяти, и мне никто не смог дать нормального ответа, и тем более ничего не писали про VLA, но у меня ошибка в коде была в том что я ещё забывал правильно инициализировать массивы в стеке (и в куче), из-за чего он содержал изначально мусор и программа неправильно работала, а всего то нужно было его нулями затирать.... но это уже другая история.

Спасибо анон за VLA.
Аноним 19/02/23 Вск 18:52:22 #275 №2616935 
изображение.png
>>2616857
Я тут ещё такую интересную статью нашёл:

https://habr.com/ru/post/681312/
Аноним 19/02/23 Вск 21:39:43 #276 №2617204 
>>2616919
Если в куче, то вроде как можно просто calloc место malloc использовать.
А инициализация нулями в современных Сях пишется char arr[100] = {0}, но на VLA это почему то не работает.
Аноним 20/02/23 Пнд 07:38:40 #277 №2617410 
>>2614410
там вроде у вэйланда косяки, поэтому его не торопятся добавлять
https://www.opennet.ru/opennews/art.shtml?num=57038
Аноним 20/02/23 Пнд 07:39:41 #278 №2617412 
>>2614454
>сдл
> какаято нинужная проприетарная парша
открытая либа, повсеместный стандарт... а я смотрю ты в теме
Аноним 20/02/23 Пнд 09:17:16 #279 №2617434 
А есть простая графическая библиотека для си? Кроссплатформенная. Куда не гляну - всё говно: sdl и аллегро тормознутые какие-то, и sdl даже круг нарисовать не умеет. Есть чё попроще? Для начинающего? Типа вот это фон, вот кружок нарисуй вот спиральку теперь очистки экран кроме фона. А не вызывай 20 функций для этого и мурыжь текстуры туда сюда обратно.
Аноним 20/02/23 Пнд 09:30:51 #280 №2617439 
кто там из анонов выше спрашивал про выделение памяти, вот интересная статья как раз на эту тему
https://habr.com/ru/post/707032/
Аноним 20/02/23 Пнд 09:40:12 #281 №2617443 
>>2617434
> всё говно: sdl
это одна из самых быстрых кроссплатформенный и наиболее проработанных, которая используется везде от стима до UE
> даже круг нарисовать не умеет. Есть чё попроще? Для начинающего? Типа вот это фон, вот кружок нарисуй вот спиральку теперь очистки экран кроме фона. А не вызывай 20 функций для этого и мурыжь текстуры туда сюда обратно
а вот это, что ты описываешь, вместо мурыженья текстур - это как раз и есть говно и тормоза, сначала разберись в вопросе, а уже потом свое ценное мнение оставляй про скорость работы
для начинающих, кому скорость не нужна, а нужно просто рисование каких-то примитивов есть всякие либы надстройки, открываешь гугл и находишь любую понравившуюся
https://www.ferzkopp.net/Software/SDL2_gfx/Docs/html/index.html
только в современном мире в реальных приложения отрисовка на холсте старыми методами винды уже давно в прошлом, используют контекст рендера opengl, так и даже он уже последние года отсиживает и вытесняется вулканом с одной стороны и wgpu с другой

функций как нарисовать круг/спиральку на чистом SDL2 в гугле тоже вагон, просто копируй и используй, но новички видимо теперь даже в гугл не умеют
Аноним 20/02/23 Пнд 10:29:04 #282 №2617452 
>>2617412
Так и нахуя нужен этот юзлесс понос, когда для задач языка в 146% случаев хватает консоли?
Аноним 20/02/23 Пнд 10:54:53 #283 №2617463 
>>2617452
у вас там сегодня день открытых дверей или как?
человек спросил как создать surface для vulkan
ты что там на консоли собрался выводить, ascii-render ему предложишь как альтернативу?
Аноним 20/02/23 Пнд 13:04:40 #284 №2617545 
>>2617434
Winapi в помощь. Берешь канвас и рисуешь кружочки, пишешь текст и так далее что угодно.
Аноним 20/02/23 Пнд 16:04:30 #285 №2617755 
Разработчики ядра тут?
Аноним 20/02/23 Пнд 16:05:09 #286 №2617756 
>>2617434
GTK на Си пишется
Аноним 20/02/23 Пнд 18:30:37 #287 №2617955 
1655032803443.gif
>>2617434
Рисовать кружочки - это на самом деле путь-ловушка. Поэтому на таких примитивах никто и не акцентируется. Тут лучше смотреть в сторону шейдеров.
Аноним 20/02/23 Пнд 18:31:35 #288 №2617960 
>>2617755
Да, ядра локалхоста.
Аноним 20/02/23 Пнд 22:22:15 #289 №2618175 
>>2617755
Тут.
Аноним 20/02/23 Пнд 22:26:14 #290 №2618178 
>>2617755
Туту ту туту ту ту ту ту ту тутутуту
Аноним 21/02/23 Втр 09:06:51 #291 №2618386 
>>2617755
пописываем немножко
Аноним 21/02/23 Втр 10:19:17 #292 №2618419 
>>2618386
>>2618178
>>2618175
модули ядра трудно писать?
Аноним 21/02/23 Втр 14:02:46 #293 №2618581 
>>2618419
Извини анон, я >>2618419 не разрабатываю ядро, это была шутка.
Аноним 21/02/23 Втр 14:03:41 #294 №2618582 
>>2618581
блядь сука, хотел написать "я >>2618178"
Аноним 21/02/23 Втр 14:06:05 #295 №2618583 
>>2618582
Ты уже совсем ту-ту-ру со своими шутками.
Аноним 21/02/23 Втр 14:18:34 #296 №2618600 
>>2618583
Ну нет не совсем ещё, я уважаю этот тред и он является для меня единственным и по настоящему ценным местом на дваче, ну ещё тред по ассемблеру, но его я пока что просто читаю.
Аноним 21/02/23 Втр 14:33:40 #297 №2618619 
>>2618419
ты же понимаешь, что это все очень относительно, ну мне не трудно, Васе будет трудно
Аноним 21/02/23 Втр 15:17:05 #298 №2618697 
>>2617955
Еба, скинь код, который это рисует, пожалуйста
Аноним 21/02/23 Втр 15:32:32 #299 №2618717 
1675694666909.png
>>2618697
Ну это первый попавшийся их гугла был. Он под юнити, но его можно адаптировать под что угодно, наверное.
http://anthonieportfolio.nl/portalshader.html
Можешь тупо на shadertoy поискать portal.
Аноним 21/02/23 Втр 17:44:32 #300 №2618842 
>>2618717
Блядский хлсл
Аноним 21/02/23 Втр 19:07:00 #301 №2618935 
Здарова, отцы.
Расскажите, существуют ли джуниоры Си девелоперы? Если да, то чем они занимаются? У меня вообще нет представления о том, что пишут на Си, только какие-то возможно устаревшие представления о каких-то заводах, микросхемах и т.д. Вообще, если кому не лень, поясните за Си в 2023 году, не конкретно в какой-то стране, а в целом, чем живёт.
Аноним 21/02/23 Втр 19:22:28 #302 №2618948 
>>2618935
любые вычислительные либы под любые задачи, хоть для верчения на серваках сайтов, что потом только дергается js или еще чем
пишут под кучу портативных устройств в куче компаний, эти ваши умные часы и микроволновки
пишут для дронов...
много всего короче на любой вкус и цвет
Аноним 21/02/23 Втр 19:42:20 #303 №2618963 
>>2618935
>Расскажите, существуют ли джуниоры Си девелоперы?
Ебать ну естественно! Они существуют потому что есть рынок и есть капитализм. Компания сама не заинтересована в обучении, учится - это твоя задача, а задача компании - делать деньги. Соответственно, недостаток опыта она всегда конвертирует в свою пользу. Компании выгодно найти дурачков, так называемых "джуниоров", которые будут пахать по 8 часов в сутки за 25 тысяч рублей в месяц. Тебя будут ебать по-всякому, продавливать на самую низкую зарплату, ниже дворника, при этом вешать обязанностей как на министра финансов. Короче, "джуниор" это синоним "дешёвого лоха".
Аноним 21/02/23 Втр 19:47:01 #304 №2618971 
>>2618963
Без выебонов никак не смог, да? Так и чесалось съязвить.
Аноним 21/02/23 Втр 19:48:34 #305 №2618976 
>>2618971
А чё не так-то? Хочешь сказать джуниор это не "дешёвый дурачок"?
Аноним 21/02/23 Втр 21:29:27 #306 №2619097 
>>2618935
Честно говоря не представляю, под микроконтроллеры сейчас проще писать на c++
Аноним 21/02/23 Втр 21:38:14 #307 №2619108 
1596210652270.png
1543109322474.png
1530483500061.png
1571736796763.png
>>2619097
Аноним 22/02/23 Срд 00:23:32 #308 №2619220 
>>2619108
Лол, это ведь почти сишный код, или мне кажется ?

мимо другой анон
Аноним 22/02/23 Срд 00:28:16 #309 №2619222 
>>2619108
Ой млять, я опять невнимательно посмотрел, там ведь и C++ думал там всё на C++ написано.
Засиделся за компом...
Аноним 22/02/23 Срд 00:33:06 #310 №2619223 
1663417779048.png
1563679272988.png
1527050808617.png
1598391861491.png
>>2619222
Я немного объебался со скриншотами
1 скрин - это как у него было на Си.
2 и 3 - а вот так стало на Си++ (удобное использование и всякие типы и контрль компилятора в либе).
При этом код сдулся в 3 раза, что должно по идее лучше сказаться на качестве.
По бинарникам получаемым тоже вроде все хорошо, нет какого то лютого оверхеда.
Не, правда, я без троллинга, я сам дед 40 лет, но когда я беру условную ардуинку, мне хочется писать надежно, а не как диды на Си писали... Но я на заводах не работал.
Аноним 22/02/23 Срд 01:16:16 #311 №2619243 
изображение.png
>>2619223
>а не как диды на Си писали
То чувство, когда ты зумер который топит за Си (из-за того что был знаком с очень крутым инженером (больше 40 лет) который замотивировал серьезно изучить Си)) а тебе пишет дед про C++ называя дИдами тех кто пишет на Си. :)
Аноним 22/02/23 Срд 08:27:50 #312 №2619329 
>>2619223
> хочется писать надежно
На контроллерах это не про С++. Особенно когда while(1){} это UB.
Да и большого количества абстракций стараются избегать. Можно, конечно, писать на Си с классами, но от того же сишного кода это будет мало отличаться. Поэтому в критических к надежности системах лучше на крестах не писать, а на них и не пишут.
Но поиграться с пердуинками или с stm32 на крестаэ прикольно, ради этого хотел бы вкатиться в кресты.
Аноним 22/02/23 Срд 13:50:33 #313 №2619578 
1674009694762.png
1567847876937.png
>>2619329
>На контроллерах это не про С++.
> Поэтому в критических к надежности системах лучше на крестах не писать
Это очень устойчивый миф, который годами не могут развеять.
>. Особенно когда while(1){} это UB.
Страшилка уровня /pr.
while(true) { int const volatile x = 1; }
В Си тоже полно UB, это никого не останавливает.
>Да и большого количества абстракций стараются избегать.
В с++ много compile-time и zero-cost. Которые дают удобные и мощные абстракции на стороне программиста, которые превращаются в пару инструкций asm.
Аноним 22/02/23 Срд 14:29:24 #314 №2619598 
75859CB6-D191-4D97-8890-B05107F5EBDA.jpg
>>2619223
Нууу 3000 строк тоже можно сжать используя макросы.
Главное же - в данном сишном коде легко модифицировать одну конкретную функцию, буде это понадобится, добавив любые безумные отступления от шаблона.
Аноним 22/02/23 Срд 14:52:01 #315 №2619625 
>>2619598
>используя макросы.
Угу, сейчас бы макросы в критическом коде использовать, без контроля типов компилятором.
>в данном сишном коде легко модифицировать одну конкретную функцию
Может можно, а может нельзя, ведь 99% случаях придется перелопачивать и остальные функции, потому что они были созданы методом копипасты, спасибо отсутствию перегрузок, и какую-то пропустить. Ведь про _Generic никто не знает, в книгах дидов его не было.
Аноним 22/02/23 Срд 17:11:49 #316 №2619739 
>>2619578
> Это очень устойчивый миф, который годами не могут развеять
Ты тоже этого делать не собираешься, похоже. А я бы послушал. И я не пытаюсь доебаться ес что, просто все что я писал - было в основном под контроллеры, опыта в других областях почти нету. Но базовая программа на большом количестве контроллеров содержит бесконечный цикл. ОСРВ FreeRTOS буквально состоит из множества while(1){}, и как там что-то писать на крестах?
> В Си тоже полно UB, это никого не останавливает
Потому что о нём заранее знают, есть тот же embedded c coding standard. Писать надёжно в контексте контроллеров - это не про кресты.
> В с++ много compile-time и zero-cost. Которые дают удобные и мощные абстракции на стороне программиста, которые превращаются в пару инструкций asm
Здорово, только писать на Си с классами писать не всем удобно, да и хз как это вообще делать под некоторые контроллеры. Когда говоришь, что здорово писать на крестах под эмбедед, лучше уточни под какую конкретно железку ты пишешь.
Асло, вот тут чел интересно пишет про краткость кода https://250bpm.com/blog:4/ интересно сравнение без шизы и поливания говном одного языка, по сравнению с другим. Я сам пытаюсь вкатиться в кресты, но больно дохуя там надо знать. А ещё заметил, что почти любой вопрос по крестам скатывается в долгое обсуждение стандартов, которые подзаебывают, и учить их ебанешься кмк. Но это чисто субъективная херня.
Аноним 22/02/23 Срд 17:28:07 #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 байт?
Аноним 22/02/23 Срд 17:39:43 #318 №2619782 
image
>>2619764
Размер строки 6 байт, так как в конце всегда 0.
Если выделишь 3 dw и скопируешь туда строку, то первое слово будет содержать 'e' : 'h'.
Аноним 22/02/23 Срд 17:43:40 #319 №2619788 
>>2619764
Возьми дебаггер и посмотри, что в памяти лежит.
Аноним 22/02/23 Срд 17:47:55 #320 №2619800 
>>2619782
>Размер строки 6 байт, так как в конце всегда 0.

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

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

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

>>2619788

Прикол в том, что он показывает, что инструкция, которая копирует строка в регистр занимает 8 байт, т.е. в независимости от типа данных или длины строки, он пишет, что инструкция занимает 8 байт. Мб, какой-нибудь дизассемблер сможет показать сколько именно ячеек памяти занимает строка, и как вообще выглядит она на уровне нулей и единиц, но я чёт не знаю какой дизассемблер поставить в линукс, который сможет показать именно на уровне нулей и единиц.
Аноним 22/02/23 Срд 17:59:25 #321 №2619824 
>>2619800
Любой дебаггер умеет показывать память процесса, в этом суть дебаггера
Аноним 22/02/23 Срд 18:03:22 #322 №2619835 
>>2619800
>Мне хочется узнать именно как на уровне нулей и единиц представлена строка.
Я открою тебе секрет, малыш.
echo -n hello|xxd -b
00000000: 01101000 01100101 01101100 01101100 01101111 hello
Аноним 22/02/23 Срд 18:35:46 #323 №2619879 
>>2619824
Как это посмотреть на gdb? У него есть есть команды x/(набор параметров), но чёт они не выводят то что я хочу.


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

>>2619836
>Нет такого
Да, ладно, мб неправильно выразился, мб память представлена не "ячейками", а сплошным массивом нулей (свободная память), либо сплошным массивом нулей и единиц (занятая).
>нулевые байты после каждого символа
И этих нулевых байтов будет один, если dw; три если, dd; семь, если dq?
Аноним 22/02/23 Срд 18:57:50 #324 №2619913 
image
>>2619879
>мб память представлена не "ячейками", а сплошным массивом нулей (свободная память), либо сплошным массивом нулей и единиц (занятая
Аноним 22/02/23 Срд 19:01:26 #325 №2619921 
>>2619913
Да, всё, можешь больше не отвечать! Я прозрел и теперь понимаю, как организована память в компьютере и что значат эти ваши db, dw, dd, dq. Спасибо анонам, которые попытались подвести меня до ответа.
Аноним 22/02/23 Срд 19:40:50 #326 №2620016 
1638985440823.png
1525283070926.png
>>2619739
>Ты тоже этого делать не собираешься, похоже. А я бы послушал.
Так полно конференций где серьезные дядьки это делают, скрины то с них, а они уже почти 10 лет этим занимаются, а я кто. Да и не хочу я прямо в Си треде таким заниматься, просто недоумеваю почему кто-то выбирает Си, как это происходит, какая у этого причина, ну кроме того что люди слышали что 10-20 лет назад можно было только на Си писать под микрухи.
>Но базовая программа на большом количестве контроллеров содержит бесконечный цикл. ОСРВ FreeRTOS буквально состоит из множества while(1){}, и как там что-то писать на крестах?
Ты наверное прикалываешься, потому что я в том же посте написал как пишется бесконечный цикл и даже скинул пункт стандарта, который объясняет почему. Но ты просто еще раз повторяешь что бесконечный цикл не написать.
> Писать надёжно в контексте контроллеров - это не про кресты.
Ну да, а си это пиздец как надежно. Я понимаю если бы речь шла про прости господи Раст, но говорить что Си++ менее надежен это мда.
Я не исключаю что нельзя пользоваться всеми фичами С++, и надо смотреть в ассемблерный выхлоп, и если у тебя там шаблон разворачивался в одну инструкцию, а после каких-то изменений стал разворачиваться в страницу кода, это проблема, и надо включать голову - но голову и в Си надо включать, у меня часто волосы дыбом от того какой код пишут и уверяют что он надежный.
>только писать на Си с классами писать не всем удобно
А примеры не про Си с классами, а про например constexpr вычисления времени компиляции. Про то что это будет не приседание с || и && с магическими битами, а вменяемый АПИ, когда ты явно говоришь что включаешь. Грубо говоря разница между пик1 и пик2. (Это не идентичный код, просто первый попавшийся с гитхаба).
>лучше уточни под какую конкретно железку ты пишешь.
Сейчас ни под какие не пишу, только пишу либу под llvm-mos чтобы собирать под C64/NES эмули.
Аноним 22/02/23 Срд 19:50:05 #327 №2620039 
1557013276389.png
>>2619764
Ради интереса могу посоветовать еще узнать как выглядит в памяти строка "helloµ死👋", и как это зависит от кодировки файла и кодировки терминала операционной системы.
Аноним 22/02/23 Срд 19:51:25 #328 №2620042 
>>2619879
Байты и биты объясняются в первых главах учебников по информатике, да думаю и учебников по Си.
Аноним 22/02/23 Срд 21:14:00 #329 №2620191 
>>2620039
Вот это интересно, анон, спасибо за совет - надо будет глянуть. UTF-8, пишут в педивикии, использует переменное кол-во байт, следовательно, я так понимаю строка в этой кодировке может быть не набором из однобайтных "ячеек", а смешанным набором из однобайтных и до 4-х байтных "ячеек". Только мне вот теперь стало интересно что за тип данных нужно указать в ассемблере, чтобы можно было работать с кодировкой UTF-8? Если указать dd, то это же может быть неэкономично?
Аноним 22/02/23 Срд 22:20:28 #330 №2620246 
>>2620191
ну так utf-8 - это просто массив байт
Аноним 23/02/23 Чтв 00:03:34 #331 №2620290 
>>2620246
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.

Анон, ты что-то путаешь.
Аноним 23/02/23 Чтв 01:11:51 #332 №2620307 
>>2620290
ну да, на каждый символ от 1 до 4 байт, соответственно строка - байтовый массив и будет, а это кодировка - как извлечь конкретный символ
Аноним 23/02/23 Чтв 01:32:04 #333 №2620318 
>>2620246
>>2620191

Любая строка это массив байтов, просто зависит от того, где они и как будут обрабатываться.
Суть в том, что Юникод являющийся современным стандартом, включает в себя знаки почти всех письменных языков мира, более того, практически все (или боьшинство) языков можно закодировать при помощи двух байтов, в Шиндовс для этого существует псевдотип 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-битную последовательность байтов))
Аноним 23/02/23 Чтв 01:34:16 #334 №2620323 
>>2620318
Вот пример такой программы (чисто для примера):

//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;

}
Аноним 23/02/23 Чтв 01:38:13 #335 №2620325 
изображение.png
изображение.png
>>2620246
>>2620191
Кстати, если вас интересует программирование на Cи в среде Windows, рекомендую книгу:

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

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

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

Знаю, хотел написать пример широких символов (строки в Юникоде) и в ANSI в gdb но мне чёт лень...
Вместо strlen() есть wcslen() и другие аналогичные методы с приставкой W для обрадотки "широких байтов".
Аноним 23/02/23 Чтв 01:55:11 #338 №2620333 
>>2620330
Вот >>2620323 я небольшой пример программы написал.
Аноним 23/02/23 Чтв 02:02:57 #339 №2620335 
1585890074489.png
>>2620332
Дело не в wcslen, а в том, что "символ" даже в двухбайтной может занимать несколько двухбайтов. Например, состоять из 5, как на пике.
Аноним 23/02/23 Чтв 02:07:29 #340 №2620336 
>>2620330
Понял анон, спасибо за информацию.
А можно об этом в какой-нибудь книге по системному программированию прочитать, потому что я в последнее время читал только вот это >>2620325

(Мне хочется именно по программированию, т.к. я всегда люблю совмещать теорию и практику вместе.)
Аноним 23/02/23 Чтв 02:07:58 #341 №2620337 
>>2620335
>>2620336
Аноним 23/02/23 Чтв 02:09:58 #342 №2620340 
>>2620335
А хотя, ты же про UTF-8, про это я знаю, ещё в документации читал... но особо сильно не интересовался.
Аноним 23/02/23 Чтв 02:13:15 #343 №2620341 
1649177872700.png
>>2620340
Нет, это везде. Посмотри на коды на картинке, они двухбайтовые. Глиф собирается из буквы a и значков.
Про книги не знаю, не читал, знаю только что есть C/C++/Java либа ICU. Она по идее идет с функциями преобразований какими-то и базами данных символов.
Аноним 23/02/23 Чтв 02:15:15 #344 №2620342 
1604144275981.png
>>2620340
А UTF-8 больше на Huffman code из zip похож - там чем чаще символ, тем он короче, а длинные кодируются единичками в старших битах.
Аноним 23/02/23 Чтв 02:20:23 #345 №2620343 
Nohzdyve The Tuckersoft ZX Spectrum Game from Black Mirror Bandersnatch.mp4
>>2620341
>>2620342
Понял анон, спасибо большое что поправил меня.
Аноним 23/02/23 Чтв 02:32:05 #346 №2620348 
изображение.png
>>2620341
>>2620342
Вот за это я и люблю этот тред, тут появляются умные аноны вроде тебя, поправляют и рассказывают что-то интересное, ещё раз спасибо.
Аноним 23/02/23 Чтв 09:05:10 #347 №2620406 
>>2620016
Я не на столько продвинуть как ты, анон. Поэтому элементарно не понимаю, как можно для, например моих микрух использовать С++. Да и во всех гайдах, по которым я учился, использовался Си. Хз короче, пытаюсь вкатиться по учебнику Праты потихоньку, но объем знаний слишком большой, а ведь помимо этого надо ещё и саму архитектуру конкретной микрух хорошо знать.
Аноним 24/02/23 Птн 08:58:22 #348 №2621203 
Как в GCC называется опция оптимизатора, которая для переменных из разных блоков кода не выделяет новую ячейку стека, а использует уже существующую? Например такой код:
```
int main(void)
{

{
int x;
SetX(&x);
}
{
int y;
SetY(&y);
}
}
```
С этой опцией у переменных x и y будут одинаковые адреса.
Как называется эта опция?
Аноним 24/02/23 Птн 09:11:35 #349 №2621205 
>>2621203
это называется указателеи
Аноним 24/02/23 Птн 09:57:12 #350 №2621225 
>>2621205
И какую же опцию передать в GCC, чтобы указатели были одинаковыми?
Аноним 24/02/23 Птн 11:17:23 #351 №2621275 
>>2621203
https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html
Аноним 24/02/23 Птн 14:43:56 #352 №2621429 
16422874621390.jpg
Сижу 10 лет на 1се, по выходных подрачиваю кресты для души.

На с++ сложно деньги зарабатывать? Вакансии вообще есть? Платят деньгами или ссаными тряпками?
Аноним 24/02/23 Птн 18:18:19 #353 №2621655 
>>2621203
Я думал это по умолчанию так, ведь ты новый скоуп открываешь. К локальной переменной же все равно нельзя обращаться после окончания ее лайфтайма, это UB. А опция наоборот существует чтобы отключать эту оптимизацию, для устаревших программ написаных кое-как.
Аноним 24/02/23 Птн 18:19:25 #354 №2621656 
>>2621429
Сложно. Тряпками. Вакансии и сам мог бы глянуть. С++ отдельный тред есть кстати.
Аноним 24/02/23 Птн 22:05:40 #355 №2621946 
image.png
>>2599695 (OP)
Почему не в шапке?
Аноним 24/02/23 Птн 23:12:41 #356 №2622020 
>>2621946
си шарп дитя корпорастов
Аноним 25/02/23 Суб 03:53:00 #357 №2622149 
>>2621946
А где 1С?
Аноним 25/02/23 Суб 19:38:30 #358 №2622738 
Все, тред сегфолтнулся?
Аноним 25/02/23 Суб 21:16:05 #359 №2622850 
>>2622738
выходные, праздники, отдыхаем
Аноним 26/02/23 Вск 14:20:03 #360 №2623363 
нахуй cmake нужен? Почему нельзя использовать gcc просто
Аноним 26/02/23 Вск 15:55:08 #361 №2623475 
>>2623363
cmake делает по описанию makefile или .sln или что то еще платформенное. Потом оно собирается.
Без него ты должен каждый раз ручками где-то править аргументы компилятора - релизная или дебаг сборка, целевая платформа, и т.д.
Аноним 26/02/23 Вск 18:08:29 #362 №2623712 
image
В C++ треде видимо всем похуй на расход памяти, спрошу тут.
Пишу под arduino, пытаюсь в C строки, потому что родной String выжирает очень много памяти.
Написал функцию, которая принимает сообщения от сервера и парсит.
>topic = "building_a/room_123/switch/light_left"
>payload = "on"
Оно разбивает на
>room = "room123"
>cmd = "switch"
>sw = "light_left"
И передаёт дальше.
Я всё правильно пишу? Так и надо?
Аноним 26/02/23 Вск 18:24:51 #363 №2623735 
>>2623712
Нет, все совсем не так, мне сейчас правда некогда пояснять, ну смотри ты начинаешь с копирования массива byte в массив char - зачем? Потом еще sprintf, а перед ним еще и strlen который пробежит всю строку. Потом ты еще раз копируешь все в массивы (хотя strcpy бы возможно соптимизировался быстрее). Не удивлюсь если ты еще и по значению копируешь массивы в process_msg.
Думаю C-way было бы просто один раз скопировать топик, заменяя / на \0 и передать указатели на первые буквы слов, и занимало бы это раз в 5 меньше кода.
Аноним 26/02/23 Вск 18:33:50 #364 №2623755 
>>2623712
А вообще, если ты пишешь только обработчик, который с этими строками ничего не делает, то наверное еще более Си-way было бы написать конечный автомат (возможно создать его генератором кода) который вообще ничего не копирует.
Ну типа смотрит сдедующий символ, если это / то переключается на следующий анализатор, если буква b, то ожидает следующую букву u, и так до _a, где он просто запишет в целую переменную результат - номер здания.
Аноним 26/02/23 Вск 18:47:12 #365 №2623779 
Как сделать указатель на структуру доступным в нескольких .c файлах?

https://pastebin.com/9PYP3wSN

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

Проект сорался без ошибок, но в реале крашится.
Скорее всего я чего-то не понимаю, поэтому объяснил как мог. Сорян.
Аноним 26/02/23 Вск 18:49:13 #366 №2623782 
>>2623779
А ты его инициализируешь? Просто если у тебя esp_modem_dce_t *dce; то там тупо мусор.
Аноним 26/02/23 Вск 18:50:45 #367 №2623784 
>>2623779
ЕМНИП объявлен он должен быть везде, а определен только в одном .c файле.
Аноним 26/02/23 Вск 19:18:04 #368 №2623825 
>>2623735
>ты начинаешь с копирования массива byte в массив char - зачем
Мне потом надо проверить payload == "on" например. Я в strcmp не могу передать byte, ему надо char.
>Потом еще sprintf, а перед ним еще и strlen который пробежит всю строку.
sprintf для вывода текста в консоль для дебага.
А без strlen я не узнаю длину строки. Она не передаётся для topic.
>один раз скопировать топик, заменяя / на \0 и передать указатели на первые буквы слов
Вот это гениально. Я бы в жизни до такого не догадался.
Попробую завтра с этим поиграться.
Правда не факт, что MQTT либа, которая мой коллбек вызывает, переживёт то, что я ей строку в памяти поменял, которую она мне передала.
>>2623755
>конечный автомат
Это какое-то нереальное кунгфу, о котором я пока ничего не знаю.
Аноним 26/02/23 Вск 19:37:38 #369 №2623872 
>>2623825
>Я в strcmp не могу передать byte, ему надо char
Ты бы хоть типа данных загуглил... Там тебя ждёт сюрприз.
Аноним 26/02/23 Вск 20:39:14 #370 №2624001 
>>2623872
Загуглил тип данных бул и понял, что мне порали в лицо.
Аноним 26/02/23 Вск 21:09:07 #371 №2624042 
>>2624001
_Bool в C с 99 года.
Аноним 26/02/23 Вск 21:44:53 #372 №2624087 
>>2623825
byte это скорее всего unsigned char, то есть скорее всего можно передавать.
>sprintf для вывода текста в консоль для дебага.
>А без strlen я не узнаю длину строки. Она не передаётся для topic.
Я понимаю, но ты просто жаловался что ардуиновский String жрет, но не думаю что он жрет больше чем у тебя тут.
Алсо опять же не факт что надо копировать в sprintf для отладки, ты же можешь напечатать debug сначала одну строку, потом другую.
>Правда не факт, что MQTT либа, которая мой коллбек вызывает, переживёт то, что я ей строку в памяти поменял, которую она мне передала
Не переживет, потому что там const char. Поэтому я написал что ее один раз скопировать все же придется.
>конечный автомат
Ну это довольно простая концепция так то. Если ты в состоянии state1 и пришел нужный символ ch, то перейти в состояние state2, а если нет - то или ошибка, или что-то другое началось.
Аноним 26/02/23 Вск 21:46:07 #373 №2624089 
>>2624074
Он битовый чар ¯\_(ツ)_/¯
Не меньше чара занимает, да. Если хочешь битовый, надо ебаться самому (но я не помню где не надо, в Zig вроде бы)
Аноним 26/02/23 Вск 21:47:22 #374 №2624092 
>>2624074
Алсо он чар потому, что у каждого элемента массива булов все равно должен быть уникальный адрес для указателей, а дробные адреса не завезли.
Аноним 26/02/23 Вск 22:33:30 #375 №2624124 
image
image
>>2624087
> ардуиновский String жрет, но не думаю что он жрет больше чем у тебя тут
Он прям в разы должен меньше жрать. Потому что каждый String+String то ли новый String создавал, то ли менял размер буффера и в моих
>"MQTT recv(" + topic + "): " + payload;
несколько раз пересоздавался буффер внтури, фрагментируя память.
Но именно тут это херня. Посмотри пик 1. Именно этот код крашил мне микруху. Причём не каждый раз. Причём там всё зависело от таймингов. Если добавить где-нибудь delay(5) то крашить переставало, либо наоборот ещё чаще начинало.
Слишком много плюсов было.
А стало пик 2. Память выделяется 1 раз при запуске и дальше пишется в неё весь лог, смещая старый текст. Краши пропали. Хотя из-за таймингов не факт, может просто везёт.
>ты же можешь напечатать debug сначала одну строку
Там не только вывод в консоль, она там ещё в MQTT отправляет сообщения и для вебсервера их откладывает.
>ее один раз скопировать все же придется
Ну я в принципе своей конвертацией в char* это и делаю.

А вообще я понял, что я только в начале изучения всякого этого C образного. Там ещё столько всего есть оказывается.
Аноним 26/02/23 Вск 22:43:53 #376 №2624129 
image.png
Скажите пожалуйста, почему если тип short занимает 2 байта, а тип double 8, то после компиляции при прибавлении единицы мне выводится в типе double сначала +8 байтов, а затем +2 байта? как такое возможно?

компилятор gcc
Аноним 26/02/23 Вск 22:52:14 #377 №2624137 
>>2624124
Я про то, что можно сделать debug("topic="); debug(topic); debug("buffer="); debug(buffer);
Ну иногда не до красивостей.
Аноним 26/02/23 Вск 22:54:34 #378 №2624141 
>>2624129
Почему ты решил что "затем +2 байта"? Первый указатель растет на 2, второй - на 8. Ты пользуешься арифметикой указателей, увеличивая его на 1 "шаг типа".
Аноним 26/02/23 Вск 22:56:13 #379 №2624145 
>>2624141
оказывается у меня проблемы с переводом из 16 ричной в 10, вопрос исчерпан, всё верно получается...
Аноним 26/02/23 Вск 22:59:15 #380 №2624146 
>>2624145
А, да, я подумал но не написал. Там же круглые цифры, на 0 заканчиваются. Это 16, да.
Аноним 27/02/23 Пнд 01:10:38 #381 №2624204 
1639464412051.webm
>>2623825
>>конечный автомат
>Это какое-то нереальное кунгфу, о котором я пока ничего не знаю.
Аноним 27/02/23 Пнд 20:30:45 #382 №2624929 
>>2623712
Убери динамический массив, сволоч. Из-за таких как ты все!!!
Аноним 27/02/23 Пнд 20:48:05 #383 №2624951 
>>2624042
> _Bool
Не нужен с таким именем.
Аноним 27/02/23 Пнд 21:18:48 #384 №2624987 
1667961343737.png
>>2624951
Все новые кейворды в Си вводятся в виде _Name, чтобы у дидов которые надефайнили не отвалилось.

Остальные могут явно подключить #include <stdbool.h>
и писать
bool variable = true;
Аноним 27/02/23 Пнд 21:27:37 #385 №2624999 
>>2624987
Теоретически лет через 10 когда все перейдут, можно переделать в кейворд, а потом через 20 лет переходного периода _Bool задепрекейтить.
Аноним 27/02/23 Пнд 21:39:02 #386 №2625007 
В конце концов, nullptr же введут в C23.
https://en.wikipedia.org/wiki/C2x
Алсо int foo() теперь будет означать int foo(void).
Аноним 28/02/23 Втр 02:33:55 #387 №2625251 
Когда я делаю malloc(), я могу получить nullptr если не хватает памяти.
А когда я делаю "char str[xxx]", я как должен понять, что памяти нет?
Аноним 28/02/23 Втр 09:06:59 #388 №2625368 
>>2625251
> они начинают догадываться
Аноним 28/02/23 Втр 10:16:25 #389 №2625413 
>>2625251
Тебе сегфолт прилетит.
Аноним 28/02/23 Втр 10:22:36 #390 №2625420 
0citbt9pqmja1.mp4
image
>>2625368
Хоспаде, какие же кожаные мешки бесполезные.
Память оказывается в стеке выделяется. Я не знал.
Аноним 28/02/23 Втр 10:33:43 #391 №2625427 
>>2625420
Тебе написали, что для динамических массивов надо использовать malloc только на три абзаца.
Аноним 28/02/23 Втр 10:52:17 #392 №2625445 
>>2625420
И нахуй тогда этот тред нужен?
Аноним 28/02/23 Втр 10:57:51 #393 №2625454 
>>2625445
Чтобы угорать с додика, пишущего под винду, бесконечно сраться по какому-нибудь UB, типа i++ и мечтать о перекате в С++.
Аноним 28/02/23 Втр 12:08:36 #394 №2625554 
>>2625420
>>2625251
Си тред. 2023. Итоги.
Аноним 28/02/23 Втр 16:35:49 #395 №2625890 
>>2625251
>доктор, когда я так делаю, больно
Не делай так. Стек не для выделения больших объемов.
Аноним 28/02/23 Втр 16:36:46 #396 №2625892 
>>2625420
Ну вообще то еще есть alloca. А еще есть VLA.
Аноним 28/02/23 Втр 21:34:34 #397 №2626252 
Сап, програмач
Джавист, 3 года опыта (банк), писал в основном на спринге (rest + бекенд для личных кабинетов)
Сейчас предлагают на работе новый проект: программировать под Java Card
Кто имел опыт? Или это болото и лучше туда не лезть?
Аноним 28/02/23 Втр 22:02:44 #398 №2626287 
>>2626252
> Сейчас предлагают на работе новый проект: программировать под Java Card
> Кто имел опыт? Или это болото и лучше туда не лезть?
Это охуенно. Как МК, только пишешь на урезанной яве. Никакой периферии, только апи. Тройной дэс, ух бля.
Аноним 28/02/23 Втр 22:38:20 #399 №2626305 
>>2626252
>Java Card
Лучшее, что изобрело челов-ство.
Аноним 01/03/23 Срд 21:07:25 #400 №2627024 
Здравствуйте, анончики, учусь в ВУЗе и зашел вопрос о требованиях к джунам, сам в дискуссии не участвовал, одни говорили, что в резюме лучше не врать, ибо мир тесен, разнесут остальным, что ты врунишка, другие говорят, что эти требования как в макросах смехуечков -- "опыт разработки __ года для джуна", так сказать фильтр для тупых, ибо все понимают, что у джуна, ну, максимум год может быть

Извините, что немного не по теме Си
Аноним 01/03/23 Срд 23:43:12 #401 №2627175 
>>2627024
что сказать то хотел?
Аноним 01/03/23 Срд 23:48:28 #402 №2627177 
>>2627024
Если ты в JS, то ври конечно, а если в Си, то не ври. Тебя еще и служба безопасности проверит, это же будет оборонка или что то подобное.
Аноним 01/03/23 Срд 23:53:43 #403 №2627183 
>>2627175
Где истина? Кто прав из двух сторон?
генрих_геев 02/03/23 Чтв 15:41:54 #404 №2627719 
Explaining Meme Programming Languages.mp4
Аноним 05/03/23 Вск 23:28:15 #405 №2630997 
>RGBTRIPLE (image)[width] = calloc(height, width sizeof(RGBTRIPLE));

Поясните, аноны, зачем выделять под массив, в котором width элементов, память под height width элементов? И нахуя там круглые скобки в названии массива? В чем отличие от RGBTRIPLE image [width]?
Аноним 05/03/23 Вск 23:29:44 #406 №2630999 
Ебучая разметка, вместо знака умножения впердолился курсив
Аноним 05/03/23 Вск 23:30:20 #407 №2631001 
image.png
Пикрил, короче
Аноним 05/03/23 Вск 23:57:10 #408 №2631028 
Все, епта, понял, это так двумерный массив делается через указатель, ну и залупа. Почему нельзя просто сделать RGBTRIPPLE [height] [width]? Весь массив это просто указатель
Аноним 06/03/23 Пнд 02:34:22 #409 №2631087 
>>2631028
>Весь массив это просто указатель
В смысле нельзя ?
Тебе никто не запрещает сделать так в стеке.
Аноним 06/03/23 Пнд 12:55:35 #410 №2631435 
>>2631028
Потому что [height][width] это не двумерный массив, а массив массивов (а значит, массив указателей), иными словами они могут вести в разные места, а не быть последовательно в памяти, и доступ там через лишний указатель.
В c++23 есть Multidimensional subscript operator array[height, width], но в Си такого нет, кажется, даже через расширения.
Поэтому и делают по старинке, 1 плоский массив и доступ через i + j * width.
Аноним 06/03/23 Пнд 13:16:09 #411 №2631454 
>>2631435
Нихуясе прикол, я думал, что двумерный массив это и есть просто массив массивов. Понял, спасибо. Обращаться к i элементу первого массива, получается, тогда надо так: звездочка(m[0] + i звездочка sizeof(int))? Если массив из инт офк
Аноним 06/03/23 Пнд 13:54:49 #412 №2631489 
скажите пожалуйста, я вот одно не понимаю, неужели все эти массивы применяют при разработке софта? какой код не посмотрю, там просто методы друг дёргают и либы всякие
Аноним 06/03/23 Пнд 14:08:19 #413 №2631504 
>>2631489
Ну так ты посмотри исходники какого-нибудь кодека или ядра ос.
Аноним 06/03/23 Пнд 14:21:55 #414 №2631514 
>>2631489
Попробуй парсер для .bmp написать и через условный OpenGL на экран картинку вывести. Вот и узнаешь зачем динамические массивы нужны.

>>2631028
???
После выделения памяти под двумерный массив в куче через calloc/malloc, ты можешь к элементам массива через A[j] обращаться(если ты массив массивов создаешь). Если по каким-то причинам тебя не устраивает массив массивов, то можно двумерный массив в одномерный запихнуть, тогда и будешь с голыми указвтелями ебаться.
Аноним 06/03/23 Пнд 14:26:21 #415 №2631523 
>>2631514
> A[j] [k]
Конечно же две скобки. Ебучая макака не может разметку для тематической доски сделать.
Аноним 06/03/23 Пнд 14:31:16 #416 №2631528 
>>2631454
>>2631435
>Поэтому и делают по старинке, 1 плоский массив и доступ через i + j * width.

Апхахах да, это Си, я уже привык.
Осталось плюсы выучить, но они мне пока не нужны.
генрих_геев 07/03/23 Втр 01:21:00 #417 №2632212 
Муд.mp4
Привет аноны.
Можете пожалуйста объяснить, какие опции передаются параметру -Wl,... через запятую, его использует линковщик на этапе сборки, и как я понимаю его также нужно использовать для того чтобы указать путь до импорта динамической библиотеки, помимо параметра -L.

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

Как вообще правильно слинковать свою программу с динамической библиотекой в Windows, используя gcc ?
генрих_геев 07/03/23 Втр 01:42:20 #418 №2632221 
Top Sigma Males Grindset..mp4
А всё, я туплю.
-Wl это параметр для дополнительных опций линковщика, как например поиск нужной dll для работы программы.
Тогда возникает другой вопрос, как правильно указать в опции -Wl путь для поиска динамических библиотек ?
Аноним 07/03/23 Втр 12:26:09 #419 №2632424 
Как визуализировать аудиопоток как в эквалайзерах?
Аноним 07/03/23 Втр 13:00:47 #420 №2632479 
>>2632424
Ну посмотреть что там в файле, изучить формат.
У всех аудиоформатов (тут к гадалке не ходи) будет какой-то единый интерфейс, типа
время @ частота @ громкость
Ну и дальше понятно
Аноним 09/03/23 Чтв 10:01:56 #421 №2634464 
Когда-то был сайт, где можно было вбить сложный сишный код с указателями, и тебе их расшифровывало - где указатель, а где дереференсинг указателя, и т.д.

Не напомните?
Аноним 09/03/23 Чтв 10:05:32 #422 №2634466 
image.png
image.png
image.png
image.png
>>2634464
Ладно, я аутист немножко.
Зато зацените какой я ещё онлайн тул знаю.

https://pythontutor.com/visualize.html#mode=display
Аноним 09/03/23 Чтв 14:31:45 #423 №2634690 
>>2634466
чо за хуйня? чем printf(...) не устраивает...
наплодили ебланов которые не понимают как работает память
Аноним 09/03/23 Чтв 15:01:15 #424 №2634709 
>>2634690
Ето пример - демонстрация работы указателя на функцию.
Аноним 09/03/23 Чтв 15:05:51 #425 №2634711 
Ткните ебалом в тред, где для слабых умом, рассказывают как настроить окружение, Эклипс там, или DS-5, для работы с определенным камнем?
Аноним 09/03/23 Чтв 15:07:14 #426 №2634713 
>>2634711
Надо писать код в блокноте
Аноним 09/03/23 Чтв 15:13:36 #427 №2634716 
>>2634713
А дальше? Ручками переводить в машинные коды?
Аноним 09/03/23 Чтв 15:38:06 #428 №2634736 
>>2634716
Скачай интерпритатор или компилятор, на чем ты там кодишь, хотя судя по тому, что в треде про Си, то компилятор. Скачай MinGW, если на Винде, или gcc, если на Linux, там это через терминал можно сделать
Аноним 09/03/23 Чтв 15:39:34 #429 №2634738 
>>2634711
Пиши код в SublimeTxT, там даже можно компилить код, если в PATH прописан путь до компилятора
Аноним 09/03/23 Чтв 16:39:36 #430 №2634785 
>>2634736
>>2634738
Я вроде по русски спросил про Эклипс? Зачем вы меня грузите? Я купил на торрентах DS-5 от самого ARM, только не разберусь как настроить по определенный камень.
Аноним 09/03/23 Чтв 16:42:58 #431 №2634790 
>>2634785
ПС. Вы же в курсе, что на С можно ваять под разнообразные контроллеры/SoC? А не только под х86?
Аноним 09/03/23 Чтв 17:37:10 #432 №2634835 
>>2634790
Если не можешь осилить текстовый редактор, программирование не осилишь тем более, это фильтр от даунов.
Аноним 09/03/23 Чтв 18:05:32 #433 №2634878 
>>2634711
я всё в gnu emacs пишу
Аноним 09/03/23 Чтв 18:38:15 #434 №2634910 
>>2634790
Как нахуй разница, если все на ассемблер переводится, а ассемблер на язык машинных команд?inb4: да знаю я, что есть разные версии ассемблера, не души, ты понял, что имел в виду
Аноним 09/03/23 Чтв 18:57:00 #435 №2634918 
>>2634878
Помню приглашенный гость из Варгейминга, на писал который писал, на интервью АйТи борода советовал его
Аноним 09/03/23 Чтв 19:48:14 #436 №2634971 
>>2634835
>Если не можешь осилить текстовый редактор
Ты совсем дурачок? Причем тут текстовый редактор, если мне нужно компилить код под определенный контроллер?
Аноним 09/03/23 Чтв 20:43:47 #437 №2635017 
>>2634918
А что в флаге компиляции нельзя указать эту фичуэто не притензия, просто самому интересно?
Аноним 09/03/23 Чтв 20:44:30 #438 №2635020 
>>263497
Бля, reply: >>2634971
Аноним 10/03/23 Птн 02:35:46 #439 №2635264 
Анончики, как положить три байта из памяти в uint? Указателем офк
Аноним 10/03/23 Птн 02:43:57 #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
Аноним 10/03/23 Птн 02:48:26 #441 №2635268 
>>2635267
Хз братан, у тебя какой-то странный синтаксис вообще. Это си или плюсы?
Аноним 10/03/23 Птн 02:49:41 #442 №2635269 
>>2635268
Си, из книги 90х.
Это дрочево с указателем на функцию, можешь погонять по шагам в pythontutor.
Аноним 10/03/23 Птн 02:55:21 #443 №2635271 
>>2635269
Я, видимо, слишком тупой для такого, половину строк в твоем коде вообще не понимаю. Че такое, например, intstrlen()? Что возвращает strlen без параметров и почему ты хочешь этим назвать переменную?
Аноним 10/03/23 Птн 03:07:10 #444 №2635273 
image.png
image.png
image.png
>>2635271
Это функция "донор", "объявлять" её требуется, чтобы можно было заиметь на неё указатель. Именно её мы будем дергать путём подсовывания в другую функцию указателя на неё.
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
Аноним 10/03/23 Птн 03:08:05 #445 №2635274 
>>2635271
И да, это далеко не самый удачный пример
Аноним 10/03/23 Птн 03:13:38 #446 №2635275 
>>2635273
>>2635274
Пиздос сложна
Аноним 10/03/23 Птн 05:08:46 #447 №2635279 
>>2635275
Концепт проще синтаксиса, там львиная доля сложности это неудобоваримый синтаксис.
Аноним 10/03/23 Птн 05:38:52 #448 №2635285 
>>2635275
https://metanit.com/c/tutorial/5.11.php

Очень даже просто, если не лезть в дебри типа https://metanit.com/c/tutorial/5.12.php
Аноним 10/03/23 Птн 05:40:53 #449 №2635286 
image.png
>>2635264
Аноним 10/03/23 Птн 05:43:30 #450 №2635288 
>>2635264
Если честно вообще не понял тебя, мог бы хотя примерно вводные данные описать
Аноним 10/03/23 Птн 10:18:00 #451 №2635437 
>>2634711
В эклипсе особо и настраивать ниче не надо. Скачиваешь тулчейн ARM Cross GCC для компиляции, openOCD для отладки. При создании проекта в окошках подтягиваешь всё это дело и кодишь.
Аноним 10/03/23 Птн 10:28:17 #452 №2635449 
1599432622739.png
>>2635273
Это называется K&R синтакс, и его в ближайшие годы отменят.
Раньше компы были слабее поэтому позволялось вместо
int foo(int x, char☆ c) { ... }
Писать
int foo()
int x
char☆ c
{ ... }
Переписал твой пример по современному.
И не забывай переключить язык на C в годболте, если там C++ выставляется сам.
Аноним 10/03/23 Птн 10:43:24 #453 №2635466 
>>2635449
Не пон, но ведь в первом примере вызов функции с аргументами, а во втором вызов функции без аргументов. Это же не одинаковые записи.
Всм в стек-то может оно всё запишется при вызове, но функционал-то разный.
Аноним 10/03/23 Птн 10:47:02 #454 №2635476 
1605913009305.png
Что же касается указателей на функции
char☆ foo(int param) - функция
char☆ (☆ptr)(int param) - указатель на функцию

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

Алсо, тайпдефы.
Аноним 10/03/23 Птн 10:50:22 #455 №2635479 
>>2635466
Я тебя не понял.

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

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

Сорри что многабукв.
Аноним 10/03/23 Птн 10:56:50 #458 №2635484 
>>2635481
> а ее объявление в стиле K&R
Заболтался. Просто объявление.
Ну как ты объявляешь
int foo();
Аноним 10/03/23 Птн 12:48:04 #459 №2635617 
image.png
>>2635449
Всё равно не пашет....
В отличие от 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

там всё работает без лишних движений.
Аноним 10/03/23 Птн 12:53:41 #460 №2635627 
>>2635476
Этот пример тоже интересен, спасибо!

Но не очень понимаю, зачем тут тайпдефы - они ведь тут тупо код в полтора раза раздули, и всё.
Аноним 10/03/23 Птн 13:19:14 #461 №2635657 
>>2635449
>Это называется K&R синтакс, и его в ближайшие годы отменят.
c чего его должны отменить? новые стандарты по идее должны сохранять обратную совместимость
Аноним 10/03/23 Птн 16:59:35 #462 №2635866 
>>2635617
Поясняю - объявлять int strlen() не нужно сейчас, потому что ты его и так инклюдишь. А если объявляешь, теперь тип возвращаемого значения size_t, а не int, о чем компилятор ругается.
Аноним 10/03/23 Птн 17:00:36 #463 №2635867 
>>2635627
Чтобы не ломать глаза об ((*ptr)()) постоянно. Думаю во всяких WINAPI так сделано.
Аноним 10/03/23 Птн 17:09:05 #464 №2635877 
>>2635657
Ну вот так написано в статье и вики и ссылка на пропозалы 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/
Аноним 10/03/23 Птн 17:46:04 #465 №2635923 
А нахуя мне указывать на указатель или в пустоту, в чем понт?
Аноним 10/03/23 Птн 18:23:23 #466 №2635945 
>>2635867
> Чтобы не ломать глаза об ((*ptr)()) постоянно
Можно в идешке сахарку подкинуть и не ломать глаза. Какая-нибудь подсветка фиолетовым.
Аноним 10/03/23 Птн 18:25:23 #467 №2635948 
>>2635945
Это фантастика. Регекспом такое что ли искать? Да и код должен быть читаемым даже в блокноте.
Аноним 10/03/23 Птн 18:31:25 #468 №2635951 
>>2635866
Не пахало, т.к. я проебал звездочку одну у c.
Странно, что ты не заметил.
Вот исправленная версия, пашет как миленькая. https://godbolt.org/z/3v7qdYj34

Лишнее доказательство какой пиздец этот синтакс
Аноним 10/03/23 Птн 18:31:51 #469 №2635952 
>>2635948
> Регекспом такое что ли искать
Почему бы и да?
Аноним 10/03/23 Птн 18:35:00 #470 №2635954 
>>2635923
https://learnc.info/c/void_pointers.html

Ты про такое?
Аноним 10/03/23 Птн 18:46:00 #471 №2635961 
>>2635951
Да я уже потом не просматривал внимательно, у меня сейчас работка кипит своя.
Аноним 10/03/23 Птн 18:47:09 #472 №2635963 
>>2635923
Указатель на указатель - это, например, массив массивов. Или последующий элемент в связном списке. В обоих случаях он может указывать никуда.
Аноним 10/03/23 Птн 19:59:05 #473 №2636066 
>>2635948
>>2635963
>он может указывать никуда.
И как такое применять в реальном мире на обычной задаче для людей?
Аноним 10/03/23 Птн 20:10:12 #474 №2636082 
>>2636066
такое только в пердольных задачах очень нужно
Аноним 10/03/23 Птн 20:50:39 #475 №2636119 
>>2636066
Так стопэ ты сейчас про что?
Если про *void - то это просто тип any (любой). Например, malloc тебе возвращает память, а ты там уже можешь хоть структуру, хоть массив интов, хоть строку чаров разместить.
Если же про указатель на NULL, то это традиционно последний или пустой элемент. Например в связном списке. A -> B -> C -> NULL. У последнего элемента C нет следующего.
Аноним 10/03/23 Птн 23:14:16 #476 №2636272 
Тут есть пердоли ядра?
Аноним 13/03/23 Пнд 00:04:24 #477 №2638500 
image
>>2625890
>>2625427
Так, пажите.
Я пишу под ESP32, у меня там stack на 8кб, и heap на 300кб.
Если я буду делать malloc() для каждой динамической временной строки, у меня heap фрагментируется и всё перестанет работать.
А в stack место просто очистится после выхода из функции и всё.

Вот пикрелейтед.
Тут 2 строки создаётся, одна для передачи в функцию для отправки её по сети, другая для передачи в debug() который и в консоль напишет и сохранит для дебага.
Я правильно делаю, что тут не выделяю память для этих двух строк через malloc() в heap, а выделяю в stack?
Аноним 13/03/23 Пнд 00:17:35 #478 №2638501 
>>2638500
>Я пишу под ESP32, у меня там stack на 8кб
>Если я буду делать malloc()
На микрухах надо просто заранее выделять массивы нужного размера. Статичные.
Аноним 13/03/23 Пнд 10:10:49 #479 №2638654 
>>2638501
У меня появилась гениальная идея.
Что если я на старте сделаю malloc() в 2кб, а потом функцией str_write() напиример буду добавлять пришедшие char* в эту область памяти.
А функцией str_get() ставить в конец нуллбайт и возвращать указатель на нулевой символ.
Так я могу работать с строками вообще не занимая никакой лишней памяти.
Гениально?
Главное не делать паузы между вызовами, чтоб 2 разных кода в одну память не писали по очереди.
Аноним 13/03/23 Пнд 10:23:47 #480 №2638666 
>>2638654
У меня появилась гениальная идея.
Пошел нахуй отсюда, пидарас, со своим говнобложеком. Кусок тупого макакоговна никому не интересен.
Аноним 13/03/23 Пнд 12:14:07 #481 №2638765 
image
>>2638666
Джеффри Рихтер кот_в_шляпе 13/03/23 Пнд 15:57:23 #482 №2639001 
изображение.png
изображение.png
изображение.png
изображение.png
А я напоминаю всем, кто хочет научиться профессионально программировать в среде Windows, особенно это касается системных программистов.
Книги Джеффри Рихтера лучшие в этой области, мне кажется он знает архитектуру Windows лучше чем сами создатели Windows.
Аноним 13/03/23 Пнд 16:26:03 #483 №2639021 
>>2639001
Интересно, как ему разрешили ее издать. Это же явно реверсинг + слив коммерческой тайны.
Аноним 13/03/23 Пнд 16:26:04 #484 №2639022 
image
>>2638666
>>2638654
Всё правильно сделал?
Аноним 13/03/23 Пнд 16:35:51 #485 №2639029 
>>2639022
Зачем тебе malloc, ты можешь просто написать в файле глобальный массив.
Аноним 13/03/23 Пнд 16:40:20 #486 №2639031 
image
>>2639029
Мне чатжпт сказал, что в таком случае память окажется в стеке.
Аноним 13/03/23 Пнд 16:52:44 #487 №2639041 
>>2639031
Вот жеж пидор. Наебал.
Я проверил, размер heap уменьшается, когда я увеличиваю размер массива в начале файла.
Он не в стек попадает, а в heap.

>>2639029
А если я в начале файла int объявляю, она тоже будет в хипе?
Аноним 13/03/23 Пнд 16:58:34 #488 №2639048 
Ебло Билла Гейтса в сливках.jpg
clown-mc-donalds.gif
>>2639021
>Интересно, как ему разрешили ее издать. Это же явно реверсинг + слив коммерческой тайны.

Я пока что не нашёл чего-то "закрытого" в его книгах, как раз таки всю эту информацию можно найти в документации Майков, просто автор преподносит её в очень информативном и приятном для познавания виде, совмещая этот процесс с практикой.
Аноним 13/03/23 Пнд 17:01:22 #489 №2639050 
изображение.png
>>2639021

>>2639048 + скорее всего он согласовывал это с майками, прежде чем выпустить книгу.
Аноним 14/03/23 Втр 01:40:54 #490 №2639477 
>>2639041
Да, на стеке идет то что явно в внутри функций.
Аноним 14/03/23 Втр 02:02:20 #491 №2639479 
CbBPH.png
>>2639041
Нет, он не в стеке и не в куче, он в статическом сегменте памяти.
Аноним 14/03/23 Втр 02:49:25 #492 №2639483 
>>2635286
Спасибо, попробую разобраться
Аноним 14/03/23 Втр 11:59:31 #493 №2639629 
>>2639001
> це тред
> windows
Достаточно.
Аноним 14/03/23 Втр 12:50:13 #494 №2639677 
>>2639629
По какому поводу подрыв?
Winapi - сишный интерфейс.
Аноним 14/03/23 Втр 13:12:50 #495 №2639700 
>>2639677
> winAPI
> Си тред
Ну хватит плез
Аноним 14/03/23 Втр 14:34:09 #496 №2639810 
изображение.png
>>2639629
>>2639677

Напоследок добавлю >>2639001, очень хорошо сочетается с книгой Павла Йосифовича "Работа с ядром Windows", материал в книге изложен очень кратко и понятно.
Аноним 14/03/23 Втр 15:15:51 #497 №2639869 
изображение.png
>>2639700
>Ну хватит плез
Блядь, ты заебал со своим линуксом.
Чтобы ты понимал, не все пишут под linux, я в прошлом треде общался с тобой, и как выяснилось ты ни имел и не имеешь дела с этой платформой, но постоянно яростно её обсираешь, а потом выясняется что ты пишешь под linux код для каких-то микроконтроллеров. Перестань обсирать вещи, только потому что ты их не понимаешь, либо не имел с ними дело.

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

Люди не читают книги, а потом пишут всякую хуйню и костыльные библиотеки, а всё потому что лишний раз поленились заглянуть в документацию или литературу, и найти уже готовое решение.
Аноним 14/03/23 Втр 15:47:12 #498 №2639911 
>>2639869
>Без WinApi в среде Windows ты не напишешь ничего значимого и безопасного кроме "hello world"
Верно.
>и да, я говорю именно про современные операционные системы, а не про то что ты там мог писать в 90-х
Чего, простите, лол? Ты бредишь.
Я еще в 80х писал сначала на нормальном фиксированном компьютере с использованием железа естественно, там всё необходимое было из коробки, как аппаратура, так и программная поддержка. А потом в начале 90-х попробовал этот ПК-конструктор с Си и сразу же выяснил, что это тыква, в Си на ПК ничего нет, т.к. сама архитектура ПК - ни о чем, железо может быть какое угодно, а значит никакое. Там на голом Си никогда и нельзя было ничего написать кроме хеллоуворлда в калсольку, позорище которые было дичайшим зашкваром даже в 80-х, это даже не программирование вообще, а чистая алгоритмика в вакууме, теоретическая хуета.
Аноним 14/03/23 Втр 15:56:54 #499 №2639924 
Pepe the Frog animation dissecting (FULL CLIP).mp4
>>2639911
Прошу прощения за мат выше, на эмоции вынесло.
Аноним 14/03/23 Втр 16:13:05 #500 №2639937 
>>2639869
Шизло, ты в треде не с одним аноном сидишь. Какие микроконтроллеры наху?
Аноним 14/03/23 Втр 16:25:50 #501 №2639949 
изображение.png
>>2639937
К тебе это не относится, можешь пойти на хуй.
Аноним 14/03/23 Втр 16:32:35 #502 №2639953 
>>2639949
Нахуя меня репоаишь тогда? Тебя гринтекст так триггерит?
Пиши дальше под свою проприетарную парашу да насасывай корпам, нахуя сюда-то лезешь тварь.
Аноним 14/03/23 Втр 17:03:42 #503 №2639993 
изображение.png
>>2639953
На ебало тебе ссу, мразь.
Аноним 14/03/23 Втр 17:11:53 #504 №2640006 
>>2639953
Согласен, я бы тоже линуксоидов нахуй послал, но всё же линукс имеет применение в виде WSL, чтобы пердольные компиляторы запускать если вдруг понадобится, иногда случается.
Аноним 14/03/23 Втр 18:20:00 #505 №2640078 
>2023
>не Линукс
>и даже не макОСь
Ебало говноедов представили?
Аноним 14/03/23 Втр 19:49:42 #506 №2640228 
>>2640078
Я понимаю, что 2023 синоним корпорабства, но всё же давайте не поддаваться на общие тренды когда они явно ведут в жопу. Имейте мужество твердо сказать "нет" линуксу, а уж про макос и напоминать стыдно.
Аноним 14/03/23 Втр 20:48:52 #507 №2640294 
>>2639869
А где ты увидел что то про линукс? Это тред чистого языка Си.
Аноним 14/03/23 Втр 20:54:12 #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 и так дальше. Можно ли это как-то автоматизировать, а не писать для каждой переменной стуктуры отдельное действие?
Аноним 14/03/23 Втр 21:50:34 #509 №2640360 
>>2640301
Можно, через union и цикл например (или это UB? не помню уже).
Аноним 15/03/23 Срд 11:52:59 #510 №2640782 
>>2640301
Да, какие проблемы?
Открываешь свою структуру в дебагере, смотришть оффсеты каждого поля, если они одинаковые пишешь цикл увеличивающий указатель на нужное значение, так чтобы он каждый раз указавал на следующее поле, и суммируешь значения по указателю.
Аноним 15/03/23 Срд 11:59:27 #511 №2640791 
>>2640782
А если неодинаковые, в структуру можно добавить массив с набором размеров, и по нему увеличивать указатель. Или держать отдельный массив, чтобы каждую структуру не раздувать одинаковыми данными.
Ах, да, если типы получаются разные, тогда в массиве надо еще хранить некие идентификаторы типов, и при суммировании проверять каждый тип и использовать соответствующий указатель.
Аноним 15/03/23 Срд 15:53:46 #512 №2641032 
Что думаете про ZIG ? это типо современный сишка
Аноним 15/03/23 Срд 16:37:07 #513 №2641099 
>>2641032
Очень нравится, но ужасно сырой, месяц возился с релизной версией, банально не готово.
Аноним 16/03/23 Чтв 13:15:19 #514 №2641955 
бутлоадер надо написать
Аноним 16/03/23 Чтв 13:38:46 #515 №2641976 
>>2641955
Сыглы, надо бы
Аноним 17/03/23 Птн 16:30:47 #516 №2643171 
Аноны, с помощью какой библиотеки можно сделать tui интерфейс?
Аноним 17/03/23 Птн 16:47:31 #517 №2643191 
>>2643171
Если по дедовски, то ncurses, PDcurses и вариации. Там есть всякие аддончики вроде st-menu.
Если посовременнее, то, видел, FTXUI используют.
Аноним 18/03/23 Суб 00:02:23 #518 №2643750 
image
image
Подскажите, я в отчаянье.
Пишу под чип ESP32, написал макрос, который вставлен в функцию, которая отправляет ответ на запрос в вебсервер.
У меня сломалась математика.
>int records_count_##name
>int record_item_i
>records_count = 10 из макроса
Как 10-1=1061159396 рандомно?
Даже если я где-то насрал в память не по адресу, как это сломало математику?
Аноним 18/03/23 Суб 00:04:57 #519 №2643752 
>>2643750
И это не ошибка вывода в консоль, у меня ниже не срабатывает условие, которое видит, что record_item_i больше 10.
Аноним 18/03/23 Суб 01:19:30 #520 №2643838 
>>2643750
Лень разбираться, проверь snprintf, почитай что она принимает и возвращает. Может ли быть, что буферу не хватает одного символа на \0 и ты видишь мусор, который идет сразу за ней? Так же, ты просто прибавляешь возвращенное значение, но в случае ошибки она возвращает отрицательные. В общем, мое паучье чутье подсказывает что странно кодга в printf-функциях не видно где-то +1 для \0.
Аноним 18/03/23 Суб 06:57:35 #521 №2643914 
педолю 0.0.1 ядро линукса
ведь там всего лишь 10 тысяч строчек кода
Аноним 18/03/23 Суб 08:49:33 #522 №2643942 
>>2643914
А чего не миникс? Там же ещё меньше.
Аноним 18/03/23 Суб 10:12:55 #523 №2643970 
>>2643838
>>2643750
Мне помогли разобраться. Произошла интересная штука.
record_item_i была объявлена в loop() на стеке и потом передана в функцию, которая вызывается коллбеком много раз.
Но сам loop() выполняется и сразу выходит и переменная удаляется. И у меня в коллбеке остаётся ссылка на какую-то рандомную память на стеке.
Сделал static int record_item_i и всё заработало.
Такие дела.
Аноним 20/03/23 Пнд 20:30:15 #524 №2646973 
>>2599695 (OP)
Где почитать про используемые либы и подходы для concurrency/asynchronous programming? Задача максимально утилизировать ядро процессора.
Аноним 20/03/23 Пнд 20:35:28 #525 №2646977 
>>2599695 (OP)
Какие есть топовые современные веб-сервера для Си? Чтобы были вебсокеты и mqtt.
Аноним 20/03/23 Пнд 21:01:17 #526 №2647017 
>>2599695 (OP)
>Zed A. Shaw "Learn C the Hard Way"
Здесь https://www.iso-9899.info/wiki/Main_Page#Stuff_that_should_be_avoided советуют избегать эту книгу
Аноним 20/03/23 Пнд 21:13:56 #527 №2647027 
>>2639001
Книга устарела.

>>2639869
Уже наворотили разных api.
Аноним 20/03/23 Пнд 21:22:33 #528 №2647037 
>>2646977
Надеюсь, что таких нет. Все же безопасность это не шутки.
Аноним 20/03/23 Пнд 21:23:25 #529 №2647038 
>>2647037
Шта?
Аноним 20/03/23 Пнд 21:24:10 #530 №2647040 
>>2647038
Ну я просто представил себе наглядно как мои данные крадут через очередное UB переполнения буффера. Аж передернуло.
Аноним 21/03/23 Втр 01:06:57 #531 №2647209 
изображение.png
>>2647027
>Книга устарела.
В книге дают основы, я параллельно вместе с книгой использую техническую документацию Microsoft, а вообще я смотрю информацию в нескольких книгах, мне ещё нравится "Внутреннее устройство Windows" Русиновича (7-е издание).


>>2647027
>Уже наворотили разных api.
Что значит разных, я говорю конкретно про WinAPI.
Аноним 21/03/23 Втр 01:21:13 #532 №2647211 
>>2643750
Ты походу где-то вычитаешь указатель из целого числа, из-за чего такой результат.
Аноним 21/03/23 Втр 08:27:13 #533 №2647276 
>>2647209
В таком случае лучше читать это
https://www.amazon.com/Windows-10-System-Programming-Part/dp/B086Y6M7LH
https://www.amazon.com/Windows-10-System-Programming-Part/dp/B09GJKKBZP
Аноним 21/03/23 Втр 11:45:55 #534 №2647411 
>>2647276
Да, мне один знакомый советовал когда-то эту книгу, но я пока что без неё обхожусь, но спасибо за ссылку и совет.
Аноним 21/03/23 Втр 11:54:36 #535 №2647415 
>>2647276
А книга и вправду хорошая, зря я её не читал раньше.
Аноним 21/03/23 Втр 11:56:36 #536 №2647416 
>>2647040
Не пиши код с уб и контролируй буфер. Ты специально чтоли буфер переполняешь, когда код пишешь?
Аноним 21/03/23 Втр 12:23:00 #537 №2647449 
>>2647416
>просто будь богатым и здоровым
Аноним 21/03/23 Втр 17:20:37 #538 №2647779 
>>2599695 (OP)
Где смотрите вакансии? Как искать на HH? По языку искать невозможно, потому что однобуквенное название. Какая вообще работа есть для программиста на Си, что пишут на Си в РФ?
Аноним 22/03/23 Срд 23:37:50 #539 №2649391 
>>2647779
>однобуквенное название
А ты ищи по двум буквам, на русском (Си).

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
Аноним 22/03/23 Срд 23:40:11 #540 №2649398 
>>2647779
Либо системный инженегр/программист.
Аноним 22/03/23 Срд 23:41:17 #541 №2649401 
>>2647779
Ещё есть всякие телеграмм каналы, либо через знакомых, общение в чатах с теми кто уже работает в каких-то компаниях.
Но как ты понимаешь, одного только Си недостаточно.
Аноним 22/03/23 Срд 23:43:17 #542 №2649410 
>>2647779
https://hh.ru/vacancies/sistemnyy_programmist
Аноним 23/03/23 Чтв 04:53:42 #543 №2649582 
Немножко не по теме вопрос. Посмотрите, пожалуйста. https://cdnpdf.com/embed/21259-programmirovanie_na_c_dlya_nachinayushhix_3-e_izdanie
У вас книжку эту открывает или только обложку?
Аноним 23/03/23 Чтв 08:30:01 #544 №2649647 
>>2649582
Норм открывается.
Аноним 23/03/23 Чтв 22:51:16 #545 №2650658 
>>2649401
для написания программ под линукс разве си не достаточно? может раст начать изучать, но на него нет работы
Аноним 24/03/23 Птн 02:05:15 #546 №2650826 
>>2650658
> си не достаточно
Я к тому что ты как минимум должен понимать, архитектуру операционных систем, устройство памяти, как между собой работают пользовательский режим и режим ядра, как их используют потоки, объекты ядра, службы (демоны в linux) и прочие базовые вещи, ну и конечно же уметь работать с отладчиками, и иметь некоторые навыки программирования на ассемблере, опять же для отладки, поиска проблем используют дизассемблирование, реверс-инжиниринг, либо же иногда для оптимизации кода, его скорости используют ассемблерные вставки, особенно при программировании ядра (написании драйверов).

Да и ты сам можешь открыть любую вакансию, посмотреть какие там требования, ещё есть всякие роадмапы.
Знание одного только языка программирования в любой сфере недостаточно, это касается не только Си.
Аноним 24/03/23 Птн 05:19:11 #547 №2650855 
>>2600258
Чем конкретно засрут?
Наличием недоООП?
Аноним 24/03/23 Птн 19:16:44 #548 №2651579 
>>2650826
Спасибо за ответ
Аноним 24/03/23 Птн 23:04:28 #549 №2651781 
изображение.png
>>2651579
Да не за что анончик.
Аноним 24/03/23 Птн 23:13:04 #550 №2651791 
VID20230325001222562.mp4
Аноним 27/03/23 Пнд 13:00:57 #551 №2654147 
Здравствуйте, анончики, где можно посмотреть курс Александра Григорина по основам программирования, а то не могу найти что-то
Аноним 28/03/23 Втр 20:47:37 #552 №2655581 
Анончики, есть какие-то книжки по встраиваемым системам? Чтобы понять как что делать с UART, SPI, I2C и прочее? Пока только смог ручками потыкать в платке, и настроить кое как UART, но это вышло через боль и явные блуждания без понятия чего я ищу.

Вообщем есть какой-то организованный подход к микроконтроллерам, встраиваемым системам и прочему?
Аноним 29/03/23 Срд 17:30:50 #553 №2656438 
wav1.png
wav2.png
wav3.png
Мой случай: .wav файлы хранятся ввиде массива hex символов.
Вроде как первые 44 байта должен занимать заголовок
.wav файла.

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

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

Обрезанный массив залил на пастбин: https://pastebin.com/vcGddRTW
Аноним 30/03/23 Чтв 10:10:33 #554 №2656986 
>>2656438
Тебе обязательно всю структуру забивать заголовком? Возьми только нужные тебе значения по индексам и всё.
Давно работал с вав, но когда работал (выводил выборки на ЦАП) брал из заголовка только размер и частоту выборки, насколько я помню.
Аноним 30/03/23 Чтв 16:43:47 #555 №2657321 
>>2656438
В чем суть вопроса? Можешь просто ручками читать следующие 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))

Есть готовые либы (не уверен что именно для Си, но для С++ и раста точно есть), которые умеют читать структуры по их описанию. Но для тебя это будет оверкилл.
Аноним 30/03/23 Чтв 20:35:33 #556 №2657617 
>>2656438
Просто memcpy? Или сразу в структуру читать, там же всё ровно, без какой-то дополнительной хуйни.
Аноним 31/03/23 Птн 04:33:46 #557 №2657904 
вонни.jpg
>>2656986
>>2657321
>>2657617
memcpy работает.
Спс.
Аноним 01/04/23 Суб 21:28:16 #558 №2659799 
Что за книга Си. Грязные истории?

Пробовал гуглить даже как C. Filthy Stories, типо filthy имеет два перевода - откровенный/грязный, но книгу так и не нашел
Аноним 02/04/23 Вск 02:15:03 #559 №2660110 
Уже задавал вопрос год назад, задам ещё раз тут, хоть тред и умер

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

Как мне повысить свои навыки в Си, чтобы не быть обезьяной с гранатой?
Аноним 02/04/23 Вск 02:21:42 #560 №2660115 
>>2660110
>Си
>не быть обезьяной с гранатой?
Книги по научной фантастике в соседнем отделе.
Аноним 02/04/23 Вск 02:23:28 #561 №2660118 
>>2660115
Да ты зачем это делаешь, не писал же, что спец
Просто хочу понять как повысить навыки, что почитать
Аноним 02/04/23 Вск 02:27:17 #562 №2660121 
>>2660118
Я про тебя лично ничего не хотел сказать. Язык такой, небезопасный.
Аноним 02/04/23 Вск 02:36:51 #563 №2660130 
>>2660121
Ну, это понятно, просто интересно, никаких поисков не производил, а какой язык безопасный? Только какой-нибудь высокоуровневый по типу Java, Kotlin или Python?
Аноним 02/04/23 Вск 02:41:01 #564 №2660133 
>>2660121
Просто ещё читал какую-то статью и там писали, что раньше Си был совершенно другим, был ближе к языку Ассемблера, к машинным командам, а начиная с какого-то стандарта стал считай, что высокоуровневым и медленным
Аноним 02/04/23 Вск 02:50:01 #565 №2660138 
>>2660121
Помню, когда на первом курсе учился был удивлен, что в Си раньше не было цикла for, только while, поэтому может и в правду быстрый был только старый Си, а нынче и Питон Си обгонет
Аноним 02/04/23 Вск 16:29:44 #566 №2660587 
аноны, есть роадмап по реверси нженерингу?
Аноним 02/04/23 Вск 20:38:45 #567 №2660868 
>>2659799
Там в оригинале как-то по другому называется. Гугли по имени автора.
Аноним 02/04/23 Вск 21:16:56 #568 №2660902 
>>2660868
Автор в оп-посте не указан
Аноним 02/04/23 Вск 21:18:06 #569 №2660903 
>>2660868
Блять, я даун, прости, не туда посмотрел

>>2660902 мимо
Аноним 02/04/23 Вск 21:34:29 #570 №2660919 
>>2660133
Это правда?
Аноним 02/04/23 Вск 21:37:07 #571 №2660922 
>>2660130
>а какой язык безопасный?
Rust
Аноним 02/04/23 Вск 21:39:30 #572 №2660925 
>>2655581
https://bootlin.com/doc/training/linux-kernel/linux-kernel-labs.pdf
Аноним 02/04/23 Вск 22:01:38 #573 №2660938 
>>2660922
Можешь вкратце разложить почему так?
Аноним 03/04/23 Пнд 06:53:44 #574 №2661176 
>>2660938
это как язык со сборщиком мусора, но без него

без знания Сишки всё равно не поймёшь его преимущества
Аноним 03/04/23 Пнд 08:25:11 #575 №2661204 
>>2660922
>Rust
Блеванул.

>>2660938
не слушай додиков, расту несколько и на нем пишут трапы.
смысла раста чтонибудь переписать, ничего своего не сделали.
а на си держится весь костяк.
Аноним 03/04/23 Пнд 10:55:46 #576 №2661318 
>>2661176
Сап, аноны, тупой как пробка.
Если запросил памяти из кучи и забыл ее освободить до какой поры она будет недоступна? До тех пор процесс, в котором был запрошен этот самый кусок памяти в куче, не завершится или пока ты не перезагрузишь ПК, чтобы RAM очистилась?
Аноним 03/04/23 Пнд 10:56:46 #577 №2661319 
>>2661176
Ну, есть знание самых основ Си, может что и пойму
Аноним 03/04/23 Пнд 12:56:07 #578 №2661511 
>>2661204
>смысла раста чтонибудь переписать, ничего своего не сделали.
>а на си держится весь костяк.
Бессмысленный набор слов.
Аноним 03/04/23 Пнд 12:57:15 #579 №2661512 
>>2661318
Зависит от операционной системы.
Аноним 03/04/23 Пнд 13:00:48 #580 №2661517 
>>2661318
Операционная система сама выделяет память под программу, если разраб криворукий, то зависнет только программа, а не вся ОС
Аноним 03/04/23 Пнд 14:43:27 #581 №2661682 
>>2661517
Ну, я плюс-минс понимаю, что выделения памяти через API происходит

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

Имел в виду, вот условно я выделил 100 Мегабайт памяти для своего процесса, пусть это будет чисто .exe, и забыл освободить, что будет дальше? Память сама освободится после завершения процесса или придется перегрузить ПК, чтобы состояние RAM обнулилось
Аноним 03/04/23 Пнд 14:59:46 #582 №2661715 
>>2661682
Тебе уже два раза ответили.
Аноним 03/04/23 Пнд 18:09:41 #583 №2661919 
>>2660925
Спасибо анончик
Аноним 03/04/23 Пнд 18:17:38 #584 №2661927 
>>2661682

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

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

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

Ребут устройства практически точно освободит тебе память, если только какой-нибудь шиз не придумает при ребуте восстанавливать состояние системы до ее ухода.
Аноним 03/04/23 Пнд 20:40:58 #585 №2662025 
Спасибо тебе огромное, анончик
Аноним 03/04/23 Пнд 20:59:39 #586 №2662048 
>>2661927

Спасибо >>2662025

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

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

#include <stdlib.h>

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

int main(){

foo();

return 0;
}

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

Но есть ли вероятность, что память для p будет освобождена при завершении работы функции? Или условно какой-нибудь оптимизирующий компилятор, где увидит, что указатель не глобальный, не static, не external и сам вызовет вызов функции free()? И если такой есть, так будет освобождаться память под матрицы и тензоры всякие?
Аноним 03/04/23 Пнд 21:00:14 #587 №2662049 
>>2662048
при завершении работы функции foo*
Аноним 03/04/23 Пнд 21:35:25 #588 №2662077 
>>2662048
Если компилятор увидит, что p не используется, он само выделение памяти выкинет.
Аноним 04/04/23 Втр 18:32:02 #589 №2662739 
Как протестировать функцию которая содержит стандартный ввод ? Мне уже подсказали что нужно как то использовать std::istream но я блять нихуя не могу нагуглить.
Аноним 04/04/23 Втр 18:33:04 #590 №2662741 
>>2662739
Это си тред
Аноним 04/04/23 Втр 18:35:11 #591 №2662745 
>>2662741
Дак мне и надо протестировать Си код. Если вы знаете как это сделать без использования либы из плюсов , то прошу , поделитесь!
Аноним 04/04/23 Втр 18:58:41 #592 №2662761 
>>2662745
C++ тред ниже.
Аноним 04/04/23 Втр 18:59:27 #593 №2662762 
>>2662745
<stdio.h>
scanf
Аноним 05/04/23 Срд 14:45:19 #594 №2663376 
>>2662739
Ну, хз, вроде стандартный ввод в C это stdin, как тебе выше ответили, для ввода данных с клавиатуры используется scanf(), ну, или на крайняк попробуй функцию fscanf()
Аноним 05/04/23 Срд 14:47:00 #595 №2663377 
Анончики, здравствуйте. Плохо усвоил структуры данных. Можете, пожалуйста, посоветовать литературу по ним?
Аноним 05/04/23 Срд 16:06:33 #596 №2663417 
>>2663377
Википедия
Аноним 05/04/23 Срд 17:02:34 #597 №2663482 
есть ли в линуксе способ отключить отправку родителю SIGCHLD при завершении процесса ?
Аноним 05/04/23 Срд 18:15:09 #598 №2663527 
Как люди вообще догадались о представлении чисел в дополнительном коде? Это же пиздец как ахуенно
Аноним 05/04/23 Срд 18:43:30 #599 №2663547 
codeC.png
аноны, объясните как работает это дерьмо.

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

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

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

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

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

буду сильно благодарен за объяснение.
Аноним 05/04/23 Срд 18:45:26 #600 №2663551 
>>2663547
фикс - это решение какого-то чела с какого-то сайта на задание из этой книги
Аноним 05/04/23 Срд 19:09:17 #601 №2663585 
>>2663547
Если был введен пробел{
Если пробела был до этого не было{
Печатаем пробел
Запоминаем, что пробел был pred = 1
Если дальше будет пробел, то пробел
напечатан не будет
}
}
Если с клавиатуры ввели не пробел, то{
Печатаем символ
Обнуляем переменную, которая
отвечала за то -- был ли введён пробел
}

Аноним 05/04/23 Срд 19:12:50 #602 №2663591 
>>2663547
Совет, если не понимаешь как работает часть программа, то сделай блок-схему и сделай пару итераций
Аноним 05/04/23 Срд 19:26:23 #603 №2663600 
спс.png
>>2663585
>>2663591
спасибо, будто прозрел
Аноним 05/04/23 Срд 23:19:04 #604 №2663761 
>>2663547
Тебе не нужно считать пробелы. Тебе нужен только факт - был предыдущий пробелом, или не был, когда тебе встретился пробел.
Все остальное сводится к этим случаям.
Аноним 07/04/23 Птн 22:22:02 #605 №2665616 
>>2663600
Самый важный совет: называй счетчики c или n. И вообще, все локальное обзывай одной-двумя буквами.

дедушка
Аноним 07/04/23 Птн 22:40:51 #606 №2665634 
воу.jpg
>>2662077
И в результате эта функция
без оптимизации напечатает null или умрет
а с оптимизацией напечатает не null.
Как же охуенно.
Аноним 08/04/23 Суб 02:18:33 #607 №2665713 
>>2665616
Еще i ii iii и m/n/k
бабушка
Аноним 08/04/23 Суб 06:10:28 #608 №2665757 
>>2662077
Ебать, это чё за компилятор такой, что вызовы функций сам регулирует? Или я отстал от жизни, какие это хоть флаги примерно?
>>2665634
Всм, причём тут оптимизация? Ты просто выделяшь в heap память, но при этом теряешь указатель, и логично, что у тебя будет или нихуя не выделенно (null) или выделена память, напечатан на неё указатель и сразу проёбан
Аноним 09/04/23 Вск 21:26:56 #609 №2667611 
>>2665757
> Ебать, это чё за компилятор такой, что вызовы функций сам регулирует? Или я отстал от жизни, какие это хоть флаги примерно?
Банальный clang -O. Еще может malloc + memset заменить на calloc, а printf на puts.
> Всм, причём тут оптимизация?
При том, что она выкинет весь цикл.
Аноним 10/04/23 Пнд 00:02:14 #610 №2667709 
>>2667611
Мдэ, нихуя себе работник
Аноним 13/04/23 Чтв 12:14:35 #611 №2670997 
Накидайте проектов с годным кодом, чтоб читать на досуге для саморазвития. Можно с асмом
Аноним 14/04/23 Птн 12:43:53 #612 №2671953 
545154615616132132.gif
После обновления либы выскочила ошибка: 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 и мэйк-хунйк файлов я не знаю как это сделать. Но тогда есть вероятность ошибки.
Аноним 14/04/23 Птн 12:59:01 #613 №2671959 
>>2671953
Я бы добавил проверку name на NULL в самое начало условия, а всякие name->host, name->service удалил нахрен ибо эти поля всегда не NULL.
Аноним 14/04/23 Птн 13:39:23 #614 №2671991 
>>2671959
name->host и была проверка на NULL
Аноним 14/04/23 Птн 13:48:04 #615 №2671994 
>>2671991
> name->host проверка на NULL
Каким образом? Всё крашнется, если name==NULL.
host - массив чаров в структуре, он не может быть NU
Аноним 14/04/23 Птн 17:32:43 #616 №2672269 
Снимок экрана 2023-04-14 в 21.32.01.png
Аноны! Я новичок в си. Мне нужно скомпилировать программу указав в ключах -lncurses. Как можно прописать ключи компиляции в XCode? Если вообще можно...
Аноним 14/04/23 Птн 20:01:21 #617 №2672395 
>>2672269
Что за вкладка кастомайзед?
Аноним 15/04/23 Суб 05:41:39 #618 №2672689 
>>2671953
Короче, убрал
>name->host && name->host[0]
Заменив на
>(strlen(name->host) > 0)

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

И накатал баг-репорт. А там пусть фиксят как хотят.
Аноним 16/04/23 Вск 20:22:44 #619 №2674062 
>>2672269
В терминале же
Аноним 17/04/23 Пнд 10:02:20 #620 №2674407 
нормально.jpg
111.png
>>2672689
> Короче, убрал
Закон сохранения говнокода 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
);
Аноним 18/04/23 Втр 06:18:48 #621 №2675085 
Уже достал всех с вопросом, но все же

Есть ли тут люди, которые проходили курс по программированию у Александра Григорина? Посоветовать можете?
Аноним 18/04/23 Втр 07:15:03 #622 №2675096 
На codeWars рейтинг 4 kyu, то бишь могу какие-никакие алгоритмы нищие писать, более менее как в памяти располагаются байты знаю(все алгоритмы писал на Си). Что посоветуете почитать вдовесок, чтобы взяли на работу, ибо боюсь, что отчислят из ВУЗа, а как жить дальше не знаю, а хотелось бы реализоваться в IT-сфере?
Аноним 18/04/23 Втр 20:57:14 #623 №2675713 
>>2675096
На сишке слишком много движений надо чтобы алгоритмы писать, уж лучше хаскель
Аноним 19/04/23 Срд 03:38:08 #624 №2675888 
>>2675713
Сложно сказать, как по мне Си для алгоритмов не так плох, разве что в нем нет изобилия синтаксического сахара как в условном Пайтоне
Аноним 22/04/23 Суб 20:29:51 #625 №2678836 
>>2599695 (OP)
Привет Си аноны посоветуйте материалы по программированию unix
Аноним 22/04/23 Суб 20:59:54 #626 №2678854 
>>2678836
Роберт Лав - Системное программирование (2014)
Аноним 23/04/23 Вск 15:11:15 #627 №2679224 
image.png
Как получить данные из TLS в библиотеке pthread без использования глобальных переменных ? get/set_specific не канает , для этого нужен глобальный ключ. Создать глобальную static thread_local тоже нельзя. Функция должна вытягивать id из тлс , которы был туда положен в другой части кода .
Аноним 23/04/23 Вск 17:07:18 #628 №2679322 
>>2679224
Pthread это и есть айди потока. Футкция птреад_селф.
А вообще можно сделать стракт {птреад, лонг айди} и передавать в функцию этого же треда и брать готовый айди, если тебе таое значение нужно, а не тид.
Аноним 26/04/23 Срд 14:54:36 #629 №2681824 
>>2679322
Да , я знаю. Просто задание звучит "Реализовать свою функцию". А как получить переданную струтуру ? Я так и делаю , просто функция гет тид, сигнатуру которой нельзя менять, вызывается уже внутри функции в которую передана структура через pthread_create.
Аноним 27/04/23 Чтв 20:00:09 #630 №2682991 
Что-то у меня, аноны, жеппа сгорела с нового стандарта С23. Зачем старую добрую сишку превращать в плюсы?
Аноним 27/04/23 Чтв 20:44:20 #631 №2683013 
>>2682991
А что там в стандарте добавили?
Аноним 27/04/23 Чтв 20:48:10 #632 №2683016 
>>2683013
auto, contsexpr, ....
Аноним 27/04/23 Чтв 22:19:17 #633 №2683053 
>>2683016


Autotype и typeof ужк давно быди, шило на мыло. Ну и старый добры -с99 никуда не делся ведь
Аноним 30/04/23 Вск 07:00:10 #634 №2684850 
>>2601349
Можно название шрифта?
Аноним 02/05/23 Втр 14:03:37 #635 №2686441 
>>2684850
Покопай в стоорону Anonymous Pro и Fira Code
Аноним 05/05/23 Птн 13:52:11 #636 №2688967 
Друзья может подскажет кто, а то что то не выходит нагуглить.
Как переключать xcb окно из оконного в фулскрин и обратно?
Аноним 08/05/23 Пнд 00:13:38 #637 №2691507 
2023-05-08 001117-Intel® oneAPI standalone component installation files - Atom.png
Установил пикрил. Как теперь из консоли компелять? Не найду эксешника нигде, он вообще есть в этом пакете или это что-то другое я поставил?
Аноним 08/05/23 Пнд 15:30:25 #638 №2692005 
16523592500280.jpg
Можно как-то наебать GCC-подобный компилятор и передать в функцию, принимающую указатель на void для работы с адресом выделенной памяти, реальное значение?

https://pastebin.com/deDHSaKb
pwd: 2ch
Аноним 08/05/23 Пнд 17:50:08 #639 №2692182 
>>2692005
Нет так врятли сработает. Оно ждкт указатель, тоесть это то что тр должно существовать вне функции в момент ее вызова.
Да и какой в этом смысл?
Аноним 08/05/23 Пнд 22:52:51 #640 №2692464 
image.png
Всем привет. Встала цель написать декомпрессор на си, открыл книгу по сжатиям и архиваторам и сразу сел в лужу(см.пик). Какие разделы математики надо знать, чтобы понимать написанное? Я просто не понимаю от куда берется формула, даже с некоторыми объяснениями. Математикой никогда не занимался серьёзнее квадратных примеров и анализом графиков на парах.
Аноним 09/05/23 Втр 00:09:25 #641 №2692545 
>>2692464
Компрессоры декомпрессоры уже гаписаны подо все. Бкри злиб зстд и дальше от них более профилтные баису всякие
Аноним 09/05/23 Втр 00:58:10 #642 №2692583 
>>2692545
Я не нашёл рабочей реализации LZSS, которая бы мне подошла.
Аноним 09/05/23 Втр 04:09:17 #643 №2692675 
>>2691507
>>2692464

Ооо, дай название книги, пожалуйста
Аноним 09/05/23 Втр 07:22:46 #644 №2692707 
343240-9324873074937409.jpg
>>2692182
>Да и какой в этом смысл?
Функции захардкожены автором с большой вложенностью.

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

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

Думал, что есть какой-нибудь ХАК, чтобы наебать компилятор. Хотя бы для случая, когда требуется просто чтения и функция не будет писать по адресу.
Аноним 09/05/23 Втр 11:59:50 #645 №2692887 
>>2692675
Привет. Книга называется "Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео" Д.Ватолин, А.Ратушняк, М.Смирнов, В.Юкин. 2003 год
Аноним 19/05/23 Птн 20:12:16 #646 №2704906 
Чому никто не перекатывает?
Аноним 20/05/23 Суб 00:23:02 #647 №2705101 
>>2704906
>>Чому никто не перекатывает?
Кто, я?!
Возьми да перекати
Или как с опенсорсом? пиздеть горазды, а как взять да исправить/сделать, так всё?
Аноним 20/05/23 Суб 08:59:35 #648 №2705214 
>>2705101
>Или как с опенсорсом? пиздеть горазды, а как взять да исправить/сделать, так всё?
Чёт какие-то ёбики заполонили этот тред.
Аноним 20/05/23 Суб 15:14:21 #649 №2705550 
>>2705214
Причина тряски?
Аноним 25/05/23 Чтв 18:24:57 #650 №2711809 
image.png
image.png
image.png
image.png
Парни, а можете подсказать про работу switch/case на уровне асма?

Пик-1:
Состояние регистров после проверки условия в switch, и перед началом расчёта адреса инструкции, на которую надо прыгнуть по условию, которое сформировано в switch.

Пик-2:
Состояние регистров после того инструкций (красными чёрточками показываю какие регистры изменились):

lea rdx, [rax*4]

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

lea rax, [rel 0x560c7280f078]

т.к. переменные у меня типа int, а в условии switch значение равное 11-ти, то в rdx записывается значение 44, типа указатель нужно будет увеличить на 44.

Пока всё ясно, типа, как подсказал мне гугол, что при компиляции gcc создаёт таблицу с адресами, в которые записываются условия из switch/case.

Пик-3:
Уже начинаются непонятки!! Как получается это значение, которое в регистре rax? Понятно, что мы в eax записываем то, что хранится по адрессу 0x560c7280f078 + значение 44, которое у нас находится в rdx, а потом знак регистра eax расширяем до rax. Но, когда я на калькуляторе байтоёблю, т.е. к адресу 560C 7280 F078 прибавляю 44, то получаю 560C 7280 F0A4, что совсем не похоже на ffff f3a1.

Пик-4:
А тут вообще какая-то магия происходит!! Непонятное для меня значение прибавили к 0x560c7280f078, а потом прыгнули как раз туда куда нужно.



Аноны, помогите, пожалуйста!! Объясните логику происходящего!! Или подскажите куда копать? Что это за таблица с адресами к switch/case? Каким образом gcc адреса формирует в этой таблице?
Аноним 25/05/23 Чтв 18:29:48 #651 №2711814 
>>2711809
>Пик-3:
>Уже начинаются непонятки!! Как получается это значение, которое в регистре rax? Понятно, что мы в eax записываем то, что хранится по адрессу 0x560c7280f078 + значение 44, которое у нас находится в rdx, а потом знак регистра eax расширяем до rax. Но, когда я на калькуляторе байтоёблю, т.е. к адресу 560C 7280 F078 прибавляю 44, то получаю 560C 7280 F0A4, что совсем не похоже на ffff f3a1.


Тут я довтыкал, аноны!!
Типа: мы к указателю прибавили 44 и взяли то, что хранится по этому адресу.

Но теперь другой вопрос, а что тогда хранится по этому адресу? Как это вообще можно посмотреть?
Аноним 26/05/23 Птн 17:00:43 #652 №2712797 
>>2711809
свич кейс это по замаскированный goto.
Аноним 26/05/23 Птн 17:50:38 #653 №2712863 
>>2599695 (OP)
>- Intel C++ Compiler: оптимизации, тысячи их.

Где мне раздобыть эту хуету для линукса?
Аноним 26/05/23 Птн 19:50:28 #654 №2713014 
>>2712797
>замаскированный goto
Анон, я понимаю, что мы прыгаем на определённый адрес по определённому условию, я не понимаю, как мы получаем этот адрес?
Аноним 26/05/23 Птн 20:25:28 #655 №2713056 
>>2713014
> я не понимаю, как мы получаем этот адрес?
он известен на этапе компиляции, вроде как это адрес относительно самого файла, но это не точно
мимо
Аноним 26/05/23 Птн 21:21:14 #656 №2713115 
3.PNG
4.PNG
>>2713056
>он известен на этапе компиляции
Ну да, компилятор создаёт таблицу с адресами инструкций, которые соответствуют определённому условию.

Мне вот этот момент непонятен: типа, мы взяли адрес начала таблицы (не знаю, наверное, это не точно, потому что я не допираю для чего мы используем значение и что это за значение, которое у нас в регистре rax на пике-1) 0x560c7280f078, прибавили к нему 44 и получили то, что в регистре rax. Т.е. у нас есть указатель, который указывает на начало таблицы, к нему мы прибавляем 44 и получаем другой адрес, из которого мы берём значение и заносим его в eax, потом мы знак этого значения расширяем до rax, после чего значение fffffffffffff3a1 прибавляем к адресу (как мне кажется начала таблицы) 0x560c7280f078, после чего получаем конечное значение, которое у нас в rax на пике-2, по которому и прыгаем.

Но нахуя мы прибавляем два разных значения к одному и тому же адресу, это, во-первых? Во-вторых, что значат тогда 44 и fffffffffffff3a1?
comments powered by Disqus

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