views:

287

answers:

11

What are your criteria or things that you consider when you are an early adopter of a programming language or technology?

Two of the most common explanations I've heard are:

  1. It should be "fun" (what I've heard from technical people).
  2. It should be capable of solving our problem (what I've heard from business people).

So what's yours?

+1  A: 

My criteria is simple:

  • wow factor
  • simple
  • gets things done
  • quick
Ólafur Waage
+1  A: 

I want it to do something easily that is hard to do with the tools I'm used to. So I moved to Python, and then Ruby, over Java because I could build a program incrementally, add functions easily, and express programs more concisely (esp. with Ruby, where I can pass blocks/Procs and have clean closures, plus the ability to define nice DSLs making use of blocks and yield.)

I took up Erlang because it expresses Actor-based concurrency well; this makes for easier network programs.

I took up Haskell because it fit with a number of formal methods tools I wanted to experiment with.

Charlie Martin
A: 
  1. Should be capable of solving the problem
  2. Should be more adequate to solve the problem than other alternatives
  3. Should be fun
  4. Should have prompt support, either from a community or the company promoting it
njsf
A: 

A language should be:

  1. Easy to use, to learn and to code in.
  2. Consistent. Many languages have 50 legacy ways of doing things, this increases the learning curve and turns quite annoying. C# for me is one of those languages.
  3. It should provide the most useful solution with the least amount of code. On the other hand sometimes you do need a bit of expressiveness to make sure you're not making a huge mistake.
  4. The right tool for the right job and maybe the right tool for any job
the_drow
A: 

My criteria that the language should have:
1. New ideas - If the language is just another Scheme variant, if you know one than I don't feel the need to learn this new one. I will learn it if I think I will learn something new.
2. Similar to another language, but better. For example, while Java and C++ have many of the same ideas, Java's automatic garbage collection makes it a better choice in many cases.

Nathaniel Flath
+1  A: 
  1. Open source.
  2. Active developer community
  3. Active user community, with a friendly mailing list or forum.
  4. Some examples and documentation, preferably a tutorial
  5. Desirable features (solves problems).
Glenn
+1  A: 

If it's for my personal fun, I need very little excuse, as I do love learning new things, and the best way of learning is by doing. If it's for an employer, customer, or client, the bar is MUCH higher -- I must be convinced that the "new stuff", even after accounting for ramp-up effects and the costs that come with being at the bleeding edge, will do a substantially better job at delivering value to the client (or customer or employer). It's a matter of professional attitude: my job's to deliver top value to the client -- having fun while so doing is auxiliary and secondary. So, in practice, "new" technologies (including languages) that I introduce in a professional setting will generally be ones I've previously grown comfortable and confident with in my own spare time.

Alex Martelli
+3  A: 
Curt Sampson
A: 
  • Gets the most done with the least amount of effort
  • Extremely interoperable with different protocols, out of the box
  • Fast
  • Has lots of libraries built in for stuff 99% of web developers do (PDF's, emailing, reporting, etc..)
Jas Panesar
A: 

It depends on why I'm learning the new language. If I'm learning it for fun, then it has to meet these criteria:

  1. Is well it supported on my platform? Something that runs only on Linux isn't interesting to a Windows programmer.
  2. Will I learn something new? In other words, does it come up with a new way of doing things?
  3. Does it look fun? I don't want to learn Ada even if it has new ways of doing things.

If I'm learning it for work, the criteria are different:

  1. How mature is it? Has it been proven to work in the real world?
  2. How big is the community?
  3. Will it make my job easier? I.e. is it worth the time investment versus just doing the task with a language I already know.
Steve Rowe
+1  A: 

Someone has once said something to the effect of:

"If learning a programming language doesn't change the way you think about programming, it's not worth learning."

That's one metric (out of many) to judge the value of learning new languages (or other technology) by. Using this, one might suggest learning the following languages:

  • C, because it makes you understand the Von Neumann architecture better than any other language (and it's sort-of random-access Turing Machine like, sorta'...).
  • LaTeX (as a programming language, not only as a typesetting system) because it makes you learn about string rewriting systems as a model of computation. Here, sed is similar; learn both, because they're also both useful tools :-)
  • Haskell, because it teaches you about functional programming, lambda calculus (yet another model of computation), lazy evaluation, type inference, algebraic datatypes (done with ease), decidability of type systems (i.e. learn to fear C++)
  • Scheme `(or (another) ,Lisp) for its macro system, and dynamic typing, and functional programming done somewhat differently.
  • SmallTalk, to learn Object-orientation (so I hear)
  • Java, to learn what earning money feels like :D
  • Forth, because wisdom bestowed forth learned implies.

... that doesn't explain why I learn python or shell scripting, though. I think you should take enlightenment with a grain of salt and a shovelful of pragmatism :)

Jonas Kölker