Из-за периодических проблем с абузами Архивач переходит на новый домен ARHIVACH.NET.

C Programming Language #62 /clang/

 Аноним OP 15/09/20 Втр 22:32:30 #1 №1807650 
C Propaganda.jpg
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

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

Что читать:

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

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

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

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

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

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

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

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

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

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

Stephen G. [email protected] "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

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

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

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

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

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

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

- №59: http://arhivach.ng/thread/597021/
- №60: http://arhivach.ng/thread/610540/
- №61: http://arhivach.ng/thread/610541/ >>1786992 (OP)
Loading...
dead per dead 15/09/20 Втр 23:32:13 #2 №1807713 
Первый
Аноним 16/09/20 Срд 00:18:42 #3 №1807739 
>>1807650 (OP)
Фтарой
Аноним 16/09/20 Срд 12:53:23 #4 №1808052 
>>1807739
Попрошу не засорять тред ненужными сообщениями.
Аноним 16/09/20 Срд 13:00:29 #5 №1808054 
1600250428267.png
>>1807650 (OP)
Аноним 16/09/20 Срд 13:07:28 #6 №1808057 
1600250845852.png
>>1808054
Аноним 16/09/20 Срд 19:36:34 #7 №1808433 
>>1808054
Плюс ещё на уровне стандарта запретить использование скобок в логических выражениях.
sageАноним 16/09/20 Срд 20:13:04 #8 №1808460 
>>1808054
Шутки шутками, а nullptr и так скорее всего будет в C2x в рамках восстановления совместимости с крестами.
dead per dead 16/09/20 Срд 20:22:39 #9 №1808465 
>>1808460
Ненужен.
#define NULL ((void звезда)0)
Аноним 17/09/20 Чтв 10:17:43 #10 №1808785 
>>1808465
nullptr будет корректно проверятся с указателем, а с переменной будет падать на компиляции. Макрос подобной гибкости обеспечить не может.
Аноним 17/09/20 Чтв 12:13:37 #11 №1808878 
Помогите ньюфагу, операции с плавающей точкой - операции не над целыми числами, или что?
Аноним 17/09/20 Чтв 12:35:46 #12 №1808899 
>>1808878
Наоборот, над нецелыми. А откуда такой вопрос?
Аноним 17/09/20 Чтв 12:39:14 #13 №1808900 
>>1808899
Мне нужно реализовать поиск тригонометрических функций без использования операций с плавающей точкой. Хотел просто синусами, косинусами сделать, но похоже нужен какой-то алгоритм.
Аноним 17/09/20 Чтв 12:40:39 #14 №1808901 
>>1808900
Что реализовать?
Аноним 17/09/20 Чтв 12:42:02 #15 №1808902 
>>1808878
Хз что там у тебя за задание, но плавающую точку всегда можно заменить фиксированной, т.е. парой целых, или рациональными числами числитель/знаменатель.
Аноним 17/09/20 Чтв 12:42:16 #16 №1808904 
>>1808901
Операции sin, cos, tg, ctg чисел.
Аноним 17/09/20 Чтв 12:43:06 #17 №1808905 
>>1808900
>Мне нужно реализовать поиск тригонометрических функций без использования операций с плавающей точкой.

Значение COS и SIN это нецелое число в диапазоне от -1 до 1.
Как его можно целым числом записать?
Ну в теориии то извратиться можно, но если ты не знаешь что такое IEEE 754, то очевидно что ты не тот человек, который может сегодня извратиться.
Аноним 17/09/20 Чтв 12:45:46 #18 №1808907 
1448107194128.jpg
>>1808905
Умножив на 1000000
Аноним 17/09/20 Чтв 12:56:57 #19 №1808912 
>>1808907
>Умножив на 1000000
Nice. Но это половина решения.
Аноним 17/09/20 Чтв 13:36:46 #20 №1808940 
Ок, я так понял, что могу реализовать через ряды Тейлора, но вот проблемка, у меня же число пи не целое шоб задать частоту в синусе, мне его получается нужно округлить до 3?
Аноним 17/09/20 Чтв 14:57:11 #21 №1809016 
>>1808940
А чего бы не взять таблицу Брадиса за основу? Забить её в массив и наслаждаться погрешностью.
Аноним 17/09/20 Чтв 16:38:23 #22 №1809111 
>>1808940
Ох лол, настоящий инженер
Аноним 17/09/20 Чтв 17:34:38 #23 №1809189 
>>1808940
Что вообще значит "не используя числа с плавающей запятой"? Где ты результат хранить собираешься? Сформулируй задание как можно точнее.
dead per dead 17/09/20 Чтв 21:13:03 #24 №1809383 
>>1808900
Используй CORDIC или таблицы с представлением fixed point.
Аноним 17/09/20 Чтв 21:23:01 #25 №1809392 
Нужна помощь с программированием на C
Постараюсь норм заплатить за это, но уровень знаний нужен неплохой.
Напишите сюда, пожалуйста @twoomer
Аноним 17/09/20 Чтв 22:17:55 #26 №1809446 
>>1809392
Ты в универе на второй год остался?
Аноним 17/09/20 Чтв 22:20:39 #27 №1809452 
>>1809392
>Постараюсь норм заплатить за это
Это сколько?
Аноним 17/09/20 Чтв 22:48:10 #28 №1809492 
>>1809446
ой, ты меня помнишь, эхе.
>>1809452
стукни в телегу, с тебя не убудет
Аноним 18/09/20 Птн 00:44:44 #29 №1809668 
>>1807650 (OP)
Ещё могу подкинуть такую книжку:

http://buildyourownlisp.com/

Учишь Си путём написания своего Лиспа.
Аноним 18/09/20 Птн 01:16:32 #30 №1809685 
Совсем недавно начал изучать C.
Читаю книгу, заглядываю в стандарт, много гуглю, пытаюсь ковырять разные исходники простых утилит.
И, конечно, вместе с этим решаю и пытаюсь решать различные упражнения, практические задания.
Не скажу, что всё идёт как по маслу, но настроен серьёзно, не планирую сдаваться.
На фоне всего этого почти всё время, которое провожу сейчас за компьютером, трачу на такое самообучение в одиночестве.
И как-то ощущается: нехватка живого общения по теме программирования на C и недостаток возможности обсуждать то, что с ним (C-программированием) связано.
Не поймите превратно, я не имею вообще ничего против C-тредов (пару раз успел получить дельные советы тут), но часто на самом деле как-то не хватает именно живого общения по теме. (посмотрел конфы в телеге, xmpp, но путного ничего не нашёл)

Ещё есть желание найти собеседников в первую очередь из числа тех, кто тоже серьёзно заинтересован в обучении программированию на C.
Может быть получится как-то иногда помогать друг другу, пробовать вместе разрешить ту или иную особо сложную "задачку", обсуждать что-то по теме.

Всё вышеуказанное побудило создать сегодня дискорд-сервер. Надеюсь, что кто-нибудь откликнется и присоединится.
Создал буквально пару часов назад, поэтому на первых порах сразу после входа будут открыты: голосовой канал и 2 текстовых (general и no-microphone).
Ссылку в форме картинки оставил тут: https://2ch.hk/ch/res/161664.html

Буду особенно рад, если кто-нибудь из опытных олдов-специалистов решит зайти, что иногда делиться своей мудростью и давать советы неофитам вроде меня.
sageАноним 18/09/20 Птн 09:06:37 #31 №1809767 
>>1809685
Пашол нахуй социоблядок.
Аноним 18/09/20 Птн 09:18:46 #32 №1809769 
>>1809668
А нет книжки на СИ по написанию своего Хаскеля?
Аноним 18/09/20 Птн 09:47:43 #33 №1809777 
>>1809769
Тебе никакая книга не поможет, если ты не понимаешь как работает компилятор, транслятор, сборщик мусора и так далее.
Аноним 18/09/20 Птн 09:55:39 #34 №1809781 
>>1809777
Душный трипл.
Аноним 18/09/20 Птн 10:04:22 #35 №1809786 
>>1809781
Трипл хуйни не скажет. Он тебе всё верно написал. Как ты будешь компилировать свой хаскел? Синтаксис уже придумал? Парадигму используемую для программирования? Как это все будет транслироваться в байт код/виртуальную машину/ассемблерное представление? Или это будет транслироваться на кресты?

Не толсти толстый школьник-зумерок.
Аноним 18/09/20 Птн 10:29:42 #36 №1809794 
>>1809769
>книжки на СИ
Содомит.
Аноним 18/09/20 Птн 10:36:50 #37 №1809796 
>>1809794
Это ты ещё книги на с++ не видел
https://www.livelib.ru/book/92238/readpart-krov-elektricheskaya-kendzi-siratori/~3
Аноним 18/09/20 Птн 11:02:45 #38 №1809811 
>>1809786
Чел, ты вообще не выкупаешь. Перечитай на что я отвечал.
Аноним 18/09/20 Птн 11:07:08 #39 №1809816 
Чота новый тред не очень интересен. Нет задора. Разочаровываете. Обнадёживает лишь то, что он только начался, может быть чего интересного подвезут.

Ладно, для завтравки - кто пользует операцию "запятая" в Си. Уверен что начинающие программеры и не слышали о такой.
Аноним 18/09/20 Птн 11:08:36 #40 №1809820 
>>1809816
>операцию
оператор
Аноним 18/09/20 Птн 11:24:17 #41 №1809834 
>>1809816
Да тут и про оператор "стремиться к" не слышали.

#define as ;while

do printf("n is %d\n", n) as ( n --> 0);
Аноним 18/09/20 Птн 11:52:37 #42 №1809854 
>>1809834
А вот тут уже у меня глаза на лоб полезли. Ты точно не троллишь?
Если что, пишу на Си с 1993 года.
Аноним 18/09/20 Птн 12:10:31 #43 №1809864 
1526280974918.png
>>1809854
Ни в коем разе.
Аноним 18/09/20 Птн 12:18:13 #44 №1809866 
>>1809767

Как-то ты грубо написал (без необходимости в этом). И сажа совсем неуместна.
Будь добрее что ли.
Аноним 18/09/20 Птн 12:27:24 #45 №1809874 
>>1809864
В какой версии стандарта появилось?
Аноним 18/09/20 Птн 12:28:48 #46 №1809875 
>>1809864

#define begin {
#define end }
Аноним 18/09/20 Птн 12:36:26 #47 №1809883 
>>1809874
Стандартошизик на месте, я спокоен.
Главно что в компиляторах работает.
Аноним 18/09/20 Птн 12:39:36 #48 №1809886 
>>1809883
Нельзя быть таким ебанутым, как ты. Кроссплатформенное приложение писал хоть раз? Наверняка же нет.
Аноним 18/09/20 Птн 12:41:20 #49 №1809888 
>>1809886
Откуда у Си кроссплатформенность, лул? Это же не джава.
Аноним 18/09/20 Птн 12:43:14 #50 №1809889 
>>1809816
Палю годноту
https://habr.com/ru/post/435872/
Аноним 18/09/20 Птн 12:46:56 #51 №1809894 
>>1809874
Вообще это древняя фишка, видел чуть ли не в исходниках линукса.
Аноним 18/09/20 Птн 12:50:57 #52 №1809897 
>>1809888
Вот когда ядро ОС на Java напишут, тогда приходи. Java без виртуальной машины не работает. Виртуальная машина Java работает поверх ОС.

Sun Microsystems как раз и сдох? когда решил заебощить Java CPU/
Аноним 18/09/20 Птн 13:49:46 #53 №1809915 
>>1809889
Швабропетух, уходи
Аноним 18/09/20 Птн 13:54:37 #54 №1809919 
>>1809915
Хорошо
https://www.youtube.com/watch?v=wM8vz_UPTE0
Аноним 18/09/20 Птн 14:08:47 #55 №1809932 
>>1809897
При чем тут ядро ОС.? У меня есть обычные программы на Java и я этим калом пользуют только сдерживая рвоту от безысходности отсутствия альтернатив. Если бы весь софт был на Java я бы просто повесился или отказался от использования компьютеров, потому что моя психика дороже.
Аноним 18/09/20 Птн 14:11:26 #56 №1809935 
>>1809932
>У меня есть обычные программы на Java
Зачем так жить? Ну C# ещё как-то можно понять и простить, но Java?
Аноним 18/09/20 Птн 14:45:19 #57 №1809949 
>>1808460
Я бы ещё от ссылочек, как в плюсах, не отказался бы.
Аноним 18/09/20 Птн 15:18:20 #58 №1809970 
>>1809949
Ненужны, это как var в паскале, который внезапно оказывается указателем, хотя таковым не выглядит.
Аноним 18/09/20 Птн 16:29:18 #59 №1810024 
>>1809919
pub fn
Не, ну это пиздец конечно
Аноним 18/09/20 Птн 16:52:57 #60 №1810047 
>>1809970
Ссылка является частным случаем указателя. Когда передаешь объект в параметр функции, то передаешь его по ссылке. Использование ссылок в этом случае отменяет проверку на валидность указателя. Почему? Т.к ссылка указывает на существующий объект. Будешь брать ссылку из голого nullptr - получишь ошибку на этапе компиляции.
Аноним 18/09/20 Птн 16:54:12 #61 №1810049 
int main(void){
char *str = "Hi!";
return 0;
}

сохраняю, например, в файле hi.c
Затем в терминале выполняю команду: gcc -nostdlib -o hi hi.c
В ответ, конечно, получаю предупреждение /usr/bin/ld: warning: cannot find entry symbol _start; ...

Но почему после этого исполняемый файл hi всё равно весит примерно 13 килобайт?
Аноним 18/09/20 Птн 16:57:51 #62 №1810056 
>>1810049
>Но почему после этого исполняемый файл hi всё равно весит примерно 13 килобайт?

strip hi

Но сначала лучше прочти вот это - https://www.thegeekstuff.com/2012/09/objdump-examples
И посмотри сам.
Аноним 18/09/20 Птн 17:08:46 #63 №1810065 
>>1810049
Вангую отладочные символы внутри. Можно strip'ом воспользоваться.
Строки поубирает. Можешь попробовать флагами gcc убрать отладочные символы опцией -g0, но вряд ли оно прям все вырежет
Аноним 18/09/20 Птн 17:08:51 #64 №1810066 
>>1810049
А чего ты хочешь добиться?
Аноним 18/09/20 Птн 17:15:47 #65 №1810082 
>>1810065

strip и g0 не помогают.

>>1810066
Для начала того, чтобы линкер не подрубал посторонние библиотеки, если уж я использую опцию nostdlib.
Аноним 18/09/20 Птн 17:30:47 #66 №1810114 
>>1810082
У strip есть ключи. Можно хорошо порезать.

Выше же ссылка на ключи objdump. Это 100% ответ на твой вопрос.
Аноним 18/09/20 Птн 17:32:04 #67 №1810117 
>>1810082
>nostdlib

попробуй ещё nostdinc - в инклудах докуя чего может прицепится.
Аноним 18/09/20 Птн 17:37:42 #68 №1810124 
>>1810082
Если так интересно, можешь ознакомиться со статьей: https://habr.com/ru/post/88101/
Мне всё-таки интересно, куда тебе размер уменьшать-то?
Может другой компилятор попробовать стоит или поиграться с оптимизацией (только что в этом коде оптимизировать..., нужно рассматривать примеры побольше)? То смотри и поменьше размера добъёшься.
dead per dead 18/09/20 Птн 17:40:48 #69 №1810127 
>>1810047
При наличии ссылок по коду х=1 трудно определить, меняется тут аргумент или параметр за пределами функции.
Аноним 18/09/20 Птн 17:49:42 #70 №1810138 
>>1810124
глянул на статью, вот цитата оттуда:
"...Использоваться будут только явно переданные линкеру файлы».

[email protected]:~/c$ gcc -nostdlib -o hello hello.c
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 00000000004000e8

Всего лишь предупреждение, все равно попробуем:

[email protected]:~/c$ wc -c hello
1329 hello

Выглядит неплохо! Мы уменьшили размер до значительно более вменяемого (аж на целый порядок!)…"

Тут >>1810049 абсолютно идентичная команда выполняется "gcc -nostdlib -o hi hi.c" Но размер исполняемого файла не уменьшается, как это происходит в статье.
Аноним 18/09/20 Птн 17:59:42 #71 №1810147 
>>1810056
>>1810114

Плохо знаком с objdump, но судя по тому, что именно он выводит, причина тяжеловесности исполнительного файла вроде в ld-linux-x86-64.so.2
Аноним 18/09/20 Птн 18:07:21 #72 №1810158 
>>1810147
Поиграйся ключами - получишь массу информации. Он даже дизассемблирует.
Аноним 18/09/20 Птн 18:37:35 #73 №1810177 
>>1810127
Обсуждалась не передача обычных типов, а конкретно объектов. С теми же самыми структурами в Си приходится работать? - Приходится. Производится проверка на передаваемый указатель на структуру: эквивалентен ли полученный указатель NULL-у? Понятное дело, что такого рода проверка нужна для избежания ошибки сегментирования. При ссылке не пришлось бы этого делать, код стал бы занимать меньше места (ещё +1 в пользу ссылки).

