В bare-metal бинарниках обычно нет отладочной информации (или есть, но на девайс она не заливается); отладчик-то все равно на другом компе запускается.
Килобайт оперативы, скорее всего, почти целиком занят под стек, это норма.
А вот во флеше место, скорее всего, занимает код, который не используется. Прозревая компилятор gcc, предположу, что этот код можно выкинуть, сказав компилятору -fdata-sections -ffunction-sections, а линкеру -Wl,--gc-sections.
А если gcc там достаточно свежий, то можно и -flto добавить.
Это оптимизация уровня линковки, поэтому к "глюкам", которых вы боитесь от -О1 и выше, она приводить не должна.
Spoiler header
Правда, "глюки", скорее всего, вызваны неопределенным поведением у вас в коде :) Но это уже другой вопрос.
С M_PI есть только одна проблема — это необязательная константа, некоторые компиляторы ее не предоставляют. Поэтому даже в коде STL можно увидеть захардкоженное число пи:
вроде бы libc++
template <class _RealType>
template<class _URNG>
inline _LIBCPP_INLINE_VISIBILITY
_RealType
cauchy_distribution<_RealType>::operator()(_URNG& __g, const param_type& __p)
{
uniform_real_distribution<result_type> __gen;
// purposefully let tan arg get as close to pi/2 as it wants, tan will return a finite
return __p.a() + __p.b() * _VSTD::tan(3.1415926535897932384626433832795 * __gen(__g));
}
Так что пока не приедет С++20 с P0631, придется keep calm and constexpr auto pi = acos(1);.
Я просто приводил пример, что квадратные скобки "выглядят лучше".
Разумеется, если квадратные скобки отдать под дженерики, то массивы и срезы надо записывать как-то иначе.
В Scala доступ к элементам массива делается через круглые скобки; подается это как перегруженный оператор() у типа массив. Определенная логика в этом есть, на мой взгляд.
Разумеется, менять синтаксис так кардинально в Rust уже поздновато.
У меня единственное возражение против угловых скобок — это не скобки! Поэтому редакторы очень часто не могут подсветить соответствующую закрывающую/открывающую угловую скобку.
У квадратных скобок такой проблемы нет. Ну и визуально — хотя это вкусовщина, конечно — квадратные скобки чуть меньше сливаются с текстом.
type Mailbox[T] = Arc[Mutex[Receiver[Option[Message[T]]]]];
type Mailbox<T> = Arc<Mutex<Receiver<Option<Message<T>>>>>;
Если коротко, то он называется в честь ржавчинного грибка (а не оксида железа) с очень интересными свойствами, которые восхищают одного из разработчиков языка.
Имхо в знаковости этой переменной проблемы как раз нет, проблема в том, что она 16-битная.
Была бы она беззнаковая — ну окей, 65536 часов не сильно лучше.
Ну, в 2048 еще много всякого по мелочи — новые континенты вырастили, например; всю погоду на планете контролирует ИИ, если у вас дома что-то слишком греется — экологическая полиция стучит в двери и спрашивает, мол, граждане, зачем глобальное потепление приближаем.
Рискну к этой подборке добавить "2048" Шелли; хотя это больше киберпанк, конечно, но экологический аспект тоже присутствует.
Легкий спойлер
Почти все современные нам животные вымерли из-за эпидемий и были выведены заново; дикие звери при этом стоят огромных денег; дожди по расписанию и т.д.
В bare-metal бинарниках обычно нет отладочной информации (или есть, но на девайс она не заливается); отладчик-то все равно на другом компе запускается.
Килобайт оперативы, скорее всего, почти целиком занят под стек, это норма.
А вот во флеше место, скорее всего, занимает код, который не используется. Прозревая компилятор gcc, предположу, что этот код можно выкинуть, сказав компилятору
-fdata-sections -ffunction-sections
, а линкеру-Wl,--gc-sections
.А если gcc там достаточно свежий, то можно и
-flto
добавить.Это оптимизация уровня линковки, поэтому к "глюкам", которых вы боитесь от -О1 и выше, она приводить не должна.
Правда, "глюки", скорее всего, вызваны неопределенным поведением у вас в коде :) Но это уже другой вопрос.
Пожалуйста :)
Как насчет LeakSanitizer? Трэйс выглядит как-то так (даже строчку показывает):
Есть подвижки в портировании под Visual Studio (но пока только подвижки, ASan это немного другое)
Но вроде math constants все-таки будут.
Ле вздох. Ну, значит просто const.
Чем компилировали? gcc 9.2 вроде может https://godbolt.org/z/E8OtfX
С M_PI есть только одна проблема — это необязательная константа, некоторые компиляторы ее не предоставляют. Поэтому даже в коде STL можно увидеть захардкоженное число пи:
Так что пока не приедет С++20 с P0631, придется keep calm and
constexpr auto pi = acos(1);
.Чем больше учеников, тем сильнее нужно автоматизировать проверку заданий :)
Но в целом я со статьей согласен. Автору спасибо! И за перевод тоже!
Я просто приводил пример, что квадратные скобки "выглядят лучше".
Разумеется, если квадратные скобки отдать под дженерики, то массивы и срезы надо записывать как-то иначе.
В Scala доступ к элементам массива делается через круглые скобки; подается это как перегруженный оператор() у типа массив. Определенная логика в этом есть, на мой взгляд.
Разумеется, менять синтаксис так кардинально в Rust уже поздновато.
Но произносится ведь "бикон"...
Соглашусь, но так не видно вложенность. Нужна ли она — это другой вопрос.
Напоминает каррирование :3
У меня единственное возражение против угловых скобок — это не скобки! Поэтому редакторы очень часто не могут подсветить соответствующую закрывающую/открывающую угловую скобку.
У квадратных скобок такой проблемы нет. Ну и визуально — хотя это вкусовщина, конечно — квадратные скобки чуть меньше сливаются с текстом.
https://stackoverflow.com/questions/16494822/why-is-it-called-rust
Если коротко, то он называется в честь ржавчинного грибка (а не оксида железа) с очень интересными свойствами, которые восхищают одного из разработчиков языка.
Имхо в знаковости этой переменной проблемы как раз нет, проблема в том, что она 16-битная.
Была бы она беззнаковая — ну окей, 65536 часов не сильно лучше.
Как вы полагаете, кому из упомянутых в статье исследователей/центров следует в первую очередь переводить деньги? :)
Ну, в 2048 еще много всякого по мелочи — новые континенты вырастили, например; всю погоду на планете контролирует ИИ, если у вас дома что-то слишком греется — экологическая полиция стучит в двери и спрашивает, мол, граждане, зачем глобальное потепление приближаем.
Рискну к этой подборке добавить "2048" Шелли; хотя это больше киберпанк, конечно, но экологический аспект тоже присутствует.
Почти все современные нам животные вымерли из-за эпидемий и были выведены заново; дикие звери при этом стоят огромных денег; дожди по расписанию и т.д.
Ооо, круто! Спасибо!