This new paper was published today, and it is open access, so everyone should
have access:
Diomidis Spinellis and Marios Fragkoulis
Extending Unix Pipelines to DAGs
IEEE Transactions on Computers 66(9) 1547--1561 September 2017
http://dx.doi.org/10.1109/TC.2017.2695447
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe(a)math.utah.edu -
- 155 S 1400 E RM 233 beebe(a)acm.org beebe(a)computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
> [Fortran's optimization] worked so well that the results that came out of the compiler
> sometimes suprised the compiler writers!
Except when it didn't. They gave particular attention to nested
loops with subscripted variables, exemplified by linear-algebra
computations. But their algorithms behaved quite wildly on
nonstandard loops. Vic Vyssotsky cooked up a nest of loops
surrounding a single awful statement that filled up the
maximum 10 continuation lines with triple subscripts in all
permutations of several variables. That statement compiled
into thousands of instructions, far more than a naively
written compiler would have produced.
doug
On 8/16/17, Doug McIlroy <doug(a)cs.dartmouth.edu> wrote:
>>> the 709 added CAS
>
>> It was my understanding that the 704 had this instruction too
>
> Yes. It's in the manual.
>
> (I searched in vain for an online manual. A quick trip to the
> attic turned up the real thing in less time.)
>
> Doug
>
>From what I've been able to determine, FORTRAN came out shortly after
the IBM 704. Undoubtedly both were under development at the same
time. So the question is, was arithmetic IF put in FORTRAN to take
advantage of the CAS instruction, or was CAS added to the IBM 704
instruction set to provide hardware support for arithmetic IF? Or
maybe neither?
According to the Wikipedia article on FORTRAN, CAS was usually not the
most efficient way to implement arithmetic IF anyway. CAS takes up
four words of memory and takes three cycles to execute, whereas you
can do it in two words and two cycles with the transfer instructions.
-Paul W.
> According to the Wikipedia article on FORTRAN, CAS was usually not the
> most efficient way to implement arithmetic IF anyway. CAS takes up
> four words of memory and takes three cycles to execute, whereas you
> can do it in two words and two cycles with the transfer instructions.
Though the article's conclusion was right, its numbers were wrong.
As a correct discussion of possible implementations of arithmetic-IF
would be long and essentially off topic, I have chopped most of it
out of the article.
doug
>> the 709 added CAS
> It was my understanding that the 704 had this instruction too
Yes. It's in the manual.
(I searched in vain for an online manual. A quick trip to the
attic turned up the real thing in less time.)
Doug
On Sun, 13 Aug 2017, Dave Horsfall wrote:
> On Sat, 12 Aug 2017, Steve Johnson wrote:
>
>> A little Googling shows that the IF I mentioned was called the
>> "arithmetic IF".
>
> Ah yes. It was in FORTRAN II, as I recall.
It turns out the original FORTRAN (manual published in October 1956; code first shipped around April 1957) included the arithmetic IF as well as the assigned and computed GOTO statements — see chapter 4 of this manual:
J.W. Backus, R.J. Beeber, S. Best, R. Goldberg, H.L. Herrick, R.A. Hughes, L.B. Mitchell, R.A. Nelson, R. Nutt, D. Sayre, P.B. Sheridan, H. Stern, I. Ziller. The FORTRAN Automatic Coding System for the IBM 704 EDPM : Programmer's Reference Manual. Applied Science Division and Programming Research Department, International Business Machines Corporation, October 15, 1956, 51 pages.
http://www.bitsavers.org/pdf/ibm/704/704_FortranProgRefMan_Oct56.pdf
(For more on the original FORTRAN compiler, see http://www.softwarepreservation.org/projects/FORTRAN/.)
On Tue, 15 Aug 2017, Dave Horsfall <dave(a)horsfall.org> wrote:
>> On Mon, 14 Aug 2017, Paul Winalski wrote:
>>
>> [ Ye olde 704 ]
>>
>>> TMP (transfer on plus)
>>
> That's rather an odd mnemonic…
Actually, the 704 manual of operation gives the mnemonic as TPL:
http://www.bitsavers.org/pdf/ibm/704/24-6661-2_704_Manual_1955.pdf
Jon Steinhart <jon(a)fourwinds.com> asked this question (not on tuhs).
It highlights some less well known contributors to research Unix.
> I'm trying to find out who came up with strcmp and the idea of
> returning -1,0,1 for a string comparison. I can see that it's not in
> my V6 manual but is in V7. Don't see anything in Algol, PL/I, BCPL, or B
The -1,0,1 return from comparisons stems from the interface of qsort,
which was written by Lee McMahon. As far as I know, the interface for
the comparison-function parameter originated with him, but conceivably
he borrowed it from some other sort utility. The negative-zero-positive
convention for the return value encouraged (and perhaps was motivated by)
this trivial comparison function for integers
int compar(a,b) { return(a-b); }
This screws up on overflow, so cautious folks would write it with
comparisons. And -1,0,1 were the easiest conventional values to return:
int compar(a,b) {
if(a<b) return(-1);
if(a>b) return(1);
return(0);
}
qsort was in v2. In v3 a string-comparison routine called "compar"
appeared, with a man page titled "string comparison for sort". So the
convention was established early on.
Compar provided the model for strcmp, one of a package of basic string
operations that came much later, in v7, under the banner of string.h
and ctype.h.
These packages were introduced at the urging of Nils-Peter Nelson, a
good friend of the Unix lab, who was in the Bell Labs comp center.
Here's the story in his own words.
I wrote a memo to dmr with some suggestions for additions to C. I asked
for the str... because the mainframes had single instructions to implement
them. I know for sure I had a blindingly fast implementation of isupper,
ispunct, etc. I had a table of length 128 integers for the ascii character
set; I assigned bits for upper, lower, numeric, punct, control, etc. So
ispunct(c) became
#define PUNCT 0400
return(qtable[c]&PUNCT)
instead of
if(c==':' || c ==';' || ...
[or
switch(c) {
default:
return 0;
case ':':
case ';':
...
return 1;
}
MDM]
dmr argued people could easily write their own but when I showed
him my qtable was 20 times faster he gave in. I also asked for type
logical which dmr implemented as unsigned, which was especially useful
when bitfields were implemented (a 2 bit int would have values -2, -1,
0, 1 instead of 0, 1, 2, 3). I requested a way to interject assembler,
which became asm() (yes, a bad idea).
TL;DR - I learned procedural programming in Fortran, wrote essentially the same queueing network solution algorithms and simulator in Fortran, then PL/I, then Pascal. For those purposes, PL/I seemed best, but Fortran was OK. (With Fortran and PL/I) the critical issue was to avoid undesirable constructs of the language.
When I got started with procedural programming at U.T. Austin C.S. in 1971, the dominant machine and language was CDC 6600 Fortran. For my dissertation I needed to write a queueing network simulator to attempt to validate approximate numerical methods I developed. Though by then Pascal was an option, Fortran seemed expedient.
In 1975 I joined IBM Yorktown and was asked to dramatically enhance my simulator. It became the core of the “Research Queueing Package” (http://web.archive.org/web/20130627040507/http://www.research.ibm.com/comps…) For the first year or so, I continued to use Fortran. From my perspective, the biggest problems weren’t the bad features, which I could avoid, but the lack of more natural control structures, pointers, and something like structs. My managers lamented that I wasn’t using PL/I. I spent a couple of weeks crafting a SNOBOL program to successfully translate the Fortran to PL/I. For the next decade plus, RESQ development was in PL/I (even after I left Yorktown and subsequently left IBM).
While writing Computer Systems Performance Modeling (https://www.amazon.com/exec/obidos/ISBN=0131651757/0596-2808191-282542) I wanted to illustrate the analysis, algorithms, and simulation concepts developed with RESQ, but be careful not to take anything directly from RESQ. So I wrote everything for the book in PASCAL.
For a variety of reasons, I remember much preferring PL/I over Fortran and Pascal. The Pascal development environments I used weren’t as productive as the PL/I environments. Fortran was missing very useful constructs. But Fortran was OK, in my experience.
--
voice: +1.512.784.7526 e-mail: sauer(a)technologists.com <mailto:sauer@technologists.com>
fax: +1.512.346.5240 web: http://technologists.com/sauer/ <http://technologists.com/sauer/>
Facebook/Google/Skype/Twitter: CharlesHSauer
On 2017-08-13 19:24, Dave Horsfall <dave(a)horsfall.org> wrote:
> On Sat, 12 Aug 2017, Steve Johnson wrote:
>> A little Googling shows that the IF I mentioned was called the
>> "arithmetic IF".
> Ah yes. It was in FORTRAN II, as I recall.
Still there in FORTRAN 77.
>> There was also a Computed GOTO that branched to one of N labels
>> depending on the value of the expression.
> I think that was still in FORTRAN IV?
Still there in FORTRAN 77.
>> And an Assigned GOTO whose main use, as I remember, was to allow for
>> error recovery when a subroutine failed...
> A real ugly statement; you assigned a statement number to a variable, then
> did a sort of indirect GOTO (or did the compiler recognise "GOTO I")?
The compiler recognize "GOTO I". And I have to be assigned to a
statement number (label). It has to be an integer variable, and when you
assign it to a label, you cannot do any arithmetic with it anymore. And
you assign it with a special statement. Thus, it can be used to store
what label to jump to, but you cannot use arithmetic to set what it
should jump to.
> How those poor devils ever debugged their code with such monstrous
> constructions I'll never know.
It's actually not that hard. All this stuff is fairly simple to deal
with. The real horror in FORTRAN is EQUIVALENCE, which can give C a fair
fight for real horror stories.
But of course, bad programmers can mess things up beyond belief in any
language.
(And I never went beyond FORTRAN 77, so I don't know how current
versions look like. I stayed with PDP-11s (well, still do), and nothing
newer than FORTRAN 77 exists there. :-) )
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt(a)softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=401792
I think this qualifies as history :-) At least for me personally, the
last 12 years feel like a lifetime.
It is significant that so far the report has not been ported forward to
a newer emacs version (as it had been previously from 21 to 24). I have
no newer version installed so I cannot check but I bet the bug is still
present. Maybe someone else on the list can check?
--
Please don't Cc: me privately on mailing lists and Usenet,
if you also post the followup to the list or newsgroup.
Do obvious transformation on domain to reply privately _only_ on Usenet.
Hi all, sorry for this off-topic posting.
I just came across this series of videos where a guy built a CPU out
of 7400 series chips on a breadboard: https://eater.net/8bit/
Anyway, I thought it would be fun to do something similar but with
a bigger address space and as few chips as I could get away with.
I've got a design that works in Logisim, but I've never actually
built anything before with real chips. So, if there's someone on the
list who could quickly look at what I've done and point out problems
or gotchas (or indeed, what ROM/RAM chips to use), that would be great!
The design so far: https://github.com/DoctorWkt/eeprom_cpu
Thanks in advance, Warren
Hi all,
Sorry if this is the wrong place to ask...
I started my home UNIX hobby in the mid-1980's with Microport SVR2 on Intel
286. With a couple of modems I started a public access UNIX system in
Hampton Roads, VA.
That system graduated to SVR3.0, 3.1, 3.2 on 386, and finally 4.2 with 4
modems running on an AST 4-port card on 486. That was about 1992 when I
started an ISP using SVR4.2. That ISP, also in Hampton Roads, grew quite
large. We were in 100 cities and partnered with newspapers and managed
their content on the brand new web. By then we had graduated to large Alpha
systems and Sun Enterprise.
Now I'm all grown up and and experiencing a 2nd childhood. I run SVR4.2MP
here on a real dual processor Pentium system, but I'd like to get back to
SVR3.2 on period hardware, and later to r2.
My problem is I don't have a copy and don't know where to find one. Do any
of you happen to have a diskette (or disk image) set you can part with?
Ideally I'd like a development system and networking. But I've always been
an optimist :)
I'm happy to pay reasonable fees.
Tom
Thanks for the replies!
I figured that like other lists I frequent, most here would be BSDish folk.
Glad to know there are others with commercial AT&T experience.
I know r2 has no networking and used UUCP extensively back when. I'll be
using it for local transfer along with Kermit.
My particular sickness requires me to run these operating systems on mostly
period hardware. My SVR4 runs on all period stuff except I use SCSI2SD for
the disk. Old disks are becoming hard to find and expensive, and I really
don't want to be playing with MFM or RLL anymore. I'll likely try to find
some kind of substitute. I know they are out there.
I think r3.2 supported SCSI, so I should be ok there.
Tom
I have no actual information about the lantern character, but
a tapered "storm lantern" would be far down my list of guesses.
The tapered chmney would much more likely be called a "lamp",
for it's a standard shape for the oil (kerosene) lamps
that everyone had before electricity.
My top guess would be a carriage lantern with a Japanese
garden ornament as a distant second. The carriage lantern
would be an unfilled circle superimposed on a vertical
rectangle, filled or unfilled. The rectangle might be
simplified to two (interrupted) vertical sides.
An alternate form of lantern would be a side view of
a carriage (or picture-projection) lantern, schematized
as a box, with a flaring projection to the right--an
icon for shining light on a subject, also interpretable
as a movie camera.
A Japanese lantern would be tripartite: cap, body, and
feet.
Do any of these possibilities ring a bell?
Doug
> Message: 1
> Date: Thu, 27 Jul 2017 11:58:38 -0400
> From: Random832 <random832(a)fastmail.com>
> To: tuhs(a)minnie.tuhs.org
> Subject: [TUHS] Anyone know what a LANTERN is?
> Message-ID:
> <1501171118.69633.1054588920.11864815(a)webmail.messagingengine.com>
> Content-Type: text/plain; charset="utf-8"
>
> There is a character in the terminfo/curses alternate character set,
> ACS_LANTERN, which is mapped to "i" in the VT100 alternate grapical
> character set. This character is, in fact, on a real VT100/VT220 (and
> therefore in most modern terminal emulators that support the full ACS),
> "VT" (in 'control character picture' format, along with HT FF CR LF NL).
> The ASCII mapping uses "#", and some CP437/etc mappings map it to the
> double box drawing intersection character.
>
> Was there ever a real 'lantern' character? The manpage mentions "some
> characters from the AT&T 4410v1 added". What did it look like?
There's two references in the termcap manpages:
http://invisible-island.net/ncurses/man/terminfo.5.html
and
http://invisible-island.net/ncurses/man/curs_add_wch.3x.html
The second link mentions that the AT&T 4410 terminal added this glyph in the location of the VT100 VT glyph. Apparently what it looked like is lost, unless someone finds a detailed 4410 manual (or has a working one in the attic).
There is a character in the terminfo/curses alternate character set,
ACS_LANTERN, which is mapped to "i" in the VT100 alternate grapical
character set. This character is, in fact, on a real VT100/VT220 (and
therefore in most modern terminal emulators that support the full ACS),
"VT" (in 'control character picture' format, along with HT FF CR LF NL).
The ASCII mapping uses "#", and some CP437/etc mappings map it to the
double box drawing intersection character.
Was there ever a real 'lantern' character? The manpage mentions "some
characters from the AT&T 4410v1 added". What did it look like?
That is such a great shot!
Since we are on the topic of photos…
I’ve been shooting portraits of some of these same people as part of a larger photo project called Faces of Open Source.
If anyone is interested in taking a look, here they are: http://facesofopensource.com
-P-
—
Peter Adams Photography | web: http://www.peteradamsphoto.com | Instagram/twitter: @peteradamsphoto @facesopensource
> On Jul 19, 2017, at 7:00 PM, tuhs-request(a)minnie.tuhs.org wrote:
>
> Send TUHS mailing list submissions to
> tuhs(a)minnie.tuhs.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
> https://minnie.tuhs.org/cgi-bin/mailman/listinfo/tuhs
> or, via email, send a message with subject or body 'help' to
> tuhs-request(a)minnie.tuhs.org
>
> You can reach the person managing the list at
> tuhs-owner(a)minnie.tuhs.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of TUHS digest..."
> Today's Topics:
>
> 1. Photo of some Unix greats (Dave Horsfall)
> 2. Re: Photo of some Unix greats (Larry McVoy)
> 3. Re: Photo of some Unix greats (Dan Cross)
>
> From: Dave Horsfall <dave(a)horsfall.org>
> Subject: [TUHS] Photo of some Unix greats
> Date: July 19, 2017 at 3:48:48 PM PDT
> To: The Eunuchs Hysterical Society <tuhs(a)tuhs.org>
>
>
> https://en.wikipedia.org/wiki/Steven_M._Bellovin#/media/File:Usenix84_1.jpg
>
> Dennis Ritchie, Steve Bellovin, Eric Allman, Andrew Hume (I know him), Don Seeley, Mike Karels, Clem Cole...
>
> --
> Dave Horsfall DTM (VK2KFU) "Those who don't understand security will suffer."
>
>
>
>
> From: Larry McVoy <lm(a)mcvoy.com>
> Subject: Re: [TUHS] Photo of some Unix greats
> Date: July 19, 2017 at 4:35:05 PM PDT
> To: Dave Horsfall <dave(a)horsfall.org>
> Cc: The Eunuchs Hysterical Society <tuhs(a)tuhs.org>
>
>
> It's a cool picture, thanks. Brings back lots of memories and makes me
> hate being younger than that crowd, would have loved to have been there.
> I was just far enough along at that point to have a job sys admining some
> of Clem's work products, 3 Masscomps. Think I was a junior in college.
>
> Great picture, good people.
>
> On Thu, Jul 20, 2017 at 08:48:48AM +1000, Dave Horsfall wrote:
>> https://en.wikipedia.org/wiki/Steven_M._Bellovin#/media/File:Usenix84_1.jpg
>>
>> Dennis Ritchie, Steve Bellovin, Eric Allman, Andrew Hume (I know him), Don
>> Seeley, Mike Karels, Clem Cole...
>>
>> --
>> Dave Horsfall DTM (VK2KFU) "Those who don't understand security will suffer."
>
> --
> ---
> Larry McVoy lm at mcvoy.comhttp://www.mcvoy.com/lm
>
>
>
>
> From: Dan Cross <crossd(a)gmail.com>
> Subject: Re: [TUHS] Photo of some Unix greats
> Date: July 19, 2017 at 6:22:47 PM PDT
> To: Dave Horsfall <dave(a)horsfall.org>
> Cc: The Eunuchs Hysterical Society <tuhs(a)tuhs.org>
>
>
> I like how Andrew Hume is defying the weather. Like a boss.
>
> On Wed, Jul 19, 2017 at 6:48 PM, Dave Horsfall <dave(a)horsfall.org <mailto:dave@horsfall.org>> wrote:
> https://en.wikipedia.org/wiki/Steven_M._Bellovin#/media/File:Usenix84_1.jpg <https://en.wikipedia.org/wiki/Steven_M._Bellovin#/media/File:Usenix84_1.jpg>
>
> Dennis Ritchie, Steve Bellovin, Eric Allman, Andrew Hume (I know him), Don Seeley, Mike Karels, Clem Cole...
>
> --
> Dave Horsfall DTM (VK2KFU) "Those who don't understand security will suffer."
>
>
>
> _______________________________________________
> TUHS mailing list
> TUHS(a)minnie.tuhs.org
> https://minnie.tuhs.org/cgi-bin/mailman/listinfo/tuhs
On 2017-07-09 23:44, ron minnich <rminnich(a)gmail.com> wrote:
> On Sun, Jul 9, 2017 at 2:29 PM Dave Horsfall <dave(a)horsfall.org> wrote:
>>
>> I vaguely remember something like "PIP *.TXT *.OLD" to rename files (the
>> "*" was interpreted by the command itself, not the interpreter).
Well, that would not rename files, but copy them and at the same time
changing their names. But you could also do renaming in a similar way,
but usually it would require a switch to PIP telling it that you wanted
the files renamed, and not copied.
Also, the syntax of PIP, and the order of arguments is a bit different.
At least the versions I can remember right now, it would be:
PIP *.OLD=*.TXT
to copy, and
PIP *.OLD/RE=*.TXT
to rename.
And yes, it is the program who process the wildcard expansions, and not
the command interpreter. Which is why commands like the ones above
worked. This is one of those classical examples you get to when
comparing Unix with DEC OSes about wildcarding, and the effects the
different ways they are done have on the result.
(In Unix, you can't do such a mass copy and rename in the same way.)
> All the DEC-10 and 11 operating systems I used had that wildcard, as well
> as IIRC even the PDP-8, maybe someone can confirm the -8.
Yes. It's the same on the OSes I've used on PDP-8s as well.
I would say that the globbing in Unix have much less to do with regular
expressions and much more to do with trying to mimic what DEC was doing
in their OSes.
> It would have been nice had RE's been the standard way to glob files, but,
> that said, when I mention .*\.c to people instead of *.c they don't much
> like it.
In a way, it would have made more sense to just use standard RE's for
globbing, but that didn't happen. And like I said, I suspect it was
because DEC OSes did it this way, and Unix just mimicked it. Same I
guess with the convention of '.' to separate filename from type. Even
though it's less pervasive in Unix than in DEC systems.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt(a)softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
Glob was an an accident. When Ken and Dennis wanted to put wildcards
(an anachronistic word--it wasn't used in the Unix lab at the time)
into the shell, there wasn't room, so they came up with the clever hack
of calling another process to do the work.
I have always understood that glob meant global because commands like
rm *
would be applied to every file in a directory. A relationship to ed's
g command was clear, but not primary in my mind.
One curious fact is that from day one the word hase been pronounced glob,
not globe. (By contrast, creat has been variously pronounced cree-at
and create.) It is also interesting to speculate on whether there would
be a glob library routine in Linux had glob only been an identifier in
sh.c rather than an entry in /bin.
I believe the simple * was borrowed from somewhere else. If the g command
had been the driving model, glob would probably have had ? and ?*, not
? and *. (It couldn't use ed's . because . was ubiquitous in file names.)
My etymology is somewhat different from Steve's. But I never asked the
originator(s). Steve, did you?
Doug
On 7/9/17, ron minnich <rminnich(a)gmail.com> wrote:
>>
> All the DEC-10 and 11 operating systems I used had that wildcard, as well
> as IIRC even the PDP-8, maybe someone can confirm the -8.
>
> It would have been nice had RE's been the standard way to glob files, but,
> that said, when I mention .*\.c to people instead of *.c they don't much
> like it.
So when were REs first designed and implemented? I would imagine that
they came about as a way to extend the old '*' and '?' wildcard
syntax, but that is only a guess.
-Paul W.
> From: Paul Winalski
> So when were REs first designed and implemented? I would imagine that
> they came about as a way to extend the old '*' and '?' wildcard syntax,
> but that is only a guess.
I would suspect in the context of editors, not command file-naming. Don't
have time to research it, though. Try checking CTSS, early Multics, etc.
Noel