I want to start to learn programming but I have no prior programming skills and there are so many languages to learn I cant decide which one to choose.
Any advicee will be taken
Lots of work opportunities are for java programmers.
The good choice is C# if you like fast results.
My background is as a commercial C++ programmer. As a complete beginner, I'd go for C#. It siimplfies much of the C++ language needed to do similar things.
That said, once you make some headway with it, I'd aim to pick up some C++ skills. So many of the newer, sometimes 'vogue' languages are variants of C/C++ which means you can almost always pick them up later without too much grief.
Also, many samples of code found on the Net are only available in C/C++
Ian
(1) What are your goals? Languages have evolved to the point that they are incredibly mission-specific now. Low-level bit twiddly, or database? Two ends of the spectrum, no one language does all.
(2) Absolute novice? Can you enroll in a local college? They will start with a learning language like Pascal. Easy language but the pressures of a college-level programming course introduce the subtleties. You will learn more with an instructor standing over you… at least I have found that to be the case.
Considering #1, why exactly do you need to program in any event? University Computer Science departments are collapsing, have been for years, since few people need to program at that level anymore.
All that said, you can never go wrong with C/C++. If you intend to work in M$-centric environments then C# is the one. But… the saying is "It's just a language." Once you have the mindset down, learn the tricks as it were, all you need is that particular language's manual.
My $0.02.
I've always been a proponent of the classics.
Much like Latin, C is the root of all languages, a solid grounding in C will give you the ability to understand many different platforms, tools, and programming techniques.
Learn C, then everything else will fall into place, once you understand it you'll have a mental rosetta stone for almost all the other languages you could want to use.
I started in Java and worked from there. I would recommend using Java or C# as your starting language or even a cut down version such as JScript just to familiarise yourself with the concepts of programming.
When you start, it will always be a little confusing because not only are you learning a new programming language, but you're also learning the concepts of programming. But hang in there, because as fresponse_s says, once you've learnt how to program, you can program in any language, its just a matter of learning the syntax but the concepts are the same.
I would buy two really good programming books on the language you choose to learn. One that is aimed at beginners and the other a reference book with examples of how to use the language functions. I found the "Mastering" series or the "Complete Reference to" series to be well wriiten reference books. Follow the beginnger sections in these books and you'll be saying Hello to the World in no time.
Good Luck!
I've just finished an Open University course (M150) which was a Level 1 course on Computing. A great deal of the course was spent on learning Javascript. The course was quite expensive but is well supported with good resources.
As one of the previous posts pointed out they're just languages. I found it very useful to understand the principles of how loops, arrays etc work but also enough to know I don't want to spend my evenings looking for missing semi-colons and curly brackets!!
If you are interested the course starts again around September/October and finishes May.
Jerry W
I go with Perl. It's extremely useful and powerful, and very versatile.
Personally, speaking from a strictly computer science and network security point of view, I would advise against the use of overly-high-level languages, generally, and specifically for Digital Forensics-type programming.
Use of languages such as Java and C# (Javascript is, strictly speaking, not a programming language but a scripting one) may allow you to write code faster and more easily, true, but a higher level of abstraction means that the programmer has far less control of their program.
The less control a DF programmer has over their program the easier it is for errors to creep up when one least expects it, which then can be used by the opposition in a court to contest the program's use, for one thing. I can think of other issues as well, including finding the ex-0day exploit for your program on bugtraq.
I too agree with the "right tool for the right job" view that other posters have adopted, but only as long as
a. One knows the tools and the job
b. One adopts good Software Engineering principles and practices when writing the program (if nothing else, they can be used to prove the integrity of your code)
c. One feels comfortable with the programming language they wish to use.
My advice, pfenwick, therefore is that you should strive to learn as many programming languages as you feel comfortable learning, learn them well and definitely practice coding as much as you can.
Otherwise, personally speaking, if I was teaching someone programming for the first time, I would start them off with C (first) and C++ (next) and then move them over to something like Java if they liked(I do not condone programming in an OS-Specific programming language, on principle) and/or PERL/Python.
But that's just me so simply consider it as a piece of advice. Much more important for you to learn S/w Engineering, decide upon a language and start getting your hands dirty as soon as you can.
Cheers
DarkSYN
PS Sorry for the long posting, all.
hi, i learned java at uni for 2 years, i thought it was ok but never really got totally into it. For the last year i decided to swap to C++ and spent a lot of time figuring out what it can do and its caperbilities and now im really glad ive made the swap. I think its a good language to know and i rekon once you know the syntax it doesnt differ greatly between certain languages. Ive also found that c++ has a very large mount of resources out there on the web to help you develope your skills.
Again though as already mantioned, it does depend on what you are trying to do with it