?

Log in

No account? Create an account
 

У нас есть Rust, поэтому C++ больше не нужен. - swizard — ЖЖ

About У нас есть Rust, поэтому C++ больше не нужен.

Previous Entry У нас есть Rust, поэтому C++ больше не нужен. 19 окт, 2017 @ 17:47

Просто чудесный пост у thesz, наглядно демонстрирующий мой лозунг из сабжа.

Давайте пройдёмся по пунктам:

> Большое неудобство, однако, составляет отсутствие подсказок компилятора в сообщении об ошибке

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

> но сама необходимость думать о том, как правильно создавать объект, отнимает достаточно сил

А в Rust отсутствует возможность "неправильно" создать объект.

> должен ли я бросать исключение

В Rust нет исключений, а есть только один "идеоматический" (как это по-русски — общепринятый?) способ сигнализировать об ошибке: вернуть Result.

> могу ли я оставить объект не полностью или не корректно созданным

В Rust невозможно (без использования unsafe) не полностью инициализировать объект.

Ну и так далее.

На самом деле, в Rust очень многое сделано сразу правильно, по сравнению с C++. Ведь его же создавали люди, которые много программировали на C++ :) В Rust мы не встретим таких понятий, как "правило пяти", "swap", "pimpl", etc, потому что язык уже сделан как нужно.

Кроме того, в Rust используется только один общепринятый стиль написания кода (вспоминаем все эти венгерские нотации, все эти противоречащие друг другу c++ guidelines от гугл, тоёты, микрософта и тд), существует один всемогущий cargo c сайтом crates.io (вспоминаем цмейк, автомейк, сконс и тд), а также rustdoc, rustup, rustfmt, и тд и тп.

Повторюсь (уже в третий раз в этом блоге): нет никаких причин в настоящее время программировать что-то новое на C++, потому что есть Rust. Могут быть причины, чтобы выбрать вместо Rust, там, какой-нибудь Haskell, Scala, Erlang, да даже Common Lisp. Но не может быть никаких причин, чтобы вместо Rust выбрать C++.

Оставить комментарий
[User Picture Icon]
From:yorool_gui
Date:Октябрь, 19, 2017 15:00 (UTC)
(Link)
Все так. Но увы, на hh.ru например вакансии на Rust искать чуть менее чем бесполезно :-(
[User Picture Icon]
From:thesz
Date:Октябрь, 19, 2017 15:06 (UTC)
(Link)
>А в Rust отсутствует возможность "неправильно" создать объект.

В Rust объект - это значение, или изменяемый кусок памяти? Если последнее, то увы.

>Ведь его же создавали люди, которые много программировали на C++ :)

Его создавали люди, которые мало программировали на Хаскеле, иначе бы его не было.

Надо мне собраться с силами. :(
[User Picture Icon]
From:swizard
Date:Октябрь, 19, 2017 15:25 (UTC)
(Link)
> В Rust объект - это значение, или изменяемый кусок памяти? Если последнее, то увы.

Физически это кусок памяти, разумеется. Но Rust нельзя напрямую с памятью под переменными работать вне unsafe-блоков, и в языке, соответственно, есть гарантия на то, что любое прочитанное значение обязательно было до этого корректно инициализированно.

> Его создавали люди, которые мало программировали на Хаскеле

Хаскель в этом плане тоже устарел. В том же purescript head и tail возвращают Maybe :)
From:zlokk
Date:Октябрь, 19, 2017 20:53 (UTC)
(Link)
простите, что я с ассемблером в калашный ряд, но все же - а раст компилируется в нативный винапи код? околосистемные тулзовины на нем можно писать?
[User Picture Icon]
From:4da
Date:Октябрь, 19, 2017 20:54 (UTC)
(Link)
Чо там с кроссплатформенным гуем под раст?
[User Picture Icon]
From:kika
Date:Октябрь, 19, 2017 21:30 (UTC)
(Link)
У раста есть своя библиотека для гуя, довольно прикольная по идее - relm. Это реализация идей Elm в расте для нативного гуя, но к сожалению, базируется она на GTK+ и поэтому выглядит как говно везде, кроме линукса с гномом, который сам выглядит как говно, поэтому на его фоне незаметно.
Есть еще conrod(?) который вообще с нуля вроде как написан, но я его не пользовался.
Было бы удивительно если бы кто-нибудь уже не запилил бы какой-нибудь Qt.rs или что-то подобное. И если бы мне надо было бы написать коммерческое гуеприложение на расте, я бы взял конечно его (если оно есть).
[User Picture Icon]
From:Иван Болдырев
Date:Октябрь, 20, 2017 07:03 (UTC)
(Link)
По русски -- "идиоматический" :)
[User Picture Icon]
From:swizard
Date:Октябрь, 21, 2017 00:28 (UTC)
(Link)
Точно, спасибо =)
[User Picture Icon]
From:kodt_rsdn
Date:Октябрь, 20, 2017 11:13 (UTC)
(Link)
У Сергея Зефирова пригорело, и не только потому, что кресты плохие, а хаскелл хороший.
А потому, что Сергей давно не писал на крестах и сейчас устроил массовый забег по граблям. Причём мотивация учиться у него понижена: зачем все эти грабли, если уже есть любимый и отлично освоенный другой язык. Поэтому и брюзжит.

