-
- В этом вся суть нашей Сишечки. С одной стороны, сам по себе С, даже
С11 по стандарту, это не шибко сложная вещь. Но! Если хочешь писать
реально переносимый код на MCU, то нужно одновременно в голове
держать просто срань правил и методов написания кода, от чего
реальный стандарт промышленного С будет 5к страниц, наверное, и
учить его надо 10 лет до уровня Гуру. - Evgeny_CD(01.12.2021 16:30)
- Всё-таки, Си - низкоуровневый язык, машинно-зависимый. Переносимость и повторное использование кода были целями С++ и Java, но не очень они добились этих целей. А вот вопрос машинно-зависимости - неоднозначный. Сейчас вот много говорят про потокобезопасность, защиту памяти и стека, атомарность ит.д. Лет 30 назад такие вопросы не были актуальны. Когда в Windows 2000 через переполнение стека попёрли вирусы, то на наши strcpy() и т.д. повесили "чёрную метку". Сейчас многоядерные Costic(152 знак., 01.12.2021 17:03)
- Если мы идем по пути "насрать на абстрактную машину, я пишу для
конкретного MCU", то это путь в ад. Новый MCU, и, в особенности,
компилятор для него, могут многие тонкие моменты реализовывать по
своему, не нарушая стандарта. И перенос старого кода в "новую,
улучшенную реальность" приведет к тому, что Арианы будут падать с
промышленной регулярностью. - Evgeny_CD(01.12.2021 16:37)
- дык проблема ж в том, что новый стандарт вместо того, чтобы
зафиксировать устоявшееся (хоть и не совсем правильное) поведение
описывает его заново так, что старые программы начинают ломаться. - Mahagam(01.12.2021 21:44)
- Это очень непростая дилемма. В общем и целом, полной переносимости
исходников C90 - > C11 нет. Ну если совсем дотошно. Как я
понял, ломающий практику вариант позволяет несколько ускорить код.
И если писать новый код сразу по новому стандарту, то он будет
быстрее. Т.е. переписываем старые исходники с матюками и болью, и
оно будет хорошо. Evgeny_CD(312 знак., 01.12.2021 22:10)
- ну давай, ускорь проверку переполнения знаковых чисел. которое теперь UB. когда аппаратную особенность подменяют программным костылём - быстрее точно не будет. - Mahagam(01.12.2021 22:42)
- Просто некоторые придурки восприняли UB как "компилятор будет творить непонятную, но очень быструю фигню" - LightElf(01.12.2021 22:34)
- Это очень непростая дилемма. В общем и целом, полной переносимости
исходников C90 - > C11 нет. Ну если совсем дотошно. Как я
понял, ломающий практику вариант позволяет несколько ускорить код.
И если писать новый код сразу по новому стандарту, то он будет
быстрее. Т.е. переписываем старые исходники с матюками и болью, и
оно будет хорошо. Evgeny_CD(312 знак., 01.12.2021 22:10)
- дык проблема ж в том, что новый стандарт вместо того, чтобы
зафиксировать устоявшееся (хоть и не совсем правильное) поведение
описывает его заново так, что старые программы начинают ломаться. - Mahagam(01.12.2021 21:44)
- В этом вся суть нашей Сишечки. С одной стороны, сам по себе С, даже
С11 по стандарту, это не шибко сложная вещь. Но! Если хочешь писать
реально переносимый код на MCU, то нужно одновременно в голове
держать просто срань правил и методов написания кода, от чего
реальный стандарт промышленного С будет 5к страниц, наверное, и
учить его надо 10 лет до уровня Гуру. - Evgeny_CD(01.12.2021 16:30)