1. 8
  1. 5

    Everyone’s first language should be Perl.

    1. 2


      Good lord, why would you do that, to anybody?

      1. 1

        Gotta wonder where Perl or Raku would fall among the sins listed here.

      2. 4

        I like the paper’s attitude and ideas. The section discussing memetic compatibility was insightful. There are technical issues, though.

        Scheme has effectively only one data type – the list – and one operation– evaluation of a list.

        Scheme famously has a numerical tower as well as Booleans.

        Somewhat surprisingly, the C++ language, not otherwise known for its friendliness towards the novice, provides a reasonable (if over-featured) model of I/O.

        Historical conventions suggest that they’re talking about what’s in C++ but not C, and I think that that must be streams. But streams have at least one well-known footgun which trips up novices and experts alike; streams have mutable state, and global streams have global mutable state.

        Some of the opinions are too defensive of English and English-speaking culture. The most glaring one is the complaint that 1 is the second index when counting from zero. No mention is made of off-by-one mistakes, which are far worse when one-indexed than zero-indexed; Dijkstra 1982 famously gives an anecdote about the Mesa language. No mention is given of the concept of “zeroth” and indexing vs. slicing, either.

        Maybe that sounds too harsh, but it’s important to avoid ending up like Quorum; if a language designer tries to sand away every harsh edge in order to appeal to idealized neophytes, then it might become too bland and inexpressive for any serious work, even serious student work.