Re[27]: А С++ то схлопывается...
От: alex_public  
Дата: 05.11.19 15:12
Оценка: +1
Здравствуйте, lpd, Вы писали:

lpd>И кстати я приводил свои аргументы, в том числе в этом топике, ты же отвечаешь одними лозунгами.


О, а этот "шедевр" я как-то пропустил... ) Сейчас отвечу по пунктам... )))

lpd>Я бы предпочел опциональную сборку мусорам возне с умными указателями(циклические ссылки, выбор shared_ptr/weak_ptr).


Сборку мусора (во всяком случае эффективную, например как в JVM) невозможно просто опциональной прикрутить к системному языку — потребуется его весь переделывать. И именно, потребуется полностью изменить подход в размещение объектов в памяти — появятся ненужные скрытые поля. Из-за которых язык получит те самые тормоза и пожирание памяти, характерные для управляемых языков. Правда как бонус появится рантаймовая интроспекция (рефлексия), но это совсем не то, что требуется для языка, нацеливающегося на нашу C++.

lpd>Еще большим злом считаю добавление в C++ move-семантики и rvalue-ссылок. Они только усложняют язык. В 98% случаях копирование объектов незначительно замедляет программу.



Семантика перемещения нужна в первую очередь совсем не для оптимизации (в конце концов в текущем коде она редко срабатывает автоматически, т.к. чаще перед ней срабатывает RVO), а как раз для возможности создания автоматического управления памятью (ну и кстати не только памятью, но и любыми другими ресурсами). Потому что без семантики перемещения ты просто физически не сможешь написать безопасный unique_ptr. Т.к. или у тебя будет разрешён оператор копирования (но тогда о каком "владение" можно будет говорить?) или же ты почти ничего не сможешь делать с таким указателем (ни в контейнер положить, ни в лямбду передать, вообще ничего). И кстати по тому же принципу работает множество сущностей стандартной библиотеки (потоки, мьютексы и т.п.), которые заявляют владение и соответственно не могут быть скопированы.

lpd>Ну процессоры сейчас в 100 раз быстрее чем в 90х, поэтому эффекты скорости от move-семантики, шаблонов, и прочей экономии на спичках, про которую тут часто говорят, уже не так полезны, как 30 лет назад.


Действительно стали быстрее и даже более чем в 100 раз. Только вот есть интересный нюанс — через 10 лет они уже точно не станут быстрее в 100 раз. Да и собственно последние лет 5 тоже никаких ускорений по сути нет. А вот усложнение ПО почему-то не собирается останавливаться...

lpd>вместо неявного освобождения unique_ptr<>, лично я предпочту вручную явно вызвать delete. Хотя да, это вопрос вкуса, спорить наверное бесполезно.


Это не вопрос вкуса, а вопрос безопасности. Потому как человек ошибиться может, а машина (компилятор) нет.

lpd>Ну потому, что С++-98 и C++-17 — это совсем разные языки. Общее у них только имя, да частично легаси-синтаксис. И появись фичи C++-17 в каком-нибудь редком языке, а не С++, массовым бы этот редкий язык они не сделали.


Совершенно верно. Более того, по сути как раз таким "редким" языком и является Rust. Только вот он вполне успешно пытается стать массовым (и в перспективе заменить C++ во всех его нишах).

lpd>Впрочем, если хочешь, пиши конечно на С++17. Только не надо абсолютизировать С++17 на хайпе С++.


Конечно! C++17 это действительно совсем торт. Вот C++20...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.