From dave at horsfall.org  Wed Apr  3 01:23:43 2024
From: dave at horsfall.org (Dave Horsfall)
Date: Tue, 02 Apr 2024 15:23:43 -0000
Subject: [COFF] Of PL/I
Message-ID: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>

Has there ever been a full implementation of PL/I?  It seems akin to 
solving the halting problem...

Yes, I've used PL/I in my CompSci days, and was told that IBM had trademarked
everything from /I to /C :-)

-- Dave, who loved PL/360

From coff at tuhs.org  Wed Apr  3 01:41:29 2024
From: coff at tuhs.org (segaloco via COFF)
Date: Tue, 02 Apr 2024 15:41:29 -0000
Subject: [COFF] Earliest COBOL Compilers
Message-ID: <Rrm5dr5P9-qCUJkI9LebG9T_uOxFbuh_XvRhgd_ekABr3f06uMCdzen9B8ePi8lT0VH1eHH4YzVWJNJenk2mxEOU6ZCrBc4e3rIZkALtHTg=@protonmail.com>

Good morning, I was reading recently on the earliest days of COBOL and from what I could gather, the picture (heh) regarding compilers looks something like this:

- RCA introduced the "Narrator" compiler for the 501[1] in November, 1960 (although it had been demonstrated in August of that year)

- Sperry Rand introduced a COBOL compiler running under the BOSS operating system[2] sometime in late 1960 or early 1961 (according to Wikipedia which then cites [3]).

First, I had some trouble figuring out the loading environment on the RCA 501, would this have been a "set the start address on the console, load cards/PPT, and go" sort of setup, or was there an OS/monitor involved?

And for the latter, there is a UNIVAC III COBOL Programmer's Guide (U-3389) cited in [2] but thus far I haven't found this online.  Does anyone know if COBOL was also on the UNIVAC II (or I) and/or if any distinct COBOL documents from this era of UNIVAC survive anywhere?

- Matt G.

[1] - http://bitsavers.org/pdf/rca/501/RCA501_COBOL_Narrator_Dec60.pdf

[2] - http://bitsavers.org/pdf/univac/univac3/U-3521_BOSS_III_Jan63.pdf

[3] - Williams, Kathleen Broome (10 November 2012). Grace Hopper: Admiral of the Cyber Sea.

From clemc at ccc.com  Wed Apr  3 02:40:59 2024
From: clemc at ccc.com (Clem Cole)
Date: Tue, 02 Apr 2024 16:40:59 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
Message-ID: <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>

On Tue, Apr 2, 2024 at 11:23 AM Dave Horsfall <dave at horsfall.org> wrote:

> Has there ever been a full implementation of PL/I?

Well all of the IBM, GE/Honeywell and DEC compilers were certified.
Bob Freiburghouse
(who was part of the Multics compiler if I understand this right), created
a firm in Mass that built a number of commercial compilers for  a number of
folks, with PL/1 being their prime.  In fact when DEC bought the PL/1
front-end from them (which was in PL/1 of course), Culter and team wrote
the VAX back-end, they had to cross-compile in Cambridge (I think at MIT)
and bring the assembler source back to ZKO in Nashua to assemble and test.



>   It seems akin to solving the halting problem...
>
No more than Algol-68 and many modern languages.

>
> Yes, I've used PL/I in my CompSci days, and was told that IBM had
> trademarked everything from /I to /C :-)
>
I think that is more like an urban legend and IBM's notorious marketing
behavior since Gary Kidall (who was originally a compiler guy) created PL/M
for the 8080 and sold it to Intel.

>
> -- Dave, who loved PL/360
>
Yeah - it might have been Nicklaus Wirth's best language.  I still have
the Standford manuals, but I can not say I have seen a working compiler
since the late 1970s :-)
ᐧ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/coff/attachments/20240402/6f4f0226/attachment-0001.htm>

From sauer at technologists.com  Wed Apr  3 03:01:56 2024
From: sauer at technologists.com (Charles H Sauer (he/him))
Date: Tue, 02 Apr 2024 17:01:56 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
Message-ID: <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>

On 4/2/2024 11:40 AM, Clem Cole wrote:
> 
> 
> On Tue, Apr 2, 2024 at 11:23 AM Dave Horsfall <dave at horsfall.org 
> <mailto:dave at horsfall.org>> wrote:
> 
>     Has there ever been a full implementation of PL/I?
> 
> Well all of the IBM, GE/Honeywell and DEC compilers were certified.  Bob 
> Freiburghouse (who was part of the Multics compiler if I understand this 
> right), created a firm in Mass that built a number of commercial 
> compilers for  a number of folks, with PL/1 being their prime.  In fact 
> when DEC bought the PL/1 front-end from them (which was in PL/1 of 
> course), Culter and team wrote the VAX back-end, they had to 
> cross-compile in Cambridge (I think at MIT) and bring the assembler 
> source back to ZKO in Nashua to assemble and test.
> 
>        It seems akin tosolving the halting problem...
> 
> No more than Algol-68 and many modern languages.
> 
> 
>     Yes, I've used PL/I in my CompSci days, and was told that IBM had
>     trademarkedeverything from /I to /C :-)
> 
> I think that is more like an urban legend and IBM's notorious marketing 
> behavior since Gary Kidall (who was originally a compiler guy) created 
> PL/M for the 8080 and sold it to Intel.
> 
> 
>     -- Dave, who loved PL/360
> 
> Yeah - it might have been Nicklaus Wirth's best language.  I still have 
> the Standford manuals, but I can not say I have seen a working compiler 
> since the late 1970s :-)