Ранее упоминалось, что ссылка - частный случай указателя. Значит при изменении значения внутри функции передаваемой по ссылке переменной, значение вне функции будет также меняться.
Аноним 18/09/20 Птн 18:40:06 #74 №1810179 
>>1810049
Куски ELF выравниваются на страницу, чтобы его удобней мапить в память. Заголовок будет минимум страница. Дальнейшее зависит от кунпелятора и архитектуры.
clang -m32 даст файл чуть больше страницы.
Аноним 18/09/20 Птн 19:05:30 #75 №1810194 
>>1807650 (OP)
Няши, напомните, каков сейчас максимальный сегмент данных в исполняемом файле? Указатель 64?
Аноним 18/09/20 Птн 19:36:28 #76 №1810210 
1446925821324.png
>>1810177
Ты лепишь какую то фигню. Ничего никакие ссылки не проверяют.
Аноним 18/09/20 Птн 20:22:13 #77 №1810226 
>>1809392
Извините - бамп
Аноним 18/09/20 Птн 20:40:00 #78 №1810238 
>>1810226
Что такое неплохой уровень знаний? Надо уметь писать свои ОС или Гугол?
Аноним 18/09/20 Птн 20:44:14 #79 №1810240 
>>1810238
Напиши - ничего страшного не случится.
Скажем так, я студент раздолб.
Аноним 18/09/20 Птн 20:46:14 #80 №1810241 
>>1810240
Что написать? Свою ОС или Гугол?
Аноним 18/09/20 Птн 20:49:05 #81 №1810243 
>>1810241
Консольную программу :)
Аноним 18/09/20 Птн 21:25:21 #82 №1810263 
>>1810210
Ты разыменовываешь nullptr и передаешь его, естественно будет неудачное завершение программы. Я говорил о другом.
Допустим у тебя есть структура, тебе её нужно передать в функцию.
Если ты передаешь по указателю, то тебе придётся делать проверку на nullptr (для устойчивости функции), если ты делаешь проверку по ссылке - проверку такого плана делать не придётся. В твоём случае ссылка верна - компилятор не ругается, но ссылка указывает на неинициализированный объект, поэтому обратиться к полям объекта не получится, в следствие чего ловим ошибку сегментирования. Всё правильно я сказал, подумай сначала, перед тем, как что-то писать.
Аноним 18/09/20 Птн 21:31:40 #83 №1810273 
>>1810263
Не "проверку по ссылке", а "передачу по ссылке". Опечатку допустил.
Аноним 18/09/20 Птн 21:38:12 #84 №1810282 
image.png
>>1810210
Ознакомься, будь добр, ещё с этим отрывком. Основные мысли выделил, чтоб не сбить тебя с толку.
Аноним 18/09/20 Птн 21:43:11 #85 №1810284 
>>1810263
>Если ты передаешь по указателю, то тебе придётся делать проверку на nullptr (для устойчивости функции)
Я тебе показал что в случае с ссылкой то же самое - я спокойно передал nullptr, значит тебе надо делать ровно такую же проверку.
> обратиться к полям объекта не получится, в следствие чего ловим ошибку сегментирования.
Опять же я тебе показал что программа обратилась к неинициализированному полю без всяких ошибок сегментации.
Аноним 18/09/20 Птн 21:47:46 #86 №1810285 
>>1810284
Ссылка указывает на указатель, в то время как указатель указывает на неинициализированный объект. Этого объекта в памяти нет. Какое-либо изменение, обращение к объекту приведет к ошибке сегментирования.
Ты сломал логику иным путем, а вот теперь попробуй передать ссылкой невалидный указатель напрямую. Так не получится.
Аноним 18/09/20 Птн 21:56:38 #87 №1810293 
>>1810285
Я тебе уже все показал. Я разыменовал nullptr прямо перед ебалом компилятора и он никак не среагировал. Nullptr никак тебя не защитит. Если ты напишешь свою библиотеку которая в функциях принимает ссылки, ей точно так же смогут передать указатель. Поэтому тебе все равно придется проверять на NULL если ты печешься о "непадучести".
dead per dead 18/09/20 Птн 22:19:50 #88 №1810303 
>>1810285
> Ссылка указывает на указатель
Ссылка на разыменование указателя тождественна этому указателю. Указатель может быть 0. Эрго, можно передать 0 в качестве ссылки. Шах и мат.
sageАноним 18/09/20 Птн 23:47:58 #89 №1810355 
>>1809794
>> книжки на СИ
> Содомит.
Книжка "A Retargetable C Compiler" написана на Си. Но она, конечно, не про хаскель.

>>1809834
> "стремиться к" не слышали
Мы даже про головастиков слышали. Которые ~-~-n и -~-~n.

Аноним 18/09/20 Птн 23:58:16 #90 №1810360 
>>1810303
Да, это так.
Компилятор не может проверить адрес объекта. Вся защита ссылок от того чтобы они не были nullptr - проверки типов чтобы ты не мог вместо ссылки присвоить nullptr или передать его в качестве ссылки.
Во всем остальном все хаки будут работать. Можешь 0 передавать хоть с ассемблера в код крестовый который принимает ссылку и все будет дружно падать, а ссылка будет 0.
Аноним 19/09/20 Суб 00:29:47 #91 №1810382 
>>1809811
Пошли маняманевры. Чел, ты мне-тотне пизди итт. Я всё прекрансо видел на что ты отвечал.
Аноним 19/09/20 Суб 00:43:02 #92 №1810393 
>>1810210
Почему это говно не упало на шестой строке?
Вот тут должен был segfault случиться:

mov eax, QWORD PTR, [rax]

Вакаба, сука скобки наверное пожрёт на rax
Аноним 19/09/20 Суб 00:45:08 #93 №1810395 
>>1810284
>Опять же я тебе показал что программа обратилась к неинициализированному полю без всяких ошибок сегментации.

Потому что там какой-то ёбаный эмулятор. Реальная программа сразу бы свалилась в корку.
Аноним 19/09/20 Суб 00:46:17 #94 №1810396 
>>1810303
>Указатель может быть 0.

Смешно до слёз.
Аноним 19/09/20 Суб 00:52:35 #95 №1810399 
>>1810393
Вообще оно и сегфолтнулось. Ошибка 139 в godbolt намекает.
Аноним 19/09/20 Суб 00:54:00 #96 №1810401 
>>1810396
Плакали всей деревней программистов под Москвой
Аноним 19/09/20 Суб 00:56:34 #97 №1810403 
>>1810399
Это не "ошибка" а возвращенное return из main значение.
Аноним 19/09/20 Суб 01:00:51 #98 №1810407 
изображение.png
>>1810403
Тогда почему тут 139?
Аноним 19/09/20 Суб 01:04:27 #99 №1810409 
>>1810360
Чел, ну зачем ты продолжаешь позориться? Ты вообще не понимаешь зачем ввели nullptr.
Если бы он, как ты говоришь, проверялся в компайлтайме на присваивание какой-то ссылке (а он не проверяется, как мы видели выше), то есть он в константном выражении, то и присвоение NULL (Someref& = 0) так же легко отлавливалось и никакой nullptr для этого не нужен.
nullptr как отдельный в плюсах введен по двум причинам:
1) перегрузка функций (foo(NULL) вызовет foo(int) а не foo(some*))
2) шаблоны (аналогично, some<NULL> развернется в some<int>, а не some<some_ptr_t>)
Но - в Си нет ни того, ни другого! И снова nullptr не нужен.
Аноним 19/09/20 Суб 01:05:03 #100 №1810410 
>>1810382
Ну тогда ты видел что отвечал я на "посоны вон книга где пишут Лисп"
Аноним 19/09/20 Суб 01:06:18 #101 №1810411 
>>1810409
Я только про плюсы писал.
Кстати там ходят слухи про шаблоны и перегрузку функций в Си, и что их могут и добавить, тогда и твои причины будут касаться Си, и можно будет о nullptr говорить.
Аноним 19/09/20 Суб 01:10:48 #102 №1810414 
1573905011083.png
>>1810407
А почему нет?
Аноним 19/09/20 Суб 01:12:41 #103 №1810415 
>>1810407
>Тогда почему тут 139?
Потому что это ёбаный эмулятор.
Кто ж тебе даст запускать реальные бинарники на сервере?
Попробуй локально в консоли выполнить - словишь Segmentation fault. Core dumped. Или ""Программы выполнила недопустимую операцию и будет закрыта.".

Это я без всяких проверок тебе говорю.
sageАноним 19/09/20 Суб 01:16:10 #104 №1810417 
>>1810415
Это не эмулятор. Это реальные компиляторы.
Выше скрин без всяких коре дампов.
Аноним 19/09/20 Суб 01:18:29 #105 №1810418 
изображение.png
>>1810414
Рекомендую перекатиться на операционную систему со своего спермоговна.
Аноним 19/09/20 Суб 01:21:59 #106 №1810419 
>>1810415
Какой эмулятор? Ты про sandbox слышал?
Оно и на godbolt упало. 139 кидает оно в любом случае, с любым кодом там если процесс падает в сегментацию.
sageАноним 19/09/20 Суб 01:29:59 #107 №1810420 
>>1810418
Советую перекатиться на операционную систему со своей прошивки для микроволновки, которая падает от любого чиха.
Аноним 19/09/20 Суб 01:30:54 #108 №1810421 
image.png
>>1810418
>>1810419
>>1810414

Windows ебанутая - не падает. Возвращает отрицательное число.
Вот же гандоны. И давно так?
Аноним 19/09/20 Суб 01:32:28 #109 №1810422 
>>1810420
>которая падает от любого чиха.

setjmp/longjmp позволяют творить чудеса
Но Windows ведёт себя неправильно.
Аноним 19/09/20 Суб 01:35:04 #110 №1810424 
>>1810421
>И давно так?
Возможно что-то в нулевой странице висит с отрицательным значением, оно оттуда тянет результат и отдает. На линуксе страница по адресу 0х00000000 не замаплена в процесс и ее убивает ядро. Это сродни тому чтобы полагаться на возврат локальных переменных по указателю. Вроде и работает, а вроде и не должно.
Аноним 19/09/20 Суб 01:44:10 #111 №1810427 
>>1810420
А по-моему это нормально когда ОС имеет адекватное поведение. И если программа полезла не туда куда надо - она не продолжила исполняться дальше, а была остановлена операционной системой.
И с какого хуя разыменовывание nullptr это вообще адекватно?
Аноним 19/09/20 Суб 01:57:57 #112 №1810433 
Я чё тут один пишу на винде, потом компилю сорц под Винду в дебиане, и запускаю бинарник на винде?
sageАноним 19/09/20 Суб 02:00:52 #113 №1810435 
>>1810427
Это UB, поэтому по стандарту может быть что угодно, а понятия адекватно-не адекватно это уже пространные рассуждения уровня морали и чести.
Аноним 19/09/20 Суб 02:01:12 #114 №1810436 
>>1810433
А зачем ты делаешь этот лишний шаг? Шланг и на винде работает.
Аноним 19/09/20 Суб 02:04:08 #115 №1810439 
>>1810436
>Не пользоваться божественным msvc
>Использовать ссаный шланг от анальной помпы Стива Кука
Аноним 19/09/20 Суб 02:06:59 #116 №1810442 
image.png
>>1810424
>На линуксе страница по адресу 0х00000000 не замаплена в процесс и ее убивает ядро.

Это понятно. Нихуя непонятно с каких хуёв MSVC даёт спокойно завершиться программе.

Впрчем, я победил проблему и считаю что в данном случае разработчики MSVC просто ебанулись.
Аноним 19/09/20 Суб 02:08:16 #117 №1810443 
>>1810439
>божественным msvc
C++20 when?
Аноним 19/09/20 Суб 02:29:44 #118 №1810452 
>>1810424
Нет связи между nullptr (или NULL) и адресом 0x00000000. Может быть виртуальная память. Может быть микроконтроллер у которого адрес 0 это вектор прерываний.
Аноним 19/09/20 Суб 02:35:33 #119 №1810455 
>>1810452
>Нет связи между nullptr (или NULL) и адресом 0x00000000

за nullptr ничего не скажу, это зарезервированное слово и копмилятор может пользоваться им по своему усмотрению.

Что касается NULL то испокон веков это нето вроде
#define NULL (void*) 0
и никак иначе
Аноним 19/09/20 Суб 02:37:05 #120 №1810457 
>>1810455
Это не значит что тебе дадут лезть по физическому адресу 0
Аноним 19/09/20 Суб 02:41:13 #121 №1810458 
>>1810457
это и коню понятно.
да и полюбому адресу не даст - ОС обязана пресекать все попытки обращения к любому адресу, не отображённому в адресное пространства процесса.
Аноним 19/09/20 Суб 08:27:50 #122 №1810577 
>>1810452
Тебе расписали один из вариантов UB.
Странно отрицать что если NULL или nullptr подставляют зачастуюпро магические указатели по типу 0xDEADBEEF мы все помним при запуске всяких меморичекеров 0 значение, и если попытаться их разыменовать в указателях, то код будет содержать команду обращения к памяти по 0 адресу. Дальше дело железа и ОС
Аноним 19/09/20 Суб 10:28:27 #123 №1810623 
>>1810458
Нахуй такая ОС не нужна, где нельзя писать в другой процесс и в саму ОС. Да и не ОС это будет, а прошивка тостера.
Аноним 19/09/20 Суб 11:42:16 #124 №1810639 
>>1810623
Про Shared Memory слышал?
Аноним 19/09/20 Суб 12:00:36 #125 №1810650 
>>1808052
Но в таком случае тред всегда будет полностью пустой
Аноним 19/09/20 Суб 12:03:13 #126 №1810652 
>>1810577
На каких то платформах nullptr равен 0xFFFFFFFF
Аноним 19/09/20 Суб 13:26:43 #127 №1810721 
>>1810401
плакать надо было когда медведев поднял два лярда рубасов на постройке ваших хайтек сараев

Аноним 19/09/20 Суб 13:29:12 #128 №1810722 
>>1810623
Долой безопасность! Делай (int )0x7CFF5051 = 666; во славу Ленину, чтоб ебнуть ОС и все запущенные приложухи! MMU зло! Коммунизм памяти! Каждой программе по потребностям!
Аноним 19/09/20 Суб 13:30:42 #129 №1810724 
>>1810652
На каких?
Аноним 19/09/20 Суб 16:12:13 #130 №1810871 
>>1810639
Хуйня без задач
Аноним 19/09/20 Суб 17:18:04 #131 №1810927 
>>1810871
Если вот это >>1810623 писал ты, то пиздуй в школу. Иначе возможны нюансы.

Аноним 19/09/20 Суб 18:06:13 #132 №1810972 
>>1788067 →
>Забугром эмбедщина
>Quallcom, Mellanox, Marvell, Nvidia, Xilinx, Tesla
Речь идет про рядового анона, либо без во, либо закончившего говновуз, которые забугром нафиг не кому не нужны даже с 10 годами опыта.
Поэтому если выбирать из работы в России: прогать микрики, как даун, или стать веб-разработчиком, очевидно выгоднее выбрать второе. Можно как завести трактор в ДС, так и перейти на удаленку, фриланс, когда прогером мкк будешь всю жизнь сосать за 30-40к максимум при работе оффлайн 5/2.
Аноним 19/09/20 Суб 18:06:42 #133 №1810975 
>>1788546 →
>Причём настолько, что любой человек с опытом 3+ лет на этом самом эмбедеде может спокойно ехать в какую-нибудь Германию или Францию на 4-5к рейхсмарок ежемесячно,
Но реальность такова, что типичный байтоеб из НИИ, не закончивший топ вуз в дс, будет пахать за 20к-30к и ни в какую германию и францию не уедет, потому что он там нафиг не нужен.
В то время как веб-разработчик даже в рахе может получать эквивалент 2-3 рейхсмарок через пару лет работы и работать на в разваливающемся заводе или нии, а в крутом офисе с печеньками и кондиционером со свободным графиком.
Аноним 19/09/20 Суб 18:07:28 #134 №1810976 
>>1795877 →
> не одними деньгами, анонче. Есть ещё то, что у тебя в мозгу и душе.
Угу, пока норм прогеры уже и квартиру в новостройке/жилье купят, машину, и семью заведут, ты будешь ездить на работу на жигулях микросхемы паять и жить с мамкой, зато ДЛЯ ДУШИ работаешь, лол.
Аноним 19/09/20 Суб 18:47:43 #135 №1811007 
>>1810975
>ни в какую германию и францию не уедет, потому что он там нафиг не нужен.
Потому что ссыт боится и ленится. А съездить на пару лет не помешало бы. Культурный обмен и всё такое. Копеечку заработать чтобы стать дома на ноги. Почему нет?
Аноним 19/09/20 Суб 18:50:06 #136 №1811010 
>>1810976
А ты хоть жилье купил? Думаю язык Си обеспечит шансами на светлое будущее ещё не одно поколение инженеров-программистов. Все равно любой boot код писать проще на нем. Какой бы вы раст не хотели юзать или С++ для написания ядра, костяк все равно будет на Си. Тонна устройств которые имеют прошивку написанную Си - носишь mi band? Прошивка на Си. Фитнес трекер не на айос/ведре - тоже на Си написано. Юзаешь дома игровую приставку - на геймпаде и консоли прошивка написанная на Си вероятнее всегоили asic в геймпаде, не изучал точно. Юзаешь клаву USB или мышь? Тоже прошивка на Си. Куда не глянь, а он нас все равно окружает. И это охуенно.
Ну и да, зачем оставаться в РФ? Аргумент "ты там не нужен"? Смешно. С таким же подходом можно сказать - а зачем вообще кто-то нужен в России? Правительству нужна труба, нужны месторождения, остальные просто мешают им обогащаться.
Аноним 19/09/20 Суб 18:51:07 #137 №1811011 
>>1810976
>на жигулях
Как что-то плохое.
Vesta SW Cross - доволен и пока мне лучше не надо. Или это не Жигули?

А микросхемы это для души.
Аноним 19/09/20 Суб 20:54:23 #138 №1811078 
>>1810972
Дружище, ты продолжаешь срать писать в этом треде, агитируя всех вступать в ряды WEB-разработки. Напоминаю, ты намеренно приходишь в Си-тред и, затрачивая свое личное скорее всего время, делаешь это.

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

