LINUX.ORG.RU

Продемонстрирована возможность разработки частей Linux на Rust

 , ,


4

9

Французский программист написал статью, в которой рассмотрел возможность переписывания ядра Linux на Rust.

В статье отмечено, что данный язык хорошо подходит для системного программирования, будучи достаточно низкоуровневым и при этом лишённым многих недостатков C, и уже используется для написания новых ОС. Однако автор не считает создание ОС с нуля перспективным для серьёзного применения, и последовательный перенос отдельных частей Linux на Rust для решения различных проблем безопасности кажется ему более целесообразным.

В качестве «Proof of Concept» была приведена реализация системного вызова, содержащая вставки на Assembler внутри unsafe-блоков. Код компилируется в объектный файл, не связанный с библиотеками и интегрируемый в ядро во время сборки. Работа производилась на основе исходного кода Linux 4.8.17.

>>> Статья



Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 5)

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

У тебя ещё и память как у рыбки...

Последний ответ на сегодня. Уже почти ночь. Вам повезло.

Моя мысль заключается в элементарной идее. Поскольку любой язык хотя бы теоретически ведет свои корни к С, а тот соответственно к ассемблеру { вы же понимаете, что i++; это чистый ассемблер или точнее команда процессора}, то на С можно написать тоже самое что и написано на других языках. Точно так же безопасно только дольше и муторней. Обратное в общем случае неверно.

Это не значит, что ВСЕ ВСЕ нужно писать на С.

Но говорить, что ВСЕ ВСЕ нужно писать на Rust это такая же глупость.

Адепты Haskell, C++, С# и проч. и проч. с Вами не согласятся!

Факт состоит в том, что Rust не дает ничего нового с точки зрения языка как это делает Haskell или Lisp. Он совершенно ничего не упрощает.

Он элементарно делает текст программы более громоздким и тяжелым для чтения.

Один умный человек сказал одну очень умную мысль:

«Все до единой программы пишутся для того, чтобы их читал человек!!!»

Если человека будет тошнить от чтения таких программ, но и писать на таком языке он не будет. Разумеется всегда найдется несколько идиотов, которые будут сходить с ума от языка brainfuck.

Но это всегда будет ограниченное кол-во людей и ограниченное кол-во времени.

Мы все знаем что случилось с языком Perl. Он фактически сдох. Еще осталось полтора землекопа, которые его пользуют выражаясь языком Усманова, но они тоже скоро вымрут. Почему?

Потому что читать текст на языке Perl без дозы невозможно.

Тот же язык Python. Очень паршивенький язычек, надо сказать, но народ нравится как он выглядит и он уверенно победил Perl.

Тот же PHP - *:??%;;: еще та. Но на нем программируют массы!

Язык может иметь огрехи во внутренней структуре. Язык может быть идиотически спроектирован. Но он обязан быть секси!

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

В этом смысле убогий VB это правильно сделанный продукт. Тоже самое это С# - это страшный язык, с точки зрения тех программ, которые на нем пишут, но это правильный коммерческий продукт.

В этом смысле С это и правильный продукт и правильный язык. Если знать и понимать для чего он предназначен.

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

Если Rust это язык идеальный для всего на свете, то он принципиально будет проигрывать в каждой отдельной номинации для каждого отдельного применения:

1. Мне надо писать близкое к real-time приложение или драйвер. Меня беспокоит производительность на каждый такт я возьми С в купе с ассемблером если надо.

2. Меня интересует офисное приложение или что-то для сети. Сеть и пользователь в тысячи раз медленней процессора. Им плевать на чем это будет работать, а мне не плевать как долго я будут это писать, потому как бюджет один и тот же. Я возьму С# или Java или наконец Go.

В какое место мне позвольте засунуть Rust, который такой хороший но такой медленный по сравнению с С и такой неуклюжий = медленный в разработке по сравнению с Gо???

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

Чао.

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

Попытка доказать, что rust ни разу не похож на C++ не является претензией?

Да уж... В сторону вашего любимого Rust-а уже не посмотреть, ни перднуть нельзя.

