← All posts tagged programming

SannySanoff

Внезапно сообщаю, что грустная тема из псто #2944954 (как писать на плюсах под вендой если ты основательно сидишь на jetbrains IDE) имеет продолжение.

Clion + MS Compiler — нету отладчика
Во-первых в последней бете отладчик завезли, отлаживается через lldb, да вроде основные функции работают, всякие ушлые условные брекпойнты итп еще не допилили.

Во-вторых, нашел параллельный билд для CL (ms c++ compiler) (раньше не было), называется он jom, и притворяется nmake, и написан отчего-то на qt core, да пусть хоть на питоне.

Короче, проделал бенчмарки как конпелится мой проект, активный кусок который я пилю (36 compilation units, сильно не без templates), thirdparty и холодные куски не перекомпиляются, debug build:

28 sec = msvc 2019, jom instead of cmake, win
19.3 sec = cl /mp, visual studio 2019 (msbuild?), win
11.5 sec = zapcc(implements clang-7), linux
18.904 = clang8, linux
23.785 = gcc9, linux

такие дела. Говорят, clang умеет притворяться CL, осталось собрать zapcc под вендой и проверить его в этой роли.

почему мне не пофигу? потому что у меня жабовский склад ума, и я люблю когда оно быстро конпелит.

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

SannySanoff

А вот готовлюсь к ICFPC. А вот в этом году будем на плюсах. Готовлю заготовку CMake проекта, чтобы он запускался на трех платформах, тк участники будут разные. Qt у меня внутре, в Qt есть QOpenGLWidget, в нем рисую через QPainter (2d graphics). Взял с 2018 года модельку, налабал рендерер (на 2d canvas, сам делаю перспективные проекцыи и сортирую по z-index ерунда короче)

MSVC/Windows: Отрисовка 140мсек, математика 4 сек
Clang/Linux: Отрисовка 115мсек, математика 2.5 сек.

Оба — релиз билды на одном железе, время — на 1 frame в анимации. Знаю, шо отрисовка медленно, не в этом суть.

Главное беспокоящее, что что-то чахнет колосс.

SannySanoff

Постепенно я начинаю догонять, отчего люди не уважают клавишу Ctrl и ремапят ее куда попало. Я в последнее время слишком часто нажимаю, например, Ctrl+F2 (Stop debugged process), и мой большой палец (Ctrl) начинает прямо таки болеть от слишком большой подвернутости.

Гейбук с его шорткатами меня не подвиг, я его прогнул под себя, а один этот момент — и я уже задумываюсь поменять шорткат на Alt+F2. А на подходе Ctrl+C.

Так приходит старость.

SannySanoff

Тот случай, когда приходит новый чувак и спрашивает "а фигли тут сервис [производительный — примечание мое] начали писать на питоне?" И ты такой отвечаешь: "да, я тоже так считаю, шо можо было бы что-то и получше взять", и радуешься что нормальный чел. А он такой: "вот я, например, писал бы на ноде.жс".

Тьху!

SannySanoff

У меня такое случается, что я меняю шрифты в IDE.

Находка сезона iosevka ss07 просто глаз радуется, лигатуры там опять-таки норм (стрелочки клеви).

Нули — нулями, а не бублик с дыркой и не О, всякие амперсанды, буквы g и a, приятно смотреть. github.com

SannySanoff

По поводу #2932127 2 месяца спустя:

половину функций не вызвать в evaluation окошке вернулся обратно к gdb, оказывается можно компилить шлангом, отлаживать гдб, не знаю чего я тупил, теперь евалюейтится все

минус скорость компиляцииzapcc !!! плюс скорость компиляции!

минус удобные немутабельные структуры
написал себе протобуф кодеген в Ц++ в функциональные структуры для немутабельного использоварния с шаред пойнтерами.

минус лаконичность
Дефайны инлайны темплейты auto c++17 — уже норм.

Человек привыкает ко всему.

(Зато теперь у меня запуск в отладке qt тестового клиента занимает 12 секунд — в отладчик грузятся 100 шлиб, в 1 поток, можно отдохнуть перед тем как прога начнет работать)

SannySanoff

закончилось тем, что я переписал под себя cf (composable futures), точнее, я их выкинул и написал свое future/promise/when_all и все такое. Почему? Потому что те что были, как мне показалось, глючили в одном случае. Пока переписывал, оказалось мой баг был в моем коде, но дописал все равно.

Работает в несколько раз быстрее: копирует меньше, аллокаций делает меньше, и, стало быть, занимает меньшую долю общей нагрузки на мультицпу, кучу итп, я доволен. То шо было раньше, для моих нужд overengineered.

SannySanoff

Программирование дата процессинга на современных плюсах с STL на быстрой тачке подобно программированию на жабе на средней тачке,

