A great many modern languages usually work like that. Java, Ruby, Python, Perl, PHP, Javascript, C#, and many more. Some popular languages that usually work differently are C and C++ , and of course all of the assembly languages. It is a difference between interpreted languages (which need interpreter software) and compiled languages. Although all languages can be interpreted or compiled, almost all of the popular modern languages are primarily interpreted. Interpreted languages are dependent on the interpreter, but get the advantage of being cross platform (ie: java applications work wherever there is a java interpreter aka the java virtual machine). Of course there are a lot of different virtual machines / interpreters for these languages though, Ruby has about a dozen.