Ну и я не доказывал, что Rust не похож на C++, я пытался выяснить, почему люди считают Rust похожим на C++, т.к. сам я, будучи старым C++ником, похожести не замечаю: совсем другой подход к ООП (отсутствие привычного ООП), совсем другое обобщенное программирование, совсем другая модель компиляции, совсем другое метапрограммирование (как на уровне макросов, так и на уровне шаблонов), отсутствие родовых травм из-за совместимости с C, наличие алгебраических типов данных и паттерн-матчинга, совсем другой подход к обработке ошибок, наличие проверяемых компилятором времен жизни объектов и т.д. и т.п. Не говоря уже о синтаксисе, в котором общего только фигурные и угловые скобки (утрирую).

Если попытка узнать, почему не смотря на все эти различия Rust считают похожим на C++, является, по вашему мнению, претензией к Rust-у... Ну ой тогда. С такими друзьями Rust-у и врагов не пожелаешь.

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

Т.е. похожесть заключается в том, что C++ не имеет GC

Потому что с языками с GC сравнивать смысла нет, у них не будет и половина основных понятий. Языку с GC не нужно владение и заимствование, языку с GC не нужна move семантика, и ему совершенно не нужно знать про время жизни обьектов.

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

Хорошо, может быть ты знаешь другой язык без GC на который Rust похож больше?

Мой поинт в том, что среди языков без GC (с которыми мне в той или иной степени приходилось сталкиваться), Rust одинаково не похож ни на один из них. Это как если бы C, C++, Modula-2 и Ada лежали в плоскости XY, а Rust — в перпендикулярной ей плоскости XZ.

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

Ок, я понял вашу точку зрения. Но все равно считаю что php программисту выучить Rust будет сложнее чем C++ программисту.

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

Я понял вашу точку зрения. Но она, наверное, актуальна для тех, кто переходит с языков с GC на языки без GC.

Так как я больше работал с языками без GC, нежели с языками с GC, то те моменты, на которых вы акцентируете внимание, для меня ключевыми не являются. И акцент у меня на других вещах, вроде трейтов в Rust-е, вроде обработки ошибок на базе Result-а и паттерн-матчинга, на гигиенических макросах и пр.

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

Но все равно считаю что php программисту выучить Rust будет сложнее чем C++ программисту.

Да, в такой формулировке согласен.

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

И вы твердите мне о «ограниченности кругозора»? Посмотрите на любой другой современный ЯП. Они отличаются от C++ намного больше, чем rust.

Посмотрите на питон, ruby, js. Вот они действительно не похожи на c++. И я молчу про всякие академические лиспы и хаскелы.

Rust позиционируется как замена C/C++. И авторы прикладывают все усилия, чтобы сделать переход с этих языков на rust, как можно более гладким. Но видимо «старым C++никам» это не помогает.

в котором общего только фигурные и угловые скобки

Советую ещё раз посмотреть примеры кода на rust.

С такими друзьями Rust-у и врагов не пожелаешь

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

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

Факт состоит в том, что Rust не дает ничего нового с точки зрения языка как это делает Haskell или Lisp.

Но в тоже время нет другого языка, который был бы безопасным с zero cost abstractions, где можно контролировать владение и где наконец-то есть композиция вместо ООП (которое на самом деле не очень-то и ООП).

Он совершенно ничего не упрощает.

Он упрощает писать безопасный код, потратьте вечер почитайте. Не стоит страдать парадоксом Блаба.

Он элементарно делает текст программы более громоздким и тяжелым для чтения.

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

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

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

Ну охереть у Вас критерии. Однако, на stackoverflow более 70% программистов, согласно опросу считают его на много более правильным, чем GO

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

1. Мне надо писать близкое к real-time приложение или драйвер. Меня беспокоит производительность на каждый такт я возьми С в купе с ассемблером если надо.

no_std и тот же ассемблер, в чём проблема?

2. Меня интересует офисное приложение или что-то для сети. Сеть и пользователь в тысячи раз медленней процессора. Им плевать на чем это будет работать, а мне не плевать как долго я будут это писать, потому как бюджет один и тот же. Я возьму С# или Java или наконец Go.

