Tag Theory of Programming Languages