Графики в Windows Calculator

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

Графики в Windows Calculator — это не просто баг, это, блджад, эпик вин индусского кодинга и наглядное пособие по превращению UWP (Universal Windows Platform то есть кроссплатформенная ABI-совместимая помойка) в УГП (Унылое Говно Платформу). Если вы когда-нибудь хотели увидеть, как тангенс разрывает пердаки, а велосипедная асинхронщина с костылями вместо thread pool ебёт мозги, то добро пожаловать в дивный мир Windows Calculator, очередной пример торжества NIH синдрома.

Краткая история криворукости[править]

В далёком 2019 году, когда трава была зеленее, а Билл Гейтс ещё не чипировал население, корпорация добра выкатила исходники Windows Calculator на GitHub под MIT лицензией. Типа, смотрите, какой у нас опенсорс, мы не жадные, пользуйтесь, обмазывайтесь! Написано сие чудо было на C++, с использованием UWP — модной, молодёжной, но, как оказалось, крайне ебанутой технологии, от которой у нормальных кодеров волосы встают дыбом, а глаза наливаются кровью из-за постоянного желания переписать это на нормальных async/await вместо ублюдских Task.

Потом, видимо, какой-то студент-практикант, насмотревшись на monkey patching от старших товарищей, решил, что негоже калькулятору без графиков жить, и прикрутил туда эту фичу, через жопу и с костылями да еще и переименовав Y в зависимой переменной на X, потому что можем. Получилось… ну, как всегда у Microsoft: через жопу и с костылями, натянув сову UWP абстракций на глобус математики.

В чём соль[править]

Наш герой, Пётр Turbo, небритый и, вероятно, не очень трезвый обзорщик всякой IT-хтони, решил потыкать палкой свой любимый deprecated WinAPI в этот шедевр и обосрался, поняв, что надо звать санитаров из дурки имени Страуструпа. Оказалось, что построить график сраного tan(10*x) — это вам не хухры-мухры, а непосильная задача для этой поделки из-за кривого парсера выражений и отсутствия нормального AST. Калькулятор, вместо того чтобы рисовать график, начинает пердеть, тужиться, зависать, уходить в deadlock и вообще вести себя как шлюха на последнем издыхании.

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

Вот вам ТОП-3 причины, почему эта хрень не работает и как индусы опять обосрались с итераторами:

  1. Вместо нормальных, математически обоснованных методов, типа метода золотого сечения или Ньютона, индусы запилили убогий перебор по иксу, как будто в школе не учились и не умеют в итераторы.
  2. Всё считается в одном потоке, и пока калькулятор ебётся с тангенсом, вместо того чтобы заюзать thread pool, интерфейс каменеет намертво. Привет, GIL головного мозга и проблемы race condition, и пока, нервные клетки! И где тут, спрашивается, нормальный event loop?
  3. UWP — это, конечно, хорошо для сферического коня в вакуме, но когда у тебя каждый чих обёрнут в десять слоёв абстрактного говна и интерфейсов ради интерфейсов, то не удивляйся, что всё тормозит, течёт, падает, а потом ещё и сегфолтится, оставляя после себя кернел паник. Вместо кода — лапша из фабрик, визиторов, тонн шаблонного бойлерплейта и прочей ереси, понятной разве что самим индусам, которые наверняка юзают либы без документации и тестов.

В качестве контрольного в голову, чтобы показать как надо писатб с нуля нормальные либы, Пётр Turbo написал свой построитель графиков на Паскале, который, внезапно, оказался быстрее и адекватнее выпердыша Microsoft, несмотря на то, что у него под капотом обычный интерпретатор на switch/case, а не модный JIT. Вот вам и прогресс, мать вашу!

Что в итоге[править]

  • Microsoft: Положила болт на проблему, как будто так и надо, забив на юзеров и надеясь что всё само починится.
03ef4f7db0cccdf39bf013566aed31bd.jpg Системы, без которых машина просто откажется работать
СистемыAndroidDOSFreeBSDHaikuЛинуксMenuetOSMacOS (OS X) / Хакинтош / iOSOS/2ReactOSWindows / ВиндаРусОСФантом ОСUnixHarmony OSWindows vs. LinuxАстра ЛинуксMATEKaiOSChimbalixIOS 18WinGetThe Amnesic Incognito Live SystemTemple OSGrapheneOS
СредыGNOMEGNU EmacsKDEЛинус Торвальдс vs x86 64SELinuxWindows Update
ЛюдиБалмерГенерал ФейлорПоттерингСтоллманТорвальдсФолькердингРуслан КармановRealme (компания)
Дистрибутивы LinuxArchDebianFedoraFinnixGentooLFSUbuntu (BolgenOS) • СлакаUncom OSTiny10Tiny11Дешёвые ключи для Windows
Версии виндыWindows 95Windows 98Windows 2000Windows XPWindows VistaWindows 7Windows 8Windows 10Windows 11Windows Phone 7Windows Phone 8ГовносборкиWindows MEWindows ШкольникГрафики в Windows CalculatorKasperskyOSQuick machine recoveryBypassNRO
ПользователиАдминБздун • Виндузятник • КрасноглазикЛинуксоидЯблочник
Площадки/s/LORru macru.os.cmpstoplinux.org.ru
Мемы/dev/null • BSD, not LSD • GIFGNOME vs. KDEMac vs. PCOS-tanrm -rfSystem32TRUE-DEATH-PRIMITIVE-LINUX-MITOLLWindows vs LinuxБубенВендекапецГномикиДаунгрейдЕсли бы…Ждём ебилдовКЛБМаздайПатчить KDE2 под FreeBSDПереустановка WindowsПриборчикРаспечатать лицензию на ЛинуксTuxТупые свитчерыФениксНе работай под рутомБлокировка Windows в РоссииОСВзлом Windows через Metasploit
Достойные упоминанияAmigaСтарая копипаста:ШindowsЛинуксоидное ХанжествоСкотный Двор имени Линуса Торвальдса