Ну... Либо же ты просто тролль, которому просто нечего делать.
Аноним 19/09/20 Суб 20:56:39 #139 №1811080 
>>1811078
> Дружище, ты продолжаешь срать писать в этом треде, агитируя всех вступать в ряды WEB-разработки.
Ну да, а тебя ебет?
>Напоминаю, ты намеренно приходишь в Си-тред и, затрачивая свое личное скорее всего время, делаешь это.
Ну да, а тебя ебет?
> Я у тебя попрошу совсем немного. Я не буду тебя стебать, троллить и т.д., мне чисто интересно. И так, что тебя мотивирует это делать? Какая у тебя мотивация? Что тобой движет? Какая цель этих действий?
А тебя ебет?
> Ну и попрошу тебя рассказать о себе в двух словах, а именно - прости за нескромный вопрос, твой возраст и род занятий (если софтваре инжиниринг, то какой).
А тебя ебет? 26 ЛВЛ, курьер в Delivery Club
> Ну... Либо же ты просто тролль, которому просто нечего делать.
А тебя ебет?
Аноним 19/09/20 Суб 21:08:10 #140 №1811090 
>>1811080
Не, меня никто не ебет (и ничего) а вот тебя, раз ты такие вопросы задаешь, возможно, кто-то и ебет по выходным

Мне всего лишь интересна твоя мотивация, лол.

> 26 ЛВЛ
А общаешься с людьми как шкила))))))

> курьер
Что и требовалось доказать - ты просто приходишь сюда посрать, дружище. Проследуйте в /b/, там для Вас место освободилось!
Аноним 19/09/20 Суб 21:28:37 #141 №1811104 
>>1811090
Не корми его
Аноним 19/09/20 Суб 21:41:36 #142 №1811117 
>>1811104
Понял-принял.
Аноним 20/09/20 Вск 03:47:18 #143 №1811314 
>>1811090
>>1811104
Не понимаю вашего копротивления одному человеку, когда весь тред полон таких же.

Псмотри >>1810623 , а потом на ответы. Дебики даже не поняли написанное, отсутствует понимание что такое компьютер, и как следствие что такое программирование. Рассуждают с позиции мобилки или веб-браузера, будто си это такой джаваскрипт, только более быстрый и со своими замутами. Просто сейчас одни веб-дебилы везде и есть, не в смысле что они пишут на хтмл, а в том, что отношение к программированию именно такое. А какой конкретно язык они для этого используют, какая разница.
Аноним 20/09/20 Вск 09:23:07 #144 №1811352 
>>1810293
Ссылка в твоём случа же корректна, невалидным явл указатель, как ты хочешь проверять невалидность объекта?

И о чём у нас спор? О том, что понятие ссылки в Си будет ненужным?
Тогда зачем ссылки были добавлены в кресты? Почему рекомендуют передавать по ссылке, когда имеется возможность, а не по указателю?
Давай, давай, нападай, раздави меня полностью своими железеными аргументами.
Аноним 20/09/20 Вск 10:47:12 #145 №1811372 
>>1811352
>Почему рекомендуют передавать по ссылке
Это кто?

>>1811314
>Дебики даже не поняли написанное
Уйди остюда в спешке. Ты же глуп и не представляешь как работает MMU. При этом выкручиваешься, заявляя что Shared Memory не нужна. А вот своим последним постом ты вообще расписался в том, что ты биомусор - в ответ на резкие, но справедливые замемечания, ты полез в бочку. То, что ты чего-то не знаешь, это поправимо, но твоя реакция на указанные тебе ошибки с головой выдаёт в тебе тупую биомассу. Сдохни, наверное. Сделай мир чище.

Или обоснуй ненужность MMU, чтобы хоть как-то оправдать себя в глазах шарящх анонимусов.
Аноним 20/09/20 Вск 11:27:02 #146 №1811386 
>>1811372
Воспользуйся ресурсами сети Интернет, посмотри мнения людей. Вот здесь неплохое объяснение, когда и что необходимо использовать:
https://ru.stackoverflow.com/questions/349/%d0%a7%d0%b5%d0%bc-%d0%be%d1%82%d0%bb%d0%b8%d1%87%d0%b0%d1%8e%d1%82%d1%81%d1%8f-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8-%d0%be%d1%82-%d1%83%d0%ba%d0%b0%d0%b7%d0%b0%d1%82%d0%b5%d0%bb%d0%b5%d0%b9-%d0%b2-%d0%a1

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

Я так и не понял, мой "противник" топит за ненадобность ссылок или их бесполезность в Си. Задал вопрос - пока ответа нет, может очухается и ... ответит.

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

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

Столько агрессии в треде, даже в жизни столько не видел.
Аноним 20/09/20 Вск 11:28:46 #147 №1811387 
>>1811352
Компиляторы С++ имплементят ссылки через указателину и открытие, да?, без особых валидаций. Стандарт не требует рантаймовых проверок ссылки на nullptr. Так что все поведение в принципе возможно, хотя и является UB. Да и в принципе избегать и обрабатывать UB в С/С++ это задача программиста, компилятор зачастую только рад подкинуть дров в огонь
Если ещё добавить к тому что ссылки в С++ не имеют адресной арифметики.
То наверное единственная польза от ссылок аля С++ в языке Си - синтаксический сахар, чтобы везде не писать разыменования указателя, а делать это просто по обращению к идентификатору.
Может вы ещё какие-то пользы подкинете, но с текущей реализацией которую можно слизать - пользы реально мало выходит. Либо надо все в куче переносить, с шаблонами и перегрузкой. Либо совсем нинужно.
Аноним 20/09/20 Вск 11:34:59 #148 №1811389 
>>1811314
>Дебики даже не поняли написанное
О великий анон, расскажи же нам, непосвящённым и тёмным, зачем везде и всюду в многопользовательские ОС вставляются MMU, и делается защита памяти и запрещается запись в память другой программы, а межпроцессное взаимодействие сводится к посылке сообщений через shared очередь и передаче данных между сокетами
Аноним 20/09/20 Вск 11:52:13 #149 №1811400 
>>1811352
Когда тебе учитель объясняет тему, ты считаешь что он "спорит" с тобой? Пиздец.
Аноним 20/09/20 Вск 11:52:37 #150 №1811401 
>>1811386
Здесь у нас свободное общение. Ты можешь писать агрессивно, а можешь писать как лох ибаный и мямлить. В жизни ты столько агрессии и не увидишь, мы людоеды только на этом сайте
Противники топят за то, что ссылки в С++ кривые и уебищные, и чем такое пытаться переносить - лучше сидеть с указателями, которые дают тебе весь карт-бланш.
Тебе сверху по ссылкам показали что никаких проверок на null избежать не удастся.
И ещё, например, чего стоит олдовая шутка с ссылкой на локальную переменную, смешно, но работает - и является вовсе пиздецом. gcc насколько взбугуртнул от подобного что эту ссылку возвращает всегда 0 константой, мягко говоря запрещает подобное, да. А вот msvc и clang выдают рабочий код
Итог - чем такие ссылки, лучше с указателями ебаться.
Аноним 20/09/20 Вск 11:54:13 #151 №1811403 
>>1811400
Учитель тоже учится во время учебного процесса. Факт.
Аноним 20/09/20 Вск 11:56:54 #152 №1811407 
>>1811386
>Спор начался с твита человека, описывающего что он хотел бы добавить в ЯП Си.
Чел, ты... Он не хочет ничего "добавить" в ЯП Си, это ирония такая была над тем как комитет извращает фичи из с++ когда добавляет их.
> Какой-то анон на меня напал
На тебя никто не "нападал", ребенок, ты начал нести ахинею что ссылка защищена от присваивания nullptr, на что тебя обоссали с пруфами, приведя листинг в котором ссылки не запрещают никакие присваивания nullptr.
Просто съеби куда нибудь в страхе.
Аноним 20/09/20 Вск 12:19:21 #153 №1811412 
>>1811407
Он "сломал" ссылку другим способом (при котором сама ссылка корректная, а объект - нет). Ссылка защищает от явной передачи nullptr.
Если передаешь по указателю, то nullptr можно передать в ЧИСТОМ ВИДЕ. Со ссылкой такое у него не получилось, хотя я попросил его предоставить такой пример. А знаете почему? Потому что ссылка должна указывать не реально существующий объект. Кто ещё обоссан? С чего такие резкие выводы?
Аноним 20/09/20 Вск 12:27:20 #154 №1811415 
>>1811412
>при котором сама ссылка корректная, а объект - нет
Что за хуйню ты несешь?
В общем тебе уже все объяснили.
Ссылка защищает от конструкции MyStruct& ref = nullptr и от конструкции foo(nullptr)
Так просто не будь дауном и не пиши так. Это совсем нетрудно, это личералли два слова рядом, а не какие то сложные конструкции, которые надо искать по всем файлам.
Больше ни ссылка ни nullptr ни от чего не защищают.
Когда твою функцию foo(&) вызовут так ptr=NULL;foo(ptr) никакая защита не поможет и твоя функция упадет
Поэтому тебе ВСЕ РАВНО придется проверять то что тебе передали по ссылке на NULL, если ты не хочешь чтобы твоя функция падала.
Аноним 20/09/20 Вск 12:28:08 #155 №1811416 
>>1811415
ptr=NULL;foo(*ptr)
быстрофикс
Аноним 20/09/20 Вск 12:43:58 #156 №1811419 
>>1811415
Это я и хотел донести, что ссылка защитит от явной передачи nullptr.
Аноним 20/09/20 Вск 12:45:59 #157 №1811420 
>>1811419
Не всегда.
Аноним 20/09/20 Вск 12:47:24 #158 №1811422 
>>1811420
Но мы же и не рассматриваем все случаи.
Аноним 20/09/20 Вск 12:48:20 #159 №1811423 
>>1811422
А нужно рассмотреть все случаи. Чтобы принимать какую-то вещь правильно.
Принимая закон в государстве, не рассматривают же его только с одной стороны?
Аноним 20/09/20 Вск 12:56:01 #160 №1811425 
>>1811423
Но я изначально указал пример, который мы рассматриваем (передача структуры в функцию, проверка указателя на nullptr).
Спор не про то, что лучше: указатель или ссылка, а про то, что мой оппонент утверждает (пусть и не явно), что ссылки бесполезны. Зачем же тогда были введены ссылки? - рит.вопрос.
Я не могу полагать что такие языки, как C и C++ будут забивать ненужным г*вном. Значит всё-таки применение ссылочкам-то нашлось. Вариаций решения проблемы может быть много, выберите то, какое вам по душе. Вечно эти споры программистов (или ещё личинок) в интернете ни о чём. Может закроем тему?
Аноним 20/09/20 Вск 12:56:47 #161 №1811426 
>>1811419
И про это тебе уже поясняли - для этого никакой тип nullptr заводить не нужен, компилятор ровно так же может обнаруживать передачу обычного 0.
Аноним 20/09/20 Вск 12:58:08 #162 №1811429 
>>1811425
В с++ и шаблоны добавили, это не значит что надо раздувать си и тянуть все подряд.
Аноним 20/09/20 Вск 13:04:48 #163 №1811432 
>>1811426
Про nullptr разговора и не было, я не говорил, что его нужно вводить. В Си пока что хватает обычного NULL-а.
Аноним 20/09/20 Вск 13:09:47 #164 №1811434 
>>1811429
Когда обрабатываешь разные по типу параметры, то приходится функции копировать. Насколько мне известно, дубляж очень схожих или даже эквивалентных кусков кода является плохим тоном.
Языку нужно как-то развиваться и не стоять на месте.
Можно предположить, что Си пойдет по какой-то из нижеперечисленных дорог:
1. Не перенасыщен функционалом, но при этом безопасный язык.
2. Большой функционал, по безопасности остаёмся на этом же уровне.

Сугубо мне сипатичен 1-ый вариант. Большой функционал и определенная совместимость с Си есть у крестов. Пока хватает.
Аноним 20/09/20 Вск 13:12:16 #165 №1811435 
>>1811432
Пошли маневры
>>1810047
Аноним 20/09/20 Вск 13:17:06 #166 №1811437 
>>1811435
Какие ещё маневры?
Аноним 20/09/20 Вск 13:21:45 #167 №1811441 
>>1811437
>Про nullptr разговора и не было
>весь тред обсуждается nullptr
Аноним 20/09/20 Вск 13:27:32 #168 №1811444 
>>1811441
Мы разговаривали о ссылках и о проверка на nullptr.
Я подумал, что ты говоришь о введении nullptr-а в Си, такую тему я лично не поднимал.
Аноним 20/09/20 Вск 13:27:53 #169 №1811445 
>>1811444
проверке*
Аноним 20/09/20 Вск 13:30:01 #170 №1811446 
>>1810442
>разработчики MSVC просто ебанулись
или победил скриптовый мир, в котором консольному приложению не нужно показывать окано "Программа выполнила недопустимую операцию и будет закрыта."
Аноним 20/09/20 Вск 13:33:15 #171 №1811449 
>>1811446
Скриптовый мир победил...
Интерпретатор оказался сильней...
Аноним 20/09/20 Вск 14:04:41 #172 №1811463 
>>1811434
> безопасный язык
> Си
Галоперидола ему вколите, быстрее!
АХАХАХАХАХАХАХАХАХАХАХАХАХА
Аноним 20/09/20 Вск 14:06:01 #173 №1811464 
>>1811463
Очевидно он имел в виду что Си не будет добавлять фичи, а пойдет в сторону безопасности.
Аноним 20/09/20 Вск 14:09:37 #174 №1811467 
>>1811464
> Си не будет добавлять фичи
> а пойдет в сторону безопасности
АХАХАХАХАХАХАХАХАХАХАХАХАХАХА
Аноним 20/09/20 Вск 14:14:27 #175 №1811471 
>>1811449
Та даже в embedded суки какие-то тянут Javascript и Micropython. Реально побеждает.
Аноним 20/09/20 Вск 14:21:27 #176 №1811475 
>>1811471
> embedded
Не огорчайся. Со временем это всё отсохнет и отомрёт. Не совсем, конечно, но выродится в какую-нибудь гильдию писателей прошивок для маяков или чего-нить подобного. Короче, выродятся в секту.
Аноним 20/09/20 Вск 14:31:19 #177 №1811481 
>>1811475
Будет секта Сишников и будем молится святому юниксу, и умному ершику для унитаза.
Аноним 20/09/20 Вск 14:32:17 #178 №1811482 
>>1811475
Нихуя придумают какую нибудь новую хуйдуину и все начнется по новой.
Аноним 20/09/20 Вск 14:47:42 #179 №1811494 
>>1811467
А что в этом смешного?
Аноним 20/09/20 Вск 15:11:23 #180 №1811518 
>>1811494
Думаю ты сам понимаешь что язык Си не пойдет в этом направлении.
Ах, насчет nullptr - в proposal стандарта c2x оно уже есть https://hal.inria.fr/hal-02167929/file/n2394%2Bappendix.pdf, но безопасности не добавляет особо
Аноним 20/09/20 Вск 15:38:28 #181 №1811541 
>>1811518
Раз думаешь так, то изволь предположить и написать своё мнение о дальнейшем разивитие обсуждаемого ЯП. Небольшое условие: мы заведомо отменяем ту ветвь разгвора, что язык не будет развиваться или даже умрёт. Только вперёд, ни шагу назад!
Аноним 20/09/20 Вск 15:54:10 #182 №1811555 
>>1811541
Просто перепишут все либы на Zig.
Аноним 20/09/20 Вск 15:57:44 #183 №1811557 
>>1811555
хайль?
Аноним 20/09/20 Вск 15:58:44 #184 №1811560 
>>1811541
Моё скромное мнение: легко может не состояться
- Докинут в стандарт пару функций. Видел про strdup и strndup
- Добавят в стандарт языка bool, true и false, и не будет больше ебли с числамине, она безусловно останется, но будет считаться дурным тоном или старым кодом
- nullptr добавят чтобы не тянуть макрос с приведением типа к универсальному указателюNULL короче сделают deprecated
- Систематизируют все эти __attribute__, __typeof__ может добавят.
- Видел ещё хотят добавить __attribute__(cleanup(func)) в стандарт как оператор defer, хорошая затея, приходится его макросить нынче. Весьма полезная штука, позволяет на Си сделать подобие RAIIне в полной мере, передачу владения сделать никак нельзя, но освобождать ресурс по выходу из функции - на ура
- Может докинут в стандарт __attribute__(constructor(ctor)) и __attribute__(destructor(dtor)). По сути одно ранится перед стартом приложухи, второе atexit по сути.
- Из спойлеров нового стандарта - есть предложение описать работу со знаковыми числами и дополнительным кодом, и описать правила переполнения чисел знаковых, минус 1 UB, и это наверное единственное что касается улучшения безопасности кода.
Какую-то часть из этого может докинули в c11
Аноним 20/09/20 Вск 15:59:17 #185 №1811561 
>>1811557
Sieg было бы, тогда шутка была бы уместной.
Аноним 20/09/20 Вск 16:00:47 #186 №1811562 
>>1811555
Зачем нужен Zig когда есть Rust?
Аноним 20/09/20 Вск 16:01:29 #187 №1811563 
>>1811560
А как же строки (буфера)? Думаешь с ними делать ничего не будут?
Аноним 20/09/20 Вск 16:02:17 #188 №1811564 
>>1811541
А если на минуту представить что в своей нише язык Си достик совершенства?

Вот тут забавно было когда шло обсуждения, а кто-то не понимал что генерирует компилятор. Вот каким боком мнение такого человека может быть весомым?
Аноним 20/09/20 Вск 16:03:40 #189 №1811566 
>>1811562
Растоговно не нужно.
Аноним 20/09/20 Вск 16:04:01 #190 №1811568 
>>1811564
Совершенству нет предела.
Аноним 20/09/20 Вск 16:05:41 #191 №1811572 
>>1811563
Язык Си пытается быть как можно ближе к железу. Текущие строки как можно ближе. Вряд ли они будут что-то менять а их представлении. Максимум добавят ещё каких-то функций для работы с ними, если захотят кончено же.
Аноним 20/09/20 Вск 16:06:34 #192 №1811575 
>>1811566
Зигговно не нужно.
Аноним 20/09/20 Вск 16:07:46 #193 №1811577 
>>1811561
Шо то зиг, шо то зиг.
Аноним 20/09/20 Вск 16:07:52 #194 №1811578 
image.png
>>1811568
Аноним 20/09/20 Вск 16:08:42 #195 №1811582 
>>1811572
Паскалевские строки настолько же близки к железу, насколько и сишные.

