LINUX.ORG.RU

В Rust хотят заменить &mut на &uniq и убрать константность по умолчанию

 


1

8

Я тут на днях постил ссылку про значительные изменения в синтаксисе Ржавчины - заменили тильду на «box» - В Rust убрали ~ синтаксис . Так вот это микроскопическое изменение, по сравнению со свежими эпическими идеями разработчиков.

One sentence summary

I would like to remove the distinction between immutable and mutable locals and rename &mut pointers to &my, &only, or &uniq (I don’t care). There would be no mut keyword.

Серьезно подумывают убрать классную и всеми любимую константность по-умолчанию и вообще ключевое слово «mut» и вместо этого сосредоточиться на концепции владения и ввести ключевое слово «uniq» или «only».

Краткий пересказ мотивации затрудняюсь сделать, лучше просто прочитать пост:

http://smallcultfollowing.com/babysteps/blog/2014/05/13/focusing-on-ownership

Срач в реддите:

http://www.reddit.com/r/rust/comments/25i544/babysteps_focusing_on_ownership_...

Я пока не определился с мнением по этому вопросу. Вроде как мотивация вполне разумная, но мне как-то стремно думать о жизни без иммутабельности по-умолчанию.

P.S.: Если кто-то раньше думал и сейчас думает «Rust не нужен», то можно это не писать, я и так предполагаю «ненужна!» точкой зрения по-умолчанию каждого лоровца по любому вопросу.


Ответ на: комментарий от ozkriff

Выглядит разумно и убедительно. Так и константность по-умолчанию сохраняется, и ссылки соответсвуют тому, что есть.

quantum-troll ★★★★★
()

Вообще непонятный язык. Экспериментальный, постоянно что-то меняют.
Одних новостей на ЛОРе хватает чтобы пропало желание что-нибудь писать на Rust'е.
Синтаксис убогий (хуже, наверное, только Objective-C). Все слишком усложнено.
Такое чувство, что у них просто нет roadmap.

Начал, например, недавно изучать Clojure. Впечатления только положительные.
Рич Хикки делал его 2.5 года и в итоге выпустил законченный продукт.
И это заметно: красивый синтаксис, куча крутых фич, STM, активное коммьюнити, много либ, java interop и т.д.
ИМХО, отличный пример как НАДО разрабатывать новые ЯП.

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Синтаксис убогий (хуже, наверное, только Objective-C). Все слишком усложнено.

Обычный с++-подобный синтаксис. А «усложнённость» проявляется лишь в том, что система типов пытается обеспечить безопасность.

лисп
красивый синтаксис

Segmentation fault.

quantum-troll ★★★★★
()
Ответ на: комментарий от kovrik

Рич Хикки делал его 2.5 года и в итоге выпустил законченный продукт [...] ИМХО, отличный пример как НАДО разрабатывать новые ЯП.

А что, ты почитал архивы списка рассылки за те самые 2.5 года?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Он провел около 2,5 лет в работе над Clojure, прежде чем представил ее миру, причем большую часть этого времени он работал лишь над Clojure без сторонних приработков, живя лишь на свои сбережения. Когда пришло время представить свой проект, то этим представлением стало лишь одно письмо, разосланное нескольким друзьям в сообществе Common Lisp. Далее новость об этом проекте распространялась «вирусно», то есть заинтересовавшимися проектом людьми.

kovrik ★★★★★
()
Последнее исправление: kovrik (всего исправлений: 1)

в каких проектах используется раст, кроме мозиллы ?

kto_tama ★★★★★
()
Ответ на: комментарий от tailgunner

Я лишь говорю, что все эти постоянные изменения в Расте, экспериментальность и сложный ситаксис отбивают желание писать что-нибудь на этом языке.

А насчет процесса разработки: достаточно посмотреть на результат. Раст разрабатывается уже 4 года - и до сих пор находится в стадии альфы.

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Я лишь говорю, что все эти постоянные изменения в Расте, экспериментальность

