migmit: (Default)
[personal profile] migmit
Наткнулся на язык 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", а "человек, прочитавший пару страничек из Душкина".

Date: 2012-12-26 06:07 am (UTC)
From: [identity profile] lionet.livejournal.com
Не, golang — это Limbo, сделанный человеком, который знает Limbo.

Date: 2012-12-26 06:38 am (UTC)
From: [identity profile] migmit.livejournal.com
Хм, а я-то не знаю Limbo. Стоит познакомиться?

Date: 2012-12-26 07:13 am (UTC)
From: [identity profile] lionet.livejournal.com
Это Go на VM (байткод) под Inferno (Plan 9). Я на него смотрел пристально несколько лет назад, но потом понял, что это недо-эрланг такой, и переключился на Erlang.

Date: 2012-12-26 06:43 am (UTC)
From: [identity profile] migmit.livejournal.com
Эм... а это Limbo можно на чём-нибудь живом запустить?

Date: 2012-12-26 07:13 am (UTC)
From: [identity profile] lionet.livejournal.com
Под маком запускается. http://www.vitanuova.com/inferno/limbo.html