I rather write garage code than using slop

you are viewing a single comment's thread
view the rest of the comments
[–] 5 points 14 hours ago (23 children)

As C++ is a superset of C, I reckon you should start with C, as many concepts of C++ are translatable to C, which is what the first C++ compiler did.

I still use fprintf instead of cout because it feels more β€œproper”

  • source
  • hideshow 23 child comments
  • [–] 11 points 12 hours ago (1 child)

    I reckon you should start with C

    I tried that 20 years ago and it was a massive waste of time. Spend a few days to understand pointers, then embrace modern C++ with the STL, it's safer and more productive.

    Also cout is dead, you can use print, println, and format now.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 6 points 10 hours ago (7 children)

    I very strongly disagree. It's practically a superset for backwards compatibility reasons but modern C++ coding patterns are vastly different to C. Modern English is kind of a superset of Shakespearean English, but you don't need to know it for most daily tasks. C++ is much more elegant and safe when avoiding C patterns. C has its place and I use it sometimes, but the two should absolutely not get confused because of the name and compatibility.

  • source
  • parent
  • hideshow 7 child comments
  • [–] 1 point 8 hours ago (6 children)

    C++ is a lot of things but elegant and safe are not words that come to mind. C++ has far more issues than regular C.

    Best option would be to use something with memory safety

  • source
  • parent
  • hideshow 6 child comments
  • [–] 2 points 7 hours ago (3 children)

    Well, I mentioned safe in the comparative degree. Modern C++ could be actually safe if you restrict yourself to a subset of it, that's sometimes not really practical. I do think that things are improving and with C++26 it's becoming way easier to write perfectly (memory-)safe code that's also (subjectively) elegant.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 6 hours ago (1 child)

    The C++ spec is absolutely massive. Nothing says elegant like a million different ways to do something.

    Python works pretty well and doesn't have to much overhead. Sure it doesn't have the same performance as C/C++ or Rust but most of the time you don't need millisecond level code.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 6 hours ago (1 child)

    Modern C++ changed a lot!

    You are supposed to use shared_ptr (automatic reference counted pointer) and unique_ptr(statically checked unique pointer) and not create raw C-style pointers anymore. It still has a lot of weird niche cases that need to be avoided, but memory management is definitely much easier, so in many ways it's safer at runtime than C, while being still much more obscure than C.

    I still agree with you that a more modern language would be even better, especially for learning!

  • source
  • parent
  • hideshow 1 child comment
  • [–] [S] 14 points 14 hours ago (9 children)

    That's what I tried to get started with, but I wanna make programs with qt6 and the qt creator doesn't support it so c++ it is

  • source
  • parent
  • hideshow 9 child comments
  • [–] 1 point 14 hours ago (7 children)

    a lot of languages support qt6 though

  • source
  • parent
  • hideshow 7 child comments
  • [–] [S] 8 points 13 hours ago (6 children)

    but from what I understand from form posts is it's harder to make qt6 programs with c than c++, because I have to make warper in my qt6 program with c++ for that c code to work? Idk I'm just getting started

  • source
  • parent
  • hideshow 6 child comments
  • [–] 7 points 13 hours ago (1 child)

    Honestly C and C++ code are the same. You can use C++ function calls and objects when needed and have everything else pure C. Don’t think of them as two completely different languages, C++ is more of an β€œobject oriented framework for c” than its own language. That is a gross oversimplification but you get what I mean.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 10 hours ago*

    That really hurts to read. Have you programmed with any spec newer than c++11? Best-practices have changed a lot. It isn't "c with classes" anymore. Yes, most of the ancient code will work; but there are better, more efficient, and more ergonomic alternatives now.

  • source
  • parent
  • [–] 1 point 10 hours ago* (last edited 10 hours ago)

    The problem with QT is that everything becomes a "QT app" when you start writing with QT. You'll end up using more of their types than the standard library, and getting a clean front-end / back-end separation is more difficult.

    Anyways, C++ isn't just a superset of C; they're surprisingly different, and the best modern approaches are extremely so. That advice may have been true before 2014 and a bit until 2017, but it certainly isn't now.

  • source
  • parent
  • [–] 0 points 12 hours ago

    Props to you for learning C++, its a neat powerful language, although it has grown quite overcomplicated through the years.

    Though if you want something a bit easier, you can also use Python for Qt development through the PySide6 library. It is one of the officially supported Qt languages alongside C++ and JS. I've personally used it for a few programs and it works wonderfully, it is one of my favorite ways to make GUIs for myself, it just worksβ„’

  • source
  • parent
  • [–] 2 points 11 hours ago

    As C++ is a superset of C

    This is not true. Both ISO C++ and ISO C have have features that are not available in the other language. Therefore, there is no subset or superset relationship.

    I would tweak this recommendation. If you want to start with C, consider writing C-style code into .cc or .cpp files, and compile as C++. You will therefore be learning "C++ with functions only" as opposed to "C with classes."

  • source
  • parent
  • [–] 5 points 14 hours ago (1 child)

    At uni I was taught C++ first (all the basics, logic 101, control flow, pointers, etc). Then I was taught data structures with C the next period (linked lists, stacks, queues, a tiny bit of trees...). Then I found out I sucked at maths and switched to graphic design!

    All in all OP is in for a hell of a ride - yeah you could just start with C but they could start with C++ too so just to get the feel of it.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 13 hours ago

    True, it was just a recommendation because for me it made more sense this way around. Like objects are just structs with function pointers and some compiler magic to ensure private and publicness, polymorphism is just unions etc.

  • source
  • parent