[comp.software-eng] What's a PC?

john13@garfield.MUN.EDU (John Russell) (10/16/88)

In article <39400002@m.cs.uiuc.edu> wsmith@m.cs.uiuc.edu writes:
]
]>A good rule of thumb I've observed is that anytime a project can
]>be done by one or (maybe) two people, a PC is probably your best choice.

]I don't
]have much respect for PC make facilities especially since a PC has limited
]concurrent execution powers to allow for the nested makes needed for the nested
]directory structure.

That isn't necessarily true of all PC's (personal computers, as opposed to
"IBM PC" which is what most people consider PC to mean).

An Amiga has concurrent execution powers limited only by available memory. You
might be able to fill up available memory, although it's no problem to make
heavily used executables resident (ie only one copy of executable code for
multiple invocations).

I've been disappointed with mainframe performance ever since the end of the
summer, when the load average went back to real-world levels and my compiles
started turning into meal-breaks :-(.

John
-- 
"The 68000 processor can't possibly handle a colour display. You must have a
 68020 system and not know it."
		-- Amiga and Atari ST owners shared a chuckle over this view
		   from sales *and* technical people at the local Apple dealer

mike@ai.etl.army.mil (Mike McDonnell) (10/24/88)

In article <4935@garfield.MUN.EDU> john13@garfield.UUCP (John Russell) writes:
>In article <39400002@m.cs.uiuc.edu> wsmith@m.cs.uiuc.edu writes:
>]
>]>A good rule of thumb I've observed is that anytime a project can
>]>be done by one or (maybe) two people, a PC is probably your best choice.
>
>"IBM PC" which is what most people consider PC to mean).

The best software development environment on the planet earth is a lisp
machine.  This is a "PC" in the generic sense.  It is the quality of the
supporting environment that makes this so.  Those of us who know and
love these beasts are saddened by the manufacturing and marketing
ineptitude of the selling companies who have more-or-less insured that
"lispms" will never be much more than a curiosity.  Sigh.
-- 
Mike McDonnell at the U.S. Army Engineer Topographic Laboratories, Bldg. 2592
Fort Belvoir, VA 22060-5546   TEL:(202)355-2724   ARPA: mike@ai.etl.army.mil

lishka@uwslh.UUCP (Fish-Guts) (10/25/88)

In article <197@ai.etl.army.mil> mike@ai.etl.army.mil (Mike McDonnell) writes:
>
>The best software development environment on the planet earth is a lisp
>machine.  This is a "PC" in the generic sense.  It is the quality of the
>supporting environment that makes this so.  Those of us who know and
>love these beasts are saddened by the manufacturing and marketing
>ineptitude of the selling companies who have more-or-less insured that
>"lispms" will never be much more than a curiosity.  Sigh.

     Do other people in this group feel this way as well?  I agree
that Lisp environments typically have some nice features and tools,
but trying to read Lisp for too long makes me see non-existant
parentheses.  That and the dynamic scoping make it harder to read than
many other languages, IMHO.  Don't get me wrong: I think Lisp is one
of the all-time GREAT languages (although I prefer the Scheme
dialect), but I do not think it is one of the best to have to
write/read/revise/debug/maintain code in.  There just isn't enough
structure to the actual language.  BTW, I've used some Franz Lisp,
Emacs Lisp, XLisp, C-Scheme, and did several semester projects on
Xerox Lisp Workstations ("1108's") in InterLisp, LOOPS, and OPS5 (a
Lisp-derived language).

     Aside from the language, the Xerox 1108 workstations do not seem
to offer that much more than modern environments for other languages.
Windowing is now common.  Browsers are becoming common.
Language-oriented editors are becoming common.  Symbolic debuggers are
becoming common.  Interpretters for compiled languages (such as C) are
becoming common.  Although most language environments do not offer all
of the above features, most of them are present.  On my Amiga, I have
everything listed above except the interpreter (although not as well
integrated; what do you expect for mostly PD software? ;-).  Are Lisp
environments still *that* much better for development.?

     One thing I have considered doing is adding an extensive
