Вот взять модный нынче Rust, которые обещает стать убийцей С++.
У меня вопрос такой назрел: можно ли сделать переводчик программ C++ -> Rust? Понятно что одиночка не потянет, но вот если возьмётся корпорация и представит? Вот проснулись завтра — и тут тебе все говорят о новомодном переводчике, который любой код на C++ переводит в новомодный Rust. И тогда решается главная проблема — кодовая база.
Предположим что такой переводчик написали — теперь нет проблемы кодовой базы, все библиотеки C++ 100% доступны на Rust.
Тогда возникает более важный вопрос — удобнее ли вообще писать на Rust?
По сути это похоже на unique_ptr с доп. проверкой владения на уровне компиляции. Т.е. чтобы голову не морочить со сложной сборкой мусора — решили вообще отказаться от множественного владения — владелец всегда один. Решение Александра Македонского — болит голова — значит нужно ее отсечь.
Ну и далее идет борьба с ветряными мельницами — борьба с последствиями принятого решения. Придумали ссылки и изменяемые ссылки. Ну это ладно.
Самый смак начинается тут: https://metanit.com/rust/tutorial/6.1.php — установка времени жизни ссылки Я не до конца понял как это работает и почему компилятор все-же перекладывает ответственность по контролю на разработчика. Значит если я ошибусь — таки получу ошибку времени исполнения.
Как вы думаете — удобнее ли такая парадигма? Я вот не могу пока понять — нужно попробовать что-то написать на нем, а пока никто за это не платит — смысла нет.
Здравствуйте, Shmj, Вы писали:
S>Как вы думаете — удобнее ли такая парадигма? Я вот не могу пока понять — нужно попробовать что-то написать на нем, а пока никто за это не платит — смысла нет.
на хелловорлдах ты никогда не поймешь, нужен большой проект, типа какого-нибудь многопоточного сервера с нетривиальным резервированием и проч. системщиной.
Потому что однопоточные хелловорлды и на плюсах можно писать без проблем с ownership и проч.
С другой стороны, ни одна контора не будет переводить свой большой проект с плюсов на раст только потому что ЯП в теории более безопасный.
Таким образом раст пока занимает нишу плюс-минус ненужного опенсорса или васянских проприетарных велосипедов, о которых знает только васян и может быть его шеф.
Здравствуйте, Shmj, Вы писали:
S>Я вот не могу пока понять — нужно попробовать что-то написать на нем, а пока никто за это не платит — смысла нет.
лично я действую так. С растом первое знакомство есть, переодически возвращаюсь к нему, но на уровне хеллоуворлдов.
Смысл такой, что если раст взлетит и вытеснит хотя бы половину ваканский, в которых до того указывался c++, мне будет немного проще набраться опыта в раст, т.к. азы уже знаю.
Т.е. оставляю инициативу индустрии. А по зарплатам растовым программистам не могут платить выше плюсовых, потому что весь смысл раста — уменьшить вуду-знания о сложностях C++ и позволить простым смертным писать околосистемщину. Ну а раз ты простой смертный, то зачем тебе платить больше, чем плюсовику?
Здравствуйте, student__, Вы писали:
__>Таким образом раст пока занимает нишу плюс-минус ненужного опенсорса или васянских проприетарных велосипедов, о которых знает только васян и может быть его шеф.
Экспансия языка Rust: Включение поддержки Rust в ядро Linux и GCC. Развитие компонентов Android, Mesa, GStreamer, Ruby на Rust. Разработка NVMe-драйвера на Rust. Первый стабильный выпуск Arti, официальной реализации Tor на языке Rust.
В простом случае ты в начале функции создаёшь объект, потом его где-то используешь и в конце удаляешь.
В сложных случаях всё может быть сложней. Но в любом случае это какой-то алгоритм. При этом если ты этот алгоритм не осознаешь и действуешь по наитию — это хороший рецепт для получения проблем (leak или use after free).
Rust этот алгоритм позволяет явным образом указать в программе таким образом, чтобы компилятор мог проверить его и предотвратить хотя бы некоторые проблемы.
Это можно сравнить с типизацией. Ты можешь писать на JS не думая про типы, но в твоей программе типы всё равно будут. И оказывается, что лучше писать на TS и контролировать эти типы явно, разменивая больше писанины и меньшую выразительность кода на большее число багов, пойманных компилятором.
Все ограничения раста проистекают исключительно от этой концепции. Ты загоняешь себя в рамки, внутри которых компилятор раста может проконтролировать то, что ты пользуешься указателями без багов. Тебе сложней писать код, но ты получаешь бОльшую уверенность в отсутствии определённого класса багов.
Помимо управления памяти эта концепция владения также помогает с многопоточным программированием и некоторыми другими API.
Поэтому спор Rust против C++ это как спор JS против TS. Поклонники есть у обоих стилей, есть ковбои, которые, по их словам, ошибок не допускают и им этот контроль только мешает, но практика показывает, что всё же большинство прагматичных программистов предпочитают поменять часть своей "свободы" на больший контроль со стороны компилятора.
И поэтому вопрос о том, удобна ли такая парадигма — он априори ставится неправильно. Любые ограничения неудобны. Вопрос надо ставить так — насколько сильно эти ограничения мешают писать код и насколько тебе нужны те плюсы, которые ты получаешь от этого неудобства.
Обилие проектов самого разного вида на Rust, от операционных систем и драйверов линукса до веб-серверов и ORM-систем говорит о том, что принципиальных проблем со всем этим нет.
С другой стороны тот факт, что люди пишут на JS и Python говорит о том, что не все хотят видеть максимальный контроль со стороны компилятора. Поэтому про убийство С++ я бы тоже не говорил. Но в целом я в будущем вижу только увеличение использования Rust и откусывание пирога C++.
Здравствуйте, T4r4sB, Вы писали:
TB>Затем, что производительность труда выше? TB>Не задумывался, почему у жабистов средняя зп выше, чем у крестухов?
В РФ или в первых странах? Код на Java пишут на аутсорс, а C++ никто на аутсорс не доверит — это делают для отечественных конторы, которые, ясен пень, живут в другой экономической среде и платят меньше.
Здравствуйте, Nuzhny, Вы писали: N>Экспансия языка Rust: Включение поддержки Rust в ядро Linux и GCC. Развитие компонентов Android, Mesa, GStreamer, Ruby на Rust. Разработка NVMe-драйвера на Rust. Первый стабильный выпуск Arti, официальной реализации Tor на языке Rust.
людей-то много народилось, и многие лезут в программисты. Ну и вот, надо их чем-то занять, а легаси никто не любит, поэтому проекты на С++ допиливать они не хотят.
Ах да, совсем забыл, ядро тут фактически не очень по теме, потому что тема "rust на фоне c++", а про С никто не спрашивал.
Здравствуйте, student__, Вы писали:
__>людей-то много народилось, и многие лезут в программисты. Ну и вот, надо их чем-то занять, а легаси никто не любит, поэтому проекты на С++ допиливать они не хотят.
А вы на перфокартах, небось, тоже не особо хотите?
Оно то хорошо если язык действительно более удобен. Но не факт что оно так.
Здравствуйте, T4r4sB, Вы писали: TB>Не задумывался, почему у жабистов средняя зп выше, чем у крестухов?
Т.к. жабисты и плюсовики работают в разных нишах с разными техническими требованиями, так прямолинейно их сравнивать некорректно. Это как бы разные вероятностные пространства.
Т.е. там где, например нужен реалтайм, производительность джависта будет 0, потому что стандартная JVM для этого не подходит, а реалтайм-JVM — это уже не та джава, которая удобная и беззаботная.
Здравствуйте, Shmj, Вы писали:
S>Оно то хорошо если язык действительно более удобен. Но не факт что оно так.
Удобен для кого? Для кодера, возможно, не особо удобен. Для аналитика тикетов и системного паталогоанатома удобен, потому что не нужно разгребать сегфолты от определенного рода ошибок.
Контора может запросто вместо одного мега-гуру C++ нанять двух индусов растовиков, и к тому же выкинуть тот статический анализатор C++, который следит за гуру и бъет его по рукам в случае чего, и за который еще нужно башлять ежемесячно.
Здравствуйте, student__, Вы писали:
__>позволить простым смертным писать околосистемщину.
Не случится никогда, потому что нужны знания именно предметной области, а язык выбирается именно под предметную область, т.е. вторичен.
Здравствуйте, T4r4sB, Вы писали:
TB>почему у жабистов средняя зп выше, чем у крестухов?
Где она выше? В предметных областях где одни жабисты а других туда хз как занесло?
Платят не за язык, платят за решение проблем.
Здравствуйте, Shmj, Вы писали:
S>Вот взять модный нынче Rust, которые обещает стать убийцей С++.
S>У меня вопрос такой назрел: можно ли сделать переводчик программ C++ -> Rust? Понятно что одиночка не потянет, но вот если возьмётся корпорация и представит? Вот проснулись завтра — и тут тебе все говорят о новомодном переводчике, который любой код на C++ переводит в новомодный Rust. И тогда решается главная проблема — кодовая база.
если программу можно перевести на раст значит она в этом не нуждается.
но скорее всего нет, т.к. раст полностью построен на выражениях, а си на инструкциях.
Здравствуйте, vaa, Вы писали:
vaa>если программу можно перевести на раст значит она в этом не нуждается. vaa>но скорее всего нет, т.к. раст полностью построен на выражениях, а си на инструкциях.
А вы попробуйте попросить chat.openai.com чтоб перевела. Как следует мотивируйте