Да, CMAKE это адская дичь. Начиная синтаксисом скрипта и заканчивая принципами работы. Поддержка языков это полный мрак и ужас. Ничего не документировано, языковые плагины пишет каждый кто как хочет, кучи непонятных переменных. Этап генерации вообще прибит гвоздями к названию переменных, при чем они неявно преобразуются.
Недавно надо было настроить сборку нетривиального системного проекта. Пришлось копаться в исходниках смаке, чтобы понять, почему эта гравицапа не работает. Страдал две недели, плюнул на это говно, разобрался с градлом и написал сборку за четыре дня.
Джаваскриптеры: мы не пишем на типизированных языках, потому что типы это сложно для понимания.
Тоже джаваскриптеры: держат типы всех объектов и параметров в голове, борются с неявными приведениями типов, пишут гору комментариев о типах, тонну тестов, чтобы проверить, что кривые типы не прилетят в функцию
Ну если это делается один раз, то ладно. А если оно как-нибудь хитро в цикле должно проходиться массиву массивов? Получаем сложность N*M. Вот такой вот нулевой оверхед.
Это, конечно, здорово, но не все языки — Раст. В тех же плюсах или джаве такого нет. Мне придется либо копировать массив, чтобы быть уверенным, что он не станет пустым, либо в голове держать, что я завернул массив в NotEmptyVec, и теперь его нельзя менять. Многопоточка может превратиться в тот еще ад.
Да, CMAKE это адская дичь. Начиная синтаксисом скрипта и заканчивая принципами работы. Поддержка языков это полный мрак и ужас. Ничего не документировано, языковые плагины пишет каждый кто как хочет, кучи непонятных переменных. Этап генерации вообще прибит гвоздями к названию переменных, при чем они неявно преобразуются.
Недавно надо было настроить сборку нетривиального системного проекта. Пришлось копаться в исходниках смаке, чтобы понять, почему эта гравицапа не работает. Страдал две недели, плюнул на это говно, разобрался с градлом и написал сборку за четыре дня.
А, ну земля TypeError'ом
Ну так правильно. Но почему вы валидацию типов делаете уже в функциях, которые совершенно не связаны с валидацией этих самых типов?
Как минимум, TS просто не даст вам запихнуть в функцию, принимающую строку, что-то кроме строки.
И опять же, в JS есть уже готовый Set, хоть и убогий.
Да и странный у вас API какой-то, раз вам оттуда прилетают уже готовые объекты JS, еще и разных типов.
Джаваскриптеры: мы не пишем на типизированных языках, потому что типы это сложно для понимания.
Тоже джаваскриптеры: держат типы всех объектов и параметров в голове, борются с неявными приведениями типов, пишут гору комментариев о типах, тонну тестов, чтобы проверить, что кривые типы не прилетят в функцию
Да, так гораздо проще и надежнее.
Ну если это делается один раз, то ладно. А если оно как-нибудь хитро в цикле должно проходиться массиву массивов? Получаем сложность N*M. Вот такой вот нулевой оверхед.
Это, конечно, здорово, но не все языки — Раст. В тех же плюсах или джаве такого нет. Мне придется либо копировать массив, чтобы быть уверенным, что он не станет пустым, либо в голове держать, что я завернул массив в NotEmptyVec, и теперь его нельзя менять. Многопоточка может превратиться в тот еще ад.
Потерялась логика.
Тогда еще не раскрыта тема скобок вокруг условий, циклов и при вызове функций.