Skip to content
/ ELIZA Public

A Simulation in C++ of Joseph Weizenbaum’s 1966 ELIZA

License

Notifications You must be signed in to change notification settings

anthay/ELIZA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.


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

About

A Simulation in C++ of Joseph Weizenbaum’s 1966 ELIZA

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published