The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
* [TUHS] long lived programs
@ 2018-04-06 22:33 Doug McIlroy
  2018-04-07  1:01 ` Paul Winalski
  0 siblings, 1 reply; 29+ messages in thread
From: Doug McIlroy @ 2018-04-06 22:33 UTC (permalink / raw)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 753 bytes --]

> Shortly after I arrived, the comp center announced a
brand-new feature -- permanent disc storage!  (actually, I think it
was a drum...)

Irrelevant to the story (or Unix), but it was indeed a disc drive--much
more storage per unit volume than drums, which date to the 1940s, if
not before. Exact opposite of current technology: super heavy and
rigid combs banged in and out of the disk stack. The washing-machine
sized machine could be driven to walk across the floor. It would not
be nice to be caught in its path. (Fortunately ordinary work loads
did not have such an effect.) Vic Vyssotsky calculated that with only
10 times its 10MB capacity, we could have kept the entire printed
output since the advent of computers at the Labs on line.

Doug


^ permalink raw reply	[flat|nested] 29+ messages in thread
* [TUHS] long lived programs
@ 2018-04-05 21:03 Norman Wilson
  2018-04-05 21:23 ` Clem Cole
                   ` (3 more replies)
  0 siblings, 4 replies; 29+ messages in thread
From: Norman Wilson @ 2018-04-05 21:03 UTC (permalink / raw)


Steve Johnson:

  But in this case, part of the requirement was to pass some standard
  simulation tests (in FORTRAN, of course).  He was complaining that
  these programs had bugs and didn't give the right answer.

====

This reminds me of an episode during my time at Bell Labs.

The System V folks wanted to make pipes that were streams;
our experience in Research showed that that was useful.  We'd
done it just by making pipe(2) create a stream.  This caused
some subtle differences in semantics (pipes became full-duplex;
writing to a pipe put a delimiter in the stream, so that a
corresponding read on the other end would stop at the delimiter;
write(pipefd, "", 0) therefore generated something that would
make read(pipeotherfd, buf, len) return 0).  We'd been running
all our systems that way for a while, and had uncovered no
serious problems.

But the System V folks were very nervous about it anyway, and
wrote a planning document in which they proposed to create a
new, different system call to make stream pipes.  pipe(2) would
make an old-fashioned pipe; spipe(2) (or whatever it was called,
I forget the name) had to be called to get a stream.  The document
didn't really explain the justification for this.  To us in
Research it just sounded crazy.

Someone else was going to attend a meeting with the developers,
but at the last minute he had a conflict, so he drafted me to
go.  Although I can be pretty blunt in writing, I try not to be
so much so in person when dealing with people I don't know; so
rather than asking how they could be so crazy as to add a new
kind of pipe, I asked why they really thought it necessary.

It took a little probing, but the answer turned out to be that
their management insisted that everything pass an official
verification suite to prove compliance with the System V,
Consider It Standard; and said verification suite didn't just
check that the first file descriptor returned by pipe(2) could
be read and the second written, it insisted that the first could
not be written and the second not read.  Full-duplex pipes didn't
meet the standard, it was claimed.

I asked what exactly is the standard?  The SVID, I was told.

What does the SVID really say, I wondered?  We got a copy and
looked up pipe(2).  According to the official standard, the
first file descriptor must be readable and the second writeable,
but there was no statement that it couldn't work the other way too.
Full-duplex pipes did in fact meet the standard; it was the
verification suite that, in an excess of zeal, didn't conform.

The developers were absolutely delighted with this.  They too
thought it was stupid to have two different kinds of pipes,
particularly given our experience that full-duplex delimited
pipes didn't break anything.  They were very happy to have
Research not just yell at them for doing things differently
from us, but help them figure out how to justify doing things
right.

I don't know just how they took this further with management,
but as it came out in SVr4, pipe(2) returned a full-duplex
stream.  This is still true even unto Solaris 10, where I just
tested it.

I made friends that day.  That developer group kept in touch
with me as they did further work on pipes, the terminal driver,
pseudo-ttys, and other things.  I didn't agree with everything
they did, but we were able to discuss it all cordially.

Sometimes the verification program just needs to be fixed.
And sometimes the developers that seem set on doing the wrong
thing really want help in subverting whatever is forcing that
on them, because they really do know what the right thing is.

Norman Wilson
Toronto ON


^ permalink raw reply	[flat|nested] 29+ messages in thread
* [TUHS] long lived programs (was Re: RIP John Backus
@ 2018-03-23 18:27 Bakul Shah
  2018-03-23 20:50 ` [TUHS] long lived programs Steve Johnson
  0 siblings, 1 reply; 29+ messages in thread
From: Bakul Shah @ 2018-03-23 18:27 UTC (permalink / raw)


