C Programming Language #64 /clang/

 Аноним OP 14/10/20 Срд 19:41:31 #1 №1830513 
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 помогает читать сложные сишные декларации.

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

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

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

Аналогично в С для вызовы free.
Аноним 14/10/20 Срд 20:20:28 #4 №1830551 
>>1830534
Не проверяй. Если ты не ембеде, то у тебя в системе всё равно memory-overcommit включён и NULL никогда (почти) не будет.
Аноним 14/10/20 Срд 20:21:39 #5 №1830552 
>>1830550
Я, оказывается, промахнулся тредом.
Сорян.
В любом случае, требования стандарта в этом плане одинаковые.
Аноним 14/10/20 Срд 20:23:33 #6 №1830557 
image.png
>>1830552
Исправляюсь.
Аноним 14/10/20 Срд 20:47:33 #7 №1830596 
Ну-ка, как обнаружить переполнение при сложении 2-х long? Машина с дополнением до двойки.
Аноним 14/10/20 Срд 20:55:57 #8 №1830609 
>>1830596
x = a + b
if(x < a) {
overflow;
}
Аноним 14/10/20 Срд 21:26:54 #9 №1830632 
>>1830609
Это только для беззнаковых.
Аноним 14/10/20 Срд 21:30:14 #10 №1830635 
>>1830632
Да.
Я только с беззнаковыми и работал.
Для знаковых надо определять возможность переполнения до сложения.
Аноним 14/10/20 Срд 22:17:55 #11 №1830683 
>>1830596
в интернете есть код проверки, возьми там
Аноним 14/10/20 Срд 22:23:23 #12 №1830686 
>>1830534
У тебя 0 может вылезти из-за фрагментации памяти. Поэтому все же надо бы придумать дефрагментатор оперативной памяти
Если ты точно уверен насчёт использования памяти своей программой - пиши свой аллокатор памяти на базе mmap и madvise.
Аноним 15/10/20 Чтв 00:29:51 #13 №1830737 
>>1830686
> Поэтому все же надо бы придумать дефрагментатор оперативной памяти
Только через managed возможно. В противном случае невозможно. Да и не нужно, пока есть страничная организация памяти.
Аноним 15/10/20 Чтв 04:26:45 #14 №1830813 
>>1830737
> Да и не нужно, пока есть страничная организация
Это 64 бита 48 бит хватит всем. А в 32-битных ОС есть проблема фрагментации адресного пространства, особенно со всеми этими рандомизациями.
Аноним 15/10/20 Чтв 05:10:36 #15 №1830821 
>>1830813
Пойми простую вещь - дефрагментация кучи невозможна, поскольку "дефрагментатор" не имеет понятия об указателях на выделенную память. Двигать блоки в памяти не проблема, но нет средств чтобы сообщить об этом программе, которая запрашивала память. При любой попытке склеить свободные фрагменты в куче, указатели в программе сразу станут невалидны и всё рассыпется.

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

Аноним 15/10/20 Чтв 05:16:50 #16 №1830828 
>>1830821
В Wolfenstein 3d была дефрагментация - у них было так что мог быть только один указатель на каждый блок памяти, указатель на этот указатель хранился в заголовке блока, соответственно дефрагментатор мог его обновить.
Аноним 15/10/20 Чтв 06:06:34 #17 №1830857 
>>1830821
> Пойми простую вещь - дефрагментация кучи невозможна
Так я с этим и не спорю. Я сказал, что проблема фрагментации есть. Хотя если куски не очень большие, менеджер кучи использует всякие пулы для объектов примерно одного размера, и сильной фрагментации не возникает. Вот когда mmap() вручную, там да, там можно намапить так, что потом память есть, а адресов нет.

>>1830828
В винде были Local/GlobalAlloc(), они возвращали хэндл, который программы и хранили вместо указателей. А для получения "реального" указателя требовалось сделать явный Lock(), который ставил блоку флаг, что на данные есть живые указатели. По Unlock() флаг убирался, и после этого система могла двигать блок как ей угодно безо всяких последствий (пользовательских указателей нет, внутренний указатель на блок в таблице хэндлов обновляла сама система). Сейчас апи остались (для совместимости), но ничего никуда уже не двигается, флаг стоит перманентно.
Аноним 15/10/20 Чтв 07:51:27 #18 №1830884 
.jpg
>>1830817 →
> лямбду калбэк поинтером в сишную библиотеку с выкидыванием прерывания
А в обычном си вообще есть ловушка исключений?
Аноним 15/10/20 Чтв 09:17:57 #19 №1830905 
>>1830884
> лямбду калбэк поинтером в сишную библиотеку
Все таки оказалось что полноценно с видимостью переменных внутри текущей функции - нельзя, то есть использовать тут лямбды и смысла тогда нет.
Аноним 15/10/20 Чтв 11:03:50 #20 №1830971 
>>1830857
Решение с Lock/Unlock мне нравится. В этом что-то есть.
Возьму на заметку.
И ещё аргумент Exclusive в функции Lock не помешает - если TRUE то критическую секцию включить, если FALSE то подсчёт ссылок.

Аноним 15/10/20 Чтв 13:49:49 #21 №1831151 
>>1830857
В PalmOS что то подобное тоже было.
sageАноним 15/10/20 Чтв 14:00:11 #22 №1831166 
>>1830686
>>1830828
>>1830813

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

Здесь серьёзные люди общаются.
Аноним 15/10/20 Чтв 14:01:41 #23 №1831168 
>>1831166
Не надо мне ничего сосать, я натурал
Аноним 15/10/20 Чтв 14:02:02 #24 №1831169 
>>1831166
>С-тред
>серьёзные люди
Аххахахаха.
Аноним 15/10/20 Чтв 14:22:44 #25 №1831191 
Лишний indirection, дебаф производительности.
Аноним 15/10/20 Чтв 16:44:28 #26 №1831331 
>>1830596
Это отчасти философский вопрос, или если угодно архитектурный - а что ты будешь делать, если переполнение произошло? Значит у тебя что то не то с данными, а значит надо было валидировать их заранее.

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

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

-101 + -10 > -128
-101 > -128 - -10 (== -128+10 == -118) не меньше, поэтому переполнения нет.
Аноним 15/10/20 Чтв 17:16:51 #27 №1831354 
>>1831331
> а что ты будешь делать, если переполнение произошло
Трапать или пересчитывать результат в бигнумах.
> логика простая.
Решение правильное, но громоздкое. Где битовые хаки?
Аноним 15/10/20 Чтв 17:52:17 #28 №1831375 
>>1831354
>или пересчитывать результат в бигнумах.
Так считай сразу в "бигнумах".
long long для кого придумали?
Аноним 15/10/20 Чтв 17:56:28 #29 №1831383 
>>1831354
> громоздкое. Где битовые хаки?
А сейчас же битовые хаки медленнее чем компилятор делает, не?
Аноним 15/10/20 Чтв 17:57:37 #30 №1831385 
>>1831354
И трапы по моему тоже не работают в современных компиляторах.
Аноним 15/10/20 Чтв 18:01:37 #31 №1831393 
>>1830596
Как вариант посмотреть в мануале проца наличие флагов для индикации переполенния при выволнении арифметических операций.
Аноним 15/10/20 Чтв 18:03:22 #32 №1831395 
>>1831393
Если это x86, то 11 бит регистра FLAGS
Аноним 15/10/20 Чтв 18:21:42 #33 №1831414 
>>1831393
Знаковое переполнение это UB (по умолчанию по крайней мере), не получится ли так, что ты выполняешь сложение, потом асмом проверяешь флаг, а компилятор выкинул сложение из за UB и ты глотаешь воздух?
Аноним 15/10/20 Чтв 18:29:47 #34 №1831422 
>>1831414
Если проверку делать через флаговый регистр, то и складывать лучше в асме, потому что тебе никто не гарантирует, что между выполнением арифместичекой операции в коде и проверкой в асме компилятор не вставит какую-нибудь операцию, которая сбросит этот флаг
Аноним 15/10/20 Чтв 19:58:58 #35 №1831498 
>>1831422
Ты не прав. Складывать лучше всего в бинарном коде.
Аноним 15/10/20 Чтв 20:15:43 #36 №1831505 
Я недавно делал вот это >>1829511 →

Сама задача про криптографию и электронную подпись.
Производительность при переписывания лоу-левел части кода (математика, бигнума) с асма на С упала в десять раз.
В некоторой степени (но не только) из-за невозможности нормально работать с флагами, переполнением, производить умножение uint64_t на uint64_t с получением 128-bit результата без интринсиков, етц.
Аноним 15/10/20 Чтв 20:40:58 #37 №1831519 
>>1831505
И?
Аноним 15/10/20 Чтв 20:58:13 #38 №1831526 
>>1831519
Да хуй знает.
Аноним 15/10/20 Чтв 21:14:24 #39 №1831530 
>>1831505
>при переписывания лоу-левел части кода (математика, бигнума) с асма на С упала в десять раз.

Цена за простоту кодирования и портабельность.
А зачем переписывал-то? Мог бы на каждую платформу заделать библиотеку на ассемблерне .
Аноним 15/10/20 Чтв 21:17:18 #40 №1831531 
>>1831530
>А зачем переписывал-то?
На будущее не все платформы известны. Специализированную реализацию сделал очень быстрой, попросили к ней рядом добавить не специализированную, хоть и в ущерб производительности.

>Мог бы на каждую платформу заделать библиотеку на ассемблерне
Дальше если требования будут, то буду приделывать, да
Аноним 15/10/20 Чтв 23:18:23 #41 №1831581 
>>1831393
>>1831395
Это тред си, вы дисквалифицированы.

Я в шоке: почему мне предлагают складывать long long? А если нет такого типа? А если надо обнаружить переполнение 64-битного сложения?
Аноним 15/10/20 Чтв 23:22:53 #42 №1831584 
>>1831505
У тебя время подписи строго постоянное, я надеюсь?
Аноним 15/10/20 Чтв 23:27:38 #43 №1831587 
>>1831581
>А если надо обнаружить переполнение 64-битного сложения?
Тебе тут уже ответов накидали на все случаи жизни, а ты всё горишь.
Аноним 15/10/20 Чтв 23:31:47 #44 №1831589 
Привет, я хочу программировать роботов. Нагуглил информацию, что в 2020 всех роботов, по для дронов и авто пишут на мисра си. Погуглил, что такое си - гавно мамонта из 1980 года. Неужели светлые умы не придумали ничего более прогрессивного за это время? Поясните плиз, почему этот язык актуален и останется ли.

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

Спасибо
Аноним 15/10/20 Чтв 23:55:27 #45 №1831596 
>>1831589
> почему
Это язык роботов, очевидно же.
Аноним 16/10/20 Птн 00:11:22 #46 №1831605 
>>1831596
А как же Раст и си плюс плюс?
Аноним 16/10/20 Птн 00:39:32 #47 №1831611 
>>1831605
Раст ещё слишком молодой.
Плюсы используются там, где они нужны.
Аноним 16/10/20 Птн 00:40:39 #48 №1831612 
>>1831584
Ага
Аноним 16/10/20 Птн 00:41:44 #49 №1831614 
>>1831589
А что в робототехнике появилось прогрессивного с 1980 года? Там же количество логики на уровне бота для кс1.6, написанного школьником 15 лет назад.
Аноним 16/10/20 Птн 00:45:42 #50 №1831615 
Снимок.PNG
Блять, я жопу устал зашивать. Учусь по МакГрату 4 издание, редактору в аду отдельный котел за такое непотребство уготовлен, 3 или 4 раз натыкаюсь на ошибки в примерах. Башка пухнет, прохожу указатели на функции, готовое задание такое:

https://pastebin.com/Qcc5QW5V

То ли я дебич конченый, то ли действительно пример корявый, но gcc выдает хуйню на пике, скобки по всякому ставил, что он от меня хочет?
Аноним 16/10/20 Птн 00:46:58 #51 №1831616 
>>1831614