А с mio в Rust это, возможно, будет быстрее и проще.

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

Ну охренеть вывод. Такое ощущение, что с Rust вы знакомы только по статье на вики

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

Попробую ответить на бредятину.

Поскольку любой язык хотя бы теоретически ведет свои корни к С

Yеверное утверждение, потому пофиг что из этого следует. Тем более что следующее утверждение

Точно так же безопасно только дольше и муторней.

Еще больше бред и вообще непонятно как это следует с предыдущего неверного утверждения.

Rust не дает ничего нового с точки зрения языка

Еще одно неверное утверждения.

Он совершенно ничего не упрощает.

Кому и кобыла - невеста. Субъективно.

Далее просто противоречие самому себе:

Но это всегда будет ограниченное кол-во людей и ограниченное кол-во времени.
Тот же PHP - *:??%;;: еще та. Но на нем программируют массы!

Потому что читать текст на языке Perl без дозы невозможно

О перле наверное только с статьи на лурке знакомы.

Единая здравая мысль: «раст не секси, потому плохой». Ок, мысль понял. Но вы же понимаете что это субъективно?

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

И вы твердите мне о «ограниченности кругозора»?

Да. Хотя это был такой политкорректный синоним «умственной ограниченности». Видимо, пришло время называть вещи своими именами.

Вот, скажем, вы обвиняли меня в претезниях к Rust-у. Где эти претензии? За свои слова вы отвечаете или, в силу скудоумия считаете, что можно говорить на форуме все, что угодно?

Rust позиционируется как замена C/C++.

Из этого не следует похожести.

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

И из этого не следует похожести.

Но видимо «старым C++никам» это не помогает.

Не помогает. Было бы удобнее, если бы Rust мимикрировал бы под C и C++ сильнее.

Советую ещё раз посмотреть примеры кода на rust.

Ну вот, например:

fn copy(src: &[u8], dest: &mut [u8]) { /* impls */ }

Стиль декларации функции на C/C++ не похож. Плюс & и &mut имеют особый смысл. Из привычного C/C++ного наследия однозначно воспринимаются только скобочки и многострочные комментарии.

Что-то еще? Может вам if, который в Rust-е является expression, а в C++ statement-ом, так же C-шный if напоминает?

eao197 ★★★★★
()
Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от lefsha

Не буквы надо менять и не язык, а грамотность развивать.

Грамотность уже 40 лет развивают, а CVE остаются.

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

что можно говорить на форуме все, что угодно?

Я не первый раз с вами сталкиваюсь, и знаю, что нет разницы осмысленными будут мои сообщения или нет. Вам всё равно не угодить. И вы всё равно будете упёрто топить за свою точку зрения, потому, что она ваша, а не потому, что она верная.

Rust позиционируется как замена C/C++.

Из этого не следует похожести.

Аргументация уровня ЛОР.

То есть си-подобный синтаксис используется не в попытках быть похожим на C/C++? Использование <> для дженериков, подобные ключевые слова(enum, struct, return), подобная семантика (ака let a = b;), точка с запятой в конце выражение (вы не поверите, но у многих от этого горит), пробелы не являются частью кода (горит у питонистов) - это всё не подпадает под «похожесть»?

Было бы удобнее, если бы Rust мимикрировал бы под C и C++ сильнее.

Лично вам? Грань, между похожестью и переносом проблем плюсов в новый язык, очень размыта. Rust, как-никак, современный язык. Нести крест сишки ему смысла нет.

Стиль декларации функции на C/C++ не похож.

Воу-воу-воу. Полегче. То есть в теме, где мы спорили о многословности плюсов, вы топили за то, что внешний вид не важен, так как действий то одинаковое количество. А значит и код на С++ не многословнее кода на rust. А теперь оказывается, что злые дяди переставили слова местами и «старые С++ники» сразу впали в ступор.

Плюс & и &mut имеют особый смысл.

Какую доп. нагрузку несёт & в rust, которой нет в C++? Имутабельность по умолчанию и mut в противовес const. Это настолько большая разница?

Ну и мы говорим о похожести. И данный код больше похож на C/C++ чем код на тех же питонах, лиспах и хаскелях. О чём и речь.

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

