Проект Mozilla анонсировал (https://mail.mozilla.org/pipermail/rust-dev/2014-July/010655... выпуск экспериментального языка программирования Rust 0.11.0 (http://www.rust-lang.org/), сфокусированного на безопасной работе с памятью и обеспечению высокого параллелизма выполнения заданий (возможность порождать тысячи и даже миллионы подпроцессов). Исходные тексты проекта распространяются (https://github.com/mozilla/rust/) под лицензией MIT. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo (http://www.opennet.me/opennews/art.shtml?num=36576), написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).С момента прошлого выпуска внесено около 1700 изменений (https://github.com/rust-lang/rust/wiki/Doc-detailed-release-... основная работа была связана с оттачиванием качества библиотек и системы типизации. В частности, представлена новая инфраструктура для использования типов динамического размера (http://smallcultfollowing.com/babysteps/blog/2014/01/05/dst-...Проведён рефакторинг (https://github.com/rust-lang/rfcs/blob/master/complete/0012-... стандартной библиотеки - монолитная libstd разделена на несколько отдельных библиотек - libcore, liblibc, liballoc, libcollections, librustrt, libsyn и librand (libstd теперь выступает в роли надстройки над этими библиотеками). Прекращена поддержка синтаксических конструкций "~" и "@", вместо которых следует использовать библиотечные типы "Box" и "Gc".
По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики, а также ориентацией на блочную организацию структуры кода, которая позволяет реализовать задачи в виде легковесных сопрограмм. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.
Базовые возможности языка:
- Ориентация на безопасность:
- Аккуратная работа с памятью - никаких нулевых и потерянных указателей. Автоматическое управление памятью;- Контроль изменчивости. Объекты неизменяемы (Immutable) по умолчанию;
- Безопасность динамического выполнения: обработка сбоев, исключения, ведение лога, RAII / dtors;
- Typestate: возможность определения сложных инвариантов, контролирующих структуры данных.
- Ориентация на параллельность и эффективность кода:
- Явный контроль памяти, контролирование схемы распределения памяти;- Крайне лёгкие задачи, формируемые в виде сопрограмм. Лёгкость в порождении тысяч и миллионов подпроцессов;
- Итераторы стека (фактически лямбда-блоки без распределения кучи);
- Статическая, нативная компиляция с созданием исполняемых файлов ELF, PE, Mach-o;
- Прямой и простой интерфейс для кода на языке Си;
- Ориентация на практическое применение:
- Мультипарадигмальный, функциональный, императивно-процедурный, объектно-ориентированный, поддерживающий параллельную actor-модель;- Функции высшего порядка с биндингами;
- Нет номинальных типов (http://en.wikipedia.org/wiki/Nominative_type_system) или иерархии типов;
- Мультиплатформенный, поддерживается Windows, Linux, Mac OS X, *BSD;
- Хранение строк в UTF-8, разнообразие низкоуровневых типов;
- Работает с существующими нативными наборами инструментов: GDB, Valgrind, Shark и т.д.;
- Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.
URL: https://mail.mozilla.org/pipermail/rust-dev/2014-July/010655...
Новость: http://www.opennet.me/opennews/art.shtml?num=40125
Зачем нужны Раст и Го, когда есть Эрланг?
Надо же людям чем-то заниматься. Вот и Эрланг тоже нинужно.
Только OOCobol
только хардкор
Эрланг, при всех его плюсах, далеко не самый удобный язык. Одни строки чего стоят. Плюс эрланг - это, факьтически, только одна парадигма, а их часто удобно смешать.
Go не нужен, потому что gc. Эрланг вообще убогая помойка. А вот Rust перспективы умеет.
Rust тоже gc, вообще-то. А что Go не нужен - согласен, если хочется бедный возможностями язык - есть си с паскалем и прочая древность.
Вы путаете gc и автоматическое управление памятью.
В расте в стандартной библиотеке гц тоже есть.
Правильный вопрос: зачем нужен rust, go, erlang, ...
Чтобы мазиле было чем заняться...
не, Раст очень интересен - симбиоз ФП и ООП, чего мало в эрланге. Эрланг тоже крут, но нет пространств имен и полезных возможностей ООП: наследование, виртуальные методы, полиморфизм. Надо, чтобы разработчики Раста еще более пристально взглянули на эрланг и позаимствовали еще больше отдельных фич и парадигм таких как матчинг, хвостовая, атомы, ноды, реализации модели "акторов"... Но в целом все довольно шикарно - главное выйти за пределы традиционных сопрограмм.
> не, Раст очень интересен - симбиоз ФП и ООП, чего мало в
> эрланге. Эрланг тоже крут, но нет пространств имен и полезных возможностей
> ООП: наследование, виртуальные методы, полиморфизм. Надо, чтобы разработчики Раста еще
> более пристально взглянули на эрланг и позаимствовали еще больше отдельных фич
> и парадигм таких как матчинг, хвостовая, атомы, ноды, реализации модели "акторов"...
> Но в целом все довольно шикарно - главное выйти за пределы
> традиционных сопрограмм.Насколько я знаю, в Rust есть и матчинг, и модель акторов (о ней и в тексте статьи сказано). Относительно остального надо поинтересоваться
зачем нужны Раст, Го, Эрланг, Си, когда есть ассемблер?
зачем нужны компьютеры, когда есть человеческий мозг?
Мозг - это мракобесие же, непрогрессивно, мэйнфрейм практически.
Сейчас модно распределенность, чтоб много дешевых взаимозаменяемых нейронов, shared nothing, message passing - как у медузы.
Gray goo.
Зачем нужен мозг, если многие прекрасно живут, по всей видимости, без него?
Говорят, что человеческий мозг способен распознать сарказм. Врут.
Иногда способен. Но только человеческий же сарказм.
Сарказм медузы нам не распознать. Что подтверждает нашу уверенность в превосходстве безмозговой модели.
Если сравнивать Erlang и Rust то:
Динимическая типизация - Статическая типизация
Нет прямой работы с памятью - Есть (как прямамя так и GC)
Функциональное программирование - ООП
То есть совершенно разные ЯП.
В rust ООП ровно такое же как в haskell -- тот же самый вид полиморфизма и нет наследования. А erlang куда больше ООП язык, чем многие другие.
Зачем Вам ООП?
Что бы - ООП! Нанай-на!
> Функциональное программирование - ООПСам по себе Erlang это безусловно функциональщина, но т.к. пишут чаще всего не на Erlang, а Erlang/OTP, то можно говорить, что Erlang самый натуральный ООП.
ООП - да. А вот насчет натуральности я бы поспорил. На редкость неестественно оно выглядит. Прнимерно как метапрограммирование, прибитое к старым плюсам. И работает, и мощное донельзя, и используется повсеместно - но совершенно очевидно, что это насилие над языком. Благо, в С++11 подправили, осталось концептов дождаться.
ну, когда там уже появится стабильный rust 1.0
http://www.opennet.me/openforum/vsluhforumID3/95231.html#18
Дональд Кнут одобрил ???
значит паскаль и Си, остальное сжечь, еретики
Очень похоже на торт! Раньше всё надеялся на D, но GC убивает все преимущества, Go как-то мимо меня прошёл, а вот Rust как раз может стать той серебряной пулей.
Go полностью завязан на GC, так что вам он понравится видимо еще меньше чем D :) А еще там нет дженериков