Dec. 25th, 2012

migmit: (Default)
Наткнулся на язык Rust. Позиционирует себя как "C, сделанный человеком, знающим Haskell". Читаю официальный туториал — и понимаю: да, так и есть. Алгебраические типы. Замыкания. Классы типов (называемые трейтами, но всем ведь всё понятно). И одновременно — язык достаточно близок к машине: не чисто функциональный, с указателями (причём, безопасными) — ну супер.

А потом натыкаюсь на такой пассаж:
The Rust compiler compiles generic functions very efficiently by monomorphizing them. Monomorphization is a fancy name for a simple idea: generate a separate copy of each generic function at each call site, a copy that is specialized to the argument types and can thus be optimized specifically for them. In this respect, Rust's generics have similar performance characteristics to C++ templates.
Ып. Вот тебе, бабушка, и сабж. Никакие это не дженерики, а обычные темплейты, только обрезанные. Попробовал на всякий случай свой тест — и, ЧСХ, Rust его зафейлил с совершенно невнятным сообщением об ошибке.

И сразу у меня впечатление, что делал этот язык не "человек, знающий Haskell", а "человек, прочитавший пару страничек из Душкина".