Бешаные кекогерцы и, как следствие, возможности сложной обработки сигналов в рилтайме.
Аноним 16/10/20 Птн 00:48:27 #52 №1831617 
>>1831615
>int caller ((int(*function), (int), int b);
У тебя здесь 4 открывающих скобки и 3 закрывающих. Так не бывает.
Аноним 16/10/20 Птн 00:51:03 #53 №1831618 
>>1831616
Сервоприводам и прочей поебени кекогерцы не нужны. В этом печаль робототехники - пока остальная индустрия уже general AI проектирует, в робототехнике все те же шаговики, никаких тебе наномышц и йоба-композитов.
Поэтому даже если у тебя в роботе будет нвидиа джетсон с бегающей на ней нейронкой, для кручения двигателями все равно будет достаточно той абстракции, которую предлагает сишка
Аноним 16/10/20 Птн 00:52:56 #54 №1831620 
изображение.png
>>1831617
По идее так должно быть, но один хуй пишет это
Аноним 16/10/20 Птн 00:55:01 #55 №1831621 
>>1831620
Вряд ли. Пришли фотку книжки с этой строчкой
Аноним 16/10/20 Птн 00:55:03 #56 №1831622 
изображение.png
>>1831615
>>1831617

В учебнике так написано
Аноним 16/10/20 Птн 00:59:52 #57 №1831624 
>>1831622
Самая первая скобка лишняя
int caller (параметры)
int caller (параметр1, параметр2)
int caller (параметр1, int b)
параметр1=int(*function)(int) - указатель на функцию под именем function которая принимает int и возвращает int
Аноним 16/10/20 Птн 01:07:26 #58 №1831627 
изображение.png
>>1831624
Аноним 16/10/20 Птн 01:14:23 #59 №1831630 
>>1831627
https://ideone.com/HAGtVb
Та вроде все работает, хотя и код странный, будто прошлись сканером по книжке, потом image to text(чем собственно и проебали все скобки, кое-где и лишние запятые есть), а потом переводили.
Аноним 16/10/20 Птн 01:27:28 #60 №1831632 
изображение.png
изображение.png
>>1831615
Этак говнина заработала, но сука, я опять наткнулся на ошибку в примере знак разыменования не с той стороны поставлен. Улетел в стратосферу с этого учебника, полет нормальный.
Аноним 16/10/20 Птн 01:31:36 #61 №1831636 
>>1831630
Как конверится пдф я не вкурсе, но разве артефакты на скане не должны остаться? Во всяком случае в других учебниках ctrl+c/v не прокатывало, текст с лишним мусором вставлялся
Аноним 16/10/20 Птн 02:02:19 #62 №1831645 
>>1831632
Чем такой учебник, лучше курсы на Ютубе от Кумара из Раджастана.
Аноним 16/10/20 Птн 08:51:22 #63 №1831697 
>>1831645
>курсы на Ютубе от Кумара
наркоман штоле?
Аноним 16/10/20 Птн 10:36:53 #64 №1831719 
>>1831615
А зачем ты ставишь скобки в прототипах?
Аноним 16/10/20 Птн 10:40:23 #65 №1831723 
>>1831615
У тебя весь код по пизде написан. Учебник нормальный, просто ты не понимаешь, что делаешь.
Аноним 16/10/20 Птн 10:43:39 #66 №1831726 
>>1831723
>Учебник нормальный

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

Нахуй такие учебники и их авторов.
Аноним 16/10/20 Птн 10:46:18 #67 №1831729 
>>1831726
Возьми нормальный учебник блеадь. Зачем тебе перевод? Я понял бы если бы ты читал какой нибудь учебник написанный русским автором.
Аноним 16/10/20 Птн 11:24:20 #68 №1831758 
>>1831729
Двачую.
Тем более, все равно английский придется изучать. Особенно, если хочешь получить адекватную работу.
Аноним 16/10/20 Птн 11:45:06 #69 №1831770 
>>1831697
А почему бы и нет? Заодно человек сможет написать дефрагментатор стека для нужд треда после таких онлайн курсов.
Аноним 16/10/20 Птн 13:41:40 #70 №1831882 
>>1831729
>>1831758

i hope that I can write technical materials by myself.
That book is awful and must be burned.
Those, who promotes that book, must be burned too.
I beg your pardon for my English.
Аноним 16/10/20 Птн 19:14:22 #71 №1832206 
>>1831615
>>1831632
Ёпта, да ты так нихуя не выучишь дружок. В тех скринах, что ты скидываешь очевидные синтаксические ошибки - если ты не смог их заметить и поправить - то тему ты очевидно разобрал абы-как.
Аноним 16/10/20 Птн 20:20:13 #72 №1832251 
>>1832206
Синтаксические ошибки я пофиксил, с указателем в прототипе функции я затупил, и поставил лишнюю запятую. Но бля, как бывалый вкатывальщик (можете гнать ссаными тряпками, но учиться не возбраняется, НИ В ОДНОМ учебнике до этого, я не встречал таких грубых ошибок в пунктуации кода. Это же не задачник по багфиксам, тут базу по си дают, а тут эта срань.
Аноним 16/10/20 Птн 20:33:38 #73 №1832263 
>>1832251
Нахуй ты читаешь десятый учебник подряд? Прочитай K&R и пиздуй ебашить код
Аноним 16/10/20 Птн 21:46:36 #74 №1832309 
Если я использую free() на невыделенной malloc() памяти, будет ошибка?
Аноним 16/10/20 Птн 21:54:52 #75 №1832316 
>>1832309
man free
Аноним 16/10/20 Птн 22:04:04 #76 №1832329 
>>1832309
UB, зависит от реализации
Аноним 16/10/20 Птн 22:28:24 #77 №1832340 
>>1832309
free можно вызывать только с NULL или с тем указатем, который ранее был получен с помощью malloc (и только единожды).
Всё остальное — UB.
Аноним 16/10/20 Птн 22:59:05 #78 №1832351 
аноны, привет
дело такое: хочу перейти из сферы микроконтроллеров в что-нибудь более серьезное а ля системное программирование
Вопроса два: насколько это востребованно в Мск и какой бы проект в портфолио ебануть, чтобы заинтересовать работодателя?
Спасибо
Аноним 16/10/20 Птн 23:19:32 #79 №1832354 
>>1832351
> из сферы микроконтроллеров в что-нибудь более серьезное а ля системное программирование
Это не одно и то же?
Аноним 17/10/20 Суб 00:28:12 #80 №1832392 
>>1832309
Менеджер памяти хранит свои данные по отрицательному смещению от указателя. Если ты ему скормишь рандомное число, он по отрицательному смещению найдет мусор и корруптит тебе кучу, в лучшем случае программа упадет
Аноним 17/10/20 Суб 02:12:01 #81 №1832449 
>>1832392
Зависит от реализации. Причём не в ядре, а реализации malloc/free. В юниксах malloc изредка дёргаяет вызов sbrk().
Аноним 17/10/20 Суб 11:05:07 #82 №1832527 
iu.jpeg
Олды помогите, нужен совет. Вот я щас сижу на кодварсе, да? И решаю задачу, одну, две и одну не осиливаю. Пишу всё на бумаге как положено, анализирую сначала че делать. Но попадается сука сложная задача, я не могу решить. Тупо пропускать её на следующий раз? Может я чего то не понимаю просто? Там же эти алгоритмы блять. Математика сука. А я в математике даунич.
Хотя вот была задача про прайм числа, я её решил с нуля. Оказалось просто. С помощью википедий.
Аноним 17/10/20 Суб 12:13:49 #83 №1832557 
>>1832527
>Математика сука
Для пидоров. Решай нормальные задачи, приближенные к реальности.
Аноним 17/10/20 Суб 12:15:46 #84 №1832559 
>>1832557
Куда мне блять реальные если я не могу даже эти решить? Тем более, они прокачивают мозг и помогают понять язык. Проверено уже.
Аноним 17/10/20 Суб 12:21:58 #85 №1832562 
>>1832559
>Проверено уже.
Сотнями безработных маняматиков? Ну решай, хули.
Аноним 17/10/20 Суб 12:46:09 #86 №1832568 
>>1832562
Иди нахуй даун. Про работу никто не спрашивал.
Аноним 17/10/20 Суб 12:51:06 #87 №1832572 
>>1832568
Ну а хули тогда ноешь, ребенок?
Аноним 17/10/20 Суб 13:10:44 #88 №1832584 
>>1832527
Ты просто тупой, не переживай
Аноним 17/10/20 Суб 13:11:23 #89 №1832585 
>>1832572
Тебя уже один раз нахуй послали, еще раз хочешь?
Аноним 17/10/20 Суб 13:12:45 #90 №1832586 
>>1832584
Бля ну ты тоже тупой, но что это меняет?
Аноним 17/10/20 Суб 14:25:46 #91 №1832615 
>>1832559
>Тем более, они прокачивают мозг
Дебилу прокачивать мозг вредно. Просто дебил это еще ничего, а вот с прокачанным мозгом получается активный агрессивный дебил, от которого куча вреда сраньем, и ИТТ тред тому уже демонстрация.
Аноним 17/10/20 Суб 14:36:36 #92 №1832622 
>>1832527
Математика прям жёстко в Си тебе не потребуется. Необходимо понимание основ и умение разобраться в математических моделях с интернета и закодить их.
Если ты смог решить задачу с простыми числами и закодить по описанию решето Эратосфена, то не все так плохо.
Аноним 17/10/20 Суб 16:22:58 #93 №1832752 
>>1832351
Возьми L4/hazelnut и портируй на любимый МК.
Аноним 17/10/20 Суб 16:49:45 #94 №1832795 
>>1832752
>Возьми L4/hazelnut и портируй на любимый МК
А ты не прост.
Где глянуть доку на hazelnut?
Аноним 17/10/20 Суб 18:16:34 #95 №1832874 
>>1832752
>L4/hazelnut
Хуй будешь?
Аноним 17/10/20 Суб 18:30:20 #96 №1832882 
image.png
На выходе программа выводит ноль. В чем здесь ошибка? По условию программа должна выводить сумму кубов всех чисел, лежащих в промежутке [x ; y].
Аноним 17/10/20 Суб 18:33:32 #97 №1832888 
>>1832752
реально хороший кейс что ли? я думал, что сейчас буду советы а ля НАПИШИ СВОЙ ОС, НАПИШИ ВИРТУАЛ МАШИН и тд
Аноним 17/10/20 Суб 18:34:57 #98 №1832889 
>>1832882
> double pow(double x, double y);
Я думаю намек должен быть понят.
Аноним 17/10/20 Суб 18:45:38 #99 №1832900 
>>1832889
не очень если честно
Аноним 17/10/20 Суб 18:50:12 #100 №1832906 
>>1832900
pow результат возвращает, а на кладет в первый аргумент
Аноним 17/10/20 Суб 18:55:09 #101 №1832916 
>>1832906
я все равно не понял, pow должен значение i возвести в третью степень, потом это значение прибавить к z и все. Объясни пожалуйста, где я не прав и как это пофиксить
Аноним 17/10/20 Суб 19:36:12 #102 №1832937 
>>1832916
pow(i, 3); возведет в третью степень и отбросит результат, так как ты его никуда не запоминаешь
Надо запомнить результат в i обратно
не буду я ж все за тебя фиксить
Аноним 17/10/20 Суб 19:38:21 #103 №1832940 
image.png
>>1832937
все равно выводит ноль
Аноним 17/10/20 Суб 19:41:56 #104 №1832942 
>>1832940
Код не читай
@
Сразу отвечай


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

Лабораторку в универе делаешь?
Аноним 17/10/20 Суб 19:49:42 #105 №1832954 
>>1832942
да, лабораторную
может в тг пройдем и объяснишь это?
Аноним 17/10/20 Суб 19:51:04 #106 №1832956 
>>1832954

А ты няшный?
Аноним 17/10/20 Суб 19:54:05 #107 №1832957 
>>1832956
а ты хочешь не только лабораторную обсудить?
Аноним 17/10/20 Суб 19:54:49 #108 №1832959 
>>1832586
Поумнее тебя
Аноним 17/10/20 Суб 19:55:52 #109 №1832960 
>>1832954
Имел опыт помощи лабораторных, который сводился к таким подсказкам что не так. Закончилось плохо. Люди вроде и с мозгами нихуя не освоили, лучше сам изучай построчно свою программу и пытайся понять что ж не так, иначе результат будет хуёвыйне хочешь ведь быть неучем?
Аноним 18/10/20 Вск 00:43:21 #110 №1833199 
пацаны, реально ли к вам из питона перекатиться?
Аноним 18/10/20 Вск 00:51:50 #111 №1833204 
>>1833199
Ага
Аноним 18/10/20 Вск 00:54:21 #112 №1833205 
>>1833204
вот так просто? никакого тролина и тд?
а насколько тогда мои знания будут нужны?
Аноним 18/10/20 Вск 00:54:50 #113 №1833207 
>>1833205
А хуй знает. Смотря где ты будешь пытаться их применять.
Аноним 18/10/20 Вск 00:58:12 #114 №1833211 
>>1833207
не ну понятно что сам питон в системном нахуй не нужен
ну кроме как разве всяких сборочных скриптов
меня в уныние вгонять 0.1 вакансия по системному проганью
все так плохо или не там ищу? (я не про embedded)
Аноним 18/10/20 Вск 01:28:08 #115 №1833243 
>>1833211
Для того, чтоб найти работу, достаточно удачно воспользоваться одной вакансией.
Аноним 18/10/20 Вск 01:32:52 #116 №1833248 
>>1832615
Чел, когда тебе дебилы будут отвечать неправильно на вопрос, ты тоже будешь агрессировать. Я не спрашивал про работу или нужно ли мне этим заниматься, просто долбоебы начали отвечать не в тему на те вопросы которые не спрашивали, из-за чего делается вывод что это какие то долбоебы. Я знаю что мне нужно и как мне это делать, вопрос был в другом. Но мани начали плакать мол, ууу он дегенерат решает че то там не зоробатывает деньги но я этого как бэ ни знаю уууу он плахой.
>>1832622
Спасибо. Я кстати знаешь что заметил? Когда надо было закодить задачку с координатами, там понадобились знания икса и егрека. Тип расчитать расстояние которое нужно пройти за 10 минут и вернуться в точку из которой начал. Ты прав.
>>1832959
Хуй будешь?
Аноним 18/10/20 Вск 01:36:07 #117 №1833250 
>>1833211
> вакансия по системному проганью
>все так плохо или не там ищу?
Настоящий embedded, тот, который не Ардуино, это и есть системное программирование.

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

Но в целом в России это глухая тема. Если шаришь, то можешь перекатиться в Юго-Восточную Азию. В Китае и Корее тебя примут. Можно и в Японию, но сложнее. Это надо быть известным специалистом.
Аноним 18/10/20 Вск 01:36:26 #118 №1833251 
>>1833211
Вакансий много чел, много. В моем городе хоть и платят мало, но имеются. Судя по всему там немного то и надо работать за сотку.
Аноним 18/10/20 Вск 01:37:13 #119 №1833252 
>>1833250
Двачую про Китай, там он будет миллионером рмбишным.
Аноним 18/10/20 Вск 01:57:55 #120 №1833258 
Продолжаю искать: DO-178C.PDF (A и В тоже подойдут), DO-254.PDF, DO-385.PDF (пока некритично), ARINC-653.PDF.
Без смс и регистрации!
Аноним 18/10/20 Вск 02:18:52 #121 №1833263 
>>1833250
грустно, очень грустно
не очень хочу из рашки переезжать. А так видел похожие вакансии только в Яндексе, Касперском и (внезапно для меня) Баду
Аноним 18/10/20 Вск 02:21:18 #122 №1833264 
>>1833263
На апворке можешь всякие задания на патчинг ведра линукса поискать
Аноним 18/10/20 Вск 02:22:08 #123 №1833265 
>>1833264
серьезно? Апворк и системщина? я думал там только сайты сраные
Аноним 18/10/20 Вск 03:40:00 #124 №1833290 
>>1832622
>решето Эратосфена
Очко Тьюринга пусть закодит
Аноним 18/10/20 Вск 04:19:06 #125 №1833294 
>>1833265
И не такое аутсорсят
Аноним 18/10/20 Вск 04:25:18 #126 №1833295 
>>1833290
Отличная идея. А где можно инфу почитать?
Аноним 18/10/20 Вск 05:42:46 #127 №1833309 
>>1833290
И пропустить через 3 анальные корзины истины Сократа.
Аноним 18/10/20 Вск 05:45:05 #128 №1833310 
Помогите всунуть хуй в допу. У меня не получаеца.
Аноним 18/10/20 Вск 07:27:58 #129 №1833330 
>>1832557
Анон прости меня за грубость. Я шизик просто у меня нервы иногда сдают.
Аноним 18/10/20 Вск 19:10:26 #130 №1833715 
Пацаны, хочу вот начать контрибьютить в линукс кернел, но понимаю, что уровень пока не дотягивает
есть ли какие-нибудь похожие опен сорс системы, которые менее популярны и обладают меньшим комьюнити разрабов, но в которые ниже порог входа? Конечно круто, если это также системщина, но мб есть что-то иное интересное, где также было бы круто поучаствовать
Спасибо
Аноним 18/10/20 Вск 20:40:50 #131 №1833887 
>>1833715
>но в которые ниже порог входа?
Разве что Minix. Но не факт что Таненбаум принимает патчи.
Аноним 18/10/20 Вск 21:18:57 #132 №1833938 
>>1830513 (OP)
Соси писос
Аноним 18/10/20 Вск 21:37:40 #133 №1833957 
>>1833715
Хуй будешь?
Все б хотели такой проект. Но их мало. Ищи по гитхабу рандомную ос или ядро на си.
И ссы на ебало любителям микроядер L4, они выблядки говноедских хуесосок.
Аноним 18/10/20 Вск 21:40:38 #134 №1833960 
Сыро тут как-то. Плесень вот расцвела -> >>1833957
Аноним 18/10/20 Вск 22:07:44 #135 №1833986 
>>1833957
бля иди нахуй вообще, шизик агрессивный
Аноним 18/10/20 Вск 22:11:21 #136 №1833987 
>>1833957
Чем тебе L4 не угодила, болезный?
Аноним 18/10/20 Вск 22:30:41 #137 №1833992 
>>1833960
Мать твоя с пизды расцвела
>>1833986
Сам катись впизду
>>1833987
Говно без задач
sageАноним 18/10/20 Вск 23:01:37 #138 №1834006 
Очередные непонятки
https://pastebin.com/FMV0xt8b

Компилируется без проблем, но при любом раскладе флаг вернет 1 , что за хрень
Аноним 18/10/20 Вск 23:02:35 #139 №1834008 
>>1833938
Почему бафомёт на маскоте ГНУ?
Аноним 18/10/20 Вск 23:21:36 #140 №1834017 
>>1834006
isdigit() return Value
A value different from zero (i.e., true) if indeed c is a decimal digit. Zero (i.e., false) otherwise.
Аноним 18/10/20 Вск 23:55:54 #141 №1834048 
>>1834006
for(i; i<6; i++) => for(i=0; i<6; i++)
Аноним 19/10/20 Пнд 00:25:49 #142 №1834062 
Первый раз писал на C, считай все выходные просидел над этим.
Прошу оценить и поставить звездочку указать на проблемы:
https://github.com/texhnolyzze/buddy
Думаю без CLion-а я бы еще долго над этим просидел (пиздец сколько до меня допирало, что void x -- это указатель на массив указателей).
Блин, после веба это прям глоток свежего воздуха лол.
Короче, хочу вкатиться в сишку, так как веб заебал и бизнес-логика заебала. Хочу программировать микроволновки и газовые котлы. Чтоб было ощущение, что занимаешься чем - то значимым. В общем нужен совет как найти работу C-программером, какой проект сделать и тд. Спасибо за внимание
Аноним 19/10/20 Пнд 00:27:13 #143 №1834064 
>>1834062
Блин, звездочки пропали, имелось ввиду void ∗∗x
Аноним 19/10/20 Пнд 00:39:34 #144 №1834071 
>>1834062
положи в репозиторий README.MD
и исходник сравнения скорости твоего менеджера памяти с либсишным.

Аноним 19/10/20 Пнд 01:43:28 #145 №1834086 
поцоны, на мой вопрос только божм агрессивный ответил какой-то
реквестую вопрос еще раз, сорян
Хочу вот начать контрибьютить в линукс кернел, но понимаю, что уровень пока не дотягивает
есть ли какие-нибудь похожие опен сорс системы, которые менее популярны и обладают меньшим комьюнити разрабов, но в которые ниже порог входа? Конечно круто, если это также системщина, но мб есть что-то иное интересное, где также было бы круто поучаствовать
Спасибо
Аноним 19/10/20 Пнд 01:45:11 #146 №1834088 
>>1834062
бля респект за переход
расскажи немного плз - у меня просто такая же тема: прогал на си - ушел в геймдев - хочу обратно,но ссу, что не возьмут
на чем писал? по чем осваиваешь си? какие планы?
Аноним 19/10/20 Пнд 01:52:33 #147 №1834090 
>>1834086
Хуй будешь?
И я б хотел такой проект, если найдешь - кидай сюда, всем /pr/ будем контрибьютить.
Главное чтоб не микроядро.
Аноним 19/10/20 Пнд 01:55:38 #148 №1834091 
>>1834090
если ты тот же хуесос, то со второй попытки ответ несколько лучше
Аноним 19/10/20 Пнд 01:58:36 #149 №1834092 
>>1834062
Интересная техника аллокатора.
Было бы здорово, если бы он был сделан lockfree для МТ приложений, не использовать calloccalloc хорош, просто было бы круто не юзать вообще левые аллокаторы памяти, ну и сделать свои malloc/realloc/calloc/free.
Ну и тест производительности с glibcшным аллокатором было бы интересно глянуть.

Подобный подход buddy memory allocator использует jemalloc, он lockfreeв дебри не лез, но работает будто без мьютексов написан и умеет по аренам память выделять, очень быстрый, дефолтный аллокатор в freebsd. Прикольно было бы и с ним сравнить.
Аноним 19/10/20 Пнд 02:02:06 #150 №1834093 
>>1834091
А я уже другой хуесос.
Хуй будешь? Будешь у меня сосать? А я тебе за это крутой проект скину. На си. С микроядром и windows/visual studio.
Аноним 19/10/20 Пнд 02:39:03 #151 №1834102 
>>1834086
ReactOS
Аноним 19/10/20 Пнд 02:48:31 #152 №1834107 
>>1834102
Не пали гондоту быдлу.
Аноним 19/10/20 Пнд 03:02:52 #153 №1834111 
>>1834102
Давно оно проще Linux?
Аноним 19/10/20 Пнд 06:03:32 #154 №1834126 
Есть массив, из него нужно взять два меньших числа и вернуть их сумму как результат.
Есть идеи как можно это сделать не используя сортинг? А ли к черту?
Аноним 19/10/20 Пнд 10:15:23 #155 №1834251 
>>1834126
Сделай за прохода для начала. Первый проход это поиск наименьшего. Второй проход - поиск наименьше, которое больше заданного числа. На этом этапе ты увидишь как свернуть поиск в один цикл.
Аноним 19/10/20 Пнд 13:22:22 #156 №1834456 
>>1834251
Из практической точки зрения сортингом будет лучше думаю, но ограничить при этом до двух итераций функцию сорта. Ибо лучший Варик с одним циклом это зачизить два начальных значения до максимальных по типу возврата и потом уже сравнивать, что не есть канон. Но это тем не менее хороший пазл.
Аноним 19/10/20 Пнд 14:10:28 #157 №1834485 
>>1834126
if(length == 2) return arr[0] + arr[1];

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

for(int i = 2; i < length; ++i) {
if(arr < min_a) {
min_b = min_a;
min_a = arr;
}
return min_a + min_b;
}
Аноним 19/10/20 Пнд 14:11:06 #158 №1834486 
>>1834485
Проебался со скобками, return min_a + min_b на строку ниже
Аноним 19/10/20 Пнд 20:26:17 #159 №1834841 
>>1834093
о долбаебик прилетел
ты как? уже все хуи пересосал? хуесосик
Аноним 19/10/20 Пнд 21:04:43 #160 №1834852 
https://pastebin.com/sMagbAPd
И почему не бабахает?
Аноним 19/10/20 Пнд 21:24:14 #161 №1834860 
>>1834852
проверь что возвращает raise(babah);

The signals SIGKILL and SIGSTOP cannot be caught or ignored.

RETURN VALUE
signal() returns the previous value of the signal handler, or SIG_ERR
on error. In the event of an error, errno is set to indicate the
cause.
ERRORS
EINVAL signum is invalid.
Аноним 20/10/20 Втр 00:02:09 #162 №1834972 DELETED
>>1834841
Мать твою выебал. Она не жаловалась. Часы с прикроватной тумбочки верни, забыл их когда собирался.
Аноним 20/10/20 Втр 00:11:48 #163 №1834983 
>>1834852
https://man7.org/linux/man-pages/man7/signal.7.html
Судя по мануалу по 0 индексу нету никакого сигнала. И отловить соответственно его никак нельзя судя по всему. Вполне вероятно на других posix системах так же
Аноним 20/10/20 Втр 03:06:03 #164 №1835057 
>>1834486
Они чан, а что за функции max() и min()?
Аноним 20/10/20 Втр 03:48:00 #165 №1835059 
>>1835057
Хочешь функции, хочешь макросы. Выбирай чего душа желает.
Аноним 20/10/20 Втр 10:13:43 #166 №1835143 
>>1835059
А как они работают? Берут максимальное и минимальное число из массива?
Аноним 20/10/20 Втр 10:51:54 #167 №1835153 
>>1835143
Из двух аргументов.
Аноним 20/10/20 Втр 13:45:03 #168 №1835267 
>>1835143
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)

Аноним 20/10/20 Втр 14:03:09 #169 №1835288 
>>1835267
Бля бро рейдж массива может достигать 0 - INT_MAX
Но ты попал в точку на счет INT_MAX.
Аноним 20/10/20 Втр 15:07:57 #170 №1835353 
>>1835143
Максимальное и минимальное из аргументов которые лежат на стеке.
Аноним 20/10/20 Втр 15:28:46 #171 №1835376 
>>1835288
Больно читать твои вопросы. Потому что нет понимания у тебя.
Макросы min и max это просто подстановки проверки на меньшее или большее число. Они сравнивают два простых значния.

Иди наверное в тред С++, там есть шаблоны min и max для массивов. В Си тебе придётся писать цикл, пробегающий по всем элементам масссива и сравниваюший каждый элемент с найденным наименьшим.
Аноним 20/10/20 Втр 15:53:35 #172 №1835406 
>>1835376
> Си тебе придётся писать цикл, пробегающий по всем элементам масссива и сравниваюший каждый элемент с найденным наименьшим.
Я об этом изначально подумал. А макросыч не понимаю всё равно, не дорос. Ну чуть-чуть, т.е это как шорткат, чтобы постоянно не писать if else?
Аноним 20/10/20 Втр 16:07:07 #173 №1835416 
>>1835406
Макросы обрабатываются препроцессором и в компилятор попадают уже в виде Си кода. Во многих случая это даёт оптимизацию на этапе препроцессора. И повышает читабельность кода.

В макросы можно помещать разные вещи, не только проверку.
Аноним 20/10/20 Втр 16:20:49 #174 №1835441 
>>1835416
Я еще до макросов не дошел. Я рак. По Прате на 12 главе малоки ток начал изучать.
Аноним 20/10/20 Втр 21:09:47 #175 №1835675 
>>1835353
> лежат на на стеке
Чак Мур, ты жив ещё?
Аноним 20/10/20 Втр 23:36:52 #176 №1835814 
>>1835353
Фрагментировано?
Аноним 21/10/20 Срд 00:07:30 #177 №1835827 
>>1835675
Жив.
>>1835814
Да, надо бы отдефрагментировать стек.
Вообще считаю операционные системы без дефрагментации стека неполноценными. Они убивают производительность игр на корню отсутствием этой важной функциональности.
Аноним 21/10/20 Срд 01:13:25 #178 №1835851 
>>1835827
Сука, как же я ору с дефрагментации стека. Каждый раз вижу и не могу сдержать ржекич.
Аноним 21/10/20 Срд 01:55:02 #179 №1835855 
>>1835851
А что смешного? Вполне серьезная идея. Возьму и напишу для ядра Линукс патч с дефрагментацией стека. Буду под виртуальными страницами стека физические дефрагментировать.
Аноним 21/10/20 Срд 09:06:01 #180 №1835941 
Короче, стак это место куда программа складывает автоматические классы хранилища, да? Входим в блок функций, или лупа, создаем авто переменную и она складывается на стак, потом выходим из блока и эта переменная исчезает, если мы не объявим её статической?

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

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

Прата нормально объяснит далее по книжке, или покурить надо по теме материала?
Аноним 21/10/20 Срд 09:09:06 #181 №1835944 
>>1835941
До этого места не дошёл, но думаю что то типа зависит от конкретной реализации.
Аноним 21/10/20 Срд 09:12:39 #182 №1835945 
>>1835941
> Там нет порядка
Для тебя нет. Адреса получаются случайно.
Аноним 21/10/20 Срд 10:04:18 #183 №1835955 
>>1835945
>случайно
Как решит менеджер памяти в malloc.c. Он может быть и собственноручно написанным.
Аноним 21/10/20 Срд 11:02:57 #184 №1835969 
>>1835955
Не подскажешь, почему называется кучкой? Потому что адреса кучкуются? Или как? Я почитаю по теме, но любая помощь будет драгоценна. Плиз
Аноним 21/10/20 Срд 12:33:28 #185 №1836024 
>>1835941
> Короче, стак это место куда программа складывает автоматические классы хранилища, да? Входим в блок функций, или лупа, создаем авто переменную и она складывается на стак, потом выходим из блока и эта переменная исчезает, если мы не объявим её статической?
Если судить про язык Си, то на всё воля божья

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

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

> Прата нормально объяснит далее по книжке, или покурить надо по теме материала?
Да, но не может быть неправ, ведь на всё воля божья
Аноним 21/10/20 Срд 21:41:26 #186 №1836431 
>>1835855
Нет, ты должен дефрагментировать стек как он есть. Например, бесконечно рекурсирующая пара функций должна работать в конечном объеме. Эту задачу уже решили для Чикена и нормальных Прологов, так что вперёд.
dead per dead 21/10/20 Срд 22:22:10 #187 №1836467 
Подымите руку, кто способен сходу, не заглядывая в доку, написать КОД, отличающий snan от qnan?
Аноним 21/10/20 Срд 22:30:06 #188 №1836472 
>>1836467
Пришлось погуглить термины.
Аноним 21/10/20 Срд 22:42:40 #189 №1836480 
>>1836431

чёт я тебя не понимаю.
в схеме(в чикене, например) бесконечная рекурсия решается оч просто. У тебя каждый вызов функции создаёт новый энвайронмент (сопоставление символов реальным объектам), фика в том, что энвайронмент тоже нормальный объект (только тебе недоступный), потому. он может быть спокойно сожран обычным сборщиком суора. такие дела. никакой специальной дефрагментации стека не нужно.
Аноним 21/10/20 Срд 22:47:38 #190 №1836484 
>>1836480
Ты хочешь сказать, их сборщик мусора не дефрагментирует стек?
А не слишком ли много ты на себя берешь? Мертвые объекты - дырки на стеке. Между ними живые фрагменты.
Аноним 21/10/20 Срд 22:49:31 #191 №1836485 
>>1834062
Ох, двачую, анон.
Формошлеплю, а хочу ковырять железяки на Си. Ну, я рад, что не один такой, хех :)
Аноним 21/10/20 Срд 22:51:47 #192 №1836487 
уважаемые аноны, дайте плиз инфу где взять "Learn C the Hard Way". Не могу найти
с меня как обычно <3
Аноним 21/10/20 Срд 23:04:30 #193 №1836502 
>>1836487
Ты же понимаешь, что такая книжка - это не трудный путь, а очередное инфоцыганство? Что мешает тебе поставить Бсд с исходниками и ПОГРУЗИТЬСЯ В ЯЗЫК С ГОЛОВОЙ?
Аноним 22/10/20 Чтв 04:16:57 #194 №1836608 
>>1836431
Я кстати дошел до фрагментаций, но не могу её понять щас.
>>1836487
libgen.is
>>1836502
Ой да ну
>>1834062
Я щас параллельно изучаю Си с Пыхой. У меня нет денег на существование, а Си вакансию без образования я врятли найду, хотя попытаюсь, в треде отпишусь об успехах, до чего доведёт самообразование по Прате, Кернигану и куче книг по Си, алсо плюсах.
Думаю фрилансить делая людям форумы, сайты, магазины и параллельно заниматься тем, что люблю больше всего, Сишечкой.
Аноним 22/10/20 Чтв 04:55:37 #195 №1836611 
Где вы кодите? Виртуалка или прям в системе?
sageАноним 22/10/20 Чтв 06:11:57 #196 №1836619 
>>1836467
Ну я. А еще я знаю про pseudo-infinity и pseudo-NaN, которым не нашлось места в IEEE-754, но которые однажды мелькали в этих ваших компьютерах, и из-за этого кое-где их все еще приходится тащить.