Мне просто интересно, понятно ли тебе с первого взгляда, какие аргументы приходят в функцию copy? Испытаешь ли какие то проблемы с вызовом этой функции? Совершишь ли ошибку передав неправильно параметры?

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

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

int8_t это однозначно signed char, а char это всегда 8 байт! Так что сэр, Вы гоните!

Большие же у тебя char'ы. Компенсация, видимо.

По стандарту c99 и по стандарту c11 char — это один байт. Байт *минимум* 8 бит. И для него в стандарте указан минимально необходимый диапазон значений (-256..255). При этом char вполне бывает 32 бита на dsp.

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

«И тут Остапа понесло» №2.

Поскольку любой язык хотя бы теоретически ведет свои корни к С

ЯП — это средства описания алгоритма в рамках абстрактной машины.

вы же понимаете, что i++; это чистый ассемблер или точнее команда процессора

Это «операция». Абстрактный вычислитель оперирует не командами ассемблера, а операциями над состоянием.

Точно так же безопасно только дольше и муторней.

Давай спросим у lefsha.

lefsha

Доказано многократно, что чем больше сущностей, тем больше шансов совершить ошибку.

lefsha говорит, что С способствует написание ошибочного кода. Браво!

Это не значит, что ВСЕ ВСЕ нужно писать на С.

Конечно не значит, но ты говоришь именно это, заявляя что С лучше всех.

Факт состоит в том, что Rust не дает ничего нового с точки зрения языка как это делает Haskell или Lisp. Он совершенно ничего не упрощает.

В Rust алгебраические типы как в Haskell. Сопоставление по шаблону, как в Haskell. Трейты как типы классов в Haskell. Согласен, ничего нового. Пойми, Rust это как Haskell, но для уровня С.

«Все до единой программы пишутся для того, чтобы их читал человек!!!»

Вот это очень мудрые слова, прямо про Rust.

Но это всегда будет ограниченное кол-во людей и ограниченное кол-во времени.

...

В этом смысле С это и правильный продукт и правильный язык. Если знать и понимать для чего он предназначен.

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

Если Rust это язык идеальный для всего на свете

Я не знаю, кто вам это сказал, но точно не создатели этого языка. У них чётко расписано, от каких проблем Rust избавлен, которые в свою очередь актуальны в С/С++.

1. Мне надо писать близкое к real-time приложение или драйвер. Меня беспокоит производительность на каждый такт я возьми С в купе с ассемблером если надо.

2. Меня интересует офисное приложение или что-то для сети. Сеть и пользователь в тысячи раз медленней процессора. Им плевать на чем это будет работать, а мне не плевать как долго я будут это писать, потому как бюджет один и тот же. Я возьму С# или Java или наконец Go.

Я рад за тебя. Но зачем ты сидишь в теме о Rust, если ты даже не собираешь его использовать? Из всех вопросов, на которые ты так и не ответил по существу, этот самый интересный.

В какое место мне позвольте засунуть Rust, который такой хороший но такой медленный по сравнению с С и такой неуклюжий = медленный в разработке по сравнению с Gо???

Ну хватит разводить демагогию, использовать заезженные клише.

Rust programs versus C gcc

Ты писал на Rust? Ты его даже в глаза не видел. Как ты можешь судить о скорости разработки на нём?

Мы ведь все понимаем, что я прав. А на правду не обижаются.

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

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

Аргументация уровня ЛОР.

Вообще-то это простая логика. Из того, что Rust позиционируется как замена C/C++ не следует, что Rust похож на C/C++.

То есть си-подобный синтаксис используется не в попытках быть похожим на C/C++?

После C/C++ появилось большое количество языков, которые используют те же самые соглашения. Например, Java, JavaScript, C#. Точка с запятой, как разделитель, в том же Ruby активно используется, хотя Ruby как раз синтаксис больше похожий на Pascal использует.

Ну и да, не вы ли говорили: «Я не любитель сравнивать языки по синтаксису, и вам не советую.»

