LINUX.ORG.RU

Rust и что оно такое?!

 , ,


0

5

Полез смотреть Rust - пропал.
Сильный ЯП.
Я правильно понимаю? Чтобы нормально писать надо:

  • в плюсы
  • в LISP
  • в Haskell
  • в OOP
  • в желание читать и смотреть хотя-бы это

У кого какой опыт перехода? На что стоит больше обратить внимание и уделить время?

Зоцепила @zurg - поклон (Стараться не тащить и имитировать привычки из других языков)



Последнее исправление: Eulenspiegel (всего исправлений: 2)
Ответ на: комментарий от alysnix

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

Ты понимаешь, что только что описал C++?

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

Для C++ вообще нет нормально работающих IDE если хоть что-то с шаблонами есть в проекте.

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

Для раста тоже кстати все проблемы из-за макросов

Что значит «тоже»? Ты очередная жертва нейронки, которой сообщили что шаблоны это макросы? Проспись. Макросы не могут работать в принципе потому что это не макросы. Это просто самая тупая в мире текстовая подстановка. В тысячи раз хуже любого сишного макросы. А те макросы что обычные макросы это вообще позор аналогично спащенный из сишных макропроцессоров 80 годов. При том если в сишке додумались от них отказаться, но инновации сами себя не придумают.

без них все отлично работает.

Это полнейшее враньё. Тот же ra в принципе не умеет язык. Это тупой парсер с прикрученным поверх набором минорных костылей. Несмотря на то что раст сам по себе максимально убогой - они не смогли его реализовать. И поэтому там ничего не работает.

В последний раз когда я смотрел в ra ничего не работало вообще. У жб работало хоть что-то, но на самом деле ничего. Никаких ошибок и прочего он не генерировал.

И сейчас ничего не изменилось и не изменится. Причина проста - компилятор раста это мусор. Это не компилятор. Если максимально просто объяснить - это пару мусорных стадий. Сначала колхозные преобразования с рассахариванием, а потом перегонка в жсон. Поверх которого запускается примитивная лапша на ифах, которую они называют тайпчекром. Хотя там нет ни типов ни чекера. Потом этот жсон нелепо обходится и через сишный/крестовый код создаётся представление функция/глобальных объектов/прочего.

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

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

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

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

ну первое по желанию на самом деле, достаточно просто везде орать

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

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

И сделаешь ты ее через жопу, кстати, но она будет работать.. Да, я так и делал. Лютейшая дичь получилась, но работала пару лет. А за эти пару лет я понял, что делал не так, как нужно и начал делать правильно, поняв это на практике.

Не уверен, что понял бы все это, изучая теорию.

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

в плюсы

Ну конечно если знаешь плюсы, в rust вкатываться проще потому что rust это c++ done right. Но необходимости изучить плюсы чтобы изучить rust конечно же никакой нет.

в LISP
в Haskell

Для изучения rust вообще не нужно.

в OOP

Понятие ООП сильно размыто, поэтому конкретизируй. Говорят что в rust нет ООП, но в rust есть ООП, в нём нет плюсового ООП. Поэтому плюсовый ООП с наследованием, ромбиками и прочим дерьмом не нужен, базовое понимание зачем связывать данные и код, RAII, static/dynamic dispatch не помешает, но мне кажется это не обязательно. Уже будешь писать код, и потом внезапно обнаружишь что это, оказывается, ООП.

в желание читать и смотреть хотя-бы это

Желание читать нужно обязательно, всегда и везде. Тратить время на некомпетентное (в массе) балабольство с ютуба - по желанию.

У кого какой опыт перехода? На что стоит больше обратить внимание и уделить время?

С плюсовым бэкграундом мне было достаточно прочитать растбук и начать писать код, потом ещё раз прочитать растбук и продолжить писать код. Внимание нужно уделить чтению документации и писанию кода, as easy as that. Я думаю что при наличии опыта в программировании это универсальный подход. При отсутствии опыта - сначала азы computer science и программирование на тупом языке типа C.

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

я люблю макросы

Чувак, это не те макросы, что в лиспе. Если кратко, то это дерьмо собачье, и лучше бы вообще их не было. Единственная причина их сушествования в расте это неполноценность языка, который по выразительности дно уровня крестов. Без макросов была бы совсем тоска, но они применяются не для построения DSL, а для залатывания вопиющих лакун в самом язычке.

anonymous
()

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

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

Уже нет, теперь же есть раст. Плюсы на списание, трата сил и времени на осиливание никогда уже себя не окупит.

Если такой код требует какого-то осиливания, то ты вообще профнепригоден:


#include <iostream>

int main() {

  auto lst = {1, 4, 6, 7, 8, 9};
  for (auto x : lst) {
    std::cout << "number " << x << "\n";
  }

  return 0;
}

Ну или:

#include <iostream>

int main() {

  std::string all;
  for (auto x : {"hello", "world", "ska", "don"}) {
    all += x;
    std::cout << "number " << x << "\n";
  }
  std::cout << "all = '" << all << "'\n";

  return 0;
}

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

lesopilorama
()
Последнее исправление: lesopilorama (всего исправлений: 2)
Ответ на: комментарий от seiken

с доказательствами и проч. формализмом.

Доказательства нужны только если «и так не понятно». Бывают люди, кому лямбда-опердени довольно просты и очевидны, хотя доказать они их не могут. Это тоже годно, потому что работодателю надо не доказывать, а ехать.

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

Впрочем, может и не люди вовсе а рептилии?

с языка снял. я тоже думал, что сначала раст делали рептилоиды, а потом ксеноморфы. и на следующем этапе они объединятся. вот тогда и возникнет раст++, как сумма технологий.

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

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

Так она раньше за C++ голосовала, а он оказался говном. Так что нет веры военщине США, очередное говно вполне могла притащить. А раз на этом основании Раст - говно, то значит C++ лучше.

lesopilorama
()

Я правильно понимаю? Чтобы нормально писать надо:

Взять интересную вам задачу и попробовать реализовать её на Rust. Это практичный способ освоить язык на реальных примерах.

в желание читать и смотреть хотя-бы это

Как минимум, понимать документацию на https://docs.rs

На что стоит больше обратить внимание и уделить время?

Для начала хотя бы на систему владения и заимствования, это ключевая особенность Rust.

Просто изучать Rust (как и любой другой язык) ни к чему. Нужно начать что-то делать.

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

Haskell

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

Никакой это не матан, а уродство. Программерский матан - это лямбда исчисление, просто типизированное лямбда исчисление, System F и т.д. по лямбда кубу, и соответствие карри ховарда. Это база.

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

возникнет раст++

Вот только этого нам не хватало!

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

Страшно представить что будет с людьми после объедения плюсов со ржавчиной. В дурку после раст++ отвозить что ли?

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

Уважаемый alysnix, а ты так и не разобрался в том, как работает семантика перемещения в C++, хотя пишешь на C++ уже много лет? Почему вот у тебя тормозит код на C++, когда ты пытаешься использовать перемещение?

Просто, на расте не нужно об этом думать, чтобы получить быстрый и эффективный код (в отличие от C++). Многие растоманы даже и не подозревают, как там это все работает под капотом. Разве одного этого не достаточно для того, чтобы раст существовал?

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

какую проблему решает rust, которую до него не решили ada/spark?

А вот представляешь себе, никакую. Скорость уже решена в C, мемори сейфти в аде, наличие библиотек - в питоне. Только вот какое дело: все вместе они не решены нигде. На древнем и дырявом C никто в здравом уме не пишет, ада вообще никому нихрен не нужна без коммьюнити и библиотек, а питон языкам программирования проигрывает по скорости в 30-70 раз. И только rust на данный момент умеет всё вместе - быть современным, фичастым языком на котором приятно и быстро писать, с офигительным тулингом, компилироваться в эффективный код, быть безопасным, иметь огромное коммьюнити и нативные библиотеки на все случаи жизни.

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

Почему вот у тебя тормозит код на C++, когда ты пытаешься использовать перемещение?

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

Просто, на расте не нужно об этом думать, чтобы получить быстрый и эффективный код (в отличие от C++).

похоже в расте думать вообще не надо. про «семантику перемещения» в расте я не знаю и не могу разделить ваш оптимизм.

Разве одного этого не достаточно для того, чтобы раст существовал?

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

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

Язык как язык. Корявый и неудобный, но не самый плохой в своей нише.

C++ и прочие окамли знать не обязательно, чтобы растом пользоваться, но в целом полезно, чтобы лучше понимать контекст в котором он возник.

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

все вместе они не решены нигде.

Решены в цпп.

На древнем и дырявом C никто в здравом уме не пишет

Пишут и в этом проблема. Как раз таки твои братья шизы это продвигают. Им сложно даже конкурировать с сишкой времён 90 поэтому приходится сводиться её к виду из 70.

ада вообще никому нихрен не нужна без коммьюнити

А какое комьюнити есть у краста? Ну кроме бесполезных вкатунов/прочих клоунов? Ах да, как я мог забыть. Ему всего лишь 15лет. А когда сишка начала побеждать - ей на это понадобилось сколько лет? Ах да. Ноль. А цпп? Наверное ему потребовалось 15лет? А нет. Ноль. Ну бывает.

а питон языкам программирования проигрывает по скорости в 30-70 раз.

Это типичное враньё. Что делают раст-шизы? Они прибегают к питонистам/ещё кому-то и рассказывают как они в 30раз всех побеждают. Правда оказывается что их поделка ничего не умеет, но табуны хомячья орут «мы победили». Потом люди начинают немного разбираться и спрашивать - а почему ничего не работает? Но шиза уже распространилась и этой людей затыкают.

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

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

Это какие? Тормозное позорище? Да. Фичей нет? Да. Потому что сделать поверх си с классами компилятора, а там фичей не так чтобы и много. Поэтому фичей в расте ровно ноль за исключением какого-то минорного сахарка.

Никакого эффективного кода нет. Есть просто ворованный компилятор и днище-код. Такое же днище с ллвм и без раста побеждает во всяких иных реализациях питона. Правда почему-то ими никто не пользуется. Потому как «делать быстро мусор» и делать быстро «удобно/применимо» - это две большие разницы. Да и быстро там нет.

Туллинг это какой? Лефтпад-помойка? Безопасный это что? Текущее вечно падающие дерьмо? Они не смогли за тысячи лет даже ide запилить, как и даже огрызок ворованного компилятор. Он тормозит/терчёт/выдаёт мусор вместо ошибок.

нативные библиотеки на все случаи жизни.

Это какие? Перечисли.

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

Проблема в том, что «лучше» почти никому не нужно. Нужен минимальный уровень, на котором можно собрать аудиторию/продать. А если поделка ещё и модная, там этот минимальный уровень совсем околонулевой. Все рассказы про улучшения и решение проблем просто прикрытие, чтобы лишних вопросов не возникало. Как это контрить непонятно.

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

Не. Это для умных. Я до сих пор в sbt толстые jarы собирать не умею. Мавеном пользуюсь. А раст с окружением - он для тупых людей с интернетом:

"Здавствуйте. Что-то зачастили вы к нам. Что сегодня желаете. Новый хеловорд. Отлично! Прекрасный образчик! Ох-ох, что же вы здесь подключили? Эта же библиотека ХХХ, я не ошибаюсь!? Эта версия библиотеки давно устарела. Выбросьте её немедленно. Мистер Дэллиард клиент хочет использовать версию ХХХ версии 0.4.2. Конечно же я его предупрежу мистер Дэллиард. У нас уже есть данная библиотека версии 0.144.2. Давайте соберём с ней. Ну какой же вы забавный - зачем вам здесь эта переменная? Так уже сто лет никто не пишет. Конечно, конечно. Сделаем всё в лучшем виде. А вы под какую систему собирать будете? Под винду? Какой вы молодец! А под линукс не хотите? Хотите! Сейчас, сейчас. А вам в библиотечку упаковать? В 32-х,в 64-х? И туда, и туда!? Ах вы шалун. А в архивчик всё это, что бы потом носить было удобно? Сделаем, конечно! "

Главное место на диске и привыкнуть, что match с другой стороны.

areful
()

Rust это по сути то же самое что C++, только с причёсанным под современность синтаксисом, очень хорошо причесано-модернизированным STL, а также borrow checker-ом в придачу. Но с потерянной по пути формализацией (языка, модели памяти и ABI).

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

Это C++ что ли формализован? Ну, ты насмешил! Нет ни одного живущего человека, кто знал бы все темные закоулки языка, как и нет согласия среди разработчиков компиляторов. Разные компиляторы поддерживают основу, но различаются в деталях.

Чтобы вы меня правильно поняли. Я - за C++. При некоторых обстоятельствах С++ - это часто наилучший выбор. Но если бы мы жили в мире розовых пони и зеленых эльфов, а многие и многие программисты там и живут, то я бы однозначно выбрал rust, или бы вообще ушел на язык со сборкой мусора

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

польза от «лисп» это ассемблер у которых (в виде машкода) данные не отличимы от кода (при желании)

он всё-таки более высокоуровневый, этот «программируемый язык программирования», чем блаб.

вот в продолжение банкета: несколько примеров реализации ассемблера на схеме и ниже по тексту – я вспомнил таки ту ссылку на sassy, dreamOS, Loko, ikarus, Ribbit, frotzos; ещё можно добавить до кучи поделки by Ian Piumatra: Maru, COLA, Pepsi/Coke, idst, id-objmodel.

опять же, подобное и на ретрофорте каком-нибудь случается.

но вот например, wyvern-[0123] озвучил нормальную же идею, про более модульный. хотя кода у него толком нет, кода и того больше у sassy и прочего на racket/PLT scheme.

не считая опять же Loko и DreamOS, там в DreamScheme прям код всех кодов.

… насчёт высокоуровневости языка программирования: вот давай посмотрим на HLA и подумаем, язык высокого ли это уровня или всё же нет.

я вот думаю что всё же невысокого. потому что неважно что циклы, ветвления, исключения, шаблоны как в С++, объекты и гуёвая библиотечка на таких CTFE шаблонах макроснёй наколбашена.

HLA – язык всё равно низкоуровневый, всё равно – ассемблер. хотя и более высокоуровневый чем обычный асм, но уже по сравнению с MACRO под PDP-11 (предка MASM), ML1, gasp, или тех же например ассемблеров на лиспе с гигиеничными модульными макрами лиспа, ассемблера на форте с immediate compile словами, – не очень-то и высокоуровневый.

низкоуровневый всё равно потому что в выражениях элементарные базовые типы, прописанные вручную – а не first class objects, first class types.

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

в общем-то пример HLA показывает что уже на уровне паскалеподобного Algol-W, Euler, Euclid с макросней с нормальной рефлексией можно сделать что-то более менее приличное, только нужно её самому вручную продумывать, и пропихивать в стандартную библиотеку.

внезапно, ещё одни тропки не хоженные:

настоящие программисты не используют паскаль! они колбасят всё вручную на фортране и ассемблере, не то что эти новомодные quiche eaters

вот допустим, есть PL/M на фортране. на нём пишем конпелятор PL/1 и нормальный PL-овский препроцессор. на PL/1 – конпелятор фортрана или аналогичное F2C только в PL1, и ассемблер на PL1. и получаем ещё одно самодостаточное метациклическое «само на себе» – которому внешний тулчейн вообще не нужен.

затем берём CP/M каноничный, который ещё второй версии на PLM (более 3.1 новый под ассемблер переписали). и переписываем его в духе MPM под сетевое и многозадачное, примерно как PC-MOS386.

FreeGEM переписываем на PL1, и вот на тебе – многозадачный виндовс на PL1 «высокоуровневом» и макроуровне и PLM «низкоуровневом» (в котором всё равно есть массивы и вектора, ога).

может, это даже было бы более человекочитаемо чем сишка.

может, на таком PL1 можно даже лисп написать.

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

пользу знакомства с иными общеизвестными PL для уменьшения вело-костыле-строительства при использовании RUST

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

внешний и внутренний интерпретатор много где, так зачем его писать ad hoc каждый раз а не взять готовый в форте, например?

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

сначала книжки по алголу, и Algol-68C, Algol-68G (Genie)

потом курить лисп метациклический от маккарти на 37 страниц (который отвергнутый комитетом алгола, лол)

потом взять написать миниконпелятор такого лиспа на алголе

потом взять написать P2,P3,P4,P5, pint, pcom, standart pascal, Pascal-S, concurrent pascal параллельный на таком алголе

потом на паскале написать конпелятор алгола – взять диссер дейкстры и посмотреть, и просветлиться

потом взять рефал и написать парсер классических WG-грамматик, и конпелятор в лисп (например, GCC MELT вместо IR) на рефале

сделать свой конпелятор алгола

потом реализовать на таком алголе фортран

сделать на нём PLM. допилить 8086 PLM86 или PLM386 до PLM x86-64.

затем PLM, PL1, препроцессор PL1, ассемблер, и многозадачный CP/M сетевой с поддержкой графики

и умиляться в своей DreamOS TempleOS и полной самодостаточности

взять на паскале выше сделать Pascal-H и тех и weave/tangle

достать чернил и плакать

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

а когже PEG?

и эксплейн плайны Ульман-Аха-Гарсия-Стонебрекер-Бахман(навигирующий прог)

зы ну и apl(нотация мысля)-J-K-kdb-duckdb :)

ipython ибо щельная щель

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