А я говорю, что изменения - это сама суть процесса разработки. Всё всегда разрабатывается путем изменений, и кложура разрабатывалась так же - просто ты этого не видел.

и сложный ситаксис

Синтаксис Rust не сложнее Си. И жалобы на синтаксис от кложурщика?

отбивают желание писать что-нибудь на этом языке.

Желание писать на незавершенном языке либо есть, либо нет. Отбить его невозможно.

tailgunner ★★★★★
()
Ответ на: комментарий от kovrik

в этом году ж вроде обещали стабилизироваться. Ну и версию 1 сделать. Главное чтоб потом как с D не было ... D1, D2 ...

anonymous
()

Слишком много ключевых слов

anonymous
()
Ответ на: комментарий от tailgunner

Каждому свое. Кто хочет писать на Расте - тот и пишет. Я лишь высказываю свое скептическое мнение о нем.

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Я лишь высказываю свое скептическое мнение о нем.

О процессе разработки, а не о языке (если не считать «синтаксис сложный»). А жаль, интересно было бы узнать, что не так с Rust как языком.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Синтаксис может и не сложнее, но таки сложен. И хуже. И непривычные.

anonymous
()
Ответ на: комментарий от anonymous

Не так и много:

3.5.1 Keywords

The keywords are the following strings:

as box break continue crate else enum extern false fn for if impl in let loop match mod mut priv proc pub ref return self static struct super true trait type unsafe use while

В том же ультраминималистичном Си их всего на два больше:

auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while

ozkriff
() автор топика
Ответ на: комментарий от Dark_SavanT

Плюсовики негодуэ, поэтому и не осилили константность.

Плюсовики всегда негодуют, потому что на плюсах можно очень по разному писать и единого мнения у плюсовиков никогда нет.

Но я не понял, кого ты считаешь не осилившим константность?

ozkriff
() автор топика
Ответ на: комментарий от anonymous

Главное чтоб потом как с D не было ... D1, D2 ...

Я не очень знаю подробности ситуации в D, но разработчики Ржавчины, как я понимаю, через какое-то время (пара лет как минимум) после выпуска версии 1.0.0 хотят выпустить 2.0.0, где сломают обратную совместимость. Если этого не делать, то все кончится как С++.

Так что если нужна вековая обратная совместимость и плевать на все остальное, то я сразу бы на С++ и писал и не смотрел на другие языки :) .

ozkriff
() автор топика
Ответ на: комментарий от ozkriff

И что они реально думают, что такой язык будет кому-то нужен, кроме них самих? Сам подумай. Проект, состоящий из пары-другой файлов вполне себе можно переписать, проект уровня того же браузера придется переписывать фактически с нуля. Ну и нах это нужно? А потом 3 версия, 4, 5 ...

anonymous
()
Ответ на: комментарий от anonymous

И что они реально думают, что такой язык будет кому-то нужен, кроме них самих?

Я не знаю, что они думают, я мыли, тем более на расстоянии, читать не умею. Жаль, конечно, но что поделать.

... проект уровня того же браузера придется переписывать фактически с нуля ...

Объем кода, который надо переписать при смене версии зависит от конкретных изменений, разве нет?

ozkriff
() автор топика
Ответ на: комментарий от ozkriff

Объем кода, который надо переписать при смене версии зависит от конкретных изменений, разве нет?

Ага. А еще учти, что помимо смены, например, ключевого слова может так же поменяться поведение. В результате программа может вполне себе скомпилиться, но вести себя не так, как ожидалось. В общем если они заявили о том, что сломают совместимость ко 2 серии ржавой оперы, то яб даже не рисковал что-то серьезное начинать до этой самой 2 версии.

anonymous
()
Ответ на: комментарий от anonymous

Ага. А еще учти, что помимо смены, например, ключевого слова может так же поменяться поведение. В результате программа может вполне себе скомпилиться, но вести себя не так, как ожидалось.

Может, но такого стараются не делать.

В общем если они заявили о том, что сломают совместимость ко 2 серии ржавой оперы, то яб даже не рисковал что-то серьезное начинать до этой самой 2 версии.

