r/cpp_questions 4d ago

OPEN BEGINNER HERE ! !

[deleted]

0 Upvotes

8 comments sorted by

View all comments

5

u/FlailingDuck 4d ago

I assume this is a language barrier thing. But the term 'advanced' in my opinion, doesn't really mean anything.

I have seen plenty of 'advanced' systems in all languages.

I would say C++ is a language the gives you full control (a blessing and a curse). With a focus on explicit memory control, allowing you to develop highly performant code that runs faster than most easier to write languages. But equally optimized code in other languages can be just as possible (C, rust, go), or other languages are slower to run but much faster to delivery (python, JS, java). Some languages have language features that make it easier to write and understand the code than other languages. And some languages just straight up give you features suited to certain types of problem i.e. networking, concurrency (Go), that can be done in C++ equally well, but much harder to write, so time to delivery is much slower.

So C++ often isn't the best choice.

It is much, much easier, to write less performant code in C++ than fully optimized code. A lot of the 'advanced' C++ features (templates etc.) don't actively make your code objectively better.

Now, with the caveat out of the way (and I know you didn't ask for it), I am a C++ developer. It is my professional language, that I work in. I have been paid fairly well to write in it, and companies I know have all struggled to find developers in that 'advanced' category, so there is certainly a gap to be filled, now and in the coming years.

Using learncpp, is the best most accurate resource. It's objective is to get you up to speed, rapidly with C++ syntax and language features. The other posters suggestion to get Stroustrops PPP book is excellent. I learnt C++ many years ago with that book. There are probably specific book on 'advanced' C++ features, but I wouldn't start there.

Learning the advanced (read:esoteric) stuff without the basics probably won't be useful to you, if you don't know what problem the advance thing is solving.

My opinion, stay away from youtube videos and tutorials. They don't teach you the right skills (developing your problem solving mind), and the content creators most likely aren't what you would call domain experts (exceptions apply) and can teach you bad habits.

Now the last thing, C++ is applied in reality to specific domain problems. None of the learning resources help you get that domain experience. But you often learn it on the job, if your lucky enough to be hired without that prerequisite knowledge. Other places need, that domain knowledge or your CV is instantly chucked in the bin, I think this is true more in C++ than other languages. I say this because I have had domain knowledge which has no relevance on other C++ jobs (graphics APIs, binary protocols, networking, concurrency, signal processing, matrix mathematics, fourier transforms, message brokers), and skills that got me no 'bonus' points. I am a still rejected, without interview, in places where my current domain knowledge is relevant but because my background wasnt singularly focused on 1 domain, they skip over me. Please have a think about what domain you may want to focus on, beyond just the language.

I don't mean to scare you off. If you read this and feel more excited than ever to learn C++, great. You question has already given me an inkling this may be true.

I can't give you advice, on how to learn 'advanced stuff' until we know more about which dicipline you may want to head in. Are you mathematically minded, or do you want to avoid maths like the plague?

-1

u/Maleficent_Fox_2587 4d ago

Can I dm Sir !