>>1836611
Дай угадаю, ты воспринял всерьез шуточки про форматирование диска посредством UB в Си?
Аноним 22/10/20 Чтв 10:25:27 #197 №1836678 
>>1835969

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

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

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

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

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

Второй способ (постоянное общение с носителями языкаи и перестройка внутреннего диалога на иностранный язык) более действенный - но требует заводить трактор и съебывать.
Аноним 22/10/20 Чтв 10:26:48 #198 №1836679 
>>1836619
Типа того. Вроде компилятор защитит меня от этого, верно? И утечки памяти не опасны на нубном уровне да? Я справшиваю в общем, я рак и мне нужно знать, смогу ли я случайно направив не туда указатель, или использовать малок, сломать систему?
>>1836678
>Потому что так перевели слово heap
Это я перевел. Мог бы и догадаться. Алсо можешь идти нахуй я понял что ты несущественную хуйню несешь.
Аноним 22/10/20 Чтв 10:30:34 #199 №1836684 
>>1835969
Потому что данные лежат неупорядоченные как куча говна, в отличие от статически размеченной памяти и стэка.
Аноним 22/10/20 Чтв 10:34:58 #200 №1836687 
>>1836684
>Потому что данные лежат неупорядоченные как куча говна
Лучший, лучшее объяснение.
Аноним 22/10/20 Чтв 10:37:03 #201 №1836689 
>>1836484

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

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

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

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

И вот по причине этой промашки тебе в место красивой, пусть даже жирной, демагогии придется начинать демедж-контрол путем врубания тупого гондоти.
Аноним 22/10/20 Чтв 10:43:31 #202 №1836694 
>>1836684
Это понятно, а от кого сам термин пошёл. кто первый его употребил.
Аноним 22/10/20 Чтв 10:45:24 #203 №1836696 
>>1836689
>Дырок на стеке не бывает по определению
Двачую. Я сначала подумал, что он имеет ввиду динамическую память.
Аноним 22/10/20 Чтв 10:45:35 #204 №1836697 
>>1836608
У тебя Прата нормальный скан? Счас до 6ой главы дошёл глаза потекли, так херово видно.
Аноним 22/10/20 Чтв 10:51:06 #205 №1836708 
pdf.png
>>1836697
Вот такой
Аноним 22/10/20 Чтв 11:10:00 #206 №1836719 
>>1836696

