НО, в целом, могу, например сказать, что скорость обработки сообщений из очереди RabbitMQ при реализации на Rust в разы превышает скорость .NET Core при сравнимых подходах и реализациях
Я, помню, был пару дней под впечатлением, когда в VS Code Rest Client (аналог Postman) увидел микросекунды вместо миллисекунд, как обычно в дотнете или ноде.
Никакой иронии, но сужу по личному опыту. Если сравнивать мой опыт Rust c другими популярными стеками: - асп.нет - скорость разработки на нем выше, удобно за счет LINQ - node.js + typescript - на Раст я пишу быстрее, система типов в Раст обеспечивает сравнимое удобство, работать с SQL базой намного удобнее с sqlx, но все таки это наиболее близкий по скорости и девелопмент экспириенсу стек
- node.js + javascript - не понимаю, как люди на этом пишут, на Rust намного быстрее (если не брать за скорость разработки то, насколько быстро можно с нуля выкатить первый эндпоинт).
В целом, если брать суммарную скорость разработки за несколько месяцев (которая включает в себя как добавление новых фич, так и правки в существующие), то связка Actix Web + SqlX проигрывает разве что asp.net. При этом Rust за счет макросов имеет огромный потенциал в сокращении бойлерплейта.
Не знаю, может я, конечно, недоделанный, но, бегая больше 5 лет, занимаясь в тренажерном зале, на пике формы (ну, если вам верить, то "формы") бегал с темпом около 6 минут за километр, и это с пульсом 150-160. После долгого перерыва (только тренажерный зал) бежал 8 мин за километр. 10 км за час - это час валить 6 мин за километр без передышки, ну не знаю, кто без подготовки это сможет сейчас
По моему личному опыту, разработка CRUD на Rust (Actix Web, SqlX, Postgres) была в среднем равна по скорости разработке на Node.JS и Typescript (хотя и разрабатывал я его в одиночку). В однотипном (и достаточно простом, чего уж) коде, коим является CRUD, проблемы и ошибки достаточно однотипны, и сильной просадки по скорости разработки не было.
Ощущения от разработки на Rust, конечно, совершенно другие, чем от Typescript, почти нет мелких досадных ошибок типизации (хотя и на Тайпскрипте их не очень много, по сравнению с чистым Джаваскриптом, не представляю, как люди нем пишут), основные ошибки - в логике программы. Хотя код получается более объемным.
mysql -u root -p -h mysql-set-0.mysql.default.svc.cluster.local - вот эта строчка подключается напрямую к контейнеру? Или сервис создает "подсервисы" для каждого пода стейтфул сета?
Не знаю, насколько удобно разрабатывать веб в С++, но Раст обеспечивает сравнимое с асп.нет удобство (все же, несколько ниже - так как нету LINQ, но все же есть sqlx, который делает работу с базой не совсем ужасной, но ).
Вообще, имхо, Раст - сильно опережает другие варианты по сочетанию "скорость работы + скорость разработки"
Насколько я понимаю, для того, чтобы иметь (хотя бы теоретическую) возможность zero runtime, язык должен:
Не иметь неубираемых внешних зависимостей (например, интерпретатора или сборщика мусора). Тут возникает вопрос, считать ли отсутствием зависимостей случай статической линковки. В случае этой статьи, очевидно, автор под zero runtime имеет ввиду возможность близкой к 1:1 трансляции в ассемблер. Это, на мой взгляд, не совсем верно, но ладно.
Не иметь добавляемого библиотечного кода, т.е. иметь так называемые zero-cost abstractions. Тоже спорно, но ладно, автор так решил.
Третье условие - языком должно быть возможно пользоваться на этих условиях.
Итак, отвечает ли Раст этим условиям? Вроде отвечает. Обязан ли он быть в этих условиях более эффективным по машинному коду, чем С? Ну типа автор оригинальной статьи это подразумевает, но непонятно с какой стати. В таких условиях практически любой язык - это будет вариант С, только с другим синтаксисом + генерируемый или библиотечный код (типа тех же методов итераторов), который можно использовать или нет.
Почему циклы, ветвления, арифметические операции (хотя тут есть особенность из-за defined/undefined behaviour), вызовы функций должны отличаться сколько нибудь заметно? Настолько ли это важно, что прям из-за трех лишних байт в ассемблере в bare metal mode Раст должен прям умереть?
Удивляет, что у некоторых людей присутствует иррациональная ненависть к Расту. Я так понимаю, в основном это сишники и плюсеры. Казалось бы, не нравится - проходи мимо. Аналогичное явление я наблюдал у линуксоидов, НЕНАВИДЯЩИХ виндоуз.
Я с вами согласен, и во многом поддерживаю (особенно в плане дискомфортных условий для тренировок, я сам бегал и в -15, и в +35), но понимаю, что это ДАЛЕКО не для всех.
Вам повезло в том, что вам нравится преодолевать трудности, получая за это вознаграждение - сильное и красивое тело. (В теории-то это всем нравится, но на практике - единицам). Но обычному человеку (в том числе и мне, но я себя заставляю) хочется делать поменьше, а получать побольше, и такие условия тренировок, как у вас, отобьют желание тренироваться на годы вперед.
Через пайтон 3.10 вроде запустился. Через 3.11 не заработал
На Мак М1 не запустится?
Это только в книгах, чтобы было интереснее. Думаю, в жизни методика, описанная автором, отлично работает.
Почти как каноническое `gender: boolean` , где true - это мужчина, а false - женщина
Нога не мутабельная, урон не нанесен
Я, помню, был пару дней под впечатлением, когда в VS Code Rest Client (аналог Postman) увидел микросекунды вместо миллисекунд, как обычно в дотнете или ноде.
Никакой иронии, но сужу по личному опыту.
Если сравнивать мой опыт Rust c другими популярными стеками:
- асп.нет - скорость разработки на нем выше, удобно за счет LINQ
- node.js + typescript - на Раст я пишу быстрее, система типов в Раст обеспечивает сравнимое удобство, работать с SQL базой намного удобнее с sqlx, но все таки это наиболее близкий по скорости и девелопмент экспириенсу стек
- node.js + javascript - не понимаю, как люди на этом пишут, на Rust намного быстрее (если не брать за скорость разработки то, насколько быстро можно с нуля выкатить первый эндпоинт).
В целом, если брать суммарную скорость разработки за несколько месяцев (которая включает в себя как добавление новых фич, так и правки в существующие), то связка Actix Web + SqlX проигрывает разве что asp.net. При этом Rust за счет макросов имеет огромный потенциал в сокращении бойлерплейта.
Но это, повторюсь, мой личный опыт.
Не знаю, может я, конечно, недоделанный, но, бегая больше 5 лет, занимаясь в тренажерном зале, на пике формы (ну, если вам верить, то "формы") бегал с темпом около 6 минут за километр, и это с пульсом 150-160. После долгого перерыва (только тренажерный зал) бежал 8 мин за километр. 10 км за час - это час валить 6 мин за километр без передышки, ну не знаю, кто без подготовки это сможет сейчас
300 км в месяц? 10 км в день? Еще бы не похудеть, тут как бы не помереть
Кому от этого плохо?
Очевидно, потому, что это не одно и то же
Абсолютно ничего. Детская порнография запрещена из-за того, что происходит при ее производстве. Кто страдает при производстве игр?
Что аморального в "убийстве" пикселей?
По моему личному опыту, разработка CRUD на Rust (Actix Web, SqlX, Postgres) была в среднем равна по скорости разработке на Node.JS и Typescript (хотя и разрабатывал я его в одиночку). В однотипном (и достаточно простом, чего уж) коде, коим является CRUD, проблемы и ошибки достаточно однотипны, и сильной просадки по скорости разработки не было.
Ощущения от разработки на Rust, конечно, совершенно другие, чем от Typescript, почти нет мелких досадных ошибок типизации (хотя и на Тайпскрипте их не очень много, по сравнению с чистым Джаваскриптом, не представляю, как люди нем пишут), основные ошибки - в логике программы. Хотя код получается более объемным.
mysql -u root -p -h mysql-set-0.mysql.default.svc.cluster.local - вот эта строчка подключается напрямую к контейнеру? Или сервис создает "подсервисы" для каждого пода стейтфул сета?
Помимо скорости, важно и удобство разработки.
Не знаю, насколько удобно разрабатывать веб в С++, но Раст обеспечивает сравнимое с асп.нет удобство (все же, несколько ниже - так как нету LINQ, но все же есть sqlx, который делает работу с базой не совсем ужасной, но ).
Вообще, имхо, Раст - сильно опережает другие варианты по сочетанию "скорость работы + скорость разработки"
Насколько я понимаю, для того, чтобы иметь (хотя бы теоретическую) возможность zero runtime, язык должен:
Не иметь неубираемых внешних зависимостей (например, интерпретатора или сборщика мусора). Тут возникает вопрос, считать ли отсутствием зависимостей случай статической линковки. В случае этой статьи, очевидно, автор под zero runtime имеет ввиду возможность близкой к 1:1 трансляции в ассемблер. Это, на мой взгляд, не совсем верно, но ладно.
Не иметь добавляемого библиотечного кода, т.е. иметь так называемые zero-cost abstractions. Тоже спорно, но ладно, автор так решил.
Третье условие - языком должно быть возможно пользоваться на этих условиях.
Итак, отвечает ли Раст этим условиям? Вроде отвечает. Обязан ли он быть в этих условиях более эффективным по машинному коду, чем С? Ну типа автор оригинальной статьи это подразумевает, но непонятно с какой стати. В таких условиях практически любой язык - это будет вариант С, только с другим синтаксисом + генерируемый или библиотечный код (типа тех же методов итераторов), который можно использовать или нет.
Почему циклы, ветвления, арифметические операции (хотя тут есть особенность из-за defined/undefined behaviour), вызовы функций должны отличаться сколько нибудь заметно? Настолько ли это важно, что прям из-за трех лишних байт в ассемблере в bare metal mode Раст должен прям умереть?
Удивляет, что у некоторых людей присутствует иррациональная ненависть к Расту. Я так понимаю, в основном это сишники и плюсеры. Казалось бы, не нравится - проходи мимо. Аналогичное явление я наблюдал у линуксоидов, НЕНАВИДЯЩИХ виндоуз.
Я с вами согласен, и во многом поддерживаю (особенно в плане дискомфортных условий для тренировок, я сам бегал и в -15, и в +35), но понимаю, что это ДАЛЕКО не для всех.
Вам повезло в том, что вам нравится преодолевать трудности, получая за это вознаграждение - сильное и красивое тело. (В теории-то это всем нравится, но на практике - единицам). Но обычному человеку (в том числе и мне, но я себя заставляю) хочется делать поменьше, а получать побольше, и такие условия тренировок, как у вас, отобьют желание тренироваться на годы вперед.