светлое будущее
Mike Potanin potan
Previous Entry Share Next Entry
Rust by example.
Отличный способ учить язык программирования.
Правда примеры написаны для старой версии компилятора, но сообщения об ошибках удивительно качественные и исправить обычно не сложно?
Интересно, когда на этом языке начнут проекты делать? Rust позволяет писать почти столь же эффективно и обобщенно, как C++ и при этом более надежно, чем на Java. Идеально для программирования Гигантских Боевых Ржавых Роботов!

Я потихоньку экспериментирую с ним -- пробую заменить с++ по работе. Вкрадце, пока ощущения 40/60 положительных к отрицательным. Но большая часть минусов, скорее всего, следствие беты.

Имхо, как заменитель с++ (в памяти ковыряться, байтики перекладывать поближе к ядру), скорее всего, должен выстрелить. Но основным языком я его не вижу, какой-то он нескладный :(

А какие были минусы?
Я только начал экспериментировать - не хватает контроля над мутабельными замыканиями (но обещают к релизу сделать) и типов высших порядков (но обещают классы типов с несколькими параметрами, что во многих случаях мне будет достаточно).
И коллекции пока очень жиденькие.

Edited at 2014-09-22 12:09 pm (UTC)

Да не, это всё, на самом деле, ерунда :) Даже в текущем виде язык существенно лучше с++, а то, что ты перечислил -- это уже всяческие признаки роскоши :)

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

Со сборкой мне пришлось тоже пару дней посражаться. Штатная cargo какая-то космически убогая пока, умеет только забирать пакеты с гитхаба :) Но у меня (вроде бы), что-то получилось с CMake, хотя и не совсем красиво, через add_custom_command / add_custom_target. Совместить цмейковские зависимости с crates и, параллельно, со стандартными сишными либами тоже отдельная боль :)

Да, собрать какой-то штатный пакет штатным же cargo тоже иногда то ещё приключение. Один раз он у меня при сборке crate для libgit не нашёл, откуда прилинковать системный zlib -- а он у меня оказался в /opt/local/lib. Места, где я мог бы пробросить этот путь, чтобы он дошёл до rustc в параметре -L тупо не существует на свете :) Пришлось выполнять какой-то хак с заменой бинаря rustc на шелл-скрипт вида "./rustc.bin $@ -L /opt/local/lib" :)

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

Меня в нём подход к дженерикам убивает.

Фигня язык. Нормальный язык должен выглядеть так:

a="Hello world!"
print(a)

или

a="Hello world!"
send(a) to printer

все остальное от лукавого

Edited at 2014-09-28 02:32 am (UTC)

?

Log in