Это залетный мамкин тралль из /gd/, там он в треде движкосрачей урину ловил, вот теперь и сюда перебрался.
Аноним 22/10/20 Чтв 11:15:24 #207 №1836722 
>>1836689
>Дырок на стеке не бывает по определению,
Смотря что считать дыркой.
Например, если выделить достаточно большой массив на стеке и ни разу к нему не обратиться. Ни чтением, ни записью В таком случае несколько страниц памяти не будут замаплены в стек.
При условии что компилятор не оптимизирует неиспользуемый массив.

Ну это так, к слову. На самом деле я не понимаю что там надо оптимизировать и отношусь к этим предложениям как троллингу.
Аноним 22/10/20 Чтв 11:29:57 #208 №1836727 
>>1836722

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

>По улице идет старенькая бабушка (Б), рядом проходит пионер (П), подтянутый, бодрый, с барабаном. Бабушка громко чихает.
>П: - Будьте здоровы!
>Б: - Да, внучек, я здорова. А чихаю потому, что табачек нюхаю.
>П: - По мне, бабушка, Вы хоть хуй нюхайте, а пионер должен быть вежливым!


А никого не ебет что ты его не используешь - раз ты его выделил значит обязан лежать по условию контракта этой структуры данных, в противном случае контракт будет нарушен и стек перестанет считаться стеком.
Аноним 22/10/20 Чтв 11:37:35 #209 №1836734 
>>1836727

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

https://en.wikipedia.org/wiki/Intel_8237

Аноним 22/10/20 Чтв 11:41:45 #210 №1836735 
>>1836734

Причем проблема эта действительно есть, именно из-за неё в AMD64 и позже в ARM появилась концепция больших страниц в 1GB, как раз для нивелирования фрагментации в тех случаях, когда традиционные мелкие странички засирали память.
Аноним 22/10/20 Чтв 12:16:59 #211 №1836768 
Как вы профи пишете вообще код на работе? Если для меня простые задачки это брейнфак, то как вы пишете кучу кода я не понимаю.
Аноним 22/10/20 Чтв 12:30:13 #212 №1836789 
>>1836768

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

А задачки нужны что бы искусственно раздувать конкурс для кандидатов.
Аноним 22/10/20 Чтв 12:59:54 #213 №1836814 
>>1836789
Ну понятно что олимпиады ниочем. Но это тоже самое что и знать математику, она не нужна вообще, как Линус Торвальдс говорит, но бэкграунд который она дает, развивает мышление, это имеет пользу.
Аноним 22/10/20 Чтв 13:26:35 #214 №1836843 
>>1836814
Математика не нужна ровно до тех пор когда она нужна.
Потом резко начинаются изобретения неэффективных велосипедов.
То же самое и с паттернами программирования и алгоритмами тащемта.
Аноним 22/10/20 Чтв 13:28:03 #215 №1836846 
>>1836689
Толсто. Дефрагментатор стека - пользователь юнити.
Аноним 22/10/20 Чтв 13:38:08 #216 №1836862 
>>1836843
То есть ты за программные задачки для развития мышления?
Аноним 22/10/20 Чтв 13:44:24 #217 №1836874 
>>1836484
Не дырки, а отверстия.
Аноним 22/10/20 Чтв 13:47:54 #218 №1836877 
>>1836846

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

Айда к нам в тред, кста, там у нас сейчас гондотя интерполятор, графики интерполирует, доказывает что дроуколы ничего не стоят.
Аноним 22/10/20 Чтв 16:04:10 #219 №1836989 
>>1836679
>случайно направив не туда указатель, или использовать малок, сломать систему?
Нет. Но теоретически, если компилятор будет таким образом интрпретировать UB, то это не будет противоречить стандарту.
Аноним 22/10/20 Чтв 16:37:07 #220 №1837016 
>>1836877
Можно поныть?
Хочу вкатиться к вам, но думаю что шансы у меня почти нулевые, а раньше были амбиции игры создавать, даже идеи были. А щас не знаю, если буду создавать игры это сложно. Пытался в сурсе ковыряться но плюсов не знаю и ООП. А на их изучение уйдет наверное еще год минимум. А деньги зарабатывать надо, планирую в Laravel вкатываться и пыху.
Аноним 22/10/20 Чтв 16:51:31 #221 №1837043 
>>1837016

У нас никаких игорь писать не нужно, у нас можно хвастаться вымышленными играми, можнотак же играть за годотю, тогда высасываешь из пальца аргументы, а когда всем тредом обоссут, то говоришь что это был не годотя а его подражатель.
sageАноним 22/10/20 Чтв 17:51:36 #222 №1837100 
>>1836679
> И утечки памяти не опасны на нубном уровне да
Да. Вот будешь драйвера писать - там опасно, спектр эффектов очень широкий, и бсодами не ограничивается. А в юзермоде ничего не сломаешь. Ну разве что, если ты написал программу для удаления да или просто записи файлов, и у тебя UB, ты можешь случайно удалить/перезаписать не тот файл, с каким-нибудь похожим названием. Но ничего нелогичного не произойдет.
Аноним 22/10/20 Чтв 18:16:53 #223 №1837123 
>>1837016
игры на чистом Си? нахуя?
Аноним 22/10/20 Чтв 20:26:16 #224 №1837211 
>>1837123
>игры на чистом Си? нахуя?

Действительно.

https://www.youtube.com/watch?v=1adapsraGTY

https://www.youtube.com/watch?v=T9Yb4-mNjvM&list=PL_zCHIGF5VNPmRCd7LZu5MqXdrDXzoRHh
Аноним 22/10/20 Чтв 21:28:55 #225 №1837238 
>>1836502
я хочу что бы мне объяснили как для дебила ^^
Аноним 22/10/20 Чтв 22:27:11 #226 №1837271 
>>1837211
ну и чего ты мне этим говно мамонта тычишь? не нашел игр на ассемблере?
Аноним 22/10/20 Чтв 22:29:15 #227 №1837274 
https://kunaifusu.livejournal.com/551392.html

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

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

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

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

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

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

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

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

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

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

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

... Как бы мы не смеялись над его кодом и "продвинутыми" алгоритмами ...
sagedead per dead 22/10/20 Чтв 22:31:52 #228 №1837276 
Опять унылый форс антикармака.
Аноним 23/10/20 Птн 01:29:39 #229 №1837397 
>>1837274
микрочелика обоссали в С++ треде, он пошел в С тред срать. Необучаемый.
Аноним 23/10/20 Птн 02:43:03 #230 №1837421 
>>1837211
Пиши на Zig. Быстро, модно, молодежно.
Аноним 23/10/20 Птн 03:03:16 #231 №1837426 
>>1837421
Весь рот в говне от вашего Zig. C код глазу всяко приятнее чем это ваше нинужно.
Аноним 23/10/20 Птн 03:28:52 #232 №1837434 
1546522560879.png
>>1837426
>БА-БАХ
Да не, Zig вполне себе приятный.
Аноним 23/10/20 Птн 04:03:53 #233 №1837438 
>>1837123
Да необязательно на Си, можно и на плюсах. Просто на их изучение уйдет уйма времени. Хотя интересно было бы. У меня лежит пратовская книжка по плюсам, там под 1к страниц.
Аноним 23/10/20 Птн 04:49:47 #234 №1837446 
>>1837434
Не выдавай свои маняфантазии за реальность.
Был бы Zig приятным и самое главное полезным в реальной жизни - был бы у него отдельный тред в /pr/, и думаю комьюнити побольше чем 1.5 дебила.
Аноним 23/10/20 Птн 04:50:32 #235 №1837447 
>>1837438
Самое страшное в плюсах это libstdc++. Остальное реально за 21 день выучить. Кроме шаблонов
Аноним 23/10/20 Птн 07:02:53 #236 №1837470 
>>1837447
Т.е если я на сишке писать умею, то с плюсами тогда вообще проблем не будет и я быстро схвачу?
Аноним 23/10/20 Птн 08:43:41 #237 №1837486 
>>1837426
То есть ты не можешь оценить няшность синтаксиса сам, без чьего то мнения, если кто то не создал тредик на дваче?
Аноним 23/10/20 Птн 09:41:41 #238 №1837505 
>>1837470
Постепенно схватишь.
Концепция классов довольно проста. Когда осознаешь, всё на классах будешь делать, даже там где это ненужно и вредно. Затем придёт понимание когда они нужны, а когда нет. И тогда постепенно остальное изучишь.
Аноним 23/10/20 Птн 11:23:08 #239 №1837559 
Пачаны, как включать статические либы в бинарник при компиляции?
Дело в том что у меня программа на Qt а библиотеки сторонние на си, собранные их стандартными опциями компиляции. Хочу чтоб просто при компиляции qt/qmake их всасывало в бинарник программы но как то не совсем понимаю как это сделать

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

Это я так понимаю оно просто внешние библиотеки линкует, естественно статические так не пашут.
Помохите уже въебал с горя нахуй
Аноним 23/10/20 Птн 13:20:09 #240 №1837621 
>>1837438
нет ну плюсы это другое дело, там и привет от анриал и пр
но чистые Си в играх - это уже архаизьмь
Аноним 23/10/20 Птн 14:45:51 #241 №1837681 
>>1837559
>статические либы в бинарник при компиляции
cc -o yourprog yourprog.c libstatic.a
cc -o yourprog yourprog.c -lstatic

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

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

Аноним 23/10/20 Птн 14:47:00 #242 №1837684 
>>1837274

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

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

В итоге консоли, как это и ожидалось, сели на бутылку своих говноплатшетных процессоров, растеряв весь свой потанцевал.

Аноним 23/10/20 Птн 15:24:29 #243 №1837721 
В Unreal, например, с самого начала заботились о качестве кодовой базы. Можно посмотреть совсем старые версии, в которых еще даже нет Unreal Script, но в которых видно, что соблюдается строгая дисциплина писать чистый и логичный код, пусть и в несколько своеобразном стиле, не совсем по-моему уместном в игровом коде.

http://talonbrave.info/files/software/games/unreal/source/
Аноним 23/10/20 Птн 15:32:12 #244 №1837727 
>>1837684
>консоли сели на бутылку своих говноплатшетных процессоров
Почему не на бутылку говнопланшетных видеочипов? Ведь именно на неё приставки и сели, а ЦПУ и правда не нужен, имеющегося ноутбучного хватит.
Аноним 23/10/20 Птн 16:02:09 #245 №1837754 
>>1837684

Ядро Jaguar на 1.6 ГГц в консолях - это что-то примерно как Athlon 64 3200+ (2.0 ГГц) из 2005, который у меня был? Ну и что принципиально изменилось в игровой логике со времен Far Cry 1 (раз уж берем условный "опенворлд"), который на нем летал в 100+ ФПС? Да, конечно же, объектов больше, но и ядер теперь шесть (из доступных). Вон, есть тесты двухсокетного Pentium III в Crysis 1 на Youtube. Там было что-то вроде 15-30 ФПС.
Аноним 23/10/20 Птн 17:07:18 #246 №1837805 
>>1837754
> Ядро Jaguar на 1.6 ГГц в консолях - это что-то примерно как Athlon 64 3200+ (2.0 ГГц) из 2005, который у меня был?
Нет. Jaguar это что-то типо атлонов А4/А6 годов 2013-2014.
> Ну и что принципиально изменилось в игровой логике со времен Far Cry 1 (раз уж берем условный "опенворлд"), который на нем летал в 100+ ФПС?
Чем больше объектов тебе надо рендерить - тем больше тебе надо в очереди видеоускорителя напихать задач для карточки, плюс симуляция становится сложнее, систем симуляции в игре больше.
>Да, конечно же, объектов больше, но и ядер теперь шесть (из доступных). Вон, есть тесты двухсокетного Pentium III в Crysis 1 на Youtube. Там было что-то вроде 15-30 ФПС.
Смешно, но Интел на базе архитектуры Pentium III делала архитектуру Core 2(пентиумы 4 дропнули отчасти). Она таки у них была пиздецки удачной и с большим запасом на вырост, и буст производительности.
Аноним 23/10/20 Птн 20:05:17 #247 №1837980 
Можешь посмотреть, кстати, Heavenly Sword. Есть полный слив кода, с исходниками для PS3, на гитхабе, лол. Я не говорю, что там все замечательно, но это пример того, как нормальные игры писались не так давно.
Аноним 23/10/20 Птн 20:26:23 #248 №1838007 
В вин32 завезли файберы?
dead per dead 23/10/20 Птн 22:15:22 #249 №1838100 
Но файберы можно написать за день, если это тебе нужно. Другое дело, что это вряд ли нужно, когда есть ПОТОКИ.
Аноним 24/10/20 Суб 00:42:14 #250 №1838182 
бля анонсы, у вас не было такого, что вы уже пиздец ебать как выгорели и уже вообще не видите смысла в работе? я уже мелкие таски на час-два по два дня выполняю, ебать вообще
спрашиваю именно в этом треде, тк я тут за все время одного-двух шизов увидел, остальные адекватные ребята
Аноним 24/10/20 Суб 00:46:52 #251 №1838185 
>>1838182

Рекомендую попросить отпуск. Лечится только так. В крайнем случае, попробуй сменить рабочее место, имею в виду передвинуть мебель в другое место или поменяться с кем-то, если в офисе сидишь. Это поможет на 2-3 дня.
Аноним 24/10/20 Суб 00:49:59 #252 №1838187 
>>1838007
угу
четверть века назад
Аноним 24/10/20 Суб 00:55:05 #253 №1838193 
>>1837805
третий пень и core2?
мне кажеться, ты путаешь
Аноним 24/10/20 Суб 01:30:25 #254 №1838210 
>>1838193
Ничего не путаю. Pentium 4 поняли что хуйня с кукурузными частотами, и новые камни в 2006 делались на базе более старой архитектуры, которая использовалась в мобильных процессорах. Из пня 4 насколько знаю забрали только самые удачные идеи, одна из них это HT.
Архитектура к слову до сих пор усовершенствуется у Интела. В лице всех этих Cascade Lake, Coffee Lake и прочего.
Аноним 24/10/20 Суб 02:32:21 #255 №1838230 
>>1838182
>тк я тут за все время одного-двух шизов увидел,
А тебе не приходило в голову что "шиза" это следствие выгорания?
>остальные адекватные ребята
Да, мы такие ;-)
Аноним 24/10/20 Суб 07:45:55 #256 №1838286 
>>1838193
Все инцеловские ядра, за исключением р4 и атома, микроархитектурно являются развитием пняПро 92-го года. Поговорите мне тут о прогрессе.
Аноним 24/10/20 Суб 07:52:04 #257 №1838289 
>>1837274
>дефолтные аргументы
Есть с COM
>дефолтная инициализация
Специфика сишных примитивов и отсутствия ООП оверхеда мешает
>неймспейсы
Неймспейсы есть везде, нету пользовательских неймспейсов
>дженерики
Завезли ещё в бородатом с11
>метапрограммирование
Пчел метапрограммирование это не какой-то товарный знак, ты можешь на чем угодно писать в стиле метапрограммирования. Нет никакого правила что мол тру метапрограммирование эт ток в рантайме. Мб пояснишь как же сишка мешает тебе в этом. Да, нету сахарка и конкатенации строк изкаропки и чё?
Аноним 24/10/20 Суб 07:57:35 #258 №1838293 
>>1838289
Ты говоришь с пастой
Аноним 24/10/20 Суб 10:22:24 #259 №1838354 
>>1838230
>>> А тебе не приходило в голову что "шиза" это следствие выгорания?
да я любя же, все ведь одним делом занимаемся
Аноним 24/10/20 Суб 15:10:40 #260 №1838649 
>>1838286
Это как ядро Линукс, монолит из начала 90х, в 2005 кажись последний раз с нуля переписывали. Юзают и пилят до 2020 года, и конца и края не видно. Уж слишком много сил было вложено, быстро работает и в какой-то мере все очень даже удачно как для монолита спроектировано.
Аноним 24/10/20 Суб 15:51:38 #261 №1838680 
Анончики, хелп, нужно написать функцию разбивающую строку на слова по пробелам и возвращающую кол-во слов в строке int split(char s, char words), (принимает адрес строки и адрес переменной, куда в результате работы функции должен быть помещён адрес массива слов). При этом память для массива слов и для ASCIIZ-строк, представляющих слова, должна выделяться динамически.
Можете описать в общих чертах идею/алгоритм? У меня нихера не выходит
Аноним 24/10/20 Суб 15:53:37 #262 №1838683 
>>1838680
проебались звездочки, офк перед s одна звездочка, перед words 3
Аноним 24/10/20 Суб 17:45:26 #263 №1838767 
>>1838680
> У меня нихера не выходит
Пиздуй формы на ЖС клепать
Аноним 24/10/20 Суб 17:46:21 #264 №1838769 
>>1838680
Распиши по шагам. Пиши в тетради в клетку. Смотришь - ага вот у меня указатель дошел до пробела, в этот момент я должен выделить память, для этого мне надо запоминать начало слова пока еще не было пробела, значит надо второй указатель. Так, а размер слова это расстояние между этими указателями. Так, теперь надо добавлять слово в массив. Но его размер ты заранее не знаешь, так что либо в 2 прохода сначала узнать сколько слов, либо каждый раз выделять на n+1 элементов и копировать старые.
Аноним 25/10/20 Вск 06:06:42 #265 №1839136 
image.png
>>1838182
Если ты будешь себя мучать, то кончишь как пикрил
Аноним 25/10/20 Вск 09:07:30 #266 №1839154 
que-11196726656.png
>>1839136
Найс углы, чел.
Аноним 25/10/20 Вск 11:21:15 #267 №1839179 
Возник вопрос недавно по Си, ответ на который никак не могу найти. Я упростил свой код, только чтобы показать непонятный мне случай.

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

Поэтому в этом и вопрос. Почему первый код работает только при определенных размерах? Какая вообще свзязь с размером массива там может быть?
Если там ошибка, то какая и почему все же иногда это может работать?
Аноним 25/10/20 Вск 11:23:32 #268 №1839180 
>>1839179
Два кода отличаются лишь 1 стокой. В 1 я вызываю функцию "out" в функции "create" сразу после "fill". А во втором коде "out" вызываю в конце функции "fill".
Аноним 25/10/20 Вск 11:47:01 #269 №1839189 
>>1838680
разбей задачу на подзадачи
сделай динамический массив
сделай динамическую строку
те которые автоматически увеличивают свой размер
а потом уже пиши свою фунцию сплит, которая использует две первых

Аноним 25/10/20 Вск 11:51:41 #270 №1839194 
>>1838286
шину fsb поменяли на кольцо в сендике
это только один пример, но который рушит твое категоричное утверждение
Аноним 25/10/20 Вск 11:53:55 #271 №1839196 
>>1838210
вернемся к исходному
ты утверждал что на третьем пне была уже core2
мне кажеться, это не правда
Аноним 25/10/20 Вск 13:11:33 #272 №1839239 
Core - последняя итерация P6
Core2 и дальше - наследник P6
Еще были отдельные netburst и atom
вроде так
на вики почитал
Аноним 25/10/20 Вск 13:13:14 #273 №1839241 
>>1839239
еще p6 начался с pentium pro
sageАноним 25/10/20 Вск 13:38:34 #274 №1839261 
image.png
Не нужны нам эти ваши 32 и 64 бита.
Пентиумы-хуентиумы.
8086 - RuleZ 4ever.
Аноним 25/10/20 Вск 14:19:48 #275 №1839278 
>>1839196
Где я это утверждал?
Я утверждал что P6 архитектура с 3 пня была была весьма удачной, настолько что ее положили в основу более новой, прям которая пошла через поколение после.
Аноним 25/10/20 Вск 14:21:53 #276 №1839279 
>>1839261
>8086
Не нужны эти ваши микроподелки.
Только миникомпьютеры из 70х, только хардкор.
Слабо написать программу в эмуляторе pdp11 на си, скомпилировать и скинуть сюда результат работы?
Аноним 25/10/20 Вск 14:36:22 #277 №1839288 
>>1839179
Поздравляю, ты разъебал стек. Если меняешь порядок функции - ты просто обходишь эту проблему. Вероятнее всего ты перезаписал значение аргумента функции.

Там есть строчка в коде
>array = &A[array_size];
Нахера это написано? Собственно оно и вызывает это все говно.
Аноним 25/10/20 Вск 14:43:59 #278 №1839297 
>>1839288
Это я присвоил указателю адрес массива.
А в чем именно проблема и как переделать тогда?
Аноним 25/10/20 Вск 14:53:02 #279 №1839309 
>>1839288
Я еще пробовал через malloc создавать массив. Так работает даже при первом коде.
Но я так и не понял, в чем беда изначального кода и что именно лучше не делать...
Когда размер массива не известен, то всегда динамический массив надо брать же?

Я с Си знаком всего полтора месяца, а с массивами еще меньше, поэтому такие вопросы и задаю...
Аноним 25/10/20 Вск 15:17:08 #280 №1839316 
>>1839309
>Но я так и не понял, в чем беда изначального кода и что именно лучше не делать...
Тебе дали проблемную строчку.
1. Погугли как брать адрес массива.
2. Подумай.
3. Сообрази, адрес чего ты на самом деле взял и куда пишешь свои числа.
Аноним 25/10/20 Вск 15:27:19 #281 №1839320 
>>1839278
>но Интел на базе архитектуры Pentium III делала архитектуру Core 2
формально это не так
не на базе
"на базе" была последняя итерация p6 - Core
а Core 2 наследник p6, а не на базе
Аноним 25/10/20 Вск 15:28:42 #282 №1839324 
>>1839297
Ты взял указатель за пределами массива, на последний элемент. После пары вызова fill ты начинаешь писать рандомные числа в стек фрейм вышестоящей функции, где у тебя выделены все массивы, array_size и прочее.
Если хочешь передать адрес начала массива - просто используй его имя(его идентификатор уже является указателем):
> array = A;
И все заработает как следует.
Аноним 25/10/20 Вск 15:30:04 #283 №1839325 
>>1839324
Это я уже понял.
Но почему тогда оно может работать, когда размер массива 1, 2, 3 или 5? С такой ошибкой вовсе всегда не должно было работать ведь.
Аноним 25/10/20 Вск 15:30:33 #284 №1839326 
>>1839320
Прекрати баловаться с солями, мальчик. Я твоих претензий вообще не понимаю.
Аноним 25/10/20 Вск 15:41:03 #285 №1839332 
1603629652.jpg
>>1839324
А такая запись считается же правильной?
Аноним 25/10/20 Вск 15:41:08 #286 №1839333 
>>1839325
Но стек то имеется, и программе пофигу куда что писать. Управляешь всем ты. Логика компилятора - если ты это написал, значит зачем-то это нужно.
По сути у тебя последний элемент твоего массива А переписывает значение размера массива для последней функции в стек фрейме. Попадание в четные числа явно связано с какой-то оптимизацией, например использовался битовый сдвиг для взятия адреса &A[array_size];
Чисто предполагаю. Надо в код смотреть под микроскопом в godbolt.
Аноним 25/10/20 Вск 15:44:38 #287 №1839335 
>>1839332
А то.
Кстати, int A[array_size], где array_size не константа(в твоем случае вводится с клавиатуры) это расширение gcc, на каком-то msvc компилироваться не будет.
Аноним 25/10/20 Вск 15:46:34 #288 №1839337 
>>1839335
Хорошо, спасибо за помощь.
Аноним 25/10/20 Вск 16:05:01 #289 №1839353 
>>1839325
Если тебе на самом деле интересно, то запускай отладчик и смотри ассемблерные инструкции. Это путь в реверс.
Аноним 25/10/20 Вск 16:11:14 #290 №1839355 
snap002650.png
>>1839332
в Си нет массивов
Аноним 25/10/20 Вск 16:32:32 #291 №1839375 
>>1839335
>это расширение gcc
Хуецц. vla ввели в C99.
Аноним 25/10/20 Вск 16:43:08 #292 №1839389 
>>1839375
В его случае был С89, так что - я все верно сказал.
Аноним 25/10/20 Вск 17:10:23 #293 №1839407 
>>1839355
lol
Аноним 25/10/20 Вск 17:13:06 #294 №1839409 
>>1839326
на вики написано:
"Микроархитектура Intel Core проектирована с нуля, но по философии микроархитектуры Pentium M"
Аноним 25/10/20 Вск 17:15:30 #295 №1839411 
>>1839320
>>1839239
вот тут я напутал:
первые цп архитектуры core - это семейство core 2
Аноним 25/10/20 Вск 17:19:03 #296 №1839413 
>>1839409
но следует учитывать что
"Микроархитектура Intel Core основана на обновлённой версии ядра Yonah и может рассматриваться в качестве последней итерации микроархитектуры Intel P6"
Аноним 25/10/20 Вск 17:21:57 #297 №1839414 
>>1834086
там без тебя куча корпораций контрибютят) максимум драйвер для чегото можешь законтрибютить ,если его еще не существует там
Аноним 25/10/20 Вск 17:54:32 #298 №1839455 
>>1839279
>Слабо написать программу в эмуляторе pdp11 на си, скомпилировать и скинуть сюда результат работы?

Нет, конечно, не слабо. Но не интересно, если писал на листке инструкции PDP11, а затем проверял их на БК-0010Ш
Аноним 25/10/20 Вск 22:08:22 #299 №1839766 
>>1839194
> ядра
Аноним 25/10/20 Вск 22:12:57 #300 №1839768 
>>1839409
> но по философии
Так, падажжите, не надо размывать своей гуманитарщиной технический вопрос. Не по философии, а развивая. С нуля вряд ли серьезные люди проектируют что-то серьезное.
Аноним 26/10/20 Пнд 00:00:36 #301 №1839827 
>>1837980

Это же стартовый тайтл с никаким использованием потанцевала и кодом в 1 покпок PPU.
Аноним 26/10/20 Пнд 00:07:13 #302 №1839829 
>>1839827

Это не совсем так. Можно убедиться, что кода для SPU немало (вплоть до чего-то вроде волос и одежды IIRC). Во-вторых, посмотреть на то, что реально зашипили в любом случае интересно.
Аноним 26/10/20 Пнд 10:48:59 #303 №1839952 
>>1839829

Интереснее бы было поздний тайтлы посмотреть, где GPU рисует только GBuffer, а весь deferred shading сделан на CPU + посмотреть ранние идеи ECS вроде тех, которые упомянуты в постмортеме-презенташке нотидогов про дрейкфекйс 2.
Аноним 26/10/20 Пнд 13:29:26 #304 №1840048 
>>1837274
> пук
Аноним 28/10/20 Срд 11:47:10 #305 №1841898 
Ебать, тут тихо...
Аноним 28/10/20 Срд 12:40:18 #306 №1841942 
>>1841898
Не благодари
https://www.youtube.com/watch?v=BBAUCUYnX9M
Аноним 28/10/20 Срд 13:35:19 #307 №1841968 
Раз такая пьянка пошла, задам вопрос.
Аноны, хуяру код под МК на C. И хотел бы повысить свои навыки путем чтения исходников других проектов. Может быть, у вас найдется для меня какой-то совет?
Аноним 28/10/20 Срд 13:35:48 #308 №1841969 
>>1841942
Лучше уж тогда так: https://youtu.be/0yOhTFqTd4k
Аноним 28/10/20 Срд 13:55:37 #309 №1841979 
>>1841969
> Кожаные мешки и аналоговые инструменты

void foo();
Аноним 28/10/20 Срд 16:14:19 #310 №1842065 
>>1841968
Говно вопрос
github.com к вашим услугам
Аноним 28/10/20 Срд 17:55:49 #311 №1842178 
я тут поною. Как же у вас хватает сил читать Прата. всего 150 страниц прочитал, до конца еще далеко. Конечно он красавчик пишет все подробно. Но иногда возникает желание все бросить и прочитать K&R2(
Аноним 28/10/20 Срд 18:02:04 #312 №1842186 
>>1842065
Дядь, я знаю про гитхаб.
Может быть, есть какие-то прям вот проекты эмбеддерские, лол.
Аноним 28/10/20 Срд 19:29:39 #313 №1842306 
>>1842178
Работаю уже в embedded порядка 8 лет, и ни разу ни одну книжку целиком не прочитал. Все изучал по крупицам и из разных источников.
Тоже восторгаюсь теми кто может прочитать эти большие рукописи.
Аноним 28/10/20 Срд 20:12:35 #314 №1842350 
>>1842306
Двачую этого
Аноним 28/10/20 Срд 20:26:27 #315 №1842363 
>>1842306
Годные книжки это
W. Richard Stevens - Advanced Programming in the Unix Environment
Kyle Loudon - Mastering algorithms with C
Аноним 28/10/20 Срд 21:00:33 #316 №1842392 
>>1842306
А потом после таких кулибиных-левшей самолеты падают и котлы взрываются. Но ведь это так сложно просто взять и обучться.
Аноним 28/10/20 Срд 21:05:12 #317 №1842397 
>>1841968

https://github.com/shkolnick-kun/bugurtos
Аноним 28/10/20 Срд 22:18:48 #318 №1842483 
https://pastebin.com/S04i0XYz
Ньюфагопроблемы Аноним 28/10/20 Срд 22:25:24 #319 №1842488 
>>1842483
При выполнении упражнения, хочу считать из файла две строки символов. При выводе на консоль, вместо строки выводится мусор - очевидно, что путаюсь где-то с указателями, но что не так понять не могу.
https://pastebin.com/S04i0XYz
Аноним 28/10/20 Срд 22:43:12 #320 №1842500 
>>1842488
>rmvstr
На, ты потерял: e o e i
>malloc(sizeof(char))
Ну и сколько по твоему памяти ты запросил?
Аноним 28/10/20 Срд 22:47:02 #321 №1842504 
>>1842500
>Ну и сколько по твоему памяти ты запросил?
На один символ, пока длина строки неизвестна. Дальше при считывании каждого следующего символа и под него запрашиваю.
Аноним 28/10/20 Срд 23:34:51 #322 №1842537 
>>1842504
s1 = realloc (s1, (len[0]) * sizeof (char));
Видимо, проблема в этой строке - всё ломается при достижении строкой длины 16+ символов. Осталось понять что её так ограничивает.
Аноним 29/10/20 Чтв 02:15:34 #323 №1842617 
>>1842537
realloc - та ещё беда. Использовать его можно при крайней необходимости, а в повседневной жизни от него лучше отказаться.
Аноним 29/10/20 Чтв 04:34:21 #324 №1842632 
>>1842392
Да похуй)) Бабосик уплочен, а дальше хоть камни с неба)))
sageАноним 29/10/20 Чтв 04:51:15 #325 №1842634 
>>1842617
Давай расскажи нам, какие могут быть беды с реаллоком?
sageАноним 29/10/20 Чтв 05:05:41 #326 №1842635 
>>1842488
После реаллоков ты рано или поздно получаешь новый указатель, но в main() его никак не возвращаешь, и main() продолжает использовать старый, уже инвалидный.

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

