Skip to content

Latest commit

 

History

History
46 lines (27 loc) · 2.58 KB

README.md

File metadata and controls

46 lines (27 loc) · 2.58 KB

Joseph Weizenbaum’s 1966 ELIZA recreated in C++

I’ve made in C++ what I think is an accurate simulation of the original ELIZA. It is a console application that takes as input the original format script file, which looks like a series of S-expressions, and then waits for the user to type a line of text before responding with a line of text of its own.

A simulated blurry CRT terminal screen showing ELIZA running and the start of the famous "men are all alike" conversation.

I made this before the ELIZA source code had been found, and wrote about it in part 1.

Part 2 describes changes I made after the ELIZA source code was found.

Part 3 is about the HASH function, now that too has been found.

In a footnote I document trying to recreate the PARRY/DOCTOR conversation from RFC439.

My son Max Hay and I recreated ELIZA in JavaScript here. Try it here.

I added serial I/O to run ELIZA on an ASR 33 teletype.

I helped show that 1966 CACM ELIZA is Turing complete. There are several Turing machine ELIZA scripts here.

There is a huge collection of ELIZA-related information at Jeff Shrager's elizagen.org.

Along with Jeff and others I am contributing to a book about ELIZA. The website is findingeliza.org.

Thanks to Rupert Lane, you can now run the original MAD ELIZA code on your PC. (Jeff's blog about it.)


To build and run ELIZA

Note that the whole of ELIZA is in the one file eliza.cpp (unless you wish to also use the serial I/O code mentioned above).

POSIX (e.g. macOS) (I used Apple clang version 15.0.0 that came with Xcode):

clang++ -std=c++20 -pedantic -o eliza eliza.cpp
./eliza

Windows (I used Microsoft Visual Studio 2019 Community Edition Command Prompt):

cl /EHsc /W4 /std:c++20 eliza.cpp
eliza