Аноним 20/09/20 Вск 16:12:01 #196 №1811584 
>>1811572
Устройство строк можно было бы и не менять, хотя тоже неплохая идейка. Вот новые ф-и добавить действительно уже хорошо, а также усилить безопасность уж имеющихся.
Аноним 20/09/20 Вск 16:12:19 #197 №1811585 
>>1811584
уже*
Аноним 20/09/20 Вск 16:16:39 #198 №1811587 
>>1811582
> Паскалевские строки настолько же близки к железу, насколько и сишные.
По-моему единственное чем там от Си отличается - перегрузка "+" в конкатенацию строк. Но я с Паскалем вообще не работал.
>>1811584
Устройство строк делает их легко переносимыми на любой тостер. Если функций добавить и можно, то каких? В голову приходят только для работы над unicode. Впрочем, у меня в проекте свои строки используются с динамической аллокацией, и я не капли не парюсь по этому поводу.
Аноним 20/09/20 Вск 16:17:32 #199 №1811591 
>>1811584
Чего люди не придумают, лишь бы не изучать С++.

Аноним 20/09/20 Вск 16:19:59 #200 №1811593 
>>1811591
Или Rust
Аноним 20/09/20 Вск 16:25:56 #201 №1811604 
>>1811593
Слишком высокая абстракция. С++ этот тот же Си на стероидах. Точнее - его можно так использовать.
Аноним 20/09/20 Вск 16:39:43 #202 №1811616 
>>1811575
>пук
Аноним 20/09/20 Вск 16:41:40 #203 №1811618 
>>1811582
В паскалевских строках первым байтом идет ее длина, емнип. Что дает безопасность, которой в си строках нет, но делает всякую конкатенацию посложнее.
Аноним 20/09/20 Вск 16:42:00 #204 №1811620 
>>1811593
Ненужен.
Аноним 20/09/20 Вск 17:08:36 #205 №1811640 
>>1811618
А по сути-то нет вообще ни одной причины, запрещающий на Си реализовать паскалевские строки и наоборот.

На помню какой из компиляторjd, кажется майкрософтовский, а может и любой, схвавает вот такое описнаие

struct pascal_string {
int len;
char str[0];
}

И для Паскаля
Var
char_ptr :^byte;

То же самое что указатель на строку.

Аноним 20/09/20 Вск 17:12:44 #206 №1811643 
>>1811591
Не будем делать поспешных выводов, дорогуша.
Аноним 20/09/20 Вск 17:13:29 #207 №1811644 
Что такое этот ваш Зиг? Очередная Vala/D?
Аноним 20/09/20 Вск 17:23:29 #208 №1811657 
>>1811618
Это упрощает конкатенацию и прочее, ибо длину не надо считать.
Аноним 20/09/20 Вск 17:26:20 #209 №1811661 
>>1811657
В си ты бы просто циклом копировал вторую строку на место первого NULL-терминатора, до первого встреченного NULL. В паскале тебе придется выделить новое место.
Аноним 20/09/20 Вск 17:26:38 #210 №1811662 
>>1811644
Да, это лучший Си.
Аноним 20/09/20 Вск 17:33:52 #211 №1811669 
>>1811661
В паскале ещё и ограничения на 255 символов, т.к длина указывается однобайтовым числом. Что насчёт лисп-лайк строк?
dead per dead 20/09/20 Вск 17:35:24 #212 №1811670 
>>1811661
Что тебе мешает скопировать вторую строку по смещению N+1, а потом прибавить L к байту длины.

Главный недостаток паскастрок - в ограничении 255.
Аноним 20/09/20 Вск 17:38:07 #213 №1811673 
>>1811669
Ничего не мешает. Вроде в Zig так и работает.
Аноним 20/09/20 Вск 17:48:43 #214 №1811683 
>>1811669
>В паскале ещё и ограничения на 255 символов
Это в классическом. Сейчас накидали новыйх типов. А пока Delphi гуляла по рукам, сделали по умолчанию string с бОльшим количеством байт. И добавили ключи компиляции, управляющие этим поведением.
Аноним 20/09/20 Вск 17:49:16 #215 №1811684 
>>1811644
Кусок говна, вышедший из под очка хуесоса.
Аноним 20/09/20 Вск 17:51:03 #216 №1811686 
>>1811684
Этот растаман порвался, несите нового.
Аноним 20/09/20 Вск 17:51:54 #217 №1811687 
>>1811670
На глаз кажется тут больше операций в ассемблере выходит.
Аноним 20/09/20 Вск 17:52:10 #218 №1811689 
>>1811673
>пук
Нафиг вы лезете со своим говном сюда?
Аноним 20/09/20 Вск 17:53:17 #219 №1811690 
>>1811686
Мать твоя порвалась, когда я ее ебал.
Катись нахуй со своим говном. Си лучший.
Аноним 20/09/20 Вск 17:54:06 #220 №1811691 
>>1811687
Напиши на Си и чекни через godbolt
Мне самому интересно, но лениво чекать
Аноним 20/09/20 Вск 17:58:21 #221 №1811695 
>>1811687
s t r l e n
t
r
l
e
n
Аноним 20/09/20 Вск 18:11:31 #222 №1811709 
>>1811662
А чем он лучше Си, чем Vala и D?
Аноним 20/09/20 Вск 18:13:02 #223 №1811710 
>>1811691
https://godbolt.org/z/zMMTo1
Аноним 20/09/20 Вск 18:14:14 #224 №1811711 
>>1811710
https://godbolt.org/z/xv4bKr
фиксанул ворнинги
Аноним 20/09/20 Вск 18:21:49 #225 №1811713 
>>1811695
Ну strlen сейчас наверное на интринсинках чтобы в 64 битный регистр по 8 байт строки читать, довольно быстрый.
Аноним 20/09/20 Вск 18:44:52 #226 №1811736 
>>1811709
Vala и D скорее с++ - там есть ооп, функциональщина и т.д.
Zig - простой язык в духе си, минус сишный препроцессор, вместо которого есть comptime, т.е. constexpr, на них же получаются дженерики, также есть defer некое подобие деструктора для raii, обработка ошибок нечто среднее между исключениями и optional типом (err, result), async await, и легкая интеграция с Си либами из коробки.
Аноним 20/09/20 Вск 18:45:28 #227 №1811738 
>>1809864
Ты же троллишь. Там же по факту вот что написано:

int n = 10;
do{
printf("n is %d\n", n);
}while(n-- > 0);


Я ХЗ почему никто не понял. Вот.
Аноним 20/09/20 Вск 18:45:44 #228 №1811739 
>>1811736
Ну и модули вместо инклюдов.
Аноним 20/09/20 Вск 18:47:29 #229 №1811740 
>>1811738
Форматирование слетело


int n = 10;
do{
printf("n is %d\n", n);
}while(n--> 0);

быстрофикс
Аноним 20/09/20 Вск 19:20:48 #230 №1811784 
>>1811494
>А что в этом смешного?

В сишке одно из главных требований - обратная совместимость. Не ломая обратной совместимости, не убрать основныых граблей. Потому "расти в сторону безопасности" она может очень ограниченно. На самом деле, тебе уже сейчас никто не мешает делать рантаймовые проверки выходя за границы массивов. Более того, во многих арзитектурах это уже делается(каждый вызов маллока выдаёт кусок памяти на новой виртуальной странице, выход за её границе будет пойман механизмом виртуальной памяти).
Аноним 20/09/20 Вск 19:26:03 #231 №1811791 
>>1811736
>Zig - простой язык в духе си, минус сишный препроцессор, вместо которого есть comptime, т.е. constexpr, на них же получаются дженерики, также есть defer некое подобие деструктора для raii, обработка ошибок нечто среднее между исключениями и optional типом (err, result), async await, и легкая интеграция с Си либами из коробки.
Ну и что это даёт?
Аноним 20/09/20 Вск 19:26:24 #232 №1811792 
>>1811739
Это типа разница?
Аноним 20/09/20 Вск 19:36:43 #233 №1811805 
>>1811791
Как известно в с++ три разных языка - сам с++, макросы си, и шаблоны.
Сишные макросы на подмене текста вообще зло, и при этом довольно слабые по возможностям. В зиге это все работает на одном языке.
Defer означает что ты пишешь код инициализации чего-либо и тут же под ним код деинициализации - не надо скролить по десяткам файлах в поисках этого и путаться в лапше вызовов.
Обработка ошибок в сишке это всегда лотерея, угадывать куда там в errno записали или вернули 0 это успех или 1 это успех. Единый механизм это хорошо. Плюс он заставляет тут же switch обработать все ошибки - не забудешь проверить что файл не открылся.
Аноним 20/09/20 Вск 19:40:58 #234 №1811809 
>>1811711
И чисто по строчкам Сишный подход меньше по размеру. Хммммммм. Заставляет задуматься
Аноним 20/09/20 Вск 19:42:13 #235 №1811811 
>>1811809
Еще и переменную под счетчик пришлось завести.
Аноним 20/09/20 Вск 19:43:59 #236 №1811815 
>>1811805
И, зачем ещё нужен очередной велосипед?
Если не велосипед, то как мне написать прошивку на Zig и собрать ее под stm32f4?
Аноним 20/09/20 Вск 19:53:22 #237 №1811831 
>>1811815
Да вроде без проблем, глянул народ такое делал.
Аноним 20/09/20 Вск 20:10:06 #238 №1811854 
>>1811831
А лямбды и функции внутри функций есть?
Аноним 20/09/20 Вск 20:15:14 #239 №1811861 
>>1807650 (OP)
Поясните нубасику.
Есть библиотека и в ней надо объявить глобальную переменную(да, их надо применять в крайних случаях, но иногда они необходимы).
Я правильно понял:
1)в файле library.c пишем:
uint8_t var = 0;
2)в файле library.h пишем:
uint8_t var;
3)в main.c подключаем хеадер либы;
#include "library.h"
4)а если переменная var должна быть доступна в other_librari.c без подключения хедера, тогда в ней пишем:
extern var:
Аноним 20/09/20 Вск 20:16:29 #240 №1811865 
>>1811854
Не уверен. Может быть уже есть. Даже если нет кто-то писал библиотечную.
Аноним 20/09/20 Вск 20:39:49 #241 №1811892 
>>1811861
> 1)в файле library.c пишем:
> uint8_t var = 0;
Да.
> 2)в файле library.h пишем:
> uint8_t var;
Нет, extern uint8_t var;
> 3)в main.c подключаем хеадер либы;
> #include "library.h"
Да.
> 4)а если переменная var должна быть доступна в other_librari.c без подключения хедера, тогда в ней пишем:
> extern var:
Вроде так. Но лучше включать заголовочник
Аноним 20/09/20 Вск 20:58:48 #242 №1811905 
>>1811475
АААА, ХУЙ ТЕБЕ!))))))))))))
Аноним 20/09/20 Вск 21:14:50 #243 №1811912 
>>1811475
А как же интернет вещей и эпоха web3.0?
Аноним 20/09/20 Вск 21:19:01 #244 №1811920 
>>1811078
>Я у тебя попрошу совсем немного. Я не буду тебя стебать, троллить и т.д., мне чисто интересно. И так, что тебя мотивирует это делать? Какая у тебя мотивация? Что тобой движет? Какая цель этих действий?
Потому что я уже наступил на эти грабли, и не хочу, чтобы другие тоже попали в эту ловушку.
>Ну и попрошу тебя рассказать о себе в двух словах, а именно - прости за нескромный вопрос, твой возраст и род занятий (если софтваре инжиниринг, то какой).
25 лвл, прогаю микрики.
Аноним 20/09/20 Вск 21:40:43 #245 №1811946 
>>1811912
там скрипты даже вредны, ты же не хочешь чтобы твоя кофеварка грелась процессором, а не тэном.
Аноним 20/09/20 Вск 21:57:33 #246 №1811975 
>>1811912
> интернет вещей
помойка говна
> и эпоха web3.0?
Эпоха подкатов на штанах, клубничного смузи, моноколес и гироскутеров, жидких бородок и андеркатов, миллиона библиотек, typescript, babel, gulp, d3, npm, jest, angular, react, vue, и прочего говна для пидорасов, миллиарда вкатывальщиков и знакомых которые "ха, я сча вот джаваскрипт учу, устроюсь программистом и буду 20к рубать на изян, а ты как %аноннейм% поживаешь?". Фу блять, мерзко.
Аноним 20/09/20 Вск 22:11:48 #247 №1811991 
image.png
>>1807650 (OP)
А можно сделать так?
К библиотеке 1 подключить хедер библиотеки 2, а к библиотеке 2 подключить хедер библитеки 1? Т.е. встречно включить хедеры.
И как тогда хедеры библиотек подключать к main.c?
Описал и нарисовал немного сумбурно, но суть думаю вы поняли.
Аноним 20/09/20 Вск 22:17:09 #248 №1811997 
image.png
>>1811991
Фикс картинки.
Понятное дело, что хедеры либ к своим с-файлам тоже подключены.
Аноним 20/09/20 Вск 22:24:04 #249 №1811999 
>>1811997
Для этого надо будет умно писать хедеры, чтобы не было циклических зависимостей.
Только интерфейс грубо говоря
Аноним 20/09/20 Вск 23:31:45 #250 №1812068 
>>1811999
#pragma once или #ifndef + #define + #endif хватит для подобной задачи.
Аноним 20/09/20 Вск 23:54:30 #251 №1812087 
>>1812068
Не хватит если в одном struct A; struct B { A a; }
а во втором struct B; struct A { B b; }
Аноним 21/09/20 Пнд 00:40:08 #252 №1812112 
>>1812087
Не думаю что он долбоеб так писать.
Аноним 21/09/20 Пнд 00:43:56 #253 №1812114 
>>1812112
Новичку очень легко запутаться в зависимостях.
sageАноним 21/09/20 Пнд 01:04:43 #254 №1812121 
>>1812087
Такого кода не может быть, рекурсивное вкладывание структур лишено какого-либо смысла, и не может быть реализовано нигде и никак. А если там указатели, то такие forward-декларации, как у тебя, отлично решают проблему. Это нормальный подход, или можно так же тайпдеф запилить.
Аноним 21/09/20 Пнд 01:09:13 #255 №1812124 
>>1812121
Плюсую тебя
Аноним 21/09/20 Пнд 01:24:44 #256 №1812130 
>>1811861
Если хочешь глобальные переменные, то это делается так:

- в library.c пишешь:
#ifdef DEFINE_GLOBALS
#define GLOBAL
#define INIT(x) =x
#else
#define GLOBAL extern
#define INIT(x)
#endif

- там же объявляешь свои переменные:
GLOBAL uint8_t var INIT(0);

- в один файл (library.c) инклюдишь:
#define DEFINE_GLOBALS
#include "library.h"
#undef DEFINE_GLOBALS

- во все остальные инклюдишь как обычно.
Аноним 21/09/20 Пнд 01:25:35 #257 №1812131 
>>1812130
>в library.c пишешь
в library.h то есть
быстрофикс
Аноним 21/09/20 Пнд 01:41:57 #258 №1812135 
>>1812130
Галоперидольчика вколите ему!
Аноним 21/09/20 Пнд 04:02:31 #259 №1812156 
>>1811920
Спасибо за ответ.

Но... Неужели прямо так всё плохо в embedded? Неужели нету надежды никакой от слова "совсем"?
Аноним 21/09/20 Пнд 04:05:17 #260 №1812158 
>>1811975
Фублять, ненавижу этих пидарасов и их эту пидарскую хуйню.

НАХУЙ СМУЗИ! СЛАВА ВОДКЕ! Я, БЛЯТЬ, СЕРЬЕЗНО!
Аноним 21/09/20 Пнд 04:27:10 #261 №1812164 
>>1812121
Естественно код был условный. И естественно чтобы решить проблему надо знать о форвард декларейшнах. О том и было сказано - надо продумывать зависимости. Хуй знает с чем ты поспорить решил.
Аноним 21/09/20 Пнд 04:27:50 #262 №1812165 
>>1812130
Во, этот шарит.
Аноним 21/09/20 Пнд 06:10:30 #263 №1812179 
>>1812165
Как усложнить простое, да. Шарит, определенно.
Аноним 21/09/20 Пнд 19:26:39 #264 №1812794 
Подскажите, пожалуйста, почему fgets нихуя не хочет считывать.
https://onlinegdb.com/r1hNQ8USw
Я вычитал, что проблема в сканфе - я избавился от сканфов, но по-прежнему считывается только первый инпут.
Аноним 21/09/20 Пнд 19:56:06 #265 №1812815 
>>1812794
Если я правильно понимаю код, то ты создаёшь на стеке массив из 2 структур, внутри структуры 2 массива char, по 20/25 символов. Данные в стеке могут быть заполнены мусором. Ты от этого мусора считаешь strlen(), и пытаешься от высчитаного считать символы в stdin.
В вызовах fgets вызов функции strlen поменяй на 20 и 25 соответственно, вроде должно будет работать.
Аноним 21/09/20 Пнд 20:01:35 #266 №1812818 
>>1812815
Забыл добавить это прям известный всем факт - strlen() и strnlen() считают длину фактической нультерминированной строки в каком-то буфере. У тебя же в строках был мусор.
Тебе же надо было считать длину буфера, ведь именно ее запрашивает fgets вторым аргументом.
Если буфер выделен статически или на стеке - можешь заюзать sizeof(buffer)/sizeof(buffer[0])
Если динамически в куче - изволь самостоятельно трекать что в malloc передал.
Ещё есть gcc расширение на выделение на стеке динамических буферов и alloca, но это маньяк-style
Аноним 21/09/20 Пнд 21:59:01 #267 №1812903 
>>1812815
>>1812818

простой замены strlen на sizeof в его случае будет достаточно.
Аноним 21/09/20 Пнд 22:03:47 #268 №1812911 
>>1807650 (OP)
Программирую контроллеры на Си. Решил привести прогу в порядок - разбить на несколько .с и .h файлов.
Проблема заключается в том, что большинство *.с файлов обращаются к переменным, которые находятся в UNION.
Каким образом мне правильно объявить union как extern, чтоб иметь доступ к переменным union?
Аноним 21/09/20 Пнд 22:08:35 #269 №1812913 
>>1812815
>>1812818
Огромное спасибо за развернутый ответ, заработало.
правда все равно осталось неработающим говном, но я смог разобраться
Аноним 21/09/20 Пнд 22:29:08 #270 №1812925 
>>1812903
Именно.
>>1812913
Пожалуйста.
Аноним 21/09/20 Пнд 22:33:30 #271 №1812930 
>>1812911
Так же, как и остальные, см. выше: >>1812130 >>1812131

Объяви свой юнион в отдельном .h файле:

typedef union
{
struct hui_t hui;
struct pizda_t pizda;
struct jigurda_t jigurda;
} yoba_union_t;

И используй как тип глобальной переменной:

GLOBAL yoba_union_t INIT({.hui = {...}, .pizda = {...}, jigurda = {...}});

Ну ты понел.
Аноним 21/09/20 Пнд 22:34:55 #272 №1812933 
>>1812930
GLOBAL yoba_union_t yoba INIT({.hui = {...}, .pizda = {...}, jigurda = {...}});

быстрофикс, что ж такое-то по вечерам...
Аноним 21/09/20 Пнд 22:43:20 #273 №1812947 
>>1812911
Все работает как с переменной.
Можешь заюзать страшные макросы типа сверху или просто ебнуть в си файл:
union { //fields
} my_union;
И в заголовочник:
extern union { //fields
} my_union;
Везде добавляешь заголовочник, появляется в видимости юнион из другого юнита компиляции.
Надеюсь у тебя нету там каких-то трюков с ним, в union хватает подводных камней и UB, и не знаю как это может отразиться на работе с extern
Аноним 22/09/20 Втр 05:52:07 #274 №1813047 
052245218361200.jpeg
>>1811975
>>1812158
Аноним 22/09/20 Втр 11:27:53 #275 №1813098 
Привет, анон. Есть два вопроса:
1) Можно ли как-то кастить поинтеры (причем любого порядка) в простые значения? Знаю, что есть ptrdiff_t, но желательно обойтись без него.
2) Нужно передать в функцию лист аргументов неопределенного размера. Причём тип аргументов может быть как символьный указатель, так и указатель на объект иного типа, или (вытекает из первого вопроса) просто long long int. Ничего иного кроме https://pastebin.com/wTMeN8Lm мой моск пока не выдумал.

Аноним 22/09/20 Втр 11:38:54 #276 №1813104 
>>1813098
Ты явно страдаешь какой то хней.
Аноним 22/09/20 Втр 12:08:07 #277 №1813123 
>>1813098
зачем? В стандартной либе уже есть stdarg.h c va_list
Аноним 22/09/20 Втр 12:20:47 #278 №1813133 
>>1813098
1. Берешь и кастишь. Хотя задача странная какая-то раз тебе нужно числовое значение указателя.
2. Заведи структуру список отдельную, и пили функции для работы с ней, конец списка - элемент NULL. И передавай его как 1 аргумент. Это вариант если тебе стек жалко.
Если не жалко или список будет не слишком большой - va_list и функция с ... аргументом.
Аноним 23/09/20 Срд 01:40:10 #279 №1813749 
Как вкатиться в имбед ньюфане? Знаю СИ(стандартные библиотеки только) довольно неплохо знаю С++(очень много библиотек и функцонала весь не знаю конечно, но могу на нём писать).

Знаю популярные алгоритмы: пузырёк, всатвка, слияние, быстрая и подобные.

Что ещё нужно изучить? Где искать вакансии для вкатунов в имбед?
Аноним 23/09/20 Срд 02:38:57 #280 №1813762 
>>1813749
Как мне кажется - для эмбеддеда нужно больше знать особенности микроконтроллеров и разные технологии по типу spi, i2c, uart как работает и прочее. Ну и быть хорош в схемотехнике, понимать базово какие-то электронные моменты. Шарить в RTOS, и просто в написании софта для baremetal.
Аноним 23/09/20 Срд 02:45:12 #281 №1813763 
>>1813762
анон, спасибо большое, я примерно так и думаю. но мне желательно услышать бы конкретные указания и посмотреть вакансии на эмбед.
Аноним 23/09/20 Срд 03:50:56 #282 №1813779 
>>1807650 (OP)
> Visual Studio Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2.
Подскажите, есть один параметр который передает аргументы напрямую в clang, стоит ли так засовывать Ofast? Или O3?
Аноним 23/09/20 Срд 04:26:54 #283 №1813783 
>>1813763
Это была очень плохая идея в одном посте спросить "как вкатится" и за вакансии. Универсальное правило - вкатывайся до тех пор, пока тебе на начнут спамить хеадхантеры. И вот на этом уровне работа тебя найдёт.

Был бы работодателем, сразу бы скомкал твоё резюме . У меня нет ресурсов чтобы тебя обучать.
Аноним 23/09/20 Срд 08:49:02 #284 №1813829 
>>1812794
работают на заводе им. Масленникова,
Ты из Самары? Какого года эта методичка?
Аноним 23/09/20 Срд 11:07:57 #285 №1813936 
Сколько в универах изучают теорию Си и сколько уделяют практике время?
4 часа в день учить теорию реально совместно с 2 часами практики эдак 4-2? Или 2-2 оптимально?
Аноним 23/09/20 Срд 11:46:19 #286 №1814001 
>>1813829
Несоответствие тематике треда, рекомендуется выдать условное предупреждение.
Рекомендую в дальнейшем не покушаться на определённую анонимность участников форума. Благодарю за внимание, Аноним!
Аноним 23/09/20 Срд 12:00:32 #287 №1814022 
>>1813936
Хах, если бы хоть кто-то изучал так.
А по факту - забей на это все, измучаешь себя темпом не своим, потом забьешь и будешь ненавидеть.
Читай и изучай, практикуйся сколько можешь, а если надоедает - отдыхай столько, чтобы интерес опять появился.
Будто в этом что-то есть непонятное вообще
Аноним 23/09/20 Срд 12:14:36 #288 №1814032 
>>1813936
Многовато теории. Начинай ковырять код смолоду.
Аноним 23/09/20 Срд 12:18:18 #289 №1814033 
>>1814001
Ты даун?
Аноним 23/09/20 Срд 12:23:04 #290 №1814036 
>>1813783
ну ресурсы на сбoрку шкoльнoгo ранца у тебя надеюсь есть?
Аноним 23/09/20 Срд 12:23:58 #291 №1814038 
>>1814022
Ты прав тут. Для инфы скажу что не начинаю изучать, уже знаю все об поинтерах, решаю задачки на кодеваре, думаю алгоритмы изучать начать с математикой, ибо нравится.
Вот сегодня сидел весь день и изучал строковые функции по учебнику Праты, но я успел только повторить и завтуплять над книгой но таки понять как работает strcmp и написал пару программ. С утра правда еще рефактор задачки сделал.
А щас думаю что не потяну. Вчера не отдохнул сидел над задачей и туплю сижу. В общем 2 часа теорий буду.
Кстати еще слышал от кого то что практики должно быть 90% а теорий 10%.
>>1814032
Оки.
Аноним 23/09/20 Срд 12:36:15 #292 №1814040 
>>1814038
правильно слышал, практики всегда должно быть больше, я вообще делаю так - 1 час залипаю в того же прату, 2 часа кодирую, и один час тупо учу инглиш
план уберчеловека
Аноним 23/09/20 Срд 12:50:20 #293 №1814052 
>>1814040
как ты "учишь инглиш"?
Аноним 23/09/20 Срд 13:36:24 #294 №1814082 
>>1814052
Играю в ультиму онлайн на американском сервере.
Аноним 23/09/20 Срд 13:38:10 #295 №1814084 
>>1814082
нoрм. я на фoрчoнге сижу
Аноним 23/09/20 Срд 13:41:39 #296 №1814085 
Вкатываюсь в ламповый (надеюсь) тред. Что в 2020 году пишется на С кроме операционных систем, драйверов и прошивок для микроконтроллеров? Я хотел бы писать как можно больше кода на С для того, чтобы очень хорошо понимать его (хотя основные концепции языка вроде указателей и структур я осилил), но хочется выйти дальше хэллоуворлдов в юзерспейсе. Сейчас я программирую под STM32F103C8T6 - если, конечно, дергание ног и посылку самых разных данных в логический анализатор по UART и I2С можно назвать так.
Аноним 23/09/20 Срд 13:43:02 #297 №1814088 
>>1814085
напиши гта на си.
Аноним 23/09/20 Срд 13:43:39 #298 №1814090 
>>1814088
Лол.
Аноним 23/09/20 Срд 13:44:31 #299 №1814092 
>>1814090
или бoрду написать на си. вoт этo реальнo крутo будет, абу пoвесится тoчнo
Аноним 23/09/20 Срд 13:46:45 #300 №1814096 
>>1814092
А вот сейчас я проиграл неистово.
Аноним 23/09/20 Срд 13:56:09 #301 №1814110 
>>1814092
Это совсем не сложно
Аноним 23/09/20 Срд 13:56:19 #302 №1814111 
>>1814085
Попробуй оконное Win32 приложение. Когда вернёшься к микроконтроллерам, будешь писать уже в другом стиле.
Аноним 23/09/20 Срд 14:16:56 #303 №1814136 
>>1814090

Проблем, на самом деле, никаких, берешь себе в помощь скриптопарашу по вкусу (проще всего луа и пидон) , подключаешь, на С рендер и низкоуровневые кишочки систем, на скриптопараше - всё остальное.

https://www.lua.org/pil/24.html

https://docs.python.org/3/extending/embedding.html

и да, первая и вторая жта, которые с видом сверху на С и написаны, шах и мат, оопетросяны.

Аноним 23/09/20 Срд 14:18:14 #304 №1814140 
>>1814110

Угу, сложно только что бы нельзя было URI инъекцией сервер сдампить.
Аноним 23/09/20 Срд 14:20:17 #305 №1814145 
>>1814085
>Сейчас я программирую под STM32F103C8T6 - если, конечно, дергание ног и посылку самых разных данных в логический анализатор по UART и I2С можно назвать так.

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

Аноним 23/09/20 Срд 14:22:57 #306 №1814150 
>>1814145
Этого я пока еще не сделал, так как переходник UART-USB пока не пришел с алиэкспресса, лол.
Аноним 23/09/20 Срд 14:23:19 #307 №1814151 
>>1814111
А такое я год назад делал, кстати.
Аноним 23/09/20 Срд 14:27:16 #308 №1814159 
>>1814150
>Этого я пока еще не сделал, так как переходник UART-USB пока не пришел с алиэкспресса, лол.

Ненене, девид блейн, аппаратный USB, где там в дескрипторе одна история охуительнее другой.
Аноним 23/09/20 Срд 14:28:35 #309 №1814160 
>>1814159
А, это надо будет сделать.
Аноним 23/09/20 Срд 14:28:57 #310 №1814162 
>>1814150
Так тебе он не нужен, тебе нужно имеющийся на плате usb задействовать, а программировать и отлаживаться через STLink v2, который ты и должен был купить себе вместо USB-Uart.
Аноним 23/09/20 Срд 14:29:17 #311 №1814164 
>>1814140
Блин ну это же простой CRUD. Надо просто быть немного повнимательнее.
Или взять Zig
Аноним 23/09/20 Срд 14:32:18 #312 №1814168 
>>1814162
> тебе нужно имеющийся на плате usb задействовать
Это уже я понял по сказанному выше.
> программировать и отлаживаться через STLink v2, который ты и должен был купить себе вместо USB-Uart
STLink v2 я как раз и юзаю для прошивки, а переходник я заказал затем, чтобы запилить устройство, которое можно будет подключить к пекарне по USB.
Аноним 23/09/20 Срд 14:56:13 #313 №1814194 
>>1814168
>а переходник я заказал затем, чтобы запилить устройство, которое можно будет подключить к пекарне по USB.

http://we.easyelectronics.ru/STM32/stm32-organizaciya-virtualnogo-com-porta.html
Аноним 23/09/20 Срд 14:58:55 #314 №1814200 
>>1814194
Спасибо за ссылку.
Аноним 23/09/20 Срд 15:26:54 #315 №1814244 
>>1814085
Ох, я щаз тоже этим развлекаюсь)))

ЧИТАЙ RM - ПИШИ - ПРОШИВАЙ - ЕБИ ГУСЕЙ ДЖАВАСКРИПТЕРОВ!
Аноним 23/09/20 Срд 15:29:44 #316 №1814245 
>>1814145
Та че прям сракотан разрывают таймеры? Не, если сразу сесть и педалить - то да, а если почитать и потом уже их "ковырять", то нихера не разрывает, лол. Вообще, таймеры на стм32 мне пиздец как зашли. Шо хош на них можно сделать.

мимо >>1814244 -анон
Аноним 23/09/20 Срд 15:49:13 #317 №1814259 
>>1814245
Таймеры не нужны.
Аноним 23/09/20 Срд 17:18:50 #318 №1814360 
>>1814244
Согласен, системное программирование - вещь крайне охуительная.
Аноним 23/09/20 Срд 18:06:43 #319 №1814420 
>>1814136
Есть AngelSript и ChaiScript.
Аноним 23/09/20 Срд 18:30:46 #320 №1814456 
>>1814259
Почему, анон?
Аноним 23/09/20 Срд 20:34:01 #321 №1814509 
>>1814456

Потому что кекогерцы порешают, азазаза, берем дорогой камень для копеечной задачи, очевидно же.
sageАноним 23/09/20 Срд 20:37:10 #322 №1814511 
>>1813098
> Можно ли как-то кастить поинтеры (причем любого порядка) в простые значения
uintptr_t
> Нужно передать в функцию лист аргументов неопределенного размер
Да, все делаешь правильно, но обычно это делают через массив struct { int tag; union { type1 v1; type2 v2; type3 v3; type4ptr v4; }; }, где тег указывает тип.

>>1814245
Обычные таймеры там. Если есть предшествующий опыт с таймерами, хоть с 8254, то никаких проблем не возникает.
Аноним 23/09/20 Срд 20:54:40 #323 №1814516 
>>1814509
Ыыыыыыыы))0))0)) Жопаскрыпт паришаит))0)0))))00)0)
Аноним 23/09/20 Срд 20:58:44 #324 №1814518 
>>1814516
Добрый день, это филиал типичного программиста из ВКонтакте?
Аноним 23/09/20 Срд 21:13:03 #325 №1814525 
>>1814518
Добрый пень, нет, это Абиг Траоре на связи опять выхожу, мудило
Аноним 23/09/20 Срд 21:24:50 #326 №1814529 
>>1814456

Потому что в правильных ядрах вместо них испольхуются синхронные сообщения с таймаутом. И на этих таймаутах реализуются любые задержки.
Аноним 23/09/20 Срд 21:42:42 #327 №1814544 
Продолжаю искать: IEEE-754_2019.PDF, DO-178C.PDF (A и В тоже подойдут), DO-254.PDF, ARINC-653.PDF. Без смс и регистрации!
Аноним 23/09/20 Срд 21:48:26 #328 №1814549 
>>1814529
> в правильных ядрах вместо них испольхуются синхронные сообщения с таймаутом
Речь про ARM? Пришли ссылку с примерами.
Аноним 23/09/20 Срд 22:02:44 #329 №1814564 
>>1814549
Речь про микроядра.
Но потренироваться можно и на

DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
);


и

DWORD WaitForMultipleObjects(
DWORD nCount,
const HANDLE *lpHandles,
BOOL bWaitAll,
DWORD dwMilliseconds
);

Аноним 23/09/20 Срд 22:12:27 #330 №1814573 
>>1814564
>микроядра
Нинужно
Аноним 23/09/20 Срд 22:14:19 #331 №1814574 
>>1814525
А по-моему ты просто бимбоунитаз или мясо
Аноним 23/09/20 Срд 22:17:15 #332 №1814576 
>>1814573
Ещё б ты чего нибудь в них понимал.
Аноним 23/09/20 Срд 22:29:31 #333 №1814594 
>>1814529
Хммм... Анон, я чутка в замешательстве. А вот если нужно загенерить, например, ШИМ или измерять импульсы там? Ну да, это таймеры стм32 умеют.
Аноним 23/09/20 Срд 22:35:23 #334 №1814597 
>>1814544
На 754 на вики есть номер doi, а по нему ищется в сай-хабе.
Аноним 23/09/20 Срд 22:42:25 #335 №1814599 
>>1814594
> ШИМ или измерять импульсы там?
По хорошему это должы быть пару портов в микроконтроллере - в один пишешь частоту дискретизации, со второго читаешь значение широты импульса.

Через таймеры это как микроскопом гвозди забивать. Сообщениями можно тоже читать ШИМ, но это так же криво, как и таймерами.
Аноним 23/09/20 Срд 22:43:56 #336 №1814602 
>>1814599
>Сообщениями можно тоже читать ШИМ
Точнее, выдерживать интервалы для чтения шировты импульса с помощью сообщений это кривизна.
Аноним 23/09/20 Срд 23:42:55 #337 №1814638 
>>1814576
Ты дегенерат? Зачем в них что-то понимать, если они не нужны?
Аноним 24/09/20 Чтв 00:39:32 #338 №1814661 
>>1814638
От тебя это не зависит. Они как в анекдоте про старого и молодого быков - медленно, важно и с достоинством спустятся с холма вниз и покроют всё стадо.
Аноним 24/09/20 Чтв 01:11:57 #339 №1814680 
>>1814597
Спасибо!

По DO пот это нужно:
- https://my.rtca.org/NC__Product?id=a1B36000001IcmqEAC
- https://my.rtca.org/NC__Product?id=a1B36000001IcjUEAS
Если возможно, то ещё и DO-385:
- https://my.rtca.org/NC__Product?id=a1B36000007zprjEAA
Аноним 24/09/20 Чтв 01:22:35 #340 №1814689 
>>1814661
Если ты намекаешь что захватят все ОС микроядра - дрочи у батареи о своей маняфантазии, хуй вам собакам на рыло с говноидеей, вам бы на джаваскрипте понаписывать гондонкода и операционку на реакте переписать, знаем вас пидрил долбоебских.
Если хочешь пороться в жопу с низкой производительностью - проследуй на парашу, говно.
Аноним 24/09/20 Чтв 02:00:40 #341 №1814719 
>>1814689
Мнение глупых людей меня мало интересует.
Особенно повеселило "низкой производительностью" - сразу видно укушенного Торвальдсом.
Аноним 24/09/20 Чтв 02:06:26 #342 №1814725 
>>1814719
Какая илита нарисовалась. На микроядра дрочит бесполезные. Когда у тебя десктоп будет работать на полноценном микроядре - приходи.
Про макос втирать не надо, там сервисом стартует бсдшное ядро и вертится как большой монолит поверх mach. Иначе перфа нету.
Весели нас дальше, ебантроп.
Аноним 24/09/20 Чтв 02:22:32 #343 №1814742 
>>1814725
>Какая илита нарисовалась.
Да.

>Иначе перфа нету.
Ты сам-то хоть мерял? Или веришь Торвальдсу?
Что до десктопа, то когда линуксы на десктопе хотя бы близко сравнятся по отзывчиваости GUI с Windows, тогда приходи.


Аноним 24/09/20 Чтв 02:23:02 #344 №1814743 
>>1814599
Анон, в STM32 таймеры умеют в ШИМ "искаропке". Т.е. "руками" ничего делать не нужно, кроме настройки-инициализации.

Там прямо есть режим, который в документации так и называется "PWM". Все, что нужно сделать, это настроить нужный канал таймера на выход, задать частоту этого самого ШИМ, задать duty cycle, запустить таймер (бтв, задаётся это в 4 если не проебался регистра, лол; хочешь - можешь вообще взять hal но он слегка странноват и говноват, там надо будет дернуть пару функций и все). Все.
Аноним 24/09/20 Чтв 02:28:53 #345 №1814744 
>>1814743
>настроить нужный канал таймера на выход, задать частоту этого самого ШИМ, задать duty cycle, запустить таймер (бтв, задаётся это в 4 если не проебался регистра, лол; хочешь - можешь вообще взять hal но он слегка странноват и говноват, там надо будет дернуть пару функций и все). Все.

Ключевой вопрос в том, как используется таймер. Генерирует ли он прерывания и суть этих прерываний. Всё остальное вторично.
Аноним 24/09/20 Чтв 03:12:24 #346 №1814751 
>>1814744
Если не включать прерывания в режиме генерации ШИМ, их, соответственно, не будет. Т.е. таймер будет генерить ШИМ э самостоятельно, без вызова прерываний т.е. сама "железка" таймера будет это делать, как бы в фоне, без участия программы.
Аноним 24/09/20 Чтв 03:19:24 #347 №1814753 
>>1814751
Против таких таймеров таймеров я ничего не имею. А вот прерывания от таймера это зло. Пока ещё необходимое, но зло, от которого надо избавляться.
Аноним 24/09/20 Чтв 11:50:38 #348 №1814931 
char strtoupper(char arg)
{
while(((arg++) = toupper(arg)));
return arg;
}


В чем подводные камни?
Аноним 24/09/20 Чтв 11:54:33 #349 №1814935 
>>1814931
Сколько заплатишь за свои задачки?
Аноним 24/09/20 Чтв 11:55:43 #350 №1814937 
>>1814742
> Да.
Пизда.

> Ты сам-то хоть мерял? Или веришь Торвальдсу?
Да, есть бенчи, тестят производительность ядра. Скорость обработки системных вызовов. Все микроядра сосут в них.
> Что до десктопа, то когда линуксы на десктопе хотя бы близко сравнятся по отзывчиваости GUI с Windows, тогда приходи.
Мне отзывчивости wayland и kde5 хватает, делаю ещё nice по процессу композитора, очень отзывчиво работает все. Так что я тут, пришел уже. Что ещё скажешь, мразь?
Аноним 24/09/20 Чтв 11:57:24 #351 №1814939 
>>1814753
Что плохого в прерывании от таймера? Прям сферическое прерывание в вакууме от таймера.
Аноним 24/09/20 Чтв 12:15:24 #352 №1814959 
>>1814935
?
Аноним 24/09/20 Чтв 12:15:54 #353 №1814961 
>>1814935
Типа почему \*arg++ это плохая затея.
Аноним 24/09/20 Чтв 12:17:28 #354 №1814962 
>>1814939
>Что плохого в прерывании от таймера?
То, что оно асинхронное. Как результат, тебе придётся быстро-быстро его обработать в контексте прерывания, а затем синхронизировать с лругими процессами.

В нвстоящий момент прерывание от таймера нужно только лишь переключения задач, которые не осуществляют никакого ввода/вывода.
Аноним 24/09/20 Чтв 12:30:08 #355 №1814973 
>>1814959
!
Аноним 24/09/20 Чтв 12:30:38 #356 №1814976 
>>1814973
Говно ты?
Аноним 24/09/20 Чтв 12:31:14 #357 №1814979 
>>1814976
Мать твоя говно петушиная джаваскриптерская
Аноним 24/09/20 Чтв 12:31:57 #358 №1814980 
>>1814979
Хуя порвало
Аноним 24/09/20 Чтв 12:33:07 #359 №1814981 
>>1814980
Мамку твою порвало когда ее районом всем ебали)))
Аноним 24/09/20 Чтв 12:34:56 #360 №1814985 
>>1814981
Ок
Аноним 24/09/20 Чтв 12:53:12 #361 №1815026 
Если создам статический массивчик структур и к нему в том же сурце напишу врайт, гет и рид методы, то это сразу всё пиздец, о-о-пэ, слыш говно уебывай в свои кресты)))0)?
Аноним 24/09/20 Чтв 13:10:04 #362 №1815042 
>>1815026
Даже за одну мысль о таком - "эээ слыш уебывай в кресты!", не для того штульман и пердолики долбились в сракотан, чтобы ты писал код адекватно.
Аноним 24/09/20 Чтв 13:11:15 #363 №1815043 
>>1814962
>То, что оно асинхронное

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

Альтернатива прерываниям - выделенные специальные контроллеры для каждой из множества задач/событий в духе мейнфреймов IBM 60х-90х, где у каждого сраного принтера и дисковода был отдельный манякомпьютер, который с главным процом общался чисто через каналы.

Собственно, если брать специализированные МК такие как популярный в последнее десятилетие в автомобилях TriCore, то там так и делают, физически разделяя "реалтаймовую" и "умную часть":

https://www.infineon.com/dgdl/TC1797_DS_V1%203.pdf?fileId=db3a30431ed1d7b2011efeaa4ad16b6d
Аноним 24/09/20 Чтв 13:23:10 #364 №1815056 
>>1815043
Кажется, тот анон пытается сказать что если у него устоявшиеся процессы, то простой скедулер, по типу корутины, чекающий по очереди состояния, будет иметь меньший оверхед, чем переключение контеста в прерываниях, сохранение регистров, вот это все.
Аноним 24/09/20 Чтв 13:23:41 #365 №1815057 
>>1815043
>Наш физический мир и его события в принципе асинхронны
Это только на первый взгляд. Повышая частоту ты понимаешь что он синхронный.
Аноним 24/09/20 Чтв 14:12:35 #366 №1815078 
>>1815057

Ну так я и говорю, азазаза кекогерцы порешают, вьебем камень за 50 баксов вместо камня за 5 и все проблемы решены прерывания и таймеры не нужны.
Аноним 24/09/20 Чтв 14:24:20 #367 №1815082 
>>1815056

Если у него устоявшиеся процессы, то им в принципе не нужна система управления.

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

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

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

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

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

Аноним 24/09/20 Чтв 14:43:48 #368 №1815092 
>>1815057
>>1815082
>>1815056

Чтобы исключить бессмысленные споры, я говорю вот об этом микроядре - https://www.l4ka.org/65.php и конкретно вот об этой спецификации - http://l4ka.org/l4ka/l4-x2-r6.pdf

Аноним 24/09/20 Чтв 14:51:10 #369 №1815096 
>>1815092

Ну я и говорю, что бы превратить асинхронные события типа зуба датчика грм/датчика детонации (грм - это, например, классический шкив 50-2 умножить на обороты, детонация - это аудиочастотный спектр от слышимого к ультразвуку и для эффективной обработки нужно сложные вейвлеты быстро гонять на по-сути аудиосигнале) в синхронные и сделать православно на микроядрах и сообщениях - это где-то гиперпыня на 4-5 ггц.
Аноним 24/09/20 Чтв 14:51:56 #370 №1815097 
>>1815096

>шкив 60-2

самофикс
Аноним 24/09/20 Чтв 14:53:22 #371 №1815100 
image.png
>>1815078
>вьебем камень за 50 баксов вместо камня за 5 и все проблемы решены прерывания и таймеры не нужны

Не нужны. У тебя ограничение в пять баксов за чип? Доку в руки и пили вот это на пятибаксовом чипе.
Аноним 24/09/20 Чтв 15:01:40 #372 №1815106 
>>1815057
Не, частицы мерцают не дискретно.
Аноним 24/09/20 Чтв 15:07:18 #373 №1815111 
изображение.png
>>1815100

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

Напомню, шкив 60-2 крутится с частотой вращения коленвала, что дает частоту событий от 59 кгц на холостых до 590 кгц++ на всраку крученном спортивном моторе.

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

Вот, собственно, фотография платы известного древнего блока, даташит и характеристики МК, который в нем напаян - можешь поискать сам.
Аноним 24/09/20 Чтв 15:16:35 #374 №1815118 
image.png
>>1815111
>С помощью прерываний и возможностей периферии без труда обрабатывают такой поток на штатных для пятибаксового камня еденица-десятках мегагерц собственной тактовой частоты.

Ты просто не понимаешь с чем ты споришь. Я тебе маленько намекну, а ты уж сам решай.
Аноним 24/09/20 Чтв 15:17:43 #375 №1815121 
>>1815111

И, для сравнения, вот высер подобных тебе осешизиков, правда еще не таких поехавших как ты:

https://github.com/rusefi/rusefi/tree/master/firmware

Они притащили с собой ChibiOS, топовый 32битный STM32 камень и при этом у них всё равно всё это работает намного хуже, чем блок из 90х годов прошлого века на снятом с производства 8-битном МК.
Аноним 24/09/20 Чтв 15:20:21 #376 №1815122 
>>1815092
А где это микроядро можно покрутить ирл?
Аноним 24/09/20 Чтв 15:20:43 #377 №1815123 
изображение.png
>>1815118

> 59 кгц
> 9
>
> к
> г
> ц


> 16 Мгц
> 6
>
> М
> г
> ц

Аноним 24/09/20 Чтв 15:21:23 #378 №1815124 
>>1815122
На любой виртуальной машине. Делаешь обрраз флоппика и грузишь виртуалку с него.
Аноним 24/09/20 Чтв 15:22:09 #379 №1815125 
>>1815122
>А где это микроядро можно покрутить ирл?

https://os.inf.tu-dresden.de/download/snapshots/pre-built-images/
Аноним 24/09/20 Чтв 15:23:22 #380 №1815126 
>>1815125
А там что, ничего кроме hello world и монолита(линукса) поверх микроядра нету? Ахахаххахахахахахха
Аноним 24/09/20 Чтв 15:25:06 #381 №1815127 
>>1815123
Не имеет значения. Но если хочешь поспорить, то давай спецификацию на датчик оборотов и датчик детонации. Тогда поспорим.
Аноним 24/09/20 Чтв 15:26:23 #382 №1815128 
>>1815106
Вообще-то синхронно. Они передают между собой сообщения, а весь мир работает под управлением микроядра L4Ka::Pistachio.
Аноним 24/09/20 Чтв 15:26:25 #383 №1815129 
>>1815125
Как корабль назовёшь, так он и поплывёт.
Не Дрезден, а Карлсруе.
Аноним 24/09/20 Чтв 15:27:08 #384 №1815130 
>>1815124
Флопик? Оно ещё живо?
Аноним 24/09/20 Чтв 15:28:01 #385 №1815131 
>>1815118
>Ты просто не понимаешь с чем ты споришь

Понимаю, спорю с поехавшим дебилом.

16000000 / 59000 = 271.2 тактов

16000000 / 590000 = 27.12 тактов

А он мне какие-то потоки предлагает. Я там в них вилкой буду чистить, в окне в 27 тактов?
Аноним 24/09/20 Чтв 15:29:11 #386 №1815132 
>>1815131
У тебя выйдет некрасивый код. Решать тебе.
Аноним 24/09/20 Чтв 15:34:04 #387 №1815136 
>>1815131
Спеку на датчики неси. Или у тебя каждый оборт коленвала фотодиодом моргает и генерирует прерывание?
Аноним 24/09/20 Чтв 15:35:58 #388 №1815140 
>>1815136
Вообще-то зачастую реально он создаёт прерывание на каждый поворот коленвала.
Аноним 24/09/20 Чтв 15:38:16 #389 №1815142 
изображение.png
изображение.png
>>1815127
>то давай спецификацию на датчик оборотов

https://www.infineon.com/dgdl/Infineon-TLE4929C-DataSheet-v01_10-EN.pdf?fileId=5546d46265257de8016537ce85935e53

На датчик детона спецификацию не найду - считай его сейсмомикрофоном.
Аноним 24/09/20 Чтв 15:39:57 #390 №1815145 
>>1815136

>Или у тебя каждый оборт коленвала

60 раз за оборот, мань.
Аноним 24/09/20 Чтв 15:41:43 #391 №1815146 
>>1815145

И в определенное прерывание из этих 60 надо брызнуть малафьёй бенулином в цилиндр и поджечь искру.
Аноним 24/09/20 Чтв 15:41:51 #392 №1815147 
>>1815140
>>1815142

Сделайте уже спецчип и не партье мозги. Или в ПЛИСину залейте.
И чтобы несколько режимов понимала - Эконом, Город, Трасса, Спорт.

И не ебите мозги. Ниша ДВС узкоспециализированная.
Аноним 24/09/20 Чтв 15:44:25 #393 №1815151 
>>1815147
Зачем? Это выйдет слишком дорого делать и не выгодно.
Плюс нельзя будет подтюнить ДВС так как необходимо, если все будет в железку зашито.
Аноним 24/09/20 Чтв 15:47:58 #394 №1815154 
>>1815147
>Сделайте уже спецчип и не партье мозги. Или в ПЛИСину залейте.
>И чтобы несколько режимов понимала - Эконом, Город, Трасса, Спорт.

Никто мозги не ебет, всё это с завода работает на заводских мозгах на вот этом восмибитном камне на 16 мгц частоте, даже самые крутильные срако моторы за десятку:

http://pdf4.datasheet.su/831911.pdf

Без каких либо плисов-хуисов.
Аноним 24/09/20 Чтв 15:49:52 #395 №1815156 
>>1815111
Анон. Я вижу, ты вроде бы разбираешься в automotive, а именно в ЭБУ и вот всей этой кухне.

У меня есть пару вопросов:
1. Какие сейчас самые распространенные МК в данной сфере? C509, так понимаю, уже снят с производства. TriCore знаю, а... еще какие?
2. Возможно ли достать сам кайнд оф отладочные платы на этих камнях где-нибудь? Желательно, у китайцев, по дешману, ггггг. Но, если не - то не. Ну или, хуй с ним, сами МК.
Аноним 24/09/20 Чтв 15:53:48 #396 №1815160 
image.png
>>1815151
>>1815154
С этим можно бороться. Ничего сверхестественного.
Компилятор Си хоть есть для этой беды?
Аноним 24/09/20 Чтв 15:57:03 #397 №1815163 
>>1815156
>1. Какие сейчас самые распространенные МК в данной сфере?

В большинстве современных блоков ты встретишь Infineon Tricore различных модификаций.

https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/

>>1815156

>2. Возможно ли достать сам кайнд оф отладочные платы на этих камнях где-нибудь? Желательно, у китайцев, по дешману, ггггг. Но, если не - то не. Ну или, хуй с ним, сами МК.

Сами камни по дешману можно - так как они суть ходовые запчасти для ремонта блоков. На алике тот же TC1797 за тыщу-300

На маузере вот:

https://ru.mouser.com/Semiconductors/Embedded-Processors-Controllers/Microcontrollers-MCU/32-bit-Microcontrollers-MCU/TriCore/_/N-a85nmZ1yzmonk

Всякие отладочные ардуины тоже в наличии:

https://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/32-bit-tricore-aurix-tc2xx/aurix-family-tc27xt/
Аноним 24/09/20 Чтв 15:57:25 #398 №1815164 
>>1815160
Зачем бороться если и так работает?
Компилятор естественно есть.
Аноним 24/09/20 Чтв 15:59:46 #399 №1815167 
>>1815164
Для развития конечно. Например, для ДВС энергопотреблением этого контроллера можно пренебречь. А если где-то от батарейки будет работать, то уже всё не так радужно.
Аноним 24/09/20 Чтв 16:02:23 #400 №1815172 
>>1815167
Где нужно работать от батарейки - там будет другой микроконтроллер, заточенный на работу от батарейки. Но мы в данный момент говорим за решения для контроля над двигателем.
Аноним 24/09/20 Чтв 16:04:06 #401 №1815178 
>>1815163

Вот, собственно, ардуина из камня для эбу за 140 bucks:

https://www.infineon.com/cms/en/product/evaluation-boards/kit_aurix_tc275_ard_sb/
Аноним 24/09/20 Чтв 16:09:19 #402 №1815187 
>>1815172
Вернёмся к этому разговору несколько позже.
У меня чувство что ты вербуешь в свою "религию", а я в свою. Посмотрим чей "бог" сильнее.
Аноним 24/09/20 Чтв 16:09:58 #403 №1815188 
>>1815187
Естественно мой сильнее
Аноним 24/09/20 Чтв 16:17:36 #404 №1815192 
изображение.png
>>1815178

