unsafe у Rust не вимикає перевірки borrow checker-a та не перетворює Rust на C чи Assembler. unsafe дозволяє трохи розширити можливості Rust але із умовою, що програміст має розуміти, що він робить и що це не приводить к помилкам чи UB. Тобто використати інваріанти, які система типів Rust не може перевірити, бо для цього в не недостатньо інформації. Якщо суто технічно, то unsafe лише дозволяє робити наступні речі:
— зробити розіменування сирого вказівника (dereference of raw pointer)
— виклик небезпечної функції чи методу (Call an unsafe function or method)
— доступ чи модифікація модифікуємої статичної змінної (Access or modify a mutable static variable)
— реалізація unsafe трейту (Implement an unsafe trait)
— доступ до полів у об’єднанні (Access fields of a union)
Proof link: doc.rust-lang.org/...t.html#unsafe-superpowers
Усі перевірки та система типів працює як і раніше! This common misperseption of unsafe!
Не мне об этом судить, но если у него всё отлично, я только рад! Моя мысль была в том, что год жизни в стране слишком мало для того, что бы сформировать целостное мнение о ней. У многих почитавших и поехавших может сложиться не всё так удачно, хотя рад ошибиться!
Большая часть коментаторов про розовые очки упускает, что автор живёт всего год. За это время не успеваешь столкнуться с серьёзными проблемами, глубоко понять, как работает общество и прочее. Всё ещё очень ново, а смена обстановки радует глаз. Интереснее будет послушать автора лет через 5 :) Тогда и эйфория переезда пройдёт и мироощущение поменяется.
Не говорю, что всё будет плохо или хорошо, просто по другому. Перестанешь от всего подряд кайфовать. Обыденное станет обыденным, а действительно проблемные вещи осядут в голове и начнут беспокоить.
Роман, дуже гарна історія! Бажаю тобі здійснимими свої мрії та стати розробником, це не так вже й важко якщо дійсно бажаєш! Треба трохи часу та наполегливості!
P.S.: Якщо будеш ще в Берліні пиши! З радістю поспілкуюсь, та може й щось цікаве розповім чи подивимось!
Є навіть системи, що дозволяють у візку сідати за кермо! На жаль в Україні я таких не бачив!
Сложность языка заключается в том, что на нём сложно научиться писать рабочие программы. Сам язык простой, но он слишком простой и не предотвращает очень опасные ошибки. Тоже можно сказать и про JS! язык прост, но овладеть им настолько, что бы писать надёжные программы крайне сложно.
Чувствую JS-ом пахнуть начало ... :D
Я не скажу про всех ДЖсников, но вот что-то особенное в ихнем комьюнити есть...
Я писал на PHP много лет, потом на Ruby больше, до PHP и после Ruby писал на чём придётся С, С++, JavaScript/TypeScript, немножко Python, немножко Java, игрался с Erlnag/Elixir, застрял на некоторое время со Scala и на одном проекте потрогал Go несколько месяцев.
После всех языков Rust нравится своей простой концепций, хотя язык относительно обширный, но в нём не так уж много легаси мусора по сравнению с другими языками.
Не удержусь и добавлю... Если вам нравиться ловить рантайм ошибки используйте Go, если вам ... и в продакшн, используйте Go, если вам нравиться копипаста используйте Go (ибо нормальных средств абстрагирования кода не завезли, а язык всё же со статической типизацией), а ну да ... если вам нравиться отсутствие нормальной системы типов — используйте Go, если вам нравиться работать со сторонними библиотеками, как в
После определённого периода адаптации Rust нравиться отсутствием необходимости настраивать и беспокоиться (на уровне метрик) о GC, аллокейшены всё же надо мониторить, но обычно одного
Система типов позволяет писать программы, которые в случае модификации исправляются следуя за ошибками компилятора! И это действительно работает! Они очень читаемые (по большей части). После исправления всех ошибок можно быть уверенным в работе программы на 99.9999%.
Вам не надо закрывать файлы, анлокать мьютексы, возвращать соединения в пул, всё это реализуется через Drop trait.
Алгебраические типы данных и паттерн матчинг, система трейтов, коцепции владения и времени жизни позволяют делать интересные вещи при моделировании предметной области с проверкой корректности компилятором, а написание реализации трейтов для дженерик типа с баундами сносит крышу (да, да, я знаю, Scala круче может, и компилятор там ложится :)).
Стоит упомянуть про макросы! Это очень круто! Почти гибкость Ruby со статическими гарантиями и скоростью выполнения в рантайм в одном флаконе!
А ну и конечно никаких нулов (привет Go) и исключений! В Rust используется тип сумма Option/Result aka Either/Maybe.
Много чего хорошего можно ещё написать... Даже есть попытки реализации зависимых типов, хотя Idris/Haskel тут не досягаемы и я не думаю, что в Rust могут появиться их нормальная реализация. Язык уже стабилизировался и столь сильное изменение типов не хило встряхнёт экосистему.
Из не очень хорошего, чем больше нагружаешь систему типов, тем дольше компиляция, хотя IMO до Scala ещё далеко :). Язык ещё молод и каких-то специфичный вещей может просто ещё не реализовано, например, каких-то хитрых структур данных или деревьев, под специфичные задачи. Самому подобные штуки крайне сложно реализовывать, а в Rust ещё придётся хорошо ознакомиться с Rustonomicon.
Иногда наступает ощущение, что пишешь на действительно функциональном языке, но потом возвращаешься в реальность, так как HKT нет, хотя есть довольно интересные пакеты построенные на макросах для функционального программирования. Или возникает желание притащить, что-то из другого языка, но borrow checker возвращает в реальность.
Немного разочаровывает сильная разница между nightly и stable. На roadmap на 2020 обещали уделить стабилизации больше внимания, но уже полгода прошло, а сильных подвижек не видно.
Язык очень интенсивно развивается, особенно в плане эргономики, и сейчас уже многое исправлено, поэтому обращайте на это внимание, когда читаете статьи
И как подтверждает Stackoverflow, я funboy, ибо им сложно не стать после детального ознакомления с языком.
Кто пойдёт, оставьте пожалуйста отзывы! Особенно интересен пукт
Подготовим проект, который будет создавать базовые настройки AWS-аккаунта из кода
Как тренинг в свете если есть практический опыт использования Terraform?
Frau, если уж на то пошло :)
Рискуя вкинуть на вентилятор упомяну инет :) Willkommen в эру продвинутой модемной связи, когда 500кб/с было пределом возможностей (привет KabelDeutschland/Vodafone).
В Новую Зеландию лучше не надо есть инсайдерская инфа, что там тоже всё не сладко :)
Экономическая (бизнес) точка зрения важна, но ...
Скажу с технической точки зрения, как человек мигрировавший с PHP на Ruby, что Ruby более целостен, как язык в нём всё более предсказуемо и ожидаемо, да и скорость в последних реализациях подтянулась, + Rubinius 2.0, т.е. возможность исользовать паралелизацию без GIL’a. Я ушёл с PHP окончательно во времена появления версии 5.3. Возможно, что-то поменялось, но я думаю не сильно. Параллелизм, никогда не был сильной стороной языка, Базовые библиотеки более низкоуровневые, чем в Ruby (Я имею ввиду, что многое из того, что в Ruby идёт в базовой поставке в PHP приходиться либо пользоваться сторонними либами, либо же писать самому и это без упоминания про Facets на Ruby).
Единственное, чего не хватает в Ruby по сравнению с PHP для больших проектов, так это хорошего Enterprise фреймвёрка. PHP ещё когда я уходил начал пытаться заполнять эту нишу, а сейчас есть отличные решения на Symfony 2 и Doctrine 2. Ruby же крепко засел на Ruby on Rails с его ActiveRecord, который на Enterprise проектах приходиться натягивать на логику приложения как детский насок на взрослую ногу. Есть многообещающий проект ROM(Ruby Object Mapper), но он ещё далеко от production-ready версий.
Так что мой выбор сделан в пользу Ruby, как хорошей платформы с детскими носками, в надежде когда-нибудь разжиться подходящими. Что в отличии от PHP более реально, чем ожидание исправления и унификации корневых библиотек с нарушением совместимости с существующей кодовой базой ...
P.S.: Сообщение больше, наверное получилось для темы Ruby VS PHP. Чем про будущее PHP ... что ж, для адептов строгости, сорри за офф-топ.
Это же не американские военные, которые выкладывают ролики с Харлем Шейком ... хотя было бы забавно .. «Маски-шоу Harlem Shake в Global Logic»!
В Global Logic уже отрабатывают сценарий ;) Ещё сомнения есть в подобном органе?
Плохая идея проводить обучающее событие по Ruby, когда все рубисты будут на другом событии :) rubyshift.org
Дуже цікаві теми. Відео матеріали будуть? С Харкова до вас далеко їхати.
Може ще до смаку тобі прийдеться! ;)
rust-unofficial.github.io/too-many-lists
Як раз для полюблювачів зв’язних списків! ;)