Ну хз, эта проблема же не только языков и их стандартных библиотек касается. Она так же к, например, Qt относится. И ничего, как то же толпы народа его используют и с версии на версию переходят.

ozkriff
() автор топика
Ответ на: комментарий от ozkriff

Ну хз, эта проблема же не только языков и их стандартных библиотек касается. Она так же к, например, Qt относится. И ничего, как то же толпы народа его используют и с версии на версию переходят.

О том и речь, что большинство языков и либ при этом доказывают свою нужность.
Здесь же разрабы сами говорят, что язык чисто экспериментальный и мы будем постоянно в нем все менять и вообще пишите лучше на чем-нибудь другом, а то мы еще сами не знаем чего хотим.

kovrik ★★★★★
()
Ответ на: комментарий от ozkriff

Ну пока это факт. Посмотрим, будет ли он кому-то полезен дальше.

anonymous
()
Ответ на: комментарий от ozkriff

Если этого не делать, то все кончится как С++.

Т.е. получится успешный язык? Если так не сделать, то получится никому ненужное барахло. А с C++ все ещё только начинается.

anonymous
()
Ответ на: комментарий от kovrik

Здесь же разрабы сами говорят, что язык чисто экспериментальный и мы будем постоянно в нем все менять ...

То точно понимаешь, что состояние языка продлится только до версии 1.0.0? Просто процесс разработки открыт для всех желающих.

... и вообще пишите лучше на чем-нибудь другом, а то мы еще сами не знаем чего хотим.

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

ozkriff
() автор топика
Ответ на: комментарий от ozkriff

Но ты сам говоришь, что к 2.0 опять все переделают :( Так что какой смысл использовать такой язык? Если вместо развития постоянно майданить будут?

anonymous
()
Ответ на: комментарий от anonymous

Но ты сам говоришь, что к 2.0 опять все переделают :(

Где я говорил что «все»? Какую-то часть.

майданить

Фуэээ, мерзкая политота.

ozkriff
() автор топика
Ответ на: комментарий от kovrik

Здесь же разрабы сами говорят, что язык чисто экспериментальный и мы будем постоянно в нем все менять и вообще пишите лучше на чем-нибудь другом

Какое невежественное 4.2

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Т.е. получится успешный язык? Если так не сделать, то получится никому ненужное барахло.

Шансы на успех увеличиваются, но ценой постепенного обрастания старым барахлом вплоть до состояния С++, где можно целые геологические раскопки проводить уже. Если это для кого-то приемлемо, то зачем тогда вообще интересоваться новыми языками и наезжать на них? Можно просто писать на С++ и не париться :) .

А с C++ все ещё только начинается.

Зависит от того, что подразумевается под «кончилось-начинается»:

- язык популярен и много где используется - это да, это еще очень надолго;

- язык превратится в монстра - это уже индивидуально. Лично я это считаю ужасным и грандиозным фэйлом.

ozkriff
() автор топика
Ответ на: комментарий от ozkriff

В том же ультраминималистичном Си их всего на два больше

Меньше, естественно. Хотя не важно.

ozkriff
() автор топика

Гм, я пока не вижу, чтобы приняли какое-то решенение, но пускай как следует подумают :) .

Cmr в «This Week in Rust 49» вообще назвал ситуацию «mutпокалипсисом» и сказал, что лично он пока проигнорирует все это безумие:

http://blog.octayn.net/blog/2014/05/17/this-week-in-rust-49

Community Updates

The mutpocalypse is nigh. There is almost a full-page of reddit links to self-posts and RFCs in response to Niko's Focusing on Ownership post. The situation is pretty ridiculous. I'm going to pretend it doesn't exist, though. Peruse reddit if you feel up to reading the dozens of suggestions.

ozkriff
() автор топика
Ответ на: комментарий от ozkriff

Одна из вещей, которые меня раздражают в процессе разработки Rust - это то, что решения обсуждаются где угодно, от Reddit до Github, но только не в rust-dev@. Хипстота епт.

