I wanted to get into systems programming for linux and wanted to know how to approach that and where to begin. I come from a web development background (Python, PHP) but I also know some C and C++.
Essentially, I would like to know:
- Which language(s) to learn and pursue (I think mainly C and C++)?
- How/Where to learn those languages specific to Systems Programming? Books, websites, blogs, tutorials etc.
- Any other good places where I can start this from basics?
- Any good libraries to begin with?
- What environment setup (or approx.) do I need? Assuming linux has to be there but I have a linux box which I rarely log into using GUI (always use SSH). Is GUI a lot more helpful or VI editor is enough? (Please let me know if this part of the question should go to serverfault.com)
PS: Just to clarify, by systems programming I mean things like writing device drivers, System tools, write native applications which are not present on Linux platform but are on others, play with linux kernel etc.
If you are playing with the kernel, you must use C. There are several books, like Essential Linux Device Drivers, which give you the basics of structures, where to run your code, etc.
In general, many servers are written in C, and sometimes C++. Popular libraries include Glib, libevent, boost (for C++).
You can do everything from the command line in your editor of choice – there isn’t a clear win here, pick what you like.