I rather write garage code than using slop

top 50 comments

sorted by: hot top controversial new old
[–] 4 points 33 minutes ago

I suggest you also spend some time learning about data structures and algorithms. That's one of the things that separate university trained computer scientists from many self-taught or college trained programmers. Spending some time learning about how the hardware works is also worthwhile. Just stick these on your todo list, they aren't necessary to understand to program, but the quality of what you make will improve if you understand these.

There's a lot of other ways you can increase your depth or breadth of knowledge, but IMO those are the two biggest.

And for software design in general, the biggest thing I'd emphasise is modularization. Try to break up your program into different pieces that fit together. Like for a game engine, you could have the renderer framework as one module, input handling as another, and game logic as a third. Then, if you want to make a different game, you just swap out the game logic module and you've got a different game using the same renderer and input modules. This is essentially what libraries are.

  • source
  • [–] 1 point 2 minutes ago

    Best of luck, my pro tip is that learning by doing is a lot faster. Text based tic tac toe is a great project to get the fundamentals down. Text tetris is next for code organisation, reusable functions, interfaces and whatnot. After that it's off to the races.

  • source
  • Wishing you the best of luck! My unsolicited advice after nearly 30 yrs of C/C++ and a couple Qt apps is that it’s not too soon to start studying the Qt docs. Understanding how Qt apps are architected is a separate learning exercise from the syntax of the coding language itself.

  • source
  • [–] 2 points 1 hour ago (1 child)

    Use C not C++

    Or better yet, use python

  • source
  • hideshow 1 child comment
  • [–] 1 point 1 hour ago

    The Cherno also has good videos on C++, although he assumes you have an understanding of the most common programming concepts.

  • source
  • [–] 11 points 4 hours ago

    Over 15 years of low level c and modern c++ programming for resource-constrained systems; tutored it too. Feel free to DM if you have questions or get confused about anything.

  • source
  • [–] 3 points 3 hours ago

    You restore my faiΓΎ in humanity. Good luck.

  • source
  • [–] 32 points 6 hours ago (2 children)

    Hell yeah πŸŽ‰πŸŽ‰

    in the current age of AI bros vibe coding everything, finding an actual human learning a programming language to fix a problem they have is like finding a deepslate emerald ore (iykyk)

    wishing you the best of luck :D

  • source
  • hideshow 2 child comments
  • [–] [S] 9 points 5 hours ago* (1 child)

    Thanks this is my progress so far, not much but I'm getting there 3083

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 53 minutes ago

    Nice!

    For me, slow progression is important to actually make the concepts "stick" in the brain, so do make sure to take your time in the journey, and not do the whole course in few days.

    I would heavily reccommend to experiment with the code yourself, see it crash and error out and really get the "why" it works (not just how to do it in that case). For example, you can pass 3 parameters to a function?

    Another great tip is to have a small project you are passionate about yourself: a card playing game (on the terminal, without graphics), an interesting math simulation, or a small program usable via terminal.

    C++ is hard. If it's too frustrating consider python for an easier introduction (there are no pointers there!), and you can still switch to c++ later. All mainstream programming languages work more or less the same, and the programming skills transfer very well between them!

  • source
  • parent
  • [–] 5 points 4 hours ago
    [–] 15 points 5 hours ago (3 children)

    Is this your first programming language? If so I strongly recommend Harvard's CS50 course. It's mostly in C but it's very well taught and you learn enough fundamentals that you can quickly transition to another language.

  • source
  • hideshow 3 child comments
  • [–] 7 points 3 hours ago (1 child)

    Yup. And it starts with C and gets to Python later, which I ΓΎought was an odd way to structure it. My utterly non-STEM-oriented wife took ΓΎe class because it was a prereq for Harvard's AI course, which she wanted to take. While she struggled a bit wiΓΎ programming in general, my proudest moment was when - a week into Python - she said: "This sucks. C was easier."

  • source
  • parent
  • hideshow 1 child comment
  • [–] 9 points 5 hours ago

    the good old "hello world" program. even with decades of experience you always come back to it to solve problems :)

  • source
  • [–] 33 points 7 hours ago (4 children)

    I know C++ is hated a lot, but I've grown quite fond of the wide range of options it gives you as a programmer. Have fun!

  • source
  • hideshow 4 child comments
  • [–] 10 points 3 hours ago (3 children)

    I would say the main downside of C++ is that it carries around a lot of baggage from the last 40 years. Even if you decide to use a modern standard in your own code, you'll have to deal with libraries that can't use many of the new features because they need to stay backwards compatible with old code bases. Also, a lot of tutorials and examples still look like they are from pre-C++11 times.

    I recently started a project that would have been a great fit for C++ (simple 2D game engine + editor) but the way Qt has to reinvent half the standard library, GTK basically asks you to write plain C and gtkmm had some other issues that I can't even remember, all the fun of working on the project was gone. I decided to switch to C# (which I use for work anyway) and Avalonia and so far it's going well. Not being able to use C++ still nags at me anyway. I would have loved to get more comfortable with modern C++ but I just couldn't keep up the motivation.

    I'll try again for the next project.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 2 points 2 hours ago*

    it carries around a lot of baggage from the last 40 years.

    Cppfront2 is an interesting experiment that looks at an approach to solve that problem without a hard break. While my C nostalgia is offended by the syntax, I'm quite fond of it. Bornje's pet topic of 'profiles' is another but hasn't landed much yet.

  • source
  • parent
  • Agree on that. It cuts both ways. On the one hand, it gives you access to a fuckton of libraries so that you can chose the one that best fits your use case. On the other hand a lot of those libraries don't use modern C++. And I haven't even started on things like the win32 API, which is essentially a C library masquerading as a C++ API.

    That's essentially the thing with C++: when you're chosing which library to use, the level of C++ should be a factor in the decision making process, along with things like performance and functionality. And if I do end up using a library that was written for an old C++ version, I create wrappers for the things I use the most to bring it to the level of C++ I'm working with. Sometimes it's also interesting purely from a learning perspective. That's what I did for a lot of the win32 APIs I worked with.

    You mentioned tutorials - I learned C++ from learncpp.com, and I couldn't recommend it more. It does a really good job at going deep into the technical stuff, but also understanding and using the most modern features of the language, as well as best practices.

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

    carries around a lot of baggage from the last 40 years

    cries in C stdlib

    I hate null terminated strings. Though the rest of just C without the "pluses" is nice. Nobody really kept adding new things unlike in C++, it's just mostly the good old stuff.

    Anyways

    GTK basically asks you to write plain C

    From my perspective, glib is all possible languages at once implemented as C macros. What you are actually writing is technically valid C, but I would consider it "glib language" lmao.

  • source
  • parent
  • [–] 43 points 8 hours ago* (1 child)

    Hells yeah man. Wish you the best of luck on your journey. Welcome to the madhouse

  • source
  • hideshow 1 child comment
  • [–] 5 points 6 hours ago (1 child)
  • [–] 6 points 8 hours ago (20 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 20 child comments
  • [–] 5 points 4 hours ago (5 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 5 child comments
  • [–] 1 point 1 hour ago (4 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 4 child comments
  • [–] 2 points 53 minutes ago (1 child)

    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 1 child comment
  • [–] 1 point 29 minutes ago

    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
  • [–] 1 point 39 minutes 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
  • [–] 10 points 5 hours ago

    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
  • [–] [S] 14 points 7 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 7 hours ago (7 children)

    a lot of languages support qt6 though

  • source
  • parent
  • hideshow 7 child comments
  • [–] [S] 8 points 7 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
  • [–] 1 point 3 hours ago* (last edited 3 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
  • [–] 7 points 7 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 3 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
  • load more comments (3 replies)
  • [–] 0 points 6 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
  • [–] 1 point 5 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 7 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 7 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
  • [–] 3 points 7 hours ago (4 children)

    what's the limitations you don't like btw?

  • source
  • hideshow 4 child comments
  • [–] [S] 5 points 7 hours ago* (3 children)

    I want gui with different tabs, dynamic images scaling with different window size, right click context menu to open a file or text in another program, auto close when I unfocus the window (for applet like networkmanager bluetooth, mpris), different layout depending on what tab I'm on, interactive element within the program.

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

    that was not what i expected at all when your example was rofi. sounds more like the kde app launcher.

  • source
  • parent
  • hideshow 2 child comments
  • load more comments
    view more: next β€Ί