3 ms·
Hi, I'm interested in learning low level programming too! I've been taking classes, reading tutorials about programming, and starting projects on my own. It rea
by eshyong 13y ago
Hi, I'm interested in learning low level programming too! I've been taking classes, reading tutorials about programming, and starting projects on my own. It really depends on what kind of projects you want to work on. Some of the major types of projects include compilers, OS-level projects (drivers, kernel, etc.), networking (server/client), and graphics. You'll probably want to learn C and/or Assembly, probably x86 but I've found ARM to be fun. (and Raspberry Pi is built on it!)
- Compilers: I'm taking the Stanford course on Coursera right now. It just started two weeks ago so you can still catch up. Here's the link: https://class.coursera.org/compilers-004 https://class.coursera.org/compilers-004
Here's some literature on compilers/interpreters/JIT (Just In Time compilation): http://www.stephendiehl.com/llvm/ http://www.stephendiehl.com/llvm/ (I've heard good things about LLVM!)
http://blog.reverberate.org/2012/12/hello-jit-world-joy-of-simple-jits.html http://blog.reverberate.org/2012/12/hello-jit-world-joy-of-s... (Just saw this today)
Tutorial on building a Lisp in C, from two days ago: http://www.buildyourownlisp.com/ http://www.buildyourownlisp.com/
- Operating Systems: Definitely check out MIT's open courseware on xv6! It's an implementation of Unix version 6. The course includes a git project that you can clone and play with yourself, as well as some labs. Here's the link: http://pdos.csail.mit.edu/6.828/2012/index.html http://pdos.csail.mit.edu/6.828/2012/index.html
OSDev wiki had some resources too: wiki.osdev.org
If you have a Raspberry Pi or are patient enough to try to emulate the hardware, here are some tutorials on ARM assembly for RasPi: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/
- Networking: Here, you'll probably want to look for tutorials on socket programming and the TCP/UDP protocol. People recommend Beej's tutorials, which are quite comprehensive and a good source of information, but I found some of his server code confusing and convoluted (deeply nested loops and if statements).
Here's a link to his site: http://beej.us/guide/bgnet/ http://beej.us/guide/bgnet/
Here's a easy to learn server/client tutorial: http://www.thegeekstuff.com/2011/12/c-socket-programming/ http://www.thegeekstuff.com/2011/12/c-socket-programming/
- Graphics: I have the least amount of exposure to this, but a good resource is at the website open.gl. Basically you'll want to learn about shader languages and how the graphics pipeline works.
Hope this helps!