I was ready to jump in, but since I didn't have a definitive answer, I 
waited for someone (Clem) who would really know.

The vast majority of my undergraduate and graduate school work was in 
CDC Fortran. When I joined IBM Yorktown in 1975, I brought that work 
with me in thousands of punched cards. Initially, I continued my 
simulation work in Fortran. As that work became more important, Fortran 
was unacceptable. I wrote a Fortran to PL/I crude translator in SNOBOL, 
had the PL/I version running in a couple of weeks, and didn't look back.

Being judicious in using just the good parts, PL/I seemed just fine. 
Essentially all of my work at Yorktown was in PL/I.

The 801 people created PL.8, which was primarily a subset of the good 
parts of PL/I, but with some changes that I'd have to research to remember.

Charlie
  ᐧ

-- 
voice: +1.512.784.7526       e-mail: sauer at technologists.com
fax: +1.512.346.5240         Web: https://technologists.com/sauer/
Facebook/Google/LinkedIn/Twitter: CharlesHSauer

From stuff at riddermarkfarm.ca  Wed Apr  3 05:25:09 2024
From: stuff at riddermarkfarm.ca (Stuff Received)
Date: Tue, 02 Apr 2024 19:25:09 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
Message-ID: <e824b8b9-9eb2-7a7c-bc90-6c10ba08ab2d@riddermarkfarm.ca>

On 2024-04-02 12:40, Clem Cole wrote (in part):
> 
> 
> On Tue, Apr 2, 2024 at 11:23 AM Dave Horsfall <dave at horsfall.org 
> <mailto:dave at horsfall.org>> wrote (in part):
> 
>     -- Dave, who loved PL/360
> 
> Yeah - it might have been Nicklaus Wirth's best language.  I still have 
> the Standford manuals, but I can not say I have seen a working compiler 
> since the late 1970s :-)

A scanned printout (in assembler) is available, if someone is brave enough.

S.


From whm at msweng.com  Wed Apr  3 06:31:26 2024
From: whm at msweng.com (William H. Mitchell)
Date: Tue, 02 Apr 2024 20:31:26 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <e824b8b9-9eb2-7a7c-bc90-6c10ba08ab2d@riddermarkfarm.ca>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <e824b8b9-9eb2-7a7c-bc90-6c10ba08ab2d@riddermarkfarm.ca>
Message-ID: <44286CEB-4014-442D-8DA9-6496C39AEAC1@msweng.com>

PL/I, in the form of Cornell’s PL/C was the language we learned in CSC 101H at NC State* in Fall 1976.

At some point I was possessed to buy from the local IBM office a copy of "OS PL/I Optimizing Compiler: Execution Logic".  I see that a 1985 version of that is here: http://bitsavers.trailing-edge.com/pdf/ibm/370/pli/SC33-0025-3_PLI_Optimizing_Compiler_Execution_Logic_Sep85.pdf  454 pages.  Lots of ASCII (well, EBCDIC?) diagrams and flowcharts.  See pages 31 and 151 for two examples.

In a comparative languages class that I’ve taught at the U of Arizona, I've described PL/I as an example of what can happen when a language designer incorporates a number of good features from other languages: you get a Frankenstein.  Support for `PIC` formatting comes to mind as one of the things borrowed from COBOL.

IIRC, and it’s a dim memory of a then-freshman, an interesting thing about PL/I is that it has no reserved words.  You can say something like `if else = if then while = returns + return;`

PL/I also has a macro facility that I only "got" years later, when learning C.  Hmm...no PL/I examples in https://rosettacode.org/wiki/Metaprogramming.  I wish I had a clone to give that task.

Very conveniently, PL/I has a `put data;` statement that prints the value of all variables in scope.

A friend at NCSU in the 70s, Billy Willis, used PL/M on maybe a PDP-11 for a system he wrote to support his dissertation in chemical engineering.

William Mitchell
Mitchell Software Engineering
Occasional Adjunct Instructor at U of AZ CS
520-870-6488 (m)
Discord: whm#5716, Twitter: @x77686d, Skype: x77686d
linkedin.com/in/x77686d

*Go Wolfpack; beat Purdue!


From paul.winalski at gmail.com  Thu Apr  4 02:19:21 2024
From: paul.winalski at gmail.com (Paul Winalski)
Date: Wed, 03 Apr 2024 16:19:21 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
Message-ID: <CABH=_VSyO8tNQ8HSqEFcNHe5a6gj_rEc7MiC6v9UtLB9cKpU-Q@mail.gmail.com>

On Tue, Apr 2, 2024 at 1:01 PM Charles H Sauer (he/him) <
sauer at technologists.com> wrote:

>
> Being judicious in using just the good parts, PL/I seemed just fine.
> Essentially all of my work at Yorktown was in PL/I.
>
> Every programming language I've encountered has had its share of what I
call toxic language features--things that impair reliability and
maintainability.  Good production programming shops ban the use of these
features in their code.

