views:

558

answers:

16

I have worked for the last 10 years in Networking & Web Development and always had an interest in programming. When I was in School I started in Basic, (To date myself) the other languages at that time were Cobol & Fortran, Where should I start in 2009? is C+ or C++ a good place? Is it better to Start Java or .net? I'm in need of some direction from Coders, Programmers, developers who can point me in the right direction. The technology changes in the blink of an eye, I'd like a good starting point to begin learning & understanding relevant code.

+18  A: 

I think your best bet is to learn Python because

  1. It is simple and easy language to learn
  2. Python is capable of doing what any other main stream language can do
  3. Python is also a very good choice for web development, with good frameworks like Django, Pylons, Turbogears etc
  4. Google uses Python and using google appengine you could be able to quickly write web applications.
  5. Python is also great for cross-platform desktop applications using wxPython, PyQT, Tkinter,gtk etc
  6. Python has very rich set of libraries and frameworks e.g. PIL for imaging, numpy for computing, twisted for networking etc etc etc
Anurag Uniyal
I agree. Yes Python babies you a little with regards to types etc, but for LEARNING a language, it's perfect. If I had to learn C straight off, I think I would have given up - dealing with ridiculous handling of strings, pointers etc. Python teaches you to think like a programmer, without having to deal with the silly idiosyncrasies.
Dominic Bou-Samra
Python babying helps me become more productive. I don't know how many times I've accidentally tried to perform assignment in an if statement rather than equality. Python won't let me do it. That helps.
kzh
Python is great, but if it is all you know, who will hire you? I don't see jobs for Python programmers here in central Ohio.
FarmBoy
@FarmBoy, python would be good to start, but off-course you should learn more languages and technologies
Anurag Uniyal
+7  A: 

It all depends on your focus.

If you're looking at getting into straight development, I would recommend C#, Java or C++. (C++ is a learning curve though, and would be great to "learn", whereas C# and Java will get you started a lot quicker in doing "cool" things)

