[racket] Scheme's place in the world

From: Hugh Aguilar (hughaguilar96 at yahoo.com)
Date: Wed Nov 21 00:19:09 EST 2012

Good job on being one of the very few HLL programmers to grasp the concept of mixed-precision integer arithmetic! Assembly language programmers understand this idea easily, but I almost never meet an HLL programmer who gets it.

I have a long history programming in Forth. Now I'm writing my own language, which I call Straight Forth. This not ANS-Forth (or Forth-200x) compliant, but I'm competing against the standard which I think has gone astray. The primary feature that I'm adding to Forth is closures. Also, I'm getting rid of a lot of 1970s-vintage cruft from Forth, such as DO loops --- my language will actually be much smaller and simpler than ANS-Forth or Forth-200x.

Straight Forth will only be for micro-controller programming (such as for the PIC24). One of the problems with ANS-Forth is that it is a "jack of all trades and a master of none." It is promoted as a language for desktop-computer programming, but it really doesn't compete with the myriad languages available (this is the point I was making in regard to my slide-rule program that was a major PITA for me to write in Forth, even though I know Forth better than most). OTOH, Forth is the best language for micro-controllers --- if the Forth community would focus on what they are good at, they might succeed. 

Straight Forth will have Scheme as its "sister language" for desktop-computers and laptops. There are a lot of programs that get written as part of a micro-controller project, typically involving transforming data that goes to or from the micro-controller and the desktop-computer, from one format to another. Scheme will be used for this. For example, when I worked at Testra I wrote a program to convert AutoCAD dxf files into CNC gcode --- I wrote that in UR/Forth (everything at Testra is in UR/Forth) and it was another major PITA that would have been much easier in Scheme (or pretty much any of the many good desktop-computer languages available). Most likely I will specify Racket because it is popular and it has a good IDE (I'm actually using Gambit to write Straight Forth though, because it is a lot more powerful). I think that it is a good idea to have each language used for what it is good for (Straight Forth for micro-controllers and Scheme for
 desktop-computer scripting), rather than press one language into multiple jobs most of which it is not well-designed for. I largely picked Scheme because it has closures, and there is beaucoup documentation on programming theory available that uses Scheme as the example language --- most of my users will come from a C or Forth background and hence won't know what closures are, so requiring them to learn Scheme at the same time that they become Straight Forth users will kill two birds with one stone, in that they will get an appropriate language for scripting and they will find out about closures. There are other languages that have closures, but none that have so many good books available discussing the subject. To program in Straight Forth the users will have to understand closures, as that is what it is all about.

I like Scheme! There is no money to be made as a Scheme programmer though. The only way to make money is by selling circuit-boards that do something useful --- and those boards have to be programmed somehow, which is where Straight Forth comes in. Boards are a product that can be sold. Software is not a product --- it just adds value to the hardware that it runs on, but the hardware is the product that gets sold for money. Sometimes programming is a service, but this typically involves writing programs that are run once and become obsolete immediately thereafter --- I did this in the past writing IBM370 assembly programs for direct-mail back in the days when the postal service was still used. Software is no longer a product that comes in a shrink-wrapped box containing disks and manuals (such as WordStar for the CP/M computers) --- that world no longer exists. The only thing that matters nowadays is hardware --- circuit-boards are what the
 bean-counters count.

regards --- Hugh

Message: 6
Date: Tue, 20 Nov 2012 08:56:34 -0500
From: Hendrik Boom <hendrik at topoi.pooq.com>
To: users at racket-lang.org
Subject: Re: [racket] LC53
Message-ID: <20121120135634.GA28003 at topoi.pooq.com>
Content-Type: text/plain; charset=us-ascii

On Tue, Nov 20, 2012 at 11:02:06AM +0000, Norman Gray wrote:
> Hugh, greetings.
> I think list members might experience a certain amount of surprise at your conclusions...
> On 2012 Nov 20, at 02:34, Hugh Aguilar wrote:
> > For a numerical program it is necessary to have mixed-precision arithmetic. [...] Scheme, Python, Ruby, C/C++, Fortran, Java, etc., don't have this
> ...that Fortran is unsuitable for numerical programming,

Starting with Fortran, high-level languages have forgotten that the 
product of two numbers should be accurately available as a 
number with twice the precision.

NOw if the numbers were approximate to start with, this is no big deal, 
but if they were exact (as integers usually are), it can be crucial for 
some numerical algorithms.  It mystifies me why this situation has 
persisted for over half a century.

> > this is the kind of program that Scheme was designed for.
> ...and that Scheme was designed as a scripting language.

He didn't actually say Scheme was designed as a scripting language, 
though his message suggested it.  He said it was designed to write 
programs like his slide-rule program.  He also said that is *was* and 
excellent scripting language (which is true).

For the record, Scheme appears to have been designed as a successor to 
the Planner and Conniver systems (hence the name), which were AI 
languages noted for sophisticated control structures.  Hence the whole 
continuation mechanism, which makes explicit control of various kinds of 
data- and strategy-dependent scheduling mechanisms.

-- hendrik

> It might be worth getting a little further along in your study of a couple of Scheme dialects, before arriving at quite such confident conclusions.
> Best wishes,
> Norman
> -- 
> Norman Gray  :  http://nxg.me.uk
> SUPA School of Physics and Astronomy, University of Glasgow, UK
> ____________________
>   Racket Users list:
>  http://lists.racket-lang.org/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20121120/4ff0605d/attachment-0001.html>

Posted on the users mailing list.