Copy Link
Add to Bookmark
Report

AIList Digest Volume 5 Issue 281

eZine's profile picture
Published in 
AIList Digest
 · 15 Nov 2023

AIList Digest           Thursday, 10 Dec 1987     Volume 5 : Issue 281 

Today's Topics:
AI Tools - Common Lisp Portability,
Games - Computer Chess Rankings

----------------------------------------------------------------------

Date: 8 Dec 87 17:52:26 GMT
From: orstcs!ruffwork@rutgers.edu (Ritchey Ruff)
Subject: Common Lisp lacks portability (105 lines)

Would you use a language that can arbitrarily ignore some of your
code ??? Especially if different implementations ignored different
statements in the same code ??? Even if it didn't TELL you what
it was ignoring when ???

I have a bone to pick with Steele about something he left out of
the Common Lisp definition. The above is *EXACTLY* what Common
Lisp *DOES* !!! In the sections about the
strong typing, "Common Lisp:The Language" says the compiler
or interpreter can ignore many declarations. It should also
state that there be a standard way to find out WHAT the compiler/
interpreter is ignoring (or using). Something like a compiler flag
(":declares-ignored t/nil") or a global flag (*IGNORED-WARNINGS*) to
force common lisp to show what it is ignoring.

Why, you ask??? First, principle (I kind of like that ;-):
when you put in strong typing statements (like "(the integer foo)")
do you REALLY want them ignored in different ways, at different times,
by different Common Lisps - and not even know which is ignoring
what when ???

Second, I've just spent weeks tracking bugs caused by
compilers/interpreters ignoring different parts of my declarations. Simply
because an interpreter/compiler can IGNORE strong typing (like
"(the integer foo)"), optimizer statements (like safety=3),
and declarations (like "(declare (integer foo))") I found that
code that ran ok on one version of Common Lisp would not even
compile under another, run but go into a break on another, and
run to completion but give wrong results on another !!!!

For example - lots of people use Bill Shelters' excellent SLOOP
looping macro package (thanks for all that work you put into an
excellent package, Bill!). Its great, but because it tries to
optimize (by default it expands with declarations that give
type info on looping vars, etc.) it turns out to be non-portable.
Here is a totally non-portable piece of code -

(DEFUN TST (N M)
(SLOOP FOR I FROM N TO M COLLECT I))

This is quite simple, right? When it expands N, M, and I get
declared of type integer, and the iteration var gets checked by
the "THE" statement each time it's incremented to see that it
remains of type integer. Below are results from several different
Common Lisps (all this was done with safety=3) ---

----------------------------------------
FranzExtendedCommonLisp> (tst 1 5)
(1 2 3 4 5)

FranzExtendedCommonLisp> (tst 1.0 5.0)

Continuable Error: Object 2.0 is not of type FIXNUM.
If continued with :continue, Prompt for a new object.
[1c] <cl> ^D

FranzExtendedCommonLisp> (compile 'tst)
TST
FranzExtendedCommonLisp> (tst 1.0 5.0)
(1.0 2.0 3.0 4.0 5.0)

FranzExtendedCommonLisp> (tst 1 5.0)
(1 2 3 4 5)
----------------------------------------
KyotoCommonLisp> (tst 1 5)
(1 2 3 4 5)

KyotoCommonLisp> (tst 1.0 5.0)

Error: 2.0 is not of type FIXNUM.
Error signaled by THE.

Broken at THE. Type :H for Help.
KyotoCommonLisp>> :q
KyotoCommonLisp> (compile 'tst)
End Pass1.
End Pass2.

TST
KyotoCommonLisp> (tst 1.0 5.0)
(0)
KyotoCommonLisp> (tst 1 5.0)
NIL
----------------------------------------
AllegroCommonLisp> (tst 1 5)
(1 2 3 4 5)
AllegroCommonLisp> (tst 1.0 5.0)
(1.0 2.0 3.0 4.0 5.0)
AllegroCommonLisp> (compile 'tst)
TST
AllegroCommonLisp> (tst 1.0 5.0)
(1.0 2.0 3.0 4.0 5.0)
AllegroCommonLisp> (tst 1 5.0)
(1 2 3 4 5)
----------------------------------------

So we have 3 different "Common Lisps" (and the quotes are intentional)
that give radically different results for the SAME code !!! EVEN the
interpreter (Help me, Spock ;-) !!! If the compiler and interpreter
gave warnings when they ignored code the reason for the bugs that this type
of behavior can cause would be so much easier to track down.
When you have your code debugged and are looking for raw speed,
a global flag could be set to stop displaying warnings of this type.

MORAL OF THE STORY --- IF YOU WANT TRULY PORTABLE COMMON LISP CODE
THAT WORKS THE SAME INTERPRETED AS COMPILED, *DO* *NOT* PUT
STRONG TYPING OR OPTIMIZER STATEMENTS ANYWHERE IN YOUR CODE !!!
IF *ANYTHING* *CAN* IGNORE A STATEMENT, *NEVER* USE THAT STATEMENT !!!

I've gone on too long, but I think I've made my point.
Thanks for the bandwidth,

--Ritchey Ruff ruffwork@cs.orst.edu -or-
"I haven't lost my mind, ruffwork%oregon-state@relay-cs-net -or-
its' backed up on tape somewhere..."
{ hp-pcd | tektronix }!orstcs!ruffwork

------------------------------

Date: Fri, 04 Dec 87 10:33:58 PST
From: Stuart Cracraft <cracraft@venera.isi.edu>
Subject: computers vs. humans

Ken,

This might be of interest to the AI readership. I'll leave the
decision up to you...

*** C.R.A. Rates Commercial Chess Machines at American Open ***
by Stuart Cracraft (copyright (C) 1987, 1988)

At the American Open, held during the Thanksgiving holidays, three chess
machines were certified. Certification involved having each machine play
48 rated games against strong human opposition. The result is a rating for
the machine.

The three manufacturers who submitted machines for certification are as
follows.
Fidelity submitted a machine that is still somewhat of a mystery.
[Editorial comment: C.R.A. policy should be amended to require full
disclosure by the manufacturer. --Stuart] Fidelity representatives refused
to reveal information about the micro-chip(s) inside the machine,
memory-size, and search-speed. (Rumor has it that this was a 16mhz 68020
with a minimum of 128K memory for transposition table. Rumor also has it
that this would be prohibitively expensive to market.)

Mephisto came with the much-acclaimed Mephisto "Dallas" program in the
commercial Mephisto Mondial unit (available exactly as it was in the
certification, from U.S.C.F. for about $400) the winner of the 1986
world-micro championship (when running on a 28mhz 68020 which is available
from Mephisto commercially only at 14mhz). At certification time, it was
running at 12 mhz on a 68000.

Novag came with the "Super-Expert" a follow-on to the Novag Expert.
Super-Expert ran at 6mhz and contained a 6502 processor.

Due to variations and fluctuations in the ratings of the machine's
opponents and the actual certification rating process itself (a
complicated procedure), no final rating-per-machine was calculated, though
estimates are available. Please remember that these are estimates only
and that the actual, final, certified rating will be available shortly.
Please also note that unless the machine is commercially available exactly
as it existed at certification time, the certified rating is not available
for advertisment purposes nor can the manufacturer place the C.R.A.
rating seal on any other machine.

So, with that disclaimer aside, here are the results of the tournament,
and at the very end are the estimates ratings for each manufacturer's
entry. Results consist of six-games per round, organized in tabular
format. A 0 means a loss for machine, .5 means a draw, and 1 means
a win for the machine. The ratings are of the human opponent
the machine played.

Round 1 2 3 4 5 6 7 8
-------------------------------------------------------------------
Fidelity (16mhz 68020? with 128K+ memory for transposition? by the Spracklens)
2300-0 2185-0 2139-.5 2067-1 2256-0 2144-.5 2116-0 2274-1
2283-0 2204-0 2175-0 1778-1 2244-0 2115-1 2105-1 2103-0
2209-.5 2244-0 2260-1 2226-1 2351-0 2119-1 2161-1 2434-1
2129-1 1969-.5 2163-0 2183-0 2067-1 2073-1 2055-0 2002-1
1966-1 2175-0 2168-0 2122-.5 2134-0 2191-1 2181-1 2106-.5
1944-1 2106-1 1963-1 1954-1 1970-1 1987-1 1890-1 1866-1

Mephisto (12mhz 68000 with "Dallas" program by Richard Lang)
2286-0 2189-0 2137-0 2242-1 2243-.5 2250-0 2183-0 1871-1
2267-0 2179-.5 2000-1 2069-1 2140-.5 2227-0 2123-.5 2058-.5
2145-1 2216-0 2145-1 1929-1 2358-0 2074-1 2171-0 2172-.5
2139-0 2174-1 2109-1 2167-.5 2175-0 1966-1 2127-0 2006-1
2298-0 2119-1 1953-.5 2156-1 2117-.5 1958-1 2145-1 2053-1
1924-0 1875-1 2182-0 1962-1 1947-.5 2109-1 2216-0 2030-1

Novag (6 mhz 6502 with "Super-Expert" program by David Kittinger)
2294-.5 2262-.5 2261-.5 2320-.5 2250-0 2213-1 2217-0 2235-0
2274-0 2209-0 1958-0 1966-.5 2115-0 2000-0 2145-1 1992-1
2264-1 2389-0 2257-0 2219-0 2249-0 2068-1 2206-.5 2233-1
2144-0 2122-1 2114-0 2074-0 2053-1 2160-1 2092-1 2000-1
2137-0 2106-0 2156-1 2069-0 2050-.5 2089-1 2010-1 2167-0
1854-1 1950-1 1922-1 1941-.5 1989-0 1952-1 1814-1 2157-1

Estimated ratings:
Fidelity Experimental (not currently commercially available):
USCF 2190-2200
Mephisto Mondial 68000 XL (just becoming available commercially):
USCF 2150-2160
Novag Super-Expert (just becoming available commercially):
An estimated rating for this machine is complicated by
the fact that the first 30-games of the certification
were played with a selective-search feature, and the last
18-games were played with the feature disabled (done with C.R.A.
permission.) C.R.A. agency extended an invitation to Novag to use the
latter 18 games as the first 18 games of a new certification
(requiring 30 more games be played).

The overall concensus is that a commercial master will first become
available in one year or less. Certainly, the prestige associated with
being the manufacturer of such a product, especially if attractively
priced, would be immense. There is clearly a race to be the first
manufacturuer to do so.

Stuart

------------------------------

End of AIList Digest
********************

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT