It's interesting how much things have changed in the last decade. I wonder what next decade's "Rails" will be? Could it be possible to predict?
It's interesting how much things have changed in the last decade. I wonder what next decade's "Rails" will be? Could it be possible to predict?
I think that's your issue.
Just my guess.
http://www.newsweek.com/2017/04/21/quantum-computing-ibm-580...
Understanding floating point arithmetic is even more important than over/underflow of integers in dynamic languages such as Python (see e.g. https://www.python.org/dev/peps/pep-0237/).
A smart compiler should have caught (a + b) / 2 and fixed it to be correct, there's no way the overflow situation is what the programmer wanted.
On one hand, it is true that the tooling is possible. On the other hand, it remains an open problem.
https://pdos.csail.mit.edu/6.828/2016/xv6/book-rev9.pdf
https://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf
The labs are very informative: https://pdos.csail.mit.edu/6.828/2016/labs/lab3/
I also worked through the 6.824 Distributed Systems course, which is a lot of fun:
https://pdos.csail.mit.edu/6.824/
Lab 4 is fiendishly difficult, but you end up learning a lot.
Beyond all that, there's no substitute for just diving in and breaking stuff. Just go with whatever area you find the most fun. Maybe that's compiling and modifying the Linux kernel, or maybe it's tweaking a software rasterizer like https://github.com/blitzcode/rust-exp.
I got into systems programming mainly as a consequence of being a game developer -- when you write your own engines, you're forced to consider a hundred low-level details like memory layout, pipelining, threading, simulation, adding a scripting interface for your designers, cursing AMD when you run into GPU driver bugs, etc. There are a lifetime worth of interesting problems to solve in that area.
Edit: Did not mean to "mock" the OP, just merely trying to showing that you can apply that thought to almost anything in the programming world by replacing the technology/language names.
http://thecodist.com/article/the_programming_steamroller_wai... is a good essay on this.
EDIT: previous discussion: https://news.ycombinator.com/item?id=7204515
EDIT: I swear I did not read the top comment in the (newly) linked HN discussion of that article before I wrote my response. I agree completely.
But then, I wonder if it just seems that way to me because I'm a product of "now", which makes me more proficient in how we do things now, which makes it seem easier. It's possible neither is easier, that they are just different, and for everyone, the other seems harder than the one they already know.
I'm not trying to argue that this is the case: I could see it being either way and I sincerely wonder which way it is.