What's worse is this is fragmentation of the programming economy. I've found awesome bits of code written in Python that I can't use in PHP/Ruby/C++/etc, and various other combinations. There are great programmers working on great projects, but if they're not using the language of choice for my particular project, they are essentially useless to me.
It also makes it difficult to find new talent because there is less of a chance they'll be able to work in the language we've chosen. And yes, a good programmer should be a polyglot, but it's an attraction issue. If I'm advertising a Ruby job and looking for skills with Ruby-specific tools, there may be a great Python programmer that could switch over but who doesn't apply because they don't want to deal with switching gears to another language.
Let's keep it to 3 or 4 major languages. I think that's all I can take right now...
Library support is a big deal, and obviously a new programming language won't have a whole lot of that. That issue gets a lot smaller, if the language allows an easy way to abstract away a lot of those issues, making it quick and easy to deal with whatever you'd look for a library for. If your main goal is to find lots of library support, this new language won't appeal to you.
I'm reserving judgement until I actually see it. Maybe it's a great, fun to use language that gives significant performance advantages over other high level languages. If I need half the servers, that could be a big win. If threading and concurrency are abstracted away in a way that's performant and I don't have to worry about it, that's a big win. I don't know what it will be, but if it's useful it's useful. Seems a bit silly to judge it before it's out, especially criticizing it simply for being a "new" language.
Obvioulsy not, there are a few good good solutions to that, like running on the JVM or some other similar platform. It is not all about performance, languages can introduce new abstractions that can make a lot of difference.
who doesn't apply because they don't want to deal with switching gears to another language.
In my experience, a good developer doesn't care about the language, and, in fact, would be excited to learn a new one. However, our industry has the mantra of "find someone with perfect proficiency or hire nobody," leaving those good developers afraid to apply unless their skill-sets match exactly.
The keyword here is "learn". Don't underestimate the amount of time it takes to become truly proficient in any language. Not to mention the huge cultural differences between the communities, and therefor companies, around those languages. Even with someone with a proven track record, it is still a considerable risk and investment on the part of the employer.
It is an interesting problem of the "new economy" though. Companies won't hire anyone unless they are absolutely one hundred percent perfect, leaving business with thousands upon thousands of open positions unable to be filled and just as many crying for work.
We hear statements like "the people aren't well educated enough," or "not smart enough" time and time again, but it misses the real mark. Jobs of the past were tied to time-based constraints, such as deteriorating products, so hiring anyone to get the job done, no matter how poor of an employee, was better than losing everything.
Coming from an agriculture-based background, farmers are always complaining about the quality of help, more-so than technology companies. However, you cannot afford to wait until someone good at the job comes along. When the crops are ready, you have to harvest them no matter what. That means taking on sub-par labour.
In the information industries, time does not matter. If it takes decades to find the right person, it is better to wait for that person because of the risks you state. Educating the masses isn't going to change anything. Changing the attitudes of business is the only solution if we want to see employment numbers rise again.
I think the problem is that people are finding that having that top 10% kind of person is basically required to stay competitive. There's considerable effort on the other side of the coin too, in designing systems from foolproof patterns that 80% of the job market can learn. The fact of the matter is that this is an industry where 5 people from the top 2% of the market can disrupt and displace 500 from the middle 50%. In my opinion that's why YCombinator is so successful.
Still worse is all the weaknesses in the existing dynamic language runtimes. It seems even harder to build a really solid language runtime than to design the language itself. For a long time I was hoping that the Parrot VM would solve these problems but it seems to have stalled out.
If I'm advertising a Ruby job and looking for skills with Ruby-specific tools, there may be a great Python programmer that could switch over but who doesn't apply
Solution: don't advertise 'a Ruby job'. Advertise 'a programming job'. What it is you really want in your applicant?
It also makes it difficult to find new talent because there is less of a chance they'll be able to work in the language we've chosen. And yes, a good programmer should be a polyglot, but it's an attraction issue. If I'm advertising a Ruby job and looking for skills with Ruby-specific tools, there may be a great Python programmer that could switch over but who doesn't apply because they don't want to deal with switching gears to another language.
Let's keep it to 3 or 4 major languages. I think that's all I can take right now...