tailgunner ★★★★★
()
Ответ на: комментарий от ozkriff

Да не такой уж он и монстр. Если осилить. Но я бы хотел несколько другой новый язык, способный заменить C++ и дать реальный профит. Но ни D, ни rust этого не обеспечили. О go даже не говорю.

anonymous
()
Ответ на: комментарий от anonymous

язык, заменить C++ и дать реальный профит

Наверное, этот язык должен уметь всё, что умеет Си++, и плюс еще кое-что?

ни D, ни rust этого не обеспечили

Просто для протокола - Rust еще не существует.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Да не такой уж он и монстр. Если осилить.

Я себя считаю осилившим плюсы, к сожалению. Как от осиливания должен измениться тот факт, что я нахожу С++ монструозным :) ?

Но я бы хотел несколько другой новый язык, способный заменить C++ и дать реальный профит. Но ни D, ни rust этого не обеспечили.

А, собственно, что конкретно тебе от этого «нового языка» надо-то?

О go даже не говорю.

Go вообще из другой оперы.

ozkriff
() автор топика
Ответ на: комментарий от tailgunner

Наверное, этот язык должен уметь всё, что умеет Си++, и плюс еще кое-что?

Ну... Он должен не сильно напрягать при реализации того, что обычно делают на C++, быть по возможности проще синтаксически(как для человека, так и для компилятора), поддерживать идиомы, что выросли в C++(RAII, exception safety guarantees, policy-based design и т.д. и т.п.) на должном уровне. Так, чтобы они были естественными... Ну и нужно добавить много плюшек в статике - от рефлексии времени компиляции, до статического вывода регионов(region inference), а то и проверяемых во время компиляции контрактов(DbC).

По крайней мере, язык должен двигаться в эту сторону, ИМХО.

anonymous
()
Ответ на: комментарий от ozkriff

Я себя считаю осилившим плюсы, к сожалению. Как от осиливания должен измениться тот факт, что я нахожу С++ монструозным :) ?

Будет совсем другой уровень критики и вряд ли Rust покажется достойной заменой.

А, собственно, что конкретно тебе от этого «нового языка» надо-то?

См. предыдущий пост.

anonymous
()
Ответ на: комментарий от anonymous

+1 а рантайм можно вообще почти не трогать. Может ещё мультиметоды добавить, как Страуструп описывал в одном документе. Пригодились бы алгебраические типы данных ещё. Опциональный сборщик тоже. Rust почти такой. Но нет.

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

anonymous
()
Ответ на: комментарий от anonymous

Ну с go понятно. А чем D не подходит, например? Ну кроме того, что после свистоплясок D1, D2 его как-то стрёмно пользовать?

anonymous
()
Ответ на: комментарий от anonymous

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

Весьма вероятно. Но это не сделает язык более простым для изучения.

KblCb ★★★★★
()
Ответ на: комментарий от anonymous

Он должен не сильно напрягать при реализации того, что обычно делают на C++, быть по возможности проще синтаксически(как для человека, так и для компилятора), поддерживать идиомы, что выросли в C++(RAII, exception safety guarantees, policy-based design и т.д. и т.п.) на должном уровне. Так, чтобы они были естественными... Ну и нужно добавить много плюшек в статике - от рефлексии времени компиляции, до статического вывода регионов(region inference), а то и проверяемых во время компиляции контрактов(DbC).

Если бы языки программирования были женщинами, этот пост был бы юношескими эротическими фантазиями.

По крайней мере, язык должен двигаться в эту сторону, ИМХО.

D, который пытался двигаться в эту сторону, пришел в никуда.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

D шёл в этом направлении чуть ли не меньше, чем rust. Фантазии фантазиями, но направление должно быть в эту сторону...

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

Это, конечно, круто все. Но возьмешься за такой язык? Тут нужны очень богатые исследования или хотя бы глубокие знания предшествующих исследований. Вывод регионов так и не сделал никто полноценный.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.