Nikolay
Што происходит?
Fail
Всмысле ты кандидат?
Nikolay
Он же раньше был просто Friedrich von Növer
Vasily
Кандидат куда?
Nikolay
А теперь - доктор
Dr. Friedrich
Технических.
Nikolay
Работающий в морге
Bonart
Морг Билдеров? Это кто такой?
Dr. Friedrich
Морг Билдеров? Это кто такой?
Запросто может оказаться каким-нибудь болгарином.
Vasily
В морге все равны
Ayrat
Но патологоанатом ровнее
Bonart
Все равны перед доктором Лектером
Анна
В общем, @fvnever полон загадок
Dr. Friedrich
Я самый обычный человек 🤷‍♂️
Bonart
Я самый обычный человек 🤷‍♂️
А тентакли как отрастил?
Dr. Friedrich
Это механика!
Ayrat
Я тут недавно натолкнулся на хороший цикл статей про то как нарисовать свою мини OS на C, с отличным объяснением: https://github.com/s-matyukevich/raspberry-pi-os Просто делюсь линком
Ayrat
"цикл статей" - набор разных маркдаун файлов в одной репке)))
Ayrat
там и про кернел и про ексепшны, про прерывания. Чотко. Умеет. Могёт.
Bonart
Вот только рисовать на си новую ось в 2018 как-то не комильфо
Bonart
Кстати, не этот ли цикл переводили на хабре?
Ayrat
Не знаю. А переводили?
Dr. Friedrich
Вроде, там на расте ось писали.
Bonart
На расте - это другое дело.
Ayrat
Я вот очень раст полюбил. Щас пытаюсь его тоже впихать в воркфлоу. Идёт с трудом.
Bonart
Раст - он демонстративно не прикладной
Bonart
Отсюда и невпихуемость повышенная :)
Ayrat
Ну у меня ещё задач для него мало. Т.е. прям очевидная одна - оптимизация обучения ML модели (сейчас это делает петон, частично сам, частично сишные либы). А остальные - ETL, ажур, микросервисы - это всё не про раст. Т.е. я могу в теории скомпилить что-то на расте, и запускать в рантайме через ProcessInfo, но чот мне кажется это плохой план)
Bonart
Раст - он системный, для байто- и тактодрочерства но с современным контролем типов и границ
Bonart
Для приложений он имхо пересолен
Ayrat
Вот это меня подкупает. C++ впилил себе продакт тайпы нормальные, std::tuple, std::variant, std::option, полный набор. Там отлично всё с типизацией. Раст туда же. И при этом ебучий комитет C# нулабилити сделали через атрибуты у методов... Провал
Ayrat
Т.е. если уж решились ломать обратную совместимость через флаг компилятора почему нельзя было нормально поломать???
Ayrat
Да
Bonart
У шарпа с nullability проблема с рантаймом
Dr. Friedrich
Ну то есть мне тоже не нравится решение, которое получилось. Оно неполное, его просто обмануть.
Dr. Friedrich
Но сделать такое сложно.
Bonart
Как и у котлина, поэтому нуллабилити компромиссная
Ayrat
Там теперь такое охуенное поведение typeof<int> == typeof<int?> //false typeof<string> == typeof<string?> //true
Dr. Friedrich
Ждём, пока Java запилит :)
Dr. Friedrich
Как и у котлина, поэтому нуллабилити компромиссная
Ну кажется, у Котлина чуть получше получилось?
Bonart
Ну кажется, у Котлина чуть получше получилось?
Так у котлина язык с нуля запилен
Dr. Friedrich
Со своими мутными проблемами, но всё-таки лучше, чем у C# 8.
Bonart
А C# именно что 8
Ayrat
У котлина под боком Джава. Как у F# под боком C#. Поэтому приходится идти на компромисы, иначе всю экосистему отрезать от себя
Fail
Так у котлина язык с нуля запилен
Ну так ведь там полный интероп с жавой, а это накладывает ограничения
Bonart
И у нас полный интероп с .NET
Fail
у нас обратная совместимость
Bonart
https://github.com/Kirill-Maurin/Sample.Struct/blob/master/Sample.Struct/NotNull.cs
Bonart
Вот так можно запилить без обмана :)
Ayrat
Но ведь C# уже решил ломать обратную совместимость, почему нельзя было (ну если не полноценный option), то завернуть всё в Nullable?? Ну, они там умные понятно, но вот по сравнению даже с более низкоуровневыми языками (c++, rust) - это уже дерьмо
Ayrat
Но они там страдают по другой фигне. У них такты болят
Ayrat
поэтому там на option куча оптимизаций, где-то статеечку читал как там gcc пыхтит чтобы было типобезопасно и быстро
Bonart
Т.е. для котлина не было хорошего решения, а для сишарпа совсем не было. Вот я и не парюсь
Ayrat
А мне жалко что такой возможностью воспользовались так уныло
Bonart
И так получили два восьмых сишарпа
Pavel
а вообще C# 8 уже зарелизили?
Bonart
это как?
Дык флажочек компилятора же добавили. Семантически значимый.
Vladislav
Потому что «нормально» потребует много перепиливать в самом рантайме?
я думаю они никогда не релизнутся :) нуллабл типы
Vladislav
иначе это будет на уровне работает! *но не здесь ** и не здесь *** и не здесь
Pavel
мне что-то казалось, что просто будет nonnull by default для всех типов
Ayrat
мне что-то казалось, что просто будет nonnull by default для всех типов
это делает опционально и только через атрибуты раставлленые компилятором над методами, аргументами и пр. Чтобы продуцировать только варнинги а не полный слом кода
Dr. Friedrich
Типа.
Ayrat
т.е. тип твоих аргументов в рантайме не поменяется
Pavel
И поломается вся старая кодобаза разом
ну там же вроде компилятор ворнинг кидает, а не ошибку
Bonart
т.е. тип твоих аргументов в рантайме не поменяется
Он и в котлине для рантайма не меняется
Vasily
А потом раз,и галочку взводишь treat warnings as errors
Vasily
На билд сервере
Bonart
А потом раз,и галочку взводишь treat warnings as errors
А кто не взводит - сам себе злобный буратино