Pull to refresh
0
Владимир@v_0ver

Rust Evangelism Strike Force member

0,1
Rating
1
Subscribers
Send message

Ну так и цена= 1200 rub тоже не валидна, если читающая сторона не сможет распознать/обработать тип данных. А если читающая сторона знает про этот тип данных то она знает и про Rub(1200).

RON понимает суфиксы u32 и другие rust-суфиксы начиная с версии 0.9 “Fix issue #241 and allow parsing numbers with explicit type suffixes, e.g. 1u8 or -1f32 (#481)”.

Вообще в ваших примерах спецификации нехватает того как и во что это должно читаться. Если вы утверждаете что у вас типизация на 5 звёзд, а не просто числа/строки, то этот момент как мне кажется самый ключевой. Потому, что валидность данных будет определять не сам формат/спецификация, а читающая сторона. Не хватает описание поведения читающей стороны, когда приходят данные несоответствующие(или неоднозначны) её модели данных.

А вот так это выглядит на ron(Rusty Object Notation), и как по мне выглядит понятнее:

(
  книга: (
    rating: 4.9,
    артикул: "LOTR-SILM-01",
    название: "Сильмариллион",
    авторы: [
      "Дж. Р. Р. Толкин",
      "Кристофер Толкин",
    ],
    основной_жанр: "Эпическое фэнтези",

    аннотация: r#"История Первой Эпохи Средиземья, создания Сильмарилей и падения Моргота.
Древняя хроника, определившая лицо современной мифологии."#,

    коммерция: (
      цена: Rub(1200),
      тираж: 50000u32,
      вес: Grams(650),
    ),
  ),
)

Да, безопаснее и проще в сопровождении, но не значительно.

Да, это навязывается уловное выражение - когда условие может выступать(можно переписать) как выражение и возвращать, что-то. В более старых языках это будет как выше сказали - тернатный оператор.

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

Вот код на Rust:

fn my_min<'a, T: Ord>(a: &'a T, b: &'a T) -> &'a T {
    if a > b { a } else { b }
}

А это как будет выглядеть на Mojo:

def my_min[T: Comparable](ref a: T, ref b: T) -> ref[a, b] T:
    return a if a < b else b

Как по мне - вполне неплохо.

Так там же управление памяти как в swift (на счётчиках ссылок), а в Mojo как в Rust на системе владения/заимствования. Это концептуально разные языки.

Компиляторы консервативно не делают векторизацию операций с плавающей точкой, так-как это может сломать устойчивые численные алгоритмы. Поэтому нужно вручную подсказывать/указывать где можно делать автовекторизацию.

Но пока в Rust нет хорошего(по мнению большинства) способа это делать. Поэтому пока пляшем вокруг std::SIMD, std::intrinsic и дизайном кода, который склоняет к векторизации.

Пример “хорошего” api как раз и показывает компромиссность связанную с производительностью Python:

for batch in dataloader:
    logits = classifier(batch.features)
    loss = cross_entropy(logits, batch.labels)
    loss.backward()
    optimizer.step()

Где градиент? Какие параметры оптимизирует оптимизатор? Как эти параметры попадают в целевую функцию? Совершенно не видно потока данных. Всё это скрыто не потому, что это удобно - это не удобно, а потому, что мы не хотим, чтобы выполнение вываливалось в python-код и тормозило библиотечный код.

Всё же Python это альтернатива Matlab/Maple итд, а не С++/Rust . Python в мире ML это язык скриптования тулбоксов: PyTorch, JAX, итд. А С++/Rust это технологи на которых реализуют эти тулбоксы.

Зачем IDE чтобы читать код, кода это можно делать в редакторе кода, типо Zed в 120 фпс, а не на java-блоатваре?

Основное время уходит на LLVM - я проверял. Но тут нужно уточнить, что LLVM долго работает из-за того rustc генерирует много LLVM IR.

Не знаю, был ли это сарказм, но уж лучше так, чем кожевенные мешки.

Это конечно интересно читать, про локальный опыт LLM-оводства. Но сомнение взывает целесообразность всех этих приседания для 35B модели, причём сильно квантифицированной.

Когда за копейки можно получить DeepSeek-V4-Flash на 284B c потоком токенов под 100/сек.

Плюсую. Статьи плюсанут не могу - маководы минуснули карму =)

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

Это какие-то ужасные условия для работы. Я без 27+ моника и удобного кресла с подголовниками/подлоконтниками и стола нужной высоты даже работать не сяду, а не то, чтобы сколько-нибудь продолжительно работать.

Information

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

Specialization

Аналитик по данным, Инженер по данным
Машинное обучение
Python
Rust
PostgreSQL
Linux