<?xml version='1.0' encoding='utf-8' ?>

<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>The Mandelbear&apos;s Musings</title>
  <link>https://mdlbear.dreamwidth.org/</link>
  <description>The Mandelbear&apos;s Musings - Dreamwidth Studios</description>
  <lastBuildDate>Sun, 06 Jun 2021 00:59:57 GMT</lastBuildDate>
  <generator>LiveJournal / Dreamwidth Studios</generator>
  <lj:journal>mdlbear</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://v2.dreamwidth.org/15740388/505737</url>
    <title>The Mandelbear&apos;s Musings</title>
    <link>https://mdlbear.dreamwidth.org/</link>
    <width>96</width>
    <height>96</height>
  </image>

<item>
  <guid isPermaLink='true'>https://mdlbear.dreamwidth.org/1775180.html</guid>
  <pubDate>Sun, 06 Jun 2021 00:59:57 GMT</pubDate>
  <title>Finding ELIZA</title>
  <link>https://mdlbear.dreamwidth.org/1775180.html</link>
  <description>&lt;p&gt; &lt;strong&gt;Note:&lt;/strong&gt; Despite being posted on a Saturday and a title that
    includes the name of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Eliza_Doolittle&quot;&gt;a character&lt;/a&gt; from
    &lt;a href=&quot;https://en.wikipedia.org/wiki/My_Fair_Lady&quot;&gt;a well-known
    musical&lt;/a&gt;, this is &lt;em&gt;not&lt;/em&gt; a Songs for Saturday post.  It doesn&apos;t
    have anything to do with &lt;a href=&quot;https://en.wikipedia.org/wiki/Finding_Nemo&quot;&gt;fish&lt;/a&gt;, either.

&lt;p&gt; Remarkably, &lt;em&gt;Joseph Weizenbaum&apos;s &lt;a href=&quot;https://drive.google.com/file/d/1DkdV2o-36mm3x2nURjhKiCaFcjZtMIoI/view&quot;&gt;original source code&lt;/a&gt; for &lt;a href=&quot;https://en.wikipedia.org/wiki/ELIZA&quot;&gt;ELIZA&lt;/a&gt; has been
    rediscovered,&lt;/em&gt; after having been missing and believed lost for over
    half a century, and was &lt;a href=&quot;https://sites.google.com/view/elizagen-org/the-original-eliza&quot;&gt;made
    public&lt;/a&gt; on May 23rd of this year.  ELIZA is probably the oldest and
    almost certainly the best-known implementation of what is now known as a
    chatbot.

&lt;p&gt; If you decide to look at the code, start by reading &lt;a href=&quot;https://sites.google.com/view/elizagen-org/the-original-eliza&quot;&gt;the
    web page it&apos;s embedded in&lt;/a&gt; before you dive into the listing.  The
    &quot;Notes on reading the code&quot; section, which comes &lt;em&gt;after&lt;/em&gt; the
    listing, will prevent a lot of confusion.  &lt;a href=&quot;https://drive.google.com/file/d/1DkdV2o-36mm3x2nURjhKiCaFcjZtMIoI/view&quot;&gt;The listing itself&lt;/a&gt; is a scan of a 132-column listing, and definitely
    benefits from being viewed full-screen on a large monitor.

&lt;p&gt; The first thing you see in the listing is the &lt;em&gt;script&lt;/em&gt; -- the set
    of rules that tells the ELIZA program how to respond to input.  The
    program itself starts on page 6. You might be misled by the rules, which
    are in the form of parenthesized lists, into thinking that the program
    would be written in LISP. It&apos;s not; it&apos;s written in &lt;a href=&quot;https://en.wikipedia.org/wiki/MAD_programming_language&quot;&gt;MAD&lt;/a&gt;, an
    Algol-like language, with Weisenbaum&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/SLIP_(programming_language)&quot;&gt;SLIP&lt;/a&gt;
    (Symmetric List Processing) primitives embedded in it.

&lt;p&gt; SLIP uses circular, bidirectionally-linked lists.  Each list has a header
    with pointers to the first and last list element; the header of an empty
    list points to itself.  I&apos;ve lost track of how many times I&apos;ve implemented
    doubly-linked lists, in everything from assembly language to Java.

&lt;p&gt; ELIZA is the name of the &lt;em&gt;program&lt;/em&gt;, but &quot;Eliza&quot; usually refers to
    the combination of an Eliza-like program with the Doctor script.  The most
    common script is a (rather poor) simulation of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Person-centered_therapy&quot;&gt;Rogerian&lt;/a&gt;
    psychotherapist called &quot;Doctor&quot;.  According to the note at the bottom of
    the Original Eliza page, actual Rogerian therapists have pronounced it a
    perfect example of how &lt;em&gt;not&lt;/em&gt; to do Rogerian therapy.  Nevertheless,
    many people are said to have been helped by ELIZA, and it&apos;s possible to
    have a &lt;a href=&quot;https://computerhistory.org/blog/the-promise-of-the-doctor-program-early-ai-at-stanford/&quot;&gt;surprisingly intimate conversation&lt;/a&gt; with her as long as you suspend
    your disbelief and respect her limits.

&lt;p&gt; If you have Emacs installed on your computer, you can access a &lt;a href=&quot;http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/play/doctor.el&quot;&gt;version of Doctor&lt;/a&gt; with &lt;code&gt;M-X doctor&lt;/code&gt;.  Otherwise, browse to
    &lt;a href=&quot;http://psych.fullerton.edu/mbirnbaum/psych101/Eliza.htm&quot;&gt;Eliza,
    Computer Therapist&lt;/a&gt; if you don&apos;t mind having a potentially intimate
    conversation with something hosted on a public website.  (Or simply
    download the page -- it&apos;s written in Javascript.)

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul class=&quot;resource-list&quot;&gt;
  &lt;li&gt; &lt;a href=&quot;https://sites.google.com/view/elizagen-org/about&quot;&gt;ELIZAGEN -- The Genealogy of ELIZA&lt;/a&gt; &quot;This site is dedicated to
       tracing the legacy ofJoseph Weizenbaum&apos;s ELIZA (aka. Doctor) program.&quot;
  &lt;li&gt; &lt;a href=&quot;https://sites.google.com/view/elizagen-org/the-original-eliza&quot;&gt;ELIZAGEN - The Original ELIZA&lt;/a&gt; - the source code.
  &lt;li&gt; &lt;a href=&quot;https://github.com/anthay/ELIZA&quot;&gt;anthay/ELIZA: A Simulation
       in C++ of Joseph Weizenbaum’s 1966 ELIZA&lt;/a&gt; by Anthony Hay.  The
       README includes both a copy of the transcript published in Wizenbaum&apos;s
       CACM article in 1966, and a detailed description of the script syntax
       and how it works.
  &lt;li&gt; &lt;a href=&quot;https://babel.hathitrust.org/cgi/pt?id=mdp.39015021689271&amp;amp;view=1up&amp;amp;seq=7&quot;&gt;MAD (Michigan Algorithm Decoder) manual&lt;/a&gt; by Elliott Organick
       (1961).
  &lt;li&gt; &lt;a href=&quot;https://www.gnu.org/software/gslip/manual/&quot;&gt;GNU gSlip&lt;/a&gt; [&lt;a href=&quot;https://www.gnu.org/software/gslip/manual/UserManual.pdf&quot;&gt;PDF
       Manual(738K)&lt;/a&gt;] for C++.
  &lt;li&gt; &lt;a href=&quot;http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/play/doctor.el&quot;&gt;doctor.el\play\lisp - emacs.git - Emacs source repository&lt;/a&gt; - the
       Doctor program as implemented in Emacs LISP.
  &lt;li&gt; &lt;a href=&quot;http://psych.fullerton.edu/mbirnbaum/psych101/Eliza.htm&quot;&gt;Eliza,
       Computer Therapist&lt;/a&gt; in Javascript
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;colophon&quot;&gt; &lt;em&gt;Another fine post from
   &lt;a href=&quot;https://mdlbear.dreamwidth.org/tag/curmudgeon&quot;&gt;The Computer Curmudgeon&lt;/a&gt; (also at
   &lt;a href=&quot;https://computer-curmudgeon.com/&quot;&gt;computer-curmudgeon.com&lt;/a&gt;).&lt;br&gt;
   Donation buttons in &lt;a href=&quot;https://mdlbear.dreamwidth.org/&quot;&gt;profile&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=mdlbear&amp;ditemid=1775180&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://mdlbear.dreamwidth.org/1775180.html</comments>
  <category>history</category>
  <category>curmudgeon</category>
  <category>list-processing</category>
  <category>ai</category>
  <category>computers</category>
  <lj:music>not by Frederick Loewe</lj:music>
  <lj:mood>astounded</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
</channel>
</rss>
