So i have no real programming knowledge under my belt. I understand the basic constructs but have not had any real experience writing code. I have played around with C and VisualBasic a little but am dead set on starting to learn a language and start using it. What is the group consensus?

Should it be C, Perl, Ruby, VB or something else?

What would you recommend and why?

What exercises would you recommend in order to learn and fine tune programming ability?

Are there any websites that you would recommend that offer good tutorials or challenges? (and yes I know how to use google)

Thanks for any suggestions..

Also, assembly language is of great interest to me but not sure where to start on that one. Suggestions on that are appreciated as well.

This is how I would classify each area within InfoSec associated with languages:- Web Application Security: PHP or ASP(x), additionally: HTML, CSS, JavaScript. (And other web technologies perhaps.)- Buffer Overflows: Python is good for starters, if you don't like this, try Ruby or Perl.- Code Review of Programs: C, C++, or perhaps even C# depending on the programs you're going to review. I'd suggest C and then C++, but that is just my humble opinion.- Linux Automation: Bash (generally good for various tasks during pentesting.)- Shellcoding: Assembly (IA32 for starters.) Check http://www.projectshellcode.com/

For most web application languages: w3schoolsPython: There's so many resources and books about this, ask in IRC

Thanks, very concise info. I know some HTML and am starting to learn JavaScript. I have an affinity to C just because it seems to be the birthplace of modern languages. I suppose that I have my work cut out for me now. I hadn't heard of the projectshellcode.com site. Definitely looking forward to checking that out. Python is a language that I have not yet researched but am looking forward to learning.

At the end of it, with perhaps a little research of your own, you should be able to play and understand assembly at the basic level :) This paper also has some information about the use of assembly, but it is not directly about it: http://intern0t.net/papers/BPAV - InterN0T.pdf

Last edited by MaXe on Mon May 23, 2011 10:59 am, edited 1 time in total.

I've done several programming classes in college, but really don't write much code, so I usually have to relearn it all every time. (I remember basic concepts and only re-learn as much as I need to fix what ever itch I have to scratch).

That said. I'm Really enjoying Hello World. It's a book on python. It's really written for kids or other beginners, but I'm finding it a nice review. At least of programming concepts.

It has exercises at the end of the chapter to help refocus the learning.

I also like Learning Perl and Unix Shell Programming for the same reason.

Hit up the EH Amazon store (link in the side bar), Hello World is in the list there.

Thanks chrisj. Just ordered the book. Not to proud to realize that you've got to start somewhere....even if its at a kids level. Looking forward to reading it. Hope it doesnt disappoint. Also ordered "Introduction to 80x86 Assembly Language and Computer Architecture" to help me with my quest to learn assembly.

Python. There is going to be some good video tutorials coming soon on securitytube and on most of the challenges there, you needed to know python. It's also what scapy (a packet builder) was written with.

Other things you should at least be familiar with are bash scripting, html/php and sql commands.

WCNA,I have been doing a little bit of studying on SQL. It was not as hard as I had originally thought. I am now getting more interested in database structures. HTML at its core has also proven to be fairly straight forward. I have been meaning to learn some more PHP but as of yet have not had much use for it. I am about to start learning some simple BASH scripting for the LINUX + cert which I plan on taking in about 3 weeks. I will have to check out the videos that you are referring to. I know nothing about Python but am eager to learn.

One of my biggest concerns is making sure that I understand the core concepts of programming. It is my understanding that most programming languages are very similar if you do not take in to account syntax. I want to build my knowledge from the ground up so to speak. I am not a fan of "standing on the shoulders of giants".