Saying you want to learn how to hack is incredibly ambiguous and in the strictest sense of the word pretty difficult to achieve. A "hack" is essentially a clever solution to a programming problem or a solution to a problem that's outside the norm and requires extensive domain knowledge. Judging by the comments it seems the term has been diluted to pretty much be a synonym with "programming" or "coding."<p>If you want to learn how to code, the first question is what do you want to code? Do you want to make websites? Create PC games? Create mathematical algorithms? Use math to create images... the possibilities are endless. Learning Javascript would be useful if you want to create websites, obviously, but outside of that it's not a general enough language with enough (any, really) general applications to be a good place to start. It's essentially an odd combination of Object Orientation and Functional programming which is cool in that it introduces you partially to two separate kinds of languages simultaneously. It can also be confusing for the same reason.<p>If you want...<p>A multi-purpose language that will let you rapidly prototype programs and is both extremely readable, easy to understand, and has modules for just about everything: <i>Python</i><p>A language that forces you to learn about more fundamentals of programming and doesn't keep you from royally screwing up: <i>C</i><p>A language with extremely high-level features, infinite flexibility and power: <i>Lisp</i><p>A language that lets you create extremely stable applications built for concurrency: <i>Erlang</i><p>A strictly web-only language with a huge supported base in the online hosting business and about 1,000 frameworks: <i>PHP</i><p>The latest craze in web development: <i>Ruby</i> with obligatory framework <i>Rails</i><p>---------<p>I could go on and on and on... hopefully one of these descriptions scratches your itch. Keep in mind these are merely suggestions and there are many other languages that would fill any of the descriptions I gave.<p>EDIT: I am a firm believer that regardless of your end goals to really learn programming one must start at the beginning. Learn about computer architecture, how CPUs and memory work; learn the pain of programming Assembly and managing memory bit by bit even though you'll never do it again. Then move onto C; learn how even the most fundamental of abstractions made programming possible for lesser mortals. Keep moving forward and come to comprehend that features such as garbage collection, while taken for granted, are in reality really freaking awesome and will help you keep your hair longer.<p>Move up the ladder, rung by rung, until you have the confidence and knowledge to use a language that is highly abstracted and has all the "batteries included," like Python. At this point the language/interpreter/compiler will do most of the work for you but you'll have the experience necessary to understand, more or less, what's going on behind the scenes. From there, if you want to specialize, choose a language created for the domain that interests you; PHP, Erlang, Matlab, etc.<p>A brief 5/10/20 years later, you're a hacker. Nobody will give you a diploma, though.