On Apr 18, 12:34 pm, Zbiggy <
zbigniew2011REM...@gmail.REMOVE.com>
wrote:
> In comp.lang.forth, Hugh Aguilar wrote:
>
> > I think that Lisp is a better language for desktop-computer
> > programming than Forth,
>
> ...because?
Because the Lispers have put in the time and effort to provide
beaucoup libraries of useful code. In Forth you have to write
everything from scratch --- nobody has time to dink around all day
implementing low-level code before even starting the application
program --- the work world is all about being productive.
Also, CL has CLOS and Racket has something similar. This can help
speed up script writing. I don't think that it is all that useful for
large programs, but I haven't written enough large programs in my life
to really comment. I don't think that it is appropriate for Forth at
all.
I think that Forth could be used for large programs on the desktop,
but only if somebody were willing to invest the time and effort into
writing a lot of libraries of support code (this implies a big budget
and a relaxed schedule) --- what has been available for decades in the
Lisp community. Both Forth and Lisp are extensible, so these are the
only two languages that I would consider for a large project. Nobody
wants to hire me (or any Forther) to write a large program though, so
we will never know how well Forth would work. The largest Forth
program I've written was the dxf to gcode translator that I did at
Testra, and it was a major PITA primarily because of a complete lack
of libraries of data-structures (it would be a lot easier now with my
novice package available; I was primarily motivated by that experience
when I wrote my novice package) --- my MFX cross-compiler at Testra
was also quite large, but a compiler is so different from an
application program that I wouldn't really consider it to be relevant
to this discussion.
Forth failed, not because Forth is a bad language, but rather because
of a lack of leadership. Nobody was writing libraries of useful code.
Nobody was serious about supporting application programming ---
everybody was dinking around with science-fair projects involving
compiler-writing that had no practical value (there is some "dink-
around disease" in the Lisp world too, but it is an epidemic in the
Forth world). Also, the ANS-Forth standard was horrible --- this was
also the result of a lack of leadership --- it was too wishy-washy in
that it waffled on important aspects of the language, and it also
failed to provide myriad useful functions that are very difficult to
implement in Forth and should certainly be implemented in assembly-
language (but they have to be in the standard for assembly-language to
be used). There was way too much concern about legacy code, and not
enough concern about the future --- and the result was the Forth
didn't have a future at all --- Forth effectively died in 1994.
> Not writing anything in Lisp - but I'm using TCL, which has somewhat
> Lisp-like syntax. And although one doesn't need to use as many
> parentheses, as in case of Lisp - it's still a problem: to keep code
> readable, there is a must to use loads of transitory variables. Only to
> replace something like this:
>
> set a [doIt1 [doIt2 [doIt3 $a1 $b1 $c1] [doIt4 $x1 $y1 $z1]] [doIt5 [doIt6 $a2 $b2 $c2] [doIt7 $x2 $y2 $z2]]]
>
> with:
>
> set b [doIt3 $a1 $b1 $c1]
> set c [doIt4 $x1 $y1 $z1]
> set d [doIt6 $a2 $b2 $c2]
> set e [doIt7 $x2 $y2 $z2]
> set a [doIt1 [doIt2 $a $c] [doIt5 $d $e]]
>
> Using Lisp it can be even worse, it seems. Lisp seems to me (well, I may
> be wrong) a language for people more "purely theoretically" - and less
> technically - oriented. For them indeed it can be "most powerful LitW",
> since it better suits them.
This seems to be the same argument made against Forth, in that bad
Forthers tend to have too much "stack-juggling" --- there are several
ways to avoid this in Forth, and likely in Lisp too. I typically try
to package data into structs, and the structs into lists, as my
primary technique (this is why my novice package has so much support
for lists, and also why I think that I would be a natural for Lisp).
I don't really know enough about Lisp to debate this subject beyond
what I've said here. I've never written any non-trivial program in
Lisp. Note that I cross-posted this to comp.lang.lisp --- maybe
somebody who knows what they are talking about can join the
conversation.