C/C++

Rust или C++?

Посоветуйте пж, не могу определиться: Что лучше начать изучать в 2023, Rust или С++?
Мне для игр, в том числе свои движки поделывать, и с ML баловаться.
Сложноть изучения не имеет значения. Просто как я понимаю, Rust ещё сыроватый и развивается не сказать что очень быстро, а что будет с С++ в дальнейшем хз, вроде как от него потихоньку отказываются или нет?
Мне ещё 10 лет назад где-то один спец из сервисной службы провайдера говорил, что C++ -- мёртвый язык. А на нём сих пор программы пишут.
David Novak
David Novak
54 678
Лучший ответ
Серый Шулык Есть старые программы, то и поддерживать кто-то должен. Что там си++ , если даже на си поддерживают. И от того, что старый, не значит что он такой тормозной как современные.
вообще не понимаю, кто в здравом уме может выбрать rust.
это специальный язык для пожилых си-программистов, страдающих деменцией.
то есть, им работу с указателями доверить уже нельзя, потому что они сами не в состоянии контролировать свою память, и вообще микроменеджментом заниматься здоровье не позволяет, но как-то надо на жизнь зарабатывать - вот к ним и приставляют занудную няньку, которая следит, чтобы они ещё на этапе разработки вдоволь настрелялись себе в ногу...
Aleksey Hyvonen
Aleksey Hyvonen
65 270
Александр Танасевский Тяжелый случай. И ведь кто-то может поверить в этот бред.
Баходур Максудов Реально, очень тяжелый случай, такого откровенного бреда про Rust я еще не слышал.
Изучай азы ассемблера и азы си, а си++ углубленней, тогда уже почти любой язык не так тебе будет страшен. Можно начать вообще с автомата тьюринга допустим https://kpolyakov.spb.ru/prog/turing.htm
Серый Шулык
Серый Шулык
65 659
Сложность не имеет значения? Уважаемый, вы вообще не представляете, о чем говорите. Rust - это очень интересный язык, но программировать на нем порою бывает необычайно сложно. Начинать его учить как первый язык, на мой взгляд, - это далеко не лучшая идея. Ибо как только вы чуть-чуть отойдете от уровня ХэлоВорда, в гости заглянут Borrow Check и Контроль Времени Жизни. Порою эти вещи выносят мозг с эффективностью, сопоставимой с дробовиком 12 калибра. Приведу наглядный пример: есть такая штука, как связанный список. В простейшем случае его элемент - это какая-то структура, содержащая в себе данные и указатель на следующую такую структуру. Чтобы это работало на C/C++, достаточно написать что-то вроде
 struct Node
{
int data; // Данные, которые мы храним в элементе связанного списка
struct Node* next; // Указатель на следующий элемент
};
На Rust у нас есть две возможности:
  1. Написать примерно то же самое и засунуть всю обработку в unsafe блок
  2. Если нет желания использовать unsafe блок, то определение узла превратится во что-то типа
 use std::rc::Rc; 
use std::rc::Weak;
use std::cell::RefCell;

// Введем новый тип данных Link для описания выделенного в куче узла
// чтобы сократить писанину. Rc дает возможость иметь несколько ссылок на
// данные, но все они неизменяемые, а RefCell позволяет внутри себя иметь
// возможность данные изменить
type Link = Rc::;
// Новый тип данных WeakLink нужен для создания и работы с невладеющими
// ссылками на узлы связанного списка
type WeakLink = Weak::;

//-------------------------------------------------------------------
// Элемент (узел) связанного списка
//-------------------------------------------------------------------
struct Node
{
value: T,
next : Option::,
}
//-------------------------------------------------------------------
Обратите внимание на тип Link - чтобы обойти ряд ограничений, которые Rust накладывает на программиста, приходится использовать подобные, весьма нетривиальные конструкции. Это плата за гарантированную безопасность.

Начните изучение с Си, потом переходите к Си++ и только потом, когда немного научитесь этим языкам, пытайтесь подступиться к Rust.
Баходур Максудов
...в гости заглянут Borrow Check и Контроль Времени Жизни. Порою эти вещи выносят мозг с эффективностью, сопоставимой с дробовиком 12 калибра

Убило, спасибо. Вообще, касаемо нетривиальных конструкций, у сообщества Rust этот мем назван как "Fight The Borrow Checker", что меня иногда забавляет, хоть я и знаю по себе, что это необходимо для более безопасного кода. И касаемо борьбы с заимствованием - еще никогда я не видел более четкого описания этого процесса в виде "дробовика 12 калибра", - я возьму себе на вооружение :)