Металообработка - ахуенно и вообще топ.
Конечно, если ты ей занимаешься по фану, а не потому что ты Петрович с завода "Путь Ленина", тебе за 50, и из скилов имеешь только "пиление железяк" и "алкоголизм".
В принципе, ещё понятно. Есть такая вещь - Google Test, библиотека юнит тестирования. Она написана на шаблонах и дефайнах чуть менее, чем полностью. И вот ошибки этой смеси просто нечитаемые.
Ты пишешь целую кучу настроек expectation в моках, объебался, дефайн распидорасило, он выплеснулся на нижеобъявленные моки и все, компилятор в ахуе.
В с++ просто нужно на каждом шагу вписывать поверку используемого указателя на валидность, тогда станет очевидно, что ты делаешь не так. Причем проверять нужно даже в тех случаях, когда ты твердо уверен, что в этом участке кода всегда будут актуальные указатели.
после 25 лет разработки я понял одно, говорить о том, что ты уверен в этом коде на 100% нельзя на 99%.
даже если ты обмазался 100500 проверками и тестами, обязательно в честь парада планет на каком-нибудь всратом компе всё пойдет не по плану.
Бабки около подъезда что-то бурно обсуждали, я краем уха подслушал, говорят, мол, такие ошибки кореллируют с высотой над уровнем моря, потому что меняется вероятность попадания высокоэнергетических частиц из космоса в элементы памяти. То есть, может попасть и поменять значение. Я уж не знаю, может и при солнечных всяких вспышках или от каких-то далеких сверхновых летят.
Например, для излучения 1 МэВ, слой половинного ослабления для стали 1,27 см, для свинца 0,8. А диапазон энергий космических лучше бывает до 5*10^21 эВ.
Если рядом с коллапсирующей массивной звездой, когда по мере сжатия, снова начнется термоядерная реакция такая, что будет такой мощный выброс нейтрино, может быть поменяет. Там такие нейтрино мощные и много. Но я не знаю, че буит, если такой нейтрино попадет во что-то. Что-то будет.
Но такое дело, вот если взять протон, ну тип он как мутное пятно чуть меньше фемтометра это 10 в -15 степени. Расстояние меду атомами в металлах может быть доли нанометров. А сечение взаимодействия нейтрино даже со сверхвысокими энергиями может быть 10 в минус -31 степни, а обычно меньше. Это как такая малюсенькая точечка, которых между соседними атомами поместится сколько-то секстиллионов штук. Поэтому для них почти как бы все прозрачное, вот как бы нейтрино если он прилетил вглубь кусочка проводника , в желячку, смотрит по сторонам, а нифига типа нет вокруг, как пустое все. Даже если железяка 1 толщиной, то прямая траектория одного нейтрино пересечется с каким-нибудь одни адронов в каком-нибудь ядре с вероятностью 1 на сколько-то там миллиадров или хз чего, в зависимости от того, как я мог посчитать грубо.
ну, про размеры - понятно: на футбольном поле черешня валяется и через поле пролетает нейтрино размером с пещинку - каков шанс что он попадёт в черешню.
кстати, я тут вспомнил - у памяти есть биты чётности, а в серверной - ещё и дополнительный девятый чип, контроллирующий чётность. так что для возникновения ошибки нужно как минимум две частицы, чтобы одновременно сломали и бит памяти, и бит чётности.
Так и делается в плюсовых фреймворках. Добавляют и корень всех объектов, и перегружают операторы new и delete, чтобы ты слишком уж не злоупотреблял ими, и даже структуры с интерфейсами допиливают макросами. В итоге получается вполне себе юзабельный язык, без горящего ануса.
Не уверен есть ли где-то в фреймворках сборщик мусора, но я знаю точно, что в каком-нибудь UE4 для виджетов он существует(но виджеты там не являются наследниками класса UObject).
ошибки в разметке XAML вообще топчик, если какой то ресурс не может разрешиться (не найлен) в момент выполнения, то парсер даже не удосуживается писать где и какой ресурс был не найден, просто орет, что ресурса нет и всё. И если ты 5 минут назад не менял ничего, начинается ебля с греблей по выпиливанию части интерфейса и сужению области поиска.
Отличный комментарий!