Now, I'm serious, who really wants to learn how to program? And why should you? Often times on these forums (and I haven't been here too long to take notice) many users seem to be getting bored with all of the hassle that the challenges provide. Many of you want to become a hacker very quickly, or just automatically know what to do to hack x system or y application. With a good 16 years of programming experience behind me, including experience in everything from machine language to BASIC, and from heavily typed high-level languages like Java, C, and C# to scripting languages like Python and Ruby, even I don't have all of the programming practice it takes to be able to hacking something up or down. In my mind programming and understanding how computers do what they do are at the root of hacking. This idea is simply based on my observations and experience.
Now some of you ask, how can I learn programming the fastest? The quickest way to learn how to program is by doing it. I'll share an example from my own life, though granted it is a relatively dumb part of my life. Back about a year ago, I decided that it was definitely time to stop pretending I didn't want to learn Microsoft's proprietary C# programming language, and time to start learning it (yes, I have a little grudge against MS). So I researched a few books on C#, found a couple at my local Barnes and Noble Booksellers, and decided upon C# For Dummies
(for anyone wondering this For Dummies book is relatively good, though not great). Once I got it home, I began reading it from cover to cover. Within a couple of days I realized that most of the knowledge contained in the first half of the book I already knew from my own experience. So I began to skim the remaining chapters, and noticed that they weren't much help either. So I, having much experience in other programming languages, decided to just go at it myself. I think that the most difficult part about that was deciding upon a project that would satisfy my appetite to learn C#. This was by far not my first C# program to date - that was a simple calendar/clock widget for the desktop that I wrote. Soon, however, I luckily received a task to write a piece of automation to load-test our website at work. That suited me well. I didn't know anything yet about XML, Configuration, Linq, and a myriad of other technologies introduced by Microsoft in their .NET framework as of late. Now, though not proficient, I can easily debug, write, and fix programs written by other people in C#.
The moral of that story is that practice does bring one closer to perfection and books can't replace what practice gives to a becoming hacker. I have written dozens of badly coded apps in C# and a couple of well-coded ones, but I'm much better at coding in C# now than I was about a year ago. This brings me to my point. I have often looked to other programmers around me to gauge my abilities and to learn where I could improve. Several years ago I came across this
websites. Both describe the hacker as somebody who thrives for knowledge, especially in computer technology. Again, programming is at the root of hacking, and I don't think you can really be a hacker without knowing how to program. What's more is that you can fairly easily be taken by somebody if you aren't intimate with computer hardware and software technologies. I believe we are blessed to have such a conducive atmosphere now in our world to learning about programming. Programming languages are free to download, install, and use however you want.
I know there are links all over these forums for this kind of stuff, but I think they've been somewhat lost. If you're running Linux you can use you package manager to locate these programming languages, but if you're running Windows, I think that the task is much more difficult. Here are a few of my favorite programming tools, available for free, some open source and others commercial, but free nonetheless.ftp://gd.tuwien.ac.at/gnu/mingw/
MinGW - Minimalist GNU Tools for Windowshttp://www.microsoft.com/express/
Microsoft Visual Studio Express Editionshttp://www.python.org/download/
Python from Python.orghttp://www.activestate.com/Products/activeperl/index.mhtml
Perl from ActiveState (also has Mac versions)http://www.php.net/downloads.php
PHP from PHP.orghttp://dev.mysql.com/downloads/mysql/5.0.html#downloads
MySQL Community Serverhttp://www.postgresql.org/download/
PostgreSQL - The World's Most Advanced Open Source Databasehttp://java.sun.com/javase/downloads/?intcmp=1281
Java JDK from Sun Microsystemshttp://www.gnu.org/software/mit-scheme/index.html#Download
MIT Scheme Programming Language - based on LISPhttp://www.squeak.org/Download/
Squeak - Open Source Smalltalk Vitual Machine Environmenthttp://www.ruby-lang.org/en/downloads/
Ruby Scripting Languagehttp://sourceforge.net/project/showfiles.php?group_id=6208
NASM - The Netwide Assemblerhttp://httpd.apache.org/download.cgi
Apache Web Server