On Mar 22, 2018, at 7:53 PM, Doug McIlroy <doug at cs.dartmouth.edu> wrote:
> 
> "The only thing I can think of is to use have programs that
> translate programs in todays languages to a common but very
> simple universal language for their "long term storage". May
> be something like Lamport's TLA+? A very tough job.
> "
> 
> Maybe not so hard. An existence proof is Brenda Baker's "struct",
> which was in v7. It converted Fortran to Ratfor (which of course
> turned it back to Fortran). Interestingly, authors found their
> completely reorganized code easier to read than what they had
> written in the first place.
> 
> Her big discovery was a canonical form--it was not a matter of
> taste or choice how the code got rearranged.
> 
> It would be harder to convert the code to say, Matlab,
> because then you'd have to unravel COMMON statements and
> format strings. It's easy to cook up nasty examples, like
> getting away with writing behyond the end of an array, but
> such things are rare in working code.

I can believe that for Fortran but for C/C++ or other such 
less well defined languages this may be much harder. Far
easier to write an emulator for x86 and that is fine if all
you want to do is run the same old compiled program but if you
want to make changes, de-compiling x86 code to something
structured would be much harder. Compiling the original code
to a multi-paradigm language such as Scheme or Lisp may be
another alternative....
 
[Aside:
Thanks for mentioning the name of this program as I had 
forgotten it.  I used "struct" once to convert a Fortran 
program to Ratfor and then manually to C. This was for 
programming PALs and we wanted to make some local changes.
IIRC, this was back in '82, back when vendors gave you
programs with sources for their devices, unlike the Xilinx &
Altera of today who don't even publish bitstream formats used
to program their devices.]


^ permalink raw reply	[flat|nested] 29+ messages in thread
* [TUHS] long lived programs
@ 2018-03-23 15:51 Ron Natalie
  2018-03-23 15:57 ` Clem Cole
  0 siblings, 1 reply; 29+ messages in thread
From: Ron Natalie @ 2018-03-23 15:51 UTC (permalink / raw)


A core package in a lot of the geospatial applications is a old piece of
mathematical code originally written in Fortran (probably in the sixties).
Someone probably in the 80's recoded the thing pretty much line for line
(maintaining the horrendous F66 variable names etc.) into C.     It's
probably ripe for a jump to something else now.

 

We've been through four major generations of the software.    The original
was all VAX based with specialized hardware (don't know what it was written
in).    We followed that on with a portable UNIX (but mostly Suns, but ours
worked on SGI, Ardent, Stellar, various IBM AIX platofrms, Apollo DN1000's,
HP, DEC Alphas).   This was primarily a C application.    Then right about
the year 2000, we jumped to C++ on Windows.    Subsequently it got back
ported to Linux.     Yes there are some modules that have been unchanged for
decades, but the system on the whole has been maintained.

 

The bigger issue than software getting obsoleted is that the platform needed
to run it goes away.   

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20180323/a6ab4cdb/attachment.html>


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

end of thread, other threads:[~2018-04-07 20:41 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-06 22:33 [TUHS] long lived programs Doug McIlroy
2018-04-07  1:01 ` Paul Winalski
2018-04-07  1:09   ` Larry McVoy
  -- strict thread matches above, loose matches on Subject: below --
2018-04-05 21:03 Norman Wilson
2018-04-05 21:23 ` Clem Cole
2018-04-05 21:38   ` Bakul Shah
2018-04-06  2:03     ` Random832
2018-04-06  4:27       ` Warner Losh
2018-04-06  4:31         ` Jon Steinhart
2018-04-06  4:58         ` Steve Nickolas
2018-04-06  5:02           ` Jon Steinhart
2018-04-06  4:29       ` Steve Johnson
2018-04-06  5:57       ` Bakul Shah
2018-04-06 21:52         ` Peter Jeremy
2018-04-05 22:46   ` Arthur Krewat
2018-04-05 23:23   ` Paul Winalski
2018-04-05 23:33     ` Arthur Krewat
2018-04-06  0:05       ` Toby Thain
2018-04-06  4:51 ` Dave Horsfall
2018-04-06 15:00 ` Tony Finch
2018-04-07 20:41 ` Paul Winalski
2018-03-23 18:27 [TUHS] long lived programs (was Re: RIP John Backus Bakul Shah
2018-03-23 20:50 ` [TUHS] long lived programs Steve Johnson
2018-03-23 21:07   ` Clem Cole
2018-03-23 15:51 Ron Natalie
2018-03-23 15:57 ` Clem Cole
2018-03-23 16:25   ` Lars Brinkhoff
2018-03-23 16:59     ` Lawrence Stewart
2018-03-23 17:31       ` Steve Nickolas
2018-03-23 16:32   ` Ron Natalie

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).