The Macro Implementation of Snobol 4: A Case Study of Machine-Independent Software Development