Программирование

Ответить в тред Ответить в тред
Check this out!
C Programming Language #61 /clang/ Аноним # OP 24/08/20 Пнд 21:47:19 17869921
C Propaganda.jpg 1970Кб, 2000x2610
2000x2610
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь 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. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

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

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

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

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

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

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

- №58: http://arhivach.ng/thread/573804/
- №59: http://arhivach.ng/thread/597021/
- №60: http://arhivach.ng/thread/610540/ >>1772290 (OP)
Аноним 24/08/20 Пнд 21:52:29 17870022
image.png 62Кб, 710x402
710x402
image.png 37Кб, 1034x353
1034x353
>>1786992 (OP)
Ну и где там маньки, которые в 59 треде рассказывали, что главное "ко-ко-ко стандарт" и приоритет арифметических операций не нужно указывать скобками?
Сосите, вот правило MISRA C, доказывающее, что вы не правы.
Аноним 24/08/20 Пнд 22:01:41 17870103
>>1787002
Ты опять выходишь на связь? Давай повторю еще раз для дебила: MISRA C - это такие рекомендации, как писать код для хуйни, которая может ебнуть. Или убить кого-то. Весь остальной код пишут, руководствуясь принципами здравого смысла, с которым, как мы уже выяснили, у тебя проблема.

Так вот в этом нормальном коде принято оборачивать в скобки только неоднозначные случаи (классическое & vs. << и прочие), условие в тернарном операторе, все переменные в макросах, ну и, конечно, те выражения, в которых нужно изменить приоритет операторов. Причем в первых двух случаях порядок вычисления все равно гарантируется стандартом, просто его мало кто помнит, да и читать удобнее.
Аноним 24/08/20 Пнд 22:17:59 17870214
>>1787002
>>1787010
Оборачиваю все мат. операции в скобки по логическим блокам чисто для удобочитаемости. Какие подводные?
Аноним 24/08/20 Пнд 22:21:13 17870255
>>1787010
>MISRA C - это такие рекомендации, как писать код для хуйни, которая может ебнуть. Или убить кого-то.
Ага, а если пишешь, код не для медицинских приборов, промышленности, или автомобиля, то можешь говнокодить, как хочешь. Мы тебя поняли, маня.
>остальной код пишут, руководствуясь принципами здравого смысла
>в этом нормальном коде
Вот есть свод правил MISRA C, а где можно почитать "принципы здравого смысла" и критерии "нормального кода"? Нигде, потому что это только твои маняфантазии.
>Так вот в этом нормальном коде принято оборачивать в скобки только неоднозначные случаи (классическое & vs. << и прочие), условие в тернарном операторе, все переменные в макросах, ну и, конечно, те выражения, в которых нужно изменить приоритет операторов.
Это сугубо твоё личное, ничем не подкрепленное, мнение. В MISRA C сказано не использовать приоритет операторов. Я думаю, что те, кто разрабатывали правила MISRA C разбираются в программировании получше маньки с Двача.
Аноним 24/08/20 Пнд 22:23:43 17870286
>>1787021
Бтв поясните за эти ваши стандарты, как вкатиться правильно и на каком этапе изучения, на какой(ие) отдать больший приоритет.
Аноним 24/08/20 Пнд 22:26:42 17870307
>>1787021
>Какие подводные?
В том, что зумерки с этого итт треда, дрочащие на стандарт будут тебя хейтить, ведь надо наизусть знать стандарт, знать приоритеты операций и никогда не использовать скобки. По мнению зумерков (залетевших сюда с хабра) для хайпового и модного кода в коде вообще нигде не должно быть скобок, а иначе ты "не в теме", "не знаешь стандарт", "не сечешь фишку".
Ведь им важнее выебнуться знанием стандарта друг перед другом, чем писать понятный и надежный код.
Аноним 24/08/20 Пнд 22:30:20 17870348
>>1787030
Ясно, хуета. Продолжу писать как и писал. Но инфы про стандарты вы мне всё таки доставьте бажожда.
Аноним 24/08/20 Пнд 22:32:57 17870379
image.png 69Кб, 950x217
950x217
>>1787034
В шапке есть инфа. Собсно, 3 стандарта (С99, С11 и черновик с 202x), и Прата, которая объясняет стандарты и различия между ними.
Аноним 24/08/20 Пнд 22:35:06 178704210
>>1787037
>Прата
О, норм. Его и читаю. А стандарты эти читать тупо от корки до корки и будет мне счастье? А что эта ваша MISRA? Её стоит навернуть?
Аноним 24/08/20 Пнд 22:50:51 178705411
>>1787025
> можешь говнокодить, как хочешь
Я этого не говорил.

> где можно почитать "принципы здравого смысла" и критерии "нормального кода"
В стайлгайде софта, который ты пишешь. Внезапно, да?

> В MISRA C сказано не использовать приоритет операторов
А еще там сказано ни в коем случае не использовать маллок. Не используй маллок и библиотеки, использующие маллок, иначе у тебя будет говнокод, по твоим же словам.

>>1787028
> как вкатиться правильно и на каком этапе изучения
Читать стандарт полностью не нужно, это для разработчиков компиляторов. А вот конкретные неясные моменты смотреть стоит сразу, если не написано в учебнике (у Праты, например, на большинство твоих вопросов уже будут ответы).
Аноним 25/08/20 Втр 00:28:27 178714512
Аноним 25/08/20 Втр 01:54:26 178719313
>>1787042
Мизру не наворачивай. Это мем, который в индустрии не используют. К ней референсится полтора независимых аудитора во в трёх странах мира. И то только на очень специфических проектах. Отсутствие стандартизации в индустрии собственно и является причиной по которой она не взлетела.
Аноним 25/08/20 Втр 08:33:59 178726314
>>1787021
Если твои мат.операции выполняются с плавающей точкой, то группировать их желательно по соображениям точности или возможности параллельного вычисления, а не логически.
Аноним 25/08/20 Втр 11:59:18 178744015
Кех недели две назад спрашивал, как (и надо ли) расставить скобки в битвайзах и логике, а тут уже разборы стандартов пошли. Люблю ваш тред за это.
Алсо если ебнет, то компиль виноват, что стандарт не поддерживает?

>>1787021
>Оборачиваю все мат. операции в скобки по логическим блокам чисто для удобочитаемости.

А не лучше отделить пробелами или оттабулировать, чем засирать всё скобками?
Аноним 25/08/20 Втр 12:36:21 178748016
Раз уж тут разговор за стандарты пошёл то расскажите нужны ли мне другие стандарты кроме актуального если язык я учу исключительно для того, чтобы самостоятельно пилить всякую лоу/хай левельную фигню без устройства на работу? Мб есть какие нюансы в работе мк что они требуют старых стандартов или ещё что?
Аноним 25/08/20 Втр 12:39:41 178748317
Ищу IEEE 754-2019. Ни у кого не завалялся? Где искать?
Аноним 25/08/20 Втр 14:34:53 178762018
>>1786992 (OP)
А для чего нужен Си в 2к20(с целью получения работы и зарабатывания денег)? Только микроконтроллеры прогать и всё?
Аноним 25/08/20 Втр 15:10:51 178768519
>>1787620
Да, в целом в эмбедщине много С, ибо компиляторы С есть на все возможные платформы, даже самые экзотические. Ну и сам язык суперкомпактный и считай, что ты вообще чуть ли не на кроссплатформенном Ассемблере пишешь.

Почему ты это так говоришь, будто программирование мкк - это что-то плохое? Как по мне, куда интереснее, чем веб-макакерство.
Аноним 25/08/20 Втр 15:31:52 178770820
>>1787483
> IEEE 754-2019.
Тебе сам стандарт или реализацию.

Если что, я ищу просто реализацию IEEE 754 на Си. Желательно старую, времён Turbo C.
Аноним 25/08/20 Втр 16:54:20 178779021
>>1787193
> в индустрии не используют
Используют, как дополнительный источник предупреждений. Точно так же, как и с остальными предупреждениями вменяемое правят, невменяемое давят.

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

>>1787708
> Если что, я ищу просто реализацию IEEE 754 на Си
softfloat загугли, тысячи их. Эмуляторы времен доса тоже гуглятся, но они не на Си. В линуксе /arch/x86/math-emu еще.
Аноним 25/08/20 Втр 17:59:40 178784722
Пчелы нужна помощь. Как написать виртуальное блочное устройство поверх существующего на базе device
mapper?
Аноним 25/08/20 Втр 21:33:55 178803523
>>1787685
>Почему ты это так говоришь, будто программирование мкк - это что-то плохое? Как по мне, куда интереснее, чем веб-макакерство.
Собсно, в этом и была суть моего поста: зачем в 2к20 учить Си? Только чтобы прогать микрики за еду, и всё?

Сам подумай, что лучше:
1) прогать мк в неотапливаемой (зимой) и некондиционируемой (летом) комнате за 30-40к всю жизнь без перспектив;
2) стать веб-макакой, прогать в комфортабельном офисе с кофемашиной и печеньками за 60к, при этом есть перспективы карьерного роста в мидла, синьора и потом трактора.

Если тебе так уж интересна электроника и мк, то будучи веб макакой это может быть твоим хобби. Но выбирать это профессией с целью зарабатывания денег - большая ошибка.
Аноним 25/08/20 Втр 21:37:34 178803824
>>1787483
>>1787708
Объясните, а зачем нужен этот стандарт?
Просто в Си итак уже есть числа с плавающей запятой и компиляторы умеют в действия над ними.
Аноним 25/08/20 Втр 22:10:03 178805525
>>1788038
Он и ищет реализации стандарта в компиляторах (в библиотеке). У меня на первом 386 компе тоже не было аппаратных флоатов например.
Аноним 25/08/20 Втр 22:39:26 178806726
>>1788035
Ты просто живешь в другом измерении, к твоему сожалению. В парашке беда с лоу-лвльщиной, да. Забугром эмбедщина - элитная айти специальность, где и офисы заебись, и з.п. на уровне. Или ты хочешь сказать, что в конторах, которые производяя железо, типа Quallcom, Mellanox, Marvell, Nvidia, Xilinx, Tesla и т.п. и в которых больше половины софтвер инжиров являются хардкорными байтослесарями, душные и ободранные офисы?:) Хочешь работать в лоу-лвльщине и получать достойную зарплату - заводи трактор и учи ин.яз. В противном случае, жри говно js на веб-макакерской работе и живи в манямирке, типа ты ОЙТИ ИЛИТА(нет)
Аноним 25/08/20 Втр 22:51:17 178807527
>>1788035
>кофемашиной и печеньками за 60к, при этом есть перспективы карьерного роста в мидла, синьора.
Ты сначала этого уровня добейся будучи 1 из тысячной армии ежедневных вкатышей-индусов, потом уже о тракторе мечтай. Будешь как миленький сидеть и до конца жизни хуярить лендинги о мазях для увеличения члена.
Аноним 26/08/20 Срд 00:58:53 178817128
>>1788035
>потом трактора
Как эта болезнь называется? Школьники до сих пор верят в рай в европидарахии и омериге?
Аноним 26/08/20 Срд 10:59:58 178848129
>>1788171
Потеря веры в жизнь тут, даже у глупых школьников. Если это не настойчивый звоночек, то что тогда звоночек?
Аноним 26/08/20 Срд 11:07:23 178848730
>>1788075

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

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


Аноним 26/08/20 Срд 11:58:02 178853131
>>1788171
Я 5 лет проработал в embedded разработке заграницей.
В индустрии уже лет 25.
Рай для железячников это Юго-Восточная Азия. Если хорошо разбираешься, то чего сразу Европа или США - попорбуй Южную Корею. Отличная страна. Только субботы часто рабочие и рабочий день с 9:00 до 21:00. В остальном - рай.
Аноним 26/08/20 Срд 12:15:40 178854632
>>1788487
Ещё раз задам вопрос - нахуя кому-то брать тебя на 60к если индус сделает всё за 20? Что такого охуенного ты можешь предложить рынку чего не может предложить рспшка после курсов кокодемии? Может ты можешь выдавать 2 сайта в сутки? Или просто работать 24/7? И ты хочешь что-то доказать насчёт эмбедеда и лоулевела которые на западе испытывают острую потребность в грамотных кодерах коих нет. Причём настолько, что любой человек с опытом 3+ лет на этом самом эмбедеде может спокойно ехать в какую-нибудь Германию или Францию на 4-5к рейхсмарок ежемесячно, да тебя ещё и работодатель оближет помогая устроиться по началу и потом снимать/купить жильё.
Аноним 26/08/20 Срд 12:17:00 178854733
>>1788531
Не думая променял бы свою Канаду на Японию, но язык учить никак не решусь. Зона комфорта душит что пиздец.
Аноним 26/08/20 Срд 12:21:10 178854934
>>1787790
>softfloat загугли, тысячи их.

Спасибо!!!!
Первый же результат поиска показался мне примемлем - https://github.com/ucb-bar/berkeley-softfloat-3
Возможно где-то есть и поинтереснее, но это этот вполне норм. На досуге поиграюсь.
Ещё раз спасибо.

Забавно что на этот вопрос в теме про микроконтроллеры в разделе "Радиотехника" никто толком не ответил.
Аноним 26/08/20 Срд 12:37:14 178856335
>>1788531
>Я 5 лет проработал в embedded разработке
Пиздец... На хуй так жить?
Аноним 26/08/20 Срд 12:42:36 178856536
>>1788563
Это был самый лучший опыт в жизни. Самое интересное время. Это было интересно. Это была работа с железом, которое в продаже повилось только через несколько лет. Это был доступ к самой интересной закрытой документации и железа от ведущих производителей железа. Это была молодость и беззааботность.
Аноним 26/08/20 Срд 12:49:08 178857637
>>1788546

Реальность такова, что никакого индуса за 20 нет, ты его придумал.
Аноним 26/08/20 Срд 12:57:55 178858138
>>1788576
>Конкуренции нет
>js мощный язык
>Самая востребованная сфера
>ЗП от нуля и до бесконечности
>Вкачусь за 3 месяца
>Через 2 года стану синьором а на 3 укачу в Калифорнию
Аноним 26/08/20 Срд 13:04:32 178858339
Вы не могли бы вопросы политики/зряплаты/бонусов обсуждать в других темах? Тут реально для гиков рай, а вы мусолите какую-то залупу.
Аноним 26/08/20 Срд 13:06:19 178858440
>>1788565
>работа с железом
В кузнеце тебе понравится.
Аноним 26/08/20 Срд 13:12:59 178858941
>>1788584
А что ты делаешь в этом теме? Может быть ещё и не одного ассемблера не знаешь?
Аноним 26/08/20 Срд 13:26:40 178860742
Ору с мани из юнитфактори уже третий тред жирнейше засирающей. Внатуре шизик.
Аноним 26/08/20 Срд 13:30:27 178861143
Аноним 26/08/20 Срд 13:44:41 178862444
>>1788581

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

В то время как в этом треде байтослесари оправдываются что не на заводе работают, нинада троллить, а в НИИ/НПО работают.
Аноним 26/08/20 Срд 13:46:25 178863045
>>1788546

>И ты хочешь что-то доказать насчёт эмбедеда и лоулевела которые на западе испытывают острую потребность в грамотных кодерах коих нет.

А вот их сейчас как раз целая ЮВА с Китаем и прочими корейскими гейшами.
Аноним 26/08/20 Срд 13:59:42 178865346
А меня сейчас корёжит 64-бита.
Вот, заюзал gcc-8 на 64-битном Альт Линукс, в он не может в ключ -m32, пришлось портировать свою софтинку на 64-бита.
А тут засада - MSVC sizeof(long) = 4, gcc sizeof(long) = 8.
И привет #ifdefы

Не, я конечно заборю эту проблему, не в первый раз такое. Но забадывает поддержка нескольких платформ/компиляторов.
Аноним 26/08/20 Срд 14:04:20 178865847
>>1788653
>Не, я конечно заборю эту проблему, не в первый раз такое. Но забадывает поддержка нескольких платформ/компиляторов.

<stdint.h >
<
s
t
d
i
n
t
.
h
>
Аноним 26/08/20 Срд 14:14:28 178867348
>>1788658
В моём случае это не выход. У меня слишком специфичная задача, где руками по памяти приходится лазить и моделировать некоторые структуры. Опять же руками. Именно что в рантайме моделировать. Отсюда и сложность переноса.
Аноним 26/08/20 Срд 14:17:22 178867649
>>1788673

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

Что значит не подходит?
Аноним 26/08/20 Срд 14:22:37 178868150
>>1788676
>Что значит не подходит?

Блин, я интерпретатор пишу. Мне аргументы для printf приходится ручкаим формировать.
А к разным sizeof ещё добавляется calling conversion. MSVC и gcc аргмуенты функций на 64-х битах по-разному передают.

И это одна из немногих засад при портировании с 32-х бит на 64-бит.

