What language should I learn?

By Deane Barker on December 8, 2008

I want to be a better programmer, but all i know is ASP.Net. What should i start learning?: A simple question. Some of the responses.

C […] Real broken-record stuff, but I agree. Everyone should know C. […] Everyone should know C. Not everyone should learn it as their first language. […]

If you only know one language, then learning any other language is going to help you be a better programmer.

I agree with this. Every programmer should know at least two languages, preferably two that are as widely disparate as possible. At Blend we code at least semi-competently in about eight languages.

Write some real C#, doing real stuff. Figure out how to build decent socket-based apps. Figure out WinForms, enough to be able to articulate WHY it sucks. […]

You should learn F# first.[…] After that, check out Smalltalk, Common Lisp, Perl, and Haskell

Try learning a new language every month. Python, Ruby, Scheme, Clojure, Haskell, F# should definitely be on your list. […]

check out Lisp (preferbly Clojure), Forth, Erlang, Haskell, Prolog and E.

Some really common threads there: F#, Lisp, Python, etc.

Gadgetopia

Comments

  1. I’ve always thought (or been lead to believe) that it’s not the language, but what you do with it. I guess this is a web appllication frame of mind.

    I am a (c#).NET head, but would love to get to grips with Ruby (RoR) and Python.

    Deane, can you recommend any Xmas reading for getting up to speed on either of these languages?

  2. Ruby and Ruby on Rails.

    Note: Bryan Ruby isn’t affiliated with the Ruby language. He doesn’t even know the language. However, adding his name to a page does increase hits dramatically due to the many Ruby fans out there. It sucks to be Bryan Ruby only when looking to buy a domain with his last name.

    Bryan Ruby

  3. I only agree with that to a under certain conditions.

    For an experienced programmer, learning a new language that’s nothing like the one (or ones) you know is a great idea. You may or may not ever use it again, but you might pick up some new and awesome technique or whatever from learning the new one.

    For a beginning programmer, I wouldn’t transcend paradigms (excluding procedural and object oriented). Learning, say, C and Prolog as a starting programmer would quite possibly drive you to Underwater Basketweaving instead of Computer Science or some related field. Seeing and using different syntax and libraries is great (I suggest C# and Python–does that come as any surprise? ;)), and being in the same area, a new developer should be able to fairly easily wrap their head around both languages without too much trouble.

  4. It depends entirely on what programming you want to do. C, C++, Java — these are all for the application-level programmer. There are other great options if your interests are interactive or online.

    PHP is easy enough to pick up but pretty deep once you get into it. The tools are free and you can get a development setup quickly. There’s a lot of stuff on best practices.

    Javascript is also basic-but-deep, but it’s client-side. And if you’re interested in interactive / front-end coding, it’s certainly a good introduction to programming.

    Good educational languages are languages where you can get started quickly, languages that are flexible, and languages that are forgiving. Rigor and design can come a little later.

  5. I would recommend learning Python. It’s a fully object oriented language with a very elegant syntax. I find that it reads very much like pseudocode for it’s an excellent first language if you are new to programming, but don’t let it’s accessibility fool you into thinking it’s not powerful. It’s been around for as long as Ruby, is open source and has a huge community of developers behind it. Google uses it extensively and the entire Youtube.com site is built using Python. See more at http://python.org.

Comments are closed. If you have something you really want to say, email editors@gadgetopia.com and we‘ll get it added for you.