А что до руста,

"руст прекрасно всё подсказывает" - не руст, а компилятор руста. Не надо путать.
Шланг тоже подсказывает, но Сергей не любит ни шланг, ни макос (для которого шланг - дефолтный компилятор).
Дайте мне стопятьсот рублей, и я напишу компилятор руста, который не будет подсказывать.

"руст не бросает исключений" - в крестах это лечится договорённостью о коде и одним флажком компилятора.
Например, проект chromium не использует ни исключений, ни rtti, ни громоздкие инлайны (это, кстати, позволяет избежать некоторых нарушений ODR). Всего-то - флажки компилятора, хук в гите и код-ревью.

Только не говорите, что "а в русте это из коробки". Если мне из чувства говнистости захочется понапихать в код на русте всякие бомбы и костыли, типа того же unsafe не по делу, - только код-ревью и спасёт. А компилятор пропустит.

Ну и наконец. Кресты - это промышленный стандарт. А руст - игрушка.
Даже свифт яппловский - игрушка, хотя яппл претендует сделать его стандартом в рамках своей экосистемы.
Но на их радужные попытки мы гневно ответим обжектив-крестами, которые волшебным образом совместимы и с сями, и с плюсями, и с обжективцем и всем макосевым апи.
В общем, сперва найдите сильного покровителя, который будет форсить язык. Как Элизер Бен-Йегуда форсил иврит.
From:sigterm
Date:Октябрь, 22, 2017 09:07 (UTC)
(Link)
нет никаких причин в настоящее время программировать что-то новое на C++, потому что есть Rust. Могут быть причины, чтобы выбрать вместо Rust, там, какой-нибудь Haskell, Scala, Erlang, да даже Common Lisp. Но не может быть никаких причин, чтобы вместо Rust выбрать C++.

Леша, ну есть же. Например, наукоемкие вычисления где нужна скорость. Расчеты всякие, диффуры, вот это вот все.

Edited at 2017-10-22 09:10 (UTC)
[User Picture Icon]
From:rdia
Date:Ноябрь, 4, 2017 16:35 (UTC)
(Link)
Ну, В.Вагнер ещё лет 10 назад писал, что для новых проектов С++ не нужен. Ещё до Руста.
[User Picture Icon]
From:wannabeamug
Date:Февраль, 22, 2018 17:58 (UTC)
(Link)
А это какой Вагнер?
[User Picture Icon]
From:belezbar
Date:Февраль, 22, 2018 19:32 (UTC)
(Link)
Знатно вы тут посрАлись, как сейчас дела у Rust? С днём рождения!
[User Picture Icon]
From:swizard
Date:Февраль, 22, 2018 23:18 (UTC)
(Link)
Спасибо!

Rust всё так же лучше С++, ничего в этом плане не поменялось =)
From:(Anonymous)
Date:Март, 14, 2018 17:28 (UTC)

Grown up purlieus

(Link)
Daily updated sissy blog
interracial comics tube good work out videos word in dictionary
http://sissies.purplesphere.in/?page.amber
marijuana books hypnotjerapy for success suitcase male to female breast growth chastity feminization stories old men photos brapanty shop super cheese seeds
[User Picture Icon]
From:gevor
Date:Май, 11, 2018 13:47 (UTC)
(Link)
Хмхм. Кажется, мне не нужно ничего из того, что ты перечислил: большую часть я не знаю, а навязывание мне какого-то стиля написания чего-то меня не радует вообще.
[User Picture Icon]
From:gevor
Date:Май, 11, 2018 13:53 (UTC)
(Link)
Вообще, задумался, что мне нужно от языка и почему я выбираю пока C/C++:
- memmove, сразу да, быстрее всего, если нужно скопировать что-то, что ты знаешь
- укладка структур в памяти так, как хочется
- возможность быстро работать с сетью


Что нужно и чего не хватает:
- возможность абы как по скорости работы, но быстро по скорости написания писать некритичные скучные вещи типа чтения конфигов, записи логов и т.п.
[User Picture Icon]
From:gevor
Date:Май, 11, 2018 14:09 (UTC)
(Link)
А, ну и очень удобная штука - указатели.

Вот есть у тебя какой-то массив, есть разные функции, его заполняющие.

Можно передать указатель на ровно нужный элемент массива, с которого функция его заполняет.
[User Picture Icon]
From:swizard
Date:Май, 11, 2018 15:15 (UTC)
(Link)
> Вообще, задумался, что мне нужно от языка и почему я выбираю пока C/C++

Но ведь всё, что ты перечислил, есть в Rust, и всего, чего тебе не хватает, тоже есть в Rust :)

Попробуй, всё же, поплотнее ознакомиться с этим языком. Если тебе нравится С++, то его надо менять на Rust однозначно, здесь никаких других мнений быть не может =)
[User Picture Icon]
From:gevor
Date:Май, 11, 2018 15:19 (UTC)
(Link)
Ну как - относительно. Например, мне люто, бешено не хватает возможности попросить сделать статические проверки на то, влезает структура в линию кэша выбранной архитектуры или нет.
(Оставить комментарий)
Top of Page Разработано LiveJournal.com