LINUX.ORG.RU

Как вы изучали Rust после Perl

 , ,


0

3

Коллеги в продолжение похожей темы с C++ . Делал некоторые уже изменения https://github.com/totoshko88/RustConn/pull/365 но в основном с помощью Имитаторы Интелекта . Имеется большой опыт с Perl/Bash/etc

P.S Про это знаю https://oylenshpeegul.gitlab.io/from-perl-to-rust/introduction.html

★★★★★

0_0. Где пёрл, а где раст. Пёрл, вроде как, помер вообще и переходил я с него на питон, давным-давно, и с большим облегчением. На раст, обычно, переходят с сишки и плюсов, с ещё большим облегчением и даже, иногда, лёгкой эйфорией. Хотя да, у пёрла есть общее с сишками: птичья синтаксическая всратость(особенно плюсовый шаблониум), отрицательная технологичность, и довольно вонючий сектанский хакирный культ.

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

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

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

Причём тут какой Perl?

Я его учил четверть века назад и где он БЫЛ хорошо понимаю.

Но ещё раз. Для старта в Rust есть Rust Book. И его и надо читать.

Проблема в другом. Rust - мультипарадигменный язык программирования. А к таким ЯП желательно подходить после прохождения основ python, Си, haskell, с++/java/c# (типовому набору нормального ВУЗа).

AlexVR ★★★★★
()

После изучения rust приобрёл привычку опускать ;, если опускаю return

annulen ★★★★★
()

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

Perl неплохой язык для своих задач ( парсинг и тд и тп)

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

anonymous
()

Как вы изучали Rust после Perl

Никак. А что, это обязательная последовательность? Так и perl не изучал.

slackwarrior ★★★★★
()

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

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

А так, по языку Rust есть превосходная книга «Программирование на языке Rust» за авторством Джима Блэнди и Джейсона Орендорфа. Первое издание книги - это, вообще, одна из моих любимых книг по программированию в целом, а не только по языку Rust. Книга продается на Озоне.

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

Perl неплохой язык для своих задач ( парсинг и тд и тп)

Я забыл как страшный сон. А pcre.so доступно изо всех нормальных языков.

Shadow ★★★★★
()

Лучше бы они оставались на С. Ну как это читать теперь.. И три unsafe в одном методе, три!

fn copy_read<T: FromBytes>(view: Self::View<'_, T>) -> T {
        // Project `self` to `[u8]`.
        let ptr = Self::as_ptr(view);
        // SAFETY: This is a identity projection.
        let slice_view = unsafe {
            Self::project_view(
                view,
                core::ptr::slice_from_raw_parts_mut::<u8>(ptr.cast(), size_of::<T>()),
            )
        };

        let mut buf = MaybeUninit::<T>::uninit();
        // SAFETY:
        // - `buf.as_mut_ptr()` is valid for write for `size_of::<T>()` bytes.
        // - `buf` is local so `buf.as_mut_ptr()` cannot overlap with `slice_view`.
        unsafe { Self::copy_from_io(slice_view, buf.as_mut_ptr().cast()) };
        // SAFETY: `T: FromBytes` guarantee that all bit patterns are valid.
        unsafe { buf.assume_init() }
    }

https://github.com/torvalds/linux/blob/master/rust/kernel/io.rs

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

Ну что за махровое ламерство. Да, три, причём они явно выделены как в коде, так и комментариями, и о каждом из них явно задумались, а снаружи эта функция безопасна. В C у тебя тут было бы примерно 11 unsafe, никак не выделенных, о которых ни в чьей некомпетентной сишной башке даже мысли не возникло может ли там быть UB, потому что С == «и так сойдёт». Ну и конечно же в C никаких слайсов нет, и даже безопасную функцию можно было вызвать небезопасно взял начало одного слайса, а размер другого.

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

Какая разница после чего?

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

ugoday ★★★★★
()

Я бы советовал на Rust переходить с C. Причём после существенной практики на оном. Тогда хотя бы станет понятно, зачем его придумали и какие проблемы он решает.

Если человек пишет на Perl и не знает C, скорей всего у него мозг уже необратимо повреждён и что тут делать - не понятно. Только переучиваться с нуля. Но это очень сложно.

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

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

Я ща делаю так. Нашёл в гугле промпт для изучения раста. Зашёл в qwen, создал проект там написал описание

Ты — опытный разработчик на языке Rust и талантливый преподаватель программирования. 
Твоя цель — помочь мне изучить язык Rust.

Ну и в чат скормил вот такой текст, ну и пошло поехало

1. Доступность: Объясняй сложные концепции (особенно владение (Ownership), заимствование (Borrowing), времена жизни (Lifetimes) и типажи (Traits)) простыми словами, используя понятные аналогии из реальной жизни или других языков (C++, Python, Go).
2. Структурированность: Выдавай материал небольшими порциями (модулями). Не перегружай меня теорией. Одна порция — одна ключевая тема.
3. Практика прежде всего: После каждого теоретического блока обязательно давай небольшое практическое задание (написать код, исправить ошибку компилятора, сделать рефакторинг).
4. Проверка кода: Когда я присылаю решение, подробно разбирай его. Хвали за хорошие решения, мягко указывай на ошибки (как логические, так и идиоматические в стиле Rust / clippy) и показывай, как сделать код более "рустовым" (idiomatic Rust).
5. Фокус на компиляторе: Учи меня читать и понимать сообщения об ошибках компилятора (rustc), так как это главный помощник разработчика.

