Hacker News new | past | comments | ask | show | jobs | submit login
The Next 700 Programming Languages (1965) [pdf] (ed.ac.uk)
83 points by entelechy on Jan 8, 2018 | hide | past | web | favorite | 20 comments

From section 6 (page 160), bottom left:

    (c) Indentation, used to indicate program structure. A
    physical IswiM can be defined in terms of an unspecified
    parameter: a subset of phrase categories, instances of
    which are restricted in layout by the following rule called
    "the offside rule." The southeast quadrant that just contains
    the phrase's first symbol must contain the entire
    phrase, except possibly for bracketed subsegments. 
Did this invent Python-style significant whitespace?

Yes, and the Q&A at the end invented complaining about it.

> From section 6 (page 160), bottom left

In case anyone might be discouraged from reading the article because they don't have time to read something 160+ pages long, don't worry. It's an article extracted from a journal, and the page numbers are the page numbers from the journal issue. It's actually only around 10 pages.

No. The MADCAP programming language included indentation for conditionals and for-loops at least by 1961 (see, for example, the chapter on MADCAP II in Annual Review in Automatic Computing Volume 2).

Languages with significant whitespace style are older than Python.

Which the parent didn't argue against, only wondered whether this feature was first described in this paper.

I wonder what the author would think of today's Lisps, or languages like Haskell and Prolog that embrace non-sequential execution, allow you to freely define infix operators, and have a where syntax.

My thought is that, in some ways, Landin would be disappointed that Haskell/Prolog/Scala/OCaml etc., are all implementing whole languages from scratch -- Landin's argument, as I read it, is that devising a new ISWIM variant should be about as easy as writing your own Lisp.

That said, it does feel like the ML and Haskell communities really have taken up that spirit, with their emphases on multiple implementations and relatively ease of extension.

You could freely define infix operators and a where syntax in 1965 Lisps.

Haskell is a direct descendent of ISWIM via David Turner's SASL. Landin, however, lost interest in software in the 70s. There's a lot of biographical info, including videos of him reminiscing, to be found online.

Lisp has the LOOP macro for this kind of nonsense.

I don't think ISWIM (as I understand it) needs to be "conversational" like LOOP. List comprehensions, as a direct translation of set-builder notation, are probably good enough.

LOOP has nothing to do with non-sequential execution, or anonymous scoped blocks (read: 'where' clauses).

Or languages whose strength is in building other languages.

Not only is that immaterial, but he certainly lived to see all of those languages I mentioned.

It seems that later in life he quit focusing on computer science, and may have been out of touch with it as early as the start of the 70's. Here's his obituary: https://www.theguardian.com/technology/2009/sep/22/peter-lan...

"Always bisexual, he threw himself into the politics of the Gay Liberation Front in the early 1970s. He separated amicably from his wife in 1973, and was closely in touch with her and his children till his death. For the rest of his life he pursued gay politics, and his house in Rona Road, Camden, became a gay commune. Always more of a facilitator than an activist, he saw many plots hatched at his dinner parties. Aids: the Musical! was conceived there, as was the reinvigoration of Gay Pride marches in the mid-80s, just in time for the battle over Clause 28. Towards the end of his life, Peter became convinced that computing had been a bad idea, giving support to profit-taking corporate interests and a surveillance state, and that he had wasted his energies in promoting it. But whether he liked it or not, his ideas underpin developments to this day."

First example:

  x(x - k a)

  where x = b + 2c
Now imagine ‘+’ and ‘-’ have side-effects, like a log message. What would the output be? ‘+-’, ‘++-’ or ‘+-+’? Certainly not the ‘-+’ order as they appear in the code, which is causally impossible.

The paper restricts to pure functions, where this is not an issue. But it does seem to violate a widely followed implicit rule that lines of code are in strict causal order, with well-defined explicit exceptions for control flow.

I'm not sure "violate" is the right word, given Landin's objectives.

If the where-clause offends you, use a let-clause instead?

this already happens: in a variety of languages, x could just be an ordinary function with the body defined below any given usage. here, `where` could be replaced with a standard function definition, and it's `+` would still be textually below the usage's `-`.

> A possible first step in the research program is 1700 doctoral theses called "A Correspondence between x and Church's λ-notation."

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact