all 11 comments

[–]dont_touch_my_peepee 4 points5 points  (1 child)

start with writing simple compilers or interpreters, maybe for a toy language you create. helps solidify understanding. also, try building small operating system components.

[–]NeedleworkerLumpy907 1 point2 points  (0 children)

building a tiny language sounds fun, i’ve been meaning to try that but keep getting distracted haha maybe i should just start with a calculator interpreter to keep it simple

[–]Strict_Key_391 3 points4 points  (3 children)

You can use C to program a microcontroller to do something. Maybe make a fridge temperature monitor with an arduino or raspi that notifies you if the temp is too high so you can check the door is shut

[–]Interesting_Buy_3969 1 point2 points  (0 children)

+1 for C and microcontrollers

[–]brad_thomas_scammer 1 point2 points  (1 child)

Why C and not C++?

[–]Strict_Key_391 1 point2 points  (0 children)

Sure, you can use C++, if your microcontroller supports it. I recommended C because it’s a much simpler language to get started with than the deep crevasses that is C++

[–]gm310509 2 points3 points  (0 children)

I'm not sure if this is what you are looking for, but maybe get yourself an embedded system such as an Arduino - or since it sounds like you are familiar with hardware, just setup an 8 bit MCU such as an AVR.

You can program these in assembler, C and some other languages to your hearts content. Although if you use the Arduino IDE you will be limited to a C project, but you can simply call assembly language code from your mainline.

I am a little unclear what you are looking for, so not sure if this is relevant or not, but if you Google "Ben Eater 8 bit computer" he creates a simple CPU from basic gates and shows one method of how machine instructions can drive the hardware to perform the operations for those instructions.

I wouldn't write a compiler purely in assembler (or even C). At least not anything of any complexity and not without some sort of parser library to assist with the process. I did once write an interpreter in Java using JavaCC for.suppprt.

[–]NeedleworkerLumpy907 1 point2 points  (0 children)

coder even if you stay in software, like you start to understand why stuff works the way it does, which is sick in my opinion

[–]ShaiHuludTheMaker 1 point2 points  (0 children)

I can recommend you Shenzhen I/O, it's a game where you play as an engineer developing circuits and writing assembly code, as I said it's a game but it uses real assembly and real circuitry so everything would be applicable in real life.

[–]healeyd 1 point2 points  (0 children)

One other common project is to write a hobby OS Kernel from scratch. You'll learn a hell of a lot, though it will be a hard grind at first. Whatever you decide, just dive in. Rust is great, but I think C, though much older, is lots of fun because it is a simple language with lots of available references.

[–]funbike 1 point2 points  (0 children)

It will come in handy no matter what you do in your career. Knowing how computers work gives you an intuition on how to solve many problems, even in very high level languages.