In the case of PL/I, IMO the most toxic feature is the DEFAULT statement.
This is Fortran's IMPLICIT on steroids.  The end result of using the
DEFAULT statement is that, when you see a variable declaration, you need to
review all of the applicable DEFAULT statements to figure out what the
variable's attributes are.

PL/I was designed to be a successor language to both COBOL and Fortran.
One of the ugly features of Fortran is a fussy set of rules on statement
ordering, particularly on declaration-type statements.  PL/I relaxed those
rules.  Declarations can appear anywhere in the program and apply
throughout the block they appear in.  I know of folks who composed programs
at the keypunch who used to write down variable declarations on a piece of
paper as they came up with them, then when they reached the END statement
of the scope block, punched out all the cards for the DECLARE statements.
This practice was annoying in that, while reading the code you'd encounter
variables that hadn't been declared yet and you'd have to rummage through
the code to find the declarations.  In the PL/I shops I worked at it was
required that all declarations be at the beginning of the scope block.

PL/I also has very weak data typing--you can convert almost any data type
into almost any other data type.  The language has a large and baroque set
of conversion rules, and these don't always produce intuitive results,
particularly when doing fixed decimal division.  It can also mask typos,
leading to hard-to-find bugs.  I once mistyped:

IF A ^= B  [I'm using ^ here for the angle-bracket EBCDIC NOT sign
character]

as:

IF A =^  B

where A and B were both declared as character strings.  So I wrote "if A
equals NOT B".  The compiler happily generated code to treat B as a
character string of 0s and 1s, convert that to a bit string, apply the NOT
operation, then similarly convert A to a bit string and do the comparison.
This of course caused unexpected program behavior.  It might have taken me
a long time to find it except that there was a warning diagnostic message
from the compiler:  "data conversion will be done by subroutine call".
This almost always means you've unintentionally mixed data types.

-Paul W.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/coff/attachments/20240403/7deab312/attachment-0001.htm>

From coff at tuhs.org  Thu Apr  4 03:30:25 2024
From: coff at tuhs.org (segaloco via COFF)
Date: Wed, 03 Apr 2024 17:30:25 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <CABH=_VSyO8tNQ8HSqEFcNHe5a6gj_rEc7MiC6v9UtLB9cKpU-Q@mail.gmail.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <CABH=_VSyO8tNQ8HSqEFcNHe5a6gj_rEc7MiC6v9UtLB9cKpU-Q@mail.gmail.com>
Message-ID: <mSPnrAvVcsHNW0uK0VN6G4delkn7bYVln9_R9N6aTaGyoPPAMNTTAz9JD7wjHoQAR-nOd0YkzSPhfJK__VkahSwrHO_xfVeiNu2TmO7cy_8=@protonmail.com>

On Wednesday, April 3rd, 2024 at 9:18 AM, Paul Winalski <paul.winalski at gmail.com> wrote:

> 
> In the PL/I shops I worked at it was required that all declarations be at the beginning of the scope block.
>  
> -Paul W.

I get (friendly) flack for this from some of my coworkers, context is we're a C# and Java(Type)Script shop.  They poke fun at how I write these languages like a C programmer but I don't ever hear anyone complaining about the readability of my code :)

Declarations anywhere else but the top of blocks irks me, even if the language is totally fine with it.  The only exception is asm, putting all the data and bss at the bottom of assembly units instead.

- Matt G.

From paul.winalski at gmail.com  Thu Apr  4 06:44:53 2024
From: paul.winalski at gmail.com (Paul Winalski)
Date: Wed, 03 Apr 2024 20:44:53 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <mSPnrAvVcsHNW0uK0VN6G4delkn7bYVln9_R9N6aTaGyoPPAMNTTAz9JD7wjHoQAR-nOd0YkzSPhfJK__VkahSwrHO_xfVeiNu2TmO7cy_8=@protonmail.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <CABH=_VSyO8tNQ8HSqEFcNHe5a6gj_rEc7MiC6v9UtLB9cKpU-Q@mail.gmail.com>
 <mSPnrAvVcsHNW0uK0VN6G4delkn7bYVln9_R9N6aTaGyoPPAMNTTAz9JD7wjHoQAR-nOd0YkzSPhfJK__VkahSwrHO_xfVeiNu2TmO7cy_8=@protonmail.com>
Message-ID: <CABH=_VTHTpMcODWniitM0B=ZZo4UVO2SLM+stB95hq6wcVjjVA@mail.gmail.com>

On Wed, Apr 3, 2024 at 1:30 PM segaloco via COFF <coff at tuhs.org> wrote:

> I get (friendly) flack for this from some of my coworkers, context is
> we're a C# and Java(Type)Script shop.  They poke fun at how I write these
> languages like a C programmer but I don't ever hear anyone complaining
> about the readability of my code :)
>
> Someone once observed that a good Fortran programmer can write Fortran in
any programming language.

Here's another PL/I toxic language feature.  Both COBOL and Fortran were
designed around the same time that Noam Conmsky was working out formal
language theory and both have ill-behaved grammars.  Fortran has
context-dependent lexical analysis, for example.  PL/I is better
behaved--the grammar for its lexical analysis is a regular grammar and can
be processed with a state machine.  But unlike C and other more modern
languages, PL/I has no reserved keywords.  So you can write things such as:

IF IF=THEN THEN THEN = ELSE;