План нашего обучения (мы будем идти по нему последовательно):
- Модуль 1: Основы синтаксиса, переменные, неизменяемость, базовые типы данных.
- Модуль 2: Управление потоком (if/else, циклы, match) и функции.
- Модуль 3: Управление памятью (Стек и Куча), концепция Владения (Ownership) и Перемещения (Move).
- Модуль 4: Ссылки и Заимствование (References & Borrowing), правила Алиасинга.
- Модуль 5: Слайсы (Slices) и Структуры (Structs).
- Модуль 6: Перечисления (Enums) и обработка ошибок (Option, Result).
- Модуль 7: Векторы, строки (String vs &str) и хэш-карты.
- Модуль 8: Типажи (Traits) и Генерики (Generics).
- Модуль 9: Время жизни ссылок (Lifetimes).
- Модуль 10: Многопоточность и основы асинхронного Rust.

Давай начнем. Поприветствуй меня, кратко расскажи, почему Rust — это круто, и выдай Теорию по Модулю 1 (только первую вводную часть) и первое практическое задание. Не переходи к Модулю 2, пока я не выполню задание.

Ну и читаю в свободное от всего время, медленно идёт, но идёт.

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

Так то я понимаю что к чему , просто хочеться хорошего уровня достичь , а то очень много кода на Rust от AI ( Имитатора Интелекта) и интуитивно понятно что не оптимальное оно .

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

Но ещё раз. Для старта в Rust есть Rust Book. И его и надо читать.

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

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

эээ полезно историю индустрии и языков(которые ващет тож тот ещё «не_вендор лок ин»)

имха основная «сложность» раста - это люди с плохим знанием даже тех языков которыми они пользуются ( а это в основном python js golang) плохо умеют в различения именующего и именуемого т.е. проблема даже не в прощающем автосборемуссора а в отсутсвии у таких неофитов представления об стеке куче и вааще «мощи индексирования(даже простого арифметического у массива а уж асоциативное)» - т.е map’ы для них привычные в употреблении но чёрные как правило ящики

а в расте часть потрохов - в части принимания во внимание через боров времён жизни сущьностей торчат наружу -

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

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

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

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

Считаю, что он не столько сложный, сколько непривычный. Ибо в других языках концепции кочуют из одного в другой. Т.е. новый язык - это синтаксис + прибабахи (в смысле особенности). А тут другое, понимать надо.

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

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

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

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

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

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

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

Некоторые языки (вообще-то все, но в разной степени) обладают способностью воздействовать на мозг.

И к bbc69.
АФИАК теория лингвистической относительности признана ересью. В той степени, что на мозг/интеллект не воздействует. Но язык действительно влияет на ход/вид/образ мышления. Примеры - счисление раз-два-много, несуществующие в других языках понятия и отношения, направления, цвета, ветра и тп.

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

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

ну чисто как пример декартовые vs полярные координаты

ну или ужо в геометрии когда до декартово координатное опиралось на рассуждения а декартово - кранк кранк результат" что «облегчило» учёбу массам

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

просто хочеться хорошего уровня достичь

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

а то очень много кода на Rust от AI ( Имитатора Интелекта)

обязательно ли погружаться в этот растовайбкод? неужели есть какие-то программы, которым нет аналогов на привычных языках типа с/с++?

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

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

существуют сотни языков программирования - на всех времени не хватит

anonymous
()

Perl умер раньше, чем я узнал про его существование. Так что он не как мне не помог в изучении Rust.

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

АФИАК теория лингвистической относительности признана ересью.

Пофиг вообще. Перловику крайне сложно объяснить, что $#%$@#@{%#Df}#$#43 пусть и краткая, но не очень очевидная конструкция, так что лучше б переписать в десять раз длиннее, зато читаемее. Сишники распадаются на две категории: одни не понимают как работает процессор (и это плохие сишники), другие понимают процессор, но ценой потери понимания всего остального (и это хреновые программисты). Ну и так далее. А лингвисты-психологи-антропологи для начала пущай сами первые докажут, чем они от цыган отличаются.

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

чтобы софт дорабатывать на rust , opsdeck , rustconn

То есть хотите поучаствовать в общественной разработке на Rust. Ну, можете попробовать, но вас предупреждали, что Rust не совсем традиционный язык, там мышление нетрадиционное программисткое. Если сильно погрузитесь в Rust, потом будет трудно (если сможете) писать на C, C++, Java, Python. Может, всё-таки, лучше не ломать себе мозг и сразу на нормальных языках писать, а не на Rust и не на Perl?

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

Rust не совсем традиционный язык, там мышление нетрадиционное программисткое.

Обычный императивный язык, с небольшим закосом в функциональщину (от OCaml чуть и еще меньше от хаскеля), и небольшая добавка в виде борова (хотя это тоже из функциональщины линейные типы на минималках).

Если сильно погрузитесь в Rust, потом будет трудно (если сможете) писать на C, C++,

На C++ будет как-раз проще писать, все что связанно с владением все равно там надо соблюдать, но компилятор ничем не помогает, раст как раз неплохо натренирует в этом.

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

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

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

ugoday ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария