Pull to refresh
88
0
Александр Мещеряков @freecoder_xx

Rust разработчик

Send message
У меня возникала пару раз ситуация, когда однозначность `dyn Trait` избавила бы от необходимости уточнять, что именно имелось ввиду в коде. Но насколько оправдано использование дополнительного слова во всех случаях использования типажей-объектов — практика и время покажут.
Купить конкурента, чтобы его закрыть. Класика жеж =)
Нужна альтернатива. И более свободная, чем был GitHub, чтобы опять не нарваться.

Вот дельное замечание. А позиция некоторых, дескать "автор сам дурак и нечего тут рассуждать" — неконструктивна.

Сейчас в Rust (с версии 1.26) можно записать так:


fn apply(func: impl Fn(i32, i32) -> i32, v1: i32) -> impl Fn(i32) -> i32
{
    move |v2| func(v1, v2)
}
Math
exclusive: [a..b), inclusive: [a..b]
Haskell
exclusive: <none>, inclusive: a..b
Elixir
exclusive: <none>, inclusive: a..b
Ruby
exclusive: a...b, inclusive: a..b
Swift
exclusive: a..<b, inclusive: a...b
Rust
exclusive: a..b, inclusive: a...b

Language designers be trolling. ¯_(ツ)_/¯

vs ..= for inclusive ranges

Язык должен жить и развиваться :) Если в сотый раз новые люди наталкиваются на одни и те же проблемы с синтаксисом, и в сотый раз нужно одно и то же рассказывать им о нем — то вообще, это может свидетельствовать о недостаточной организованности и канализированности данной темы. А если она уже канализирована — то пусть в своем канале она и обсуждается, глядишь, со временем может что еще новенькое родится там. Это — нормально.

Однако в позиции аргумента impl Trait ведет себя по-другому, а именно — как универсальный тип. Поэтому такой код корректен:


let d = bar(&5_f32);
let e = bar(&5_i32);

Хотя результирующие типы для d и e мы указать не можем.

Это происходит потому, что impl Trait определяет анонимизированный тип. То есть он скрывает имя реально используемого типа, а не позволяет использовать множество разных типов в этом месте, как делают переменные типа <T: Trait> статически или Box<Trait> динамически. Вот пример:


fn foo<T: Clone>(a: &T) -> T {
    a.clone()
}

fn bar(a: &impl Clone) -> impl Clone {
    a.clone()
}

fn main() {
    let a: f32 = foo(&2.5); // Ok
    let b: i32 = foo(&5); // Ok
    let c: i32 = bar(&5); // Error: expected i32, found anonymized type
}

https://play.rust-lang.org/?gist=c0adf6c27c0554d11e3f172cdce32bc7&version=stable&mode=debug


В случае с функцией bar мы лишили результирующий тип имени и как бы урезали его до возможностей типажа Clone. Но не более: никакой возможности использовать разные типы в этом месте, как у foo, мы не получили.

В будущем ... в паттернах также заменят на ..=. Сейчас уже работает эта конструкция как псевдоним: https://github.com/rust-lang/rust/issues/28237


А насчет [0..256), то это выглядит хорошо только для простейшего случая с константами. А если границы будут определяться сложнее? Разные виды скобок будут плохо восприниматься не только парсером, но и человеком. Более того, придется все время искать правую границу выражения, чтобы по скобке определить тип диапазона. Тогда как с синтаксисом ..= тип диапазона виден сразу.


Но соглашусь, что ..= тоже не идеален, особенно в паттернах if let:


if let 1..=5 = a {
    // тело
}

Но пока это лучшее, до чего договорилось сообщество. Если у вас есть альтернативные идеи — то добро пожаловать на GitHub, вы всегда можете высказать свое предложение в соответствующем issue :)

Несмотря на все различия этих технологий, общее впечатление от разработки на Rust скорее близко к впечатлению от разработки на Java, чем на C.

Вообще-то абсолютное большинство населения в современном обществе работает по-найму и создает какие-то ценности в составе совокупного рабочего того или иного предприятия.