подобные ключевые слова(enum

А вот про enum — это вообще смешно. В C/C++ и в Rust-е под enum-ом сильно разные вещи подразумеваются.

Лично вам?

Мне и не только мне. Жалобы на синтаксис Rust-а, излишне похожий на функциональные языки, — это распространенное явление.

Нести крест сишки ему смысла нет.

Вы бы определились, похожесть таки есть или нет. Потому, что если есть, то крест таки нести придется.

А значит и код на С++ не многословнее кода на rust. А теперь оказывается, что злые дяди переставили слова местами и «старые С++ники» сразу впали в ступор.

Вновь демагогия.

Какую доп. нагрузку несёт & в rust, которой нет в C++? Имутабельность по умолчанию и mut в противовес const. Это настолько большая разница?

А что, в Rust & перестал быть связан с borrow checker-ом? Вот в C++ если есть:

void f(const std::string & s) {...}
...
std::string s{...};
f(s);
s = "new value"; (1)
То я не знаю, повлияет ли замена значения s на что-нибудь другое. Вдруг f сохранит ссылку на s где-то или передаст в другую нить. И код в (1) может привести к сегфолту.

По своей наивности я надеялся, что Rust не позволит мне так ноги отстреливать. А тут RarzFalcon намекает, что никакой разницы между & в C++ и Rust-е нет. Такое ощущение, что кто-то из нас дурак.

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

Поскольку я поверхностно знаком с Rust-ом, то сигнатуру этой функции распарсить смогу. Но пару лет назад, когда документацию по Rust-у не изучал, код на Rust-е мне больше напоминал код на OCaml-е (с поправкой на то, что в Rust-е приходится фигурные скобочки расставлять). Так что, по моему совсем скромному опыту, опыт C++ за плечами без предварительного штудирования Rust Book не позволяет просто так читать Rust-овский код.

eao197 ★★★★★
()
Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от eao197

По своей наивности я надеялся, что Rust не позволит мне так ноги отстреливать.

Что интересно, этот пример скомпилируется успешно, потому что функция f не сможет никуда сохранить &s и тем самым безопасность не нарушится.

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

О том и речь, что простая декларация в Rust-е имеет более серьезную семантику, чем в C++. Если человек с привычками из C++ попробует в f передать s куда-то еще, то он получит по рукам, что хорошо. Но это очень серьезное различие между C++ и Rust-ом, серьезно уменьшающее похожесть.

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

Такое ощущение, что кто-то из нас дурак.

Не будем показывать пальцем.

А тут RarzFalcon намекает, что никакой разницы между & в C++ и Rust-е нет.

Лихо вы. Мы вроде про синтаксис, а вас уже куда-то понесло.

Вообще-то это простая логика.

Для многих логично, что пирамиды построили инопланетяне.

Из того, что Rust позиционируется как замена C/C++ не следует, что Rust похож на C/C++.

Вы не поверите, именно это и следует. Заходим в faq и видим, что C++ встречается 36 раз! Но а так да, C++ вообще не при чём.

А вот про enum — это вообще смешно. В C/C++ и в Rust-е под enum-ом сильно разные вещи подразумеваются.

Напоминаю, что речь о синтаксисе. enum называется enum, а не super_rust_enum_not_like_in_cpp не просто так.

это распространенное явление

Статистику в студию.

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

Мы вроде про синтаксис, а вас уже куда-то понесло.

Читать научитесь:

сам я, будучи старым C++ником, похожести не замечаю: совсем другой подход к ООП (отсутствие привычного ООП), совсем другое обобщенное программирование, совсем другая модель компиляции, совсем другое метапрограммирование (как на уровне макросов, так и на уровне шаблонов), отсутствие родовых травм из-за совместимости с C, наличие алгебраических типов данных и паттерн-матчинга, совсем другой подход к обработке ошибок, наличие проверяемых компилятором времен жизни объектов и т.д. и т.п. Не говоря уже о синтаксисе, в котором общего только фигурные и угловые скобки (утрирую).

Может быть поймете, что речь не только и не столько про синтаксис.

Статистику в студию.

Ну пройдитесь по данной теме, как минимум еще одно упоминание найдете. Вы еще статистикой пакетов для Rust-а аргумент о неудобстве синтаксиса пытались опровергнуть.

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

Может быть поймете, что речь не только и не столько про синтаксис.
Стиль декларации функции на C/C++ не похож. Плюс & и &mut имеют особый смысл. Из привычного C/C++ного наследия однозначно воспринимаются только скобочки и многострочные комментарии.

Вы уж определитесь.

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

Вы еще статистикой пакетов для Rust-а аргумент о неудобстве синтаксиса пытались опровергнуть.

Ну так а чё, на расте же никто не пишет из-за ужасного синтаксиса. 10к пакетов написали сами авторы.

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

расту тоже нужен некоторый, более сложный, чем минимальная библиотека си, рантайм.

И что же нужно добавить в растовый рантайм?

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

Ты не любишь красоту...
напишите библиотечку шаблонов на плюсах, что делает то же самое, что и rust

Вот уж где красота невиданная.

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

10к пакетов написали сами авторы.

Может это хаскелисты и мльщики повылазили из щелей и понаписали пакетов. Не известно были ли среди авторов плюсовики. :)

pftBest ★★★★
()
Последнее исправление: pftBest (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Вы уж определитесь.

Ну давайте покажу на пальцах. Имеем тезис:

Может быть поймете, что речь не только и не столько про синтаксис.

И фразу, которая, по вашему мнению, этому тезису не удовлетворяет:

Стиль декларации функции на C/C++ не похож. Плюс & и &mut имеют особый смысл.

Разбираем ее по частям: «Стиль декларации функции на C/C++ не похож.» — это про синтаксис. А это: «Плюс & и &mut имеют особый смысл.» — уже про семантику. Получаем, что речь идет и про синтаксис, и про семантику. Что уже удовлетворяет тезису. ЧТД. А с учетом того, из какого узкого контекста вы вырвали эту фразу, то и частью «не только и не столько про синтаксис» тоже все оказывается в порядке.

У вас как с профильным образованием? Есть или нет? Про булеву алгебру в курсе хотя бы?

Ну так а чё, на расте же никто не пишет из-за ужасного синтаксиса. 10к пакетов написали сами авторы.

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

Во-вторых, наличие 10K пакетов показывает только количество людей, для которых синтаксис Rust-а не является серьезной проблемой. Но никак не может показать количество людей, для которых синтаксис Rust-а проблемой является. Но вряд ли вы уловите разницу.

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

в расте массивы с контролируемыми границами только когда требуется или всегда?

Можно «отключить» (на уровне каждого отдельного вызова), если требуется.

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

Как минимум один был - я. 6 моих пакетов там валяется.

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

В C? Да. В что будет причиной remote code execution в rust покажет время.

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

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от lefsha

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

Напиши мне обобщенный hashmap через мономорфизацию, с поддержкой итераторов по парам ключ-значение, RAII и возможностью встраивания своей хэш-функции, избежав потерь на разыменовании указателей на функции.

mersinvald ★★★★★
()
Последнее исправление: mersinvald (всего исправлений: 1)
Ответ на: комментарий от glebiao

тупой код (постарался сохранить почти буквальное соответствие с твоим, с очевидной глупостью в d-шном аналоге)

Кстати код получился все равно не эквивалентным, твой успешно парсит текст в котором есть только одна строка, и в v2 кладет 0. А в моем примере это возвращает ошибку.

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

Приведи свой пример, который покажет D с хорошей стороны.

Например к коду из этой статьи (http://dlang.org/blog/2017/05/24/faster-command-line-tools-in-d/) можно написать не намного больший по количеству кода аналог на Rust, который будет работать почти в два раза быстрее. (собирал ldc с флагами `-release -O`)

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

К концу 2017 обещают выкатить нелексические лайфтаймы, там работают над уменьшением количества закорючек.

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

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

mersinvald ★★★★★
()
Последнее исправление: mersinvald (всего исправлений: 1)
Ответ на: комментарий от lefsha

В идеале библиотеки для какого-то языка должны оставаться в исходном коде

Привет, в Rust это так. Библиотеки подтягиваются в виде исходного кода, компилируются и линкуются статически.

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