views:

755

answers:

13

Another interesting site question states:

In the book The Pragmatic Programmer, the authors suggest that you learn a new language every year. With so many new languages these days, what will be your next programming language and why?

I consider my time a valuable and scarce resource, as do many others here, I imagine. With that in mind, what languages do you think would be least useful for deepening and widening my understanding of good software development principles?

+1  A: 

Intercal -- for the obvious reason that it was never meant to be used.

tvanfosson
+2  A: 

MUMPS!

http://en.wikipedia.org/wiki/MUMPS

http://thedailywtf.com/Articles/A_Case_of_the_MUMPS.aspx

That said, a better question would be what language should you learn...the list would be shorter. The list of ones not to learn come a dime a dozen as there are heaps of obscure languages.

mezoid
+3  A: 

J# is a dead end by now.

I would also try to avoid languages with limited tool/platform support.

Brian Rasmussen
+7  A: 
coobird
LOL. +1 for LOLCODE. KTHXBYE.
andyk
Actually, studying these languages might teach a lot about language design. I believe that many of them are also used to teach compiler construction since they're so easy to write compilers for.
fluffels
@fluffels: Absolutely! I also think that esoteric languages are a good academic exercise in order to look into the different language designs. However, useful and interesting are two different questions.
coobird
+2  A: 

Choose a language which provides a new way of abstracting things. This is the defining criteria for me. For example Haskel/f# are a good candidate for professional programmers who use imperative languages like C++/C# on a daily basis because its has a totally different way of looking at things (no mutable data, higher order functions i.e. functions as data, pattern matching etc.)

Or learn a quick to use and fun to learn language like python, boo, powershell scripting laguage, Javascript which might be helpful in meeting various odds and ends like use as a glue language, automation of routine tasks, quick prototyping etc.

Edit: Since this is a question about what not to choose I will add that do not waste your time with languages which do not have anything to add your problem solving skills. For example if you are a C# developer do not waste your time with java (and vice versa) unless you have some business requirement. (BTW I think C# is much cooler than Java :) just kidding)

SDX2000
These seem to be recommendations on which languages to learn; the question is about which languages to avoid.
Jonathan Leffler
The list of languages not be learned is simply too long IMO its much more effective if we talk about the list of languages which might have a positive impact instead.
SDX2000
A: 

Java. It was the language for the nineties, time to move on.

Tom
Sorry, but you are dead wrong.
javamonkey79
That will get you down voted by a lot of people. If you can afford the rep then do so, but bagging any of the big languages just is a world of pain on stack overflow.
tdyen
Oh and I did NOT down vote you
tdyen
I really don't care so much about my rep. I really would not recommend java theese days. There are a lot of interesting languages for the JVM though. Rhino and clojure comes to mind.
Tom
Perhaps you may think it unfortunate, but many portable devices use Java, such as the Blackberry and feature phones. As they become more powerful, they become additional interfaces beyond mere phone usage.
Ed Marty
It's unfortunate the so many people agree with this idiotic notion
titaniumdecoy
This answer makes no sense. Please substantiate your claims.
fluffels
Java can be extremelly useful since it is cross-platform.
luiscubal
+2  A: 

COBOL. 'nuff said.

+10  A: 

Visual Basic for Applications (VBA) - (not to mix up with VB.NET).

As of July 1, 2007, Microsoft no longer offers VBA distribution licenses to new customers. Microsoft intended to replace VBA with .NET-based languages ever since the release of the .NET Framework.

Did one of your customers ever ask you: "Could you fix that small problem in this Word/Excel/Access application written by someone else?" and then you look at some virtually unmaintainable code (argh!)?