Ебать, а вот тут я уже проиграл так проиграл.
Аноним 24/09/20 Чтв 16:23:46 #405 №1815196 
>>1815163
Анон, огромное тебе спасибо! Теперь буду знать куда двигаться. Добра тебе! :3
Аноним 24/09/20 Чтв 16:26:34 #406 №1815198 
>>1815196
А вступишь в секту свидетелей микроядра L4Ka::Pistachio?
Аноним 24/09/20 Чтв 17:22:20 #407 №1815251 
>>1815198
Ха ха ха. Ну знаешь, если те, кто чтят священную спецификацию L4.X2 это секта, то вы - те, кто идолам поклоняются, да с бубном над исходным кодом танцуют - язычники.
Аноним 24/09/20 Чтв 20:04:45 #408 №1815377 
>>1815251
У нас ещё круче. Ща расскажу как у нас происходят встречи любителей микроядер. Мы собираемся у кого-то на квартире. Раздеваемся. До гола, далее мы берём и бреем очко, смазываем качественной смазкой на базе канифоли/спермы бомжа/гнили с дна мусорника. Затем начинаем плеваться в распечатанное фото Линуса Порвальдса. Долго плюемся. Назначаем главного падре данной встречи(скоро узнаешь зачем) с помощью генератора случайных чисел. Потом начинаем подсасывать друг другу хуй и дрочить на скрин mac os xникто не знает почемувсе дело в замашках на микроядерность наверное.Потом мы открываем спецификацию микроядра L4Ka::Pistachio, и начинаем неистово ебаться в жопу, гул стоит на весь двор. Затем заходит главпетух всех микроядер вместе с ручным гусем под руку. В руках главпетуха большой дилдо. Он начинает ебать гуся большим фаллосом. Все оргазмируют на спецификацию микроядра и ее неистовое совершенство, кончают на распечатку спеки на куске оборванного листа. Назначенный падре начинает слизывать сперму с этого листа.
Аноним 24/09/20 Чтв 20:26:44 #409 №1815408 
>>1815142
>>1815145
А что нельзя считать только саму дырку, а остальное не считать?
Ну тупыыыые
Аноним 24/09/20 Чтв 20:35:49 #410 №1815431 
>>1815408
Посчитаешь дырку - узнаешь за какое время проходит 4 такта. На этом все.
Посчитаешь каждый зубец - точно сможешь знать когда происходит каждый такт. И в зависимости от этого отрегулировать обогащенность смесь, или время упреждения зажигания свечи.
Аноним 24/09/20 Чтв 20:37:31 #411 №1815434 
image.png
>>1815408
Просто им в голову не приходит что небольшим, ничтожным по современным меркам, транзисторным бюджетом можно добавить два регистра, один из которых считает количество такктов за один поворот коленчатого вала, а друой - число тактов после прохождения ВМТ. Да хоть в угловых секундах. Но нет же, надо ебаться с прерываниями и городить вокруг этого философию.
Аноним 24/09/20 Чтв 20:44:19 #412 №1815444 
>>1815431
Ну возьми прошлое время и вычти немного.
Аноним 24/09/20 Чтв 20:52:34 #413 №1815456 
>>1815444
Не думаю что все там так просто
Аноним 24/09/20 Чтв 20:56:16 #414 №1815462 
>>1815456
Маховик упрощает.
Аноним 24/09/20 Чтв 20:59:28 #415 №1815465 
>>1815462
4 такта и 4 поршня, 16 тактов суммарно за 1 вращение маховика. Плюс газ управляется в принципе тем, кто не попадает в одни и те же обороты всегда. Форсунка находится в каждом поршне. Не думаю что все так просто там и можно интерполировать все.
Аноним 24/09/20 Чтв 21:04:54 #416 №1815469 
>>1815465
> Не думаю что все так просто там и можно интерполировать все.
Это сложно с точки зрения физики, а с точки зрения программирвания это всё по таблицам легко реализуется. Программирование микроконтроллеров не rocket science.
Аноним 24/09/20 Чтв 22:42:12 #417 №1815563 
>>1815408

>А что нельзя считать только саму дырку, а остальное не считать?

Можно. Так даже в некоторых мозгах вроде Megasquirt делают.

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

>>1815434

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

Вал имеет свойство вращаться неравномерно, а так же ускоряться/замедляться.

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




Аноним 25/09/20 Птн 07:57:45 #418 №1815633 
920c8201d031c54d84725a399b7c4860.jpg
Есть число, записанное в виде 32-ух битного хекса: 0x00003F00.
Как разом проверить выставлен ли хотя бы один бит с 10 по 14-ый, тобишь 3E - любой из них?
Аноним 25/09/20 Птн 08:01:25 #419 №1815634 
>>1815633
> Есть число, записанное в виде 32-ух битного хекса: 0x00003F00.

0x00003F00 & 31<<10
Аноним 25/09/20 Птн 08:22:40 #420 №1815639 
>>1815634
> записанное
Нет, эту задача над текстом. Надо применить регекспы
Аноним 25/09/20 Птн 09:33:50 #421 №1815665 
>>1815639
применил хуй у тебя во рту
Аноним 25/09/20 Птн 10:03:03 #422 №1815693 
>>1815563
>Вал имеет свойство вращаться неравномерно, а так же ускоряться/замедляться.
Сдаётся мне что ты юлишь как слово подставь сам. Это в каких моторах считается угловая скорость?

Проблема поиска угловой скорости решается ещё сотней-другой транзисторов, ещё одним фотодиодом, 60-ю отвестириями по кругу. Далееи считаешь дельту между сигналами, тоже можно поместить в регистр, отображённый в адресное пространство. Опять же в тактах. Вот тебе и датчик. А чтобы не дрочить контроллер, генерируешь прерывания только когда дельта меняется.

Можно и и вообще одним фотодиодом обойтись - убираешь одну дырку после ВМТ - вот тебе и положение вала, дельта меняется в 2 раза +- несколько процентов, значит метка полного оборота вала.

Ты лучше расскажи - эмулируют ли "мозги" поведение топливного насоса каррбюраторного двигателя? Имеет ли смысл на инжекторе "накачивать" мотор педалью газа?
Аноним 25/09/20 Птн 10:09:16 #423 №1815700 
>>1815634
>0x00003F00 & 31<<10

If( (number & 0x00003F00) != 0 )
printf("At least one bit is set\n");
else
printf("No bits are set\n");
Аноним 25/09/20 Птн 12:00:20 #424 №1815749 
>>1815693

Мозги ничего не эмулируют.

Мозги расчитывают количество бензулина и момент когда им нужно бырзнуть, а так же когда дернуть искру.

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

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

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

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

Аноним 25/09/20 Птн 12:01:50 #425 №1815750 
>>1815693
>Проблема поиска угловой скорости решается ещё сотней-другой транзисторов, ещё одним фотодиодом, 60-ю отвестириями по кругу. Далееи считаешь дельту между сигналами, тоже можно поместить в регистр, отображённый в адресное пространство. Опять же в тактах. Вот тебе и датчик. А чтобы не дрочить контроллер, генерируешь прерывания только когда дельта меняется.

Ты уже на полпути пути к:

>>1815043

Я тебя поздравляю.
Аноним 25/09/20 Птн 13:03:58 #426 №1815798 
>>1815563
Делаешь всё логично, и все работает. Предварительно на кнопочки понажимай.
Аноним 25/09/20 Птн 13:45:44 #427 №1815831 
>>1815749
>Мозги расчитывают количество бензулина и момент когда им нужно бырзнуть, а так же когда дернуть искру.

Блин. Я имел в виду конечно же не топливный, а усскорительный насос. Не эмулируют? Ну и зря!

>>1815750
>Ты уже на полпути пути к:
Хмм. Вот специально почекал как устроены ЭБУ современных двигателей. Пойдёт за неимением лучшего.
Аноним 25/09/20 Птн 14:34:26 #428 №1815852 
>>1815749
Кстати это весьма ощутимо если пересаживаешься на чужую машину. Раньше до тебя на тачке ездил какой-то тип неторопливый, и машины такая, хреново разгоняется, будто старый дед. Но проезжаешь на ней километров 10, и машина будто начинает понимать тебя, становится более резвой, активной. Теперь понятно почему все так.
Аноним 25/09/20 Птн 16:31:55 #429 №1815965 
>>1807650 (OP)
Создал конфу в телеги, кто хочет, велком!
linuxsystemprogramming
sageАноним 25/09/20 Птн 16:33:06 #430 №1815968 
>>1815965
Проваливай, дядя
Аноним 25/09/20 Птн 16:40:19 #431 №1815984 
>>1815968
Что такой злой? Никто же не заставляет.
sageАноним 25/09/20 Птн 16:54:13 #432 №1816006 
>>1815984
Тогда не проваливай, дядя
Аноним 25/09/20 Птн 16:58:54 #433 №1816014 
>>1815831

В старых мозгах, которые на таблицах, есть поправка на обогащение при разгоне и переключении.


http://rotorman.dtt-motorsport.ru/j5-sport/j5_tech.htm

В новых, которая на моментной модели такой хуйни нет.
Аноним 25/09/20 Птн 17:27:08 #434 №1816062 
>>1815852
Толсто. Это твоя серая нейронка перераспределила веса.
Аноним 25/09/20 Птн 17:27:56 #435 №1816066 
>>1815965
Много уже систем линуксов напрограммировал?
Аноним 25/09/20 Птн 17:34:29 #436 №1816077 
>>1816006
Ты даун?
Аноним 25/09/20 Птн 17:37:29 #437 №1816083 
>>1815749
>Если говорить про современные автомобили где-то после евро-4 то там полный пиздец, моментная модель и нечетко-нейронные сети в алгоритмах управления.

серьезно? есть соус?
ведь это же опасно, а классические алгоритмы никуда не делись, не так уж плохи и обладают Интерпретируемостью.
sageАноним 25/09/20 Птн 17:44:34 #438 №1816094 
>>1816077
Да
Аноним 25/09/20 Птн 17:45:08 #439 №1816095 
>>1816014
>В новых, которая на моментной модели такой хуйни нет.
Небось по требованию экологических организаций?

И расскажи как ты считаешь вейвлеты на 8-битном CPU за две тысяи тактов. :-)

Аноним 25/09/20 Птн 17:46:29 #440 №1816098 
>>1816066
0
Аноним 25/09/20 Птн 18:11:06 #441 №1816157 
>>1815749
Если куда то пихают нейронку, то это попил, а не техническая необходимость.
Аноним 25/09/20 Птн 18:55:02 #442 №1816203 
>>1816083
>ведь это же опасно

Схуяли? Это же не диплернинхпараша.

есть соус?



https://www.drive2.ru/b/549296493979238598/

https://www.drive2.ru/b/523622347714855958/

https://mediatum.ub.tum.de/doc/1108936/946895.pdf

https://pdf.sciencedirectassets.com/282073/1-s2.0-S2212017312X00045/1-s2.0-S2212017312002563/main.pdf?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEL%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQC2FtI3TEpLrTmxJKiucvg%2FRaDrm061pPw98tmLKRBUvQIhANg%2F1szhok7hfZy9ad1QJ%2BbXa%2FqksFVzZy2q7cGv6iKtKr0DCNj%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQAxoMMDU5MDAzNTQ2ODY1Igx%2BUah2XSsx0cXaOMkqkQOAg%2FwCHLTylNg%2FZcnCqfoYhjAO5SXOesBIFiWC%2BiOP5QYepxgJKDmBSwB2dSHC2%2Fv%2FJ309DLyyDpSHF05ptoj0p%2FkJIEKneKTWQUUSMrXQ5hY%2ByDrgiPTcShY%2BoWDTDffrk8kbMGkhKILTgEg7fqmzpXWmNNghuHKu%2F8KIMTNbSGqLg9vVUp6T6rL9Eix54EASTJwuTIa1wqsMQl2Gk%2FWU0dRiJYfRY0zXuAgMTVX6%2BqOipRZ4ewWQbnIDzLyV72OMZbxiykvIcdJ4JruCYVKfBLkqMNEbYq2wAhGUpp8tYiL5kfSgsPbHC4V5cvDJrRqCqBnQF%2BYmAcF6pYQ7qftitz3opKqxljXbMST6rEvu780FSi1YHA0sMbXva61SnYqQ8yOtzovD1Xq9eFUAXGHRluSwdco7GJcNjKzf3Q4w%2FW7XcfCQkBfObdeFsxrm39yD4fbEHQfRbr4lV5vjmeBbM13U%2FBqqAB5yBSlIU8ci83yHyB0%2BPNtWDKHkAAW7uxv4kHzc1sK9BEC2idk7jj2jojCsgrj7BTrqAV4%2FaC58T6oYdk2ni28bos8izP3CjlAPC4fTM15N4PkEJ3%2Fyec2BHGiQ9QNriRhgVfBkwK7AAZ6%2BB0t%2BycNcucVW65%2Bc5nSydOTpf5nEOZaJpNTPLDsZW9d%2BWKgkf14J77wIgS8DpXXknRh%2FuBYzxicnxD0qkotNlXgJp25LjEN5X6ZRgiZh98Qoc%2FGsP8ZeJr9e35SXjMlLgWerVuF%2BrB0%2FvTalsOwbu67VFMIVibhdXcSPrX%2FG2TXl8RhKYTaqHWQZL6lrmNr1gY50po3M0mZ%2FKazFmL2gpizh%2FdjUUOgUzwYPfEUeP3A74g%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20200925T155102Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIAQ3PHCVTYUF6H3GEU%2F20200925%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=9909efba803660daab85f7ad25da116f395a61e0f98def12b3966ed57da22dc2&hash=a5a883384e8e55f76e1273212fbf21040307e0f6e7ae8c92ad3491c6c31eddfc&host=68042c943591013ac2b2430a89b270f6af2c76d8dfd086a07176afe7c76c2c61&pii=S2212017312002563&tid=spdf-7a885ee4-4992-4c8a-8a4d-0b681c8a829c&sid=317d10b03d2d3648af08c8c008e750b777e9gxrqb&type=client

Аноним 25/09/20 Птн 19:40:39 #443 №1816233 
>>1816203
>И почему на самом деле "тойота не убивает нас"
Но ведь она убивает. Дальше не читал.
Аноним 25/09/20 Птн 20:14:40 #444 №1816251 
опытные водилы еще в совке за счет правильной езда экономили кучу горючки на служебных машинах и сливали излишек себе
ваши алгоритмы и нейронки хуйня
Аноним 26/09/20 Суб 01:45:59 #445 №1816447 
>>1816251
Я и при России так в армии делал
Аноним 26/09/20 Суб 02:05:11 #446 №1816448 
>>1816447
Хуй будешь?
Аноним 26/09/20 Суб 02:17:20 #447 №1816450 
>>1816448
С хуями не работаю. А вот тебе хочу предложить поиграться с лизательным интерфейсом моей залупы.
sageАноним 26/09/20 Суб 12:44:20 #448 №1816558 
>>1816450
Ты пидор?
Аноним 26/09/20 Суб 14:06:51 #449 №1816634 
Заебали срать в теме. В результате окажется что кто-то из вас не умеет программировать на Си. Хотите померяться писюнами - покажите кто из программирует круче. Это тут оценят.

Аноним 26/09/20 Суб 14:51:51 #450 №1816721 
>>1816634
А что сложного и крутого можешь ты написать на Си?
Аноним 26/09/20 Суб 15:06:21 #451 №1816740 
>>1816721
Всё. Что не смогу написать на Си - напишу на Си интерпретатор/копмилятор и напишу на нём. Основной ресурс это время. Лет 500 хватит.

Такой ответ тебя устроит?
Аноним 26/09/20 Суб 16:18:37 #452 №1816824 
>>1816634
Нюфаня, плиз, вернись на свой сайт, он тут -> habr.com. Твои дилетантские пуканья про обожи не умеет пограмировать тут никого не впечатлят.
Аноним 26/09/20 Суб 16:44:51 #453 №1816857 
>>1816740
>пук
Я понял. Ты бестолочь.
Аноним 26/09/20 Суб 16:46:50 #454 №1816861 
>>1816558
А как ты думаешь? Он в Си-треде.
Аноним 26/09/20 Суб 16:56:02 #455 №1816874 
>>1816824
>habr.com
Только не в эту петушарню111
Аноним 26/09/20 Суб 17:18:38 #456 №1816880 
Аноны, вы ведь тут многие или имеете опыт на Си, или учитесь оному.
Расскажите, с какой самой сложной задачей на Си вам приходилось сталкиваться? Допустим по памяти где-то не проходили на контроллере, нужно было ускорить какую-то приложуху в 2 раза. Естественно истории успеха приветствуются.
Аноним 26/09/20 Суб 17:57:00 #457 №1816901 
>>1816880
> с какой самой сложной задачей на Си вам приходилось сталкиваться?

Имплементация стека Bluetooth по талмуду. Давно. Когда "смартфоны" были только на Windows CE. И на самописных велосипедах.
Ещё UWB, но не взлетело тогда. А сейчас вроде взлетает.
Аноним 26/09/20 Суб 19:14:13 #458 №1816948 
>>1816880
Портировал нетхак на некропеку.
Аноним 26/09/20 Суб 21:59:21 #459 №1817033 
>>1815700
Смежная задача:
https://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer
Аноним 26/09/20 Суб 23:51:19 #460 №1817066 
image.png
>>1817033
Это какая-то магия.
Аноним 27/09/20 Вск 00:46:29 #461 №1817094 
>>1817066
Если ты запишешь в двоичном виде там все тривиально тащемта.
Сначала складываешь четные и нечетные (сдвинутые на 1) биты попарно
10011011

1_0_1_1_
_0_1_0_1

_1_0_1_1_ +
_0_1_0_1 =
01010110

Потом повторяешь для пар (только там не сдвиг, а нюансы с маской)
01010110