минус удобство отладки (аццкие шаблоны не посмотреть нормально значения в окошке, половину функций не вызвать в evaluation окошке)

минус скорость компиляции

минус удобные немутабельные структуры (ибо аллок в жабе != аллок в плюсах) отсюда минус скорость выполнения потому что выходит больше copy by value (маленьких данных, в основном куски parse tree, не больших) чем хотелось бы (sic!)

минус лаконичность

ну а так уже почти привык.

SannySanoff

Чем дальше тем хуже ресетить на мускуле рутовый пароль, которой оно поставило в неизвестно что во время неинтерактивной инсталляции в убунте (ставил на самом деле pop! linux который убунта). Сегодня не помог и стек оверфлоу и все известные и неизвестные методы из методичек, 20 минут уже как процесс идет.

SannySanoff

Все ближе тот день, когда я скажу гуд бай своему гейбуку. Уже около трех лет я на нем педалю, и хочу поделиться, чем он лучше, а чем он хуже линукса, к которому я собираюсь вернуться.

Позитив:

Действительно, макось можно, но не нужно сильно настраивать, потому что, к счастью, практически все, что мне нужно было, оно работало сразу, и не ломалось: всякие видяхи-дисплеи, блютуц работает просто сразу (aptX), всякие выходы из sleep все как положено включается. После линуксов как-то нечего делать.

Удобно, что под нее все, что есть из сорцов, все собирается практически без проблем, или не собирается вообще (требуя новый xcode), потому что у нее свой Platform SDK, который один (а не кучи разных версий gcc/clang/whatever, как в линуксах), и xcode идет, и под ним прямо проект, который прямо запустил и отлаживай, например.

Тачпад у нея хороший. Наверное алюминиевый корпус это клево, посмотрим, будет ли мне не хватать. Еще в макоси шрифты хвалят, но мне оно почти без разницы.

С точки зрения юзабилити это нормальный юникс-комп с работающим невырвиглазным UI, единым и стандартным. Застой, но унификация, стало быть.

Негатив:

Шорткаты, которые я не смог принять, многие привычные Alt надо жать на Cmd. Все что мог, перемапил на стандартные, но оно все равно где-то вылазит, на новый софт нужно писать маппинг, утомительно это. Еще: отсутствие menu/dialog accelerators: я как без рук.

Тормозное видео, и не лечится. Элементарно возишь мышой и 50% цпу считаются и перерисовываются onmouseover в хроме или сафари на современных сайтах (монитор 4К). На том же железе линукс летает, а макос — нет. Кроме того, в последних ОС проблема не решена. Кроме того, они депрекейтят opengl! я вот не понимаю.

Ухудшение ОС (дальнейшее ограничение API, например ремапилка клавиш не работает в принципе после Sierra, упомянутое отсутствие дров на nvidia в принципе), ухудшение железа (тачбар вместо функ клав, макс 32Г RAM), убирание портов, security hardware в ненужных местах, и дальнейшая БАО. Требование постоянных обновлений правдами и неправдами (например если у тебя новый гейфон, то под него сдк только под новый xcode, который только под новый макос, или тот же флуттер требует новый xcode, который ... см выше) — это вот все имеет стройные объяснения в их системе ценностей, но у меня просто другая система ценностей.

По ощущениям, их POSIX environment (баш + бинаризы + консоль) работают несколько медленнее чем линукс (к-во exec на единицу времени например). Да и не серверная она поэтому в принцпе, тк не оптимизирована. Отсутствие конкуренции сказывается.

Еще мелкий нюанс личного плана, что я девелоплю для разворачивания на линуксе, и в последнее время все чаще встречается сишечка, всякий опенцлчик, и планируется еще некоторое HPC, которое, увы, на гейбуке все как-то не так. Приходится разные мейкфайлики и дефайнчики, утомительно.

Вердикт считаю практически законченным, но может еще что-то вспомню.

SannySanoff

Давеча случился релиз Flutter 1.0, по этому поводу был Live Event, где адепты и афтары собрались, показывали презентации, видосики, и коллективно радовались.

Я сам адепт Флуттера, но я не упущу случая пнуть. Там был один из главных дизайнеров (которые по визуальному дизайну), из тех, которые с высоким голосом и бородой от уха до уха. Он показывал демо, и она тормозила вплоть до 10FPS визуально в некоторых местах. На главной презентации.

Я вот постоянно интересовался, как так, уберут ли они тормоза к релизу. Не убрали. Написал об этом в реддит, дал ссылку на ютуб с таймкодом, говорю, а чо все молчат шо оно тормозит даже на презентации.

Заминусовали.

"Оно не тормозит"
"Ты никогда не писал на флуттере"
"Это был не релиз билд (а дебуг моде)"

Не понимаю я с этими современными людишками ничего.