PPPPIIIIIIIIIIIIIIIIIIIIIIIIIIILLLLLZZZZ here!
they always seem to think I can hack crap like Myspace and always ask me. |
I can't stand that. I get asked to crack windows live messenger accounts. Usually it results in bared teeth and restrained fists...
My own mother questioned my aspiration to be a computer scientist because I couldn't show her "how much memory is left on the computer." In reality, I could (she actually meant persistent storage, i.e. hard disk space, I gather), but she was asking me to explain how to do it, which is asking too much.
On topic:
I would definitely recommend learning several programming languages (but not at the same time).
I think it would be good to learn
Python or Perl [1], Pascal [2], C and C++ [3], Haskell [4], Assembly
[1] Python has a clearer syntax, but I think Perl is a bit more "C-like." It also has great string manipulation stuff built-in (regular expressions ftw). Maybe you should learn both...
[2] Pascal is a good compiled language with clean syntax. It will get you used to compiling as apposed to using an interpreter; because C and C++ are a little more difficult. Delphi is a good variant of Pascal.
[3] Learning one will make it easy to learn the other; some people recommend learning C++ first. I would say you should learn C first, because C++ is a superset of C (it was originally called "C with Classes" until it was standardized)
[4] Or any other functional language. They're supposed to really affect the way you think algorithmically
[5] Alot of people don't recommend assembly, because [on the x86] it's a little messy. But if you choose a good dialect (Intel) and assembler (nasm) and stick with them, it's really good. I think you should start off writing 16-bit DOS programs and boot sector programs (put them on a floppy disk and run them in e.g. qemu). The reason I recommend assembly is because it teaches you about how the machine really works (and what it's doing at the low-level). It also taught me about little optimizations (like using xor ax, ax instead of mov ax, 0 because it's faster, and how much strings affect disk space (I ended up using one string containing the entire ASCII charset, and using a loop to print from it because it was smaller) because boot sector programs have to be 512 bytes long).