01__01__
__01__10

__01__01__ +
__01__10__ =
00100011

Потом продолжают эту операцию над группами в 4 бита
0010 +
0011 =
0101
ответ b0101 = 5



*маски устроены тоже понятно как
0x3333 это 0011001100110011 группы по 2 бита (эта же маска используется со сдвинутым на бита значением)
0xF0F0 это 1111000011110000 группы по 4 бита



__
Аноним 27/09/20 Вск 01:15:36 #462 №1817107 
>>1816880
сделал треть упражнений из k&r 15 лет назад
Аноним 27/09/20 Вск 08:02:04 #463 №1817166 
>>1816880
Программа win32 GUI. Абсолютная сложность, никто в треде не осилил.
Аноним 27/09/20 Вск 11:14:01 #464 №1817212 
>>1813936 - Анон
В общем у меня получается 2 часа тратить на книжку Праты. Но я теперь больше внимания уделяю коду. Т.е практика 80%, часа 4 и теория 20% т.е 2 часа в день и я думаю увеличить это время через месяц или два. И у меня вошло в привычку каждый день вставать и этим заниматься. Каждый день будто лучше получается решать задачи на кодвеваре. Через год может быть буду уже понимать о чем здесь идёт речь.
Аноним 27/09/20 Вск 11:52:02 #465 №1817228 
Видели уже? В /po протёк кросс-компилятор для Эльбруса.

https://2ch.hk/po/res/39840523.html#39841857

Аноним 27/09/20 Вск 12:43:11 #466 №1817266 
>>1817228
Соси мразь, сиди в параше но не кидай линки на это бесполезно говнище.
Аноним 27/09/20 Вск 12:54:22 #467 №1817272 
А вот и кандидат на инсулинокоматозную терапию пожаловал ->>1817266

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

А мы пощупаем утекший компилер, промоем ему косточки и вынесем вердикт.
Аноним 27/09/20 Вск 12:57:01 #468 №1817275 
>>1817166
Один раз написал индикатор висящий в трее винды.
Аноним 27/09/20 Вск 13:05:37 #469 №1817282 
>>1817272
Иди говно пососи, пидор клавиатурный.
Аноним 27/09/20 Вск 13:14:15 #470 №1817288 
>>1817282
Зачем ты сюда протекло, говно.

>>1817228
Чую тот тред скоро в бамплимит уйдёт. Т.ч. качайте, пока не поздно. Я скачал, но пока лениво переписывать его в виртуальную машину, чтобы пощупать. Но в архиве действительно кросс-компилятор Эльбруса.
Аноним 27/09/20 Вск 13:17:19 #471 №1817292 
>>1817288
Да иди нахуй уже со своей парашей.
Аноним 27/09/20 Вск 13:22:01 #472 №1817297 
>>1817228
Спок, шиза. Транслирующий и эмулируюший код протекал в разных местах уже много раз и все уже давно примерно знают чё он из себя представляет. Плюс пару лет назад в асм треде крутился казанский пчелик и сливал кучу инсайдов (только его похоже посадили)
Аноним 27/09/20 Вск 13:36:43 #473 №1817310 
image.png
>>1817297
Вот не пиздел бы ты. Кросс-компилятор Эльбруса не вытекал ранее. Анон говорит что впервые его слилили на ЛОР.
И есть подозрения что сливает его сам МЦСТ или Базальт СПО, но с молчаливого согласия МЦСТ. Иначе лавочку бы быстро прикрыли.

Аноним 27/09/20 Вск 13:38:27 #474 №1817313 
>>1817310
Да иди нахуй уебище, как ты не понимаешь что ты ебанутый на голову долбоеб и это никого не впечатляет?
Аноним 27/09/20 Вск 13:45:26 #475 №1817321 
>>1817228
Не понимаю что в нем особенного? Ну векторизацию делает на vliw архитектуру. И что дальше? Кланяться? В ноги кидаться? Никакого rocket science там нет.
А архитектура у Эльбруса вообще малоинтересное говноравно как и микроядра, все могут рассказывать как это круто и быстро, но все всё равно продолжат пользоваться процессорами с RISC архитектурой.
Целевые задачи не в счет
Аноним 27/09/20 Вск 13:45:41 #476 №1817322 
>>1817313
Сначала я написал трёхэтажное оскорбление, а затем подумал - не много ли чести для "никто"? Ты же ведь реально ничего из себя не представляшь. Ты информационный шум и не более.
Аноним 27/09/20 Вск 13:50:22 #477 №1817330 
>>1817321
Особенного ничего. Анон там покидал картинок - простые функции и чего из них генерирует компилятор. При большом опыте и старании человек напишет раза в два оптимальнее. Но недолго - крышу может сорвать от сложности.

Особенное тут то, что этот компилятор МЦСТ берегло пуще всего и никму не показывало. А тут раз - вот он.

> все могут рассказывать как это круто и быстро
Лучше один раз руками пощупать, чем 1000 раз услышать.


Аноним 27/09/20 Вск 14:04:00 #478 №1817346 
>>1817322
Я горжусь тем, что я никто. И никто никогда не кинет никому не нужное говно в тред великого языка программирования.
Аноним 27/09/20 Вск 14:23:20 #479 №1817378 
>>1817228
Добавьте в годболт.
Аноним 27/09/20 Вск 14:34:54 #480 №1817394 
>>1817330
>Особенное тут то, что этот компилятор МЦСТ берегло пуще всего и никму не показывало. А тут раз - вот он.
На выставках просили закрыть окно терминала, если кто запускал objdump. При том, что полных средств разработки на выставочных компьютерах не было, но можно было запустить компилятор с ключом -s.

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

Аноним 27/09/20 Вск 17:46:06 #481 №1817581 
15928065226080.jpg
Где-то слышал мнение, что стэк не рекомендуется нагружать крупными объектами. Правда? Почему?
Аноним 27/09/20 Вск 17:57:40 #482 №1817588 
>>1817581
Правда.
Потому что он маленький.
Аноним 27/09/20 Вск 17:58:47 #483 №1817589 
>>1817581
Он маленкий. В линуксе джва мегабайта. На виндоуйс вообще мегабайт или около того.
Аноним 27/09/20 Вск 18:01:54 #484 №1817591 
>>1817581
Если подумать, то причина вот в чем.
Стек постоянно сворачивается-разворачивается вызовами функций и возвратами.
Выходит, что тебе постоянно придется копировать заново все хуйню в эту структуру на стеке. Каждый раз. А на куче выделил и все.
Второй момент - фрагментация памяти. Стек идет непрерывно. Если ты выделил 100 байт, ты не сможешь расширить до 1000. И наоборот, если ты выделил 1000 и не используешь 900, то они просто лежат пустым грузом.
Аноним 27/09/20 Вск 18:48:53 #485 №1817621 
>>1817581
>
>Где-то слышал мнение, что стэк не рекомендуется нагружать крупными объектами. Правда? Почему?

Можно. Если нет рекурсии. Локальными переменными. Нехорошо передавать через стек объекты целиком в вызываемую функцию, потому что копирование.

Аноним 27/09/20 Вск 19:45:07 #486 №1817649 
>>1817581
А зачем тебе нагружать стак? Ват? Он и так опасен и без объектов.
Аноним 27/09/20 Вск 19:49:47 #487 №1817653 
>>1817581
Типа стак это как бы RAM, временное хранилище чтобы сохранить пару переменных пока функция работает и всё. В ней хранятся статичные данные, типа литералов строк, чисел и прочего. Как тебе анончики сказали. Для остального есть малок.
Аноним 27/09/20 Вск 19:51:33 #488 №1817656 
>>1817591
Он работает как анус. Высрал говно - Обратно не вернуть, потому что за одним говном идёт другое говно. Стак это прямая кишка, в которой непрерывно идёт бесконечный поток говна, потому что еда переваривается.
Аноним 27/09/20 Вск 19:52:15 #489 №1817657 
>>1817653
>Для остального есть малок.
и утечки памяти
Аноним 27/09/20 Вск 19:52:50 #490 №1817659 
>>1817657
Ну а для этого есть Валгринд.
Аноним 27/09/20 Вск 19:56:11 #491 №1817661 
изображение.png
>>1817657
A memory leak reduces the performance of the computer by reducing the amount of available memory. Eventually, in the worst case, too much of the available memory may become allocated and all or part of the system or device stops working correctly, the application fails, or the system slows down vastly due to thrashing.
Аноним 27/09/20 Вск 20:05:11 #492 №1817672 
>>1817653
>стак это как бы RAM
А типа куча это RAM
>В ней хранятся статичные данные, типа литералов строк, чисел
На стаке? ЯсНо.
Аноним 27/09/20 Вск 20:15:19 #493 №1817695 
>>1817672
Сука. Короче мне пора спать.
Аноним 27/09/20 Вск 20:20:07 #494 №1817699 
>>1817672
Ну кстати да. Хуйню спизданул.
Аноним 27/09/20 Вск 20:49:24 #495 №1817715 
>>1817659
Address Sanitizer поинтереснее выглядит.
Аноним 27/09/20 Вск 21:36:49 #496 №1817751 
>>1817715
Записал. Только не знаю нахуй мне это надо, но я раньше думал, нахуй мне Clang когда у меня GCC есть.
Аноним 27/09/20 Вск 22:39:07 #497 №1817816 
>>1817751
Юзаю его с gcc. Он доступен в обоих компиляторах.
sageАноним 28/09/20 Пнд 00:08:08 #498 №1817861 
>>1817591
> фрагментация памяти
Физическим страницам похуй, виртуальное адресное пространство, особенно по нынешним временам, в 64-битных машинах не жалко.
> не сможешь расширить
В винде стек автоматически расширяется.
Аноним 28/09/20 Пнд 02:32:23 #499 №1817884 
>>1817861
Разве фрагментация не заставляет тупить программу из-за неэффективной работы процессора и L1/L2 кэша?
Аноним 28/09/20 Пнд 03:06:39 #500 №1817888 
>>1817884
Нет там никакой фрагментации. Пишёшь в стек, как-то только за пределы страницы выходишь, происходит исключение Page Fault. ОС обрабатывает исключение и проверяет, превышен ли размер стека. Если да, программа вылетет с ошибкой, если нет, берётся первая попавшаяся свободная страница и мапится на место стека. Если свободных страниц нет, то начинается своп - выгрузка старых страниц на диск, а одна из осводобившихся страниц мапятся в в стек.


Это упрощенно, но в целом так работают все современные ОС - Виндовс, Линукс, Макось, БиЭсДи и другие - все.
Аноним 28/09/20 Пнд 04:02:11 #501 №1817895 
>>1817884
Манямантры. В реальных программах нет никакой фрагментации и кешей. Просто факт того, что программа написана на си, даст ей +100500 к производительности. Проблема только в том, что никто не пишет.
Аноним 28/09/20 Пнд 04:07:25 #502 №1817896 
>>1817895
> В реальных программах нет никакой фрагментации
Я просто хуею когда ребёнки рассуждают о том, в чём слабо смыслят. Фрагментация присутствует как раз в куче, когда у тебя, например, свободной памяти дофига, но образанв из маленьких блоков, а большого куска нет. Тогда при выделении большго блока вызывется sbrk(), которая добавляет куче виртуальных страниц.
Аноним 28/09/20 Пнд 05:06:42 #503 №1817900 
>>1817896
Зачем кормишь?
Аноним 28/09/20 Пнд 07:23:58 #504 №1817909 
>>1817896
>когда у тебя, например, свободной памяти дофига, но образанв из маленьких блоков, а большого куска нет.
Вот я и говорю - манямантры. Даун придумывает манясюжет, чтобы удовлетворить свою шизу.
Еще раз, для дебилов: В реальных программах такого не бывает.
Ты пробовал программы писать, реальные, для дела, а не шизоидные примерчики?
Аноним 28/09/20 Пнд 07:28:54 #505 №1817910 
Внимание, в треде орудует шизик-дефрагментатор из /gd/ча.

https://2ch.hk/gd/res/618624.html

Повторяю, в треде залетный шизик - дефрагментатор из движкотреда /gd/ча.

Его всем тредом обоссали и он решил сменить место дислокации.
Аноним 28/09/20 Пнд 08:50:03 #506 №1817925 
>>1817910
Дело в том, что вычислительная мощность у местных анонов очень высокая, они же Си знают все таки. Я думаю все тут поняли, что парень ебанутый с одного поста.
Аноним 28/09/20 Пнд 08:53:05 #507 №1817926 
>>1817888
Поясни раку: L1 L2 это и есть стак? Или там хранится стак? Шо?
Аноним 28/09/20 Пнд 09:00:20 #508 №1817929 
>>1817816
Чем clang так хорош?
Аноним 28/09/20 Пнд 10:17:59 #509 №1817950 
>>1817926
> L1 L2
Это кэши процессора. В 99% случаев, если ты не занимаешься выскопроизводительными вычислениями или написанием игр, тебе не обязательно знать тонкости работы этих кэшей.
Разве что для общего развития и понимания.
Аноним 28/09/20 Пнд 10:33:52 #510 №1817957 
do
Set oWMP = CreateObject("WMPlayer.OCX.7")
Set colCDROMs = oWMP.cdromCollection
if colCDROMs.Count >= 1 then
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
end if
loop
Аноним 28/09/20 Пнд 10:55:45 #511 №1817964 
>>1817950
Шизик не отвечай мне.
Аноним 28/09/20 Пнд 10:56:08 #512 №1817965 
Сука я думал я не шизику пишу.
Аноним 28/09/20 Пнд 11:11:56 #513 №1817972 
>>1817964
Ебаный биомусор, хули ты сюда вылез, грязь ебанная. А ну марш в стойлы, быдло!
Аноним 28/09/20 Пнд 11:36:50 #514 №1817977 
Перекатывайте уже тред. Пора.
Аноним 28/09/20 Пнд 11:42:12 #515 №1817983 
>>1817888
Ты описал как докидывается пространство к стэку, оно сделано во всех новых ОС, я это уже знаю.
Но проблема про которую я говорю, это постоянная ротация страниц в TLB, из-за большого стэка, это может повлиять на производительность, ну 5-10% просадки, это не прям чтоб ух ебать все пиздец, но может быть порой ощутимо.
>>1817895
Если неэффективно выделять вечно память, вполне фрагментация может наступить. Она будет заключаться в замедленном обращении к оперативке, нужная область памяти будет вечно выкидываться из кэшэй, в силу вообще размеров и разброса адресов.
>>1817926
L1 и L2 это кэши процессора, они ускоряют доступ к оперативной памяти. Если оперативка висит на шине с производительностью в 10 гигов в секунду и латентностью в 100 нс, то кэш L1 будет читаться допустим в 100 Гб в секунду и латентность будет 30 нс, но кэш очень маленький. Цифры взяты с потолка, чтобы понимал в чем суть.
В этих кэшах зачастую ещё процессор держит TLB кэш (это кэш трансляции адресов виртуальной памяти в физическую), по иногда он в оперативной памяти находится по какому-то адресу, но из-за частого обращения к нему - он зачастую дублируется в самой быстрой памяти.
Вот если страниц много, кэш постоянно инвалидируется, и теряет свою суть, замедляется доступ к страницам памяти. >>1817929
Стильно, модно, молодежно, можно собрать на нем код для самовара, видеокарты AMD, wasm, armv8-a, и многого другого. Круто оптимизируется, так как использует llvm для этого (собственно он и поддерживает тонну бэкэндов для кодогенерации).

Могу в чем-то на изи ошибаться в этом сообщении
Аноним 28/09/20 Пнд 11:56:01 #516 №1817992 
>>1817983
>Но проблема про которую я говорю, это постоянная ротация страниц в TLB, из-за большого стэка,
Может. Но обратись к реальным программам. Отчего стек может быть "большим"? Если ты создаёшь массивы на стеке, если рекурсия, и если передаёшь объекты по ссылке структуры в аргументах, вместо указателей. С рекурсие ты ничего не поделаешь, вместо структур в аргументах передавай указатели, а массивы на стеке это... ну не такое уж и зло, если ты понимаешь что ты делаешь.

Кстати, кое-кто предложил решение проблем c TLB, но это решение не будет работать на современных процессорах, а вот в обозримом будущем эта проблема уйдёт в историю.
Аноним 28/09/20 Пнд 12:13:25 #517 №1818003 
>>1817992
В основном это касается небольших девайсов. Сейчас чисто кэш памяти в процессорах х86-64 минимум мегабайт 4-5. И я думаю большой стек не проблема для них.
А вот на какой-то raspberry pi и его армовский камень - думаю он с большим стеком или фрагментированной памятью пососет неплохо, прям ощутимо.
Аноним 28/09/20 Пнд 14:20:50 #518 №1818097 
>>1817983
> постоянная ротация страниц в TLB, из-за большого стэка
Если стек не влазит TLB, давайте буферы выделять в куче!!! Wait, куча тоже транслируется TLB? О, дерьмо.
Аноним 28/09/20 Пнд 14:58:49 #519 №1818141 
>>1818097
Не, ну доля смысла в его словах есть. Стек дрочится постоянно.

Т.ч. там с перекатом?
Аноним 28/09/20 Пнд 15:20:14 #520 №1818151 
>>1817983
> Вот если страниц много, кэш постоянно инвалидируется
Это если доступ есть. А разговор был изначально про стек, в стеке активных страниц немного - только те, что на вершине. Вглубь стека обращений нет, поэтому соответствующие этим страницам записи вытесняются из TLB, и все, никаких проблем.
Аноним 28/09/20 Пнд 15:24:39 #521 №1818158 
>>1818156 (OP)
>>1818156 (OP)
>>1818156 (OP)
>>1818156 (OP)
>>1818156 (OP)
Аноним 28/09/20 Пнд 15:25:37 #522 №1818161 
Перекат, в общем: >>1818156 (OP)
опять макака тему спиздила
Аноним 28/09/20 Пнд 18:54:09 #523 №1818326 
>>1817983
О спасибо за инфу по кешам.
comments powered by Disqus

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