Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming

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."

This discussion has been archived. No new comments can be posted.

Why Are There So Many Programming Languages?

Comments Filter:
  • Standards (Score:5, Funny)

    by anonymouscoward52236 ( 6163996 ) on Sunday July 09, 2023 @07:41PM (#63672379)

    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)

      by gweihir ( 88907 ) on Sunday July 09, 2023 @07:53PM (#63672401)

      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)

        by Dutch Gun ( 899105 ) on Sunday July 09, 2023 @10:50PM (#63672725)

        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.

      • I'd claim a variant of this, it's because geeks are involved and everyone wants their own special-snowflake language. Or window manager. Or package manager. Or way of configuring networking. Or editor. Or IM protocol. Or... well you get the message. Nothing ever settles down, everything is in permanent beta or a permanent state of being forked into five other things which are vaguely similar but also definitely incompatible.
        • Re:Standards (Score:4, Interesting)

          by Bongo ( 13261 ) on Monday July 10, 2023 @03:00AM (#63672975)

          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.

          • Oh yeah, we don't have the monopoly, psychology definitely does it too. And nutrition. And sportsing. And probably many others.
            • by gweihir ( 88907 )

              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

              • 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)

          by gweihir ( 88907 ) on Monday July 10, 2023 @06:13AM (#63673205)

          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.

      • by Archtech ( 159117 ) on Monday July 10, 2023 @08:01AM (#63673397)

        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".

      • See: Esperanto ;-)

      • 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.

      • 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

        • by gweihir ( 88907 )

          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

    • by Sigma 7 ( 266129 )

      Standards are often adopted and very rarely deprecated.

      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.

    • by stooo ( 2202012 ) on Monday July 10, 2023 @02:53AM (#63672969) Homepage

      it's the Babel tower of programming languages.
      But the story ends better: in the end all of us will use Python.

    • XKCD is good, but come on, the real reason is that everyone couldn't stop calling fork().
  • by rbrander ( 73222 ) on Sunday July 09, 2023 @07:44PM (#63672387) Homepage

    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)

    • by Austerity Empowers ( 669817 ) on Sunday July 09, 2023 @08:14PM (#63672437)

      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.

    • by HiThere ( 15173 )

      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.)

    • by Darinbob ( 1142669 ) on Sunday July 09, 2023 @08:56PM (#63672519)

      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)

        by SuperKendall ( 25149 )

        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.

      • by Zobeid ( 314469 )

        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

        • 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.

    • by vivian ( 156520 ) on Monday July 10, 2023 @03:56AM (#63673051)

      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.

    • by juancn ( 596002 )
      We have a running joke with some friends that goes something like: "I got distracted and without noticing I ended up implementing a compiler".

      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

  • by AlanObject ( 3603453 ) on Sunday July 09, 2023 @07:44PM (#63672389)

    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.

    • by acroyear ( 5882 )

      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

      • 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.

      • 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

        • Well, portability and abstraction are usually mutually exclusive. The reason C is portable is because it's closer to machine code than something like Python or any other highly abstracted language (where you can't, for instance, access memory addresses). That means it's far easier to add the [machine] code generation logic for a new instruction set. The easier things are to do, the more likely they get done. That portability comes at the expense of adoption. They certainly didn't teach me C in CS-101, they
    • by HiThere ( 15173 )

      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.)

      • 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.

        • Ah yes, the joys of core memory and table-lookup arithmetic. I remember, once, writing a little program that fit in the 100 digits of space at the bottom of memory that took 30 seconds to clear core, but left the arithmetic tables intact, including the record mark at the end.
    • 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.

    • > 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.

  • have to produce something to make a living.
    • 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.

    • That's what my boss keeps telling me.

    • A program language is a too tool makers produce a lot of tools bed as use there is a benefit to having the right tool for the job. Some will use a mail gun. Some will use a hammer. Some will use a rock, which Java
  • 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.

    • by lsllll ( 830002 )
      The language students were to be taught is what Pascal and C were supposed to be, with C closer to the hardware than standard Pascal. Assembler was also necessary at times for writing tight and fast code. Then came OOP which bloated and abstracted away everything. The end result is CPUs that are never fast enough and RAM that's always full.
  • by blahplusplus ( 757119 ) on Sunday July 09, 2023 @08:26PM (#63672461)

    ... 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.

    • What about a spork?

  • Here's why (Score:5, Funny)

    by backslashdot ( 95548 ) on Sunday July 09, 2023 @08:36PM (#63672479)

    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.

    • by HiThere ( 15173 )

      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

  • by bill_mcgonigle ( 4333 ) * on Sunday July 09, 2023 @08:37PM (#63672481) Homepage Journal

    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.

  • It was MS-DOS, purchased from Seattle Computer Products, where it was designed as a CP/M clone for 808x.

    • by vbdasc ( 146051 )

      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

  • 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

  • by dicobalt ( 1536225 ) on Sunday July 09, 2023 @08:45PM (#63672499)
    that there are so many Linux distributions, desktop environments, text editors, and on and on.
  • by clawsoon ( 748629 ) on Sunday July 09, 2023 @09:02PM (#63672529)

    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
  • by SuperKendall ( 25149 ) on Sunday July 09, 2023 @09:11PM (#63672577)

    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...

    • Hmm... "Blackout" would be a good name for a programming language...
      • 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].

  • 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!

  • 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

  • by thesjaakspoiler ( 4782965 ) on Sunday July 09, 2023 @10:26PM (#63672687)

    My programming language brings all nerds to the yard and they're like it's better than yours!

  • by UnknownSoldier ( 67820 ) on Sunday July 09, 2023 @10:46PM (#63672715)

    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.

  • by westlake ( 615356 ) on Sunday July 09, 2023 @11:44PM (#63672777)
    The IBM PC team went to Microsoft for an OS - and Gates sent them to Klildall. At a time when everyone and his brother was trying to make a serviceable 16 bit CP/M clone. Klidall could be difficult to work with and CP/M-86 drifted into development hell. The $240 price tag for the affordable SOHO office machine IBM waanted to build wasn`t helping his case either. MSDOS got the job done and competive MSDOS machines were on the cloneing of the IBM PC BIOS.
  • And that's Prolog.

    'All the others are just compilers'

    Pretty sure O'Keefe actually said something like that.

  • by ZipNada ( 10152669 ) on Monday July 10, 2023 @12:36AM (#63672837)

    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.

    • I ran into this at UFL in 1978 or so. PL/1 on punchcards. I had learned Hollerith codes in high school. The frustration of punchcards sure made me a better proofreader.
  • 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

  • by cfalcon ( 779563 ) on Monday July 10, 2023 @01:28AM (#63672883)

    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.

  • Why do we have to so many programming languages?? Because, in the end, programming languages are just a tool with specific characteristics. We have a multitude of programming languages for the same reason I have to buy screwdrivers in sets, and I can't just buy one type of wrench but also need sockets and box end and crescent and monkey and basin.

    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.
  • ...that the all-time most popular karaoke song among men in the English speaking world is "My Way"?

    BTW, for women, it's "I will survive."
  • Why? WHY? (Score:4, Funny)

    by noodler ( 724788 ) on Monday July 10, 2023 @06:27AM (#63673217)

    Why are there so many articles about how many programming languages there are?

  • by PJ6 ( 1151747 ) on Monday July 10, 2023 @07:17AM (#63673313)
    structure it represents. Surprisingly, all the major modern tools still fail to abstract away from the file system.

    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.
  • 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

  • ...tongue firmly planted in cheek... At one time ADA was to be the one, self documenting, no object reuse, strongly typed, etc.
  • In the early days of computing systems there was a tendency for system designers to believe that they needed to craft a language for the system that they were building that would make optimal use of their system. (Or in a following era we saw cases of systems like the Texas Instruments Explorer -- a system designed to run a specific language) We have way less languages/dialects today than we did then and even better, most languages work on most of the systems that we do have. Buying different hardware doe
  • by Patrick May ( 305709 ) on Monday July 10, 2023 @09:55AM (#63673805)
    Too many programmers are incapable of recognizing that Lisp is the pinnacle of language design and no others are needed.
  • It's because almost nobody wants to learn assembler, but nobody's come up with a decent alternative. Yet, anyway.
  • One reason we have multiple programming languages is because of human literacy and the desire of human beings to express themselves well. A programming language is really a human language designed for simple machine compilation/execution, and just as human languages are variable and diverse so that human beings can express themselves as they wish, so too are programming languages. While we could, in theory, have only one human language and try to express everything in it (say, French, to make the term "ling
  • by Tablizer ( 95088 ) on Monday July 10, 2023 @12:36PM (#63674527) Journal

    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.

  • Long ones, short ones, all kinds of funny shaped noses to put on them, I even have one that goes around corners. But shouldn't we just have one screwdriver that will make all others obsolete?

We are Microsoft. Unix is irrelevant. Openness is futile. Prepare to be assimilated.

Working...