Why Are There So Many Programming Languages? (acm.org) 160
Long-time Slashdot reader theodp writes:
Recalling a past Computer History Museum look at the evolution of programming languages, Doug Meil ponders the age-old question of Why Are There So Many Programming Languages? in a new Communications of the ACM blog post.
"It's worth noting and admiring the audacity of PL/I (1964)," Meil writes, "which was aiming to be that 'one good programming language.' The name says it all: Programming Language 1. There should be no need for 2, 3, or 4. [Meil expands on this thought in Lessons from PL/I: A Most Ambitious Programming Language.] Though PL/I's plans of becoming the Highlander of computer programming didn't play out like the designers intended, they were still pulling on a key thread in software: why so many languages? That question was already being asked as far back as the early 1960's."
One of PL/I's biggest fans was Digital Research Inc. (DRI) founder Gary Kildall, who crafted the PL/I-inspired PL/M (Programming Language for Microcomputers) in 1973 for Intel. But IBM priced PL/I higher than the languages it sought to replace, contributing to PL/I's failure to gain traction. (Along the lines of how IBM's deal with Microsoft gave rise to a price disparity that was the undoing of Kildall's CP/M OS, bundled with every PC in a 'non-royalty' deal. Windows was priced at $40 while CP/M was offered 'a la carte' at $240.) As a comp.lang.pl1 poster explained in 2006, "The truth of the matter is that Gresham's Law: 'Bad money drives out good' or Ruskin's principle: 'The hoi polloi always prefer an inferior, cheap product over a superior, more expensive one' are what govern here."
"It's worth noting and admiring the audacity of PL/I (1964)," Meil writes, "which was aiming to be that 'one good programming language.' The name says it all: Programming Language 1. There should be no need for 2, 3, or 4. [Meil expands on this thought in Lessons from PL/I: A Most Ambitious Programming Language.] Though PL/I's plans of becoming the Highlander of computer programming didn't play out like the designers intended, they were still pulling on a key thread in software: why so many languages? That question was already being asked as far back as the early 1960's."
One of PL/I's biggest fans was Digital Research Inc. (DRI) founder Gary Kildall, who crafted the PL/I-inspired PL/M (Programming Language for Microcomputers) in 1973 for Intel. But IBM priced PL/I higher than the languages it sought to replace, contributing to PL/I's failure to gain traction. (Along the lines of how IBM's deal with Microsoft gave rise to a price disparity that was the undoing of Kildall's CP/M OS, bundled with every PC in a 'non-royalty' deal. Windows was priced at $40 while CP/M was offered 'a la carte' at $240.) As a comp.lang.pl1 poster explained in 2006, "The truth of the matter is that Gresham's Law: 'Bad money drives out good' or Ruskin's principle: 'The hoi polloi always prefer an inferior, cheap product over a superior, more expensive one' are what govern here."
Standards (Score:5, Funny)
Standards are often adopted and very rarely deprecated.
There is an xkcd that addresses this: https://xkcd.com/927/ [xkcd.com]
Re:Standards (Score:4, Insightful)
Indeed. Also tons of people that do not understand what is there and mistakenly believe they can do better.
Re: (Score:3, Insightful)
Some languages were just experiments to see what works and what doesn't so that they could ultimately be replaced with something better. For example C++ was an experiment that taught us all kinds of shit that you should never do that is now firmly baked in to the language that the developers now have to live with, so naturally rust has come along to replace it.
Re:Standards (Score:5, Insightful)
It's not just that either. Not all languages are created equal. They have strengths and weaknesses. This is kind of like asking "why are these so many different types of hammers?"
Turns out there are a lot of different problems solved by programming languages, and in many cases, these problems have vastly differing priorities. I write videogames, so top concerns are: performance, compatibility with ecosystem, expressiveness.
That's probably going to be an entire different set of priorities from someone writing in some other domain. In that case, maybe they'd prioritized safety over performance, in which case, a managed language might be a better fit.
Re: (Score:2)
Re:Standards (Score:4, Interesting)
Funnily I just watched a video by a psychotherapist who was asking why so many different therapy models? I wondered if it was just that, it's a highly creative/artistic process (your own mind can choose to organise it how you like) and that individualism naturally is an avenue for self expression, so if you aren't writing and creating and conceiving of new ideas, it's an unscratched itch.
Re: (Score:3)
Re: (Score:3)
This is so common (regardless that it is stupid), it has a name: "Not invented here" syndrome https://en.wikipedia.org/wiki/... [wikipedia.org]
Or stated differently: Those that do not know what tools are out there are doomed to reinvent them, poorly.
You can only ever get anywhere unless you stand on the shoulders of those that came before. There really is no need for any new programming languages at this time except in really specialized applications and usually not even there. Yet people keep inventing and inventing and i
Re: (Score:3)
Same with other areas as well. I have some involvement (due to work) in the area of security standards and I reckon you could solve the global energy crisis by hooking up a generator to the neverending mindless churn of "ooh, shiny!" that runs day in, day out in those.
And specific to that field, since complexity is the enemy of security and most of what the mindless churn is producing is more complexity...
Re:Standards (Score:4, Insightful)
There is definitely some truth to this. To be fair, windom-managers are not very intrusive on the system and application side. It is just window-management after all, applications still display and run fine. Same with editors. The rest is pretty much a bad idea and a sign of immature engineering.
As to "nothing settles down", there are notable exceptions. For example, I am still on FVWM2 and nobody felt a need to do any major change for a long, long time now. This thing just works and does a good job. The Linux kernel is pretty stable in the tools used, although the Rust-cabal tries to sabotage that in their craving for attention.
My take is we have two groups:
1. Experienced engineers with solid skills. These People understand KISS and "if it is not broken, do not fix it". They do stuff that, from the beginning, is aimed at long-term use and they stick with it and do not believe that "revolutionary" is a positive concept.
2. Wannabees with big egos, often with just enough skills to do damage. These redesign everything every 5 minutes, because they do not want to do good tech (and in fact do not understand what that even means) but leave their dog marks everywhere to bolster said ego. For example, systemd is an instance of that. So is Gnome. So are most web-frameworks.
Re: (Score:2)
These People understand KISS
What has that to do with designing a (new) programming language? Obviously nothing
And there you have outed yourself as completely and utterly clueless. Not the first time.
Re:Standards (Score:4, Funny)
Reminds me of the story I read in some management text decades ago, which stuck in my memory. Referring to some manager who could never resist "fine-tuning" other people's work, the author quoted one disgruntled employee:
"After he pisses in the soup, he likes the taste better".
Re: (Score:2)
See: Esperanto ;-)
Re: (Score:3)
Also true when they DO understand what is there. What happens is that there is something that bugs them about ALL languages, so they set out to fix that. Even if fixed, they introduce features that sufficiently many others hate.
It's like trying to untie an untieable knot: you untie part of it, but you have just shifted the untiable part somewhere else.
Re: (Score:3)
Programming isn't that hard, if you have a good foundations in Computer Science, or Experience with Coding, learning a different language isn't a big deal at all, especially today where online resources are always available.
We need to get off the stupid idea that we need to unify on one language, But choose the correct language for the job.
C code runs faster than Python, unless you get sick of it or hit a time frame where optimal coding cannot be achieved, then the Python code with its libraries may do the
Re: (Score:3)
Programming isn't that hard
And at that time you have already disqualified yourself from this discussion. Programming simple things is not hard and for them you can really use whatever you like. But most actual programming tasks are not simple things and there programming is hard. I mean, not even standard business logic is simple to get right.
When I graduated CS (M.Sc. with honors as one of the 5 best of 250 that year), I am pretty sure about half of the graduates in that year could not code for shit. And I have already counted peopl
Re:Standards (Score:5, Interesting)
This is true, but it's not just diversity. There are multiple languages that essentially are identical in capabilities.
A lot of time this may be due to not liking a language and so yet again, create a new one. After all, for scripting languages it is very easy to create a new one. You don't need to understand compiler technology. Sure performance sucks but that'll be fixed in the future. But before the performance is fixed someone will say "this sucks!" and create yet another scripting language.
Also languages get abused and corrupted into doing something they weren't designed to do, growing into a near mandatory environment that everyone depends upon. Javascript I'm looking at you as the stillborn child that survived and went on a murderous spree (or am I thinking of a movie?). Horribly designed, originally intended for extremely simple actions in a browser, ending up standardized as EcsemaScript.
There are older languages that go nowhere that suddenly became popular. Like Lua.
There's "I can write a better X than X" - thus C++, Objective C, Ratfor, and so forth.
Sometimes a language's author goes on a spree creating several languages with the same underlying ideas, or who inspire others: Niklaus Wirth for example.
You could also say, there are so many different paradigms for programming, why stick with just one language for each. To be honest, the most popular languages are all using the same procedural programming paradigm.
Re: (Score:2)
To be honest, the most popular languages are all using the same procedural programming paradigm.
No.
Counterexamples: Java, JavaScript, C#, C++. And anything build on top of them like F#, TypeScript, Groovy, Scala.
None of them is procedural. And 99% of the planets software is running on them.
Perhaps you meant: imperative???
Re:Standards (Score:4, Insightful)
PHP 'won' on its merits. It's still incredibly popular, because it really is better than the alternatives for most applications. It's easy to use, has a large and well-documented standard library, and it makes deployment incredibly simple. It's mature, stable, fast, and it's easy to find experienced developers.
You're not going to get rid of PHP until a language comes along that handily beats it in all of those categories.
Re:Standards (Score:4, Insightful)
Popular isn't the same as good. Look at some of the world's largest fast food chains for example - definitely not good food, but they remain popular because they are, quick and readily available when you get hungry on the move or are in a hurry.
Re: (Score:2)
Popular isn't the same as good.
In this case, it is. See my post for details.
Re: (Score:3)
There are multiple meanings of "good". PHP is good in the sense that it enables people to create dynamic websites easily. It'll never win "Most Elegant Programming Language", and most people who like it will acknowledge that. It's much easier to get something created quick with PHP than with the common alternatives, and that has value.
Re: (Score:2)
I found that some standards were silently deprecated - they work in an earlier version, but updating causes things to break.
Example: The BSDGames package has a few games manipulating stdscr, and the ncurses library no longer allows that by default. As a result, it no longer compiles.
Oh, and Adobe Flash. That standard was pulled, and the latest flash player has a hard-coded timer to prevent anything from working with it.
Babel Tower - Python (Score:4, Funny)
it's the Babel tower of programming languages.
But the story ends better: in the end all of us will use Python.
Re: (Score:2)
We love inventing them, and get attached (Score:5, Interesting)
I used to joke with younger programmers that I really had forgotten more languages than they ever learned. Part of that was sheer age - assemblers that don't exist now, the FOCAL language for the PDP-8 I learned in high school. Partly, it was a course in "comparative computer languages" in my CompSci degree, where we learned why things like SNOBOL and APL had been invented - the perfect languages for a few problems, and there are some people who work on just those problems all day.
Then there's my multi-decade obsession with FORTH, that that amazingly compact, simple language could so quickly build up to complex data/code objects, like LISP, which also has people like Paul Graham, who will use no other.
It's always painful to solve a problem with not-quite-the-right language. As Mark Twain said, the difference between the right word and the almost-right word is the difference between lightning and the lightning bug. So people who have to work on that kind of problem tend to invent another language. Or, um, "System": what DO you call Wolfram's Mathematica? (APL++ was one suggestion.)
And, drum roll, it's just a fact that computer-programming types just love inventing languages. Humans mostly do. Put six teens together and they've invented words nobody else uses, by the end of Saturday. Give them a few more decades and you get Papua New Guinea. (9 million people, 800 languages)
Re:We love inventing them, and get attached (Score:5, Insightful)
I think you hit it on the head with the perfect languages for a few problems, and there are some people who work on just those problems all day . I often talk to software engineers who boggle that I only work with C++ and Python and never try anything else. Those languges are pretty much perfect for what I do all day (systems programming), and I rarely write user interfaces of any kind, web or otherwise, couldn't care less about deploying to other users, let alone the cloud or an app store, etc.
They however are certain that C++ "is dead", and "nobody uses it", because everything they do is javascript (for example) and that's all their peers use.
I'm not really sure this is a bad thing either. Toolboxes have a lot of things in them and can grow expensive, but if you know what's in there and how to use it, having the right tool saves a lot of time and money. There's something to say about not wanting to spend $500 on an item you'll use exactly one time no matter how perfect it is, and some languages do die as a result of this.
Re: We love inventing them, and get attached (Score:3)
Same, C++ AI shop here, and happily enjoying C++ while everyone else chases performance and have the same number of bugs that we do.
Re: (Score:2)
C++ is my primary language for interesting stuff (high performance), but I prefer golang for tedious, uninspiring tasks like processing files, and JavaScript for GUI. I do plan on learning Python, especially once Mojo is more or less complete.
Re: We love inventing them, and get attached (Score:3)
Re: We love inventing them, and get attached (Score:2)
Re: (Score:2)
Perfect is too strong a term to use to describe Snobol, no matter what your problem.
I rather liked Forth, but I thought it needed an extra stack. (Not an extra special purpose stack like some Forth dialects.) At the end of the day, though, my tolerance for polish notation is a bit limited. (That goes for LISP. too.)
I took a whack at inventing a language, but never got any farther than building a parser. (OTOH, if you write Forth code, you essentially ARE building a language interpreter.)
Re:We love inventing them, and get attached (Score:5, Interesting)
FORTH and Lisp are great languages. They also are not in the common programming paradigm.
FORTH though properly is a procedural programming language. Though it kind of breaks a common mold of that ilk (C, Python, whatever) by trying to be a highly compact and efficient to run on very small microcomputers, but also with a programming style that focuses on decomposing a program into extremely short functions. Refactoring at every opportunity and taken to an extreme. Probably freaks out people who think optimization should never be done until a program is no longer in use, and even though delay it a bit.
Lisp and other of its ilk are just plain elegant. Though some pragmatics has Lisp doing procedural programming, Scheme avoid this, and the style in many Lisp communities is to be purely functional rather than procedural. I fell in love with this when learning how simple it was to write a merge sort in Lisp versus in C or Pascal. Split the list into two groups (even/odd, first/second half, etc), sort those, merge together, done.
I really loved my Comparison of Programming Languages class, I got so much more insight in that class than possibly any others. It was just an elective but I really wish it had been a required course.
Re: (Score:2, Insightful)
FORTH and Lisp are great languages. They also are not in the common programming paradigm.
Both of those languages I would not want to use professionally (though I know LISP has been used that way) but they are excellent languages to know, to help you understand different ways of approaching problems in programming.
Re: (Score:2)
Having a bit of experience with (admittedly eccentric dialects of) Forth and LISP, I can see how they're conceptually similar, while also working almost like mirror images of one another. Forth composes everything on the stack, which is super efficient. LISP composes everything recursively, which is super inefficient, but oh-so-elegant! (Especially if you're in love with the concept of recursion and obsessed with doing everything, right down to basic loops, recursively, haha!)
And syntax? C at least puts
Re: (Score:2)
Recursion in Lisp can be very efficient. Tail recursion is commonly used, which optimizes to a simple branch. Stack contents, at least in traditional Lisp interpreters is not necessarily that large, because symbols and their values aren't on the stack.
Re:We love inventing them, and get attached (Score:4, Insightful)
I think of it as the pirate ship lego problem.
If you want to build a pirate ship from lego, the pirate ship lego kit has all the parts you need and makes it a lot easier than if you use generic lego. If you want to disassemble it and build a car though, it's a lot harder. Sure, you can paint over the pirate's eye patch, and use the anchor as a brake, but it's just not the same and it going to be a bit whack.
Using the generic lego set takes a bit more effort to build the pirate ship, but you can build anything with that same set.
That's why there are so many languages. sometimes you only want to build websites, so using a language that has all the tools for that (eg. PHP) makes sense compared to coding it all up in say, C or C++.
Other times you want to get down and gnarly with the hardware (eg. for a video driver), and need to squeeze the best you can from it, so you need minimum layers of abstraction and need good control of how memory and other resources are used.
Re: (Score:2)
We used to maintain a commercial compiler, compilers are fun (or scary beasts for some, tomato, tomato) and they solve a large class of problems. Once you learn how to build them, they can be a great tool to have in your tool belt, and every once in a while someone implements a popular one.
The joke is kind of true, once you learn how to quickly make one, many prob
Hardly the only one. (Score:5, Insightful)
PL/1 was not the only one that sought to be the ultimate language.
Ada, APL, Algol, LISP, and a few others had followings that thought "their" language would be the only one that would ever be needed. I would bet money that I am the only person present who ever got paid for programming in APL.
What foiled this was the ascendancy of C to replace assembly language. For all its flaws and shortcomings it was just too potent and useful to be supplanted. Not only was it used to write operating systems, but also to bootstrap nearly every other language that was to come into being including those meant to be the "one" language. And C++, in spite of all its flaws and shortcomings, simply lengthened that hegemony.
Re: (Score:3)
C (and C++) had the advantage of being the original open-source language. Everybody learned it, everybody wrote in it, so every library you needed to work with anything was implemented in it.
Most of the other languages failed to catch on because they didn't have a *standard* way to access the system or ui libraries implemented in C. If the linkage to C was more standard and portable, say how node.js integrated c/++ based libraries, things might have been different for the others. Python got some of it, but
Re: (Score:3)
I remember a few years back (forget how long) when I first got a project were I needed to learn Node.js. When I got around to learning the standard library for file I/O I was surprised to see that I knew the function calls already. They were just basically variants of the standard C libraries I used many decades prior. The names and parameters were largely the same.
It was like studying Japanese and then learning how they had imported a bunch of English words.
Re: (Score:2)
Re: (Score:3)
C supplanted assembly though, which was vital. No one has really written a Python compiler in Python, so that you can boot up literally everything using only Python. The vast majority of these scripting languages have C down at the bottom. Maybe someday it'll be Rust at the bottom or something else that's a true compiler from day one. But most likely you won't see Javascript ever as bottom layer language that talks to hardware, except perhaps as a hack just to prove it ca be done.
And the reason C got in
Re: (Score:2)
Re: (Score:2)
Byte code isn't machine language, and there's no machine model that matches this. It's a C engine under the hood interpreting the byte code. Now granted, there are newer compiled Python variants that spit out actual object code; not sure if it managed to create its own runtime library or instead it relies upon a C based library but those are newer and not the standard Python you get by saying "apt install python".
Re: (Score:3)
AFAIKT, in the domain I programmed in Fortran was the universal language. It didn't really have any competition before around 1990. (The competition was things like WhatFor and Mortran and Ratfor.)
Re: (Score:2)
That seems like a pretty cloistered domain for 1990.
But yes, FORTRAN definitely had supremacy in some circles. I remember when the University of Minnesota released their compiler for the CDC 6000/7000 series of computers. It seemed revolutionary at the time when computer languages were largely developed and distributed by the computer manufacturer.
My experience goes back to the FORTRAN II (yes II not IV) setup for the IBM 1620. Man was that an experience. Machine language was much less hassle.
Re: (Score:2)
Re: (Score:2)
I would bet money that I am the only person present who ever got paid for programming in APL.
You would lose that bet. I also got paid to write "auxiliary processors" for the IBM APL2 variant.
Re: (Score:2)
My long lost brudder. *sob* *sniff*
Re: (Score:2)
> I would bet money that I am the only person present
> who ever got paid for programming in APL.
I'll take that bet. I made a bit of spending money in college by acting as a computer labbie in a room full of IBM 3270 terminals running APL. I wouldn't call my past self an expert, but I could help the occasional student working on a course assignment.
Re: (Score:2)
I didn't even realize that APL was available for the PDP-11. I guess I never really hooked into the community. I remember once showing some of my work to a mentor/colleague who sniffed, "you know you could just write C functions to do all that."
Looking up the manual, I see it has a dedicated section for dealing with terminals without the APL character set. Although as a user I could see the appeal I never shook the feeling that the hassle of the specialized hardware just wasn't worth it.
I did SNOBOL
Language Developers (Score:2)
Re: (Score:2)
Usually they're just regular developers. Languages are created for the same reason programs are: To solve a particular problem. Each language you know is just a tool in your kit. Use the right tool for the job.
Re: (Score:2)
That's what my boss keeps telling me.
Re: Language Developers (Score:2)
computer science education encourages it (Score:3)
Most students are (or should be) taught the principles of implementing a simple language or a systems-level library (I had that in my freshmen and junior years). From there, it isn't much of a stretch to consider and imagine creating a new one, if you can find a reason why it might be better than what exists. Often it is a matter of encouraging a stricter adherence to a coding philosophy (e.g., OO or Functional) than the current languages provide as they often, once released, get compromised into supporting multiple paradigms. Others come into being as higher-level abstractions or combinations (JSX being a blend of javascript/typescript + html).
Some of these projects move on from being pet projects or phd theses into actually released into the wild.
Once you can simplify how to connect a new language to an existing system and standard library, esp networking (for server) or javascript/dom (for ui), it stands a chance at catching on. JSX caught on because it combined html/javascript in a way that made it simple to read and generate. Yeah, it mixes paradigms poorly...but it produces readable, working code and that's enough for most.
Re: (Score:2)
Because languages... (Score:5, Insightful)
... are just tools made by human beings and each tool shows the limits of the knowledge of the author.
AKA you wouldn't use a woodcutting axe to butter your sandwitch and you wouldn't use your butterknife to cut a steak (ideally).
Different languages are human beings exploring the limits of their own knowledge given a problem domain.
Re: (Score:2)
What about a spork?
Re: (Score:2)
Lisp would be a lot better as a tool if it had better library facilities. The kind of garbage I found when trying to use it caused me to prefer D, Python, or C++. Probably also Java, but I've tended to bounce off Java since around Jdk1.5. The reason varies depending on what I've doing, but it never seems to be the best choice.
Here's why (Score:5, Funny)
At the dawn of computing, the whole world had one common language. As coders ventured forth to develop applications they founded a startup and obtained funding. They said to each other, “Come, let’s make APIs and web services that interoperate.” Then they said, “Come, let us build ourselves a powerful AI, with a network footprint that reaches into every facet of people's lives, so that we may make a name for ourselves; otherwise we will be scattered over the face of the whole earth.”
But then Bill Gates came down to see the AI system people were building. And Bill Gates said, “If as one people programming the same language they have begun to do this, then nothing they plan to do will be impossible for them. Let's confuse their language so they will not understand each other.”
So Bill Gates scattered them from there over all the earth, and they stopped building the AI. That is why different programming languages exist —because Bill Gates confused the language of the whole world. Since then Bill Gates scattered them over the face of the whole earth.
Re: (Score:2)
The only time when there was only one language was back when Babbage was designing machines and Ada was the only programmer. Ever since then there have been multiple languages, because the hardware used different models. The German machines didn't have the same op-codes as the US machines did, and neither was the same as the British. Then there were multiple groups in the same country designing computers..and programming them. And things got more complex. They started to get simpler around the early 19
Re: (Score:2)
Humans and Machines (Score:4, Insightful)
Not all humans think the same way.
Not all languages are equally expressive for all problems.
Not all languages are equally optimized for all tasks.
It's both Psychology and Engineering.
Check out a hammer store sometime if you're inclined to think similar tasks require a common solution.
Windows wasn't bundled with the IBM PC (Score:2)
It was MS-DOS, purchased from Seattle Computer Products, where it was designed as a CP/M clone for 808x.
Re: (Score:2)
It was MS-DOS, purchased from Seattle Computer Products, where it was designed as a CP/M clone for 808x.
There is no such thing as "808x". The CPUs 8080/8085 and 8086/8088 are very different, and are binary incompatible, despite the number similarity. The CP/M OS itself was originally written for Intel 8080, so SCP didn't need to clone it for the same CPU again. The clone they created was for Intel 8086/8088 only.
Paradoxically, Tim Paterson, the guy behind SCP's system software effort, later made another CP/M clone, this time for Zilog Z80 (which was Intel 8080 compatible), called MSX-DOS, but it's another sto
Simple and profound answer (Score:2)
Computers exist in the physical domain.
The physical domain is well-approximated by its analog in thought-stuff, but is not identical with it.
Algorithms exist in the domain of thought-stuff, but must be implemented in physical computers.
Because the match is imperfect, the language one uses to express thought in the physical domain must make compromises to make the match better where it counts at the expense of worse correspondence elsewhere.
Thus, many programming languages and cpu architectures, each better
For the same reason (Score:4, Insightful)
Drake equation for computer languages (Score:5, Funny)
R = the average rate of babies being born on Earth
fp = the fraction of those babies who survive
ne = the average number of people who are capable of learning a computer language
fl = the fraction of people who are capable of learning a computer language that actually learn a computer language
fi = the fraction of people who learn a computer language who think about creating a computer language
fc = the fraction of people who think about creating a computer language who start creating a computer language
L = the fraction of people who start creating a computer language who actually finish creating a computer language
Re: (Score:2)
I'm not following how what you say falsifies the equation. The fraction in the category can change .. it's not a frozen number. For example the number of people born can increase as can the average number of people who are capable of learning a computer language etc. You could apply the Drake equation towards a high probability thing like say the number of people born in the 20th century who have ever ridden in a motorized vehicle. You just set some of those "category probabilities" to 0.9999.
Note: I do con
Re: (Score:2)
There's another major problem with the equation as I wrote it out: One person can create multiple programming languages. So we'd need to add another term to the equation for that, and that would be the one term which would allow it to go up instead of only down.
Of course it would be even better if we used average number of programming languages created per person per year, multiplied by the number of years the average person lives...
A dangerous question (Score:4, Funny)
If you start asking why there are so many languages, you start to investigate and find no language is "perfect" (according to your own definition of perfect), and before you know it you awake from a blackout and find you've invented another language...
Re: (Score:2)
Re: (Score:2)
Hmm... "Blackout" would be a good name for a programming language...M
And so it begins.
Although beware that if creating a perfect inverse, you may inadvertently be violating patents from Whitespace [esolangs.org].
Now that we have AI... (Score:2)
People already create new languages by the dozen. Now that we have AI, we can create new languages by the hundred. Fortunately, AI will explain how to use all these new languages. Then they'll make languages obsolete, and finally, they'll make people obsolete. We're doomed!
Not quite Gresham's Law (Score:2)
This is an incredibly niche point, but Gresham's law is about people melting down coins for their metal content whenever one particular specie is of a higher gold or silver content than another. The "good money" and "bad money" in question are literally "pure coins" and "debased coins." You could extend this to, say, grey market economies where USD or Euros might be preferred over an unstable local currency that supposedly has the same face value, but that's about it as far as modern applications go. It cer
My milkshake is better than yours! (Score:4, Funny)
My programming language brings all nerds to the yard and they're like it's better than yours!
Multiple reasons: Ego, Paradigms, Laziness (Score:3)
1. Ego
Every language designer thinks he can do a better job then the last guy. i.e. COBOL.
2. New Paradigms / Doman Specific
Languages evolve. Sometimes they are shoe-horned into existing languages (C++ evolved as a multi-paradigm language), sometimes a whole new language is designed such as Lisp, Smalltalk, or Prolog. We have languages like Haskell because functional programming was the priority. Sometimes you have retarded ideas about whitespace and you end up with brain-dead garbage like Python.
3. Laziness
We have yet-another-language-fad because people don't want to learn how to become good with an existing language.
Re: (Score:3)
Re: (Score:2)
That explains its misguided verbosity. /s
Updated Reason #1:
Every language designer thinks they can do a better job then the last person. i.e. COBOL.
CPM-86 and the IBM PC (Score:3)
There is only one programming language! (Score:2)
And that's Prolog.
'All the others are just compilers'
Pretty sure O'Keefe actually said something like that.
the punch card era (Score:3)
PL/I was the initial language that was taught where I went to college. It was a little awkward by modern standards but not all that different from many languages. The truly bad part was that you had to type the code onto punch cards and stand in line to load them into a reader. It went into a potentially lengthy job queue. You would get the results back on fanfold paper at some indefinite time in the future, and have to pick through a pile of it to find your output.
A pretty miserable experience, IBM didn't seem interested in making things any better. Shortly thereafter I got access to Unix and C language, and could write code using vi on a CRT monitor. It felt incredibly futuristic.
Re: (Score:2)
Well there are multiple reasons (Score:2)
One is that, generally speaking, there are different problems to solve with computers. Specialized languages can really save you a lot of effort, even to the point that it's a common trope to invent your own simple programming language for certain tasks. The language "C", for example, provides simple primitives to do so. There you can create data structures in memory you can evaluate in order to process your data.
Then there's a whole different aspect to that, and that's more about "fashion". Certain languag
Can you nominate one for elimination? (Score:3)
My position is a common one in this thread- if there's one perfect language, then no language is close enough to it to be convincing. If there's multiple perfect languages for each different task, then you would expect something close to what we have in the real world. When you consider that we don't know how human cognition works, it is possible that there is no ideal computer language for all humans- to say nothing of all sentient, sapient minds that might ever want to use said language.
If we only consider humans, and we assume that humans mostly think in the same ways enough, and if there's one ideal language, then the answer is that computer science is on a very long quest to find it, and probably hasn't even found the road yet. If any of those assumptions are wrong, then there's much better reasons why there are so many programming languages- they are all good, but none of them will ever be perfect for everything.
Re: (Score:2)
Because my tool box has more than one hammer in it (Score:3)
Like screwdrivers and hammers and wrenches, there are no 'one size fits all' computer languages. And like screwdrivers some engineering 'genius' is going to come up with a new language that has a slight advantage over a another and enough people will start using it that eventually someone will convince the powers that be that it's the savior of all languages and if we would only rewrite everything in it, all of our problems would be solved. So a huge project will be started at great expense, and in 6 months the idiot that started it all will leave and the project will only get about halfway done so now we have to support two standards.
Until the next idiot comes in the door and starts his holy war because that's all he knows and everything was so much better where he just came from.
In general, we need multiple languages because not everything is a nail. We have to use multiple languages because some people think everything is a nail.
If we could just convince management to stop letting the new guy make changes until he's worked here for 2 or 3 years, maybe we would have fewer languages that we have to deal with at our jobs. I've found that while I can usually pick up a new language pretty quickly, it takes about 6 months to get good at it, and 2-3 years to become truly proficient. And the more languages one has to deal with on a regular basis, the less proficient one gets at all of them.
For the same reason... (Score:2)
BTW, for women, it's "I will survive."
Why? WHY? (Score:4, Funny)
Why are there so many articles about how many programming languages there are?
It's because we still confuse text with the (Score:4, Interesting)
In an IDE I want to be able to organize, partition, group, and view code in several ways at once, arbitrarily, without any regard to disk storage idioms. Code structures are networks of relationships, and they should be stored as such. Text should be rendered.
This is how you solve the many languages problem.
uh (Score:2)
Windows was priced at $40 while CP/M was offered 'a la carte' at $240
What a bizarre-assed comparison. $40 Windows wasn't even an OS, it had to sit on top of $50 DOS. (Windows arguably wasn't really an OS until Windows 95, which kicked DOS out of memory and didn't make BIOS calls except in 16-bit mode.) And what's more, even DOS was superior to CP/M. It did tons of things CP/M didn't, like have a hierarchical file system.
CP/M failed because it sucked. I had two different CP/M machines and a plethora of DOS machines, and CP/M had literally nothing to recommend it over DOS, let
ADA was thought to be the one... (Score:2)
Per-hardware languages were a thing (Score:2)
Lack of taste (Score:3)
It's simple. (Score:2)
Multiple programming languages (Score:2)
How to get DSL's but still have a standard (Score:3)
I actually believe domain-specific-languages (DSL) are generally a good thing. They can keep the code compact by being domain-centric. When a language/tool is a poor fit for the domain, you spend code and syntax micromanaging computer things instead of domain things in the code*. If you are doing too much of that it's probably the wrong tool for the job. The most compact to-the-point code I've ever seen was in DSL's. (Popularity often actually kills them because it's forced into "enterprise scale" where it may not belong. One project size-target doesn't fit all.)
But rather than start each DSL from scratch, I'd like to see a kit approach, where there's a standard general syntax, akin to XML, but the details of what each statement does and doesn't do is tuned for the domain need.
After pondering it for a while, I stumbled upon a draft language/syntax called Moth. [reddit.com]
It's kind of C meets Lisp meets XML meets LINQ. In theory you could roll your own control structures and scoping rules (RYOCSS) to make a DSL.
It's based on the observation that the industry mostly settled/voted on C-style syntax. But C's syntax is not flexible enough for RYOCSS and other things because it depends on key-words instead of syntax to delineate related/grouped code blocks. Thus, Moth found a syntax that's "close enough" to C-style but facilitates RYOCSS using a relatively simple reoccurring syntax as building blocks, comparable to what Lisp and XML do. And ideally it would have a library of routines for typical needs to make DSL building simpler. The parser would already be built (just like how XML parsers are common), and one then hooks up mostly existing libraries/functions to make the DSL. A kit.
It seems a logical way to compromise between DSL and standardization. If you can think of a better syntax or a better way to have DSL's without reinventing too much, I'd like to hear it.
(Some have criticized saying such flexible scoping would make it run slow. But I suspect there are common reoccurring scoping idioms that once discovered can be optimized for, such that if one sticks mostly to the "fast set" of scoping patterns, it would be sufficient.)
* Web stacks that try to be desktop-crud are like that: you spend too much time babysitting technology/stack concerns rather than domain concerns, and/or have a giant learning curve. Why people accept it now, I don't know. Job security? It's illogical otherwise; a mess.
Why are there so many screwdrivers? (Score:2)