А стандартный подход к динамическим массивам вообще хранить сразу два размера: used и available, и по необходимости перевыделять буфер двукратного размера или 3/2. Ты, например, такой while (used + size_needed > available) available ∗= 2;, и потом realloc(ptr, available).
Аноним 29/10/20 Чтв 06:43:01 #327 №1842652 
>>1842634
Ну это вообще опасная функция, она может выделить как-то не так память. И вообще, ты хочешь со мной и моим 20 летним авторитетом поспорить? Я такую малявку с сажей легко могу раскусить, ты чмырдяй не совмевайся в моих словах. Я вас таких в 2000х легко щёлкал после МФТИ.
Аноним 29/10/20 Чтв 06:43:39 #328 №1842653 
>>1842392
Обучение и учеба это разные вещи.
Обученние - человек делает дело и учится.
Учеба - ясли с программой для сопливчиков дебилов, где нянечки с ложечки кормят, и пасут как скот, говоря что и как делать, а сопливые дебилы ноют, жрут и подчиняются. Учебник это лишь запись с оной программы.
sageАноним 29/10/20 Чтв 06:46:42 #329 №1842654 
>>1842652
> может выделить как-то не так
Проиграно. А system - опасная функция, она может выполнить как-то не так rm -rf /, ага.
Аноним 29/10/20 Чтв 06:49:57 #330 №1842655 
>>1842654
Естественно опасная, иначе сидели бы под рутом как на винде и в ус не дули. Но СТРАШНА же, вот и не сидят, опасно.
Аноним 29/10/20 Чтв 06:54:49 #331 №1842657 
>>1842654
Ничего ты не понимаешь в серьёзном программировании, щенок.
system действительно опасная функция, через нее можно выполнить произвольный код. Это игры с огнем.
sageАноним 29/10/20 Чтв 06:56:03 #332 №1842658 
>>1842657
Си - опасный язык, на нем можно написать произвольный код. Ух, страшна!
Аноним 29/10/20 Чтв 06:59:03 #333 №1842660 
>>1842658
Ты не понимаешь всей тяжести и сложности Си.
Ссал тебе в рот, щенок. Наберешься опыта - поймёшь меня. Наверное и пары лет не пишешь на нем, а уже выебываешься.
Аноним 29/10/20 Чтв 11:08:53 #334 №1842744 
>>1842537
А почему у тебя индекс на <= проверяется относительно длинны? Ты всегда будешь залазить на один символ за массив
for ( i = 0; i <= len; i++)
В функции вывода
Аноним 29/10/20 Чтв 12:01:32 #335 №1842774 
>>1842652
Хуя ты толстый. Ещё и физтех приплёл.
Аноним 29/10/20 Чтв 13:34:09 #336 №1842856 
image.png
>>1842634
>Давай расскажи нам, какие могут быть беды с реаллоком?
Нарежет тебе кусочков. Для GUI в основном похуй, но если будешь использовать его для серверной програмы, которая работает годами - ОХУЕЕШЬ.
Аноним 29/10/20 Чтв 13:38:52 #337 №1842860 
>>1842856
Очнись, давно контейнеры рестартующие раз в сутки. Какие еще годами...
Аноним 29/10/20 Чтв 13:50:24 #338 №1842871 
image.png
>>1842860
Богатыри - не вы.
Аноним 29/10/20 Чтв 13:56:30 #339 №1842875 
>>1842871
Более семи лет аптайма.
Аноним 29/10/20 Чтв 14:32:12 #340 №1842919 
>>1842871
А теперь попробуй выполнять на нем какую то полезную работу.
Аноним 29/10/20 Чтв 14:33:04 #341 №1842921 
>>1842856
Кстати в реализации динамического массива использую realloc, приложуха с диким аптаймом, не падает. Стек слегка фрагментируется. А так в принципе норм.
sageАноним 29/10/20 Чтв 15:16:10 #342 №1842964 
>>1842635
Спасибо, буду исправлять. А чем плох malloc, что вместо него realloc лучше использовать?
Аноним 29/10/20 Чтв 16:26:36 #343 №1843042 
>>1842856
>серверной програмы, которая работает годами
Хуя, манядебильный мирок.
Эта серверная говнопараша - апофеоз непредсказуемого говнокода, который работает только благодаря постоянным перезагрузкам.
Аноним 29/10/20 Чтв 16:28:04 #344 №1843047 
>>1842871
По-твоему, ядро ос это сервер?
Можешь не отвечать, дебилоид.
Аноним 29/10/20 Чтв 17:38:55 #345 №1843138 
Если это >>1843042 и это >>1843047 написали разные люди, то разочаруюсь в людях.
Шучу - давно разочаровался.


Аноним 29/10/20 Чтв 19:31:54 #346 №1843220 
>>1842964
Realloc плох, используй всегда malloc.
Аноним 29/10/20 Чтв 21:13:20 #347 №1843315 
>>1842856
Не нарежет, если блоки вменяемой длины. Блоки одного размера в аллокаторах группируются в списки. Если ты увеличишь размер своего блока, то произойдет одна из двух вещей (зависит от аллокатора): либо он займет соседние слоты такого же размера (лежал в списке блоков из 64 байт, слился с соседним блоком, стал 128 байт), либо он попадет в список блоков большего размера. При уменьшении размера блока он либо переедет в список поменьше, либо кусок, кратный размеру блоков в списке будет помечен свободным (и соответственно, будет реюзнут в новых аллокациях такого размера). Никаких дыр. Собственно, у анона выше именно это и происходит.

>>1842964
> А чем плох malloc
Ничем, просто он там не нужен.
Аноним 30/10/20 Птн 10:33:11 #348 №1843572 
>>1843315
Ну вот зачем и зачем? Лучше бы они "фрагментацию стека" realloc-ом задетектить и победить пытались, может чему полезному научились бы. Или на собесе повеселили кого
Аноним 30/10/20 Птн 13:21:58 #349 №1843711 
Аноны, я начал изучать C, до этого пытался в питон, забил хуй и через год вернулся. Сейчас пытаюсь понять про указатели.
Можете нубасу объяснить что будет если в указатель записать число? К примеру:
int * pi = 5;
Указатель просто стал переменной или чо? printf без разыменования даёт на выходе 5.
Не бейте плз, просто в гугле ответ не нашёл
Аноним 30/10/20 Птн 13:29:21 #350 №1843717 
>>1843711
>int * pi = 5;

ты число 5 напрямую в память записал молодец
Аноним 30/10/20 Птн 13:45:34 #351 №1843733 
>>1843717
Ты тоже с питона пытаешься переехать?
Аноним 30/10/20 Птн 13:47:43 #352 №1843735 
>>1843711
> int * pi = 5;
Указатель начнет указывать на int по адресу 5. Если включишь предупреждения (а должен был сразу включить!), будет предупреждение, что ты неявно кастишь инт в указатель.

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

Если ты хочешь пользоваться указателем правильно, то тебе сначала нужно создать где-то int (или выделить sizeof(int) байтов), а потом уже записать адрес этого объекта в указатель: int myvar = 5; int ∗pi = &var; Если вывести pi, выведется большое число, если вывести ∗pi, увидишь 5.
Аноним 30/10/20 Птн 13:48:34 #353 №1843738 
>>1843733
Алсо, в питоне все то же самое, просто там обычных переменных вообще нет, они все ссылки (указатели).
Аноним 30/10/20 Птн 13:52:15 #354 №1843743 
>>1843735
спасибо, абуанон

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

Предупреждение C4047 инициализация: "int *" отличается по уровням косвенного обращения от "int"
Аноним 30/10/20 Птн 13:52:58 #355 №1843745 
>>1843711
>int pi = 5;

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

int pi = 0x00000005;

А затем pi[0] = 77777;
Аноним 30/10/20 Птн 15:17:11 #356 №1843827 
>>1843738
Т.е. вместо 64 инта он хранит 64 ссылку на 64 инт и жрет в два раза больше памяти?
Аноним 30/10/20 Птн 15:23:18 #357 №1843830 
>>1843735
>по адресам 5, 6, 7, 8
Необязательно
>sizeof(int) = 4
Тоже необязательно.

>>1843827
Для примитивных типов часто делаются исключения.
Аноним 30/10/20 Птн 16:25:33 #358 №1843889 
>>1843830
Да, необязательно. Но мне кажется, что лучше привести конкретный пример, чем рассказывать, что Си гарантирует только минимальную длину int, не гарантирует последствия преобразования интов к указателям, а потом еще рассказывать, что на самом деле там будет сегфолт, потому что современные ОС не мапят ничего в нулевую страницу.

>>1843827
А в питоне нет 64-битных интов, лал. Они там безразмерные, и они гораздо жирнее: 28 байт для самых коротких. Но они еще и иммутабельные, это позволяет создать первые 256 чисел заранее, при старте интерпретатора, и многие переменные с пятеркой в программе ссылаются на одну и ту же пятерку:
>>> a = 5; b = 4; с = b + 1; print('%x %x' % (id(a), id(c)))
7f119cefa820 7f119cefa820
Аноним 30/10/20 Птн 18:47:53 #359 №1844064 
>>1843889
>Но они еще и иммутабельные
Те когда я делаю а = а + 1 реально создаётся новая переменная? Смутно догадываюсь что это для тредсейф но как тогда другой тред догадывается к какой версии обращаться?
Аноним 30/10/20 Птн 20:13:47 #360 №1844159 
>>1844064
Создается новый объект, а не переменная. Переменная - это именованная ссылка на что-то, переменные хранятся в одном из словарей, поэтому проблемы с версиями не возникает - у тебя есть имя, по имени получаешь актуальную ссылку на объект-значение. Но во-первых, мы сильно ошиблись тредом, и пора это заканчивать, а во-вторых, в питоне есть функция id(), и так уж получилось, что в CPython id равен адресу объекта. Поиграй сам. Можешь заодно и с sys.getsizeof() поиграть.
Аноним 30/10/20 Птн 20:45:11 #361 №1844184 
>>1843711
Представь себе что у тебя микроконтроллер или ретрокомпьютер какой. А там вместо участка памяти могут быть замаплены пориы ввода вывода или видеопамять к примеру. Например на c64 запись по 0xD021 меняла цвет фона экрана. В винде конечно такое не прокатит, там куча слоев виртуальной памяти и т.д.
Аноним 30/10/20 Птн 20:46:41 #362 №1844187 
>>1844184
порты*
Аноним 30/10/20 Птн 23:20:15 #363 №1844379 
>>1842654
> опасная функцыя system
Так вот оно какое, системное программирование!
Аноним 31/10/20 Суб 00:41:08 #364 №1844477 
>>1844379
execve
Аноним 01/11/20 Вск 05:55:44 #365 №1845298 
Преподы тут есть?
Поделитесь опытом, что ли.
Как вы оцениваете студентов?
Меня на старости лет запрягли студентам преподавать. С подачей материала проблем нет, а вот как оценивать х.з.
Аноним 01/11/20 Вск 07:29:05 #366 №1845305 
Дайте какое-нибудь руководство по организации обмена данными между процессами на винде, а то мне поисковики какую-то хуйню для плюсов предлагают.
Аноним 01/11/20 Вск 09:28:10 #367 №1845325 
>>1845305
"Windows для профессионалов", Джеффри Рихтер
Полугли, если есть в электронном виде, там всё что надо расписано.
Аноним 01/11/20 Вск 19:40:38 #368 №1845651 
>>1845325
На Русском хоть?
Аноним 01/11/20 Вск 23:40:06 #369 №1845851 
Почему си такой конченный? В школе лампово писал на плюсах и пайтоне и кайфовал от процесса, а сейчас на первом курсе проходим СИ, и спустя несколько часов пердолинга уже сижу со вздувшимися венами и желанием разъебать монитор. Ну кому сука нужно это говнище? Даже паскаль лучше.
Аноним 01/11/20 Вск 23:49:01 #370 №1845857 
>>1845851
>пайтоне
Твой первый язык?
Аноним 01/11/20 Вск 23:49:19 #371 №1845858 
>>1845851
>Ну кому сука нужно это говнище? Даже паскаль лучше.
Ты так говоришь, будто иежду ними большая разница.
Аноним 01/11/20 Вск 23:57:54 #372 №1845864 
>>1845857
Да.
Аноним 02/11/20 Пнд 00:05:30 #373 №1845869 
>>1845864
Тогда это и есть твоя проблема. Нам в универе рассказывал один препод, что ни в коем случае не стоит учить питон как первый язык, иначе ты от него отупеешь и будет сложнее выучить нормальные языки. А лучше, вообще не учить этот недоязык, программы, написанные на нём, работают через жопу.
Аноним 02/11/20 Пнд 00:27:50 #374 №1845875 
>>1845869
> Нам в универе рассказывал один препод
Молодой, наверное.
Страый препод вслух бы не стал такое говорить, даже если так думает. Тоже наверное.
Аноним 02/11/20 Пнд 00:34:57 #375 №1845877 
>>1845869
Отчасти правда, если не знать что весь твой говнокод в 20 строк строк с целью считать строку неизвестного размера из потока ввода заменяется единственным s = input() на питоне, то и баттхерта от этого не будет.
Аноним 02/11/20 Пнд 00:39:38 #376 №1845878 
>>1845877
А всё потому, что питонодети, как этот, >>1845875, привыкли писать компилятору "сделай заебись" и получать еле как что-то работающее, умоляющее убить его. И они ещё утверждают, что за думающими за программиста компиляторами будущее.
Аноним 02/11/20 Пнд 00:40:48 #377 №1845879 
>>1845877
Массив строк кстати тоже можно создать в одну строчку на питоне. И потом просто передать его в функцию, лол. И изменить. И скопировать. И никаких тебе указателей, никакой блядь динамической памяти, просто блядь ты можешь не думать об этом блядь, а заниматься чистой математикой, писать алгоритмы - творить. Твой препод был прав, да, пересесть с питона на си, все равно что всю жизнь работать экскаваторщиком на карьере, а потом у тебя отбирают экскаватор, дают в руки пластиковую говнопалку, которая постоянно ломается, и говорят теперь копать ей.
Аноним 02/11/20 Пнд 01:06:13 #378 №1845887 
>>1845877
Написав такой говнокод, его можно вынести в функцию и использовать только скромную короткую команду.
Аноним 02/11/20 Пнд 01:13:57 #379 №1845888 
>>1845879
Привыкнут к своим экскаваторам, а потом пытаются им зубы удалять, а на возмущение отвечают что надо просто было рот шире открыть.
Аноним 02/11/20 Пнд 01:19:43 #380 №1845890 
>>1845877
две с половиной строчки, анон.
Цикл с fgetc, и наращивание буфера realloc/malloc если потребуется.
Аноним 02/11/20 Пнд 09:44:06 #381 №1846010 
Дело в том, что С предназначен для писания питонов и других ограниченных программ.
Аноним 02/11/20 Пнд 09:58:01 #382 №1846023 
>>1846010

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

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

Ваша вера тщетна, ваш инструмент устарел.
Аноним 02/11/20 Пнд 10:28:50 #383 №1846040 
>>1846023
Устарела ли отвертка? Нож? Ложка?
Аноним 02/11/20 Пнд 11:19:29 #384 №1846067 
>>1846040

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

Да. Шурик и аккумуляторная отвертка передают привет.



Аноним 02/11/20 Пнд 15:33:08 #385 №1846266 
>>1830513 (OP)
Посоветуйте литературу по эффективному программированию на C для embedded. Интересуют виды оптимизаций в коде (а не флаги компиляции), как сократить количество бесполезных тактов и не удариться в асм. Пример типовой задачи: Есть монохромный дисплей и указатель на видеопамять. Требуется функция прорисовки прямоугольника disp_fill(x1, y1, x2, y2) с произвольными сторонами. Однако, каждый байт видеопамяти управляет восемью пикселами, тут-то я и обсираюсь нахуй. При заливке по невыровненным координатам я должен каким-то образом считать смещения для пикселей или делить прямоугольник на разные части(?) с сохранением производительности.
Аноним 02/11/20 Пнд 15:51:16 #386 №1846285 
>>1846266
Как тут вообще можно обосраться, лол?
Нарисуй в тетрадке в клетку если что то непонятно
Аноним 02/11/20 Пнд 16:09:27 #387 №1846298 
>>1846266
SSD1306?)))00))00)))))000)
Аноним 02/11/20 Пнд 16:10:28 #388 №1846299 
>>1846298
Чи 12864? Чи ще щось?
Аноним 02/11/20 Пнд 16:12:38 #389 №1846303 
>>1846266
Вот тебе подсказка

unsigned char left_mask = 0xff >> (x1 % 8);
unsigned char right_mask = 0xff << (x2 % 8);
Аноним 02/11/20 Пнд 19:03:50 #390 №1846467 
>>1846303
А если компилятор тупой, то вот так красивее будет.

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

Быстрее уже не бывает.
Аноним 02/11/20 Пнд 21:35:14 #391 №1846611 
>>1846467
Ты пишешь очевидные вещи. Давай про неочевидные лучше: как именно ты будешь делать проверки на границы, и как именно ты будешь рисовать прямоугольник шириной в 1 пиксел.

> Быстрее уже не бывает
Бывает. Анон, задавший вопрос, сам написал, как быстрее можно:
> делить прямоугольник на разные части
За счет трех отдельных циклов (невыровненное начало, выровненная часть, невыровненный конец) можно экономить такты на проверках внутри цикла. Алсо, именно таким способом реализована memcpy() в сишной либе.
Аноним 02/11/20 Пнд 22:14:01 #392 №1846655 
не нужен там третий цикл, вот так будет выглядеть тело вложенного цикла.

int i;
video_ptr++ |= left_mask;
for(i=x1+1; i<x2; ++i)
video_ptr++ = 0xff;
*video_ptr++ |= right_mask;
Аноним 02/11/20 Пнд 22:15:09 #393 №1846657 
>>1846655
Вакаба сука, восприняла звёздочку как разметку.
Аноним 03/11/20 Втр 01:27:15 #394 №1846748 
>>1846655
но это оптимально для восьмибитного процессора, таких сейчас днём с огнём не найдёшь. Нужно маску и указатель переделать на тип данных, чей размер равен разрядности процессора.

Аноним 03/11/20 Втр 14:17:01 #395 №1847097 
>>1846611
> и как именно ты будешь рисовать прямоугольник шириной в 1 пиксел.

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

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

И вот теперь самый быстрый алгоритм для отрисовки на 8-битных процессорах


Аноним 03/11/20 Втр 14:25:09 #396 №1847107 
Раз уж тут пошла такая пьянка...
Как вообще организовывают ОРХЕТЕХТУРНО в коде на C UI во встраиваемых системах (мелких всяких, типа на stm32f1)? Абстрагируют ли функции отрисовки хуюзеринтерфейса от "низкоуровневых" функций отрисовки драйвера дисплея?

Мне пока пришли в голову структуры с указателями на функции драйвера дисплея, лол.
Аноним 03/11/20 Втр 15:34:17 #397 №1847173 
>>1847107
> Лол
Отцы юникса одобрительно посмеиваются.
Аноним 03/11/20 Втр 15:35:44 #398 №1847175 
>>1847173
Про структуры, в смысле?
Аноним 03/11/20 Втр 15:59:55 #399 №1847202 
>>1847175
Да. Это cdevsw[]
Аноним 03/11/20 Втр 16:09:03 #400 №1847212 
>>1847202
Ага... Тогда догнал.
Благодарю.
Аноним 03/11/20 Втр 16:19:17 #401 №1847221 
>>1847107
Ну надо сделать микросервис для отрисовки на экран. Микросервис блиттера. Микросервис для общения с аппаратурой. Микросервис HAL. Все на FreeRTOS, общение микросервисов наладить через mqtt.
Аноним 03/11/20 Втр 16:25:22 #402 №1847232 
>>1847221
Толсто, чувак. Очень-очень толсто, иди в гейскийJS тред.
Аноним 03/11/20 Втр 16:42:48 #403 №1847264 
>>1847232
Вот ты меня туда посылаешь, но на каком-то espruino пилят железок тоже немало.
Си - устарел. Феминистки не могут найти логику в вашем языке. Все эти указатели, адресная арифметика. Все должно быть куда проще. Память это объект, а женщина - это феминистка. Поэтому и скриптовые языки захватывают мир. Скоро победим вас ебучих капиталистов, зальем ваши лица гендерноравными смузи. Да будет власть меньшинств!
Аноним 03/11/20 Втр 17:24:59 #404 №1847321 
>>1847107

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

Паяют микросхему ftdi FT8XX серии
Аноним 03/11/20 Втр 18:44:13 #405 №1847396 
>>1847264
Нахуй фемок! Нахуй смузи! Нахуй коммуняк! Нахуй меньшинства!
Слава мужикам, да здравствует маскулинность! Пиздуйте, мужики в качалку и на борьбу! Слава Си! Слава адресной арифметике!
Аноним 03/11/20 Втр 18:45:19 #406 №1847400 
>>1847321
Понял, спасибо. Чекну даташиты.
Добра.
Аноним 03/11/20 Втр 20:02:18 #407 №1847473 
>>1847264
>Поэтому и скриптовые языки захватывают мир.
Сдохнут они.
Аноним 03/11/20 Втр 20:09:55 #408 №1847481 
>>1847264
Надо им рассказать про Zig.
Аноним 03/11/20 Втр 21:05:51 #409 №1847542 
>>1847481
Zig hail
Аноним 04/11/20 Срд 06:43:08 #410 №1847702 
>>1847542
Zip file! Ты ж программист.
Аноним 04/11/20 Срд 08:55:01 #411 №1847725 
>>1847702
https://www.youtube.com/watch?v=6WhxgdZuCVg
Аноним 04/11/20 Срд 15:31:33 #412 №1847961 
>>1847473
Не сдохнут. Гарантирую.
>>1847481
Отличная идея. Да здравствует Zig - самый гендернейтральный и феминитивный язык в мире!
Аноним 04/11/20 Срд 16:21:05 #413 №1848003 
>>1847961
ZIP FILE! o/
Say no to pidors!
Аноним 04/11/20 Срд 16:24:46 #414 №1848007 
Аноны, давайте лучше поможем анону стать хорошим разработчиком прошивок для встраиваемых девайсов.

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

Неужели, тока писать свой скрипт?
Аноним 04/11/20 Срд 16:28:42 #415 №1848011 
А, и ещё вопрос такой. Что там с кодировками строк/символов в gcc arm-none-eabi-gcc? Как их задавать во время сборки? Где об этом можно почитать?

Вчера заюзал строку с украинскими матюками и собрал прошивку, затем "колупнул" секцию .rodata - выяснил, что кодирование там идет utf-8, но явно я его не указывал. А хотелось бы. И хотелось бы со всем этим "собрать чехлы".
Аноним 04/11/20 Срд 17:55:38 #416 №1848057 
>>1848007
Воровать ttf-шрифты нехорошо. Просто извлеки шрифт из пзу ega/vga, в интернете есть целые коллекции.
Аноним 04/11/20 Срд 19:10:05 #417 №1848086 
>>1848057
Лол. А воровать из пзу хорошо? Полно опенсорсных ttf.
Аноним 04/11/20 Срд 19:12:03 #418 №1848090 
>>1848057
Понял, воровать шрифты не буду.
По поводу ПЗУ EGA/VGA - спасибо, учту. Дельный, кстати, совет для нюфага.

Все таки по поводу TTF... А если шрифт фриварный? Или если я, например, куплю шрифт? (да, есть такая тема) Тоже нельзя, получается?
Аноним 04/11/20 Срд 19:13:00 #419 №1848091 
>>1848090
Просто отрендери его в нужном размере на компе.
Аноним 04/11/20 Срд 19:17:35 #420 №1848096 
>>1848091
Понял. Благодарю.

Так, в общем, и собирался сделать.
sageАноним 04/11/20 Срд 19:25:55 #421 №1848107 
>>1848011
-fexec-charset, алсо сишный стандарт, там описывается как source character set превращается в execution character set.

Аноним 04/11/20 Срд 19:43:31 #422 №1848130 
>>1848007
>Вот, например, есть шрифт с буквами-пиписьками в TTF
Вот тут было смешно.
Не лезь туда, оно тебя убъёт.
Аноним 04/11/20 Срд 22:12:13 #423 №1848288 
>>1848107
Ооо, найс! Громадное спасибо! Почитаю за этот ключик.
>>1848130
Каво? Хто убъет? ТТФ? Так я ж не собираюсь его самостоятельно парсить, лол)
Аноним 05/11/20 Чтв 13:01:45 #424 №1848564 
>>1848007
BitFontCreator Grayscale. Экспорт в си формате, куча настроек формата выходных данных, рекомендую.
Аноним 05/11/20 Чтв 14:07:49 #425 №1848596 
>>1830513 (OP)
Почему С а не С++?
Аноним 05/11/20 Чтв 15:39:54 #426 №1848691 
>>1848596
Шапку внимательно прочитай, похуй что ничего не поймёшь, читай до просветлеия.
Аноним 05/11/20 Чтв 15:40:31 #427 №1848694 
>>1848691
просветления
быстрофикс
Аноним 05/11/20 Чтв 15:42:50 #428 №1848697 
>>1848691
А зачем Си нужен, если есть С++?
Аноним 05/11/20 Чтв 15:43:48 #429 №1848698 
>>1848691
Не нашел там ответа.
Аноним 05/11/20 Чтв 15:49:18 #430 №1848711 
>>1848697
Попробуй написать компилятор к плюсам и к си, и всё станет ясно.
Аноним 05/11/20 Чтв 17:18:53 #431 №1848797 
>>1848711
Хороший ответ. Без иронии.
Аноним 05/11/20 Чтв 20:30:24 #432 №1848970 
>>1848697
Разные же языки. Вот я хочу, чтобы символ foo в дизассемблере выглядел как foo, a не fooZzbh12i. И чтобы можно было назвать локальную переменную new, a функцию - delete.
Аноним 05/11/20 Чтв 20:53:39 #433 №1848980 
>>1830513 (OP)
ну вот я знаю это ваш си, есть у меня программатор и микросхема и как погромировать это всё?
Аноним 05/11/20 Чтв 20:57:49 #434 №1848983 
>>1848007
Берёшь, и без задней мысли программируешь.
Аноним 05/11/20 Чтв 21:01:05 #435 №1848984 
>>1848983
>>1848980
Промазал
Аноним 05/11/20 Чтв 21:44:57 #436 №1849029 
>>1848984
а как? скажи какая либра нужна, как то всё привести к виду пошивки чтобы через программатор зажить?
Аноним 05/11/20 Чтв 22:22:45 #437 №1849095 
>>1848970
> Вот я хочу, чтобы символ foo в дизассемблере выглядел как foo, a не fooZzbh12i
Нормальные дизассемблеры умеют делать demangle. Алсо, extern "C".

>>1849029
Пишешь ld-скрипт, в нем указываешь, чего куда класть (где код, где память и стек размещены). Если не знаешь, смотришь в даташите микроконтроллера. Компилируешь, линкуешь, получаешь бинарник. Берешь objcopy, делаешь из бинарника .hex, его и шьешь программатором.
Аноним 05/11/20 Чтв 23:35:58 #438 №1849164 
Продолжаю искать: DO-178C.PDF (A и В тоже подойдут), DO-254.PDF, DO-385.PDF, ARINC-653.PDF.
Аноним 05/11/20 Чтв 23:50:50 #439 №1849173 
>>1848564
Чекнем-с, благодарю.
Аноним 06/11/20 Птн 03:29:24 #440 №1849241 
>>1849095
спасибо большое, приблизительно понял. пойду гуглить как это делать.
Аноним 06/11/20 Птн 09:33:28 #441 №1849318 
>>1848711
>Попробуй написать компилятор к плюсам и к си

Но ведь сам компилятор писать не нужно, и прыщецц и прыщешланг модульные, если ты изобрел новый процессор с невиданной ранее архитектурой то тебе нужно писать
бэкенд IL->Machine code,
а не
Language->Machine Code
Аноним 06/11/20 Птн 09:39:34 #442 №1849322 
>>1849095
> нормальные турбодебаггеры
Я использую objdump -xd и не хочу писать какие-то заклинания.
Аноним 06/11/20 Птн 10:43:00 #443 №1849355 
>>1849318
Что-то в этом, конечно, есть. Я думаю, си просто проще. Проще выглядит, проще читать и писать. Намного быстрее компилируется. Но сам я на плюсах ебашу, не мне на такие вопросы отвечать
Аноним 06/11/20 Птн 13:09:44 #444 №1849505 
>>1849318
Удачи написать под 8 или 16 битный.
Аноним 06/11/20 Птн 15:30:27 #445 №1849608 
>>1849505
Я пытался написать кодогенератор на основе Tiny C Compiler. Охуел и забил (на tcc), начал писать компилятор с нуля.
Когда охуел со сложностью кодогенерации, решил сделать для начала интеппретатор.
Аноним 06/11/20 Птн 16:19:53 #446 №1849668 
>>1849608
Зачем делать интерпретатор примитивного языка? Если уж интерпретировать, то сложные операции, дополняя это сборкой мусора, бигнумами, исключениями, нитями и пр. То есть лиспы-питоны-луа... У лиспа ещё и синтаксис элементарный, то есть можно не тратить время на возню с грамматикой, а скорее делать вкусности.
Аноним 06/11/20 Птн 16:26:52 #447 №1849679 
>>1849668
>Зачем делать интерпретатор примитивного языка?
Чтобы наработать опыть для написания компилятора, чтобы попробовать в оптимизацию. Больше незачем. IMHO
sageАноним 06/11/20 Птн 20:49:45 #448 №1849945 
>>1849608
А какие сложности? В тцц кодогенератор максимально просто пилится. Проще, чем где бы то ни было, потому что оптимизаций на уровне машинного кода там нет.
Аноним 06/11/20 Птн 22:09:46 #449 №1850035 
>>1849945
Возможно квалификации не хватило. Не помню.
Аноним 09/11/20 Пнд 00:14:43 #450 №1851503 
image.png
image.png
image.png
Какой же С херня.
Компилю на VS простую прогу. Запускаю. ОК. Переношу на Виртуалку с 7кой.
И что я вижу?
ОТСУТСТВУЮТ КАКИЕ-ТО ЕБАНЫЕ БИБЛИОТЕКИ. ок.
Ставлю vc_redist.x86.exe.
Нихуя. ок.
Пробую комплить через MinGW.
Ставлю, компилю, переношу
отсутствует libstdc++-6.dll
Блять. Гуглю. Надо поставить флаг -static-libstdc++ ОК
Ставлю, компилю, переношу
отсутствует libgcc_s_seh-1.dll
Блять. Гуглю. Надо поставить еще флаг -static-libgcc ОК
на компьютере отсутствует libwinpthread-1.dll
СУКА БЛЯТЬ
Почему ебаный питон прокрученный через косой и убогий pyinstaller запускает мои проги? а?
Если ваш С такой пиздатый, то почему я не могу компилировать его под сперму?
С с++ такая же херня
Аноним 09/11/20 Пнд 00:33:02 #451 №1851516 
>>1851503
Хули выёбуешься? Собирай статиком и забудь о проблеме.
Аноним 09/11/20 Пнд 00:35:29 #452 №1851518 
>>1851516
Что это? Каким статиком? Я прописал все возможные и невозможные флаги, но оно по-прежнему просит какие-то библиотеки
Аноним 09/11/20 Пнд 00:36:14 #453 №1851519 
>>1851503
Уходи от сюда
Аноним 09/11/20 Пнд 00:42:33 #454 №1851523 
>>1851518
>Что это? Каким статиком?
https://stackoverflow.com/questions/55457467/how-to-make-static-linking-with-c-standard-library
Аноним 09/11/20 Пнд 02:43:25 #455 №1851589 
>>1851503
Миша лох.
Аноним 09/11/20 Пнд 06:42:22 #456 №1851664 
>>1851503
Стааь линукс, таких проблем не будет.
Аноним 09/11/20 Пнд 11:36:39 #457 №1851740 
>>1851503
Пиши на диалекте Визуальный С++, который предназначен для выньдос. Это стандартный спермоязык со стандартными спермобиблиотеками.
Аноним 09/11/20 Пнд 12:29:04 #458 №1851750 
>>1851503
Твой питон конченная залупа, впрочем как и ты сам. Макакам в Си нечего делать, тебя сам язык и компилятор нахуй посылают дурак блять, очнись! Иди В тред для питоноанананистов и жабадаунов и там высирайся! А то пришел глав.петух ебанный к элите и хайло свое вонючее открыл, срыгнул блять отсюда, куда указали.
Аноним 09/11/20 Пнд 12:46:47 #459 №1851767 
Объясните одну вещь. В Winapi при асинхронном чтении/записи файла нет возможности повесить обработчик на завершение операции, и нужно болтаться в цикле проверять статус этой самой операции, я все правильно понял?
Аноним 09/11/20 Пнд 13:45:47 #460 №1851815 
>>1851767

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

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

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

Можешь поток усыпить, можешь другие полезные задачи поделать и потом вернуться и еще раз проверить
Аноним 09/11/20 Пнд 13:53:14 #461 №1851819 
>>1851815
>Лоулевел, что ты хотел?
Но ведь в шинде есть колбеки и события.
Аноним 09/11/20 Пнд 14:10:54 #462 №1851830 
>>1851815
>Как и в Nodejs под капотом, да.
Дак вот разница в том, что у ноды это под капотом, а тут ты сам должен изобретать хуйню вместо того чтобы просто обработчик приколотить и дальше пойти.
>Что бы шиношс сам тебе такой асинхронно поток ломал как в прерывании ардуины?
В шиносе тоже треды есть, так уж.
>Лоулевел, что ты хотел?
Да не настолько уж и лоулвл.
Аноним 09/11/20 Пнд 14:59:46 #463 №1851871 
>>1851767

Схуяли? ReadFileEx/WriteFileEx, 5й параметр как раз колфбэк.
Аноним 09/11/20 Пнд 15:12:26 #464 №1851882 
>>1851871
Хм, про лп-оверлаппед я всякой хуйни читал читал, а за колбек вообще ни слова не было. Спасибо, гляну.
Аноним 09/11/20 Пнд 15:19:25 #465 №1851888 
>>1851871
> 5й параметр как раз колфбэк
Он вызывается, когда поток в alertable состоянии. А в этом состоянии поток, когда чего-то ждет. Например, события. Так что, как ни крути, а WaitForSingleObject/MultipleObjects/SleepEx все равно нужен. И это нормально. Если ждать не хочется, а работы много, можно посмотреть в сторону IOCP, там потоки.
Аноним 09/11/20 Пнд 15:22:08 #466 №1851892 
>>1851830
> просто обработчик приколотить и дальше пойти
Ой, с такими познаниями и таким подходом просто стартуй отдельный, в котором синхронно выполняется IO. Других способов "прикрутить обработчик и пойти дальше" нет и никогда не будет.
Аноним 09/11/20 Пнд 15:22:14 #467 №1851893 
>>1851871

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

Просто так продолжать что то делать в треде и что бы процедура завершения (тот самый колбек) сама дернулась прервав тред нельзя.
sageАноним 09/11/20 Пнд 15:22:31 #468 №1851894 
>>1851892
> стартуй отдельный
отдельный поток
Аноним 09/11/20 Пнд 15:26:41 #469 №1851898 
>>1851892

Вообще, семантика Async Fire and forget это UB в чистом виде по определению, именно поэтому во всех языках она или с ньюансами, или от нее избавляются деелая ее применение максимально болезненным.
Аноним 09/11/20 Пнд 15:36:00 #470 №1851903 
>>1851894

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

>>1851898

Почему?
Аноним 09/11/20 Пнд 15:45:16 #471 №1851914 
>>1851903
>, нужно что бы потоков было ровно по количеству ядер и они были загружены только полезной работой?

Ты про Job System?

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

>Почему?

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

В реальности никакого варпа нет, а в ноде, которая сожрала твой мозг, его роль выполняют невидимые тебе потоки от батареек и внутренних библиотек и локстепнутый цикл, про который бы тебе следовало почитать.
sageАноним 09/11/20 Пнд 15:48:03 #472 №1851918 
>>1851903
> Но ведь стартовать кучу потоков считается зашкваром
Нет, это заблуждение. Зашкваром считается стартовать потоки, которые активно используют процессор, т.е., что-то считают в цикле, например. Их, действительно, нужно по одному на ядро. А потоки, которые висят на IO - это почти бесплатно по процессору, и не очень дорого по памяти, поэтому если у тебя не нужно экономить каждый байт, то очень даже можно.

>>1851898
Большинство мелких серверов раньше писалось по такому принципу - соединение получил, поток стартовал и пошел хуячить синхронно. А UB - это если ты на что-то надеешься. Например, что оно прочитается/запишется за какое-то время и без ошибок. К тому же, никто не заставляет тебя forget, можно из тредов срать ошибками в основной поток, хоть в глобальный массив, который потом основной поток будет поллить, лал.
sageАноним 09/11/20 Пнд 15:50:10 #473 №1851923 
>>1851914
> файл святым духом читается вне потока
Но ведь он так и читается! Святой дух называется DMA.
Аноним 09/11/20 Пнд 15:56:07 #474 №1851931 
>>1851923

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

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

Ну и в целом, даже если и так, то одним из контрактов многозадачных OS является явный виртуальный поток управления без всякой хуйни уровня "возврат из прерывания, которое магически что то там переписало"
Аноним 09/11/20 Пнд 16:10:00 #475 №1851943 
>>1851918

В forget как раз основной смысл нодовской модели асинхронности,
точнее - в комбинации асинхронной логики в цепочки.
Аноним 09/11/20 Пнд 16:12:27 #476 №1851944 
А вы пробовали вызвать srand() в основном потоке,
а rand() вызывать в дочерних потоках?

Ничего интересного не заметили?
Аноним 09/11/20 Пнд 16:16:50 #477 №1851946 
>>1851892
Каким подходам уж обучен, зачем стукать. Просто, ну епт, я это еще в коде для стм (та же ардуина) первое время делал, пока не обучился dma, прерываниям и вытекающим из них ивентам.
>>1851914
>а в ноде, которая сожрала твой мозг
Как что-то плохое.
>файл святым духом читается вне потока и его процессорного времени
Другим потоком на другом ядре или перемежающимся с основным благодаря планировщику. Да уйма способов, просто какой смысл в таком асинхроне когда можно действительно сделать отдельный поток с синхронными методами, который будет сам по себе вариться и в конце вызывать тот же самый обработчик, располагаясь при этом где-то в задворках структуры проекта. Нюанс только в том, что его нужно писать самому, а не юзать что есть, потому что этого тонет.
Аноним 09/11/20 Пнд 16:56:04 #478 №1851969 
13404077984605.jpg
>>1851944
> дочерних потоках
Сыновних потоках
Аноним 09/11/20 Пнд 16:57:14 #479 №1851970 
>>1851969

Дочерних потоковках.
Аноним 09/11/20 Пнд 17:02:12 #480 №1851979 
>>1851970

ПОТОКИНЯХ же
Аноним 09/11/20 Пнд 18:39:37 #481 №1852052 
>>1851969
>Сыновних потоках
Забавно. Да. Спасибо. Наверное "порождённых" будет гендер-нейтрально. Но замечание ценное.
Аноним 09/11/20 Пнд 18:56:01 #482 №1852066 
>>1851979

Так всё таки

ПОТОКОВКИ ИЛИ ПОТОКИНИ?
Аноним 09/11/20 Пнд 20:02:50 #483 №1852097 
>>1852066
Нити?
Аноним 09/11/20 Пнд 21:25:09 #484 №1852165 
>>1852066
Как же там воняет.
Аноним 09/11/20 Пнд 21:50:26 #485 №1852189 
>>1852165

Ты чо пес хуемразь? Их тело их дело, хотят вогяют, хотят разлагаются.
Аноним 09/11/20 Пнд 22:13:13 #486 №1852209 
>>1851503
Эти либы не отсутствуют на компе, они идут в поставке с gcc. Обычно их можно отыскать в каталоге с MinGW, и скопировать в каталог к выходящему бинарю.
Зачем все эти либы нужны? Windows не posix система, и ей нужны либы переходники для запуска гнутого кода as is.
То что ты плохо разбираешься в теме и юзаешь шиндошс, это не означает что технология говно.
Аноним 10/11/20 Втр 00:38:36 #487 №1852285 
>>1852189
Селедки - пидарасы \thread
Аноним 10/11/20 Втр 00:56:48 #488 №1852289 
И всё же хотелось бы вернуться к генератору случайных чисел.
У меня получилось что все потоки выдают одну и ту же последовательность псевдослучайных чисел.

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

Забавно, да?
Аноним 10/11/20 Втр 01:01:11 #489 №1852290 
>>1852289
>генерация случайных чисел
>srand()
проиграл
Аноним 10/11/20 Втр 01:06:24 #490 №1852292 
>>1852290
Что ты предлагаешь взамен?
Аноним 10/11/20 Втр 01:29:37 #491 №1852302 
>>1852289
>rand() is not guaranteed to be thread-safe.
RTFM
>Что ты предлагаешь взамен?
Как насчет PCG?
https://www.pcg-random.org/download.html
Аноним 10/11/20 Втр 01:36:17 #492 №1852305 
>>1852302
Хотя не уверен что он дает хорошие результаты в multithread
Аноним 10/11/20 Втр 01:48:47 #493 №1852310 
>>1852292
tls-prf или mt на основе сида из hw rng
Аноним 10/11/20 Втр 01:53:02 #494 №1852313 
>>1852302
>https://www.pcg-random.org/download.html
Интересно. Спасибо.
Я решил проблему проще - вынес генерацию случайных чисел в отдельный поток и прошу случайное число у него. Сложнее, медленнее в несколько раз, но как вариант - вполне.
Аноним 10/11/20 Втр 04:49:54 #495 №1852336 
photofile1035.jpg
Привет!

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

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

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

Благодарю!
Аноним 10/11/20 Втр 05:38:30 #496 №1852362 
>>1852336
Ты ссылки с указателями то не путай. "Переменная" объекта - це часть объекта.
Аноним 10/11/20 Втр 08:18:16 #497 №1852408 

>>1852313
Ты настоящий индус.
Аноним 10/11/20 Втр 09:39:12 #498 №1852424 
>>1852336
1. Тебе в плюсотред.
2. Выбор создавать на стеке или нет определяется тем, использовал ли ты new или написал просто int a = 5;
3. Любая переменная любого типа создаётся там, где ее разместить, то же касается и сложных типов (классы, стракты..)
4. Как выше написали - не путай указатели и ссылки
Аноним 10/11/20 Втр 11:26:21 #499 №1852462 
>>1852336
В куче.
Выбираю исходя из задачи. В разных случая по-разному. На стеке дешевше.
Да, это важно.
Пиши больше - сам разберёшься.
Аноним 10/11/20 Втр 11:31:45 #500 №1852466 
>>1852408
Ах ты неполиткорректная сука!
ИНДИЕЦ, А НЕ ИНДУС!
Мы за тебя тут шествием за права трансгендеров шли, а ты уротребляешь и-слово!
Аноним 10/11/20 Втр 11:40:31 #501 №1852472 
>>1852408
Да ладно тебе. Я и тест написал. Супротив обычного вызова rand() оказалось лишь на 20%-25% медленнее.
Аноним 10/11/20 Втр 13:20:27 #502 №1852536 
Бакулюм в треде.
Делайте перекат.
Аноним 10/11/20 Втр 13:56:59 #503 №1852569 
>>1852336
Это не переменная, это член объекта, поле.
Аноним 10/11/20 Втр 14:20:15 #504 №1852603 
Пиздец, чувак нихуя не знает о плюсах, но уже полез в Qt.
Аноним 10/11/20 Втр 15:01:42 #505 №1852626 
>>1852472
Наверное потому, что в rand уже есть мьютекс. А вообще для многопотока есть rand_r или нормальный генератор из Личной Библиотеки Сишника.
Аноним 10/11/20 Втр 16:26:53 #506 №1852680 
D4uyAsYWkAAIvJf.jpg large.jpg
>>1852462
>>1852569
>>1852424
>>1852362
Благодарю!

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

В примере >>1852336 дестуктор для var и x не вызывается.
Аноним 10/11/20 Втр 16:30:06 #507 №1852685 
>>1852680
>Провёл тут эксперимент.
Неебаться ты ученый
Аноним 10/11/20 Втр 16:45:46 #508 №1852696 
Братишка.mp4
>>1852685
Токсик, прими харчу себе на ебало.
Аноним 10/11/20 Втр 16:47:45 #509 №1852699 
>>1852685
Ты как бы такой умный всё знаешь. Представь себе - не все такие. Этот тред для вопросов, а не для твоего выпендрёжа.
Аноним 10/11/20 Втр 16:50:39 #510 №1852702 
>>1852680
Нихуя себе ты исследователь. Прям открытие уровня /pr/ по С++ в Сишном треде. А сразу в тред по назначению зайти сложно?
Аноним 10/11/20 Втр 16:56:22 #511 №1852706 
>>1852680
НЕССЫЛОЧНЫЙ СЛОЖНЫЙ ОБЪЕКТ

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

Сейчас бы блядь деструктор вызывался для объекта, который ты создал и не удалил, просто охуеть.
Аноним 10/11/20 Втр 16:59:05 #512 №1852709 
>>1852706
Прости, бес попутал, больше не буду так ругаться.
Но иди в с++-тред.
ПЕРЕКАТ Аноним OP 10/11/20 Втр 17:01:47 #513 №1852711 
>>1852710 (OP)
>>1852710 (OP)
>>1852710 (OP)
>>1852710 (OP)
>>1852710 (OP)
Аноним 10/11/20 Втр 17:10:24 #514 №1852721 
>>1852696
Не плач, снежиночка.
Аноним 10/11/20 Втр 17:11:06 #515 №1852722 
>>1852680
>Провёл тут эксперимент.
ДВАЧ - НА ОСТРИЕ НАУКИ
Аноним 10/11/20 Втр 17:15:08 #516 №1852728 
>>1852721
Спермой тебе в рот поплачу и твоей маме :))))
Аноним 10/11/20 Втр 17:18:25 #517 №1852733 
>>1852728
Пока что ты только свой монитор слюной забрызгала.
Аноним 11/11/20 Срд 03:28:39 #518 №1853229 
>>1852626
>А вообще для многопотока есть rand_r

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

Последний ответ вот тут - https://social.msdn.microsoft.com/Forums/vstudio/en-US/3263ab0b-da3f-4737-9d80-0788a5b426db/randr-identifier-not-found?forum=vcgeneral предлагает решение -при инициализации генератора случайных чисел подмешивать к времени GetCurrentThreadId().
Аноним 12/11/20 Чтв 16:56:55 #519 №1854397 
2020-11-12175444.jpg
2020-11-12174310.jpg
Не бейте, почему тут scanf на срабатыает? Уходит в бесконечный цикл?
Аноним 12/11/20 Чтв 16:58:44 #520 №1854400 
А тут при выходе за границу массива следующий элемент выводится и именно 16?
>>1854397
вопросы из Праты.
Аноним 12/11/20 Чтв 16:59:18 #521 №1854401 
2020-11-12174050.jpg
>>1854400
Картинка отвалилась
Аноним 12/11/20 Чтв 17:06:33 #522 №1854411 
2020-11-12180524.jpg
>>1854401
Теперь правильная
Аноним 12/11/20 Чтв 23:29:36 #523 №1854719 
>>1854397
Потому что ЖМИ клавишу ENTER!
sageАноним 13/11/20 Птн 10:21:21 #524 №1854891 
>>1854411
Что попалось в памяти, то и выводится. UB говорит, что если ты нарушаешь, то никто тебе ничего не обязан, и результаты непредсказуемые.
comments powered by Disqus

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