LINUX.ORG.RU
Ответ на: комментарий от ox55ff

Попёрдывания старого сишника из-за того, что раст не си. Только сишник может ставить языку в минус наличие стандартной библиотеки. «У дедов не было и тебе не надо. Ряяя»

Если язык позиционируется для системного программирования, а, напомним, некоторые предлагали добавить его поддержку в ядро, то он должен поддерживать концепцию zero runtime, то есть конструкции самого языка должны компилироваться непосредственно в машинный код, а не являться вызовами какой-то библиотеки. Любая библиотека должна подключаться одинаково и быть заменяемой на другую библиотеку, поскольку где ты в ядре возьмёшь библиотеки?

Вот в C это условие соблюдается, любые функции ввода-вывода требуют #include <stdio.h> например, но вместо этого можно подключить что-нибудь другое. Например в ядре ввод-ввывод работает совершенно не так как в юзерспейсе, соотвестветственно никаких printf там нет, если разработчики самого же ядра не назовут свою функцию так же. А если назовут, то они могут в ней что угодно делать так же как в любой другой функции.

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

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

А в С словов const, и чо?

Но насколько оно лаконичнее там смотрится и применяется.

deep-purple ★★★★★
()
Ответ на: комментарий от Shadow

Это разве его заслуга? Да и скорее, это окно тащит жс, дав ему из песочницы референс на себя.

deep-purple ★★★★★
()
Ответ на: комментарий от Xenius

В Rust есть режим #[nostd], в котором макрос println!, как и многие другие вещи, использующие стандартную библиотеку, недоступны.

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

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

В Rust 3 «стандартных библиотеки» - core, alloc и std. При том core ⊂ alloc ⊂ std. Компилятор «прибит» только к core, что не является проблемой.

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

Ну, не 3. 3 слоя. Из которых только самый нижний - обязательный.

anonymous-angler ★☆
()
Ответ на: комментарий от Xenius

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

вообще нюансы есть, например, операции с типами с плавающей точкой

если целевая платформа поддерживает их, то всё замечательно, если нет, то используется программная эмуляция, и при конпеляции условного float l = 2 * 3.14 * R конпелятор подставляет вызовы встроенных функций умножения

и без рантайма писать такие выражения уже не получится, оперировать флоатами всё равно можно, но только через явные вызовы самостоятельно написанных функций умножения, без красивого синтаксиса

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

ну и чтоб с переключением контекста меньше возни было, это тоже

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

