The idea is to provide a trait `ProgrammingLanguage` that actually does all the work, and then main.rs will just be the infra for storing its own state