All streams
Search
Write a publication
Pull to refresh
9
@lain8donoread⁠-⁠only

Rust Evangelist

Send message

Вот примерно так и должен выглядеть хабр/гиктаймс. Или достаточно близко. Чуточку стилей и будет норм. Надо только сказать, что сварщик я не настоящий.


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


Алсо первая табличка противоречит новостному заголовку. За китайскую стену вокруг России не более 27 процентов. Вокруг СНГ не более 15 процентов. Т.е. максимум не более 42%. Даже в самом плохом варианте.


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

А что вы имели ввиду под 1 << 65? Что оно вообще должно делать? При компиляции результат не влезает в 64 бита, о чём компилятор и говорит.


Или целочисленное переполнение…

Там оно есть. Просто по умолчанию считается, что эта фигня не должна происходить и debug-сборка паникует на этом. release-сборка паниковать не будет.


Если же нам требуется переполнение, как часть того, чего мы хотим достичь, то есть удобные варианты сказать "здесь должно быть переполнение". Все эти checked_, saturating_, wrapping_, overflowing_ версии позволяют задокументировать сей процесс. https://doc.rust-lang.org/std/primitive.i64.html (для остальных типов тоже самое). Плюс тип std::num::Wrapping.


Куча милых фич недоступна.
В Сях выстрел в ногу ценен и сам по себе, и удовольствием, когда ногу успел отдёрнуть.

Всё там есть. Нужны UB? Есть их там. Так что спортивная стрельба по ногам тоже присутствует. Можно ставить у всего unsafe и радоваться. К вашим услугам нестабильная функциональность. Там тоже изредка можно в биатлон поиграть. В том числе и с компилятором.


Или вам не нравится, что подобное можно найти в коде простым grep? Хочется творить какую-то магию, которая by design нечитаема? Тогда да, rust не для вас.

попытки его использования оставляют странные впечатления

Надо ли полагать, что это из-за его главной фичи? Которая ownership. Такого действительно нет в других ЯП.

Вы недостаточно знаете rust, чтоб судить о его недостатках и попросту заблуждаетесь. О текущих недостатках оного лучше читать что-то вроде https://github.com/rust-lang/rfcs/tree/master/text (некоторое, что там есть уже исправлено). Но это после чтения доков, спеков и относительно плотного знакомства.


Причём кончится это может тем, что вся ваша программа рассыпется к чертям собачьим.

При неаккуратном использовании. Как и в плюсах. Только в rust ещё и пометочка будет, что тут идёт сильное колдунство, о чём кстати и в документации есть. И без оной не скомпиляется.
Из документации: “trust me, I know what I’m doing.”. И нужно подобное редко.


Соответственно вам нужно будет в swap превратить неизменяемую ссылку на обьект в изменяемую.
Или я ошибаюсь?

Если нам требуется делать что-то тёмное с неизменяемыми штуками — у нас скорее всего серьёзная ошибка в дизайне. Ах, да. Строки rust не имеют ни какого отношения к строкам в java.
Или при реализации самого swap? Ну так то разумеется. А как иначе? Но это ведь часть стандартной библиотеки. Оттестировано и проверено.


Ещё по поводу строк в rust. Строка это тип str. Или тип &str, который есть ссылка на неизменяемый по размеру срез массива байт, который находится где-то в памяти плюс некоторое количество валидации для utf-8? Или который всё же &mut str, где мы можем изменять содержимое? А размер нам нужно менять? Тогда String, который в динамической памяти живёт. Сложно, да? Зато работает хорошо. Есть мутабельные и немутабельные для разных контекстов. Документация


в rust — требует выхода за пределы «безопасного» подмножества языка

Чем читаем? В rust есть безопасный швап и для чорной магии. Если нам просто два значения поменять местами — тот, что в mem используем. Если нужно что-то сложнее — это уже априорно чорная магия, которая требует аккуратности. И в этом случае unsafe будет подсказкой, что эту часть кода надо гораздо внимательнее писать и поддерживать.


Алсо о том, как контейнеры/ссылки себя в памяти ведут, есть такая штука https://docs.google.com/presentation/d/1q-c7UAyrUlM-eZyTo1pd8SZ0qwA_wYxmPZVOQkoDmH4/edit (на синенький текст ссылочки на документацию скастовали)

Кстати, на правах рекламы, в rust это делается несколькими вариантами:


let (y, x) = (x, y); // фактически меняет только их имена
                     // но мы можем так делать с разными типами

// Или что-то такое
use std::mem::swap;
swap(&mut x, &mut y); // но типы должны быть одинаковыми
swap(x, y); // если x и y сами по себе ссылки
// при этом считается, что ссылки не перекрываются во имя оптимизаций конечно же

Доки на swap


Плюс там есть replace


Если нам нужно сделать сильное колдунство (например с перекрытием памяти у этих штук), то к нашим услугам такие же, но небезопасные ф-ии из модуля ptr.

Детские мультики так же не мешает проверить…

Для лиц старше 14 лет они являются пропагандой наркотиков. (почти без сарказма)
А о том, как сочетаются алкоголь и детские раскраски я даже рассказывать не хочу.

Для начала как хранятся данные о связях? Какие части нам требуется оптимизировать? https://en.wikipedia.org/wiki/Graph_%28abstract_data_type%29 (вопросы чисто риторические)


Добавь я эти поля в граф — было бы менее красиво

Я не силён в java, но там нет выбора между хранением по ссылке/по значению?


Всмысле

чем отличается


struct Foo {
  a: i32,
  b: bool,
  c: String,
}

struct Bar {
  n: isize,
  foo: Foo,
}

От


struct Baz {
  n: isize,
  a: i32,
  b: bool,
  c: String,
}

В большинстве компилируемых ЯП разницы нет. Алсо есть же дженерики и в той же java.

Это кстати не про все ЯП. В том же rust функциональщина как минимум так же быстра, как императивщина. Иногда чуточку быстрее. Впрочем rust изначально несёт в себе бо́льшую сложность.

Зачем тогда другие три сопла? Чем остальные лучше/хуже?
Тут ещё надо отметить, что средние хакеры-взломщики зарабатывают больше лучших.
ЗАЧЕМ?!!!

А кто такой Джон Голт?

Продаваться будет? Или опять красивый неюзабельный концепт?

QIWI может использоваться в качестве одного из слоёв.


QIWI-кошелёк клиента -> обменник -> bitcoin-кошелёк магазина -> bitcoin-кошелёк партнёра -> обменник на что-то удобное для партнёра -> кеш партнёра


Минус схемы: достаточно большие комиссии
Плюсы схемы: отвязка продавца от покупателя, чуть больше удобства для покупателя, чуть больше безопасности для продавца


Можно дешевле и с чуть большим риском за кеш.


Подробности вам может рассказать каждый второй ПТУшник или каждый третий студент.

Нет ничего, что можно было бы сделать с помощью Биткойна быстрее и/или надёжнее, чем с помощью альтернативных подходов.

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

Всё это можно делать в ручную. И десять лет назад можно было.

Помимо всего этого есть другие ЯП со своими пакетными менеджерами. Хороший год.
Всё от ПО до железа — дыра безопасности. Ну хоть что-то в безопасности.

Кажется, рассказу не хватает фракталов.

fractal

С людьми в этом плане не сильно меньше проблем. Собственно подготовка специально обученного человека на достаточно узкую область в сумме занимает десятки лет.
Таким образом единственный недостаток искусственного интеллекта: он всё ещё не является сильным. Над этим упорно работают. Впрочем для настоящего скайнета/гладос/что-то ещё пока банально не хватает мощности. Кстати то, что AI поступает в итоге не как человек, минусом не является с практической точки зрения.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity