views:

198

answers:

8

This is just a food for thought question to help get content into the site for the beta. Hopefully it can spur some interesting discussion.

I have noticed with programming languages and environments that they tend to follow a curve that is in some ways similar to natural selection and evolution in species. Simple things tend to stay simple and have longevity (both bacteria and C have been around forever in basically the same form, and aren't going away anytime soon), whereas complicated things change radically, become useful, but then keep changing, change too much and then die. Or maybe they don't change enough and die. Complicated things tend to have narrow niches.

I'll use the .NET framework, and Microsoft's development environment as an example. I feel like things matured with C# 2.0, Visual Studio 2005, Sql Server 2005. .NET 1.1 was nice, but had some really annoying bugs and shortcomings, which were addressed in 2.0. Whenever I dig into the next release, I feel like it's all just lights and mirrors, and no actual usefulness. Sorry, I'm not a fan of linq. The new AJAX stuff is nice (I think that's ASP.NET 3.5?), but I can do AJAXy things in a million different ways using the current environment.

When do we say "enough is enough" and just stick with a platform that is performing perfectly for us?

Maybe this is just a sign that I'm getting old.

A: 

lol your getting old and a jaded =>

Serioursly - I feel the same about LinQ it just seems to fuzz the whole separation of SQL and Code.

I think that maturity of a language is when its in live production level code and many programs support it.

Or on another point - when sadly the underlying object model gets to be that you almost dont have to code as there is possible a method there - Java 6 anyone.

Linq is not just Linq to SQL, there are plenty of other uses, which can make your code more elegant (nice to have), but also shorter and less error-prone. http://stackoverflow.com/questions/21280/am-i-missing-something-about-linq
Benjol
A: 

Never... It's because of these evolutions that we are able to do faster and better... so I think the answer should be never.

Vaibhav
I disagree. Sometimes more stuff is just... more stuff. C doesn't need to change. LISP changes gradually at most. Smalltalk - same thing.
kyoryu
Yeah, you are probably right there...
Vaibhav
+2  A: 

I would say: As soon as not only the early adopters use it. As soon as you see a substantial growth. As soon as you see one Killer-Application written in it.

In short: A language is mature in the moment something big happened, and I do not mean big marketing.

Oh, and regarding your comment about .net: .net 2 brought possibly the most important new language feature - Generics. 3.0 brought two really nice new Tools into the Framework, WCF and WF. And .net 3.5 is more than just LinQ, it's also WPF, a technology which definitely still needs adopting and better/more integrated tools, but I think that it's a very valuable addition.

Michael Stum
I agree - a large app is probably the best indicator. This indicates that the programming language can accomplish non-trivial things and can scale, and these are the two main hurtles for programming languages to become effective to use.
Kyle Cronin
A: 

Use the right tools. If the current tool works for you, no need to change.

However, you need to learn about new tools. Computer languages are tools. If you don't keep up with the latest and greatest, then you won't know if a better tool exists.

People make the assumption that the tools they have and are used to are the best for them to do the job. That's not necessarily true. There may be newer tools that would make them more effective and efficient at doing the job.

There can also be a problem if a tool is no longer supported. Continued use of the tool might start to cost more, prompting a move to another tool.

To sum up, you have no obligation to use any tool you don't want to. You as a wielder of tools need to know what tools are available, how they are used, and what they are good for.

Christopher Mahan
A: 

I would say that it's mature when it passes such a test, the hype, and is still being researched with, advanced et cetera. When it hits hype, that's when the testing of if it can be a contender for a mature language --like setting your spartan child on a hill in the woods.

nlucaroni
A: 

In my opinion, programming isn't anywhere near where it could be or should be. It has quite a long way to go yet. Until you have an interactive system working with you to clarify specifications, perhaps even using natural language as a base (albeit with a lot of specialized vocabulary for speed of interaction), then we aren't "there yet".

Meanwhile, you are going to get API upon API for simplifying the tasks programmers find themselves, as a group, repeatedly doing. If you aren't one of those people, don't use the API. I think you might feel like you have to learn all the new Microsoft systems out there to stay "current"--relax, you don't. Just look how many have gone by the wayside; many developers quite comfortably let APIs get born, have their heyday, and fall into disuse without ever feeling the need to learn them. It's OK.

Plynx
A: 

As people have said c feels complete(although maybe blocks might be a big thing), many other languages don't(as in they are likely to see significant changes or have been largley abandoned-or were never widely adopted in the first place).

For me the maturation point of a language is when real middle or large companies ( or maybe government agencies) (as opposed to just academia)decide to use it for multiple or large programs. Of course that is different from the time that a language becomes like C and is probably not going to add too many big features/changes.

Roman A. Taycher
A: 

In my opinion, a language is mature when it has some sort of agreement of what it should implement and how it should work.

This agreement can take the form of specification or certification. This allows people to refer to a language unambiguously: Ada83, C99, Objective-C 2.0, HTML5, ...

mouviciel