• Which comes first, languages or compilers?

    From gah4@21:1/5 to All on Wed Oct 25 12:39:24 2023
    Not from a Quora question, but one did remind me.

    Which (well known) languages were mostly defined before the first
    compiler was written? (Not counting the one you did for a homework
    assignment.)

    As well as I know it, and similar to the way IBM defined the S/360
    architecture before five different groups started implementing it,
    PL/I (nee NPL) was pretty much completely described before groups
    started implementing it. There is a published IBM manual with that
    description.

    I don't count Fortran0, as I believe Knuth named an early description
    before the first Fortran compiler was written.

    It is somewhat convenient to adapt the language when you find parts
    harder to implement than was thought. PL/I mostly didn't do that.
    [COBOL, Algol60 and 68, Ada. Maybe Pascal? -John]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to gah4@u.washington.edu on Thu Oct 26 21:46:54 2023
    On 2023-10-25, gah4 <gah4@u.washington.edu> wrote:
    Not from a Quora question, but one did remind me.

    Which (well known) languages were mostly defined before the first
    compiler was written? (Not counting the one you did for a homework assignment.)

    Lisp is one example. Definitions for interpreting it (not compiling)
    were written by McCarthy on paper, in Lisp. Steve Russel realized that
    you can translate that specification to machine code to get
    a working implementation. At first McCarthy was famously taken aback,
    thinking that Russel is working under some misconception: the document
    is for people, not for the machine.

    So it is very clear that the semantics of Lisp evaluation was first
    defined in a document intended for human use, which turned out to be susceptible hand-translation to an interpreter.

    (Compiling followed not long after that; I think by around 1960
    they were compiling it.)
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca
    NOTE: If you use Google Groups, I don't see you, unless you're whitelisted. [Lisp was considerably more than McCarthy's paper design. The CAR and
    CDR function names refer to the addresss and decrement parts of a
    memory word on the IBM 704 which presumably did not come up before
    they implemented it. -John]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From minforth@arcor.de@21:1/5 to All on Fri Oct 27 03:19:03 2023
    gah4 schrieb am Donnerstag, 26. Oktober 2023 um 13:57:48 UTC+2:
    Not from a Quora question, but one did remind me.

    Which (well known) languages were mostly defined before the first
    compiler was written? (Not counting the one you did for a homework assignment.)

    Also APL first defined by Iverson https://en.wikipedia.org/wiki/APL_(programming_language)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luke A. Guest@21:1/5 to All on Fri Oct 27 16:57:50 2023
    On 25/10/2023 20:39, gah4 wrote:
    Not from a Quora question, but one did remind me.

    Which (well known) languages were mostly defined before the first
    compiler was written? (Not counting the one you did for a homework assignment.) ...
    [COBOL, Algol60 and 68, Ada. Maybe Pascal? -John]

    You can definitely count Ada as being defined before being
    implemented. You can find the various language designs put forward by
    looking for "common hol phase 1" in this group.

    I don't really consider any of Wirth's languages to be designed as
    they would not have the gaping big holes they have. Aiming to having
    short specifications is not really a good thing, but it comes across
    as half-arsed and you end up leaving a metric shit-ton of "undefined"
    things that should've been defined up to the implementor, creating "implementation defined" and incompatible variants, see Pascal,
    Modula-2 and Oberon and their variants.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hans-Peter Diettrich@21:1/5 to Luke A. Guest on Mon Oct 30 04:26:10 2023
    On 10/27/23 5:57 PM, Luke A. Guest wrote:

    I don't really consider any of Wirth's languages to be designed as
    they would not have the gaping big holes they have.

    The *languages* are all well designed, system *libraries* are incomplete
    or missing.

    DoDi

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From OrangeFish9737@21:1/5 to Hans-Peter Diettrich on Mon Oct 30 10:02:43 2023
    On 2023-10-29 23:26, Hans-Peter Diettrich wrote:
    On 10/27/23 5:57 PM, Luke A. Guest wrote:

    I don't really consider any of Wirth's languages to be designed as
    they would not have the gaping big holes they have.

    The *languages* are all well designed, system *libraries* are incomplete
    or missing.

    I recall that Wirth also modified the language based on difficulty of implementation, i.e. compiler and language born together.

    OF
    [That was certainly the case with AlgolW and PL360. -John]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luke A. Guest@21:1/5 to Hans-Peter Diettrich on Mon Oct 30 20:35:50 2023
    On 30/10/2023 03:26, Hans-Peter Diettrich wrote:
    On 10/27/23 5:57 PM, Luke A. Guest wrote:

    I don't really consider any of Wirth's languages to be designed as
    they would not have the gaping big holes they have.

    The *languages* are all well designed,

    That's not what the Oakwood guidelines say.

    system *libraries* are incomplete
    or missing.

    Yes.
    [I'd prefer not to refight 30 year old arguments about language design details here.
    At this point Oberon is purely of historical interest and Pascal is close to dead. -John]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Thomas Koenig@21:1/5 to Luke A. Guest on Thu Nov 2 07:20:18 2023
    Luke A. Guest <laguest@archeia.com> schrieb:
    On 30/10/2023 03:26, Hans-Peter Diettrich wrote:
    On 10/27/23 5:57 PM, Luke A. Guest wrote:

    I don't really consider any of Wirth's languages to be designed as
    they would not have the gaping big holes they have.

    The *languages* are all well designed,

    That's not what the Oakwood guidelines say.

    What do they say?

    system *libraries* are incomplete
    or missing.

    Yes.

    There is actually a problem with language design - how to handle I/O.
    Kernighan discusses briefly this in "UNIX: A History and a Memoir".

    You can make I/O part of the language, as FORTRAN first did with
    FORMAT (which was an excellent idea). You can leave it unspecified
    (which has been shown to be a bad idea). Or you can leave it to
    libraries, like C or Modula-2 do.

    If you leave it to libraries, the question is how to make up complex
    format strings. You can use C's varargs, which make for easy use (but
    somewhat difficult error checking), or you can use the Modula-2
    approach where each type has its own library function, which makes I/O
    a pain to use.

    And varargs certainly has issues for compilers, especially in ABI
    definition when arguments are usually passed in registers. Lenient
    ABIs which allow you to call a normal functions with a varargs
    argument list without crashing are certainly a source of errors, even
    now.

    [I'd prefer not to refight 30 year old arguments about language design details here.
    At this point Oberon is purely of historical interest and Pascal is close to dead. -John]

    A Pascal descendant, Delphi, is still being sold.

    And Modula-2 has just gained a gcc front end, so not all of Wirth's
    languages are dead.
    [The line between language I/O and library I/O is quite blurry. The C
    standard makes includes the stdio library as a mandatory part of the
    language so compilers often do static compatibility checks of printf
    strings and arguments at compile time. Sure, you can build the format
    at runtime but it's almost always a static string. And, Fortran lets
    you build the FORMAT statement in a runtime string, too. -John]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)