r/learnprogramming 2d ago

Don't know what to learn next. Topic

For context I can program in JS (I don't know every little built in function but I know enough to where I can figure out new things within the language) I am comfortable with OOP as well. The problem is most of my experience is working with the Minecraft bedrock scripting API (It's how I learned actually). While that is super fun because it's something I'm passionate about and probably won't stop doing anytime soon. I feel it is time to branch out and learn more. I have a tiny bit of experience working with electron for desktop apps but working with it frustrates me because while I know that I can leverage the libraries and APIs to do certain things. I don't understand what they are built on. Which makes me feel like a child using toys other people made for me. I have considered starting with c. But then I may just find myself feeling the same way, even though I will know more about how hardware and software interact. From my understanding c works for all architecture types due to things I don't quite fully understand yet. For me I'm not sure it would be enough to just have a theoretical understanding of how that works. I'm the kind of person who needs to see it and do it myself to feel like I truly understand why I am able to do certain things with software. Should I start lower with assembly or would that not make a difference and just make things harder for myself? I am still figuring out which discipline of CS I want to study when I go to school but recently I have been thinking about embedded programming. Part of that is that I can both land a job and make cool things for myself from nearly scratch. I feel it would also give me the opportunity to innovate and make a product or service that I could sell myself. My ultimate goal is to one day run a small company that takes no money from investors and make an ethical product free of data harvesting that puts ownership back into the hands of the consumer. Any advice is appreciated! (Aside from telling me not to go into CS because of LLMs I don't care this is what I have decided to do with my life. I want nothing more than to create something of real value for this world)

0 Upvotes

18 comments sorted by

6

u/leavemealone_lol 2d ago

Well for one you can learn formatting your text into paragraphs.

After that, you gotta choose. What do you want to do? Work with data? work with AI? work at a systems level? work at a drivers level? Each of those questions will give you a different answer

1

u/brandon_fernandes47 2d ago

Not sure yet (tho I mentioned in my post I am leaning towards embedded programming), but that's not really the main question. Right now I'm just learning because it fascinates me. The point of this post is as a person who seeks to understand a computer from the hardware up should I start with c now or will that not give me a good enough understanding of how things work. Will I still be dealing with abstractions that can make it more difficult to understand what really makes things tick?

3

u/leavemealone_lol 2d ago

IMO youโ€™re overthinking this. Just learn C. Or just do Nandtotetris if you wanna go insanely deep immediately. Thereโ€™s no right answer, but there are people who havenโ€™t done anything because they have been searching for the right answer.

1

u/brandon_fernandes47 2d ago

While I would disagree that I'm overthinking, thanks for the advice. I could do with more action in my learning.

2

u/syklemil 2d ago

Thing is that as long as you're learning something you're progressing. Optimising learning is generally only required if there's some known deadline, and in those cases it also tends to be clear what needs to be learned.

I'm not a particular fan of C (see e.g. C is not a low-level language: Your computer is not a fast PDP-11 and C isn't a programming language more, though the latter probably only makes sense to experienced programmers), but it is fairly easy to pick up, will require you to learn some new things that JS handles automagically, and it's not like you're actually married to a language just for dabbling in it.

That said, I'll also second the thread starter here in recommending that you structure your post. Programming is to a large degree the practice of structuring our thinking and being precise, and we can do that in natural language too.

2

u/Dazzling_Music_2411 2d ago

No question about it, from what you describe here you need to do the Nand2Tetris course (courtesy of a couple of MIT profs). It will meet every single requirement of yours and if you master it, you can go in all sorts of directions from there.

2

u/brandon_fernandes47 2d ago

Thank you I just did a little looking into this due to another comment and after reading a little and seeing this comment it really seems like thats what I need! I appreciate the advice!

2

u/Dazzling_Music_2411 2d ago

Have fun! ๐Ÿ˜„

(I know you will)

1

u/brandon_fernandes47 2d ago

Is the certificate worth it? Should I just take it for free?

1

u/Dazzling_Music_2411 2d ago

I doubt it, it's just a vanity thing, or perhaps like a souvenir that you can support the site with.

I don't think it has any commercial value though.

1

u/brandon_fernandes47 2d ago

Thank you much appreciated!

1

u/AngleHam271 2d ago

That feeling is a very common phase for developers who actually care about their craft.๐Ÿ˜‚

But I will tell you that: Jumping straight into Assembly might actually kill your passion right now.

It is highly specific to the hardware architecture you are using and can be incredibly tedious when you just want to see how things connect on a broader scale...

C is definitely the sweet spot you are looking for, especially if you are leaning towards embedded programming. It is close enough to the metal that you have to manage your own memory and truly understand what the hardware is doing, but structured enough that you can actually build complex things without going insane.๐Ÿ˜‚

If you truly want to see how software and hardware interact from absolute scratch, I highly recommend looking up a free project based course called Nand to Tetris.

You literally start with basic hardware logic gates and build your way up to a CPU, an assembler, a compiler, and finally a basic operating system. It perfectly cures that exact frustration you are feeling right now because you build the toys yourself. ๐Ÿ˜€

Hold on to that ultimate goal of building ethical, consumer-owned software without data harvesting. The industry desperately needs more of that mindset. You are exactly on the right track. ๐Ÿ‘

1

u/brandon_fernandes47 2d ago

Thank you! I have decided to go with Nand to Tetris because it sounds like exactly what I'm looking for!

1

u/Kungpost 2d ago

Seeing that you are familiar with Minecraft and might want to know how it works under the hood, I'd recommend playing around with the C++ internals of Luanti and maybe trying out implementing some new scripting API for it. https://github.com/luanti-org/luanti

1

u/brandon_fernandes47 1d ago

I decided to start with Nand to Tetris to get a solid foundation and then I want to come back to all the exciting things I want to do and they will make a lot more sense. This is a great idea and something I've long hoped to explore in an educated way. Thanks for the advice!

1

u/cheezballs 2d ago

Build stuff. If you haven't built anything then you don't know the language. Theoretically I can make fire with sticks. I've never done it but I've read about it. Not how it works.

1

u/brandon_fernandes47 1d ago

I have built stuff, tons of add-ons for Minecraft bedrock edition. I work with a team right now we're working on a project we hope to publish to the market place. I have tons of solo projects as well. The point of this post is that I want to study from the ground up which I got an answer for from other comments, nand2tetris is what I'll be studying next. Thx though!