Whenever it comes to application hacking, one should be thorough with atleast one programming language. There were times when hackers and nerds were fully thorough with C programming language and would prank around. But it was a mid-level language so who ever wants to learn hacking and write exploits, they get bored.
Times changed, from large computers to small computers (raspberry pi), from low level language to high level language. Now the most developing high level language is Python 3.4.
I am going to consider only C and C++ in this post as the computer architectures were designed using C language. Linux was totally designed using C. So learning C is also a bit important.
This book called "The Shellcoder's Handbook" gives a very detailed description of many vulnerabilities which could earn you a bug bounty prize money (if lucky). It describes about the architecture and deep software, in which you would sometimes deal with the addresses of the variables which you enter in an application. For me this book was pretty good, and am still enjoying reading the book.
I put the link down, please click to download :