It's even worse than that when you know that nvidia and AMD do not give manuals so that we can make programs that can exploits their graphic cards.
Their is a free/libre driver for amd but you need a blob (non free component) in the kernel to make it work.
For Nvidia the nouveau team has almost completely reverse engineer their gpu (only power saving remains to be done)
It's working, but the team is pissed because Nvidia are enormous douches, but it's the only driver who is blob free.
see this:
phoronix.com/scan.php?page=news_item&px=Nouveau-XDC2016-NVIDIA
Funny to say that ^^
because programming is not about the language that you will use it's about process's, just like mechanic.
If you are interested in programming then you can:
Go with lisp/scheme:
Read the little schemer
ccs.neu.edu/home/matthias/BTLS/
Note: This the first book that I have ever read about programming and it is a gem and it is directed to people who have never learned anything about computer.
At first I didn’t understood what the fuck they were talking about but after a couple of readings I felt like I was retarded for not understanding it at the first reading, because it is very, but very simple.
This book converse with you and you need to come up with your own deductions, it is a very clever way of learning.
Watch the lecture of Harold Abelson and Gerald Jay Sussman:
youtube.com/watch?v=2Op3QLzMgSY&list=PLAA97f8v5JX5WRZ6DUBSsogXlG4biWinL
note:Video for the beginners at IBM in the 80's its pretty easy to understand, with a bit of research.
Read SCIP
mitpress.mit.edu/sicp/full-text/book/book.html
Note: the classic of all books in software programming much more advanced than the videos.
RMS about lisp:
gnu.org/gnu/rms-lisp.en.html
More Lisp/scheme:
gimp.org/tutorials/Basic_Scheme/
community.schemewiki.org/?emacs-tutorial
You can also read "Hackers: Heroes of the Computer Revolution" for historical reasons.
en.wikipedia.org/wiki/Hackers:_Heroes_of_the_Computer_Revolution
Also use emacs your life will be less harder after learning how to use it.