views:

72

answers:

5

i was thinking learn a more low level language like C, but before it i'd like some opnion about:

  1. what's the second language do you recommend to learn?
  2. learn a low level language will make me a better programmer?
  3. it's really necessary learn a second programming language?
+2  A: 

Going backwards:

(3) Absolutely - you'll increase your ability by orders of magnitude by learning multiple languages.

(2) A low level language will make you a better programmer - alternatively a functional language will help as well.

(1) Low-level: go with C. Functional, try Scheme or Haskell. C also gives you the ability to write extension modules to Python if you ever have the need.

Skilldrick
+1  A: 

what's the second language do you recommend to learn?

Something imperative (i.e. same paradigm) but different. Python is dynamically typed with significant whitespace, so something statically types without significant whitespace: e.g. Java or C#.

These would also make a nice stepping stone towards C. The benefit of C is you really know what's going on, but with the disadvantage that you have to control it all. This level of control is not need for most business problems.

it's really necessary learn a second programming language?

Really subjective, but most good developers know many (consider for a web app: Python, Ruby, C#, Java on the server; SQL on the database and JavaScript on the client; and then the mark-up...).

You benefit from being able to see other approaches to problems and thus create better solutions. So once you have covered more imperative languages move into other paradigms like functional.

Richard
A: 

Some wise person said that you should learn 1 new programming language every year. Although I haven't managed to do that (I did 1 every two years)

Having said that, I think you should take a look at

  • scala: I am learning this. Its not that "low level" but its both OO and functional. Its also web friendly
  • C, Scheme: Low level (can't comment on these since I am not aware of these)

Also see if a language (platform) has a broad scope: From web dev, to network programming to scripting, Python is very good in that too.

naikus
A: 
  1. I agree with your choice of C, which leads on to C++. If nothing else, learning C will teach you why people these days tend to prefer languages with automatic memory management - but it will potentially also give you a feeling of programming "close to the metal" (without the pain of programming in assembly language), and help you to understand how a processor actually works. Not always useful knowledge but it's nice to know.

    Whatever you choose, I recommend a statically-typed language - C, C++, Java, and some functional programming languages fit this bill. Java might be a good choice if you find C a bit tough at first.

  2. I'd say learning any new language makes you a better programmer. However, will learning C make you a better Python programmer? Probably not; why should it?!

  3. Define "necessary"! By a strict definition, no. But you're missing out on the experience of having to think about things in a different way (even if it's only a slightly different way).

davmac
I think learning C will definitely make anyone a better Python programmer. It'll give you a feeling of what Python is doing under the hood, and you'll be able to write C extension modules to Python.
Skilldrick
I'd argue that neither of those things makes you a better Python programmer.
davmac
A: 

I would stay with the same paradigm, but leave options open for another paradigm (functional programming). Probably C# is a good choice, because

  • If you decide to learn C/C++ later, it'll become a bit easier.
  • If you decide you want to learn functional programming later, you can switch to F# but still use existing code written in C#, because you stay within .NET framework.
  • Python is not known to be a remarkably fast language. You should consider learning a language which allows better computational performance. But good old ANSI C is probably too low level, despite you can write very fast programs with it. C# has OK performance for a just-in-time compiled language, and if you need more performance later, you can still extend your knowledge towards F# or C.
  • Although I don't use Microsoft Windows privately and advertise Linux and Open Source frequently, it's probably a good idea to offer some knowledge about Microsoft technology in case you intent to earn money with programming.