Как стать автором
Обновить

Комментарии 31

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

Явное наследование - пример номинативной подтипизации. А вот имлементирование интерфейса (или трейта в расте) - пример структурной (автор по ошибке принял ее за утиную)

НЛО прилетело и опубликовало эту надпись здесь

Есть понятие явной имплементации трейта, а есть - не явной (как в го)

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

Утиная типизация предназначена не для писания Фурье преобразований, а для решения проблем которые первоначально решались ООП. Но это не мешает ей помогать не писать преобразование Фурье лишний раз.

Другой огромной частью экосистемы Rust является его документация. Я изучил язык исключительно по официальной документации и никогда не чувствовал необходимости искать учебные материалы в других местах.

Что прекрасно соответствует

Данная статья это перевод с английского с некоторыми адаптациями.

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

Спасибо за статью!

В интернетах я слышал два тезиса. Что программы на Rust хорошо защищены и что часто хакеры пишут свои программы на Rust. Кто что скажет по этому поводу и как такое сочетание возможно одновременно?

А в чем тут противоречие? Хакеры тоже хотят писать защищенные программы. Вот если бы второй тезис звучал как "Хакеры часто ломают программы на Rust" - тогда да. Но в общем это два независимых тезиса.

Утиная подтипизация не требует явного статического указания типа. Rust traits представляют из себя пример структурной подтипизации. В других языках программирования структурная подтипизация часто реализована в виде интерфейсов, в Python - через typing.Protocol и т.д.

Начал изучать "этот ваш" Rust. Пока впечатление не очень. Безопасность при использовании памяти, это, конечно, хорошо, но некоторые моменты контринтуитивны. Короче, почти "еще один C++".

И есть несколько вопросов, на которые пока не видно приемлемых ответов.

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

Во-вторых, есть ли приличные, опять же, кроссплатформенные средства для разработки GUI хотя бы уровня QT Creator?

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

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

  1. Любой редактор с поддержкой языковых серверов + rust-analyzer. VS Code, например.

  2. Из приличных есть Gtk-rs, из кросс-платформенных -- Tauri, Slint.

  3. Есть, например, lib.rs как альтернатива crates.io

Спасибо.

С первым пунктом буду пробовать.

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

Третье уже радует.

У Gtk есть минимум два визуальных редактора: традиционный Glade и новый Cambalache. Также появился новый язык разметки -- Blueprint. Это всё, конечно же, не rust-специфично и доступно для всех языков.

От Unreal Engine за Blueprint не прилетит?

Есть RustRover от JetBrains, если вы привыкли к Idea/VS. А так lsp есть под все - vscode, neovim, emacs

  1. Не сильно обольщайтесь. То, что даёт языковый сервер и tree sitter действительно есть везде где поддерживаются языковый сервер и tree sitter, но это не делает текстовый редактор IDE в том смысле, в каком Visual Studio - IDE, а VS Code - нет.

  2. Если честно - то нет. Разрабатывать GUI в принципе - можно. Есть привязки к библиотекам типа GTK, Qt, SDL. Есть кросс-платформенные игровые движки типа Bevy. Есть средства разработки GUI поддерживающие Rust в том числе, типа Slint. Есть средства разработки GUI использующие Rust наряду с, типа Tauri - аналога Electron. Есть даже возможность прицепиться к Flutter...

  3. Non-issue. Менеджер пакетов не обязателен и все, а может и не все но почти, пакеты так или иначе лежат на GitHub. Что crates.io, что lib.rs - не ресурсы от которых может быть зависимость, это индексы ресурсов. Если кажется что cargo с её add - это ресурс от которого тоже может быть зависимость, то это не так, это стандарт понятия "пакет" и их два быть не может. В некотором смысле есть зависимость от Git и GitHub, но против выпиливания из состава человечества запасных вариантов не бывает.

Не сильно обольщайтесь. То, что даёт языковый сервер и tree sitter действительно есть везде где поддерживаются языковый сервер и tree sitter, но это не делает текстовый редактор IDE в том смысле, в каком Visual Studio - IDE, а VS Code - нет.

Уже немного достал этот снобизм. Я в Емаксе с lsp+gopls намного продуктивнее чем мои коллеги c Goland. Плохому танцору как известно всегда что-то мешает.

Где Вы видите снобизм? Примените эмпатию и попытайтесь понять о чём человек спрашивает. Вроде как очевидно - ему бы идеально подошёл Delphi, только для Rust. И все Emacs просто не о том.

Я в Емаксе с lsp+gopls намного продуктивнее чем мои коллеги c Goland. Плохому танцору как известно всегда что-то мешает.

А если найду? придумаю задачу где будет наоборот? Кто-нибудь заводил речь о Вас?

Если бы человеку хоть немного подходил Emacs, то он бы сразу hx --health и ничего бы не спрашивал...

Где Вы видите снобизм?

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

ему бы идеально подошёл Delphi,

Человек написал про кроссплатформенную ИДЕ, делфи такой не является. Нужно внимательно читать ветку

А если найду? придумаю задачу где будет наоборот?

Удачи

Человек написал про кроссплатформенную ИДЕ, делфи такой не является. 

Давненько Вы на сайте Embarсadero не были...

Ну, на самом деле сама IDE не является кроссплатформенной. Софт, который можно написать является, а среда - нет. К сожалению.

А что есть

Можно найти продолжительные дискуссии по этому поводу. Я их не запоминаю ибо не фанат ни того ни другого.

То, что это единая штука, не требующая ставить отдельно среду разработки, компилятор и языковый сервер. Visual studio можно поставить и сразу получить минимальный комплект разработки для нескольких языков. Причем все будет уже должным образом связано и настроено.

То же можно сказать и про QT, который дает ту же возможность в своем установщике (но, правда, только для одного языка).

Именно потому многие предпочитают таки требующую лицензию студию свободно распространяемому VSCode.

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

В случае с Емакс я с вами согласен, но вот c VSCode это неправда. Просто открываете проект, нажимаете пару кнопок и готово. Абсолютно аналогичная ситуация с Visual studio.
Разница разве что только в том, что студия просит скачать гигабайты непонятно чего при установке.

А с VSCode ставятся компиляторы всех поддерживаемых языков и языковые серверы из коробки?

Буквально нажатием одной кнопки

Языковые серверы ставятся из маркетплейса прямо внутри редактора одной кнопкой. Компиляторы - зависит от языка и от того, как в нём принято устанавливать компилятор. В случае того же TypeScript компилятор отдельный для какждого проекта.

Для Rust в любом случае лучше ставить компилятор через rustup.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории