From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from minnie.tuhs.org (minnie.tuhs.org [45.79.103.53]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id c2afe859 for ; Wed, 13 Nov 2019 11:02:45 +0000 (UTC) Received: by minnie.tuhs.org (Postfix, from userid 112) id 255CA9BB79; Wed, 13 Nov 2019 21:02:44 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id 5BA3793D97; Wed, 13 Nov 2019 21:02:06 +1000 (AEST) Authentication-Results: minnie.tuhs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=pobox.com header.i=@pobox.com header.b="v1UePW95"; dkim-atps=neutral Received: by minnie.tuhs.org (Postfix, from userid 112) id 92E9A93D97; Wed, 13 Nov 2019 21:02:02 +1000 (AEST) X-Greylist: delayed 405 seconds by postgrey-1.36 at minnie.tuhs.org; Wed, 13 Nov 2019 21:02:01 AEST Received: from sasl.smtp.pobox.com (pb-sasl21.pobox.com [173.228.157.49]) by minnie.tuhs.org (Postfix) with ESMTPS id A69B093D52 for ; Wed, 13 Nov 2019 21:02:01 +1000 (AEST) Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl21.pobox.com (Postfix) with ESMTP id BA145682B2; Wed, 13 Nov 2019 05:55:13 -0500 (EST) (envelope-from davida@pobox.com) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from :message-id:content-type:mime-version:subject:date:in-reply-to :cc:to:references; s=sasl; bh=0/ZgEEvZ6SBuHsF/uD0n4P3YXdA=; b=v1 UePW95vOmCpFLCF7DW3sJ4N2BmhBeAoU34yn1tBWot4k7XglJmRvAwDjQFbGAmQj dxLSN+0247mlj366LUC8NAg61LGRv8yKZZ5vY4evrZ9f2qpqeyvPW0+OHqG5a2oG qOVkKK54bniMsr0oRZraScJHT6gNBYVR8fpHqDhM4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:message-id :content-type:mime-version:subject:date:in-reply-to:cc:to :references; q=dns; s=sasl; b=FKlJ7I2SXKbTlj5ct8um1trwgOZwB7bNy/ 2KmYOROwa+SzjKlgzX/TBGl/+ci8k8HNILOuErUSeaTOl15ovcqLgSvv/S0yLb94 d1H8afpdT2ipS68cCE05+ng/15CfDXOv3dZEieGSY7ngqo0gIEkRQwtEQr3vpVGl RH5qrgQqM= Received: from pb-sasl21.sea.icgroup.com (unknown [127.0.0.1]) by pb-sasl21.pobox.com (Postfix) with ESMTP id B1E69682B1; Wed, 13 Nov 2019 05:55:13 -0500 (EST) (envelope-from davida@pobox.com) Received: from [192.168.86.129] (unknown [203.132.93.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pb-sasl21.pobox.com (Postfix) with ESMTPSA id 713B3682B0; Wed, 13 Nov 2019 05:55:10 -0500 (EST) (envelope-from davida@pobox.com) From: David Arnold Message-Id: <906345E8-A336-4E32-92FE-289FC3087998@pobox.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_208769D3-D08D-4B62-81EC-772618A1A910" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Date: Wed, 13 Nov 2019 21:55:06 +1100 In-Reply-To: <201911130738.xAD7ceUS014587@freefriends.org> To: tuhs@tuhs.org References: <201911121515.xACFFf0V095921@tahoe.cs.Dartmouth.EDU> <201911130738.xAD7ceUS014587@freefriends.org> X-Mailer: Apple Mail (2.3445.104.11) X-Pobox-Relay-ID: 10212E64-0604-11EA-9C1A-A6C997DF7C83-29049682!pb-sasl21.pobox.com Subject: Re: [TUHS] History of m6? X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" --Apple-Mail=_208769D3-D08D-4B62-81EC-772618A1A910 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 I found some related notes in the history of (GNU) M4: = https://www.gnu.org/software/m4/manual/m4-1.4.17/html_node/History.html = I=E2=80=99ve no idea how accurate they are. d > On 13 Nov 2019, at 18:38, arnold@skeeve.com wrote: >=20 > Thanks Doug! >=20 > So Unix m6 was a port of the Fortran version, it sounds like. >=20 > Q1. When and why was it dropped from Unix? When and why did m4 > enter the picture? >=20 > Q2. What's the history of Fortran on Unix? Clearly there was a > lot of Fortran going on in 1127 (cf. BWK's book, ratfor, > software tools ...) Who wrote the first Unix fortran compiler? >=20 > Much thanks, >=20 > Arnold >=20 > Doug McIlroy wrote: >=20 >>=20 >> M6 originated as a porting tool for the Fortran source code >> for Stan Brown's Altran language for algebraic computation. M6 >> itself was originally written in highly portable Fortran. >>=20 >> Arnold asked, "How widespread was the use of macro processors >> in high level languages? They were big for assembler, and >> PL/1 had a macro language, but I don't know of any other >> contemporary languages that had them." >>=20 >> Understanding "contemporary" to mean pre-C, I agree. Cpp, >> a particularly trivial macroprocessor, has been heavily used >> ever since--even for other languages, e.g. Haskell. >>=20 >> The rumor that Bob Morris invented macros is off the >> mark. Macros were in regular use by the time he joined Bell >> Labs. He did conceive an interesting "form-letter generator", >> called "form", and an accompanying editor "fed". A sort of >> cross between macros and Vannevar Bush's hypothetical memex >> repository, these were among the earliest Unix programs and >> appeared in the manual from v1 through v6. >>=20 >> Off-topic warning: pre-Unix stories follow. >>=20 >> Contrary to an assertion on cat-v.org, I did not invent macros >> either. In 1959 Doug Eastwood and I, at the suggestion of >> George Mealy, created the macro facility for SAP (SHARE assmbly >> program) for the IBM 704. However, the idea was in the air at >> the time. In particular, we knew that GE already had macros, >> though we knew no details about their syntax or semantics. >>=20 >> There were various attempts in the 1960s to build languages by >> macro extension. The approach turned out to entail considerable >> social cost: communication barriers arise when everyone >> can easily create his own dialect. A case in point: I once >> had a bright young mathematician summer employee who wrote >> wonderfully concise code by heaping up macro definitions. The >> result was inscrutable. >>=20 >> Macros caught on in a big way in the ESS labs at Indian Hill. >> With a macro-defined switching language, code builds were >> slow. One manager there boasted that his lab made more >> thoroughgoing use of computers than other departments and >> cited enormous consumption of machine time as evidence. >>=20 >> Steve Johnson recalls corrrectly that there was a set of macros >> that turned the assembler into a Lisp compiler. I wrote it >> and used it for a theorem-proving project spurred by Martin >> Davis. (The project was blown away when Robinson published >> the resolution princple.) The compiler did some cute local >> optimization, taking account of facts such as Bob Morris's >> astute observation that the 704 instruction TNZ (transfer on >> nonzero) sets the accumulator to zero. >>=20 >> Doug --Apple-Mail=_208769D3-D08D-4B62-81EC-772618A1A910 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 I = found some related notes in the history of (GNU) M4:


I=E2=80=99ve no idea how accurate they are.



d


On 13 Nov 2019, at 18:38, arnold@skeeve.com = wrote:

Thanks Doug!

So Unix m6 was a = port of the Fortran version, it sounds like.

Q1. When and why was it dropped from Unix? When and why did = m4
enter the picture?

Q2. = What's the history of Fortran on Unix?  Clearly there was a
lot of Fortran going on in 1127 (cf. BWK's book, ratfor,
software tools ...)  Who wrote the first Unix fortran = compiler?

Much thanks,

Arnold

Doug McIlroy <doug@cs.dartmouth.edu> wrote:


M6 = originated as a porting tool for the Fortran source code
for= Stan Brown's Altran language for algebraic computation. M6
itself was originally written in highly portable Fortran.

Arnold asked, "How widespread was the use of = macro processors
in high level languages?  They were = big for assembler, and
PL/1 had a macro language, but I = don't know of any other
contemporary languages that had = them."

Understanding "contemporary" to mean = pre-C, I agree. Cpp,
a particularly trivial = macroprocessor, has been heavily used
ever since--even for = other languages, e.g. Haskell.

The rumor = that Bob Morris invented macros is off the
mark. Macros = were in regular use by the time he joined Bell
Labs. He = did conceive an interesting "form-letter generator",
called = "form", and an accompanying editor "fed". A sort of
cross = between macros and Vannevar Bush's hypothetical memex
repository, these were among the earliest Unix programs = and
appeared in the manual from v1 through v6.

Off-topic warning: pre-Unix stories follow.

Contrary to an assertion on cat-v.org, I did not invent = macros
either.  In 1959 Doug Eastwood and I, at the = suggestion of
George Mealy, created the macro facility for = SAP (SHARE assmbly
program) for the IBM 704. However, the = idea was in the air at
the time. In particular, we knew = that GE already had macros,
though we knew no details = about their syntax or semantics.

There were = various attempts in the 1960s to build languages by
macro = extension. The approach turned out to entail considerable
social cost: communication barriers arise when everyone
can easily create his own dialect. A case in point: I once
had a bright young mathematician summer employee who wrote
wonderfully concise code by heaping up macro definitions. = The
result was inscrutable.

Macros caught on in a big way in the ESS labs at Indian = Hill.
With a macro-defined switching language, code builds = were
slow. One manager there boasted that his lab made = more
thoroughgoing use of computers than other departments = and
cited enormous consumption of machine time as = evidence.

Steve Johnson recalls corrrectly = that there was a set of macros
that turned the assembler = into a Lisp compiler. I wrote it
and used it for a = theorem-proving project spurred by Martin
Davis. (The = project was blown away when Robinson published
the = resolution princple.) The compiler did some cute local
optimization, taking account of facts such as Bob Morris's
astute observation that the 704 instruction TNZ (transfer = on
nonzero) sets the accumulator to zero.

Doug

= --Apple-Mail=_208769D3-D08D-4B62-81EC-772618A1A910--