Here the first IF and the second THEN are keywords.  Everything else is a
variable name.  Our PL/I shops forbade variable names that were the same as
language keywords.

I suppose the designers of the PL/I language wanted to allow for the
introduction of new language keywords while retaining backwards
compatibility with programs that may have used the new keyword sa a
variable name.

-Paul W.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/coff/attachments/20240403/0d496816/attachment-0001.htm>

From wobblygong at gmail.com  Thu Apr  4 13:37:38 2024
From: wobblygong at gmail.com (Wesley Parish)
Date: Thu, 04 Apr 2024 03:37:38 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <mSPnrAvVcsHNW0uK0VN6G4delkn7bYVln9_R9N6aTaGyoPPAMNTTAz9JD7wjHoQAR-nOd0YkzSPhfJK__VkahSwrHO_xfVeiNu2TmO7cy_8=@protonmail.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <CABH=_VSyO8tNQ8HSqEFcNHe5a6gj_rEc7MiC6v9UtLB9cKpU-Q@mail.gmail.com>
 <mSPnrAvVcsHNW0uK0VN6G4delkn7bYVln9_R9N6aTaGyoPPAMNTTAz9JD7wjHoQAR-nOd0YkzSPhfJK__VkahSwrHO_xfVeiNu2TmO7cy_8=@protonmail.com>
Message-ID: <516a4019-d987-4ca4-ac62-bd6b40841f93@gmail.com>

I learn C by reading Tanenbaum and Comer's OS books, and I cannot 
imagine how putting variable declarations anywhere other than the top of 
the function they belong to, would make sense. Unless they are global, 
in which case they go in a suitably global header file.

Wesley Parish

On 4/04/24 06:30, segaloco via COFF wrote:
> On Wednesday, April 3rd, 2024 at 9:18 AM, Paul Winalski <paul.winalski at gmail.com> wrote:
>
>> In the PL/I shops I worked at it was required that all declarations be at the beginning of the scope block.
>>   
>> -Paul W.
> I get (friendly) flack for this from some of my coworkers, context is we're a C# and Java(Type)Script shop.  They poke fun at how I write these languages like a C programmer but I don't ever hear anyone complaining about the readability of my code :)
>
> Declarations anywhere else but the top of blocks irks me, even if the language is totally fine with it.  The only exception is asm, putting all the data and bss at the bottom of assembly units instead.
>
> - Matt G.

From paul.winalski at gmail.com  Fri Apr  5 01:41:10 2024
From: paul.winalski at gmail.com (Paul Winalski)
Date: Thu, 04 Apr 2024 15:41:10 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <516a4019-d987-4ca4-ac62-bd6b40841f93@gmail.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <CABH=_VSyO8tNQ8HSqEFcNHe5a6gj_rEc7MiC6v9UtLB9cKpU-Q@mail.gmail.com>
 <mSPnrAvVcsHNW0uK0VN6G4delkn7bYVln9_R9N6aTaGyoPPAMNTTAz9JD7wjHoQAR-nOd0YkzSPhfJK__VkahSwrHO_xfVeiNu2TmO7cy_8=@protonmail.com>
 <516a4019-d987-4ca4-ac62-bd6b40841f93@gmail.com>
Message-ID: <CABH=_VQUFcZHT_kRXPdwx_WxJ-oaA-XjjqvCPAt_JgTe4VbFkg@mail.gmail.com>

On Wed, Apr 3, 2024 at 11:37 PM Wesley Parish <wobblygong at gmail.com> wrote:

> I learn C by reading Tanenbaum and Comer's OS books, and I cannot
> imagine how putting variable declarations anywhere other than the top of
> the function they belong to, would make sense. Unless they are global,
> in which case they go in a suitably global header file.
>
> That's the way we always handled declarations in every PL/I shop I worked
in.  Local declarations always appeared immediately following the PROCEDURE
or BEGIN statement that starts the scope to which the declaration applies.
PL/I adopted the idea of nested scopes from Algol.  One other programming
convention we used was to keep variable scopes as localized as possible.
Among other things, it makes lifetime analysis easier for the compiler.

Another feature present in PL/I but not in C or most other languages is
nested procedures.  A nested procedure inherits all of the variables
accessible in the scope of the containing procedure in which it's
declared.  Up-level addressing (use of variables declared outside the
nested procedure) is somewhat error prone and less efficient than accessing
data via a parameter.

PL/I also supports recursion, something not provided for in the usual IBM
S/360 ABI calling convention.  A procedure that can be called recursively
must be declared with the RECURSIVE attribute.  Unlike C, in IBM S/360/370
PL/I recursion was disallowed by default.  DEC's ABI for VMS supports
recursion by default and so DEC PL/I dropped the RECURSIVE attribute.

PL/I also supports an extended version of Fortran's computed GOTO via label
variables.  PL/I statements are labeled by name as opposed to Fortran's
statement numbers.  A label variable can be assigned a statement label
value and a GOTO statement using the label variable transfers control to
whichever statement label is held in the label variable.  Label variables
encourage rat's nest programming styles and very much went out of fashion
when structured programming came along.

-Paul W.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/coff/attachments/20240404/adf91117/attachment-0001.htm>

From roam at ringlet.net  Fri Apr  5 08:53:50 2024
From: roam at ringlet.net (Peter Pentchev)
Date: Thu, 04 Apr 2024 22:53:50 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <516a4019-d987-4ca4-ac62-bd6b40841f93@gmail.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <CABH=_VSyO8tNQ8HSqEFcNHe5a6gj_rEc7MiC6v9UtLB9cKpU-Q@mail.gmail.com>
 <mSPnrAvVcsHNW0uK0VN6G4delkn7bYVln9_R9N6aTaGyoPPAMNTTAz9JD7wjHoQAR-nOd0YkzSPhfJK__VkahSwrHO_xfVeiNu2TmO7cy_8=@protonmail.com>
 <516a4019-d987-4ca4-ac62-bd6b40841f93@gmail.com>
Message-ID: <Zg8vaSU0VGE32Jig@straylight.ringlet.net>

On Thu, Apr 04, 2024 at 04:37:23PM +1300, Wesley Parish wrote:
> On 4/04/24 06:30, segaloco via COFF wrote:
> > On Wednesday, April 3rd, 2024 at 9:18 AM, Paul Winalski <paul.winalski at gmail.com> wrote:
> > 
> > > In the PL/I shops I worked at it was required that all declarations be at the beginning of the scope block.
> > > -Paul W.
> > I get (friendly) flack for this from some of my coworkers, context is we're a C# and Java(Type)Script shop.  They poke fun at how I write these languages like a C programmer but I don't ever hear anyone complaining about the readability of my code :)
> > 
> > Declarations anywhere else but the top of blocks irks me, even if the language is totally fine with it.  The only exception is asm, putting all the data and bss at the bottom of assembly units instead.
> 
> I learn C by reading Tanenbaum and Comer's OS books, and I cannot imagine
> how putting variable declarations anywhere other than the top of the
> function they belong to, would make sense. Unless they are global, in which
> case they go in a suitably global header file.

TBH, the fact that variables can now be declared in the middle of
a block is one of the things that I use most in C90 and C99.
Caveat: I only use it in combination with the "const" keyword for
single-assignment variables, similar to the bindings in some
functional languages. The result is that even the compiler will
yell at me if I try to do something funny to a variable that
I have declared as "this is its value; it is really, really not
supposed to change during its lifetime, but I'm storing it into
a variable mainly to cache it for reuse". A side effect is that
the compiler has another optimization hint.

It also prevents me from using the same name for two different
variables, even by accident.

G'luck,
Peter

-- 
Peter Pentchev  roam at ringlet.net roam at debian.org pp at storpool.com
PGP key:        http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint 2EE7 A7A5 17FC 124C F115  C354 651E EFB0 2527 DF13
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://www.tuhs.org/pipermail/coff/attachments/20240404/45e9d8cc/attachment.sig>

From dave at horsfall.org  Mon Apr  8 09:10:14 2024
From: dave at horsfall.org (Dave Horsfall)
Date: Sun, 07 Apr 2024 23:10:14 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
Message-ID: <alpine.BSF.2.21.9999.2404080905220.31370@aneurin.horsfall.org>

On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote:

[...]

> I wrote a Fortran to PL/I crude translator in SNOBOL [...]

Gadzooks...  For our "write a simple compiler" assignment I threatened to 
use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-)

-- Dave

From sauer at technologists.com  Mon Apr  8 09:25:37 2024
From: sauer at technologists.com (Charles H Sauer (he/him))
Date: Sun, 07 Apr 2024 23:25:37 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <alpine.BSF.2.21.9999.2404080905220.31370@aneurin.horsfall.org>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <alpine.BSF.2.21.9999.2404080905220.31370@aneurin.horsfall.org>
Message-ID: <a40818d5-245a-4291-9dc4-affb9b4a953b@technologists.com>

On 4/7/2024 6:10 PM, Dave Horsfall wrote:
> On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote:
> 
> [...]
> 
>> I wrote a Fortran to PL/I crude translator in SNOBOL [...]
> 
> Gadzooks...  For our "write a simple compiler" assignment I threatened to
> use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-)
> 
> -- Dave

SNOBOL fascinated me as soon as I learned in first languages survey 
course (also covered LISP, ALGOL, others) in 1971.

In the mid 1980s, when we (IBM AIX people) wanted to move our PL.8 code 
to C, I created a PL.8 to C translator in Griswold's Icon successor to 
SNOBOL, then an ISC colleague took it over and enhanced it so that I 
could focus on my other responsibilities. I'm told the enhanced version 
was used quite a bit, but I don't really know.

Charlie

-- 
voice: +1.512.784.7526       e-mail: sauer at technologists.com
fax: +1.512.346.5240         Web: https://technologists.com/sauer/
Facebook/Google/LinkedIn/Twitter: CharlesHSauer

From paul.winalski at gmail.com  Mon Apr  8 11:13:38 2024
From: paul.winalski at gmail.com (Paul Winalski)
Date: Mon, 08 Apr 2024 01:13:38 -0000
Subject: [COFF] Of PL/I
In-Reply-To: <alpine.BSF.2.21.9999.2404080905220.31370@aneurin.horsfall.org>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <alpine.BSF.2.21.9999.2404080905220.31370@aneurin.horsfall.org>
Message-ID: <CABH=_VTOmhgfiZW-RcQJ_BTCPA7x+cYuphXhyVnzx25eOLQ4BQ@mail.gmail.com>

On Sun, Apr 7, 2024 at 7:10 PM Dave Horsfall <dave at horsfall.org> wrote:

> On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote:
>
> [...]
>
> > I wrote a Fortran to PL/I crude translator in SNOBOL [...]
>
> Gadzooks...  For our "write a simple compiler" assignment I threatened to
> use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-)
>
> Translating Fortran to PL/I is pretty straightforward.  It translates
pretty much 1-for-1 except for handling character data.  One could replace
Fortran's Hollerith-encoded character strings with an integer array on
which a PL/I character string has been overlay defined.  Back in 1977 I
translated the TOPS-10 version of the Adventure game, which was in Fortran,
into PL/I so that I could run it on our batch S/370 mainframe.  I used an
IBM 3277 transaction terminal as the interactive interface.  I very
carefully translated the TOPS-10 Fortran into IBM PL/I line by line, except
for the character data where I bit the bullet and used pure PL/I character
variables.  The whole thing ran the very first time and had only one
obscure bug:  instead of saying PLOVER ROOM as one did in the TOPS-10
version, you had to say PLOVERROOM.  Once that bug was fixed the PL/I
version worked like a charm until we got our VAX, where I did another port
of the TOPS-10 program so that it ran under VAX/VMS.  This time it stayed
in Fortran, but again there was funny business with character strings
because of the 36 vs. 32 bit word size.

If I were to write an automated, general Fortran-to-PL/I translator, SNOBOL
would be my language of choice.

-Paul W.

-Paul W.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/coff/attachments/20240408/e4c43a8b/attachment.htm>

From stuff at riddermarkfarm.ca  Wed Apr 10 07:41:21 2024
From: stuff at riddermarkfarm.ca (Stuff Received)
Date: Tue, 9 Apr 2024 17:41:21 -0400
Subject: [COFF] Of PL/I
In-Reply-To: <a40818d5-245a-4291-9dc4-affb9b4a953b@technologists.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <alpine.BSF.2.21.9999.2404080905220.31370@aneurin.horsfall.org>
 <a40818d5-245a-4291-9dc4-affb9b4a953b@technologists.com>
Message-ID: <3c9d8682-1761-dd35-b101-b5aff46288ca@riddermarkfarm.ca>

On 2024-04-07 19:25, Charles H Sauer (he/him) wrote (in part):
> On 4/7/2024 6:10 PM, Dave Horsfall wrote:
>> On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote:
>>
>> [...]
>>
>>> I wrote a Fortran to PL/I crude translator in SNOBOL [...]
>>
>> Gadzooks...  For our "write a simple compiler" assignment I threatened to
>> use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-)
>>
>> -- Dave
> 
> SNOBOL fascinated me as soon as I learned in first languages survey 
> course (also covered LISP, ALGOL, others) in 1971.

I recall a job cards lying around the card readers with ICEBOL written 
on them.  This may have been a local Toronto variant (in the 1970s).

S.


From whm at msweng.com  Wed Apr 10 10:50:06 2024
From: whm at msweng.com (William H. Mitchell)
Date: Tue, 9 Apr 2024 17:50:06 -0700
Subject: [COFF] SNOBOL, ICEBOL, SPITBOL, et al.
In-Reply-To: <3c9d8682-1761-dd35-b101-b5aff46288ca@riddermarkfarm.ca>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <alpine.BSF.2.21.9999.2404080905220.31370@aneurin.horsfall.org>
 <a40818d5-245a-4291-9dc4-affb9b4a953b@technologists.com>
 <3c9d8682-1761-dd35-b101-b5aff46288ca@riddermarkfarm.ca>
Message-ID: <3B54EC8E-D96B-4C2E-8931-D4E3AF276F9B@msweng.com>

Re ICEBOL, there were lots of playful names for SNOBOL4 implementations.  FASBOL, SITBOL and surely SPITBOL come to mind.

Learning SPITBOL at NCSU in Dr. Tharp’s CSC 255 changed the course of my life, to my mother’s rue--I ended up moving from NC to AZ.

I’ve mentioned on TUHS that I used Dave Hanson’s RATSNO (RATFOR meets SNOBOL4) on several large undergrad projects.  I’ve since wondered if I was maybe only regular user of RATSNO in the universe.  (Please let me know if I’m not alone in the universe!) I have hopes of reviving RATSNO, if not revived already on some world.

Instead of calling it "RATSNO", Dr. Tharp liked to get my goat by calling it "RATSPIT".

If Ralph Griswold were still around I think he might say to not confuse SNOBOL with SNOBOL2, SNOBOL3, or SNOBOL4; they were all significantly different.  I believe all the creatively named implementations, like SPITBOL, were implementations of SNOBOL4.

Speaking of differences in the four versions, I thought I'd read in Griswold’s HOPL paper on the SNOBOL languages (https://dl.acm.org/doi/pdf/10.1145/800025.1198417) that there was no such thing as a syntactically invalid SNOBOL (v1) program, but I’m not finding that now.

Just now I found that ChatGPT 3.5 does speak somewhat correctly of there being a difference between SNOBOL and SNOBOL4.  However, when I asked it,
	"Write me a SNOBOL program, and not a SNOBOL4, program to print the numbers from one through 10.",

I got this:
       LOOP  I = 1 TO 10
             OUTPUT = I
       END

And--see above--I believe that to be a syntactically valid SNOBOL program! :)

William Mitchell
Mitchell Software Engineering
Occasional Adjunct Instructor at U of AZ CS
520-870-6488 (m)
Discord: whm#5716, Twitter: @x77686d, Skype: x77686d
linkedin.com/in/x77686d

> On Apr 9, 2024, at 2:41 PM, Stuff Received <stuff at riddermarkfarm.ca> wrote:
> 
> On 2024-04-07 19:25, Charles H Sauer (he/him) wrote (in part):
>> On 4/7/2024 6:10 PM, Dave Horsfall wrote:
>>> On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote:
>>> 
>>> [...]
>>> 
>>>> I wrote a Fortran to PL/I crude translator in SNOBOL [...]
>>> 
>>> Gadzooks...  For our "write a simple compiler" assignment I threatened to
>>> use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-)
>>> 
>>> -- Dave
>> SNOBOL fascinated me as soon as I learned in first languages survey course (also covered LISP, ALGOL, others) in 1971.
> 
> I recall a job cards lying around the card readers with ICEBOL written on them.  This may have been a local Toronto variant (in the 1970s).
> 
> S.
> 


From dave at horsfall.org  Wed Apr 10 11:42:30 2024
From: dave at horsfall.org (Dave Horsfall)
Date: Wed, 10 Apr 2024 11:42:30 +1000 (EST)
Subject: [COFF] SNOBOL, ICEBOL, SPITBOL, et al.
In-Reply-To: <3B54EC8E-D96B-4C2E-8931-D4E3AF276F9B@msweng.com>
References: <alpine.BSF.2.21.9999.2404030158410.31370@aneurin.horsfall.org>
 <CAC20D2NcpbggiT4fJCNTdQ8UzdU7bXsvG6+o8Hh+X32=Ut2uBA@mail.gmail.com>
 <1d3f129c-eafe-4fb2-9ea2-d949f3813c88@technologists.com>
 <alpine.BSF.2.21.9999.2404080905220.31370@aneurin.horsfall.org>
 <a40818d5-245a-4291-9dc4-affb9b4a953b@technologists.com>
 <3c9d8682-1761-dd35-b101-b5aff46288ca@riddermarkfarm.ca>
 <3B54EC8E-D96B-4C2E-8931-D4E3AF276F9B@msweng.com>
Message-ID: <alpine.BSF.2.21.9999.2404101117470.31370@aneurin.horsfall.org>

On Tue, 9 Apr 2024, William H. Mitchell wrote:

> Re ICEBOL, there were lots of playful names for SNOBOL4 implementations.  
> FASBOL, SITBOL and surely SPITBOL come to mind.

Ahh...  SPITBOL...

We used it at UNSW, but it came with a time bomb i.e. the licence had to 
be renewed every so often.  So, me being me I took a hex dump and patched 
the expiry date with Superzap.

Well, it sort of worked...  The compiler would then crash at random for no 
apparent reason, so I took a closer look; it turned out that there was 
more than one check on the expiry date, and took a jump to whatever random 
"address" was in R0 (I think).

OK then; playing silly games are we?

I wrote a program that LOADed SPITBOL into memory, and scanned it for 
anything that looked like that expiry date, and printing them (nicely 
formatted, of course).

After checking the context there were about a dozen of them, and I patched 
the lot; it worked fine after that...

For that effort Dr. Graham McMahon (another of my CompSci lecturers) gave 
me the "Superzap of the Year" award :-)

-- Dave

From dave at horsfall.org  Wed Apr 24 22:31:43 2024
From: dave at horsfall.org (Dave Horsfall)
Date: Wed, 24 Apr 2024 22:31:43 +1000 (EST)
Subject: [COFF] Imagine an architecture where...
Message-ID: <alpine.BSF.2.21.9999.2404242215440.22638@aneurin.horsfall.org>

... every memory location is a stack.

I'm thinking of a notation like:

    A => CADR (yes, I'm a LISP fan)

    A' => A[0]

    A'' => A[-1]

etc.

Not quite APL\360, but I guess pretty close :-)

-- Dave

From ralph at inputplus.co.uk  Wed Apr 24 23:01:28 2024
From: ralph at inputplus.co.uk (Ralph Corderoy)
Date: Wed, 24 Apr 2024 14:01:28 +0100
Subject: [COFF] Imagine an architecture where...
In-Reply-To: <alpine.BSF.2.21.9999.2404242215440.22638@aneurin.horsfall.org>
References: <alpine.BSF.2.21.9999.2404242215440.22638@aneurin.horsfall.org>
Message-ID: <20240424130128.F2C871FB21@orac.inputplus.co.uk>

Hi Dave,