Для того, чтобы форк был принят всеми как основная ветвь, это должно быть нужно и выгодно всем участникам сети. Если следовать этому форку будет только небольшая группа участников — основной ветви, которую продолжает поддерживать основная масса, это "материнской" валюте — как слону дробинка.

Вы правы, потому я и написал, что форк — это способ защиты общественной монополии. В нише останется та ветка, которую поддержит большинство.


Если у меня на кошельке было 100500 монет, у моего брата — тоже 100500, у кума/свата/соседа — по 9000, и тут кто-то хочет запустить форк, в котором у нас будет по нулям — с чего нам его принимать?

Вы можете его не принять. Но если его приняли все остальные, то вам придется с этим считаться, если вы хотите продолжать участвовать в общей для всех сети обмена. Это — диктат большинства.

Если IOTA — не для людей, то зачем она вам, как человеку? Или мне? Или она все-таки для людей?
Про IOTA я знаю, и относительно ее проблем тоже в курсе. А вам — рекомендую почитать, а то еще прогорите: telegra.ph/Pochemu-IOTA-mozhet-byt-skamom-10-01
А если 96% свалят в форк, кому оставшиеся будут продавать свою криптовалюту? Ее цена сразу после такого упадет ниже плинтуса.
Верно. Государство вынуждено выполнять общественно-полезные функции в той мере, в какой общество готово практически терпеть это государство. Проблема только в том, что дезорганизованное большинство значительно слабее организованного меньшинства, в руках которого государство. А это значит, что через государство это сильное меньшинство будет навязывать в большей степени свою волю всем остальным, чем остальные — ему. Конечно, стараясь не доводить ситуацию до предела (не загоняя кошку в угол).

Крупные собственники и монополии сильнее и организованнее суммы рядовых индивидуальных участников рынка, соединенных лишь стихией товарного обмена. Крупный индивидуальный участник обмена способен сконцентрировать больше ресурсов в своих руках и от его решений, куда он эти ресурсы направит, будут зависеть судьбы множества мелких индивидуальных участников обмена, которые по-отдельности не могут никак на них повлиять. А сознательно действовать вместе они тоже не могут, ибо соединены между собой только бессознательной стихией обмена, и оттого дезорганизованы.

Но информационные технологии вообще и возможность сознательного принятия решений относительно правил сети обмена на их базе в частности, способствуют действительной организации большинства в обществе.
Интересы общества должно обслуживать само общество, но для этого оно должно быть организованно. Пока общество организовано неравномерно: существующие в нем институты — это институты организованного меньшинства, которое использует их для управления остальными дезорганизованными массами преимущественно в собственных интересах этого меньшинства.

Криптовалюты — окончательно проблему не решают, но они способны продвинуть организацию общества для себя самого, так как они позволяют большинству устанавливать правила обмена и потенциально — коллективно распоряжаться любой собственность, которая проходит через эти правила.
Старые методы управления рынком могут применяться только самыми сильными участниками рынка. Которые владеют информацией о происходящем в среде обмена и которые имеют достаточную экономическую силу, чтобы влиять на ход сделок. Потому что старый обмен и его правила складывались стихийно, и каждый отдельный маленький участник видит и влияет только на малую часть рынка. Значит чтобы влиять на большую часть, нужно самому быть большим и сильным.

Криптовалюты же предполагают, что каждый участник сети обмена владеет всей информацией обо всех операциях и счетах в сети, а правила обмена устанавливаются совокупным выбором большинства участников того или иного ПО для осуществления обмена и той или иной версии данных. Принципиальная разница в том, что теперь каждый участник владеет всей сетью индивидуально и, одновременно, в равной степени сообща со всеми. Это значит, что общее выстраивается как результат выбора большинства, а не сильнейшего экономически меньшинства.

Речь тут именно об установлении самих общих правил обмена, а не о попытках схитрить в рамках установленных правил, от чего сеть защищается алгоритмами консенсуса.
Происходит, я уже написал коментарий ниже про The DAO.
А вот еще посмотрите: steemit.com/steem/@blockchained/dokazatelstvo-blagogo-upravleniya-daniel-larimer
Я считаю — это движение в этом же направлении усиления общественного контроля, хотя Даниэль и пытается это выставить как защиту частной собственности.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity