Коллеги, а не мог бы кто-нибудь из вас запилить нормальное сравнение Rust с плюсами? В последнее время rust то и дело упоминают как будущего убийцу с++, вот мне и стало интересно. Но изучать новый язык у меня сейчас времени нет, а все обзоры и сравнения (вот последнее на хабре: http://habrahabr.ru/post/225507/) сводятся к следующему:
Возьмем пример стандартного кода на с++
$ cat test.cpp
int main()
{
*((int*)nullptr) = 0xdeadbeef;
}
$ g++ -std=c++0x -o testcpp test.cpp && ./testcpp
Segmentation fault
А теперь давайте посмотрим, что будет, если этот же код попытаться скомпилировать rust:
rust -o testrust test.cpp
test.cpp:1:1: 1:4 error: expected item but found `int`
test.cpp:1 int main()
^~~
Очевидно, что сравнивая ошибки в синтетических двухстрочниках, ничего показать нельзя. Хотелось бы увидеть какую-нибудь задачу на примере из нескольких десятков строк, хорошо решенную на с++ (то есть без саботажа и попыток продемонстрировать убогость плюсов), краткий обзор проблем в коде, которые в с++ не решаются, потом реализация той же задачи на rust, в которой эти проблемы решены, а новых не добавилось.
Если где-то есть уже что-то подобное в сети, киньте ссылку.
UPD: нашел очень качественное сравнение с++ и go (http://kidoman.io/programming/go-getter.html).
tl;dr: товарищ сравнивал производительность, в качестве демонстрационной программы использовал трассировщик лучей. В первой серии go победил после множества оптимизацй, во второй серии с++ после таких же оптимизаций одолел go на одном ядре, в третьей серии в с++ впилили многопоточность, и он разорвал go пополам.
Стоит обратить внимание, что рейтрейсер на c++ в этом примере написан без единого new/delete.
Буду очень признателен, если кто-то напишет подобное сравнение с++ с rust, а еще лучше - если портирует трассировщик из примера выше на rust о объяснит, почему он лучше (там уже на несколько других языков портировали).