From: Neville Dempsey on
On Apr 9, 11:45 am, Richard <rip...(a)Azonic.co.nz> wrote:
> One of the major difference between Algol and Pascal like
> languages and C and BPCL like languages is that in the
> former the assignment (:=) is a statement while in the latter
> assignment (=) is an operator. While C and Algol have a vague
> similarity C is not derived from Algol at all.

¢ IMHO there is a big gap between Algol60 and Algol68, so much so
that in many ways Algol68 is much closer to C99 then to Algol60. ¢

But here are a few Algol60 and Algol68 quotes for context:

To quote dmr from usenet:comp.lang.misc ...
c.f. http://groups.google.co.uk/group/comp.lang.misc/browse_thread/thread/1e6d4bb30659b78d/f57b6f5c81502cf5

BEGIN QUOTE
> Newsgroups: comp.lang.misc
> From: dmr(a)alice.UUCP
> Date: 18 Jun 88 09:23:34 GMT
> Local: Sat 18 June 1988 10:23
> Subject: C and Algol 68
>
> Practically everything ok(a)quintus cites as proving that C does
> not descend from Algol 68 is true, yet there was influence, much
> of it so subtle that it is hard to recover even when I think
> hard. In particular, the union type (a late addition to C) does
> owe to A68, not in any details, but in the idea of having such a
> type at all. More deeply, the type structure in general and even,
> in some strange way, the declaration syntax (the type-constructor
> part) was inspired by A68. And yes, of course, "long".
>
> Mostly, of course, C is Thompsonized BCPL (that is, B) with
> types. You don't have to look too hard to find PL/1 and Fortran,
> either.
>
> Dennis Ritchie
END QUOTE

dmr went on to write the paper: "The Development of the C Language"
http://cm.bell-labs.com/cm/cs/who/dmr/chist.pdf

Page 2: Origins: the languages
> BCPL, B, and C all fit firmly in the traditional procedural family
> typified by Fortran and Algol 60.

Page: 5 More History
> For example, B introduced generalized assignment operators, using
> x=+y to add y to x. The notation came from Algol 68 [Wijngaarden
> 75] via McIlroy, who had incorporated it into his version of
> TMG. (In B and early C, the operator was spelled =+ instead of +=;
> this mistake, repaired in 1976, was induced by a seductively easy
> way of handling the first form in B’s lexical analyzer.)
....
> Although we entertained occasional thoughts about implementing
> one of the major lan- guages of the time like Fortran, PL/I, or
> Algol 68, such a project seemed hopelessly large for our resources:
> much simpler and smaller tools were called for. All these languages
> influenced our work, but it was more fun to do things on our own.

Page 8: Embryonic C
> The scheme of type composition adopted by C owes considerable
> debt to Algol 68, although it did not, perhaps, emerge in a form
> that Algol’s adherents would approve of. The central notion
> I captured from Algol was a type structure based on atomic
> types (including structures), composed into arrays, pointers
> (references), and functions (procedures). Algol 68’s concept
> of unions and casts also had an influence that appeared later.

Page 9: Portability
> Similarly, the early language condoned assignments between integers
> and pointers, but this practice began to be discouraged; a notation
> for type conversions (called ‘casts’ from the example of
> Algol 68) was invented to specify type conversions more explicitly.

Page 12: Successors
> Most important, C has a relatively rich set of ways of describing
> types (compared, say, with Pascal). Declarations in languages
> as expressive as C - Algol 68, for example - describe objects
> equally hard to understand, simply because the objects themselves
> are complex.

On Fri, 2006-09-08 at 23:09 -0700, Steve Bourne wrote:
> Well at least i Talked Dennis into adding void as a type in C.
> It saved the instruction loading register for return value :-)
> Plus when I got to the lab C types were like PL/1 namely offsets
> from any base you liked. They changed to A68 types but I cant
> recall the reason.

To quote dmr bell-labs 1993 paper:
Five Little Languages and How They Grew: Talk at HOPL*
http://cm.bell-labs.com/cm/cs/who/dmr/hopl.html

[Slide 3] Similarities
> Mostly they were designed (speaking broadly) for `systems
> programming.' Certainly some of them, like BCPL and C and Bliss,
> are explicitly system programming languages, and Pascal has been
> used for that. Algol 68 didn't really have that in mind, but it
> really can be used for the purpose; when Steve Bourne came to
> Bell Labs with the Algol 68C compiler, he made it do the same
> things that C could do; it had Unix system call interfaces and
> so forth. ...

[Slide 10] Algol 68
> As the accompanying paper points out, C was influenced by it in
> important ways. The reference on the slide to Algol 68C is to
> indicate that we had an A68C compiler on the early Unix system
> in the '70s, when Steve Bourne came from Cambridge and brought
> it with him. ...

[Slide 12] A Comparison: meaning of names.
> That means that `dereferencing' (a word that came from Algol 68)
> is always explicit in Bliss, and it's necessary because in Bliss
> a simple name is a reference, not a value.

[Slide 14] A Comparison: meaning of names.
> Naturally I prefer the approach that C has taken, but I appreciate
> how Algol 68 has clarified thinking about these issues of naming
> and reference.

[Slide 15]: The Effects on the World
> C is similar to Algol 68, in the sense that it has type modifiers
> like `long'.
....
> Algol 68 and BCPL as languages are moribund, but their influence
> continues: Algol 68 influences in a broad way, and BCPL rather
> directly through through its influence on C. C remains lively,
> obviously. ...

A some "sample programs" of Algol 68C can be found in: "The
Cambridge CAP Computer and Its Operating System" by M.V Wilkes &
R. M. Needham. The "Samples" start on Page 98 in:
* http://research.microsoft.com/pubs/72418/cap.pdf

BEGIN [OT]
Steven Bourne worked on Cambridge CAP prior to Unix:
* http://en.wikipedia.org/wiki/Cambridge_CAP_computer
* http://en.wikipedia.org/wiki/Capability-based_security

CAP based machine seems to have been a bit of a fad in the
1970s, especially in the military. It would be interesting
to get a CAP "Capability-based_security" expert online to do
the technology mining of CAP for the benefit of new OSes:
* http://en.wikipedia.org/wiki/Google_Chrome_OS
END [OT]

¢ Algol68's influence continues:
In some ways Algol68 is much closer to gcc and C99 then to C72! ¢

enjoy
NevilleDNZ
--
To download Linux's Algol68 Compiler, Interpreter & Runtime:
* http://sourceforge.net/projects/algol68
Join the linkedin.com's Algol68 group, follow:
* http://www.linkedin.com/groups?gid=2333923
From: Richard on
On Apr 10, 4:20 pm, Neville Dempsey <neville...(a)gmail.com> wrote:
> On Apr 9, 11:45 am, Richard <rip...(a)Azonic.co.nz> wrote:
>
> > One of the major difference between Algol and Pascal like
> > languages and C and BPCL like languages is that in the
> > former the assignment (:=) is a statement while in the latter
> > assignment (=) is an operator.  While C and Algol have a vague
> > similarity C is not derived from Algol at all.
>
> ¢ IMHO there is a big gap between Algol60 and Algol68, so much so
> that in many ways Algol68 is much closer to C99 then to Algol60. ¢
>
> But here are a few Algol60 and Algol68 quotes for context:
>
> To quote dmr from usenet:comp.lang.misc ...
> c.f.http://groups.google.co.uk/group/comp.lang.misc/browse_thread/thread/....
>
> BEGIN QUOTE
>
> > Newsgroups: comp.lang.misc
> > From: d...(a)alice.UUCP
> > Date: 18 Jun 88 09:23:34 GMT
> > Local: Sat 18 June 1988 10:23
> > Subject: C and Algol 68
>
> > Practically everything ok(a)quintus cites as proving that C does
> > not descend from Algol 68 is true, yet there was influence, much
> > of it so subtle that it is hard to recover even when I think
> > hard. In particular, the union type (a late addition to C) does
> > owe to A68, not in any details, but in the idea of having such a
> > type at all. More deeply, the type structure in general and even,
> > in some strange way, the declaration syntax (the type-constructor
> > part) was inspired by A68. And yes, of course, "long".
>
> > Mostly, of course, C is Thompsonized BCPL (that is, B) with
> > types. You don't have to look too hard to find PL/1 and Fortran,
> > either.
>
> >         Dennis Ritchie
>
> END QUOTE

As he says "not in any detail". Algol 68R has unions:

UNION(INT, CHAR) x;

where x may be freely assigned to as by an INT or a CHAR and coercion
will set the type as appropriate, but there is no de-uniting coercion.

In C this would be specified as:

union x_tag { int xint ; char xchar; } x;

and it is necessary to refer to x.xint or x.xchar specifically.

The only real similarity is the word 'union' because the syntax is
quite different as well as the semantics. The actual context of
declaring one area of memory as different types comes from assembler.

> dmr went on to write the paper: "The Development of the C Language"http://cm.bell-labs.com/cm/cs/who/dmr/chist.pdf
>
> Page 2: Origins: the languages
>
> > BCPL, B, and C all fit firmly in the traditional procedural family
> > typified by Fortran and Algol 60.

Which says nothing of derivation. The 'procedural family' includes
most languages of that time.

> Page: 5 More History
>
> > For example, B introduced generalized assignment operators, using
> > x=+y to add y to x. The notation came from Algol 68 [Wijngaarden
> > 75] via McIlroy, who had incorporated it into his version of
> > TMG. (In B and early C, the operator was spelled =+ instead of +=;
> > this mistake, repaired in 1976, was induced by a seductively easy
> > way of handling the first form in B’s lexical analyzer.)

Algol-68R has assignments:

x PLUS y x MINUS y x TIMES y x DIV y

Certainly features may be copied from many different languages.

> ...
> > Although we entertained occasional thoughts about implementing
> > one of the major lan- guages of the time like Fortran, PL/I, or
> > Algol 68, such a project seemed hopelessly large for our resources:
> > much simpler and smaller tools were called for. All these languages
> > influenced our work, but it was more fun to do things on our own.
>

I think that clearly says that C is not a derivative of Fortran, PL/I
or Algol-68.



From: Neville Dempsey on
On Apr 12, 9:47 am, Richard <rip...(a)Azonic.co.nz> wrote:
> On Apr 10, 4:20 pm, Neville Dempsey <neville...(a)gmail.com> wrote:
> > On Apr 9, 11:45 am, Richard <rip...(a)Azonic.co.nz> wrote:
> As he says "not in any detail".Algol 68Rhas unions:
>
> UNION(INT, CHAR) x;
>
> where x may be freely assigned to as by an INT or a CHAR and coercion
> will set the type as appropriate, but there is no de-uniting coercion.
>
> In C this would be specified as:
>
> union x_tag { int xint ; char xchar; } x;
>
> and it is necessary to refer to x.xint or x.xchar specifically.

Indeed: putting values into an A68 union is automatic, but pulling
it out is awkward, eg:

C union example:
union{int i; char c;} x; x.i=666;
printf("%3d\n",x.i);

A68 union example:
UNION(INT, CHAR) x:=666;
printf(($3dl$, (x|(INT i):i) ))

The net effect of "type-tagging" is that Algol68's strong typing
"half" encrouches into the union.

> The only real similarity is the word 'union' because the syntax is
> quite different as well as the semantics. The actual context of
> declaring one area of memory as different types comes from assembler.

Assembler? thats cool! In 1960s Fortran used EQUIVALENCE or
COMMON for memory sharing, I forget how PL/I & COBOL did this.
I'm not an assembler guy, does the UNION keyword appear in 1960's
assemblers? (ThanX)

> > Page: 5 More History
>
> > > For example, B introduced generalized assignment operators, using
> > > x=+y to add y to x. The notation came fromAlgol 68[Wijngaarden
> > > 75] via McIlroy, who had incorporated it into his version of
> > > TMG. (In B and early C, the operator was spelled =+ instead of +=;
> > > this mistake, repaired in 1976, was induced by a seductively easy
> > > way of handling the first form in B’s lexical analyzer.)
>
> Algol-68R has assignments:
>
> x PLUS y x MINUS y x TIMES y x DIV y

PLUS, MINUS, TIMES and DIV.... Almost looks like COBOL :-)
c.f. http://www.fh-jena.de/~kleine/history/languages/Algol68R-UserGuide.pdf

¢ I'm impressed... did you have a real copy on hand? :-) ¢

These assignments were refered to as BOLD and can be found in
the "Unrevised Report" (Rev0) of ALGOL 68, and were equivalent
to A68's BRIEF/ASCII forms x:+=y, x-:=y, x*:=y and x/:=y;

Further they are equivalent to modern C's x+=y, x-=y, x*=y and x/=

BOLD versions are used on platforms with limited (6 bit) character
sets (and that might not have +,-,* or /) hence the expression
"REAL PROGRAMMERS THINK IN UPPER CASE".

In Rev0 has the bonus PRUS assignment, equivalent to y +=: x

(PLUS is for (L)eft assignment, PRUS is for (R)ight assignment,
eg: PRUS for prefixing to an existing string variable; and other
non commutative adds - A68 has user definable operators)

Subsequently in the "Revised Report" (Rev1) of Algol 68 these
ASSIGNMENTS where renamed: PLUSAB, MINUSAB, TIMESAB and DIVAB
for +:=, -:=, *:= and %:= there PLUS, MINUS, TIMES became
DIADIC operators.

In Rev1 PRUS becomes PLUSTO which has the "BRIEF" form y+=:x
eg, to suffix "substring" to the beginning of a variable try:
"substring" +=: str

These "right" operators also are native to python, eg: __radd__,
__rsub__, __rmul__ and __rdiv__; Also __rdivmod__, __rfloordiv__

> Certainly features may be copied from many different languages.
> > ...
> > > Although we entertained occasional thoughts about implementing
> > > one of the major lan- guages of the time like Fortran, PL/I, or
> > >Algol 68, such a project seemed hopelessly large for our resources:
> > > much simpler and smaller tools were called for. All these languages
> > > influenced our work, but it was more fun to do things on our own.
>
> I think that clearly says that C is not a derivative of Fortran, PL/I
> orAlgol-68.

I think that clearly says that C is not an _implementation_
of Fortran, PL/I or Algol-68.

regs
NevilleD
--
Linux's Algol68 Compiler, Interpreter & Runtime:
* http://sourceforge.net/projects/algol68
From: Michael Wojcik on
Richard wrote:
> On Apr 9, 6:04 am, Michael Wojcik <mwoj...(a)newsguy.com> wrote:
>>
>> Microsoft had a multitasking, multiuser OS long before Windows NT -
>> Xenix.
>
> Xenix was a licenced Unix edition 6 or 7.

It was indeed a licensed Unix Version 7, but it was not simply a
Microsoft rebadge. They did extensive implementation and porting work,
and incorporated some BSD features.

> Most of the development work
> was done under contract by Doug and Larry Michels who were 'Santa Cruz
> Operation'.

SCO didn't get involved until the 8086 port. By that time Microsoft
was already distributing Xenix on a number of other platforms.

>> Eventually it was joined by BSD386 and
>> Linux, specialty OSes like Citrix's multiuser OS/2, experimental or
>> educational OSes like Minix, etc. But most PC owners ran MS-DOS,
>> Windows, or OS/2, because they neither needed nor wanted a multiuser
>> OS. It's not because Microsoft didn't know how to create one.
>
> Microsoft did not create Xenix.

Yes they did. Certainly they started with Unix System 7 and BSD
sources, but they integrated and ported them. Some parts of the kernel
were rewritten in assembly on some platforms.

> OS/2 was
> written to IBM's specification and used IBM's technology

Much of OS/2 was Microsoft code. I was working at IBM during the
period when the agreement with Microsoft was in effect, and part of
that time I was working on PC software. I saw a lot of DOS and Windows
source, and some OS/2 source. Later, I worked for a company that had
special support contracts with IBM, and I saw more OS/2 source. There
were plenty of Microsoft fingerprints.

> which was
> taken by MS to make Windows 286 and 386 modes useful.

Evidence, please.

> It was Citrix
> that made OS/2 multi-user and later made NT 3.x multi-user as well.

True for OS/2, but not for NT 3.x. NT 3 lacked a usable remote console
mechanism (though IIRC it did have WinStations and Desktops, so the
necessary core technology was in place), but it was a multiuser OS.
The console user had to log in, there were user-based DACs, processes
ran with user tokens, etc.

> NT's later Terminal Server was built using Citrix's technology

Terminal Server wasn't what made NT multiuser; it just made it
possible for multiple users to use a single NT system in GUI mode
simultaneously. While that's certainly important (and yes, Microsoft
did it with Citrix technology, though that was in turn built on
mechanisms already in the NT kernel, executive, and support modules;
and yes, other systems, notably Unix machines with X11, were doing it
better years before), it's not the defining characteristic of a
multiuser OS.

NT 3.5 even had an optional Telnet server, so you *could* use it
remotely, for programs that only wanted to talk to console stdio, out
of the box.


I developed commercial software on Windows 2.x and its successors,
Windows NT from 3.1 on, OS/2 from 1.1 on, and many Unix flavors (among
others). There were many things wrong with NT 3, just as there are
many things I'd like to have different in Windows today. OS/2 2.x was
preferable to NT 3.x for most purposes, and OS/2 Warp was better than
NT 4.x for most. But it's simply not true that NT was Microsoft's
first time working on a multiuser OS, nor that NT was not multiuser
from the beginning.

--
Michael Wojcik
Micro Focus
Rhetoric & Writing, Michigan State University
From: Richard on
On Apr 13, 7:21 am, Michael Wojcik <mwoj...(a)newsguy.com> wrote:
> Richard wrote:
> > On Apr 9, 6:04 am, Michael Wojcik <mwoj...(a)newsguy.com> wrote:
>
> >> Microsoft had a multitasking, multiuser OS long before Windows NT -
> >> Xenix.
>
> > Xenix was a licenced Unix edition 6 or 7.
>
> It was indeed a licensed Unix Version 7, but it was not simply a
> Microsoft rebadge. They did extensive implementation and porting work,
> and incorporated some BSD features.
>
> > Most of the development work
> > was done under contract by Doug and Larry Michels who were 'Santa Cruz
> > Operation'.
>
> SCO didn't get involved until the 8086 port. By that time Microsoft
> was already distributing Xenix on a number of other platforms.
>
> >> Eventually it was joined by BSD386 and
> >> Linux, specialty OSes like Citrix's multiuser OS/2, experimental or
> >> educational OSes like Minix, etc. But most PC owners ran MS-DOS,
> >> Windows, or OS/2, because they neither needed nor wanted a multiuser
> >> OS. It's not because Microsoft didn't know how to create one.
>
> > Microsoft did not create Xenix.
>
> Yes they did. Certainly they started with Unix System 7

It was 'Edition 7', before System III.

> and BSD
> sources, but they integrated and ported them. Some parts of the kernel
> were rewritten in assembly on some platforms.

"""Microsoft licensed UNIX from AT&T in 1979. That was an interesting
year. At the June 1979 USENIX meeting in Toronto, AT&T announced an
big price hike: from $1000 to $7500 for educational institutions; from
$5000 to $40,000 for full commercial open source (per CPU).
Essentially AT&T decided to commercialize Unix. That created an
opening for third party distributors and Bill Gates instantly jumped
on this opportunity. The same year SCO was founded and Microsoft
XENIX development was outsourced to SCO (which at a time was a two man
operation)"""

So Bill Gates took a licence in June 1979 and later _that_ year all
development was outsourced to SCO.

Certainly MS continued developing for Xenix, for example Multiplan.

> > OS/2 was
> > written to IBM's specification and used IBM's technology
>
> Much of OS/2 was Microsoft code. I was working at IBM during the
> period when the agreement with Microsoft was in effect, and part of
> that time I was working on PC software. I saw a lot of DOS and Windows
> source, and some OS/2 source. Later, I worked for a company that had
> special support contracts with IBM, and I saw more OS/2 source. There
> were plenty of Microsoft fingerprints.
>
> > which was
> > taken by MS to make Windows 286 and 386 modes useful.
>
> Evidence, please.

"""A significant failing of the 286 chip is that it cannot switch from
protected mode to real mode without a hardware reset (a warm reboot)
of the system."""

It was IBM that developed the method of doing that switch back to real
mode without losing everything. This was implemented in OS/2 in 1987
to give the DOS Box. Microsoft used this code to make Windows/286 in
1988.

> > It was Citrix
> > that made OS/2 multi-user and later made NT 3.x multi-user as well.
>
> True for OS/2, but not for NT 3.x. NT 3 lacked a usable remote console
> mechanism (though IIRC it did have WinStations and Desktops, so the
> necessary core technology was in place), but it was a multiuser OS.
> The console user had to log in, there were user-based DACs, processes
> ran with user tokens, etc.

Windows NT certainly was multi-user in the sense that different users
could log in (one at a time), but Citrix made it so that multiple
simultaneous users could log in and access from their terminals, which
is what multi-user usually means.

One major issue that had to be overcome was that Windows held the
current user's configuration so each login would set some config items
globally with the latest user's settings.

> > NT's later Terminal Server was built using Citrix's technology
>
> Terminal Server wasn't what made NT multiuser; it just made it
> possible for multiple users to use a single NT system in GUI mode
> simultaneously. While that's certainly important (and yes, Microsoft
> did it with Citrix technology, though that was in turn built on
> mechanisms already in the NT kernel, executive, and support modules;
> and yes, other systems, notably Unix machines with X11, were doing it
> better years before), it's not the defining characteristic of a
> multiuser OS.

The defining characteristic of what is usually meant by multi-user is
that multiple users can be accessing the machine at the same time.


> NT 3.5 even had an optional Telnet server, so you *could* use it
> remotely, for programs that only wanted to talk to console stdio, out
> of the box.

For some inconsequential meanings of "use".


> I developed commercial software on Windows 2.x and its successors,
> Windows NT from 3.1 on, OS/2 from 1.1 on, and many Unix flavors (among
> others). There were many things wrong with NT 3, just as there are
> many things I'd like to have different in Windows today. OS/2 2.x was
> preferable to NT 3.x for most purposes, and OS/2 Warp was better than
> NT 4.x for most. But it's simply not true that NT was Microsoft's
> first time working on a multiuser OS, nor that NT was not multiuser
> from the beginning.

One of Cutler's complaints was that MicroSoft made him rip out the
multiuser access that he had built into his system.

First  |  Prev  |  Next  |  Last
Pages: 5 6 7 8 9 10 11 12 13 14 15 16
Prev: Oracle free to use release question
Next: Function Reverse