Аноним 26/08/20 Срд 15:45:03 178878051
55289938-093e75[...].png 29Кб, 701x354
701x354
Напоминаю байтослесарям, что Python - самый популярный сегодня язык для Embedded.
Аноним 26/08/20 Срд 15:54:01 178878652
>>1788780
>Python - самый популярный сегодня язык для Embedded.

>Путает embedded language и embedded systems
Аноним 26/08/20 Срд 16:06:02 178879953
15809988630720.png 126Кб, 401x384
401x384
>>1788786
>язык для Embedded
>Путает embedded language и embedded systems
А может, ты? Lua, кстати, тоже там весьма популярен.
Аноним 26/08/20 Срд 16:09:11 178880454
>>1788799

Нет ты. Точнее, стопудово ты, судя по упоминанию Lua, которая ни в один МК не влезет, кроме разве что топовых с распайкой внешней памяти.
Аноним 26/08/20 Срд 16:10:25 178880655
А пайтон, который ты где-то подсмотрел, это, скорее всего micropython - который игрушечный язык для плат-ардуин на STM32.
Аноним 26/08/20 Срд 16:13:22 178881256
>>1788806
>micropython

Причем, что характерно - именно для конкретных плат-радиоконструкторов на STM32 с конкретной разводкой, на голом МК его не применить, произвольную плату не развести, новое устройство не сделать.
Аноним 26/08/20 Срд 16:54:03 178885857
15881040502962.png 485Кб, 888x894
888x894
>>1788806
>>1788812
>>1788804
>мк
Ты сука внатуре дебил, и не знаешь, что такое embedded language. Это язык, который можно встроить в свою систему, чтобы юзер мог дергать ее за сиськи на нем, а не хуитка для байтослесарей с двухкилобайтным сортиром вместо железа, лолка. А ембеддед в моем посте - это железячники во всех их проявлениях. Ваще разные две хуйни, я не ебу, к чему ты свои embedded languages приволок, аутист.
>не влезет
А openwrt влезет тогда? Или это не ембеддед-система, довн?
Акстися, на всяких роутерах, которые тоже ващет ембеддед, уже давно десятки мегабайт оперативы.
Аноним 26/08/20 Срд 18:54:45 178898758
>>1788858
Зачем нужны юзеры во встраиваемой системе?
Аноним 26/08/20 Срд 19:10:28 178899359
15879151825500.png 527Кб, 900x900
900x900
>>1788987
Это встраиваемая система нужна юзерам, очевидно.

А где я говорил про юзеров во встраиваемой системе, кстати?
Аноним 26/08/20 Срд 20:10:13 178902160
>>1788993
>А где я говорил про юзеров во встраиваемой системе, кстати?

Вот тут:

>>1788858
> Это язык, который можно встроить в свою систему, чтобы юзер мог дергать ее за сиськи на нем,
Аноним 26/08/20 Срд 20:28:32 178903361
Дочитываю значицца эту вашу Прату. Как теперь вкатиться на работу расскажите?
Аноним 26/08/20 Срд 20:51:04 178905162
>>1789033
> Как теперь вкатиться на работу расскажите?
Зависит от того, что хочешь делать. Но чтобы понимать, как выглядит мир за пределами стандартной либы, имеет смысл полистать какое-нибудь APUE, что-то нибудь вводное про сети (сокеты, libevent), про микроконтроллеры опять же.
Аноним 26/08/20 Срд 21:02:40 178906663
>>1789051
Хочу на универсалычах уметь всё: и мк накодить и по для марсианского ровера и высокропроизводительный ии захуярить.
Аноним 26/08/20 Срд 21:28:02 178908364
Аноним 26/08/20 Срд 21:30:36 178908565
>>1789083
Не, нахуй. Я творец а не разрушитель. К тому же там всё уже написано до меня, вряд ли лучше сделаешь лол.
Аноним 26/08/20 Срд 22:30:28 178913766
15983086892200.jpg 5Кб, 170x170
170x170
>>1789021
А ты не жопой читаешь, ты внатуре тупой.

Где там написано про ВСТРАИВАЕМУЮ систему? Там написано про просто систему, любую. А встраиваемый - язык.
Аноним 27/08/20 Чтв 09:15:16 178934167
>>1786992 (OP)
Аноны, молю дайте мне ссылку на то как работают адреса в отличии от обычного обращения к переменной.

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

ОБЕЪЯСНИТЕ МОЛЮ ПОЧЕМУ ОБРАЩЕНИЕ ПО АДРЕСУ БЫСТРЕЕ ЧЕМ СТАНДАРТНОЕ ОБРАЩЕНИЕ К ПЕРЕМЕННОЙ
Аноним 27/08/20 Чтв 09:58:29 178937268
>>1789341
Взятие адреса это о(1), вот и все
Аноним 27/08/20 Чтв 10:00:38 178937469
>>1789372
не пoнял. как пoнять o(1)?
Аноним 27/08/20 Чтв 10:43:32 178942970
>>1789341
Бред, косвенное обращение не может быть быстрее. Быстрее может быть передача параметра в функцию.
Аноним 27/08/20 Чтв 10:45:35 178943471
>>1789429
указатели работают быстрее

то есть *p = 7 быстрее чем p = 7 и я хочу знать почему?
Аноним 27/08/20 Чтв 11:37:14 178950972
>>1789434
> указатели работают быстрее
Тебе уже сказали, что бред.

> то есть ∗p = 7 быстрее чем p = 7 и я хочу знать почему?
∗p = 7 это mov регистр,[адрес p]; mov [регистр],7
p = 7 это mov [адрес p],7
Очевидно, что две инструкции, да еще с зависимостью по данным никак не могут быть быстрее одной.
Аноним 27/08/20 Чтв 12:16:04 178955673
>>1789509
хoрoшo прoебался. а зачем тoгда указатели?
Аноним 27/08/20 Чтв 12:38:55 178957674
>>1789341
Процитируй дословно, ты мог не так понять.
Аноним 27/08/20 Чтв 12:40:04 178957875
Аноним 27/08/20 Чтв 12:40:25 178958076
>>1789341
>ОБЕЪЯСНИТЕ МОЛЮ ПОЧЕМУ ОБРАЩЕНИЕ ПО АДРЕСУ БЫСТРЕЕ ЧЕМ СТАНДАРТНОЕ ОБРАЩЕНИЕ К ПЕРЕМЕННОЙ

проспись
Аноним 27/08/20 Чтв 12:53:24 178960077
>>1789374
Это временная алгоритмическая сложность. О(1) - константное время исполнения. Сразу видно вкатыша без высшего образования :-)
Аноним 27/08/20 Чтв 13:27:48 178967278
>>1789600
Обращение к переменной, и по указателю, это тоже о(1), образованный ты наш.
Аноним 27/08/20 Чтв 13:35:22 178968279
gs9i8m5jcw011.jpg 27Кб, 499x499
499x499
>>1789341
>и там написано типа что адрес увеличивают скорость обращения к переменной или что-то такое
Скорее всего, такой же грамотей, как ты, писал.
Не читайте советской макулатуры, уебки. И вообще на русском
Аноним 27/08/20 Чтв 13:57:42 178970080
>>1789682
Джвачую, все читаю, толтко на эстонском.
Аноним 27/08/20 Чтв 13:59:24 178970381
>>1789600
>Это временная алгоритмическая сложность
Говнокнута обчитался? Мохнатое О бля, думал уже это говно вышло из моды зумеров.
Аноним 27/08/20 Чтв 14:25:46 178974982
>>1789341

Слушай, у ВСЕХ компиляторов есть ключ, позволяющий формировать ассемблерный листинг. Более того, все компиляторы переводят код Си програмы в ассемблер, а уже ассемблер делает из него объектный файл, который линкуется с другими объектниками и библиотеками в исполняемый файл.

К чему я тебе это рассказываю? Напиши оба варианта присвоения и посмотри чего нагенерировал компилятор. Поверь, лучше один раз увидеть своими глазами, чем 100 раз услышать.
Аноним 27/08/20 Чтв 14:47:03 178977783
>>1789749
> все компиляторы переводят код Си програмы в ассемблер
Это, мягко говоря, не совсем правда. Далеко ходить не надо, у того же tcc парсер прямо по ходу разбора сразу генерирует машинный код, безо всяких промежуточных представлений. У шланга есть промежуточные представления, но он не обязательно пишет .s. У Visual C++ кодогенератор делает листинг только по запросу, а самому ему ассемблер в хуй не вперся. Плюс к этому всему добавляем сборку для LTO/LTCG, когда даже в объектники пишется промежуточное представление.

Поэтому правильнее сказать, что большинство компиляторов может сгенерировать тебе ассемблерный листинг, если попросишь.
Аноним 27/08/20 Чтв 14:52:20 178978584
>>1789341
ускoряется время кoмплияции тoлькo. указтели в oснoвнoм нужны кoгда нужна динамическая память. например динамический массив.
Аноним 27/08/20 Чтв 15:51:54 178989685
>>1789777
За всю свою многолетнюю практику ни разу не видел компилятор, у которого нет ключа для генерации ассемблера.

Тот же tcc... Хмм... А ведь вроде не умеет - https://man.cx/tcc(1)
В упор не вижу ключа -s и Гугл говорит:

>> 2. How to generate assembly program in tcc.
>You don't.
>The i386 and ARM targets use a function o() to write the opcodes as they appear in the binary. Use objdump -d if you need assembly output.

Ну да, выходит не все компиляторы умеют.
Ну тогда
objdump -S mycode.o | less
в помощь.
Аноним 27/08/20 Чтв 16:41:18 179001686
image.png 85Кб, 655x456
655x456
Аноним 27/08/20 Чтв 17:55:08 179011287
>>1789672
Он спросил что это означает, я ответил, причем здесь конкретно то, что ты высрал, ебанько?
Аноним 27/08/20 Чтв 19:35:38 179019588
>>1790016
>>хрюю пук

смотрим на твою карту, валим все в Казахстан, лол, кек
Аноним 27/08/20 Чтв 19:37:27 179019889
>>1790195
Да я уже понял, что обосрался.
Ну, с кем не бывает.
Аноним 27/08/20 Чтв 22:38:35 179034290
Чем этот ваш эмбеддед отличается от моей ежедневной ебли с плюсами? Что вы делаете, прокидываете слои абстракции на железо? Если я довольно прям ёпта нормально так подробно представляю, во что и как именно превращается мой плюсовый код, комфортно ли будет щупать ваши железки? сишечка тоже нравится, очень милая и простая, только иногда сильно не хватает приятного сахарка из плюсов... но я полагаю, если руки не из жопы, g++ тоже можно смело тащить в ембеддед
Аноним 27/08/20 Чтв 22:45:38 179035791
>>1790342
>плюсами
ООП же, я например сознательно эту парадигму дропнул, хотя на Кюте пиши.
Аноним 27/08/20 Чтв 22:49:40 179036092
>>1790357
Бля, плюсы != ООП, вот совсем. Я вообще редко классы какие-то прям в стиле java наматываю, в основном функции, структуры и легкие RAII оберточные классы.
Аноним 27/08/20 Чтв 22:56:51 179037193
>>1790342
Не всегда. Иногда байтослесари получают совсем голую железку, тогда надо писать HAL. Чаще всего уже существующий HAL крайне хуевый с не менее хуевой документацией - хоть свой пиши с нуля. Чаще требуется накатить ядро Линукса через Yocto. Если надо работать с кастомной железкой - скорее всего надо писать драйвер на нее, благо подсистемы в ядре Линукса значительно сокращают гемор и не надо совсем уж там битами жонглировать хотя порой таки надо

Сишечка популярнее плюсов в эмбедщине по большей части потому, что компилятор на С существует под все, даже самые экзотические платформы. А если нет - написать компилятор С гораздо, ГОРАЗДО легче и быстрее, чем компилятор плюсов. Ну и порой есть resource constraints довольно чумовые, даже в 2к20 году, где даже плюсы достаточно жирные (можно офк писать С-лайк код, но тогда зачем изначально пикать плюсы?) и меньше подходят. Ну и если в железке крутится ядро Линукса, что происходит в 90% случаев, то писать кастомные драйвера на периферийные устройства надо на С, ибо API да и вообще все ядро Линукса написано на С. А еще С - это грубо говоря кроссплатформенный ассемблер, ни больше, ни меньше, засим этот ЯП бессмертен в определенных нишах.
Аноним 27/08/20 Чтв 23:12:20 179038394
>>1790371
Вот насчёт компиляторов на разных платформах да, действительно. Худо-бедно рабочий компилятор с89 я и в одно рыло заделаю, но про плюсы даже не заикнусь просто пизда.
Плюсы ради шаблонов в основном хочется. Можно такой-то кавайный compile-time полиморфизм накидывать. Перегрузка аргументов в функциях, неймспейсы, nested struct/enum-ы, блямбды ёпту, да много мелочей, к которым привык и не хочешь терять. А на сишечке всё ручками делать. Хотя, когда железки теребишь, абстракции куда ближе к железкам, и таких потребностей, наверное, не возникает.
А ядро линупсовое лёгкое само по себе? Ну типа, сколько памяти занимает? Или его кастрировать при случае чего можно?
Аноним 27/08/20 Чтв 23:18:14 179038695
>>1790360
>Бля, плюсы != ООП, вот совсем
Чигобля?
>Я вообще редко классы какие-то прям в стиле java наматываю
Ну так и задумайся, на хуй тебе кресты если ты против ее парадигмы
Аноним 27/08/20 Чтв 23:19:00 179038896
90952.gif 218Кб, 384x384
384x384
Анон, хочу гонять битики по байтику (или двум) влево-вправо. Это значит, что без инлайнов с рор/рол не обойтись?
Алсо переносимость может пострадать?
Аноним 27/08/20 Чтв 23:20:00 179039097
>>1790386
Кресты мультипарадигменные, братишка. Как хочешь, так и делаешь. Нахуй тебе плюсы, если ты джавку там разводишь? Фабрики бля, хуябрики. Вот джаву и бери.
Аноним 27/08/20 Чтв 23:24:43 179039498
>>1790390
>мультипарадигменные
Нет, это было нахлобучивание ООП над Си. Если ты там вместо cout пишешь printf ну или пишешь в процедурном стиле, то пора подумать. А Java это заебись.
Аноним 27/08/20 Чтв 23:26:43 179039699
>>1790383
Голое ядро в рантайме занимает мало места само по себе + из-за того, что это попенсорц, можно играться с конфигами ядра и собрать кастомное ядро под самые разные нужды. На абсолютное большинство железок заходит на ура. Лично я собирал без особой анальной акробатики ядро, которое в рантайме занимало 5 мегабайт (без кэшированной памяти офк, хотя Линукс гибкий и позволяет играться со многими параметрами).
Аноним 27/08/20 Чтв 23:27:42 1790397100
>>1790388
Просто юзай логический сдвиг влево/вправо, в чем проблема?
Аноним 27/08/20 Чтв 23:35:36 1790401101
>>1790394
printf я не пишу, но в с++20 его завезли как std::format, поэтому ещё успею.
Ты там себе навыдумывал стилей, концепций, каких-то ебать их в рот парадигм, но всё это по отдельности друг от друга дрянь страшная. Код пишется под каждую задачу по-своему, так, как оказывается удобнее. Если ты от этой свободы отказываешься в пользу сомнительных заявлений о том, что надо кодить каким-то определённым образом, хули я могу сказать, земля тебе пухом.
Java заебись, ничего против её не имею. Просто она не подходит под мои задачи, и всё тут. И java-style тоже идёт в разрез с тем, что мне нужно.
Аноним 27/08/20 Чтв 23:37:19 1790403102
>>1790396
5 мегабайт это очень даже очень. Блин, надо будет заказать какую-нибудь простенькую железку и поднять там линупс. Спасибо за инфу, анон!
Аноним 27/08/20 Чтв 23:38:27 1790404103
Аноним 27/08/20 Чтв 23:39:12 1790405104
>>1790397
Если ты про <<>>, то гцц у меня рожает арифметический сдвиг. Да и логический сдвиг не нужен так как
>хочу гонять битики по байтику (или двум) влево-вправо
и биты не должны проёбываться.
Вообще странно, что компиляторы не позволяют ротировать биты, сейчас гуглю и нигде внятного объяснения этому нет, потому ставлю на зависимость от архитектуры.
Аноним 27/08/20 Чтв 23:45:17 1790407105
>>1790405
>Вообще странно, что компиляторы не позволяют ротировать биты
Гугли "swap", шизик.
Аноним 27/08/20 Чтв 23:45:53 1790409106
>>1790401
>то надо кодить каким-то определённым образом
Да, если ты адепт ООП, то и пиши так
>std::format
Пиздец....
Аноним 27/08/20 Чтв 23:46:35 1790411107
>>1790405
>арифметический сдвиг
Подозреваю, что ты несешь хуйню.
Арифметическим бывает только сдвиг вправо (сдвиг влево не бывает арифметическим, так как нет такого ABI, где бы LSB биты при сдвиге влево заполнялись единицами, а не нулями).

