Разрешаем парадокс одновременно и читаемого и производительного кода
Большой тред об идее в Grumpy chat
HoTT (Гомотопическая теория типов: соответствия функций),
@greenest_pig: В HoTT можно доказать равенство функций, но при этом она имеет вычислительную интерпретацию. есть несколько экспериментальных языков, в JetBrains например (Arend).
Зазор между визуализацией и логикой во ФлоуЧартах ( ‣)
появилась огонь идея но как реализовать пока не совсем понимаю
итак там показывается какие ужасы таят сахарные конструкции вроде стрелочных методов в js «классах» или спред операторы после прохода транспилятором, есть и много не показанных штук, которые даже не на транспиляторе ужасны а в ассемблере, напирмер !foo сильно хуже чем foo === undefined
но эффективный код будет тяжео читаться
было бы здорово если в IDE был плагин который после нескольких запусков кода показывал где в коде медленно.
Проактивно; без запроса програмииста. И плагин должен быть из коробки; иначе нет шансов что это что-то изменит в индустрии
и теперь та самая идея:
некий инструмент должен давать подкладывать под читаемый код его эффективную фактическую версию.
далее в идеале нужно устанавливать изоморфизм. например такое возможно если эффективная версия не набирается произвольно а выбирается из предложенных особым интерпретатором вариантов. Т.е. это новый класс интерпретатора, который не пытается сделать некий абстрактно эффективный код, а выдаёт несколько вариантов между которыми в боттлнеках IDE заставит программиста выбрать лучший.
Side view. HoTT
у меня гомотопия вроде как к коду а не к типам,
это более сложная задача как я понимаю
но я и не хочу её в общем виде решать
у компиляторов как я себе представляют обычно есть варианты кода который он может сгенерить и они могут выбирать наиболее подходящий
но даже без изоморфизма можно жить думаю,
тогда правда на каждое изменение читаемого кода придётся просить актуализировать фактический эффективный код
или если правки тривиальные, то можно из на уровне ast разрулить без глубокого понимания тулингом кода или хотя бы предложить изменение человеку чтобы он уже доделал
движок JS и так делает очень много, но на том уровне где уже не так много можно исправить или угадать
тут мы решаем проблему раньше и главное до рантайма у пользователя