Вот настоящий Ъ! Не то что некоторые anc-ки. :( Каюсь обещаю больше так не делать.

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

Раст вышел из ML-семейства и к ним всё ещё имеет гораздо больше общего, чем к плюсам.

Что? Раст вышел из мозиллы, которой надоели грабли C++. move-семантика, raii, счётчики ссылок, шаблоны, компайл-тайм полиморфизм, ranges, use exceptions only as panic - всё по гайдлайнам «modern c++», только сделано по уму с нормальным синтаксисом, без обратной совместимости. Из нового только lifetimes придумали и модули с пакетным менеджером.

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

Ъ: Rust плохой, потому что он не Си.

Почему даже Go — язык с GC — часто опережает Rust по скорости?

Зачем уточнять детали задач, если можно просто бросаться громкими фразами? JS часто опережает Си по скорости, Си ненужен.

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

Там ещё полно таких необоснованных утверждений и воды.

Автор вообще писал что-то на расте? Для сколько-то знающих читателей статья ублюдская.

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

Для сколько-то знающих читателей статья ублюдская.

Ублюдской статья может стать если будет содержать какую-то конкретику, а у афтара всё больше сферические рассуждения о жизни в других галактиках.

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

поскольку где ты в ядре возьмёшь библиотеки?

Из SDK компилятора, который будет компилировать код.

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

Вообще благодаря мудрости автора мы установили что С++ - это язык с асинхронной сборкой мусора.

Ведь Arc это std::shared_ptr.

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

Ты опоздал. Растишку уже притащили в ядро. Как ты справились. Наверное не читали хейтеров с их НИВАЗМОЖНА.

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

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

Reset ★★★★★
() автор топика

Когда они осилят <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">?

IIIypuk ★★★★
()

Сообщество Rust — это мир фанатиков. Ровно как самые счастливые люди на Земле — религиозные фанатики, самые счастливые программисты — фанатики своего языка. При обсуждении Rust они будут без конца описывать, какой этот язык гениальный, и как в нём решены все проблемы; они будут говорить, что он идеален как для низкого, так и для высокого уровня; они будут утверждать, что их программы самые безопасные и правильные на свете

Воистину

XMs ★★★★★
()

Прекрасное описание руста-педеруста. Душевно.

Hertz ★★★★★
()

Скажу честно, единственная причина по которой я считаю что раст имеет право на существование - то что в нём юникод (на самом деле не весь, но можно считать что весь) из коробки идёт. А ни C, ни C++ этого так и не осилили без очень уродливых и громоздких сторонних библиотек, вроде ICU. Всё остальное - чистая вкусовщина, учитывая то что от ошибок надо писать тесты, продумывать алгоритмы и пользоваться всякими анализаторами, вроде Cppcheck-а хотя-бы.

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

Это пока тебе не пришлось программу с ней под Linux портировать...

А вообще можно сразу на линуксе ей обмазываться.

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

Можно подумать, что юникод это какой-то рокет-сайнс. На коленке поддержка с нуля делается за час максимум. Если лень самому писать, то можно glib подключить.

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

Зачем тут все эти fn, let mut и т.п.?

А ты не замечал, что в более новых языках это практически повсеместно? Swift: func, let, var. Scala: def, val, var. Go: func. Nim: proc, var, let. Правда не припоминаю чего-то похожего на комбинацию let mut, хотя мне такое решение определённо нравится больше, чем val/var, которые визуально не слишком различаются.

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

На коленке поддержка с нуля делается за час максимум.

вот прям с нуля, вот прям за час? Со всеми нормализациями, сортировкой по алфавиту, выделением заглавных и строчных букв, классификацией символов (число, буква, знак препинания, диакритические знаки)

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

В том что println! реализуем средствами языка

нет.

Да. println! уже макрос и ничто не мешает сделать такой же (процедурный) макрос.

В Rust вроде нет поддержки consteval функций из C++.

const-функции из раста ведут себя как consteval функции из С++, то есть они не могу, а обязаны выполняться на этапе компиляции. Другое дело, что у них пока много ограничений, но над этим работают - недавно завезли поддержку паники.

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

а обязаны выполняться на этапе компиляции.

Нет, уже выяснили.

Вот почитай: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=65ef18d02c84b78289c81d42b711748f

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

Нет, уже выяснили.

Да, был не прав, признаю.

Но тем не менее, написать println! средствами языка в расте возможно.

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

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

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

Кто понимает, там содержимое более адекватно?

Эта статья о другом: там о том как не надо учить раст, а не почему язык плох.

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

Это вообще элементарно решается. Вместо char* сделай int* и сделай конвертеры в обе стороны для совместимости.

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

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

rust я не знаю, статья по горизонтали просмотрел, одно только, что он предполагает, что 1..11 может быть частью синтаксиса for уже создаёт о нём не лучше впечатление.

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

Юникод это таблица на ~150000 символов. Очевидно, каждый символ без проблем влезает в int. Есть разные способы кодирования юникода. utf-8 имеет переменную длину в байтах.

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

Открываешь описание стандарта и делаешь. Это не проблема вообще, чисто техническая задача, стажера можно посадить на реализацию :)

Reset ★★★★★
() автор топика

А что общественность думает о языке V? Внешне выглядит как раст.

Reset ★★★★★
() автор топика

Неск лет назад был проект на расте. Впечатление - овчинка выделки не стоит.

Для Си за 50 лет наделали дохрена инструментов для анализа кода и отладки. При этом Си выглядит нормальным языком, а всякие тулзы-костыли лежат сбоку и поднимаются по мере надобности в процессе отладки.

В расте же все костыли интегрированы в язык и выглядит это всё немного печально.

А результат получится примерно одинаковый.

Но автор статьи маздайность раста безусловно не раскрыл. :)

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