
SETL programming language - mindcrime
https://setl.org/setl/
======
magmasystems
Oh my god! It's SETL.

After getting my Masters degree in the early 80s, I went to NYU for my Ph.D.
with the intent purpose of working on SETL with Jack Schwartz. Unfortunately,
by that time, Jack had moved on from SETL and onto the world of Robotics.
Robert Dewar was too busy building Realia COBOL and was not taking on any
additional Ph.D. students. So I floundered around NYU for a year before
deciding to do my own commercial software, which was probably the best
decision I ever made. Especially after seeing a lot of Ph.D. students at NYU
who had been there for 10 years.

~~~
winter_blue
> before deciding to do my own commercial software, which was probably the
> best decision I ever made.

Just curious: what did you build, with your commercial venture/startup?

~~~
magmasystems
I wrote one of the first word processors for Unix, and showed it at the first
UnixExpo in the Javits Center in 1984. When the company that was marketing it
went out of business, I ported the word processor to the IBM PC, and it became
a very popular shareware word processor (New York Word). The income from New
York Word was sufficient enough that I quit my day job and formed a software
company devoted to making various productivity tools.

------
nigwil_
SETL has an interesting lineage and part to play in the history of computing:

The original SETL was implemented in a language known as LITTLE, Dave Shields
noted in an email: "SETL was implemented in LITTLE, a language based on
FORTRAN that had fixed=length bitfields as a fundamental data type."

Early SETL was used by Robert Dewar's team to implement the first validated
Ada implementation, known as NYU Ada/Ed. This implementation worked as an
interpreter.

We have a printed copy of the original SETL based NYU Ada/Ed but we are still
to find the original SETL implementation. Maybe somewhere in the Courant
Institute or their alumni there is someone with an original magnetic tape from
the DEC VAX machine that ran these implementations.

~~~
shakna
> We have a printed copy of the original SETL based NYU Ada/Ed but we are
> still to find the original SETL implementation

This got me interested. I may not have found what you're looking for, but I
found something.

The current git repo's first commit is "based upon SSoS2I 1.0.1" [0].

[0]
[https://github.com/herrmanntom/setlX/commit/ae1e8a16fb1c15d8...](https://github.com/herrmanntom/setlX/commit/ae1e8a16fb1c15d89456ba749b32e8bf310460dc)

~~~
nigwil_
interesting, someone has refined SETL2 into SetlX; I had not noticed that the
SETL wikipedia entry has an entry for SetlX:

[https://en.wikipedia.org/wiki/SETL](https://en.wikipedia.org/wiki/SETL)

In my other reply in this thread I highlighted the lineage of SETL, I
neglected to also mention that SETL was an influence on ABC that influenced
Python.

------
jjtheblunt
I parallelized the SetL runtime for shared memory multiprocessors, with
dynamic load balancing, parallel GC, and added explicit parallel constructs,
at Urbana-Champaign, from fall 1988 over the next couple years. It's weird, to
me, that the global interpreter lock persists in Python, 3 decades later.

~~~
JadeNB
> I parallelized the SetL runtime for shared memory multiprocessors, with
> dynamic load balancing, parallel GC, and added explicit parallel constructs,
> at Urbana-Champaign, from fall 1988 over the next couple years. It's weird,
> to me, that the global interpreter lock persists in Python, 3 decades later.

I don't think anyone thinks GvR is _incapable_ of removing the GIL. Given the
comparatively tiny base of installed SETL software, surely it's a lot easier
to check that any backwards-incompatible changes to SETL won't break any
important installed software based on it than it is to do the same for Python?

(And, as a follow-up, I think it's fair to say that there is no such thing as
a fully backwards compatible change. My background is with Perl more than
Python, where the problem is especially acute; but I imagine with Python too,
it is very hard to make a change where one can be totally sure that the
behaviour being 'fixed' isn't behaviour that some piece of software somewhere
out there relies on being broken in exactly the historically right way.)

------
pagnol
There's even a book published in 1986: [https://www.amazon.com/Programming-
Sets-Introduction-Monogra...](https://www.amazon.com/Programming-Sets-
Introduction-Monographs-Computer/dp/0387963995)

~~~
wodenokoto
GNU SETL documentation links to a book from 1979.

Any older?

[https://cs.nyu.edu/~bacon/setl/doc-
legacy/setlprog.pdf](https://cs.nyu.edu/~bacon/setl/doc-legacy/setlprog.pdf)

------
tonyjstark
Is it dead and if not, is it GNU now? Some links on the page don't work.

Anyone here ever tried it out?

~~~
shakna
It's not dead! [0]

The license is a bit of a mix [1], but sort of mainly BSD, but partly LGPL.

[0]
[https://github.com/herrmanntom/setlX](https://github.com/herrmanntom/setlX)

[1]
[https://github.com/herrmanntom/setlX/blob/master/license.txt](https://github.com/herrmanntom/setlX/blob/master/license.txt)

------
joak
I did my MSc thesis with setl and mathematica I, in 1989..

Some elements of setl eventually got their way into python ~15 years ago,
namely: sets and list comprehension.

Archeology of programming...

------
qwerty456127
Where can I find an example of a meaningful program written in SETL?

~~~
hakank
Not sure if they are that meningful, but I have a collection of SETL programs
here: [http://www.hakank.org/setl/](http://www.hakank.org/setl/) (My SETL
page).

The page also includes some SetlX programs.

------
andrelaszlo
'As rms has kindly pointed out, the designation "GNU SETL" is incorrect until
the sources have been released. I hope to correct this by making that release
soon'

Undated. From the Documentation page.

~~~
cpach
And according to these searches there are no references to SETL the language
at GNU’s website:

[https://www.gnu.org/cgi-
bin/estseek.cgi?phrase=setl&perpage=...](https://www.gnu.org/cgi-
bin/estseek.cgi?phrase=setl&perpage=10&attr=&order=&clip=-1&navi=0)

[https://www.google.com/search?q=site%3Agnu.org+%22setl%22](https://www.google.com/search?q=site%3Agnu.org+%22setl%22)

