[HN Gopher] PSChess - A chess engine in PostScript
       ___________________________________________________________________
        
       PSChess - A chess engine in PostScript
        
       Author : beefburger
       Score  : 146 points
       Date   : 2024-03-23 22:54 UTC (1 days ago)
        
 (HTM) web link (seriot.ch)
 (TXT) w3m dump (seriot.ch)
        
       | tromp wrote:
       | A nice showcase of Postscript's abilities, which I first became
       | aware of around 1990, when I sent a tiny program to a Postscript
       | printer to generate a 1024x1024 maze, taking half a day to
       | finish. The graphics are simple but good looking. The engine is
       | weak as expected for a tiny engine. The game I played with my
       | first 4 moves of e2e4, d2d4, e4e5, and d4d5 resulted in checkmate
       | on move 18. I wasn't sure if it would accept en-passant capture
       | but it did. Other tiny engines like Micro-Max [1] and nanochess
       | [2] are much stronger. An interesting long running (2009-2021)
       | discussion between their authors may be found on the chess
       | programming forum [3].
       | 
       | [1] https://home.hccnet.nl/h.g.muller/max-src2.html
       | 
       | [2] https://nanochess.org/chess3.html
       | 
       | [3] http://talkchess.com/forum3/viewtopic.php?f=7&t=26622
        
       | tambourine_man wrote:
       | PostScript is deep magic that I admire from a distance.
       | 
       | This is some mad scientist stuff. Great work.
        
         | robinsonb5 wrote:
         | I've done a bit of PostScript programming in the dim and
         | distant past - the most ambitious of which was a "pretty-
         | printer" for the YAM email client on Amiga, which otherwise
         | just printed emails as plain ASCII.
         | 
         | I found PostScript to be one of those things where something
         | "clicks" after a while, and I really started to appreciate the
         | elegance and simplicity. The hardest part is the mental
         | gymnastics required to track what's on the stack and in what
         | order!
        
           | beefburger wrote:
           | OP here. Indeed, hardest part is the initial mental
           | gymnastics. This can be overcome by devising and enforcing
           | some conventions that I wrote about in a separate article
           | https://seriot.ch/projects/programming_in_postscript.html
        
         | llm_trw wrote:
         | If you want an accessible introduction to postscript that does
         | a bunch of very pretty pictures you can't go wrong with:
         | https://personal.math.ubc.ca/~cass/graphics/text/www/
         | 
         | I particularly like chapter 14 where you implement 3d shader in
         | postscript.
        
         | enriquto wrote:
         | > PostScript is deep magic
         | 
         | Why do you say that? It's a very simple and tiny language that
         | you can learn in an afternoon. Far from the utter complexity of
         | modern things. It's barely more complicated than a programmable
         | calculator. Certainly simpler, cleaner, and arguably more
         | powerful than svg graphics.
         | 
         | You don't even need to read any manual to guess what this
         | example program does:                  100 100 moveto
         | 200 300 lineto        stroke
        
           | alex_lav wrote:
           | I have absolutely no idea what that program is intending to
           | do, such that I can't tell if you're joking.
        
             | tambourine_man wrote:
             | It draws a straight line.
        
             | mattsan wrote:
             | x coord, y coord, command that consumes the arguments from
             | what we can infer is pushed onto a stack beforehand
        
             | koito17 wrote:
             | Your guess is as good as mine, but I assume it draws a line
             | from coordinates (100, 100) to (200, 300)
        
           | tambourine_man wrote:
           | The drawing part is pretty straightforward. It's the stack-
           | based approach and reverse Polish notation thing that trips
           | me off.
           | 
           | Very cool stuff, but not what I do day to day, so it's a bit
           | intimidating at first.
        
           | lxgr wrote:
           | I'd most certainly need to read a manual to know what this
           | does.
           | 
           | Is there an implicit bounding box? How large is it? Does x or
           | y go first in the parameters?
           | 
           | > Certainly simpler, cleaner, and arguably more powerful than
           | svg graphics.
           | 
           | Much more powerful, I agree. Some might even say a bit too
           | powerful for a graphics description language, halting problem
           | and all.
        
           | TacticalCoder wrote:
           | > Far from the utter complexity of modern things.
           | 
           | Although it would, at times, go wrong there are very few
           | things to this day that do impress me more than typing this
           | (admire my "useless use of cat" btw):                   ... $
           | cat tiger.ps | netcat 192.168.0.78 9100
           | 
           | And see my HP LaserJet 4M+ (speaking PostScript natively)
           | start printing.
           | 
           | Yeah, yeah, yeah, I do have a SOHO and a modern
           | printer/scanner at home and it can do more stuff.
           | 
           | But the elegance of netcat'ing a PostScript file to a printer
           | and seeing it print without needing _any_ driver nor any
           | configuration whatsoever [1] was quite something.
           | 
           | It was simpler indeed and it was elegant and it did feel like
           | magic.
           | 
           | Now it wasn't fun if you printed many pages and suddenly it
           | started printing garbage but still...
           | 
           | [1] you had to configure the printer itself to get an IP, but
           | that was done on the printer itself
        
         | coldcode wrote:
         | It's not a terrible language; it just requires a little
         | different thinking. In 1988/89, I learned to write a postscript
         | generator with no dev environment, just reams of paper.
         | Debugging was hard since you had to add debugging print
         | statements in the same document you were printing, which was
         | hard if no printing occurred! I read Adobe Illustrator files,
         | which were the precursor to PDF, so at least I had something to
         | look at.
        
       | WillAdams wrote:
       | For folks who want to learn more, the "Green Book" _PostScript
       | Language Program Design_ is a classic:
       | 
       | https://www.goodreads.com/book/show/3883749-postscript-langu...
       | 
       | and _Thinking in PostScript_ was made available from the author's
       | site and is widely available as a PDF:
       | 
       | https://w3-o.cs.hm.edu/users/ruckert/public_html/compiler/Th...
       | 
       | For a more typical usage see:
       | 
       | https://personal.math.ubc.ca/~cass/graphics/manual/
       | 
       | (I used to do PostScript programming on my NeXT Cube for custom
       | fills and strokes in Altsys Virtuoso)
        
       | anthk wrote:
       | ZMachine in PS:                     gs -dNOSAFER zmachine.ps --
       | game.z3
       | http://zzo38computer.org/zmachine/interp/zmachine.ps
        
       | ks2048 wrote:
       | Nice work! Interesting convention on naming procedures. I'm not
       | sure I could deal with the verbosity, but it is probably a good
       | idea for bigger programs.
       | 
       | I've written neural network (ConvNet) in PostScript and this post
       | has inspired me to finish it up and publish a blog post this
       | week.
        
       ___________________________________________________________________
       (page generated 2024-03-24 23:00 UTC)