preprocessor to Lisp, to make it look more "structured" (like C or
Pascal).  Essentially, one would write in my structured language (call
it CL), and the CL-parser would spit out Lisp code as an intermediate
language, to be interpretted or compiled or whatever.  I'm sure
*someone* has thought of this before.  Any comments?

>Mike McDonnell at the U.S. Army Engineer Topographic Laboratories, Bldg. 2592

					.oO Chris Oo.
-- 
Christopher Lishka                 ...!{rutgers|ucbvax|...}!uwvax!uwslh!lishka
Wisconsin State Lab of Hygiene                   lishka%uwslh.uucp@cs.wisc.edu
Immunology Section  (608)262-1617                            lishka@uwslh.uucp
				     ----
"...Just because someone is shy and gets straight A's does not mean they won't
put wads of gum in your arm pits."
                         - Lynda Barry, "Ernie Pook's Commeek: Gum of Mystery"

shebs@Apple.COM (Stanley Todd Shebs) (10/26/88)

In article <396@uwslh.UUCP> lishka@uwslh.UUCP (Fish-Guts) writes:
>In article <197@ai.etl.army.mil> mike@ai.etl.army.mil (Mike McDonnell) writes:
>>[...] manufacturing and marketing
>>ineptitude of the selling companies who have more-or-less insured that
>>"lispms" will never be much more than a curiosity.  Sigh.

Amen to that.  There are also technical reasons that have been argued over
endlessly.  My view is that specialized Lisp processors have never been
able to stay ahead of stock hardware and "normal" programming environments
for more than a year or two - if for no other reason than that the good
ideas in the Lisp environment get imitated/improved on elsewhere.  For
instance, Lispms have complicated and slow window systems, while the rest
of the world ends up using X.  Lispms have hardware for tags, now SPARC
has it too, but simpler and less obtrusive.  Nowadays the big push is to
have GC for every language, down to and including C.  Lisp isn't some sort
of magic that renders systems uncopyable; instead the Lisp marketeers are
in the unenviable position of pioneering, then being trampled by the hordes
following along and re-engineering!

>[...] trying to read Lisp for too long makes me see non-existant
>parentheses.

You have clearly failed to reach the level of true Lisp wizardry :-).
Parentheses are unimportant to reading, about as significant as commas
in most languages.  Indentation and special forms, that's all that counts.

>     One thing I have considered doing is adding an extensive
>preprocessor to Lisp, to make it look more "structured" (like C or
>Pascal).  Essentially, one would write in my structured language (call
>it CL), and the CL-parser would spit out Lisp code as an intermediate
>language, to be interpretted or compiled or whatever.

This has been done several times since the 60s.  LISP2, CLISP for Interlisp,
and RLISP for Portable Standard Lisp spring to mind immediately; there are
probably others.

							stan shebs
							shebs@apple.com

tom@chionia.amara.uucp (Tom Doehne) (10/26/88)

In article <396@uwslh.UUCP> lishka@uwslh.UUCP (Fish-Guts) writes:
>In article <197@ai.etl.army.mil> mike@ai.etl.army.mil (Mike McDonnell) writes:
>
>>The best software development environment on the planet earth is a lisp
>>machine.  This is a "PC" in the generic sense.  It is the quality of the
>>supporting environment that makes this so.  Those of us who know and
...regrets deleted...

>     Do other people in this group feel this way as well? 
Yes, I feel this way.  My reasons are below.

> I agree
>that Lisp environments typically have some nice features and tools,
>but...
opinion of Lisp as a difficult unstructured language omitted...

>     Aside from the language, the Xerox 1108 workstations do not seem
>to offer that much more than modern environments for other languages.
>Windowing is now common.  Browsers are becoming common.
>Language-oriented editors are becoming common.  Symbolic debuggers are
>becoming common.  Interpretters for compiled languages (such as C) are
>becoming common.  Although most language environments do not offer all
>of the above features, most of them are present.  On my Amiga, I have
>everything listed above except the interpreter (although not as well
>integrated; what do you expect for mostly PD software? ;-).  Are Lisp
>environments still *that* much better for development.?

The greatest shortcoming is that all those things are not integrated in 
non Lisp-machine environments, lacking the tremendous advantages integration
gives.

I worked on a Symbolics 3670 for the last two years, and feel that it is
one of the finest development environments available for rapid prototyping.
The integration of the parts of the environment give the following benefits:

The editor not only `knows' about the language, but about the program
you are writing.  With a keystroke or two, it will load the definition
of the function your cursor is on, so it can be edited.  Or it will
let you cycle through all calls to a function.  Incremental
compilation of a selected part of the edit buffer is useful, as are
things like setting trace and breakpoints.  Cutting from the editor to
an interpreter or vice versa is helpful, especially if you want some
idea of what an expression will do in the program and don't want to
type it twice.  I also liked being able to call up documentation by
positioning the cursor on the function name and hitting
<cntl>-<sh>-d.

In the debugger, it is nice to be able to invoke the editor on an
offending function definition, change and recompile it, then return to
the debugger window and reinvoke the call from a point just before the
problem occurred. (An advantage of an interpretive language.) It is
also possible to grab the values of variables in the debugger, operate
on them, return the resulting value(s) as the function's result(s),
and continue with execution.  This is especially nice for ignoring a
bug that is fairly unimportant so that you can test what you are
working on at the moment.  Finally, the Symbolics debugger gives you
numerous options for continuing execution when you enter it (if it
can).  Finally, you can `inspect' any data object on the stack, and
follow all the pointers easily, by invoking the Inspector.

The inspector (a data browser) made it easy to follow pointers,
examine nested data structures, and edit them.  Since you can call it
from your code, you can easily stub a function by calling the
inspector with a list of parameters. When it is called play with the
parameters in the inspector to get the value the function should
return, and exit the inspector giving it that value to return (a
matter of a few mouse clicks).  Helps a lot with testing, especially
if someone else doesn't have the function written, but you have a good
idea of what it should return.

It's also possible to simply try things out on a command line
interpreter, then cut the sequence from the interpreter and paste it
into the editor to turn it into part of your program.

The latest Symbolics online documentation is quite impressive. Not
only can you go through list of sections that contain a certain
string, but the sections are hypertext, so you can go from one topic
to a related one mentioned there.  It supports diagrams not just text.
It has a tree structured summary for browsing.  And the ability to
shove topics to one side (literally) and take them up later.  Even
days later (you can permanently store the list of topics you have).

I won't mention the support for OOPS, except to say it's fairly nice.

Disclaimer: These opinions are mine, and don't reflect those of my
current employer or my former one.

--
-------------------------------------------------------------------
Tom Doehne                           Applied Dynamics International
tom%amara.UUCP@umix.cc.umich.edu     3800 Stone School Rd.
...(uunet|umix)!amara!tom            Ann Arbor, Mi 48108
-------------------------------------(313)973-1300-----------------

new@udel.EDU (Darren New) (11/04/88)

In article <TOM.88Oct25170554@chionia.amara.uucp> tom@chionia.amara.uucp (Tom Doehne) writes:
>
>In article <396@uwslh.UUCP> lishka@uwslh.UUCP (Fish-Guts) writes:
>>In article <197@ai.etl.army.mil> mike@ai.etl.army.mil (Mike McDonnell) writes:
>>
>>>The best software development environment on the planet earth is a lisp
>>>machine.  This is a "PC" in the generic sense.  It is the quality of the
>>>supporting environment that makes this so.  Those of us who know and
>...regrets deleted...
>
>>     Do other people in this group feel this way as well? 

N.B., most if not all of the advantages of an integrated LISP 
environment cited in the above articles are also present in
Smalltalk. Not only that, but Smalltalk runs on many different
and standard machines (Suns, Macs, ...) without change to ANY
conde (object compatible). It also supplies real structure
for your data, instead of forcing everything to look like a list.
Since everything is accessable to your code, even things like the
debugger (allowing everything cited above, including evaluation
of subexpressions, code correction and restart, ...) are all written
in Smalltalk without needing anything special in the interpreter.
Check this out before claiming LISP as the "best". I would say
"one of the best" myself.
                      - Darren New

pf@csc.ti.com (Paul Fuqua) (11/08/88)

    Date: Thursday, November 3, 1988  2:57pm (CST)
    From: new at udel.EDU (Darren New)
    Subject: Re: What's a PC? (What's the best environment)
    Newsgroups: comp.software-eng
    
    In article <TOM.88Oct25170554@chionia.amara.uucp> tom@chionia.amara.uucp (Tom Doehne) writes:
    >
    >In article <396@uwslh.UUCP> lishka@uwslh.UUCP (Fish-Guts) writes:
    >>In article <197@ai.etl.army.mil> mike@ai.etl.army.mil (Mike McDonnell) writes:
    >>
    >>>The best software development environment on the planet earth is a lisp
    >>>machine.  This is a "PC" in the generic sense.  It is the quality of the
    >>>supporting environment that makes this so.  Those of us who know and
    >...regrets deleted...
    >
    >>     Do other people in this group feel this way as well? 
    
    N.B., most if not all of the advantages of an integrated LISP 
    environment cited in the above articles are also present in
    Smalltalk.

That's the point:  it's not the language, per se, it's the integrated
environment.  Lispms just seem to be better-known.  And, gradually,
environments for lesser languages are catching up to those that already
exist for Lisp and Smalltalk (check out Saber-C).

So what got Lisp and Smalltalk there first?  My vote goes to the
object-oriented aspect of both languages, which is also filtering out to
lesser languages (I see C++ as a broader dialect of C).

			       It also supplies real structure
    for your data, instead of forcing everything to look like a list.

Most modern Lisps provide lists, arrays, structures, and "objects" (as
in Flavors or CLOS).

                              pf

Paul Fuqua
Texas Instruments Computer Science Center, Dallas, Texas
CSNet:  pf@csc.ti.com (ARPA too, sometimes)
UUCP:   {smu, texsun, cs.utexas.edu, im4u, rice}!ti-csl!pf

new@udel.EDU (Darren New) (11/11/88)

In article <62959@ti-csl.CSNET> pf@csc.ti.com (Paul Fuqua) writes:
>
>That's the point:  it's not the language, per se, it's the integrated
>environment.  Lispms just seem to be better-known.  And, gradually,
>environments for lesser languages are catching up to those that already
>exist for Lisp and Smalltalk (check out Saber-C).
>
>So what got Lisp and Smalltalk there first?  My vote goes to the
>object-oriented aspect of both languages, which is also filtering out to
>lesser languages (I see C++ as a broader dialect of C).
>
Funny... I feel that the object-oriented aspect is much less important.
After all, I can imagine a non-object-oriented environment (lisp) in which
I am just as productive as in Smalltalk. Personally, I think the browsers
(system browser, debugger, inspector, ...) and the predefined classes
(views, collections, ...) are the main contributors to productivity.
Also, the almost instant turn-around fromchange to test is vital.
Of course, the o-o aspect is important in supplying such abilities.
Languages like (say) Pascal or Ada will not lend themselves easily
to "random access" code browsers. Lisp, of course, is much better at
this due to the lack of nesting of functions and complex scoping rules.
Another great feature is the ability to save complex hand-created data
in the "snapshot" file. In a language like C, I would have to either
write a file-in/file-out routine or recreate the data at each run.
The ability to save the state makes testing much easier. In Lisp, the
print and read functions supply the file-in/file-out routines for any
(non-circular) lisp data. In my opinion, both Smalltalk and Lisp
supply nice development environments, but possibly through different
mechanisms. 
>			       It also supplies real structure
>    for your data, instead of forcing everything to look like a list.
>
>Most modern Lisps provide lists, arrays, structures, and "objects" (as
>in Flavors or CLOS).
>
>                              pf
But it doesn't supply Rectangles, Debuggers, Contexts, CompilerParseNodes, ...
One of the advantages (and disadvantages) of Smalltalk is that EVERYTHING 
is an object, including your execution stack, your mouse, your compiler,
your menus, your screen, your source, your object, and so on. 
Even error messages are messages sent to objects. 
Can you add multiple inheritance (cleanly) to your OO Lisp?
(Not to bash Lisp, you understand. I just enjoy looking at ideas taken
to extremes... like Smalltalk, Lisp, Forth, ...)
>
>Paul Fuqua
>Texas Instruments Computer Science Center, Dallas, Texas
>CSNet:  pf@csc.ti.com (ARPA too, sometimes)
>UUCP:   {smu, texsun, cs.utexas.edu, im4u, rice}!ti-csl!pf

pf@csc.ti.com (Paul Fuqua) (11/12/88)

    Date: Thursday, November 10, 1988  3:22pm (CST)
    From: new at udel.EDU (Darren New)
    Subject: Re: What's a PC? (What's the best environment)
    Newsgroups: comp.software-eng

					     Personally, I think the browsers
    (system browser, debugger, inspector, ...) and the predefined classes
    (views, collections, ...) are the main contributors to productivity.
    Also, the almost instant turn-around fromchange to test is vital.

That's part of what I mean by "integrated environment."  As a colleague
put it, you get much more than just the program you're running, you also
get the debugger, etc. (cf Unix and C, in which you usually have to
recompile with -g to use the debugger effectively).

The environment lends itself to quick edit-test-debug cycles on small
parts of the program, which can then be built up independently and
combined and reused and modified.  When I did my last simulator, I first
built up the display from existing windowing code (which itself is built
on the window code supplied with the system), then added the command
loop, then went back and built up the simulation objects and their
operations, then hooked the parts together and started running.  Pieces
of that code came from previous projects, and other pieces are in later
projects, and it's mostly because modularity is easy.

    Of course, the o-o aspect is important in supplying such abilities.

Exactly.  That's what I was saying.

    >Most modern Lisps provide lists, arrays, structures, and "objects" (as
    >in Flavors or CLOS).

    But it doesn't supply Rectangles, Debuggers, Contexts, CompilerParseNodes, ...

We're going to get into religion here if we're not careful.  I use a TI
Explorer, and before that a Symbolics 3600, so my biases are toward Lisp
machines in the MIT mold, which *do* supply that sort of thing.  What
you can't do is send messages to arbitrary things, because not
everything is an "object," in the sense of understanding messages and
having state.  However, many of the data types available have components
and operations upon them, and you can get a handle on nearly anything
and pass it around, so even the non-"objects" are a lot closer to
object-oriented than, say, C or Fortran.  It's a short step from data
abstraction to object orientation.

    One of the advantages (and disadvantages) of Smalltalk is that EVERYTHING 
    is an object, including your execution stack, your mouse, your compiler,
    your menus, your screen, your source, your object, and so on. 
    Even error messages are messages sent to objects. 

On a lispm, error instances are objects, with operations to print their
message or enter the debugger.

    Can you add multiple inheritance (cleanly) to your OO Lisp?

It's already there, as part of the basic design of both Flavors and
CLOS.  Folks I work with wonder how anyone tolerates the lack of
multiple inheritance in C++.

                              pf

Paul Fuqua
Texas Instruments Computer Science Center, Dallas, Texas
CSNet:  pf@csc.ti.com (ARPA too, sometimes)
UUCP:   {smu, texsun, cs.utexas.edu, im4u, rice}!ti-csl!pf

peter@ficc.uu.net (Peter da Silva) (11/13/88)

In article <5315@louie.udel.EDU>, new@udel.EDU (Darren New) writes:
> Funny... I feel that the object-oriented aspect is much less important.
...
> Also, the almost instant turn-around fromchange to test is vital.

You mean like in Forth?

> (Not to bash Lisp, you understand. I just enjoy looking at ideas taken
> to extremes... like Smalltalk, Lisp, Forth, ...)

Yeh, that's the ticket.

Seriously, though, Forth provides one of the great working environments
for people on tight budgets. Sort of like a diamond in the rough.
-- 
Peter da Silva  `-_-'  Ferranti International Controls Corporation
"Have you hugged  U  your wolf today?"     uunet.uu.net!ficc!peter
Disclaimer: My typos are my own damn business.   peter@ficc.uu.net