One morning you wake up find out you have access to God’s developer console. What’s the first thing you do with this power?
Discussion
♦ 154 + W 479 & Share
^ BEST COMMENTS ▼
I like forks • 5h
hehe3301 • 7h
sudo rm -rf oceans/*/contents/
*.plástic
sudo rm -rf people/*/*.cáncer sudo rm -rf v
Последний раз пересекался с Ансисом и там нужно было на фортрано подобном языке писать.
* примечание.
Что же, блять, такое обычный ООП? Тут я имел в виду C#/C++/Java. Но, справедливости ради, это не труЪ ООП, которым его задумывали. Да и вообще, спроси любого разраба, он вам назовет свое понимание ООП.
Трейт - это хм... требования к типу. Тип является "Comparable" (в Rust - трейт Eq), если он определяет какой-то набор методов. Но это не интерфейс, который необходимо указать при объявлении класса, трейт определяется отдельно от типа. Еще тип можно расширить. Это позволяет очень круто и гибко компоновать разные куски из разных библиотек. На самом деле, я бы сказал, что это даже круче ООП.
Про Rust в первую очередь известно про его безопасную модель памяти, основанную на заимствованиях. В двух словах, у объекта может быть только один владелец, только одна мутабельная ссылка, либо много иммутабельных. Все это проверяется статически, и за нарушение компилятор карает тебя анально. Move-сементика в масштабах всего языка.
Но я бы заметил, что система типов Rust не менее интересна, чем безопасная работа с памятью. Использование крутой строгой системы типов и безопасной работы с памятью позволяет перенести ряд ошибок в ошибки компиляции.
Конечно, не без недостатков. По первой borrow checker трахает мозг; некоторые особенности синтаксиса системы типов и управления владением приводят к необходимости иногда писать синтаксически ебанутые конструкции; структуры данных со множественным владением (граф, список) на модель раста ложатся плохо, привет, аналог старого доброго shared_ptr. Еще в раст не завезли типы высшего порядка и труЪ монады, поэтому его система типов все же не такая труЪ, как во всяких хаскелях, что приводят к костылям и велосипедам от разработчиков раста.
Пишут на нём всё — сервера, графические (в т.ч. с прямым использованием GPU) и неграфические приложения под все платформы (включая wasm, android, ios и микроконтроллеры), синхронный, асинхронный, многопоточный код, учебные книги, возможно кто-то уже и драйвера успел написать, сборочные скрипты (вместо cmake, например, если в проекте уже есть раст).
Главное в расте, на мой взгляд, даже не сами фишки языка, а библиотеки, которые благодаря этим фишкам выросли, умопомрачительной функциональности которых я до сих пор не могу нарадоваться.