Биты не должны проебываться при rol/ror, при логических сдвигах они еще как проебываются. В языке С (да и в других известных мне языках тоже) нет нативного API для rol/ror. Напиши свой, это очень просто.
Аноним 27/08/20 Чтв 23:49:32 1790413108
>>1790411
пардон, я чуток сказал неточность

На бумаги есть арифметический сдвиг влево, только вот между ним и обычным логическим сдвигом влево нет никакой разницы (как заполнялись LSB биты нулями, так и заполняются). А вот в случае со сдвигом вправо все по-другому. При арифметическом сдвиге вправо MSB бит 1, а не 0, как при обычном логическом сдвиге вправо.
Аноним 27/08/20 Чтв 23:50:58 1790415109
>>1790411
пардон, я чуток сказал неточность

На бумаге есть арифметический сдвиг влево, только вот между ним и обычным логическим сдвигом влево нет никакой разницы (как заполнялись LSB биты нулями, так и заполняются). Так что хз зачем есть отдельная команда (sal в х86), если разницы по сути, вроде как, нет.

А вот в случае со сдвигом вправо все по-другому. При арифметическом сдвиге вправо MSB бит 1, а не 0, как при обычном логическом сдвиге вправо.
Аноним 28/08/20 Птн 02:07:13 1790503110
>>1790405
> компиляторы не позволяют ротировать биты
Внимательно смотри дизасм, ничего не напоминает? https://godbolt.org/z/Mn1sjf

>>1790415
> Так что хз зачем есть отдельная команда (sal в х86)
> если разницы по сути, вроде как, нет
Нет ни разницы, ни инструкции. Опкод SAL тот же, что и у SHL.
Аноним 28/08/20 Птн 03:10:48 1790513111
image.png 457Кб, 500x400
500x400
>>1790403

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

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

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

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

> extern "C"

Тогда линкер их увидит. Иначе будет искать С++ функции, а у них хитрый манглинг.

Ну и ещё нюанс со статически обхявленными классами. Конструкторы для них вызывать некому в общем случае. Но это решается самописной crt.0

Линукс далеко не идеал, хоть он и везде. В половине железок так уж точно он.
Аноним 28/08/20 Птн 11:08:56 1790750112
>>1790513
И небольшое уточнение - значительная часть встраваемых железок имеет Линукс на борту. В этом случае вышесказанное не совсем верно. В этом случе всё будет работать так же, как и на персональном копмьютере. Само. По умолчанию.

Исключения нужно отключать ключами компиляции если пишешь код не для user space или для на железки без ОС. Да, даже для такого железа и для таких конфигураций можно писать на С++. Проверено.
Аноним 28/08/20 Птн 11:45:27 1790794113
>>1790513
> А практика говорит что для встраиваемых устройств можно легко писать на С++
На Си пишут не потому, что C++ не подходит. Нет, С++ подходит, но если ты видишь код на Си, ты точно уверен, что там не будет всех этих исключений, шаблонов, классов и пятистраничных сообщений компилятора. А когда ты видишь код на C++, ты внутренне сжимаешься, потому что там гарантированно окажется "моя охуенная зеро кост абстракция вокруг регистров железки, которая оптимизирует установку битов". Ну а чего, язык же позволяет, и похуй, что это нечитаемое и неподдерживаемое нагромождение шаблонов, которое способно посрамить даже перл.
Аноним 28/08/20 Птн 12:15:39 1790835114
>>1790794
Насчёт шаблонов согласен. Они иногда раскрываются в такое, что отладить представляется сложным. Особенно когда дебажишь по UART или JTAG в терминале.

Но классы-то тебе чем не угодили? По сути это те же структуры, в в области видимости которых дополнительно определены функции (методы классов).

И в целом это обычные функции, но которым неявно передаётся один дополнительный параметр - указатель на структуру, в котором определена эта функция. А в коде функции он будет называться this.

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

Нет там особых сложностей.
Аноним 28/08/20 Птн 12:33:57 1790862115
>>1790835
Велик и могу русский язык.
> указатель на структуру, в котором определена
Правильно читать так:

"указатель на структуру, в котороЙ определена"
Аноним 28/08/20 Птн 12:46:04 1790889116
Скажу сразу - вопрос ни в коем случае не для холивара. Скажите мне не проебался ли я убив 3 недели на базовый СИ перед вкатом в плюсы? В каких вообще областях чистый СИ просто незаменим?
Аноним 28/08/20 Птн 13:20:21 1790934117
>>1790750
>И небольшое уточнение - значительная часть встраваемых железок имеет Линукс на борту.

Значительная часть встраиваемых систем оперативки-то не имеет, строится на редких "индастриальных" МК вроде TriCore, или из вышедших из моды вышедших пичков, а из штатных средств вывода инфы - в лучшем случае или мигающие светодиоды статуса или невмирающие 8-сегментные газоразрядные цифры или, когда дораха-бохато, кастомный ЛСД с запеченным в ЛСД графикой аля "электроника". И хуй туда кто поставит оверхедную железяку ради удобства - себестоимость стиралки за 15к для бомжей тут же улетает за пределы рентабельности.

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

Это всё ширпотребские быдлодевайсы, клоторые потом идут в некие магазины и там или азия или котлетки в еще невмершем НПО.

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

Там где ответственность и реалтайм и всякие монтависты по требованиям уже идут нахуй и берется QNX.
Аноним 28/08/20 Птн 13:21:24 1790935118
>>1790934
>вышедших пичков
и MSP
Аноним 28/08/20 Птн 13:28:37 1790948119
>>1790934

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

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


Но нет эти мудаки его на десктоп потянули, с пнем 3 конкурировать, мля.
Аноним 28/08/20 Птн 13:38:29 1790962120
>>1790948
>делать на них убийц симатиков от сименса и прочие томографы с рентгенами
Возьми и сделай или ты думаешь после либирашьего пануванья все так легко?
Аноним 28/08/20 Птн 13:42:18 1790965121
Аноним 28/08/20 Птн 13:54:53 1790977122
>>1790934
>QNX.

Но на марсианском ровере крутится VxWorks.
Но и QNX и VxWorks в итоге соснут у L4 version X2. И это точно.
Аноним 28/08/20 Птн 13:56:31 1790978123
>>1790889
> Скажите мне не проебался ли я убив 3 недели на базовый СИ перед вкатом в плюсы?

Мало. Рано тебе в плюсы.
Аноним 28/08/20 Птн 13:58:26 1790981124
>>1790978
Так вот я и спрашиваю - нужно ли си перед плюсами вообще и где оно и только оно юзается? И когда будет уже "пора"? Какой ёба-проект нужно сделать чтобы стать готовым, а, Иллидан?
Аноним 28/08/20 Птн 13:59:16 1790983125
>>1790962

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

Успей совок в свою культурную революцию и нарожай бы в 60х-70х достаточно населения что бы конкурировать хотя бы с клятыми пиндосами, и плавно вруби НЭП -может быть всё так печально бы и не закончилось.

А либерашьи лдиберахи - все совковая комса, так-то.

И да, это были лучшие представители интеллигенции из тех что смог совок к моменту развала.
Аноним 28/08/20 Птн 14:01:33 1790985126
>>1790981
Какой у тебя бэкграунд? На писал четыре недели назад до "изучения Си"?
Аноним 28/08/20 Птн 14:06:29 1790993127
>>1790985
Школьный питон уровня масивчики, сортировочка пузырьком и джейсончики. 4 недели назад бухал как чёрт а сейчас поступил на софтварную хуемразь(инженера) и решил вкатываться заранее чтобы доминировать над всеми на курсе.
Аноним 28/08/20 Птн 14:14:53 1791005128
>>1790993
Тогда учи ассемблер x86. Не так, чтобы на нём писать, но хотя бы понимать. Иначе уйдёшь обратно на питон или ещё какую беду.
Аноним 28/08/20 Птн 14:16:07 1791008129
>>1790983
>хай-тек продукция
На хуй никому не нужная. Хотя для малолетнего либирахена дибилятор верх развития цивилизации. А все великии достижения в России были при СССР и плановой экономике, копетолиздм только и может, что отсасывать, пендохи это показали не раз начиная с 30х.
Аноним 28/08/20 Птн 14:26:15 1791018130
>>1791005
А на кой он нужен вообще? Где-то читал что Си - это просто удобная обёртка асма.
Аноним 28/08/20 Птн 14:29:20 1791019131
>>1791008
>А все великии достижения в России были при СССР и плановой экономике

Космос и атом. Всё.

Всё остальное - лихорадочно то пиздили-, то догонялииперегоняли, то аналоговнетили.

И да, дибилятор верхушка айсберга, тело - это те самые упомянутые мной ПЛК, станки с ЧПУ, 3д печать, цифровое управление производственными процессами, вот это все.

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

И их коллег из армении, от которых кондеры приехали.
Аноним 28/08/20 Птн 14:37:36 1791021132
>>1791019
>Космос и атом
Это и есть технологии, а твое обоссаное хайтек и ит на хуй человечеству не нужно. Это у фантастов кудахтеры ассоциируются с прогрессом, а на деле от всеобщей ит дибилизации только деградация и упадок.
Аноним 28/08/20 Птн 14:44:04 1791026133
>>1791018
>Где-то читал что Си - это просто удобная обёртка асма.
Вот именно. Исходя из этого и надо учить ассемблер, чтобы понять для чего нужен Си. А зная Си уже не так трудно выучить С++.

Я не думаю что востребованы программисты на С++, которые не понимают что сгенерировал им компилятор. Возможно в каких-то редких предметных областях. Иначе тогда лучше сразу в C# вкатываться и не задумываться о многих вещах.
Аноним 28/08/20 Птн 14:48:20 1791035134
>>1791026
Ну хз даже, у меня с 1 курса в расписании стоит С++. И сколько этот ассемблер х86 придётся учить чтобы понимать как всё работает?
Аноним 28/08/20 Птн 14:56:06 1791044135
>>1791035
> у меня с 1 курса в расписании стоит С++
Тебя выучат синтаксису, расскажут про особенности, научат пользоваться STL (вероятно научат). Но это не значит что ты станешь С++ программистом. Не, ну этого достаточно чтоби писать helloworlds. Или если ты алгоритмист крутой, то тут уже пофиг на чём ты пишешь - алгоротмисты это уже другое. Ценность таких специалистов именно в создаваемых ими алгоритмах, а кодировать почти любой может.

Аноним 28/08/20 Птн 15:01:18 1791052136
>>1791044
Я и понимаю, что универ мне многого не даст. Это ещё одна причина по которой решил вкатываться заранее и самостоятельно. А теперь вот говорят разворачивайся и хватай асмр. Думаю короче.
Аноним 28/08/20 Птн 18:02:08 1791237137
>>1791035
>И сколько этот ассемблер х86 придётся учить чтобы понимать как всё работает?

Да там достаточно просто понять. А мнемоник не так много, чтобы их выучить. На x86 Компилятор использует чуть больше половины. А может быть даже и меньше. Вот их и надо понимать. А всё остальные инструкции можно в справочник посмотреть, если вдруг понадобятся.

Аноним 28/08/20 Птн 22:01:32 1791500138
Что скажете про эту книгу? https://nostarch.com/Effective_C
По аннотации и содержанию вроде весьма годная.
Си мне интересно подучить на уровне читать и понимать готовые исходники.
Аноним 28/08/20 Птн 22:41:00 1791524139
>>1791500
тебе просто нужен гугл
Аноним 28/08/20 Птн 22:52:05 1791526140
>>1791500
Содержание стандартное, выложенная на сайте глава выглядит неплохо, но зайдет ли - хуй знает, прочитай и расскажи нам. Лично я из описания указателей у автора не понял бы ровным счетом нихуя.
Аноним 28/08/20 Птн 22:59:03 1791531141
>>1791526
А где понял?
Мне интересно плотненькое изложение основ.
Аноним 28/08/20 Птн 23:21:43 1791542142
Аноним 28/08/20 Птн 23:22:57 1791544143
>>1791542
Разве сейчас так пишут как там? Мне не задачки решать, а читать современные исходники.
Аноним 28/08/20 Птн 23:43:51 1791560144
>>1791544
>Мне интересно плотненькое изложение основ.
Исхожу из этого
Аноним 29/08/20 Суб 14:18:06 1791841145
почему при компиляции в VisStu на C отказано в доступе? для с++ все ок
Аноним 29/08/20 Суб 14:24:53 1791843146
>>1791841
Дополняю проблему, антивирус блочит запуск с файлов, при отключении антивируса все ок (с++ ок и с антивирусом)
Аноним 29/08/20 Суб 15:10:54 1791880147
>>1791841
Антивирус пытается интеллектуально оградить дебила от языка, который ему не по уму.
Аноним 29/08/20 Суб 18:17:28 1792015148
>>1791880
Но ведь тогда наоборот не комплились бы кресты, а с сишкой все было бы нормально
Аноним 29/08/20 Суб 19:42:15 1792068149
Ананасы, чем заниматься после Праты? Сейчас начинаю последнюю главу а типо куда дальше? Стандарты читать? Архитектуру компа и ОСей учить? Или хотя бы глазами пробежаться по самым часто используемым либам? Или сразу можно начинать проекты делать постепенно усложняя задачу?
Аноним 29/08/20 Суб 20:04:55 1792081150
>>1792068
Знать Сишечку недостаточно. Без знаний языка ассемблера (похуй какой архитектуры на первых порах, но так как ты прогаешь на ноуте/пека, то х86-64) знания Си наполовину обесцениваются. Также, в 2к20 году, высирая код на Си, у тебя должен быть полный security awareness, иначе ты будешь писать дырявый код а-ля gets(yaeblan_overflow_me), за что тебя вполне законно могут выебать в жопу. ОС интерналс тоже обязательно грызть, попробуй начать с Танненбаума.

На Си всегда байтоёбили, сам язык очень простой, но он требует знаний в смежных темах (асм и основы ОС как минимум) в виду областей его применения. Не забывай, анон, что на Си пишут прошивки, драйвера, ОСи, низкоуровневые библиотеки и йоба-числодробилки.
Аноним 29/08/20 Суб 20:14:00 1792084151
>>1792081
>security awareness
Что читать для этого?
Аноним 29/08/20 Суб 20:27:13 1792090152
>>1792084
hacking - the art of exploitation -- начни хотя бы с этого, другие книги по этой тематике тебе вынесут нахуй мозг и ты их вряд ли осилишь, по крайней мере на первых порах.
Быстрый парсинг http запросов на сях Аноним 29/08/20 Суб 20:31:12 1792091153
Вечер добрый. Как можно сделать быстрый (желательно 100kRPS +) , http/1.1 conditionally compliant парсер, чтобы это было ещё и не больно, на чистых сях?
Как можно сделать конечный автомат, чтобы он работал быстро, но не выглядел убого в коде?
Аноним 29/08/20 Суб 23:22:53 1792230154
Аноним 31/08/20 Пнд 01:08:00 1793248155
image.png 113Кб, 1253x664
1253x664
Чего приуныли?
Я вот интерпретатор Си пилю >>1785454 →
Намедни научил его массивам. В первом приближении это выглядит как-то так. На github пока не выливал - не готово для публичного показа.
Аноним 31/08/20 Пнд 01:23:39 1793276156
>>1793248
молодец, иди поцелую, пупсик
Аноним 31/08/20 Пнд 07:50:25 1793360157
изображение.png 3048Кб, 1951x2560
1951x2560
>>1792091

ЭТО КЛАССИКА, ЭТО, БЛЯДЬ, ЗНАТЬ НАДО
Аноним 31/08/20 Пнд 13:48:34 1793641158
Ребят, можно ли пройтись по структуре, как по массиву? Или каким-либо ещё способом.

Ситуация такая: есть много разрозненных переменных разных типов и надо бы считать из них значения.

Хрен знает как выкрутиться.
Аноним 31/08/20 Пнд 13:55:40 1793648159
>>1793641
Нет. Каноничный способ: сделай хексдамп всего куска памяти.
Аноним 31/08/20 Пнд 13:57:09 1793652160
>>1793648
>сделай хексдамп всего куска памяти
Что это?

Хотя бы как правильно называется, чтобы нагуглить примеры?
Аноним 31/08/20 Пнд 14:17:15 1793680161
>>1793641
union {
mystruct s;
float[] arr};
Не?
Аноним 31/08/20 Пнд 14:18:30 1793682162
>>1793360
Он же просил неубого :)

>>1793641
Поясни подробнее - подскажу. Способы однозначно есть.
Протокол парсишь?
Аноним 31/08/20 Пнд 14:42:06 1793705163
>>1793641
Делаешь массив/список/дерево структур, описывающих имена, типы переменных и их расположение в памяти. Делаешь функции получения и задания значений в зависимости от типа и свойств переменных (количество бит, есть ли знак и тп). При любой нетривиальной задаче дерево должно создаваться автоматом на основе конфиг файла, чтобы не править код при смене протокола, а создание конфига из тз автоматизировать насколько возможно.
Аноним 31/08/20 Пнд 14:43:45 1793707164
Аноним 31/08/20 Пнд 16:39:40 1793885165
>>1793705
>берешь питон/шарп/любое другое скриптоговно
Сократил твой словесный понос.
Аноним 31/08/20 Пнд 18:31:32 1794030166
>>1793885
>кококукареку покпок
Простите, петушиный не понимаю.
Аноним 31/08/20 Пнд 18:37:06 1794040167
Аноним 31/08/20 Пнд 18:42:25 1794042168
>>1793652
емнип, core dump.
Делаешь дамп памяти с помощью `gcore <pid>` (поставляется вместе с gdb)
Потом, если нужно, делаешь `readelf --segments <полученный после gcore файлик>`, и теперь ты знаешь, где в файлике лежит адрес памяти по указателю.
Если у тебя не POSIX -- выйдите отсюда пожалуйста
Аноним 31/08/20 Пнд 18:43:46 1794045169
>>1794030
а так?
Раст -- это игрушечный язык, который не имеет применений в реальной жизни
Аноним 31/08/20 Пнд 19:21:13 1794066170
>>1794045
В руках его не держал, я сишник крестовик, имею дело с гигантскими авиационными протоколами для can aerospace и arinc 429 и знаю о чем говорю. На питоне скриптики для кодогенерациии иногда пишу, тут ты прав
Аноним 31/08/20 Пнд 19:26:42 1794068171
И оффсетами вы не отделаетесь, когда есть битовые поля, смесь биг литл эндиан, фиксед поинт данные и тд. Тут вам не лаба номер 1.
Аноним 31/08/20 Пнд 20:29:26 1794102172
>>1794040
>cling же есть
Слава Богу! Теперь хоть буду знать с кем можно сравнить, если у меня получится завершить.
Аноним 31/08/20 Пнд 22:09:06 1794190173
Привет всем, Си-господа. Вопрос к линуксоидам - как Линукс понимает какие драйвера нужно загружать при буте системы? Вот у меня есть произвольная сетевая карта, произвольная встроенная видеокарта, тачпад, клава и т.д. Допустим, я накатываю дистр для нубасов типа Убунту или Манжаро. После установки - хуяк, все работает, есть вай-фай, работает клава ну и прочая периферия. Как Линукс определяет во время установки системы как модули ядра надо загружать, чтобы все девайсы работали? Заранее спасибо.
Аноним 31/08/20 Пнд 22:49:11 1794223174
>>1794190
девайсы тянут с собой информацию о себе
Аноним 01/09/20 Втр 01:39:24 1794291175
image.png 84Кб, 1024x945
1024x945
Аноним 01/09/20 Втр 13:46:45 1794749176
Скипаю большую часть заданий Праты т.к. всё кажется однотипным бесполезным не имеющим практической ценности говном, но при этом общий алгоритм как задание нужно реализовывать в голове простраиваю. Это Даннинг — Крюгер или я прав?
Аноним 01/09/20 Втр 13:52:14 1794753177
>>1794749
Прав, синтетические задания из книжек по программированию нахрен не нужны.

Для знания языка полезнее писать реальные программы, для общих концепций лучше уж литкод тогда решать
Аноним 01/09/20 Втр 20:01:15 1795061178
>>1794749
> общий алгоритм как задание нужно реализовывать в голове простраиваю
Дьявол в деталях.

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

Аноним 01/09/20 Втр 20:44:47 1795068179
>>1795061
>Дьявол в деталях.
Не спорю, но если у меня задание вида прочитай файл и подсчитай количество указанных символов в нём то уже совсем детсад уровня совмести код из задания 6 параграфов назад с кодом 3 задания назад.
>>1795061
>Не будешь писать код - не научишься ни писать код, ни отлаживать его.
Вот я и хочу поскорее проспидранить книгу и сразу взяться за какой-нибудь серьёзный проект с гуглением и энергетиками.
Аноним 01/09/20 Втр 20:47:16 1795070180
>>1795068
Зачем тебе тогда вообще Прата? Давай сразу гугли.
Аноним 01/09/20 Втр 20:58:47 1795076181
>>1795070
Потому что как база он охуенен и что гуглить если не знаешь чего гуглить? Проблема для меня в том, что после раздела упражнений с массивами и указателями у меня устойчивое ощущение того, что я занимаюсь хуетой.
Аноним 01/09/20 Втр 21:41:24 1795092182
>>1795068
> подсчитай количество указанных символов в нём
Задание со звездочкой: открой файл с каким-нибудь фильмом и посчитай в нем количество '\x1a' на винде. С двумя звездочками: то же, но файл на флешке, и флешку во время работы программы ты выдернешь.
Аноним 01/09/20 Втр 21:47:56 1795096183
>>1795092
А что я выиграю если займусь? Какие-нибудь ограничения введёшь? На винде т.к. доступ к стику будет сложнее чем на никсе?
01/09/20 Втр 22:04:47 1795108184
>>1795096
Ничего не выиграешь, забудь.
Аноним 02/09/20 Срд 09:28:25 1795269185
>>1794045
Ждём когда допилят V. Нормальная обёртка над С для людей с оверхедом в ~3%, а не ржавый высер от Мозилы.
Аноним 02/09/20 Срд 09:51:38 1795277186
15900395662310.jpg 15Кб, 414x406
414x406
Как произвести точный поиск в строке?

Допустим, надо различить m1 и m11 (или m11 и m111, напрмиер). Ведь при поиске в m11 входит m1.
Аноним 02/09/20 Срд 10:12:28 1795282187
>>1795277
Посимвольно парси строку. Или регулярки. Ты в С-треде или жс?
Аноним 02/09/20 Срд 10:19:18 1795285188
>>1795277
Проверяй следующий символ после найденного, является ли он разделителем.
Аноним 02/09/20 Срд 11:06:28 1795310189
>>1795282
>Или регулярки.
Регулярки? В Си?
Ну на хуй.
мимо пхп-макака
Аноним 02/09/20 Срд 12:25:56 1795351190
image.png 11Кб, 655x138
655x138
image.png 215Кб, 1920x1080
1920x1080
Аноним 02/09/20 Срд 16:08:57 1795506191
>>1795277
конечный автомат напиши
Аноним 02/09/20 Срд 17:50:21 1795618192
>>1795285
Наверно подойдёт.

https://ideone.com/as9J6d

Нам известна длина искомой строки.

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

Символ - "

Допустим, получим с помощью strstr в какой части строки нашли совпадение. С помощью известной длины + 1 символ можно переместиться по строке, наверняка.

Подсобите допилить указатель, плез.
Аноним 02/09/20 Срд 18:01:13 1795625193
>>1795618
if ((p=strstr("bana","banana")) && p[4]=='n') printf("banan\n");
else printf("dunno\n");
02/09/20 Срд 18:43:04 1795656194
>>1795351
Не самая красивая логика с feof(). Она сейчас работает, но если бы у тебя не было условия в строке 30 (если бы ты считал все символы, а не только конкретный), то EOF тоже посчитался бы. Алсо, тут лучше подошел бы fread(), потому что у этого кода примерно 4 вызова функций на символ (лок/чтение/анлок у fgetc(), плюс feof()), а fread() размазал бы эти вызовы на один буфер из несколько кб данных, тем самым чтение ускорилось бы весьма существенно.
Аноним 02/09/20 Срд 19:57:35 1795684195
>>1795656
Полезная инфа, спасибо. Перепишу в свободное время.
Аноним 03/09/20 Чтв 04:40:02 1795870196
>>1788563
> пить смузи, растить жиденькую бородку, быть на хайпчике, писать на жопаскрипт, обсуждать модные и "ПРАГРИССССИВНЫЭ" ФРЭЙМВОРКИ

Пиздец, нахуй так жить?

мимомобильщик, который "ебает" всякие железки (не ардуино) все свое свободное время и которому это заходит пиздец как на ура, больше чем мобайл
Аноним 03/09/20 Чтв 04:41:24 1795873197
>>1788565
Респект тебе, дядька.
Аноним 03/09/20 Чтв 04:50:15 1795877198
>>1788035
Кстати, я пока занимаюсь этим как увлечением. Хотя рассматриваю сделать это основным делом (я уже в сфере 3.5 года вчерашний штудэнт, работать попиздовал еще в универе если че, епта).

Просто реальность такова, что не одними деньгами, анонче. Есть ещё то, что у тебя в мозгу и душе.
Аноним 03/09/20 Чтв 09:18:21 1795947199
Аноним 03/09/20 Чтв 09:49:30 1795968200
>>1795870
Молодец возьми с полки пирожок лол
Аноним 03/09/20 Чтв 10:59:38 1796053201
>>1795947
Там две ошибки.
Во первых, sizeof(char) это один байт. Ты выделяешь один байт и пишешь в него строку.
Во вторых, sizeof(temp) вернёт тебе 4 или 8 - в зависимости от того, 32 или 64 бита приложене.

Используй хотя бы strlen(bar) чтобы посчитать размер строки.
Аноним 03/09/20 Чтв 11:00:55 1796057202
>>1796053
>Используй хотя бы strlen(bar) чтобы посчитать размер строки.
И не забудь прибавить к нему единицу, чтобы для терминального '\0' было место. А так твоя программа не только неправильно работает, но разрушает память.
Аноним 03/09/20 Чтв 11:56:35 1796131203
>>1796053
>Там две ошибки.
>>1796057
>А так твоя программа не только неправильно работает, но разрушает память.
Что?

Я думаю, что в строке спец-символы. Надо их правильно экранировать. Только вот не соображу как.
Аноним 03/09/20 Чтв 12:35:43 1796178204
>>1796131
Не копротивляйся. Спецсимволы ты правильно экранировал.
Перечитай >>1796053 и >>1796057
Там исчерпывающий ответ.
Аноним 03/09/20 Чтв 12:57:48 1796195205
>>1796131
Ты выделяешь память для пустой строки - массив char из одного байта, в аккурат под терминальный ноль.

В этот массив функция sprintf пишет четыре байта и тем самым разрушает память.

Чтобы понять где ты накосячил, выведи на экране значения sizeof(char), sizeof(char*) и sizeof(bar) - всё поймёшь, если не дурак.
Аноним 03/09/20 Чтв 13:30:19 1796225206
Аноним 03/09/20 Чтв 14:15:43 1796290207
Аноним 03/09/20 Чтв 21:48:45 1796757208
Вопрос от начинающего программиста: хочу сделать карту со связанными локациями, какой класс лучше использовать?

Подробнее: есть карта с локациями типа CHAR, каждая локация связана с несколькими соседними, в результате образуя сеть связей между этими точками. При этом сама связь может иметь одно из 4х свойств: автодорога, поезд, пароход, авиа.
Например: локация Берлин (точка Б) связана с Лондоном (Л) по морскому пути, с Парижем (П) железнодорожным, с Веной (В) автомобильным, а с Москвой (М) авиасообщением. Вот такая карта должна получиться к примеру. Важно, что связь не каждый с каждым на карте, а только сосед с соседом и поэтому чтобы добраться из точки А в точку С нужно преодолеть ряд других точек.

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

Опыт в создании приложений небольшой, но имеется, поэтому основы я знаю, а вот со связанными списками особого опыта нет, кроме совсем уж простых приложений. Данная карта важна, т.к. на основе неё дальше всё и будет строиться и вот с "дальше" у меня проблем нет. А вот с картой есть :)

Если у кого есть какие идеи или опыт создания подобных карт, то буду очень рад услышать совет.
Аноним 03/09/20 Чтв 22:30:24 1796789209
>>1796757
Гугли a-star поиск по графу.
Аноним 04/09/20 Птн 00:56:04 1796893210
image.png 21Кб, 639x424
639x424
>>1796757
Сделай структуру и назови её route_t
Внутри структуры определи два указателя на локации и поле, определяющее тип транспорта. Такой структурой ты опишешь любой маршрут. А если чего нехватает, то добавишь в эту структуру. Например, время в пути, цена билета и т.д.

Сделай структуру локации
Внутри структуры имя локации, количество активных маршрутов и массив из, например, 10 указателей на структуры маршрутов. Можно в локации даже не хранить количество маршрутов, а считать количество ненулевых указателей в массиве.

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

Возможно на картинке пример скомпилится сразу - не проверял его.

.
.
Аноним 04/09/20 Птн 05:07:13 1796946211
>>1796757
>связь может иметь одно из 4х свойств: автодорога, поезд, пароход, авиа.
А домики будут набигать?
Аноним 04/09/20 Птн 08:39:56 1796975212
>>1796757
> одно из 4х свойств
Вот хорошо, можно в младшие биты указателя засунуть... Кхе-хе. Гм, о чем это я?
Аноним 04/09/20 Птн 10:23:33 1797015213
>>1796975
> Гм, о чем это я?
Деды так делали, а затем память стала дешёвая и каналы передачи данных быстре.
Аноним 04/09/20 Птн 12:40:53 1797103214
>>1797015
>а затем память стала дешёвая и каналы передачи данных быстре.
а программисты стали очень тупыми.

Базы данных на си не пишут.
Аноним 04/09/20 Птн 14:12:16 1797181215
>>1797103
>Базы данных на си не пишут
Чегобля?
Аноним 04/09/20 Птн 14:34:10 1797206216
>>1797103
почти все существующие бд написаны на сях, маня
Аноним 04/09/20 Птн 14:37:15 1797214217
>>1797206
>>1797181

Наверное, он спутал язык программирования с языком запросов.
Аноним 04/09/20 Птн 15:06:00 1797245218
в стандарте есть, что первый элемент структуры начинается с её 0 смещения (если кастануть в char+/void+). так что можно лепить заголовки разным структурам. но что насчёт второго элемента? если это, например массив разной длины (у разных структур разный, с описанием в заголовке) + разносортные данные после. можно ли полагаться на то, что они по одному адресу будут? или про это ничего не сказано.
Аноним 04/09/20 Птн 16:02:10 1797310219
да друк много наверное людей зашло такой-то эффективный спам
Аноним 04/09/20 Птн 16:38:09 1797346220
>>1797245
Чево?

struct { char a, b; } s1;
struct { char a; int b; } s2;
s1.b может быть по смещению 1, s2.b --по смещению 4.
Аноним 04/09/20 Птн 18:10:03 1797409221
>>1797346
#pragma pack(1)
Или чота такое.
Аноним 04/09/20 Птн 18:36:56 1797430222
>>1797346
да ты что, как интересно.
Аноним 04/09/20 Птн 18:38:36 1797432223
struct { char a; int b[2] ... } s1;
struct { char a; int b[123] ... } s2;

вот о чём я говорю. что говорит по этому поводу стандарт?
04/09/20 Птн 18:40:07 1797434224
>>1797432
Говорит, что структуры несовместимы. Они совместимы, если одна вложена в другую, или если они почленно совпадают (включая имена).
Аноним 04/09/20 Птн 18:42:12 1797435225
>>1797434
ну, тогда static_assrt() по старинке и в путь.
Аноним 04/09/20 Птн 18:59:36 1797441226
Аноним 04/09/20 Птн 19:53:36 1797468227
>>1797432
Здесь b будут по одному смещению. Если нет--компилятор выкидывай.
Аноним 04/09/20 Птн 20:00:48 1797474228
>>1797468
экзистенциально да, будут. но дело в том, что C - это не просто язык описания естества, но метафизики.
Аноним 04/09/20 Птн 20:07:05 1797477229
>>1786992 (OP)
Чики, двощ. Порекомендуй IDE под сишечьку.
Аноним 04/09/20 Птн 20:10:12 1797481230
Аноним 04/09/20 Птн 20:11:28 1797484231
Аноним 04/09/20 Птн 20:33:55 1797505232
Аноним 04/09/20 Птн 21:47:40 1797584233
image.png 20Кб, 956x248
956x248
Аноним 04/09/20 Птн 21:47:57 1797585234
Аноним 05/09/20 Суб 05:28:04 1797794235
>>1797585
я вот тоже раньше думал, типа, вим-емакс - это сложно или старо-ограничено; сидел на кодблоксе.

я со смехом плюю себе в лицо. хотел бы я вам посоветовать сходу переходить на _нормальные_ _редакторы_, но кажется, нужно поиметь опыт чтобы понять разницу.
Аноним 05/09/20 Суб 06:55:18 1797817236
Аноним 05/09/20 Суб 12:33:34 1797896237
320px-Quicksort[...].png 23Кб, 320x640
320x640
Поясните за qucksort нашёл это на вики.

4-ка - опорный элемент.

И вот я нихуя не понимаю какого хуя 4 не меняется местами с 7-кой.

Смотрите: 3 < 4 это истинно. Увеличиваем индекс на 1
7 > 4 Следовательно меняем местами 7 и 4. 7-ка уходит в конец, а 4-ка на место с индексом 1.

Какого хуя они тут как-то сдвигают 4-ку постоянно.
Аноним 05/09/20 Суб 12:34:23 1797898238
>>1797896
Я имею в виду второй шаг сверху. 4-ка должна сдвинуться на место 7-ки согласно алогоритму, а не на предпоследнее. Какие-то манярасчёты.
Аноним 05/09/20 Суб 12:38:56 1797905239
Unbenannt5.PNG 14Кб, 961x499
961x499
>>1797898
>>1797896
Вот ещё скрин как этот же массив обработан моей программой на алгоритме быстрой сортировке.

Принт делится на 2 группы
1. Массив целиком
2. Рассматривый в данный момент подмассив.

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

И вот программа сортирует правильно, но не так как на этом манярисунке из вики.
Аноним 05/09/20 Суб 12:53:53 1797919240
>>1796893
чтo за язык на пике?
Аноним 05/09/20 Суб 13:00:20 1797927241
Аноним 05/09/20 Суб 13:08:31 1797934242
>>1797927
чтo значат звёдoчки?
Аноним 05/09/20 Суб 13:23:29 1797947243
Аноним 05/09/20 Суб 13:25:44 1797950244
>>1797934
Звёздочка в имени признак авторитета. Цифры в квадратных скобках — количество ходок по оффсету в условных единицах.
Аноним 05/09/20 Суб 13:40:10 1797961245
>>1797947
тьфу блин, привык видеть их видеть без прoбелoв. спасибo анoн пoнял
Аноним 05/09/20 Суб 14:01:22 1797980246
>>1796893
нихуя твoй кoд не мoгу пoнять. хoтя си хoрoшo знаю дoвoльнo
Аноним 05/09/20 Суб 14:23:08 1797986247
>>1797980
Ты плохо знаешь си. На картинке довольно простой код, только отформатирован будто ему за табуляции платят
Аноним 05/09/20 Суб 14:54:27 1797998248
>>1797986
не пoнимаю в первoй структуре куда ссылаются from и to
Аноним 05/09/20 Суб 15:21:18 1798010249
>>1797998
ну это типа указатель from типа структура локация.

реально надо подучить структуры и союзы в сишечке.
Аноним 05/09/20 Суб 16:05:43 1798043250
>>1797998

Если я правильно понимаю, то где-то выше в исходнике была создана структура location , что при этом создало новый тип под названием "struct location".
Далее получается так, что структура route состоит из 3 элементов: первые 2 элемента - это указатели from и to (оба являются указателями на тип struct location), 3 элемент - это enum.

Прошу поправить меня, если я неверно расписал.
Аноним 05/09/20 Суб 16:08:56 1798045251
>>1798043
>то несколькими строками ниже создаётся структура location

самофикс
Аноним 05/09/20 Суб 16:29:11 1798067252
>>1798043
в этих структурах даже oпытный челoвек запутаться мoжет oсoбеннo кoгда кoд не твoй.

алсo зачем oн указатели юзает? их нужнo юзать на oпределённые случае, здесь я такoгo не вижу.

сам юзаю в си указатели кoгда динамические массивы сoздаю
Аноним 05/09/20 Суб 17:28:15 1798105253
ни с кем не буду судиться за рекламу чёрнoгo мягкoгo химашевскoгo плана. слеплен с любoвью как шoкoлад нестле упакoван в гoрах увезён на oсле
Аноним 06/09/20 Вск 01:58:51 1798451254
>>1798067
>алсo зачем oн указатели юзает?
Поотому что помнит компьютеры с 16 битной шиной адреса.
Аноним 06/09/20 Вск 02:12:04 1798452255
>>1798043
Всё правильно.
А если добавить в каждую структуру указатель на next, то получится однсвязный список.
А если добавить ещё указатель на prev, то получится двусвязный список.
Аноним 06/09/20 Вск 02:15:34 1798453256
>>1798043
>при этом создало новый тип под названием "struct location"
Нет. Имя новых типов loation_t и route_t
Аноним 06/09/20 Вск 06:18:34 1798476257
Аноним 06/09/20 Вск 09:16:21 1798499258
>>1796789
>>1796893
Спасибо за идеи и прототип кода! У самого тоже появилась похожая идея со структурой, у которой внутри будет список указателей на другие структуры.

Буду пробовать все идеи и о результатах потом напишу :)
Аноним 06/09/20 Вск 09:28:10 1798503259
>>1798453

Пока не соглашусь с этим (но мне надо будет снова прочитать соответствующую инфу).
Если я правильно помню, то typdef не создаёт новых типов. typedef лишь позволяет создать, скажем так "ярлык", чтобы использовать именно его, а не писать каждый раз словосочетание "struct location", "struct route".
Аноним 06/09/20 Вск 11:24:14 1798545260
Анон, в чем разница между прошивкой и драйвером? Типа, драйвер юзает API ядра операционки для взаимодействия с девайсом, а прошивка работает на голом железе и хранится в ROM или флэш памяти, да? Или есть еще принципиальные различия?
Аноним 06/09/20 Вск 13:19:52 1798613261
>>1798545
Драйвер может быть частью прошивки.
Например, когда ты перешиваешь смартфон на Андроиде, то прошивка включает в себя всё - я идро, и драйвера, и сам Андроид, и приложения.


Аноним 06/09/20 Вск 13:40:10 1798622262
>>1798503
typedef создаёт новый тип данных. Впрочем компилятору неважно что внутри будет. Для него метка будет означать какой-то объявленный тип и на этом все.
Ты можешь сделать typedef struct huy huy_type;
И структуру определить где-то в другом месте. В принципе компилятор будет знать о таком типе и ты сможешь его использовать без объявленной структуры, но что оно внутри за вундервафля - без определения не узнаешь.
Короче говоря ты можешь юзать ярлык без определения оригинала, что в принципе можно считать за самодостаточность такого нового созданного типа.
Аноним 06/09/20 Вск 14:43:21 1798665263
Аноны, посоветуйте материала по указателям. Иногда путаюсь а мои функции в один момент то хавают простой указатель то требуют разыменовывать, из-за этого постоянно путаюсь.
Аноним 06/09/20 Вск 15:32:31 1798691264
>>1791021
Понятно. А ещё в каких больницах ты бывал?
Аноним 06/09/20 Вск 17:10:00 1798797265
Аноним 06/09/20 Вск 17:19:03 1798808266
Сап, сяч. А как лучше прогонять массив чего-либо - оффсетом (т.е. a[offset] или ptr(a+offset) ) или же новым адресом, т.е. pa = a?
Аноним 06/09/20 Вск 17:28:20 1798828267
>>1791019
>хайтек
>сделать крутого робота, чтобы собирал тупое говно
>дешево, быстро и много, тупого говна
Найс рофлтек.
Аноним 06/09/20 Вск 18:28:11 1798898268
>>1798808
Первые два способа всегда были эквивалентны. а++ мог быть эффективнее, но современные кунпеляторы умеют преобразовывать одно в другое по своим соображениям.
Аноним 06/09/20 Вск 18:41:51 1798917269
>>1798622
>typedef создаёт новый тип данных

Уверен абсолютно, что ты не прав в этом. Я прочитал 3 абзац "Semantics" главы 6.7.8 ISO/IEC 9899-2011 и 9899-2018; вот цитата оттуда A typedef declaration
does not introduce a new type
, only a synonym for the type so specifed.
Аноним 06/09/20 Вск 21:10:37 1799043270
>>1798917
Да, так и есть. Удобно устанавливать синонимы, привожу как пример, на структурные типы, дабы не писать "struct $(name)", а например "$(name)_t". Выглядит компактнее, лаконичнее (?), "современно и молодёжно".
Аноним 06/09/20 Вск 21:13:09 1799046271
Допо>>1799043
Лаконичность помечена со знаком вопроса, т.к это острый вопрос. Решайте сами, как будете писать. Я высказался, как думаю на текущий момент.
06/09/20 Вск 21:55:13 1799076272
>>1798808
x = *ptr; ptr++; самое эффективное, даже с современными умными компиляторами. Из-за алиасинга остальные варианты могут потребовать вычисления адреса каждый раз, тогда как с инкрементом указателя никаких подводных не может быть в принципе.
07/09/20 Пнд 08:24:23 1799215273
>>1799046
Линус ругался на такое, дескать, слово struct должно напоминать, что тип представляет что-то большое.
Аноним 07/09/20 Пнд 10:22:47 1799253274
>>1799215
>Линус
А что, он дохуя авторитет? Ну вот серьёзно.
07/09/20 Пнд 10:47:06 1799266275
Аноним 07/09/20 Пнд 10:52:01 1799272276
>>1799253
Ну как сказать... Создатель ныне самого популярного ядра ОС. Защита от долбоебов: рофл про 3% на десктопе неактуален, ибо Линукс есть везде - в эмбедщине, роботах, интернете вещей, серверах, роутерах, телефонах (ведроид), спутниках и т.п., оверолл больше компьютеров в мире крутятся на Линуксе, нежели на какой-либо другой ОС.
Ну и создатель гита, которым пользуются 90% девелоперов по всему миру. Ни разу не авторитет, да.
Аноним 07/09/20 Пнд 11:22:23 1799305277
>>1799266
>>1799272

Ну не знаю. Мне он как человек не нравится. Да и закапавыался я с головой в код ядра Linux. И в Windows DDK тоже закапывался. Нет в ядре Linux (почти нет) таких мест, коорыми можно восхищаться. Между тем, внимательное изучение заголовочных файлов из DDK сразу даёт понять разницу в качестве ядер NT и Linux.