If you're looking at Web Development, look into PHP (as it's free to setup and run with) or ASP.NET (which will link to platform at a point, as you use C# or VB.NET syntax).

If you're looking at something different, have a look at ERLANG or Prolog, or those types, however I don't recommend it for a start, as it's not AS quick to get results that you might be looking for.

Kyle Rozendo
+1  A: 

Nobody can really tell you which language you should learn. Just try a few of them and then decide for yourself. Just take the one that you like the most.

Of course I wouldn't start learning a language that's already "dead", but every modern language is good for something. What you should actually do is to decide in which area of programming you want to code - so, for example, would you like to develop desktop or web applications, should the program run on any platform or are you fine with just windows or just linux or whatever. When you have decided on that, take a look at the languages that are commonly used for the area you choose and try all/many of them. Then take the language you like the most.

Maximilian Mayerl
+4  A: 

The question is what you want to achieve in learning a programming language.

  • Do you want to get used to the basics? Then you might want to try a scripting language like Ruby or PHP. I would recommend Ruby as it's really easy to learn and advance (e.g. with IRB).
  • Want to write "fat" (desktop) applications? Then you should stick to C++, Java or C#.
  • For web applications you should use Ruby on Rails, Django (Python) or a similar web framework for the language of your choice. So you should already know a bit of the language.
Koraktor
+4  A: 

Well, technically, technology doesn't change in the blink of an eye. For instance:

  1. Lisp: Came out in 1958. It's always had a cult following in various fields, but it's becoming more hip now with the clojure variant.

  2. C: Came out in 1972. Obviously influences C++, Java, JavaScript (as does lisp), and still has a strong following.

  3. Smalltalk: Came out in the 70's. Now it's hip via the ruby language.

I'm not suggesting you learn these, just that if you had learned them in the past, you'd still have relevant skills. Many of the modern languages actually take aspects from past languages. JavaScript, for instance, is a scripting language with object oriented aspects (Smalltalk, C++), functional aspects (lisp), and the syntax of C.

Learn what you're interested in, and find out what will help you accomplish your goals . But learn one and you can learn many.

Glenn
First rule of development: everything changes.Second rule of development: not that often.The last major change was from the procedural to object oriented model 10 to 15 years ago. The next one *might* be to a functional model, but that's going to take awhile.
Chris Lively
+3  A: 

C

Because it's not difficult to learn. TO LEARN, not to do "cool things". Because is the languague that any good programmer SHOULD KNOW at least if he wants to know what's happening in the machine. When you've learned C, then you should go to OOP: I would recommend C++ or Java, but there are a lot of OPP languages (C#, .Net), so you can choose.

Java, C++ may change a lot, but not C. So, first learn C.

Furthermore, if you want to do some Web Development, the step C -> PHP is trivial, really.

PD: C is not my favourite language, but I know that if you learn C, you will be able to learn any language you want in very few time.

eLZahR
+5  A: 

You'll get a dozen different people all pushing you to learn their favourite language.

When it comes down to it though it doesn't make a lot of difference. As long as you pick something that is modern and object oriented you should be fine.

Assuming you are talking about programming and not web development, any of the following would be a perfectly acceptable first language:

  • C#
  • Java
  • Python
  • C++
  • Ruby
  • VB.net (not VB6)

There are advantages and disadvantages to each; there probably aren't as many jobs in Python and Ruby, C++ is harder for a beginner, but it's stuff you need to know eventually, C#/Java hide you from that hard stuff to begin with, but like I said you'll need to learn it eventually. VB.net is derived from BASIC syntax so you might feel at home to begin with, but a lot of programmers prefer C style syntax.

If you have a specific focus in mind, then that might dictate some choices over others, but if you are just out to learn programming, then any will do. If you are ever planning on being a good programmer you will naturally learn several.

Simon P Stevens
+1  A: 

Read and do the assignments in The C Programming Language before anything else. It will really help you get a solid grip on fundamentals and some of the trickier issues like memory management. Then go on to OOP whether it be Java, .NET, C++ or Python.

Chris Tek
A: 

I think choosing a language or technology is overrated, especially when you have to learn fundamental things like object orientation or algorithms. Try to focus on the basics first and especially try to use more than one language.

In order to understand the concepts you should at least learn a dynamic language (Ruby, Python, PHP) and a "traditional" one (I would recommend either Java or C#). Functional languages are all at rage now and provide a different view onto programming than the latter two approaches.

New technologies are always nice to know, but in the end a good set of fundamental knowledge will empower you to learn them faster than they disappear.

sebastiangeiger
A: 

I would say there is a massive difference between a Programming language & a Programming Language + Framework(s), usually when people say Learn Language X they are probably thinking about the Framework(s).

So if you want to actually Learn to program, try to learn the language with as little framework 'baggage' as possible, perhaps C?

Once you have gained enough working knowledge of a programming language (eg variables, loops, conditions) then move onto more broader subjects like OOP, then start looking at functional style etc.

From personnel experience I would say try and learn as many programming languages as possible (it actually gets easier the more you learn) but you will never master them all, just have enough to get by.

You will then realise that the language is the easy part, the framework and related methodology is what your actually learning when going from one language to another.

Darknight
+8  A: 

I agree with most of the posts on here but I would like to add my own slant on this. Learning a programming language should change the way you think about programming and allow you to make useful programs. The list below is a mix of easy to learn (the basics) and helps you think about programming problems

  1. Python it makes programming fun and easy. You will learn a lot about programming and make some cool programs in a relatively small amount of code. Will help you think about programs at a higher level than C which is a good thing.
  2. C it's the basis of a massive number of languages and will teach you a good deal of stuff that is now considered low level. Stuff that will be useful for any programmer to know.
  3. Haskell its a functional language which will have you thinking about programming from a different perspective. It is very useful to know this stuff - can help reduce many bugs.

I would start by gaining a basic knowledge. i.e. be able to make a text based Connect 4 game in each of these three languages (in order). Which books help you do that is largely personal preference.

Programming is not only about the code and the language. It's about everything you do at the computer read The Pragmatic Programmer and Code Complete 2. Extra points for SICP and Hacker's Delight

From there if you want to know more about how programming languages work by writing a interpreter for Scheme (by reading SICP again) And/or look at FORTH. Or learn more about how to program by writing more and more programs. Once you get basic knowledge write, then re-write as many different computer programs as you can.

James Brooks
+1 For Code Complete
PSU_Kardi
A: 

Much as I love Delphi, I think I would suggest either Java or Python. Why? Assuming you are learning on your own, I think these languages have the clearest texts and web sites for learning on your own (esp. Java).

Al C
A: 

Seeing that you're coming from two different fields (networking and web development) you can either work your way top down or bottom up in terms of high- or low level languages. If you think you want to make use of your networking knowledge (which I assume is pretty close to hardware), you might want to start with something like C, maybe Unix network programming. If you want to build on your web developer skills, you might want to try something more high level. I think Python is a good suggestion, but also Java - maybe in combination with JSP. C# would be a good choice too in my eyes.

Kage
A: 

Obviously, this depends much on your goals. If employability is high on your list, then either Java or C# is much better than Python or C.

Many will advise you to learn C, Lisp, and other things to have the proper CS background. That's good advice for younger guys, but for me, as a 36 year old that supports a family of 6, being forced to make a career change, I didn't have time.

So I learned Java and SQL, passed a certification exam, and landed a job. Maybe there are companies hiring C or Python programmers in your area. Check out indeed.com to see.

FarmBoy
A: 

Don't forget about platform. Are you most interested in web, mobile, or desktop development? As for languages, there are a ton out there and you'll never be able to learn them all. So I think you should determine what your goal is and whether you plan to program for fun, profit, or both. But most important of all, be sure the journey is fun for you and that you're building stuff you love.

MattB
A: 

A good reason to learn Java - besides the fact it's currently the most popular language - is that the Java Trails tutorials are really good, and really far-reaching.

C# is very, very similar to Java in most regards; also interesting to learn, and it's gaining marketshare while Java slows down.

Other than those two, I'd also strongly consider Python, for being easy to learn and very, very useful personally and professionally.

Dean J