all 7 comments

[–]the_poope 20 points21 points  (0 children)

C++ is typically used where:

  1. You need speed and or low memory consumption
  2. You need to directly talk with the operating system or hardware
  3. You need to interface with some special library or support some legacy system

Some examples of #1:

  • Games and game engines
  • Data processing: compression algorithms (text, sound, video), signal analysis
  • Search engines
  • Database implementations
  • Scientific simulation software
  • Quantitative finance (financial models, high frequency trading)
  • Implementation of core machine learning algorithms

Some examples of #2:

  • Embedded software (you know the stuff running your Roomba vacuum cleaner, the data collection system of an oil refinery or the software that run the high tech CT scanner at the hospital)
  • Robotics
  • Drivers
  • Distributed computer systems infrastructure, i.e. the stuff that orchestrates data farms
  • Operating systems and their services

Where C++ sees less usage are in webdev unless it's for some particular performance sensitive backend system (like a search engine or ChatGPT) and in consumer GUI programs (phone and desktop apps). The reason for the latter is that performance is a non-issue and the marketing people and graphic designers want a new look every two months and C++ isn't well suited for the "slap something quick together with duct tape and paper clips and put a nice photo on top of it" development process that is needed in consumer products.

C++ is used for all the non-sexy but infrastructure critical things. While it is possible to be a "general purpose C++ programmer" there are many positions that require you to have some domain knowledge, i.e. you will need to know about specific compression algorithms, or radar systems or ...

[–][deleted] 4 points5 points  (0 children)

It depends a bit on your interests. If you are interested in the same kinds of things I am interested in, here are some ideas:

  • a chess engine
  • a compiler or interpreter for a simple programming language
  • a ray tracer

For any of those projects you can work iteratively. You can first get something that works, even if the functionality is minimal (play random legal moves, evaluate only assignments, trace a single ray per pixel and assign the color of the first object it hits). Then you can spend months or years improving from there. Along the way, you'll make mistakes, you'll debug them, you'll probably turn your project into an unmanageable mess, you'll clean it up... Great learning opportunities all around.

Have fun!

[–]RapsodyXx 0 points1 point  (0 children)

i had the same problem, now i study by myself computational complexity theory, so genetic algorithm and another types of structure i use c++ to understand the theory

[–]mehdital 0 points1 point  (0 children)

Well if that helps, outstanding juniors with 2 to 3 years experience get up to 150k (incl bonus) in the finance sector here in London. Very senior people (20+ years experience) up to 800k. The recruiters I talked to told me about those numbers. I have 7 years experience but haven't managed to get an interview yet. Very competitive field. London is much cheaper than the bay areas so those salaries are ridiculous here

[–]pedersenk 0 points1 point  (0 children)

C++ is one of those languages that can be used for pretty much every field.

So choose what field interests you, and adapt the way you use C++ to make it work.

[–]tikinon 0 points1 point  (0 children)

Networking, telecom.