splattne
One of the things you can do is fix it for maintainability. Just because it's VBA doesn't mean it's unmaintainable. Knowing VBA is actually very productive and useful. That skill is usable in many tools. Microsoft hasn't been able to replace it with .NET (they've had 3 chances).
bruceatk
@bruceatk - you may be right, but _my_ experience was always finding some spaghetti code which is incredibly hard to understand...
splattne
A: 

Moscow ML - a very pure functional programming language, highly recommended if you want to get a good feel for functional programming, not as complex as F#, more pure in its form and still performant.

Egil Hansen
So, is that a recommendation for a language NOT to learn, or for a language to learn? Your comments sound more like praise than condemnation.
Jonathan Leffler
what Jonathan said...
Alex Baranosky
A: 

Cobol, Pascal, VB 6 or earlier

JoshBerke
why the downvote who wants to learn any of these?
JoshBerke
+4  A: 

The language to avoid is one that is badly designed, teaches you little new, and looks like it is in the process of being superseded by a competitor. It's hard to think of any clear candidates but I will place my reputation at risk by recommending two languages to avoid:

  • C++ is badly designed (read The Evolution of C++) and is largely superseded by its successor Java and its predecessor C.

  • Perl's design is at the very least highly controversial, has lost mindshare to Python and Ruby among others, and it looks like Perl 6 is never going to get off the ground, despite the heroic efforts of Audrey Tang.

Norman Ramsey
But pragmatically speaking, shouldn't everyone know some C++ and some Perl?
eed3si9n
Circa 1980, pragmatically speaking everybody needed to know a little FORTRAN. I learned my share, but I'm glad I didn't spend scarce time and effort learning more. I know some C++ and Perl too---enough to know they're not the time and effort required to learn more. Look *forward*!
Norman Ramsey
And what is "forward" of C++? There is simply nothing that covers the same niche: no room for a lower level language other than assembler, and optional powerful abstraction mechanisms on top on it. Usual responses - Java and C# are simply too high level to replace C++.
Nemanja Trifunovic
Despite its troublesome lack of namespaces, in the low-level niche C++ is dominated by C. Ask anybody from Bell Labs :-) Seriously, to get a glimpse of one possible forward direction for C++, look at Cyclone: http://www.thelanguage.org/
Norman Ramsey
Using C is justified only on platforms with no C++ compilers. Even if you don't use any of the abstraction mechanisms like classes, C++ offers more type safety than C. As for Cyclone, its main problem is that for all practical purposes it does not exist.
Nemanja Trifunovic
Using C is justified by its simplicity and extreme good fit for programming memoryt. As for type safety, it is like pregancy: you is or you ain't. C++ ain't.Re: Cyclone, you asked what would be a *forward* direction for C++, not what is practical today.Thread is now argumentative. You win.
Norman Ramsey
What do you mean "C++ is largely superseded by (...) its predecessor C."? C++ is not superseded by C! C is superseded by C++!And still, you should learn C anyway!
luiscubal
@luiscabal: I was being a bit snarky and paraphrasing a comment Tony Hoare made about Algol-60: that not only was it an improvement on its predecessors; it was also an improvement over many of its successors. I think C++ represents a huge step backward relative to C.
Norman Ramsey
A: 

Your question has not much sense without a context. What kind of programming are you interested in or already doing? If you are making real time embedded systems with C, C++ or Forth, I would say don't learn Java, C#, Python or any other high level language. If you are making "enterprise" programs, my advice would be exactly the opposite.

Nemanja Trifunovic
The question is intentionally asked in a strictly academic sense, to determine which languages are more likely to surprise us with new metaphors for detecting and applying design patterns. Even more critical otherwise would be "what languages are you already familiar with?"
le dorfier
+4  A: 

Although I agree with the concept of learning a new language to stay on top of the industry, I would argue that it's much much more important to learn methodologies, architectural, and design patterns.

The way I look at it is this: OOP is pretty much a mainstay. As a result, the major difference between languages is going to be syntax. It's how you design solutions that's going to change. Look at SQL -- regardless of whether you're using MSSQL, Oracle, MySQL, etc -- at the end of the day, it's still SQL. Granted, each one has it's benefits and it's differences, but would it serve you to learn all of the above? Or would it be better to learn things such as the Repository Pattern to loosely couple your solution between your DAL, BLL, and UI?

If you know C#/Ruby/Java, etc like a superstar ninja, but don't know what or how to implement a Singleton Design Pattern for instance, then you've wasted your time learning that language. Think of it as a hurdler -- with the language being your sneakers. You're going to reach the finish line, but it's your form (design patterns and methodologies) that's going to get you the gold. Running through the hurdles will just get you truck-fulls of disappointment.

MunkiPhD
+1! I agree completely. As I get older I find that proper philosophy is so very important. Slick language tricks are not as important as proper design and implementation.
Doug L.