The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
* Re: [TUHS] roff(7) [ and other related stuff ]
@ 2022-01-02  4:02 Noel Chiappa
  2022-01-02 10:46 ` markus schnalke
  0 siblings, 1 reply; 13+ messages in thread
From: Noel Chiappa @ 2022-01-02  4:02 UTC (permalink / raw)
  To: tuhs; +Cc: jnc

    > From: John Cowan

    > Why use C syntax? What was wrong with Fortran, Lisp, or Cobol syntax,
    > extended to do what you wanted?

Why do all hammers look basically the same? Because there's an 'ideal
hammer', and over time hammer design has asymtoted toward that 'ideal hammer'
design. One can't just keep improving the design indefinitely - diminishing
returns set in.

So I suspect there is, to some degree, a Platonic 'ideal syntax' for a
'classic block-structured' programming language, and to me, C came pretty
close to it.

I except LISP from that assessment, because LISP is built around a
fundamentally different model of how computations/algorithms are organized,
and C and LISP aren't directly comparable.

But that realization points to a deeper bug with the 'Platonic ideal
language' concept above, which is that languages are fundamentally, albeit at
a very deep conceptual level, tied to the basic concept of the computing
hardware they are to run on. C/COBOL/FORTRAN/etc are all for von Neumann-like
(in a broad sense) computing engines - a single thread of computation, which
happens sequentially.

But we've pushed that paradigm about as far as it can go, we're into
diminishing returns territory on that one. The future, starting with the
hardware, will be very different - and will need quite different languages.
(Go, from what little I know of it, is a baby step in this direction - it is
intended to make it easy to use multiple simultaneous loci of execution,
making use of the mutiple cores that are common now.)

I suspect we'll be shifting to radically different paradigms, 50 years from
now - massively parallel computing meshes (think Connection Machines on
steroids - or the human brain), and those will use fundamentally different
computing paradigms, and programming languages for them, which in turn will
need very different syntax.


^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [TUHS] roff(7) [ and other related stuff ]
@ 2022-01-02  4:10 Douglas McIlroy
  0 siblings, 0 replies; 13+ messages in thread
From: Douglas McIlroy @ 2022-01-02  4:10 UTC (permalink / raw)
  To: TUHS main list

> Lisp, _that's_ elegant.

The machine shines through Lisp even more brightly than it does
through C. Lisp attains incredible power from a tiny base: car, cdr,
cons, cond, T, F, null, lambda, def, exuding elegance that survives
even in a raging sea of parentheses.

For Lisp-friendly applications nowadays, I prefer Haskell, which is
much further away from the machine. Haskell code approaches--and
sometimes surpasses--the cleanliness of good mathematical notation.
For string processing, I remember Snobol 3 with great fondness.

But for everyday work with arrays and numbers, C is the workhorse.
Still, I wish that C would evaluate comma expressions in parallel
rather than in series, as in (a,b) = (b,a).


^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [TUHS] roff(7)
@ 2021-12-31 15:47 Douglas McIlroy
  2021-12-31 23:07 ` George Michaelson
  0 siblings, 1 reply; 13+ messages in thread
From: Douglas McIlroy @ 2021-12-31 15:47 UTC (permalink / raw)
  To: TUHS main list

> Did roff do all of what troff and nroff did?

No way. Ossanna deserves all the praise you give him. Roff extended
runoff in various ways:
     relative numeric operators, e.g. .in +8
     tabbing (left, right and centered)
     tripartite headers and footers
     arabic and roman page numbering
     adjustable head and foot margins
     automatic hyphenation, thanks to Molly Wagner
     merge patterns for change marks, column separators, etc.
     various special requests: .ne, .ti, .tr, .po, .op (odd page)

But roff did NOT have conditionals, traps, special characters,
environments, or arbitrary motion control. Crucially (and ironically,
because I was Mr. Macro), it did not have anything like macros,
strings and diversions until after Joe pioneered them in nroff.

So there was a gaping disparity: nroff was Turing complete, roff
wasn't. Roff merely added features to runoff; nroff leapt into a
different universe.


The features listed above are in the January 1971 manual for BCPL
roff, which is probably the anonymous reference cited in the November
1971 v1 manual. The v1 manual lists Osanna, Ken and Dennis as authors
of the Unix implementation. I believe Ossanna is named because he
added line-numbering--and maybe more--to entice the patent department
to switch to roff.

BCPL roff allowed all four arithmetic operators in contexts like .ls
*3. Only + and - were allowed in nroff. Eventually both BCPL roff and
nroff got number registers (defined by different commands); I don't
recall which came first. BCPL roff also got a weak macro facility,
definitely after nroff.


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2022-01-02 10:53 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-02  4:02 [TUHS] roff(7) [ and other related stuff ] Noel Chiappa
2022-01-02 10:46 ` markus schnalke
  -- strict thread matches above, loose matches on Subject: below --
2022-01-02  4:10 Douglas McIlroy
2021-12-31 15:47 [TUHS] roff(7) Douglas McIlroy
2021-12-31 23:07 ` George Michaelson
2021-12-31 23:40   ` Larry McVoy
2022-01-01 20:00     ` [TUHS] roff(7) [ and other related stuff ] Jon Steinhart
2022-01-02  0:12       ` Larry McVoy
2022-01-02  1:04         ` John Cowan
2022-01-02  1:20           ` Larry McVoy
2022-01-02  1:47             ` Steve Nickolas
2022-01-02  2:12               ` Larry McVoy
2022-01-02  3:56               ` Jon Steinhart
2022-01-02  1:48             ` Jon Steinhart
2022-01-02  3:04             ` John Cowan
2022-01-02  3:30               ` Warner Losh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).