Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of A programming language

    A programming language

    Kenneth E. Iverson · 1962

    ProgrammingComputer Science
    Open LibraryAmazon
    Stats for nerds
    4recommend
    14mentions
    13people
    2008–2025years
    29% recommend71% neutral

    Mentions per year

    2008201020122014201620182020202220242025

    What Hacker News says

    1. adrian_bJul 2025
      The popularity of a convention has no relationship with its usability.

      Everybody learns in school the traditional convention for writing mathematical expressions.

      It appears that for most people it is difficult or impossible to unlearn later such a convention, even if they encounter a superior convention.

      On the other hand, I am among those fewer for which this is not true, so when I have first read the book "A Programming Language" of K. Iverson, on which the later APL language and its successors have been based, I have immediately recognized that the Iverson convention is much better than the school convention, and I have no trouble in using it.

      When reading a program written with the Iverson convention, you still read from left to right, but you typically do not read until the end of the line, but only as much of the left part as necessary to understand the purpose of the line. (Because the right operand of any operator is everything that follows it until the end of the line, and the details of that computation may be irrelevant. With school notation, when searching where a variable has been modified and how, you must jump between the beginning of the line and the end of the line, to find the last operations that have generated the stored value, when reading and understanding the complete expression would be a waste of time.)

      The original motivation of the Iverson convention, which remains very important, was to give a useful meaning for a sequence of identical non-commutative operators, e.g. subtraction and division. This is particularly desirable when the operators are used in vector reductions.

      (With school notation, a0 - a1 - a2 - ... - an is seldom a useful expression, but with the Iverson convention it becomes alternate sum, which is needed very frequently. Similarly for division.)

      thread
    2. 082349872349872Jan 2023
      Kenneth Iverson, "A Programming Language" (1962)
      thread
    3. tmcbJan 2020
      Not a very original suggestion, but the original book (“A Programming Language”, by Ken Iverson) would probably fit in.
      thread
    4. avmichMar 2019
      Read "A programming language", where APL came from - https://www.amazon.com/Programming-Language-Kenneth-Iverson/... - you might get more understanding why it is the way it is.

      It is the mathematical notation, put into, as Dijkstra expressed, "technologies of the past", completed (to be Turing-complete) and made executable.

      At least, I think, this is the basic idea.

      thread
    5. ofalkaedDec 2025
      This submission popping back up from the second chance pool got me to do some digging for the formal description of system/360[0], this is not the APL we know today but the APL outlined in Iverson's A Programming Language[1].

      [0] https://www.cs.trinity.edu/~jhowland/class.files.cs2321.html...

      [1] https://www.jsoftware.com/papers/APL.htm

      thread
    6. toshFeb 2024

        +/1 2 3 4 5
      
      meaning

        plus over 1 2 3 4 5
      
      meaning

        the plus reduction of 1 2 3 4 5
      
      meaning

        1+2+3+4+5
      
      meaning

        15
      
      "over" (/) is a higher order function that takes the function "+" and applies it to "1 2 3 4 5"

      over can also be used with *

        */1 2 3 4 5
      
      meaning

        the product reduction of 1 2 3 4 5
      
      meaning

        120 
      
      "/" as "over" comes from a mathematical notation by Ken Iverson: APL (A Programming Language) [0][1] which Ken names "reduction" (h/t mlochbaum)

      > An operation (such as summation) which is applied to all components of a vector to produce a result of a simpler structure is called a reduction.

      "/" is known as "insert" in J [2] and "over" in k dialects (like Goal)[3].

      [0] https://en.wikipedia.org/wiki/APL_(programming_language)#Mat...

      [1] https://www.softwarepreservation.org/projects/apl/Books/APRO...

      [2] https://code.jsoftware.com/wiki/Vocabulary/slash

      [3] https://k.miraheze.org/wiki/Primitives

      thread

    Related

    Cover of The art of computer programming
    2007–2026

    The art of computer programming

    Donald Knuth
    336 recommend · 1,799
    Cover of The C Programming Language
    2007–2026

    The C Programming Language

    Brian W. Kernighan
    246 recommend · 604
    Cover of Code
    2008–2026

    Code

    Charles Petzold
    243 recommend · 385
    Cover of Essentials of programming languages
    2008–2026

    Essentials of programming languages

    Daniel P. Friedman
    43 recommend · 76
    Cover of Advanced programming in the Unix environment
    2008–2025

    Advanced programming in the Unix environment

    W. Richard Stevens
    100 recommend · 153
    Cover of Types and Programming Languages
    2008–2026

    Types and Programming Languages

    Benjamin C. Pierce
    132 recommend · 321
    Cover of The Rust Programming Language
    2015–2026

    The Rust Programming Language

    Steve Klabnik
    170 recommend · 257
    Cover of The AWK programming language
    2009–2026

    The AWK programming language

    Alfred V. Aho
    61 recommend · 117