> ... every memory location is a stack.
>
> I'm thinking of a notation like:
>
>     A => CADR (yes, I'm a LISP fan)
>     A' => A[0]
>     A'' => A[-1]

dc(1) has 256 registers identified by a byte.
Each can be treated as a stack, stored to and loaded from with S and L.

-- 
Cheers, Ralph.

From dave at horsfall.org  Thu Apr 25 11:44:54 2024
From: dave at horsfall.org (Dave Horsfall)
Date: Thu, 25 Apr 2024 11:44:54 +1000 (EST)
Subject: [COFF] Imagine an architecture where...
In-Reply-To: <20240424130128.F2C871FB21@orac.inputplus.co.uk>
References: <alpine.BSF.2.21.9999.2404242215440.22638@aneurin.horsfall.org>
 <20240424130128.F2C871FB21@orac.inputplus.co.uk>
Message-ID: <alpine.BSF.2.21.9999.2404251137300.22638@aneurin.horsfall.org>

On Wed, 24 Apr 2024, Ralph Corderoy wrote:

> dc(1) has 256 registers identified by a byte. Each can be treated as a 
> stack, stored to and loaded from with S and L.

Jeeze, I'd forgotten about DC; thanks!

-- Dave, with his treasured HP-42S

From sjenkin at canb.auug.org.au  Sat Apr 27 15:19:46 2024
From: sjenkin at canb.auug.org.au (steve jenkin)
Date: Sat, 27 Apr 2024 15:19:46 +1000
Subject: [COFF] [ off topic ] History of US computing leading to 1968 NATO
 Conference on Software Engineering
Message-ID: <3FEB2B5C-B791-4FD3-AA69-A839251FD282@canb.auug.org.au>

Sorry for the dual list post, I don’t who monitors COFF, the proper place for this.

There may a good timeline of the early decades of Computer Science and it’s evolution at Universities in some countries, but I’m missing it.

Doug McIlroy lived through all this, I hope he can fill in important gaps in my little timeline.

It seems from the 1967 letter, defining the field was part of the zeitgeist leading up to the NATO conference.

	1949	ACM founded
	1958	First ‘freshman’ computer course in USA, Perlis @ CMU

	1960	IBM 1400 - affordable & ‘reliable’ transistorised computers arrived
	1965	MIT / Bell / General Electric begin Multics project. 
			CMU establishes Computer Sciences Dept.
	1967	“What is Computer Science” letter by Newell, Perlis, Simon 
	1968	“Software Crisis” and 1st NATO Conference
	1969	Bell Labs withdraws from Multics
	1970	GE's sells computer business, including Multics, to Honeywell
	1970	PDP-11/20 released
	1974	Unix issue of CACM

=========

The arrival of transistorised computers - cheaper, more reliable, smaller & faster - was a trigger for the accelerated uptake of computers.

The IBM 1400-series was offered for sale in 1960, becoming the first (large?) computer to sell 10,000 units - a marker of both effective marketing & sales and attractive pricing.

The 360-series, IBM’s “bet the company” machine, was in full development when the 1400 was released.

=========

Attached is a text file, a reformatted version of a 1967 letter to ’Science’ by Allen Newell, Alan J. Perlis, and Herbert A. Simon:

	"What is computer science?”
	<https://www.cs.cmu.edu/~choset/whatiscs.html>


=========

A 1978 masters thesis on Early Australian Computers (back to 1950’s, mainly 1960’s) cites a 17 June 1960 CSIRO report estimating
1,000 computers in the US and 100 in the UK. With no estimate mentioned for Western Europe.

The thesis has a long discussion of what to count as a (digital) ‘computer’ -
	sources used different definitions, resulting in very different numbers, 
	making it difficult to reconcile early estimates, especially across continents & countries. 

Reverse estimating to 1960 from the “10,000” NATO estimate of 1968, with a 1- or 2-year doubling time, 
gives a range of 200-1,000, including the “100” in the UK.

Licklider and later directors of ARPA’s IPTO threw millions into Computing research in the 1960’s, funding research and University groups directly.
[ UCB had many projects/groups funded, including the CSRG creating BSD & TCP/IP stack & tools ]

Obviously there was more to the “Both sides of the Atlantic” argument of E.W. Dijkstra and Alan Kay - funding and numbers of installations was very different.

The USA had a substantially larger installed base of computers, even per person,
and with more university graduates trained in programming, a higher take-up in private sector, not just the public sector and defence, was possible.

=========

<https://www.acm.org/about-acm/acm-history>

	In September 1949, a constitution was instituted by membership approval.

————

<https://web.archive.org/web/20160317070519/https://www.cs.cmu.edu/link/institutional-memories>

	In 1958, Perlis began teaching the first freshman-level computer programming course in the United States at Carnegie Tech. 

	In 1965, Carnegie Tech established its Computer Science Department with a $5 million grant from the R.K. Mellon Foundation. Perlis was the first department head.

=========

From the 1968 NATO report [pg 9 of pdf ]
	<http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF>

Helms: 
	In Europe alone there are about 10,000 installed computers — this number is increasing at a rate of anywhere from 25 per cent to 50 per cent per year. 
	The quality of software provided for these computers will soon affect more than a quarter of a million analysts and programmers.

d’Agapeyeff:
	In 1958 a European general purpose computer manufacturer often had less than 50 software programmers, 
	now they probably number 1,000-2,000 people; what will be needed in 1978?

	_Yet this growth rate was viewed with more alarm than pride._ (comment)


=========

--
Steve Jenkin, IT Systems and Design 
0412 786 915 (+61 412 786 915)
PO Box 38, Kippax ACT 2615, AUSTRALIA

mailto:sjenkin at canb.auug.org.au http://members.tip.net.au/~sjenkin


-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Newell-Perlis-Simon-1967_What is Computer Science?.txt
URL: <http://www.tuhs.org/pipermail/coff/attachments/20240427/496d09f5/attachment.txt>

