Type Checking In Compilers And Interpreters