Why Do Programming Languages Succeed Or Fail?
magicmat writes "UC Berkeley EECS graduate researchers Leo Meyerovich and Ari Rabkin have compiled an interesting data set on the sociological aspects of programming language usage and adoption. 'Socio-PLT' is the result: compiling survey results from Berkeley's recent 'software engineering' massive online open course, SourceForge, and two years of The Hammer Principle online surveys, they have discovered some interesting phenomenon about what we, as programmers think about our languages, and why we use them. You can head over and explore the data yourself using cool interactive visualizations, and even fill out a survey yourself to have your say."
Because programmers use them or they don't.
The main factor in determining whether or not a language succeeds is the quality of its creator's beard:
http://entertainment.slashdot.org/story/08/04/29/181249/facial-hair-and-computer-languages
Programming languages must have a certain elegance, a flow or symmetry that entices the mind. Pascal/Delhpi have always done that for me. She's not the hottest girl at the dance, a little older and not dressed to the 9's, but she's the one I'm taking home that night. It's entirely personal, and I could'nt care less what others use.
Languages succeed or not succeed == true.
The results were a bit of a pain to find on my phone, and took a while to load, but if you are looking for them, you can mostly skip the methodology and go to the bottom of the page
where there are a handful of not well separated links.
The results didnt seem too surprising, other than that under their questions, Visual Basic and Assembly ended up clustered together.
while(1) attack(People.Sandy);
why-new-programming-languages-succeed-or-fail
Slashdot, fix the reply notifications... You won't get away with it...
Back in the days when Java was originally being developed at Stanford, my university was working on it's own language. It was actually pretty good, and once Java became big, few people understood what made Java so special.
The only answer that I've been able to come up with, is that it was Stanford, and not some Canadian school that nobody has heard of.
Since PHP and Javascript stubbornly remain popular.
Despite fanatism for a lot of languages, I believe languages catch on when they are easy to understand by others and have an easy to understand syntax or interfaces. Plenty of times you see announcements of new languages which claim experimental or higher level syntax abstractions or constructions that allow the programmer to write less code, or claim to resemble human language more.
Yet in practice, I don't think programmers spend most of their time actually writing the code but thinking what to write, so making an algorithm or behavior as clear as possible should be preferred to writing unnecesarily shorter code that does the same.
Because those are the only two options.
Give me Classic Slashdot or give me death!
http://entertainment.slashdot.org/story/08/04/29/181249/facial-hair-and-computer-languages
A “real” [programming] language is one that people who don’t want to learn anything new are already familiar with.
http://developers.slashdot.org/comments.pl?sid=2055724&cid=35626170
Conversion Rate Optimisation French / English consultant
Otherwise it fails. Two of the most popular languages in existence are Visual Basic and PHP. Math folks and programmers tormented by the hobgoblin of consistency hate both languages. Guess what? It doesn't matter.
Sure, they're inconsistent, oddly constructed and don't support polymorphism (which describes many programmers too, for that matter). Nevertheless, you can get something *done* in jig time and move on with your life. They are languages that are not about the language but the task. In that sense, they perfectly suit the human mind and so they get used again and again.
The big fail of programming languages generally is that nobody thought to combine ease of use with scalability. A programming language should make the most frequently done things trivially easy (e.g. file i/o) and less frequently done things (e.g. serializing and deserializing) possible.
My favorite example of a programming language fail is Powershell. The language is very consistent. It's a consistent pain in the ass. It's picky, prissy and everything has to be done "just so." I use it every day, and I'd like to condemn the developers to a hell where they had to do real system administration with it for eternity.
Please do not read this sig. Thank you.
"Why do programming languages succeed or fail?"
There isn't any other option for them, so they have to do one or the other I suppose.
Next question.
In the beginning it sounded the "the Smalltalk for the rest of us", i.e. objective oriented programming for the UNIX/C crowd. But ObjectiveC was a proprietary language and did not catch with university types. Somewhat open C++ quickly eclipsed it. But the faithful at NeXT, then Apple held on. Now its considered on the most popular develop languages, mainly for iPhone apps.
Some languages fail simply because the creators have chosen stupid names in the age of Internet searches: try searching for one liners or tutorials in 'R' or 'Go' or 'D' and you'll find tons of irrelevant links. I'll make an exception with C since there's simply more stuff out there about the language than about any other use of the letter. Now Brainfuck, that's a perfect name for a language.
Non-Linux Penguins ?
Did you have to go to work with a maths degree to programme your computer? .gov or .edu support e.g. Ada?
Did the language get
Can you do anything you like and zoom ahead or fail depending on your skills? e.g. C
Now you have you Lua, OCaml and MS efforts.
Everyday some gifted project person tries to impress their friends or make a tool just to see if they can in some obscure, free, fast language.
Why do they fail, ahead of their time like Ada or without the awesomer speed and freedoms for C.
Or its just not what all your BBC/Windows/ios using friends had and could help you will, i.e. the herd is fun.
Domestic spying is now "Benign Information Gathering"
English isn't the world's most spoken language (when you include secondary speakers) for its elegance, consistency or expressiveness. It's a combination of history and politics and power and isolation and culture and grabbing concepts and words and pronunciation from other languages. Languages are the same, some exist practically by being first. Some exist only because they've had large companies like Sun or Java backing them. Others survive because they've been isolated cornering a specific need in finance or science or academia. I remember Java 1.0 and very early Javascript, that the world is now full of Android and AJAX apps is nothing short of a freak of history. Trying to analyze it from the language's qualities alone is never going to give meaningful results.
Live today, because you never know what tomorrow brings
Not even three months ago...
http://developers.slashdot.org/story/12/03/16/0240232/why-new-programming-languages-succeed-or-fail
Granted, the previous one is about new languages. But can't we assume every significant old language succeeded for at least some period of time (even if all some of them succeeded in is failing spectacularly -- remember Japan's push for "fifth generation languages" in the '90s)?
No. Well...maybe. Actually, yes. It really just depends.
This is somewhat sarcastic, but unfortunately true.
A language succeeds or fails because the company building the language and/or the tools put on a dog and pony show for your company executives. They buy into whatever crap is being sold and programmers wanting a job learn that language.
I wish it was based on merits and how a languages performs certain tasks, but unfortunately the above is true more often than not.
Looking for a job?
Want your resume written professionally?
DON'T USE TUNAREZ!!!
You got it spot on. One thing you didn't mention was critical mass - once enough people are using a language others will come along and try it (or be forced to use it at work) no matter how good or bad it is and once they're comfortable with it they'll probably carry on using even if there are better alternatives because a learning curve is always more hassle than staying with what you know.
A quick CTRL-F on "salary" and "money" turned up no matches at http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/viz/rank.html. And just to add a bit of flamebait. I guess that's what we can expect from an institution with the political and economic philosophy of Berkeley.
Look at Objective-C. No pressure for years let this language mature and not have to be a stakced series of kludges. It's a language that hasn't gone off the rails like Java did and now python is about to. It kept to it's low level roots and didn't have to build in every gimmick of the day. I gave up on java after about 1.4 because every program I had written was using deprecated syntax and libraries within a year.
Python when I first started was brilliantly simple. I was one of those imbeciles that ridiculed the whites space, and the lack of multiple approaches to things. Then I noticed that I could read everyone elses python and they could read mine. White space is brilliant! And having single idioms for any major concept means everyone can read everyone elses program. Insanely great language. Or it was. Now it's got some much library bloat and idiom bloat that it's becoming a dark art and old code will wither as libraries go unsupported.
Interestingly things I wrote decades ago in perl still work just fine. that language just reached maturity and mostly stopped.
The way I compare languages now is I measure the thickness of the O Reily pocket guide. Perl is very slim-- even slimmer than C++. Yet perl without adding any external libraries has high level capabilities.
Some drink at the fountain of knowledge. Others just gargle.
Doesn't include LISP, which is, of course, the correct answer for everything except serious number crunching.
And the serious number crunching could probably be faster piloted in LISP, at that.
I can't count the number of times the need for solutions to "intractable" problems comes up. Let's whip up a fuzzy blackboard system. Whuuuh?
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
+1 this.
Two of the most popular languages in existence are Visual Basic and PHP. Sure, they're inconsistent, oddly constructed and don't support polymorphism (which describes many programmers too, for that matter).
For classic VB, that's true. However, VB.NET introduced real object-oriented programming to VB.
GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
Programming languages succeed or fail by word of mouth and their resulting popularity.
Contrary to what some say, most programmers don't pick a language because it's elegant or simple to use, but because it fits they way they think about programming. And there are as many different ways of thinking about programming as there are programmers.
Some languages like Ruby achieve a critical mass and become "mainstream" languages. Others are equally innovate and capable, but do not achieve that mass, like Erlang.
It's not really that one is "better" than the other. It's just that one achieved that magic mindshare of fanboy evangelism to cause it to spread far beyond what it's mere syntax or capabilities justify.
If the simplicity and capabilities of a language were what determined it's success, we'd all be using purpose-designed languages like Ada or Modula, and C/C++/Java would not be the most popular programming languages on the internet.
Personally my biggest beef is languages that are designed to implement a certain style of programming efficiently, while making other common styles of programming virtually impossible.
Key example: Try converting an array manipulation algorithm to efficient Erlang. It flat out can't be done: Erlang has no good syntax for indexed access of it's lists, forcing you to do a tail-recursive iteration counting through the list elements to get to the one you want. (This fundamental flaw killed the last project I worked on, so it's a pet peeve of an example.)
Then again, maybe it's limitations like that which prevent Erlang from achieving any kind of critical mass.
I do not fail; I succeed at finding out what does not work.
True. I was referring to the old VB6. I don't know exactly how popular vb.net is.
Please do not read this sig. Thank you.
C took off because it allowed imperative programming more easily (and portably) than assembler, and functional programming in C is ridiculously painful. Cobol had a briefly popular stint based on the strength of its libraries for business. C++ added objects, and by some miracle made functional programming even uglier. Java added a sane library (and made portability even less of an issue), and provided a pattern for functional programming so difficult to use everyone hates it instantly.
And that's the complete history of the really popular languages. Nothing else even comes close to having been used as much, and weaknesses in those four areas are what's to blame:
Lisp: functional by design
Python: functional too easy, poor library compared to established java
PHP: library too insane
Basic: never had the libraries to compete with C, objects too late to compete with c++, inconsistencies rendered code non-portable
etc.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
Since PHP and Javascript stubbornly remain popular.
One distinction is whether the language was designed to meet a practical need, or to prove an abstract point in computer science. Plus, these days, the API is probably more important than the language - its certainly more work to learn a new API than a new language.
PHP is a crap language, but it gets the job done, makes it easy to programatically generate HTML and comes with a humungous library of useful functions. Plus, its widely available on commercial web-hosting services. When I tried some Python (after forcing myself to stop worrying and get past the 'significant whitespace' thing) , I found I wanted an XML/XPath/DOM library but all I could find were several half-finished attempts and a lot of discussion about what would be a suitably "Pythonesque" XML API (the well-defined standard DOM API sounds good to me). Maybe I was unlucky (Python isn't exactly unsuccessful) but that would have been a no-brainer in PHP, Java or C.
Likewise, Javascript is the only game in town for scripting web pages and has become almost platform-independent. It also became joined at the hip with the HTML DOM.
Java also had the big practical plus of being almost platform independent - and again now has a huge array of APIs that programmers have spent time learning.
Or look at C vs Pascal. VAX Pascal, Turbo Pascal, Delphi et. al. were quite successful because they each extended the language in proprietary ways, but standard Pascal was useless for anything other than teaching algorithms because it didn't have any practical API to speak of (you couldn't even open a named file within a Pascal program - that had to be done externally). C, on the other hand, always had a "de facto" standard library consisting of the subset of the Unix API described in "The C Programming Language", full of really useful utility routines for strings, file handling, output formatting, searching etc. You could do a lot in standard C without tying yourself to a particular dialect or platform, and the pre-processor let you #ifdef your way out of any incompatibilities that you did encounter.
C++ - a can of worms which only a language lawyer could love - probably hit the big time because of MS Visual C++ and the MS Foundation Classes. That and the fact that C programmers didn't think they had to learn a whole new language (see earlier comment about cans of worms).
Basically, don't expect your mathematically elegant new language (with no variables, who's only operator is 'is a subset of' and which uses UNICODE accents and ligatures to increase its expressivity) to take off unless it has POSIX regexps, bindings to MS Access and a WIndows application framework.
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
You might want to take another look. Perl got some serious implants.
"whom are working developers that already completed at least a bachelors in computer science. "
This is a fairly small fraction of the total people developing software, particularly, I suspect, among those who have substantive experience with more than one language. Lots of people wind up in the developer world without going through a CS curriculum. And, in fact, one can argue that Computer *Science*, per se, is not as good a background for a developer as, say, Software Engineering. Relatively little software development (in terms of hours spent, productivity, or pretty much any other measure) is focused on algorithm development.
Consider that in the 80s, CS departments were *just* getting started..
Two of the most popular languages in existence are Visual Basic and PHP. Sure, they're inconsistent, oddly constructed and don't support polymorphism (which describes many programmers too, for that matter).
For classic VB, that's true. However, VB.NET introduced real object-oriented programming to VB.
And PHP added a Java-esque OO system for PHP5, which I think was 7 years ago.
When I was an internet noob back in 1996, I had a vague recollection of Pascal from my CS 101 days. But for what I needed to do (interactive web pages), Javascript was the only way to go. Javascript was free, I didn't need to install anything to make it work, and it worked (sorta) on the platform everyone was using (internet browsers). Plus, there was plenty of demos and open-source code to steal.
Later, when I needed to do server-side programming, I learned PHP. Why? Because LAMP was free, easy to install (by that point the "AMP" part was bundled) and it worked on the platform everyone was using (internet browsers). Plus, there was plenty of demos and code to steal.
It was only much later that I realized how ugly Javascript and PHP code could be. But at the time, code elegance wasn't even on my radar screen. I just wanted to make things work. I suspect that my experience has been mirrored many time over.
Because they have to do either one or the other, duh.
systemd is Roko's Basilisk.
C took off because it allowed imperative programming more easily (and portably) than assembler
Also because its use in the development of Unix meant that it had a huge (by the standards of the time) body of existing code and libraries by the time it was sprung upon an unsuspecting world. The very fact that you could use this portable, (moderately) high-level language for writing a complete OS without abandoning performance was a revelation. And the fact that Unix began invading universities shortly thereafter helped as well.
Since the rise of C, some loose compatibility with C has been a major factor too. When it came to powerful scripting languages, we had Rexx and Perl--and which one had a more C-like syntax? That's right, the one that succeeded, Perl. And Java is notable for it's C(++)-ness too.
It's rarely one or two simple factors, but usually a whole mess of things.
(As for functional programming, I think that's pretty much been a non-issue the whole time.)
This is false on the surface. There are tons of popular languages that use a C like syntax but that doesn't mean it's the easiest language to understand if you've looking at the syntax of various languages without prejudice.
The reason C syntax is popular is because existing programmers learn it relatively early and they pass that on to new programmers. And most programmers are too lazy to want to learn a new syntax once they're comfortable with the one they're using.
Sounds like your perspective on this is the "getting a quick task done", such as scripting system administration. I would suggest that that is a whole different ballgame from any software project of non-trivial size or complexity. Note that in the survey results, PHP and VisualBasic have very similarly abysmal scores for "Code written in this language tends to be reliable" and "This language is best for large projects".
A language/methodology can catch on fast if it is the price of entry to a hot field. Broad, long-term popularity requires finding applications outside the original field.
Objective C is the current price of entry for iOS development. It will stay around as long as Apple allows no alternatives, but is unlikely to grow outside that niche.
OOP was the price of entry for GUI toolkits. It has since proved its worth as a general structure and analysis method.
Java started out as the price of entry for applets. It eventually settled in as a portable platform for enterprisey stuff.
Lisp was the price of entry for AI. It died back when strong AI faltered.
Functional programming may yet become the price of entry for reliable concurrent programming.
To a Lisp hacker, XML is S-expressions in drag.
Programmers are like Golfers. Anything they 'think' will improve their game, they're all over it.
emotional buy in.; which is one reason why software development is such a pit.
The Kruger Dunning explains most post on
Because of marketing, period.
That's easy:
A language generally succeeds if both of those are true. Now ease of use is a moving target; if you're writing system level code, you're not going to want to use a dynamic interpreted language, if you're writing some throw-away script however, dynamic interpreted languages become attractive.
I'm not sure why we even need to ask/answer this question. Languages are just like products of technology. People use them based on their requirements and how popular they are. Popularity is important because if you have a problem, you know that others using the same product may have some experience with your problem so you can seek help/advice.
I started by writing QBasic and I find the ALGOL-derived syntax of C to be easier to read and type.
Why is this modded up? Can somebody translate to clear English?
The reason C syntax is popular is because C is a very good language for learning serious programming skills, as it will obediently perform any awful shit you ask it, then fling it back into your face harshly. It's the fucking drill of programming skills. It has got other qualities, but this one is very important for academical circles.
As a result, most if not all serious programmers had to go through it at some point in their education, and end up reusing its syntactic elements in the event that they design a new language.
There's nothing like $HOME
Yes it is, one of those.
Some drink at the fountain of knowledge. Others just gargle.
I've taken a look at dozens or even hundreds of languages over the past 20 years, it's sort of a hobby, and I'm pretty sure that the following point are key to the success of a language:
1. Huge number of available third party libraries and ease of installing them (batteries included).
2. Existence of a working cross-platform GUI library with native widgets. [desktop or mobile applications only]
3. Easy deployment of executables, good IDE and toolchain support (e.g. RAD GUI tools, build automation, etc.)
4. Good, friendly, and non-elitist community
5. Speed and low memory use (often go hand-in-hand, even though theoretically the opposite should be the case)
Point 2 is only relevant for desktop applications, of course. Many otherwise great languages fail because they lack 1 and 2.
I think some languages become popular simply because they are preinstalled and free on a given platform. They are available by default so why not use them.
Despite fanatism for a lot of languages, I believe languages catch on when they are easy to understand by others and have an easy to understand syntax or interfaces. Plenty of times you see announcements of new languages which claim experimental or higher level syntax abstractions or constructions that allow the programmer to write less code, or claim to resemble human language more. Yet in practice, I don't think programmers spend most of their time actually writing the code but thinking what to write, so making an algorithm or behavior as clear as possible should be preferred to writing unnecesarily shorter code that does the same.
Yes, clarity is important. That's why we value higher-level abstractions; why did you dismiss them above?
I agree about "claim to resemble human language", but noone's used that argument for at least 30 years.
I think Perl succeeded because it combined the capabilities of shell and awk into the same language. Before Perl a lot of the scripted utilities people would write were composed of several different scripts combined together; sh, awk, sed, tr, etc.
I'm surprised.
That's not why it beat Rexx, no, though that's certainly a reason why both Perl and Rexx became popular. Of course, Rexx was more of an IBM thing, but it had its advocates even on Unix. Ultimately, Unix guys liked the more Unix-y flavor of Perl, which was due in no small part to its syntactic resemblances to C, and Rexx-on-Unix became more of a curiousity than anything else. I suspect the last place Rexx saw much use was on the AS/400, although it's still available in Debian for the true fanatics. :)
Me, I had Perl and gcc and bash running on OS/2 back in those days. Rexx was supposed to be the glue language for OS/2, but I already knew C, and found Perl much more accessible.
There was ARexx on Amiga which was very popular and was _the_ scripting language for a time.
Sure, they're inconsistent, oddly constructed and don't support polymorphism (which describes many programmers too, for that matter). Nevertheless, you can get something *done* in jig time and move on with your life.
Spoken like a true developer, and not the IT guy who has to support your little... gem... fifteen years after you "got on with your life" and left it running the corporate accounts receivable on Visual Basic 1.0 on the Windows 3.1 server in the broom closet.
.
You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
Abusive moderation alert.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
Programmers... one of the only groups of people who are supposed to embrace logic yet, are completely ruled by emotion when it comes to someone saying something bad about "their" language!
http://www.gibby.net.au
I have created a programming language myself, with the aim of
A) having the same safety assurances as managed langiages (Java, C#, Perl etc)
B) being (nearly) as efficient as C++ in terms of memory and runtime
C) being as realtime-capable as C++ or Ada (no random GC runs)
D) having highly useful C++ concepts such as Destructors
E) having support for multithreaded computing in the type system
Here is it: http://sourceforge.net/projects/sappeurcompiler/
I am an individual developer and my marketing/propaganda means boil down to being able to write comments on sites like this. Of course I tried to drum up my language by pointing out all the advantages (see above). I tried to explain people why Java is unnecessarily inefficient, why C++ is a security risk.
What I got in response was only about two guys even using the compiler for a few minutes. Most replies to my arguments would be either ridiculing syntax, ridiculing the name or saying that their main language was already perfect. Pretty much the same in the real world, just less ridiculing. I got the impression that most programmers are either intellectually lazy and challenged to analyse new concepts or they are lazy in the sense that they do not want to learn any new language in addition to their main one. They go great lengths to defend Java/C++/PHP/C# or whatever their mainly used language is. That is to some degree rational, as learning a new language is a huge investment (time spent learning is an opportunity cost).
Still, I find it irrational to refuse even the consideration of making a change. I find it irrational to use some tool just because many other people use it and because a big corpo (MS, SUN) is pushing it. It has now become very clear that Java is far from ideal and all the supposed benefits are mainly theoretical. In reality, Java is insecure, bloated, kills user experience with random freezes (for GC) and the VMs on mobile phones are utter alpha-grade crap. Similar things could be said about C#, but it is hugely successful because of MS pushing it.
From a simpleton perspective (such as MBA-style reasoning), a popular language might be a rational choice, especially when you factor in employability, but from the perspective of creating excellent products and achieving best developer efficiency, they are not. Objective C was a fringe language until Apple sold their excellent quality product in the millions. Delphi/object Pascal is a fringe language because the maker cannot subsidize their IDE, but those who are in the know recognize it as efficient in terms of developer time and in terms of runtime. Delphi programs also don't freeze because of GC.
So the conclusion is - most programmers have the same mindset as the ladies in the vertical business - "whatever makes a quick buck is a good thing".
I find it is a well-thought out language and those who bitch about syntax, implicit variables and write-only programs are actually ridiculing themselves.
A competent software engineer will use proper variables (instead of the implicit ones) and will absolutely not be offended by a particular syntax. I find Perl is extremely well-done and I can (somehow) love it. That is something I would never say about Java, because I have used some many crap implementations (J2ME phones) and have seen so many changes and have waited so many hours for a Java app server to just start up.
With perl, the edit/debug cycle is measured in seconds, while in Java and C++ it is normally minutes if not dozens of minutes. All the IDE I need is vi or notepad++. Lightweight, powerful, correctly implemented. The world will be a worse place when Larry Wall fades away !
If you really know perl, you will be quite monogamous. I had relationships with Smalltalk, Pascal, Python, Java but I don't miss them. My employer pays me to fuck with C++ and to prostitute myself to C#, but I am not in love with them. Perl is always there and will reliably and quickly to the little jobs I need to do - just for a hug.
..will spend hours to solve insane problems of a machine. Girl's don't cut it.
..that is what the average MBA-retard will look at. Then they will conclude that the largest market for programmers is people capable of Java, .Net and C++. That's the killer argument for them. Technical and economic merits ? They don't understand and they do not want to be enlightened.
The western world has been brought into the crapper by this "management talent" who don't have a proper education and no inclination to dive into something intellectually challenging. Meanwhile China is run mainly by engineers and their success relative to the MBA crappers speaks volumes.
When C came out in the 70's it changed the world. But, when Bjarne tried to implement C++ in the 80's, we got into trouble, and we've been searching ever since. So, we got Java in 1995 from Sun, and a whole ecosystem based on Java. Then we got C# from MS in 2000(?) and the Visual Studio ecosystem.
Programming in C eventually gave us UNIX and Windows (and Mac OS) but moving to C++ was, again, a tough slog. The Object-Oriented "thing" that happened to software development has never been fully resolved. Did that reduce complexity or increase complexity?
That's right--forgot about that one. Yeah, Rexx had quite a following for a while there.