Stories
Slash Boxes
Comments

SoylentNews is people

posted by hubie on Thursday July 07 2022, @09:53PM   Printer-friendly
from the agile-SNOBOL-FTW dept.

Over at ACM.org, Doug Meil posits that programming languages are often designed for certain tasks or workloads in mind, and in that sense most languages differ less in what they make possible, and more in terms of what they make easy:

I had the opportunity to visit the Computer History Museum in Mountain View, CA, a few years ago. It's a terrific museum, and among the many exhibits is a wall-size graph of the evolution of programming languages. This graph is so big that anyone who has ever written "Hello World" in anything has the urge to stick their nose against the wall and search section by section to try find their favorite languages. I certainly did. The next instinct is to trace the "influenced" edges of the graph with their index finger backwards in time. Or forwards, depending on how old the languages happen to be.

[...] There is so much that can be taken for granted in computing today. Back in the early days everything was expensive and limited: storage, memory, and processing power. People had to walk uphill and against the wind, both ways, just to get to the computer lab, and then stay up all night to get computer time. One thing that was easier during that time was that the programming language namespace was greenfield, and initial ones from the 1950's and 1960's had the luxury of being named precisely for the thing they did: FORTRAN (Formula Translator), COBOL (Common Business Oriented Language), BASIC (Beginner's All-purpose Symbolic Instruction Code), ALGOL (Algorithmic Language), LISP (List Processor). Most people probably haven't heard of SNOBOL (String Oriented and Symbolic Language, 1962), but one doesn't need many guesses to determine what it was trying to do. Had object-oriented programming concepts been more fully understood during that time, it's possible we would be coding in something like "OBJOL" —an unambiguously named object-oriented language, at least by naming patterns of the era.

It's worth noting and admiring the audacity of PL/I (1964), 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. 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.

The author goes on to reason that new languages are mostly created for control and fortune, citing Microsoft's C# as an example of their answer to Java for a middleware language they could control.

Related:
Non-Programmers are Building More of the World's Software
Twist: MIT's New Programming Language for Quantum Computing
10 Most(ly dead) Influential Programming Languages


Original Submission

 
This discussion was created by hubie (1068) for logged-in users only, but now has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 2, Funny) by Mojibake Tengu on Friday July 08 2022, @12:19AM (14 children)

    by Mojibake Tengu (8598) on Friday July 08 2022, @12:19AM (#1258785) Journal

    Why Are There So Many Programming Languages?

    Because clowns under IQ160 are unable to learn and use macro assembler effectively.

    Why would you want more than machine language?
    https://blog.deta.sh/posts/assembly/ [blog.deta.sh]

    It is a recorded fact John von Neumann wrote programs in machine code for ENIAC into paper forms passed for punching to typists girls directly from his head, with an ink pen.
    No pencil, no bugs.
    And his own quotes about compilers of programming languages as useless tools for mentally retarded are legendary.

    This civilization is degenerate.

    --
    The edge of 太玄 cannot be defined, for it is beyond every aspect of design
    Starting Score:    1  point
    Moderation   0  
       Flamebait=1, Funny=1, Total=2
    Extra 'Funny' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   2  
  • (Score: 5, Insightful) by Kell on Friday July 08 2022, @01:24AM (2 children)

    by Kell (292) on Friday July 08 2022, @01:24AM (#1258803)

    That's cool and all, but part of the power of technology is that it makes its utility available to those who are not god-geniuses. A tool that can only be used competently by the elite is far less valuable than a tool that can be used competently by an average person. Unless you have an army of von Neumanns available (perhaps produced by some sort of von Neumann machine?) then ultimately you must compromise if you want to be productive. It's not degenerate: it's merely pragmatic.

    --
    Scientists ask questions. Engineers solve problems.
    • (Score: 3, Interesting) by krishnoid on Friday July 08 2022, @03:26AM

      by krishnoid (1156) on Friday July 08 2022, @03:26AM (#1258811)

      And yet with tools like compilers and static analyzers and filesystems and keyboards, we still have trouble following rigorous discipline [joelonsoftware.com] when using those tools. Probably reflects more on the human condition than competency, really.

    • (Score: 2) by JoeMerchant on Sunday July 10 2022, @09:24PM

      by JoeMerchant (3937) on Sunday July 10 2022, @09:24PM (#1259579)

      Not everyone should be designing bridges and skyscrapers, no matter how easy to use you make the design tools.

      --
      Україна досі не є частиною Росії Слава Україні🌻 https://news.stanford.edu/2023/02/17/will-russia-ukraine-war-end
  • (Score: 3, Funny) by Reziac on Friday July 08 2022, @02:15AM

    by Reziac (2489) on Friday July 08 2022, @02:15AM (#1258806) Homepage

    REAL programmers use COPY CON PROGRAM.ZIP

    And here I thought that was a joke!

    --
    And there is no Alkibiades to come back and save us from ourselves.
  • (Score: 5, Interesting) by DannyB on Friday July 08 2022, @03:31AM

    by DannyB (5839) Subscriber Badge on Friday July 08 2022, @03:31AM (#1258812) Journal

    If I write my program in Java and my competitor writes in a macro assembler, I will beat my competitor to market by a year. My manager and I will laugh all the way to the bank.

    Inefficient runtime you say? Heck, we'll just throw an extra 64 GB of memory and another 4 processors in the production server and call it a day.

    It's cheap. (for the money it will make)

    As mentioned in TFA, once upon a time every cpu cycle and byte mattered because they were very expensive, but developers were cheap.

    Now cpu cycles and bytes are dirt cheap and developers are very expensive. For one month's pay and benefits for a single developer, I could add tons of bytes and cpu cycles to a machine.

    The world has changed.

    Now all that said, I remember reading about Apple's macro assembler back in the day. I was amazed. I never used it, but I understood how I could have conditional logic that could cause macros to expand in different ways. And parameterized ways.

    --
    If you think a fertilized egg is a child but an immigrant child is not, please don't pretend your concerns are religious
  • (Score: 2) by Mykl on Friday July 08 2022, @03:54AM (1 child)

    by Mykl (1112) on Friday July 08 2022, @03:54AM (#1258816)

    It is a recorded fact John von Neumann wrote programs in machine code for ENIAC into paper forms passed for punching to typists girls directly from his head, with an ink pen

    He was also a hit at parties.

    • (Score: 1, Interesting) by Anonymous Coward on Friday July 08 2022, @12:11PM

      by Anonymous Coward on Friday July 08 2022, @12:11PM (#1258868)

      Actually, he was well known for hosting quite a lot of parties and was very much the social butterfly. He seemed to have an insecurity about being seen not as a "regular guy," which is one reason that he wanted everyone to call him Johnny.

  • (Score: 3, Insightful) by tangomargarine on Friday July 08 2022, @08:26AM (3 children)

    by tangomargarine (667) on Friday July 08 2022, @08:26AM (#1258834)

    Why would you want more than machine language?

    Readability.

    --
    "Is that really true?" "I just spent the last hour telling you to think for yourself! Didn't you hear anything I said?"
    • (Score: 2) by Opportunist on Friday July 08 2022, @10:55AM (2 children)

      by Opportunist (5545) on Friday July 08 2022, @10:55AM (#1258861)

      I can read asm code all right, what seems to be the problem?

      • (Score: 3, Insightful) by DannyB on Friday July 08 2022, @02:03PM

        by DannyB (5839) Subscriber Badge on Friday July 08 2022, @02:03PM (#1258891) Journal

        Some programs deal with subject matter at a much higher level of abstraction. Your programming language should not force you to focus on the irrelevant details.

        A therom prover or computer algebra system written in Lisp could be written in assembler. But now it is non portable. Hard to maintain. Difficult (at best) to reason about.

        --
        If you think a fertilized egg is a child but an immigrant child is not, please don't pretend your concerns are religious
      • (Score: 3, Insightful) by tangomargarine on Friday July 08 2022, @06:21PM

        by tangomargarine (667) on Friday July 08 2022, @06:21PM (#1258939)

        It's not a question of whether *you* can read your code; it's whether whoever follows you can understand your code later. The same reason why sometimes it's better to hire an ordinary average programmer than a genius code wizard who nobody else can keep up with.

        --
        "Is that really true?" "I just spent the last hour telling you to think for yourself! Didn't you hear anything I said?"
  • (Score: 3, Insightful) by Opportunist on Friday July 08 2022, @10:29AM

    by Opportunist (5545) on Friday July 08 2022, @10:29AM (#1258855)

    True, but do you want to spend your life writing code just 'cause you and me are the only ones who can do it? I'd gladly pass on that menial task to the less gifted while I deal with real problems.

  • (Score: 2) by DannyB on Friday July 08 2022, @02:01PM

    by DannyB (5839) Subscriber Badge on Friday July 08 2022, @02:01PM (#1258890) Journal

    Why would you want more than machine language?

    Development time.

    Development cost. (yes, this is a real thing! Believe it or not!)

    Maintainability.

    Easy refactoring tools.

    Multi platform. I want to take my compiled binary and run it on different operating systems, different types of processors -- and have it become machine code at the very last possible moment. This is a HUGE advantage. I took a Mandelbrot viewer program I wrote in Java in 2004 and years later ran it (the binary!) on a Raspberry Pi which didn't exist when I wrote the program.

    Optimization. Once you have the complete program to optimize, it is possible to do optimizations that are not possible in an ahead of time compiler. For example, the global optimizer could realize that a certain function does not need a vtable entry and could make the calling convention more efficient -- throughout the entire program wherever this function is called. Aggressive inlining of code is possible that an ahead of time compiler and linker cannot do. Once you have the WHOLE program, you can inline some function from one library into where it is called in some other library, in machine code form. The optimizer could rewrite a single function into two variations of that function with slightly different parameter lists so it is called more efficiently depending on how it is used. A class member function that never references the class itself (eg, a 'static' function) could be turned into a static function at runtime -- but this affects every single place in the global program where that function may be called from. This cannot be done in an ahead of time compiler and linker.

    Maybe a human can do some optimizations better than a machine. But that is debatable. There are now experiments in using ML (machine lernin') to optimize code in LLVM.

    Finally that brilliantly written, beautifully crafted, macro assembler code -- which is a true work of art -- probably becomes obsolete in five years and is scrapped. Today's micro controllers are more powerful than the mainframes of your you're yore.

    --
    If you think a fertilized egg is a child but an immigrant child is not, please don't pretend your concerns are religious
  • (Score: 0) by Anonymous Coward on Friday July 08 2022, @05:50PM

    by Anonymous Coward on Friday July 08 2022, @05:50PM (#1258936)
    If you're one of those who are writing truly novel programs where most of the code etc has to be written from scratch, then pick a language for all the code that you will write.

    But otherwise pick a language for all the code you WON'T have to write (and document, support, etc).

    If you disagree, please go write an OS and web browser in machine language from scratch and then use it to reply to my comment.