Насчёт git - ну да, удобно. И возможностей поболе чем у svn, но это как бы не извиняет Торвальдса, за его скверный характер.
[
Аноним 07/09/20 Пнд 11:31:57 1799313278
>>1799305
>Между тем, внимательное изучение заголовочных файлов из DDK сразу даёт понять разницу в качестве ядер NT и Linux.

Это звучит интересно.
Можешь запостить небольшой сравнительный example?
Аноним 07/09/20 Пнд 11:38:47 1799323279
>>1799305
по DDK ты не можешь в полной мере оценить код всего ядра, лолшто. Закрытый софт есть закрытый софт, ничего не поделаешь.

То, что у него скверный характер, это всем известно, но это не отменяет того факта, что у него есть определенный авторитет.
Аноним 07/09/20 Пнд 11:56:11 1799344280
>>1799313
>Можешь запостить небольшой сравнительный example?

Увы, я давно закапывался туда - в году эдак 2003. Чего там говорить если уже лет как десять, наверное, с момента переименования DDK в WDK.

Со списками в DDK/WDK очень красиво сделано. Множество приёмов, которые с точки зрения начинающего программиста можно назвать "хакерские".

Ах да, что особенно нравится в ядре Windows это вот эта штука - https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_irp
Для неподготовленного глаза выглядит конечно не очень, но если понять как это работает, то видно красоту архитектуры.

Лучше можно конечно спроектировать, но это уже другой разговор.

Аноним 07/09/20 Пнд 12:22:16 1799379281
>>1799344

Там в описании указано "The IRP structure is a partially opaque structure..."
Что они имеют в виду под "partially opaque structure"?
Аноним 07/09/20 Пнд 12:31:46 1799395282
>>1799379
https://en.wikipedia.org/wiki/Opaque_data_type

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

07/09/20 Пнд 12:55:26 1799416283
>>1799305
Качество ядра нт вызывает сомнения, как бы красиво ни выглядели его заголовки..
Аноним 07/09/20 Пнд 13:03:39 1799422284
>>1799416
Обосновать своё утверждение можешь?
Аноним 07/09/20 Пнд 13:24:42 1799437285
>>1799305
Не согласен, в ядре Линукса есть много красивых решений. Умудрились даже высрать ООП дизайн в языке без ООП, не притягивая блоатед плюсы. Та же реализация макроса container_of - чистый и красивый хакинг. И такого много, на самом деле. За 4 года разработки драйверов на Линукс, мне пришлось прочесть достаточно кода в ядре.
Аноним 07/09/20 Пнд 13:29:24 1799442286
>>1799305
У него прекрасный, замечательный характер. Нет ничего постыдного в том чтобы показывать фак нвидии или хуесосить тех кто шлет в ядро говнокод.
Аноним 07/09/20 Пнд 13:49:52 1799458287
>>1799215
Не об этом речь была, но ладно...
Аноним 07/09/20 Пнд 13:49:53 1799459288
>>1799437
>Та же реализация макроса container_of

Можешь започтить этот кусочек кода или кинуть ссылку на него?
Аноним 07/09/20 Пнд 14:20:04 1799496289
image.png 34Кб, 811x148
811x148
>>1799459
Пикрил
В целом, это ищется в гугле за наносекунду, поэтому мог бы и сам, но ладно.

Примечательно, что довольно большая часть ядра Линукса - это не ANSI Си, а разномастные хаки, в т.ч. основанные на расширениях компилятора GCC, выжимающие максимум производительности.
Аноним 07/09/20 Пнд 15:03:42 1799536290
>>1799442
>Нет ничего постыдного в том чтобы показывать фак нвидии

> Показывать средний палец компании, которая единственная производит норм видюхи с норм драйверами, втч под линух, где у единственных всё из коробки без бубнов, и благоговеть от лизонькиных-писенькиных красных поделий с кривыми, шо проприетарными, шо швабодными, шо под линукс, шо под шиндошс дровами и единственное достоинство которых - греть ЧСВ амудебилов вроде сралкаша и кулича, ммммммм.
Аноним 07/09/20 Пнд 15:08:45 1799539291
>>1799323

>по DDK ты не можешь в полной мере оценить код всего ядра, лолшто. Закрытый софт есть закрытый софт, ничего не поделаешь.

По торрентам еще с каких-то диких нулевых гуляет код вынь2к. Эти исходы чуть ли не на дисках на пиратских развалах продавали, емнип.
Аноним 07/09/20 Пнд 15:10:55 1799544292
>>1799496
>Примечательно, что довольно большая часть ядра Линукса - это не ANSI Си, а разномастные хаки, в т.ч. основанные на расширениях компилятора GCC, выжимающие максимум производительности.

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

И местные байтолюбы считают это чем-то хорошим, даже великолепным?

Ну ну.
Аноним 07/09/20 Пнд 15:15:02 1799552293
>>1799544
>ногострельным языком

Какой же язык, который ты считаешь не ногострельным, следует использовать, по твоему мнению, для написания ядер ОС?
Аноним 07/09/20 Пнд 15:20:30 1799568294
Аноним 07/09/20 Пнд 15:40:19 1799610295
>>1799544
Ты не напишешь МАКСИМАЛЬНО ЭФФЕКТИВНУЮ операционную систему на языке без UB. Даже высеры раста вынуждены абузить unsafe (чекай сорц redox), и то это будет медленнее так или иначе. Почему так - на дваче не объяснить, пройди курс теории вычислений в нормальном, не СНГшном, ВУЗе, и ты поймешь о чем я говорю.
Аноним 07/09/20 Пнд 16:08:08 1799632296
>>1799568
>Только рОст
смешно, вопросов больше не имею
Аноним 07/09/20 Пнд 16:28:44 1799647297
>>1799552
В принципе, С++ можно. Дело не столько в языке, сколько в дизайне системы и используемых алгоритмах. Так-то С++ обратно совместим с Си. Особливо если во всю пользовать extern "C" . Нюансы конечно есть, но их не так много.
Аноним 07/09/20 Пнд 16:31:29 1799649298
>>1799552
Паскаль легко может быть использован.
Но это не совсем правильно.
Правильно реализовать ядро в виде множества сервисов, которые обмениваются между собой сообщениями. И тогда для написания ядра ОС сгодится любой язык программирования. Даже скриптовый.
Аноним 07/09/20 Пнд 16:57:24 1799667299
>>1799647
обратная совместимость с си это самое некрасивое и костыльное место всего дизайна крестов как языка. Разве что совсем дурак будет этим заниматься
Аноним 07/09/20 Пнд 17:05:10 1799672300
>>1799667
Чего бы тогда тебе на C# не переползти? Это как С++, только без указателей.
Аноним 07/09/20 Пнд 17:53:16 1799698301
>>1799672
При чем здесь указатели и сися? Болен чем-то дружок?
Аноним 07/09/20 Пнд 18:03:54 1799705302
Аноним 07/09/20 Пнд 19:24:40 1799748303
Какой ide пользуетесь? Или Vim?
07/09/20 Пнд 20:22:16 1799803304
>>1799437
> Та же реализация макроса container_of - чистый и красивый хакин
Это та же самая, которая в винде CONTAINING_RECORD, и которую изобрели примерно вместе с сишкой задолго до линусов?
Аноним 07/09/20 Пнд 20:29:11 1799811305
Аноним 07/09/20 Пнд 20:32:56 1799818306
Нормальная ли это практика юзать функцию которая возвращает значение но не назначать его никуда? Или лучше юзать какую-нибудь мусорную переменную/другую функцию?
Аноним 07/09/20 Пнд 20:34:39 1799820307
>>1799818
>юзать функцию которая возвращает значение
Ну фнкция должна только успех тру или фалсе возвращать, а значения через параметр
Аноним 07/09/20 Пнд 20:36:51 1799825308
>>1799748
Зависит от проекта (-ов) и текущих задач.
07/09/20 Пнд 20:43:02 1799842309
>>1799818
Да, нормальная, но чтобы ты страдал в C2x притащили/притащат [[nodiscard]], дебилы понатыкают их везде, и компилятор будет ругаться.
Аноним 07/09/20 Пнд 20:57:37 1799866310
>>1799649

>Правильно реализовать ядро в виде множества сервисов, которые обмениваются между собой сообщениями

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

Но чистые сообщения не работают, драйвера приходится монолитить.
Аноним 07/09/20 Пнд 21:13:39 1799887311
>>1799866
>Но чистые сообщения не работают, драйвера приходится монолитить.
Это распространённое заблуждение. Но я не буду тебя переубеждать. Сегодня точно не буду.
Аноним 08/09/20 Втр 11:17:03 1800369312
>>1799536
Дурачок, вот если бы ей фак не показали, то и не делала бы.
Аноним 08/09/20 Втр 11:27:15 1800387313
>>1799887
Но он прав, да это и понятно - "просто сообщения" в вакууме не бывают, это накладные расходы.
Аноним 08/09/20 Втр 11:30:03 1800392314
>>1799705
Paint.net так работает, помню как его хаяли за то, что его пихали как пример что на .net можно писать быстрые приложения, обрабатывающие массивы из миллионов пикселей в секунду, а на практике там такое жульничество.
Аноним 08/09/20 Втр 11:31:34 1800396315
>>1799818
Зааисит от того что делает функция, иногда игнор говорит о неучтенной ошибке.
Аноним 08/09/20 Втр 11:32:36 1800398316
Аноним 08/09/20 Втр 12:17:41 1800438317
>>1800387
Ты тоже заблуждаешься.
Аноним 08/09/20 Втр 12:19:29 1800439318
>>1799818
Нормально.
printf возвращает число выведенных байт. Ты часто пользуешься результатом printf?
Аноним 08/09/20 Втр 15:45:23 1800759319
>>1800438
Нет. Все абстракции все равно на низком уровне требуют имплементацию, ABI.
Аноним 08/09/20 Втр 15:46:39 1800763320
>>1800439
> 2k20
> ты часто пользуешься printf
Нет.
Аноним 08/09/20 Втр 16:08:41 1800794321
Аноним 08/09/20 Втр 16:10:33 1800796322
>>1798917
Однохуйственно.
Ты создаёшь новую запись в таблице символов при компиляции этим. Что синоним, что линк - запись появилась, компилятор работает как с новым типом, хоть и указывающим на другой составной тип. Удачи читать стандарты которые не работают ИРЛ.
Аноним 08/09/20 Втр 16:18:51 1800805323
>>1800794
Сообщения - это циклический буффер, в который пользователи могут писать и читать. А значит, те же блокировки.
Аноним 08/09/20 Втр 16:25:53 1800814324
1514800934903.png 10Кб, 414x266
414x266
Аноним 08/09/20 Втр 16:27:37 1800818325
>>1800814
Ты дебил, уйди. И почитай что такое translation unit.
Аноним 08/09/20 Втр 16:28:55 1800821326
>>1800818
>МААМ Я ТРАЛЮ ДВАЧ, ПОЧЕМУ ОНИ НЕ ТРАЛЯТСЯ
Нет ты.
Аноним 08/09/20 Втр 16:30:55 1800825327
>>1800805
Подмечу, что можно сделать lockless очередь. Но тогда часть перфа потеряется в другом месте. Хотя и не так сильно. Apple использует микроядро, и вроде не бегут с него. Впрочем, драйвера у них работают внутри отдельного сервиса в котором очередей нет.
Аноним 08/09/20 Втр 16:42:59 1800841328
>>1800825
lockless вроде бы бывает только если ровно один записывает и один читает, а с сообщениями такого не будет.
Аноним 08/09/20 Втр 16:51:59 1800860329
>>1800841
В гугле хватает multiple producer, single consumer lockless очередей.
Проблема ещё в валидации сообщений. Кинул неясный сервис другому сообщение, а оно и поставило раком всю систему. Рано или поздно выйдет, что система только тем и занимается что валидирует сообщения, да и дергает атомарные инструкции,которые инвалидируют весьма часто L1 кэш в seq_cst, в то время как монолитное ядро лишь локается на спинлоках/мьютексах/rcu, и просто работает.
Аноним 08/09/20 Втр 17:05:15 1800876330
>>1800860
А, ну да, там же еще CAS в железе нужен.
> As an example, this code almost certainly needs a "memory" clobber. Not to ensure the correct functioning of cmpxchg16b, but because the goal is probably to sync threads, which means you want all registers flushed before notifying the other thread.
Лол, вся суть, пихать мемори барьер, к инструкции которая и так дохуя тактов жрет, вот тебе и лок фри.
Аноним 08/09/20 Втр 17:24:24 1800903331
>>1800794
Обмен информацией между процессорами требует (затратной) синхронизации, даже если это обозвать обменом сообщениями.
Аноним 08/09/20 Втр 17:29:31 1800908332
>>1800876
Вот и выходит несостоятельность делать high performance ядро ОС на микроядре.
Аноним 08/09/20 Втр 17:42:25 1800921333
>>1800876
Мне кажется, что зафлашить store queue намного быстрее, чем пару тройку раз сменить контекст на блокировках.
Аноним 08/09/20 Втр 18:18:18 1800950334
>>1800908
именно поэтому все RTOS имеют монолитное ядро. Хз че тут шизоиды срут про микроядро, из него максимум не выжмешь какне усерайся
Аноним 08/09/20 Втр 18:43:43 1800970335
Аноним 08/09/20 Втр 19:14:55 1800998336
>>1800818
Он тебе так-то ясно продемонстрировал, что нового типа не получилось, только синоним, какого хуя ты жопой начал вилять?
Аноним 08/09/20 Втр 19:18:40 1801004337
>>1800805
>Сообщения - это циклический буффер, в который пользователи могут писать и читать. А значит, те же блокировки.

В принципе вот тут и закопан корень заблуждений. Я говоро о синхронных сообщениях, когдв блокируется передатчик сообщения, если не готова принимающаю сторона, и наоборот - приёмник сообщений блокируются пока кто-то не пошёл ему сообщение.
Аноним 08/09/20 Втр 19:19:19 1801006338
>>1800950
>все RTOS имеют монолитное ядро
Чушь.
Аноним 08/09/20 Втр 19:47:02 1801029339
>>1801004
Ахуенно, а теперь расскажи как будет работать твоя "блокировка" когда двое посылают сообщение одному и тому же.
Аноним 08/09/20 Втр 19:57:57 1801046340
>>1801029
>Ахуенно, а теперь расскажи как будет работать твоя "блокировка" когда двое посылают сообщение одному и тому же.
Если приёмник не готов, блокируются оба передатчика. Иначе сообшение посылает тот, у кого выше приоритет, второй
посылающий блокируется средствами микроядра.

Аноним 08/09/20 Втр 20:05:59 1801051341
>>1801046
>второй посылающий блокируется средствами микроядра.
Давай, рассказывай как.
Аноним 08/09/20 Втр 20:27:25 1801066342
>>1801006
ну да, куда мне до тебя, с моими-то четырьмя годами опыта разработки софта под RTOS для спутников :-)
Аноним 08/09/20 Втр 20:36:18 1801073343
Аноним 08/09/20 Втр 20:38:41 1801078344
>>1801066
Предлагаешь "писюнами меряться"?
Аноним 09/09/20 Срд 11:26:25 1801411345
Народ, стоит ли читать K&R если полностью прошёл Прата? И чем вообще теперь заниматься? Даже не представляю.
Аноним 09/09/20 Срд 11:33:55 1801421346
>>1801411
Хочешь научиться программировать на чем-то - пиши код, не читай книги. Книги полезны как большой справочник.
Аноним 09/09/20 Срд 11:36:54 1801422347
>>1801421
Вот я и думаю - Прата всю доступную теорию даёт или там чего-то нет? А что вообще писать можешь посоветовать? Идей почти нет.
Аноним 09/09/20 Срд 12:55:33 1801485348
>>1801422
>Идей почти нет.
Иди в МакДак
Аноним 09/09/20 Срд 13:02:55 1801495349
>>1801485
Так и знал что писать сюда было ошибкой.
Аноним 09/09/20 Срд 13:20:02 1801524350
>>1801411
Читай исходник пинуса, бсд или иной софт, который прожил не меньше десятка лет и был написан коллективом
Аноним 09/09/20 Срд 13:40:04 1801539351
>>1801524
Опять троллим тупостью? Как можно человеку только осилившему прату советовать читать опенсорс говно вроде пинукса? Мало того что он нихуя не поймет, ты ему еще и советуешь вдохновляться дырявым стилем ленивых хуесосов вроде самого пинуса
Аноним 09/09/20 Срд 13:47:34 1801545352
>>1801495
Начинать вкатываться в айти вот что было ошибкой.
Аноним 09/09/20 Срд 15:00:51 1801608353
>>1801539
А что читать/кодить в таком случае?
>>1801545
Но ты ведь всё ещё здесь, а не в JS треде.
Аноним 09/09/20 Срд 15:26:10 1801634354
>>1801608
Вопрос "что кодить" просто вымораживает.
Не знаешь что писать - бери любую задачу со списками, затем с бинарным деревом, затем с небинарным деревом.
Затем приходи сюда, отчитывайся и получишь новое задание. А пока не сделаешь - не приходи.
Аноним 09/09/20 Срд 15:31:49 1801640355
>>1801608
Так зачем тебе яп если ты не знаешь что кодить?
У меня вот идей и задач на ближайшие год-полтора напридумывано.
Аноним 09/09/20 Срд 15:36:34 1801643356
>>1801608
>читать
CLRS и что-нибудь по архитектуре ЭВМ.
>кодить
>>1801064 →
Ещё, наверное, стоит заглянуть в асмотред (в шапку).
Аноним 09/09/20 Срд 17:09:39 1801743357
Аноним 09/09/20 Срд 17:19:28 1801753358
Аноним 09/09/20 Срд 18:04:58 1801807359
>>1801743
>Шахматы
Позиционная игоря для пидоров, там никакого ИИ и в помине нет. Бери книжку эндшпилями и прочей залупой для задротов и вперед.
мимо
Аноним 09/09/20 Срд 18:28:33 1801822360
>>1801807
Чел, ты..
Там самое интересное байтоебство с битфилдами.
Аноним 09/09/20 Срд 18:46:14 1801870361
>>1801822
>Там самое интересное байтоебство с битфилдами
Вкусовщина. Приятней когда игра интеллектуальная, с элементами случайности, какой нибудь Бридж или Преф.
Аноним 09/09/20 Срд 18:47:33 1801872362
>>1801822
>байтоебство с битфилдами
З.ы. чому байтоебишь а не подключишь нормальную БД?
Аноним 09/09/20 Срд 18:47:40 1801874363
>>1801822
Только битфилды к байтоёбству не относятся
Аноним 09/09/20 Срд 18:57:31 1801881364
>>1801874
Битборды, конечно.
еще спиздани что битоебство к байтоебству не относится
Аноним 09/09/20 Срд 20:29:18 1802019365
Аноним 09/09/20 Срд 20:44:56 1802039366
>>1801753
>Не осилишь?
Не знаю, не пробовал.
Аноним 09/09/20 Срд 22:46:46 1802172367
>>1802019
Да не, совсем не толсто.
Аноним 09/09/20 Срд 22:53:03 1802180368
>>1801881
Байтоёбство - движение реальных байтов
Битборды с битфилдами это вообще другое
Аноним 09/09/20 Срд 22:57:51 1802186369
>>1802180
А можно ли на Си пососать битхуй?
Аноним 09/09/20 Срд 23:13:38 1802202370
>>1802186
Зависит от определения
Аноним 10/09/20 Чтв 00:17:36 1802255371
>>1802180
Да не, чел. Битборды - это то самое реальное байтоебство реальных байтов.

// Пример получения интересующих нас битбордов:
uint32_t all_bb = bitboards[IDX_ALL_0] | bitboards[IDX_ALL_1]; //Все занятые клетке доски
uint32_t empty_bb = ~all_bb; //Все свободные клетки доски
uint32_t mam_bb = bitboards[IDX_ALL_0] ^ bitboards[IDX_SIM_0]; //Белые дамки

uint32_t up_right_bb = 0 | ((bb & RANK_1357) >> 4 | ((bb & RANK_2468) >> 5 // Ход белых вверх вправо, чётные горизонтали надо сдвигать на пять, нечётные — на четыре:
;
Аноним 10/09/20 Чтв 00:34:35 1802263372
>>1802255
>Белые дамки
>
Хуянки, маня.
>uint32_t up_right_bb = 0 | ((bb & RANK_1357) >> 4 | ((bb & RANK_2468) >> 5 //
Это в какой шаражке учат так говнокодить?
Аноним 10/09/20 Чтв 00:43:29 1802270373
>>1802263
Ты ошибся тредом, js два блока вниз.
Аноним 10/09/20 Чтв 01:37:59 1802300374
>>1802270
Так это у тебя код в стиле веб-макаки.
Аноним 10/09/20 Чтв 01:42:33 1802302375
>>1802255
>uint32_t up_right_bb = 0 | ((bb & RANK_1357) >> 4 | ((bb & RANK_2468) >> 5
Чё за хуйня со скобками? И потом ты ещё говоришь, что это не говнокод?
Аноним 10/09/20 Чтв 01:50:02 1802307376
>>1802255
Я тебе написал что такое байтоёбство
Битборд это вообще одна из элементарнейших дата структур уже лет 20 как реализуемых на любом из яп
Аноним 10/09/20 Чтв 03:08:08 1802328377
>>1802307
> Я тебе написал что такое байтоёбство
Где? Не вижу.
> Битборд это вообще одна из элементарнейших дата структур уже лет 20 как реализуемых на любом из яп
И что? Твое байтоебство тоже.
Аноним 10/09/20 Чтв 03:09:31 1802330378
>>1802300
Хуйню несешь . Открой заголовочный файл какой нибудь микрухи там то же самое.
Аноним 10/09/20 Чтв 08:23:06 1802402379
>>1802330
Анон, прости, что доебываю тебя, но! Микруха - это сленговое название любой микросхемы, а то что ты имеешь ввиду, имеет называние "микроконтррллер". Или, сокращённо, МК.
Аноним 10/09/20 Чтв 08:24:33 1802403380
>>1799552

JavaScript. И точка.

Правда, чтобы разработать ядро на JavaScript необходимо соблюсти ряд определенных условий касаемо разработчиков такого ядра:
1. Необходимо приобрести цистерну клубничного смузи
2. Нужен гироскутер, а ещё лучше - моноколесо
3. Необходимо соблюдать определенный внешний вид разработчиков: штаны с подворотами, жиденькая бородка
4. Разработчики такого ядра обязательно должны быть прогрессивными: говорить 2к20 вместо 2020, говорить о харассменте, гендерной несправедливости, интерсекциональной трансфобии (!это самое главное), обязательно должны быть ярыми поборниками за экологию и фанатами Греты Тунберг, должны ненавидеть мужланов и маскулинность, должны быть ярыми участниками куколд-движения

Аноним 10/09/20 Чтв 09:49:34 1802423381
>>1802403
Годно, анон. Криканул с утра, спасибо.
Аноним 10/09/20 Чтв 13:14:39 1802553382
>>1802402
Ты прав, в 3 часа ночи такое ляпнул.
Аноним 10/09/20 Чтв 13:33:16 1802557383
Аноним 10/09/20 Чтв 13:34:44 1802558384
>>1802403
ты забыл чтo желательный пoл разрабoтчика тянка или трап
Аноним 10/09/20 Чтв 13:36:17 1802559385
>>1802403
>4. Разработчики такого ядра обязательно должны быть прогрессивными: говорить 2к20 вместо 2020, говорить о харассменте, гендерной несправедливости, интерсекциональной трансфобии (!это самое главное), обязательно должны быть ярыми поборниками за экологию и фанатами Греты Тунберг, должны ненавидеть мужланов и маскулинность, должны быть ярыми участниками куколд-движения
Ты говоришь так, словно байтоебов и кразноглазиков данная проблема не коснулась.
На что там заменят слово "слейв" в линупше? ЧЕРНЫЕ ЖИЗНИ ВАЖНЫ!!!!!
Кого пидорнули с должности президента фсф за то, что спизданул про дела Эпштейна чьто-то в духе "Наверняка эти шлюхи сами с удовольствием шли сосать миллиардеру" КАРАУЛ ВИКТИМБЛЭЙМИНГ!!!
Аноним 10/09/20 Чтв 18:03:35 1802811386
>>1802559
Анон, так никто и не говорит, что не коснулась.

Просто я с этого всего SJW-мрака стебусь. Абсолютно глупое и бессмысленное движение, которому некоторые хипстеры придают слишком много значения.
Аноним 10/09/20 Чтв 18:14:01 1802816387
>>1802811
Такие движения всегда были и будут, как были и будут те, кому нехуй делать.
Аноним 10/09/20 Чтв 18:49:48 1802861388
>>1802559
Где ты проблему увидел? Общество исцеляется от предрассудков.
Аноним 10/09/20 Чтв 20:46:31 1803005389
>>1802330
Там будет путаница со скобками?
Аноним 10/09/20 Чтв 22:49:06 1803110390
1519371412309.png 50Кб, 734x928
734x928
Аноним 10/09/20 Чтв 23:06:20 1803142391
>>1803110
Автор этого кода перестраховался и не очень уверен в приоритетах операций. Если редактор подсвечивает парные скобки, то стерпеть такое можно.

10/09/20 Чтв 23:11:46 1803148392
>>1803142
> Автор этого кода перестраховался
Это не путаница со скобками. Автор этого кода хочет, чтобы любая макака смогла с первого раза правильно прочитать код. А приоритеты сдвиги vs. побитовые знает любой, кто с байтоеблей сталкивался.
Аноним 10/09/20 Чтв 23:43:56 1803169393
>>1802403
Неистово проигрываю.

Ещё могу добавить необходимость в 100 новых библиотек для написания ядра.
Обязательно чтобы каждый был основан на любых других библиотеках из npm. И все ставилось через десяток менеджеров пакетов, которые между собой не совместимы.
Аноним 11/09/20 Птн 00:15:25 1803210394
1529081589577.png 84Кб, 891x993
891x993
>>1803142
Я честно не пойму с чем ты споришь.
Вот я открыл другую либу, для STM32.
Так и выглядит байтоебство (и так же выглядела копипаста с шахматными битбордами).
Аноним 11/09/20 Птн 01:12:17 1803256395
>>1803110
Тут всё правильно со скобками, а в коде выше как раз типичный говнокод макаки с четырьмя открывающими скобками и двумя закрывающими
Аноним 11/09/20 Птн 01:17:18 1803263396
>>1803256
Боже, какой же ты еблан. Естественно в коде не бывает непарных скобок, он даже не скомпилируется. Очевидно же что это ошибка копипаста примера.
Аноним 11/09/20 Птн 01:18:56 1803265397
>>1803263
Ну, если ты не читаешь, что пишешь перед отправкой, то ты как раз на уровне js-макаки находишься
Аноним 11/09/20 Птн 01:22:33 1803269398
>>1803265
Портфель собирай, ближе к экзамену вам расскажут разницу между ошибкой и опечаткой.
Аноним 11/09/20 Птн 01:44:53 1803281399
>>1787010
>MISRA C - это такие рекомендации, как писать код для хуйни, которая может ебнуть
Удивительно, что такой код вообще пишут на C. У него же репутация языка, где выстрелить в ногу - раз плюнуть. Вроде Ada создавалась для подобных целей. Хотя впрочем, кое-какие важные вещи и на ассемблере пишут. Но проверяют 100 раз, конечно.
Аноним 11/09/20 Птн 02:02:02 1803286400
>>1788531
Дядя, а что ты делаешь тогда на двачах? Тебе в Академии Наук надо сидеть, а не тут.
Аноним 11/09/20 Птн 03:17:58 1803302401
>>1803210
Ебать говнокод. Я б в сто тысяч раз лучше написал бы :)
Аноним 11/09/20 Птн 03:28:36 1803303402
>>1803269
Когда ракета наебнется будешь рассказывать про ошибки и опечатки.
Аноним 11/09/20 Птн 08:01:18 1803354403
Я правильно понимаю что структуры - это мини ООП для Си?
Аноним 11/09/20 Птн 08:36:41 1803370404
>>1803354
Ооп есть сахар для структур/массивов с адресами функций
Аноним 11/09/20 Птн 09:00:42 1803374405
>>1803370
Что для регуляри программиста значит ...?
Аноним 11/09/20 Птн 09:57:57 1803389406
>>1803354
Структуры это poor man's замыкания.
Аноним 11/09/20 Птн 10:16:42 1803395407
>>1803354
С одной стороны да, делает код чуть попроще для понимания.
С другой стороны если ты пишешь на Си в ООП стиле, как например сделан проект gtk, то кажется ты свихнулся, тихо страдаешь по крестам и лучше уже выбрать их.
11/09/20 Птн 21:17:28 1803931408
>>1803281
От логических ошибок тебя никакой язык не застрахует. Нужен опытный программист. И тот же самый опытный программист обычно уже миллион раз обжегся на сишке, и более-менее умеет качественно на ней писать.
Аноним 12/09/20 Суб 00:13:36 1804060409
>>1787708
> Тебе сам стандарт или реализацию.
Сам стандарт: то есть IEEE 754-2019.pdf.
Аноним 12/09/20 Суб 00:22:53 1804067410
Аноним 12/09/20 Суб 00:34:30 1804076411
#include <stdio.h>
#include <limits.h>
enum E { e1 = LLONG_MAX, e2 = 1 } e;
int main(void) {
printf("%lu ", sizeof( enum E ));
printf("%lu ", sizeof( e1 ));
printf("%lu\n", sizeof( e2 ));
return 0;
}
gcc 8 8 4
clang 8 8 4
vc 4 4 4
g++ 8 8 8
clang++ 8 8 8
vc++ 4 4 4
Аноним 12/09/20 Суб 00:49:14 1804080412
Аноним 12/09/20 Суб 01:07:03 1804088413
>>1799416
Поясните, почему Ubuntu/Debian может "повиснуть" и никак не реагировать на клавиатуру (все эти SysRq и проч.), в то время как Windows тоже может "повиснуть", но всегда реагирует на Ctrl+Arl+Del. Это как-то связано с алгоритмом планирования процессов? Какой алгоритм используется в Windows?
Аноним 12/09/20 Суб 01:19:12 1804092414
>>1799748
ST3 + тыща плагинов. В целом полёт норм.
Иногда в настройках (json) отключаешь что-то, но по факту оно не отключается.
Аноним 12/09/20 Суб 01:31:00 1804096415
Аноним 12/09/20 Суб 01:36:49 1804101416
>>1804088
Я хз про линух, но винда уже с 95 а может и раньше драйвера запускает по сути на виртуальных машинах, чтобы железо не могло вешать систему и была истинная многозадачность. Но bsod опять же все равно происходил.
Аноним 12/09/20 Суб 01:41:20 1804104417
>>1803931
Формальная верификация.
Аноним 12/09/20 Суб 01:49:55 1804106418
Поясните, почему многие проекты сидят на gcc 4..8, если gcc 4..8 забагованы? Причина перехода на последние версии: как минимум баг-фиксы в кодогенерации.
Аноним 12/09/20 Суб 02:18:22 1804110419
>>1804088
>в то время как Windows тоже может "повиснуть",
У меня не виснет.

> но всегда реагирует на Ctrl+Arl+Del.
Любоей нажатие на клавишу генерирует прерывание. Обработчик прерывания читает из порт контроллера байт, или несколько байт, в зависимости от нажатой клавишы. Это байты называются scam-codes. Драйвер клаивиатуры передаёт эти сканкоды ядру, где в зависимости от локали эти коды транслируются в ascii или unicode символы. Можно читать напрямую сканкоды и смотреть какая клавиша нажата.

При этом доайвер (клавиатуры или ядро) анализирует последовательность нажатых клавиш. Когда он обнаруживает Ctrl + Alt Del, то посылает сигнал перезагрузки.

Старые ядра всегда ловили Ctrl+Alt+Del. Новые не ловят? Причин может быть много. Самая банальная - по какой-то причине прерывания от клавиатура запрещены. В этом случае на клавиатуру реагировать никак не будет. Другая причина... ну возможно косячит systemd. Это даже более вероятная причиина. Slackware упирается с переходом на systemd. Возможно она не подвержена этому багу.
Аноним 12/09/20 Суб 02:54:53 1804119420
Аноним 12/09/20 Суб 03:40:56 1804129421
>>1804106
Легаси, сертификация, поддержка старых ОС без свежих пакетов.
Многие баги обходятся тонкими фиксами, отключением оптимизаций для отдельных участков кода и т.д.

А баги есть везде, через N лет текущую версию можно будет назвать старой и забагованной до неюзабельности.
Аноним 12/09/20 Суб 03:45:38 1804130422
>>1787002
Там достаточно противоречивых правил.
Аноним 12/09/20 Суб 06:26:11 1804146423
>>1804106
Потому что новые версии добавляют свои баги и несовместимости, придурок.
Аноним 12/09/20 Суб 11:35:18 1804272424
>>1804096
>первый релиз в 2011 году
>последний релиз 8 ноября 2012 года
Говорилось про юзабельные RTOS, а не шизоидные говновысеры, толком не подходящие под такие задачи.
Аноним 12/09/20 Суб 13:17:32 1804335425
>>1801421
Говоришь, для спутников пишешь? На

> As a microkernel-based OS, QNX is based on the idea of running most of the operating system kernel in the form of a number of small tasks, named Resource Managers. ...

Это была QNX. Давай посмотрим что крутится на насовских марсоходах. Охуевай от прочитанного:

>https://en.wikipedia.org/wiki/Comparison_of_embedded_computer_systems_on_board_the_Mars_rovers

И наконец, то что ещё не летало, но в перспективе сожрёт и QNX и VxWorks, не говоря уже об остальном - https://www.l4ka.org/65.php


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

Аноним 12/09/20 Суб 13:31:45 1804346426
Аноним 12/09/20 Суб 15:07:03 1804397427
Товарищи, подскажите, пж-та, где можно хорошенько выучить про unicode-32 строки в си? Хочу виртуальную машину перевести на юникод.
Аноним 12/09/20 Суб 15:22:14 1804407428
>>1803148
угу встречал и в литературе 2 противоположных мнения
одни считают что нужно намеренно писать проще, в данном случае, расставить необязательные скобочки
другие считаю, и их мнение мне ближе, что человек который будет сопровождать данный код, будет обладать достаточной квалификацией и будет знать тонкости приоритета операций в языке и эти скобки расставлять не надо

Аноним 12/09/20 Суб 15:37:48 1804414429
>>1804407
> будет обладать достаточной квалификацией и будет знать тонкости приоритета операций в языке и эти скобки расставлять не надо


А потом ебаться с ошибкой в коде
Аноним 12/09/20 Суб 17:12:15 1804472430
image.png 7Кб, 518x186
518x186
Может кто-нибудь объяснить, почему выводит 0, а не 4? Хотел понизить тип числа.
Я правильно понимаю, что можно переводить типы только в одну сторону(из типов с меньшим количествов байт в большее?) или же есть способы перевода на тип поменьше без потери данных(а если я знаю ответ и хочу перевести в тип с памятью поменьше?)
Аноним 12/09/20 Суб 17:18:15 1804479431
image.png 12Кб, 624x272
624x272
image.png 4Кб, 497x72
497x72
Почему такой код выдает ошибку?

Как я понял, если число типа double не имеет после запятой знаков, то с переводом все ок, если число не слишком большое
Аноним 12/09/20 Суб 17:24:53 1804489432
>>1804472
>>1804479

sprintf("%d\n", (int) sqrt(8+8) );

Причём 8+8 скушает ещё препроцесссор.
Аноним 12/09/20 Суб 17:25:59 1804490433
>>1804479
И вообще, замени %d на %f и не парь мозги.
Аноним 12/09/20 Суб 17:32:43 1804496434
image.png 41Кб, 1224x446
1224x446
>>1804489
Не работает эта команда. Ошибка при компиляции

Бтв, как это все называется? Как работают форматы lf, d идругие? Они сами по себе не переведут инт в дабл, если указать для целого вещественный lf в принфте?
И как называется, когда переводят числа из одного типа в другой. А то мне из-за этой вещи мне бывает очень сложно искать ошибку в моем коде.
Аноним 12/09/20 Суб 17:40:01 1804504435
>>1804496
Извини, я по ошибке тебе дал другую функцию. Убери перваую букуву s.

И посмотри в Интернетах что такое sprintf и snprintf,
а не компилится потому что для sprintf нужно больше аргументов.
Аноним 12/09/20 Суб 18:00:46 1804521436
>>1804472
Функция sqrt существует только в виде принимающем и возвращающем double.
В printf же d означает i, int. Так что у тебя UB.
Аноним 12/09/20 Суб 18:01:21 1804523437
>>1804397
Но их там нет. Есть wchar_t
12/09/20 Суб 20:08:41 1804638438
>>1804496
> А то мне из-за этой вещи мне бывает очень сложно искать ошибку в моем коде.
Чтобы не искать ошибки, нужно включать больше ворнингов:
> printf("%d\n", 1.0);
> cc -Wformat file.c
> warning: format '%d' expects argument of type 'int', but argument 2 has type 'double'
> Не работает эта команда
Алсо, нужно читать, что тебе пишут на скриншоте (вторая строка). Сначала учимся читать, потом пишем код. Не наоборот.
12/09/20 Суб 20:14:13 1804644439
>>1804523
> Но их там нет. Есть wchar_t
static const char32_t utf32[] = U"это блять что";

>>1804397
Нееш, подумой. Притащи UTF-8 лучше. UTF-32 нужен разве что в текстовом редакторе, и то нужно хорошо подумать, стоит ли.
Аноним 12/09/20 Суб 20:20:32 1804651440
>>1804644
> это блять что
С++ может быть?
Аноним 12/09/20 Суб 20:42:30 1804673441
>>1804496

printf("%.2f\n", sqrt(8.0f + 8.0f));
12/09/20 Суб 21:29:26 1804730442
>>1804651
> С++ может быть?
Это С11. В С2x притащат еще немного, и станет совсем юзабельно.
Аноним 13/09/20 Вск 05:34:17 1804921443
image.png 53Кб, 1106x394
1106x394
Как можно не любить средства разработки от Майкрософт? Они же совершенны.
Аноним 13/09/20 Вск 08:23:30 1804954444
Аноны, писал все время на крестах, но сейчас необходимо на С. У меня вопрос, как мне сложить несколько чисел в одну строку или просто написать сложную формулу. А-ля 1+2*3-4.
Аноним 13/09/20 Вск 08:28:42 1804957445
Аноним 13/09/20 Вск 08:34:26 1804960446
>>1804957
А если оdна и3 чисел переменная?
Аноним 13/09/20 Вск 08:37:50 1804961447
>>1804960
Пихаю все в for.
m = 5 - (i * 4); Например.
Мне выdает всегdа 5.
Аноним 13/09/20 Вск 08:38:19 1804962448
Аноним 13/09/20 Вск 08:38:43 1804964449
Аноним 13/09/20 Вск 08:49:59 1804966450
>>1804960
А как ты на крестах это делал?
Аноним 13/09/20 Вск 08:53:20 1804967451
>>1804966
Просто формулку писал. Может проблема в вывоdе?
printf("%lf\n", m);
Аноним 13/09/20 Вск 08:53:46 1804968452
Аноним 13/09/20 Вск 08:56:15 1804969453
>>1804967
Какую формулку? Чем отличается?
Аноним 13/09/20 Вск 08:57:30 1804970454
>>1804969
5 - (i * 4), например. В том то и dело, не пойму в чем именно проблема.
Аноним 13/09/20 Вск 09:02:19 1804973455
Аноним 13/09/20 Вск 10:14:21 1805013456
>>1804335
Ты кинул статью со спутниками, на которой почти все работают на монолитной VxWorks. Каким боком микроядро?
И не надо мне тут рассказывать за микроядро в VxWorks - его добавили как отдельный профиль сборки для mmu-less архитектур в 2014, и единственная его микроядерность - размер в 20 кбайт, и на этом всё
Аноним 13/09/20 Вск 10:17:19 1805017457
>>1804970
Да просто солями уебался, а потом вопросы задавал.
Аноним 13/09/20 Вск 15:10:31 1805220458
>>1804644
Да я просто обчитался гитлаба GHC (конкретно их рантайма) и захотел себе сделать так же. В питоне, расте, кстати, тоже строки по дефолту юникод32. Компилятор в байт-код у меня поддерживает utf[8, 16, 32] Но он на хаскеле, лол, а вот в самой виртуалке строки онли ютф8, хочется сделать нормальный юникод32, чтобы не париться совсем.

Ну или подкиньте, что можно почитать, вдруг я не так понимаю все это дело и лезу еще тут, есть у меня ощущение, что знаний не хватает...
Аноним 13/09/20 Вск 16:11:41 1805283459
>>1805013
>И не надо мне тут рассказывать за микроядро в VxWorks
Конечно я не буду тебе за него рассказывать, потому что в мире есть только одно божественное микроядро и оно поддерживает спецификацию L4.X2. Все остальные ядра это бледные тени L4.X2.
Аноним 13/09/20 Вск 17:25:25 1805343460
>>1805220
Что? Нет. Строки и в расте и в третьем питоне по дефолту енкодятся в UTF-8, и только в питоныче интерпретатор за тебя в большинстве случаев подставит нужную кодировку в процессе трансляции.
13/09/20 Вск 19:59:49 1805537461
>>1805220
> В питоне, ... кстати, тоже строки по дефолту юникод32
[sys.getsizeof("x" * i) for i in range(10)]
[49, 50, 51, 52, 53, 54, 55, 56, 57, 58]
Еще охуительные истории будут?

> юникод32, чтобы не париться совсем
Эмодзи видел? А в них несколько code-points в каждом. Русские буквы с ударением, любые другие комбинирующиеся символы... не получится не париться, смирись.
Аноним 13/09/20 Вск 21:33:46 1805633462
IMG202009132217[...].jpg 17Кб, 1080x118
1080x118
Анон а как заставить эти эмодзи собираться в один символ как в клавиатуре телефона?
Аноним 14/09/20 Пнд 08:43:00 1805845463
Аноним 14/09/20 Пнд 13:23:19 1806086464
Бляяяядь, как же говна наелся с этими эмодзи. Посоветуйте чё почитать вообще про кодировки. Знаком ток с аски. Опционально про рендеринг текста тоже было бы интересно (после того как эмодзи поебали отображение текста в моем терминале)
Аноним 14/09/20 Пнд 13:34:29 1806090465
Аноним 15/09/20 Втр 02:20:05 1806906466
Подскажите IDE для Си. Скачал CLion и столкнулся со следующими проблемами:
1. По умолчанию открывающая фигурная скобка ставится на той же строке, на которой описывается название функции и ее параметры. Мне нужно, чтобы открывающая скобка ставилась с новой строки в случае с функциями, но -- на той же строке в случае с циклами.
2. Мне нужно, чтобы я выбрал стандарт языка, создал файлик, написал код, скомпилил его, запустил. Потом создал бы новый файлик, написал бы в нем новый код, скомпилил бы, запустил. Звучит несложно, да? Однако в CLion под каждый такой отдельный файлик мне нужно создавать новый проект. Соответственно, для каждого упражнения из K&R я вынужден создавать New Project. Выходит громоздко.

Вы можете предложить мне писать в каком-нибудь vim или emacs и просто собирать компилятором из консоли -- неплохой вариант. Но я хочу но я хочу IDE с подсветкой, дополнениями, авторазметкой кода и т.п.
Аноним 15/09/20 Втр 03:20:21 1806914467
>>1806906
Visual Studio тебе нужно.
А если из консоли, то пользуй редактор Midnight Commander. Автодополнения не будет, но подсветку он обеспечит. Да и vi c emacs умеют в подсветку. emacs я не знаю, но vi для редактирования кода годится только если ты по модему по межгороду на 2400 baud логинишься из Москвы в Норильск. Тогда у vi конкупентов нет, в любом другом случае он годится лишь для правки конфигов.
Аноним 15/09/20 Втр 04:11:05 1806919468
>>1806914
Но в VS же даже нельзя выбрать Сишный стандарт, насколько помню. Там вообще все собирается плюсовым компилятором. А еще писать желательно на никсах, ибо я когда первый раз с винды на линукс пересел, то охреневал от buffered streams -- оказывается, не просто так \n добавлять нужно в любом выводе. Да и в VS разве можно не создавать новый проект под каждый файлик?
Аноним 15/09/20 Втр 04:37:07 1806921469
Аноним 15/09/20 Втр 05:17:22 1806928470
>>1806919
>Там вообще все собирается плюсовым компилятором.
расширение .c - компилятор Си, расширени .cpp или .cc - компилятор С++

> А еще писать желательно на никсах, ибо я когда первый раз с винды на линукс пересел, то охреневал от buffered streams -- оказывается, не просто так \n добавлять нужно в любом выводе.
Ну так опыт тебе. А писать желательно платформонезависимо, насколько это возможно.

> Да и в VS разве можно не создавать новый проект под каждый файлик?
Ты можешь хоть все демки/уроки в один проект поместить и пометить их неактивными. И выбирать одну активную.




Аноним 15/09/20 Втр 06:12:36 1806943471
Аноны, помогите записать массив чисел в не форматированный бинарный файл с 16-битными отсчетами. Я не пойму, как его сделать бинарным и не форматированным.
Аноним 15/09/20 Втр 06:24:09 1806951472
Аноним 15/09/20 Втр 06:26:24 1806954473
>>1806951
>Это как?
Это мои входные числа.
Аноним 15/09/20 Втр 06:48:45 1806962474
>>1806954

> с 16-битными отсчетами
Так никто никогда не говорит. Нет такого понятия "отсчёты"

тебе нужно вывести массив шастнадцатибитных чисел?
Аноним 15/09/20 Втр 06:53:06 1806964475
Аноним 15/09/20 Втр 06:57:16 1806965476
>>1806964
ты наивный, если полагаешь что я буду за тебя делать задание или хотя бы пройду по ссылке. Научить могу, делай сам.

У тебя никаких вопросов не возникло? Какова размерность массива? Числа со знаком или без?

Ну-ка, объяви массив на 10 элементов 16 битных беззнаковых чисел. Если не сможешь, то ты зря сюда пришёл. Тут злые взрослые дяди, которые тебе плохого наговорят.
Аноним 15/09/20 Втр 06:58:50 1806967477
>>1806965
Все учел надеюсь.
>У тебя никаких вопросов не возникло? Какова размерность массива? Числа со знаком или без?
Аноним 15/09/20 Втр 07:02:44 1806971478
>>1806967
Остался только вопрос, как 16-битные числа вывести в не форматированный бинарный файл.
Аноним 15/09/20 Втр 07:04:55 1806973479
>>1806971
>Остался только вопрос
Судя по всему у тебя много вопросов.

> как 16-битные числа вывести в не форматированный бинарный файл.
Я тебе ответил выше - с помощью функции fwrite или write, на твой выбор.


Я не так и не увидел от тебя объявление массива.
Аноним 15/09/20 Втр 07:28:38 1806979480
Аноним 15/09/20 Втр 10:46:05 1807059481
>>1806906
>Мне нужно, чтобы открывающая скобка ставилась с новой строки в случае с функциями, но -- на той же строке в случае с циклами.
Должно просто настраиваться в настроках Code Style (Braces Placement)
>я выбрал стандарт языка, создал файлик, написал код, скомпилил его, запустил
Основная билд система у CLion это CMake же. Для простых как у тебя случаев тебе в нём нужна просто одна команда add_executable.
Аноним 15/09/20 Втр 11:51:07 1807103482
Можно ли как-то увеличить число циклов в for для большого числа циклов? 110000 циклов считает, 120000 уже нет.
Аноним 15/09/20 Втр 12:29:05 1807122483
>>1807103
volatile unsigned u;
while (--u) while (--u) while (--u);
Аноним 15/09/20 Втр 12:35:34 1807125484
>>1807103
Нет, а стандарте вообще прописано что больше 100500 циклов быть не может.
Ты совсем ебобо? Баги ищи.
Аноним 15/09/20 Втр 12:47:52 1807126485
>>1786992 (OP)
/pr
Реквестирую курс по с/с++, где объясняется оформление исполняемого файла и добавление встроенный или
директорных ресурсов (Иконки, вав-вайлы и т.д.). Желательно с пояснением синтаксиса и роли библиотек. Можно в виде статьи.
.
Сейчас освоило синтаксис, функции и системные команды. Хочу попробовать создавать оформленные простые микро-програмы (Наподобие интервального таймера). Но я даже не знаю как добавить иконку и собственный сигнал (Использую \a)
Аноним 15/09/20 Втр 13:20:59 1807155486
>>1806906
Vs codium + плагин code runner
Аноним 15/09/20 Втр 13:21:24 1807156487
>>1806906
>открывающая фигурная скобка ставится на той же строке, на которой описывается название функции и ее параметры.
Все верно.
Аноним 15/09/20 Втр 13:53:27 1807183488
>>1806921
Попробую
>>1806928
>расширение .c - компилятор Си, расширени .cpp или .cc - компилятор С++
Да, про это подзабыл. А что насчет стандарта языка? Хотелось бы иметь возможность выбирать между C90, C99 и C11
>А писать желательно платформонезависимо, насколько это возможно.
В реалиях Си, по-моему, это почти невозможно. Ибо так или иначе тот или другой кусок кода будет дергать то, что связано с ОС в половине случаев.
>>1807059
>Должно просто настраиваться в настроках Code Style (Braces Placement)
О, помогло, спасибо.
>Основная билд система у CLion это CMake же. Для простых как у тебя случаев тебе в нём нужна просто одна команда add_executable
Можно поподробнее? Где именно мне прописывать cmake'овские команды?
>>1807156
Согласно K&R стилю открывающая фигурная скобка тела функции должна быть с новой строки. А в случае с циклами она должна ставится на той же строчке
Аноним 15/09/20 Втр 14:05:05 1807188489
Подскажите пожалуйста, в каком порядке и что именно на каждом из этапов делает компилятор (например, gcc) при вычислении вот такого логического выражения: i < j || ++j < k
Аноним 15/09/20 Втр 14:31:23 1807204490
1555167495591.png 243Кб, 536x723
536x723
Аноним 15/09/20 Втр 14:33:15 1807206491
>>1807188
Ну хуй знает, похоже на UB. Лениво проверять под MSVC и gcc.

Если не ошибаюсь, то иинкремент первым будет, затем проверка i<j, и если условие ложное, то проверка j < k.

Аноним 15/09/20 Втр 14:41:47 1807221492
>>1807206
Хоть у || и самый низкий приоритет, но порядок вычисления то вроде он задает.
Т.е. если i<j истина, то правую часть он вообще скипнет.
Аноним 15/09/20 Втр 14:43:37 1807222493
>>1807204
>>1807221

Значит компилятор обрабатывает выражение "кусочками", двигаяст именно слева направо, и даже не доходит до префиксного инкремента?
Аноним 15/09/20 Втр 14:46:34 1807231494
1446031732582.png 84Кб, 1200x1354
1200x1354
>>1807222
Компилятор строит дерево (AST, abstract syntax tree)
Аноним 15/09/20 Втр 14:47:40 1807233495
>>1807222
Также он не всегда двигается слева направа - ассоциативность в табличке выше.
Например в x = y он рассчитывает y раньше x.
Аноним 15/09/20 Втр 14:52:00 1807240496
>>1807221
Вот реально лень проверять. Просто когда опыт программирования в десятки лет, то такие конструкции подсознательно избегаегт, даже не задумываясь.
Аноним 15/09/20 Втр 14:52:15 1807241497
>>1807206
> УБ
Стыдоба, логику основного оператора не знаешь, зато УБ
Аноним 15/09/20 Втр 14:52:51 1807242498
>>1807231
>>1807233

Если для моего примера сделать это:

{
int i = 3, j = 4, k = 5;

printf("%d\n", i < j || ++j < k);
printf("%d %d %d\n", i, j, k);
}

то последний printf покажет, что j равно 4.
И непонятно, почему префиксный инкремент (который во всём выражении имеет высший приоритет и должен за счёт своей "префиксности" моментально увеличить j на 1) не выполняется.
Аноним 15/09/20 Втр 14:57:00 1807248499
>>1807242
Потому что order of evaluation независим от order of precedence
https://en.cppreference.com/w/c/language/eval_order
В операторе x() || y() если x() истина, то все выражение истина и вызова y() не будет вообще.
Аналогично x() && y() если x() ложь, то все выражение всегда ложь.
Аноним 15/09/20 Втр 14:57:37 1807250500
>>1807242
>printf("%d\n", 1 || blowup() );
blowup() не будет вызвана. Это точно.

>>1807241
И не говори. Самому тошно.
Аноним 15/09/20 Втр 15:00:43 1807252501
Аноним 15/09/20 Втр 15:03:07 1807254502
>>1807242
Думаю дело в том, что он сначала строит дерево. Но потом он его обходит то начиная с корня, то есть самого низшего приоритета.
Аноним 15/09/20 Втр 17:12:33 1807382503
>>1805343
>>1805537
Панимаю.

Пойду больше по теме покурю, спасибо.
А то делаю виртуалку для фп языка на вроде эрланга, но с норм типами (раскурил систему типов хаскеля для этих целей и чутка упростил, шоб в императивном языке норм смотрелось) пока получается лютое говно и я хз, как типизировать рассылку сообщений между процессами, разучил как делать shenandoah gc (получилось баганное кривое подобие, правда, но это дело наживное), в итоге у меня CMS и Shenandoah только, хочу еще G1 прикрутить.
Собственно, не хочется делать строки как в хаскеле и нативном эрланге, где они тупо на линкед листах, ну и массивы заодно завез, думаю вот, как обойтись без частного случая для строк, но что-то как-то лучше их все же вытащить в отдельный случай для экономии проца и оперативы.
Аноним 15/09/20 Втр 17:20:14 1807400504
>>1807183
>Можно поподробнее? Где именно мне прописывать cmake'овские команды?
При создании проекта у тебя появляется файл CMakeLists.txt, который описывает всё, что билдит твой проект. Там и добавляй новые исполняемые файлы. Посмотри https://cliutils.gitlab.io/modern-cmake/chapters/basics.html , в особенности раздел Dive In. Только у тебя, естественно, будет LANGUAGES C. Для задания стандарта Си используй https://cmake.org/cmake/help/latest/prop_tgt/C_STANDARD.html
Вообще хорошо бы простой Make понять прежде чем лезть в весь ужас CMake. Но в CLion с мейком всё очень плохо, и если ты уж в него впираешься, то выбора нет.
Аноним 15/09/20 Втр 18:37:01 1807459505
>>1807400
Ок, посмотрю вечером, спс
ПЕРЕКАТ Аноним # OP 15/09/20 Втр 22:33:05 1807651506
Аноним 18/09/20 Птн 21:54:27 1810288507
>>1806090
>>1806086

"The Unicode Cookbook for Linguists"
Managing writing systems using orthography profiles
Steven Moran
Michael Cysouw
Аноним 19/09/20 Суб 17:51:04 1810956508
>>1788067
>Забугром эмбедщина
>Quallcom, Mellanox, Marvell, Nvidia, Xilinx, Tesla
Речь идет про рядового анона, либо без во, либо закончившего говновуз, которые забугром нафиг не кому не нужны даже с 10 годами опыта.
Поэтому если выбирать из работы в России: прогать микрики, как даун, или стать веб-разработчиком, очевидно выгоднее выбрать второе. Можно как завести трактор в ДС, так и перейти на удаленку, фриланс, когда прогером мкк будешь всю жизнь сосать за 30-40к максимум при работе оффлайн 5/2.
Аноним 19/09/20 Суб 17:56:57 1810962509
>>1788546
>Причём настолько, что любой человек с опытом 3+ лет на этом самом эмбедеде может спокойно ехать в какую-нибудь Германию или Францию на 4-5к рейхсмарок ежемесячно,
Но реальность такова, что типичный байтоеб из НИИ, не закончивший топ вуз в дс, будет пахать за 20к-30к и ни в какую германию и францию не уедет, потому что он там нафиг не нужен.
В то время как веб-разработчик даже в рахе может получать эквивалент 2-3 рейхсмарок через пару лет работы и работать на в разваливающемся заводе или нии, а в крутом офисе с печеньками и кондиционером со свободным графиком.
Аноним 19/09/20 Суб 18:00:31 1810968510
>>1795877
> не одними деньгами, анонче. Есть ещё то, что у тебя в мозгу и душе.
Угу, пока норм прогеры уже и квартиру в новостройке/жилье купят, машину, и семью заведут, ты будешь ездить на работу на жигулях микросхемы паять и жить с мамкой, зато для ДУШУ работаешь, лол.
Аноним 19/09/20 Суб 18:39:33 1810997511
>>1810956
>либо закончившего говновуз, которые забугром нафиг не кому не нужны даже с 10 годами опыта
Дальше пост можно не читать, т.к. выдает теоретика сразу. Ты не знаешь, какие дипломы за бугром нужны, а какие нет (хинт: почти все со словом "государственный").
Аноним 19/09/20 Суб 19:09:52 1811017512
>>1810968
Да, собственно, анон, я сейчас микросхемы паяю в свободное время работаю-то я андроидщиком. А когда заведешь семью - хуй ты поковыряешь МК в свободное время, ибо хуй тебе а не свободное время. И хуй ты потратишь свои кровные на свое увлечение.

Но вообще, если следовать твоей логике, что так, что так ты будешь в говне, ебать: либо с деньгами, квартирами, машинами, женой, но без свободы и поэтому тебе нахуй эти все КВОРТ5РЫ, МОШЫНЫ не будут нужны, депрессия сожрет твой мосск, либо без денег, но зато будешь заниматься своим любимым делом.

Энивей... Не хочу заводить серьезные отношения до 33, нахуй мне это нужно, только ограничивает твою свободу, анон
Аноним 19/09/20 Суб 19:11:11 1811018513
>>1810997
>Ты не знаешь, какие дипломы за бугром нужны
Хуйня эти твои дипломы. Они работодателю не нужны, они нужны государственной службе, которая решает, выдавать тебе рабочую визу, или нет.

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

Вышесказанное справедливо по отношения перектачиков из периферии.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов