Про двусвязнай список — это отсылка к частому упреку в сторону Rust, что, дескать, на языке с GC можно запросто список соорудить, на C/C++ — тоже — просто возьми указатели, а на Rust не так-то просто: нужно думать о слабых умных указателях, дабы избежать циклических ссылок. Ну либо также, как в C/C++, но с unsafe — и где тогда ваша хваленая безопасность в Rust?
Тут аргумент автора статьи вполне верный. Он о том, что примитивный двусвязный список на указателях — это совсем не безопасная вещь, и закономерно, что в языке, ориентированном на автоматический отлов небезопасных конструкций (включая потоконебезопасные), соорудить безопасный список — не такая тривиальная задача.
При переходе с C++ придется расстаться с ООП (в виде наследования), со всякой нетипизируемой шаблонной магией, с самоссылающимися структурами данных да и вообще с алиасингом указателей на изменяемый объект, также придется привыкать программировать без исключений и UB :)
Rust — потому что гирибы порядка ржавчинные, их очень трудно убить ) Ну и к железу это понятие довольно близко.
А может дело в маркетинге и в том, что самая главная страница интернета настойчиво рекомендовала перейти на Chrome? Посмотрите на динамику популярности IE, по сравнению с ним FF еще хорошо держится.
Где цифры? Все это ваше субъективное восприятие реальности. Я так тоже могу сказать, ибо перелез на FF под Android не из-за любви к Mozilla, а потому что он мне оказался удобнее. И никаких тормозов и проблем с батареей, при том что иметь десятки и сотни открытых вкладок для меня норма.
От себя добавлю, что Rust привлекателен еще тем, что дает больше средств контроля за кодом со стороны компилятора, чем другие императивные языки. У него хорошая система типов. Благодаря ей, в частности, многопоточнный код на Rust писать сильно проще, чем на том же C++ или Java.
Borrow checker не такой уж и страшный: когда к нему привыкаешь, уже и замечать перестаешь. При разработке прикладного ПО редко когда действительно приходится решать проблемы, связанные с размещением в памяти. Большую часть времени ощущение от разработки такое же, как и на языке с GC.
Вообще по этому поводу нет беспокойства. Rust уже остановить невозможно. Тем более, что Mozilla никогда особо и не вкладывалась в Rust. Теперь же быстрее сформируют Rust Foundation, язык уже довно созрел для самостоятельной взрослой жизни.
T: 'static означает, что тип T если содержит ссылки, то только статические.
&'a T можно представить как:
struct Ref<'a, T: ?Sized> {
reference: &'a T,
}
То есть для случая Ref<'static, T>, эта структура не будет содержать нестатических ссылок, а значит она будет удовлетворять ограничению Ref<'static, T>: 'static.
У модульного смартфона есть много преимуществ для пользователя. Вот некоторые из них:
Можно собрать нужную пользователю конфигурацию. Скажем, мне не нужен сканер отпечатка, фронтальная камера и вторая SIM, но мне нужно больше памяти и разъем jack, а кому-то — наоборот. Причем переконфигурировать смартфон можно и после покупки, под нужный в данный момент вариант использования.
Отдельные модули могут производить разные компании, появляется конкуренция и дополнительный выбор. Можно собрать себе устройство с меньшим числом компромиссов по качеству исполнения и функционалу.
Куча девайсов становится ненужными, если у вас будут дополнительные модули для них. То есть, не обязательно все модули всегда устанавливать сразу, некоторые можно использовать время от времени. Например, всякие медицинские датчики. Таким образом, смартформ становится легко использовать как универсальный конроллер разнородной периферии.
Граница — это одна и та же определенность, соединяющая и разделяющая два нечто. Одно из этих нечто — Вселенная, а второе что? Это второе нечто также необходимо отнести к Вселенной, если последняя означает все, что нас окружает. А это значит, что границ у Вселенной нет.
Большинство программистов — это наемные работники. А наемного работника нужно как-то "мотивировать" думать о задачах, проявлять творчество и писать код, когда сам продукт им в общем-то безразличен.
Наемный рабочий продает свою рабочую силу, но подлинный интерес к проекту и энтузиазм нельзя просто так купить. Для их возбуждения (хоть в какой-то мере) используют социально-психологические рычаги. Всякая корпоративная культура на это напралена и всякое корпоративное общение, включая те же созвоны и тим-билдинги.
А автор статьи — не знаю, чего он добивается. Какого-то коммунизма, наверное, хочет: типа чтобы все работали с энтузиазмом, без надзора, при этом думая о самом деле. Извините, но так прибыли не делаются и капиталы не наживаются.
Не знаю ни одного человека, который перешел на Rust именно по этой причине. Тут вы правы.
Про двусвязнай список — это отсылка к частому упреку в сторону Rust, что, дескать, на языке с GC можно запросто список соорудить, на C/C++ — тоже — просто возьми указатели, а на Rust не так-то просто: нужно думать о слабых умных указателях, дабы избежать циклических ссылок. Ну либо также, как в C/C++, но с unsafe — и где тогда ваша хваленая безопасность в Rust?
Тут аргумент автора статьи вполне верный. Он о том, что примитивный двусвязный список на указателях — это совсем не безопасная вещь, и закономерно, что в языке, ориентированном на автоматический отлов небезопасных конструкций (включая потоконебезопасные), соорудить безопасный список — не такая тривиальная задача.
При переходе с C++ придется расстаться с ООП (в виде наследования), со всякой нетипизируемой шаблонной магией, с самоссылающимися структурами данных да и вообще с алиасингом указателей на изменяемый объект, также придется привыкать программировать без исключений и UB :)
Rust — потому что гирибы порядка ржавчинные, их очень трудно убить ) Ну и к железу это понятие довольно близко.
Ваша реакция понятна, Rust действительно наступает вам на пятки. Иначе не было бы столько эмоционального негатива в его адрес.
А может дело в маркетинге и в том, что самая главная страница интернета настойчиво рекомендовала перейти на Chrome? Посмотрите на динамику популярности IE, по сравнению с ним FF еще хорошо держится.
Где цифры? Все это ваше субъективное восприятие реальности. Я так тоже могу сказать, ибо перелез на FF под Android не из-за любви к Mozilla, а потому что он мне оказался удобнее. И никаких тормозов и проблем с батареей, при том что иметь десятки и сотни открытых вкладок для меня норма.
От себя добавлю, что Rust привлекателен еще тем, что дает больше средств контроля за кодом со стороны компилятора, чем другие императивные языки. У него хорошая система типов. Благодаря ей, в частности, многопоточнный код на Rust писать сильно проще, чем на том же C++ или Java.
Borrow checker не такой уж и страшный: когда к нему привыкаешь, уже и замечать перестаешь. При разработке прикладного ПО редко когда действительно приходится решать проблемы, связанные с размещением в памяти. Большую часть времени ощущение от разработки такое же, как и на языке с GC.
Вообще по этому поводу нет беспокойства. Rust уже остановить невозможно. Тем более, что Mozilla никогда особо и не вкладывалась в Rust. Теперь же быстрее сформируют Rust Foundation, язык уже довно созрел для самостоятельной взрослой жизни.
Вы внимательно прочитали эту ветку? Я говорил, что смысл делать "неерунду" есть, вы же мне снова про "ерунду" толдычите.
Смысл в том, чтобы оставить что-то после себя, что включится в "геном" человечества. Только так можно победить полную смерть.
Вот да, у меня тоже сразу возник вопрос: затем трейт-объекты, когда есть перечисления и множество состояний статически определено?
Хорошая статья. Жаль только тема ограничений лайфтаймов не раскрыта: "
'a: 'b
", "for<'a>
" и т.п.T: 'static
означает, что типT
если содержит ссылки, то только статические.&'a T
можно представить как:То есть для случая
Ref<'static, T>
, эта структура не будет содержать нестатических ссылок, а значит она будет удовлетворять ограничениюRef<'static, T>: 'static
.И представляется мне, что дело тут не в технических трудностях реализации такой схемы.
У модульного смартфона есть много преимуществ для пользователя. Вот некоторые из них:
Можно собрать нужную пользователю конфигурацию. Скажем, мне не нужен сканер отпечатка, фронтальная камера и вторая SIM, но мне нужно больше памяти и разъем jack, а кому-то — наоборот. Причем переконфигурировать смартфон можно и после покупки, под нужный в данный момент вариант использования.
Отдельные модули могут производить разные компании, появляется конкуренция и дополнительный выбор. Можно собрать себе устройство с меньшим числом компромиссов по качеству исполнения и функционалу.
Куча девайсов становится ненужными, если у вас будут дополнительные модули для них. То есть, не обязательно все модули всегда устанавливать сразу, некоторые можно использовать время от времени. Например, всякие медицинские датчики. Таким образом, смартформ становится легко использовать как универсальный конроллер разнородной периферии.
Граница — это одна и та же определенность, соединяющая и разделяющая два нечто. Одно из этих нечто — Вселенная, а второе что? Это второе нечто также необходимо отнести к Вселенной, если последняя означает все, что нас окружает. А это значит, что границ у Вселенной нет.
… и залпы тысячи орудий слились в протяжный вой.
Если вам нужно такое поведение — используйте
TryFrom
.Посмотрите вот эти статьи, если еще не видели:
Принципиально — ничем. Хотя это зависит от уровня вашей принципиальности )
Большинство программистов — это наемные работники. А наемного работника нужно как-то "мотивировать" думать о задачах, проявлять творчество и писать код, когда сам продукт им в общем-то безразличен.
Наемный рабочий продает свою рабочую силу, но подлинный интерес к проекту и энтузиазм нельзя просто так купить. Для их возбуждения (хоть в какой-то мере) используют социально-психологические рычаги. Всякая корпоративная культура на это напралена и всякое корпоративное общение, включая те же созвоны и тим-билдинги.
А автор статьи — не знаю, чего он добивается. Какого-то коммунизма, наверное, хочет: типа чтобы все работали с энтузиазмом, без надзора, при этом думая о самом деле. Извините, но так прибыли не делаются и капиталы не наживаются.