views:

211

answers:

7

According to the Pragmatic Programmer anyone who strives to become a better programmer should learn a new language every year. The basis behind this is to develop your thought process and to challenge you to think about your programming techniques in different ways.

What programming language made you change your thought process the most and what were the differences in the language that made you change your techniques.

+3  A: 
  • If you never programed in C, you will never understand computers.

  • If you never programed in Scheme/Haskell/... you will never understand Higher Order Functions.

  • If you never programed in Python, you will never fly ;)

  • If you never programed in C++, you will never meet something like STL and Boost.

  • If you never programmed in VB, you will never know that creating GUIs is easier than creating

    command-line interfaces

.

AraK
But is it worth it to know how much easier it is to create GUIs?
Chris Lutz
I beg to differ! Lua has higher order functions and is 5 times more readable then haskell/scheme/etc.
RCIX
+3  A: 

Python and Erlang.

Python because it has such a tiny set of language syntax and rules, and a huge bag of "hooks". Python is one of the most flexible and powerful languages I have ever used.

Erlang because it has such a profoundly different approach to programming, that when you are in a similar problem domain, it provides effortless solutions.

gahooa
+3  A: 

Probably I come from a different world. I always want to learn a new programming language, but always find learning them is a waste of time. Many top programmers in my field are like me. My view is if the languages you know meet your needs, then get more familiar with them and improving your language-independent programming skills. Only learn a new language when it at least doubles your throughput.

I'd disagree with "waste of time" but agree with "improving your language-independent programming skills." Too many developers ignore things like the SOLID principles IMHO.
TrueWill
+3  A: 

SQL really opened my eyes for it's declarative set based style of programing.

JeffV
+4  A: 

Python and Haskell.

Haskell showed me in the truest sense that there is world beyond if-then-else kind of imperative programming and what functional programming really is. It also showed me some really nice ways to think in recursions. The head hurts a lot when you program in haskell but it helps :) Haskell also showed me how to argue about a function/method mathematically. Also it showed me how to stay away from STATE and pitfalls of having STATE.

Python showed me how to fly :) Well it showed me how to get things done fast, especially DJango and mpich stuff. Python is neat, readable, agile and fast.

Zaki
+3  A: 

Learning assembly language opened my eyes because it required me to break the problem down into the smallest parts possible, to deal with the machine on its own terms rather than through the intermediate abstractions of a higher-level language. When I learned C a few years later, I seemed to have fewer problems with the concept of pointers than most of my friends did. It also taught me that it pays to save your work often when you're interacting with the machine on that low a level...

Ken Keenan
Does it ever _not_ pay to save your work often?
Chris Lutz
@Chris Lutz: It always pays to save your work often. I guess my point was that programming in a higher level language, your errors are more likely to be caught and recovered from, which may lead you into a false sense of security. In assembly language programming, you have no such luxury: a misplaced instruction will most likely lock the machine hard.
Ken Keenan
+4  A: 

C - pointers made me understand memory management methods and memory in general. I think that I learned more about writing very solid from doing a little soft embedded work than anything else in my career.

C++/STL - generic programming as it is expressed in the STL is simply amazing. No one seems to credit programming with C++ templates as being a pure expression of Duck Typing.

Python - Decorators and metaclasses are mind-bending at first. A lot like programming in Lisp or Prolog for the first time. But once you find a use for them the first time you will never know how you lived without them. Besides what other language includes an antigravity module?

Objective C or Smalltalk - delegation and event-driven programming at it's best. After writing a few GUIs for OSX in Objective C, you can understand the power hiding behind Boost.Signals and Qt's Signals and Slots.

D.Shawley