tag:blogger.com,1999:blog-654279083390275842.post1803521451524628811..comments2024-03-19T12:22:43.654+03:00Comments on Размышлизмы eao197: [prog.flame] В теории под каждую задачу выбирается наиболее подходящий язык, на практике же...eao197http://www.blogger.com/profile/17283739752119445290noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-654279083390275842.post-68988066942693968752021-12-21T14:17:31.888+03:002021-12-21T14:17:31.888+03:00@XX
> Согласитесь, это не типовая задача.
Так...@XX<br /><br />> Согласитесь, это не типовая задача.<br /><br />Так мы, собственно, находимся в комментариях к заметке, в которой и описывается нетиповая задача. И именно про эту нетиповую задачу я и говорил, что язык с GC здесь сильно упрощает работу программисту.<br /><br />> Зато в Rust не нужно думать о конструкторах :)<br /><br />А зачем о них думать? В D такие же конструкторы, как и в C++. Если привык, то никаких проблем с их использованием нет.<br /><br />> Или беспокоиться о большинстве проблем в многопоточном коде<br /><br />Чтобы не беспокоиться о большинстве проблем в многопоточном коде нужно не смирительную рубашку на себя одевать в виде Rust-а,а использовать инструменты, дающие возможность применять высокоуровневые подходы (actors, tasks, CSP, fork-join и т.п.).<br /><br />На уровне языка разве что очень желательно иметь иммутабельность для объектов, а в D она как раз таки есть.<br /><br />Если же педалить многпоточность на голых mutex/semaphore/condition_variable, то проблемы будут все равно.<br /><br />> А почему в D не нужны Rc/Arc?<br /><br />Потому что там полноценный GC. А RefCounted там, полагаю, для случаев, когда GC не используется.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-16768377312750602132021-12-21T13:56:44.581+03:002021-12-21T13:56:44.581+03:00> Ага, сложные структуры данных на графах именн...> Ага, сложные структуры данных на графах именно так и делают.<br /><br />Согласитесь, это не типовая задача. Если нужны сложные графовые структуры данных, то одно из двух: либо подключаете готовую библиотеку и не паритесь, что будет в 80% случаев решением, либо пишите свою, на указателях. Только в последнем случае придется попотеть, и то, правильно обернув unsafe в safe, потом следить за безопасностью не надо, просто пользуешься собственным safe API как библиотечным.<br /><br />> Отмечу просто, что сам по себе выбор между Rc/Arc -- это то, что в принципе не нужно в том же D.<br /><br />Зато в Rust не нужно думать о конструкторах :)<br />Или беспокоиться о большинстве проблем в многопоточном коде, таких как проблема с использованием finalize в Java: https://youtu.be/K5IctLPem0c<br /><br />А почему в D не нужны Rc/Arc? Вот вроде есть: https://dlang.org/phobos/std_typecons.html#.RefCountedXXhttps://www.blogger.com/profile/10464349444066531375noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-53418671820967608582021-12-21T08:56:17.054+03:002021-12-21T08:56:17.054+03:00@XX
> Рецепт прост: все по возможности просто ...@XX<br /><br />> Рецепт прост: все по возможности просто кладем на стек. Где clippy ругнулся - делаем Box. В паре мест добавляем Rc/Arc. В общем-то все.<br /><br />Ага, сложные структуры данных на графах именно так и делают.<br /><br />Отмечу просто, что сам по себе выбор между Rc/Arc -- это то, что в принципе не нужно в том же D.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-32962670334418269802021-12-21T00:49:17.073+03:002021-12-21T00:49:17.073+03:00Я вот ХЗ почему это кажется со стороны такой пробл...Я вот ХЗ почему это кажется со стороны такой проблемой в Rust, хотя на практике редки случаи, когда это дейтсвительно приводит к трудностям. Рецепт прост: все по возможности просто кладем на стек. Где clippy ругнулся - делаем Box. В паре мест добавляем Rc/Arc. В общем-то все. Я вот по ощущениям от управления памятью в Rust не вижу существенной разницы по сравнению с Java (представьте себе!). Но первые месяцы обучения было непросто, это да.XXhttps://www.blogger.com/profile/10464349444066531375noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-24471717320661127472021-12-20T22:09:57.513+03:002021-12-20T22:09:57.513+03:00@XX
> А почему Rust не применим?
Потому что э...@XX<br /><br />> А почему Rust не применим?<br /><br />Потому что это не та задача, где хочется пердолиться с ручным управлением памятью. Как раз здесь GC облегчает жизнь программисту очень сильно.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-10993918575252726672021-12-20T21:49:00.891+03:002021-12-20T21:49:00.891+03:00А почему Rust не применим? Когда знаешь Rust, он в...А почему Rust не применим? Когда знаешь Rust, он вдруг оказывается применим ко всему :)XXhttps://www.blogger.com/profile/10464349444066531375noreply@blogger.com