cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

Предложение по улучшению #589

Open hagz0r opened 4 months ago

hagz0r commented 4 months ago

Я хочу чтобы программы на языке С++ выполнялись быстрее, были безопасными и не допускали ошибок!

Примеры мы можем увидеть в реализации таких языков как Rust, JavaScript.

Код:

fn main() {
  println!("Make C++ faster!");
}
console.log("Make C++ faster!")

Полезные ссылки:

ansa-sequence commented 4 months ago

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

kirillsurkov commented 4 months ago

Предложение очень хорошее! Но, к сожалению, это сломает ABI.

kov-serg commented 4 months ago

Я хочу чтобы программы на языке С++ выполнялись быстрее, были безопасными и не допускали ошибок!

Это в принципе не возможно по определению просто из-за постулатов заложенных в стандарте. Где вы видели большую программу на C++ без UB? Что бы хоть как-то улучшить язык надо добавить фаз компиляции. Хотя бы отделить синтез кода от компиляции, а не присовывать всё в шаблоны, макросы и концепты пихая всё в кучу. Тоже самое касается и профилирования и оптимизации и проверок. Это должны быть отдельные фазы сборки. Более того пора бы уже добавить динамическую линковку функций с разными abi и ограничениями, а не просто по имени. Так как уже давно есть заопарк вариаций архитектур. Что мешает использовать обычную базу данных для поиска требуемых библиотек по имени функции и если такой нет собрать под нужную по мере надобностии, а не таскать фалый библиотек (которые сжимаются в сотни раз, что нимекает на чудовищную избыточность) с тьмой с суффиксов типа rv64imafdc_zicsr_zifencei. Да и клинковке есть вопросы почему нельзя указать опцию весь такой-то (селектор) namespace собери в отдельный файл и подгружай его динамичеси. По поводу сломает ABI, так добавте механизм управления и контроя ABI.