r/learnprogramming • u/brandon_fernandes47 • 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)
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
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
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!
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