Compiled vs interpreted languages provide a critical difference for large-scale application development by providing type-error checking at compile time instead of run-time.

This should be a huge consideration when programming in the large.

Compiled languages like Java, C++, and C have all syntax verified during development. The language is strongly typed so you can't assign a string to an integer or reference a variable that has already been declared.

This means that when you get to run-time testing, all of the mundane issues are already fixed, and at this point your primarily testing functionality. There are other reasons too, but you are more likely to find Java/C++ used in commercial software.

Scripting languages are interpreted at run-time and are loosely typed, so if you do an incorrect assignment or reference a variable by the wrong name, you will not know about it until that piece of code gets executed.

Interpreted languages include PHP, Python, Perl, Groovy, just to name a few. When writing large programs it is important to have a rigorous test framework that exercises every single routine to try to identify problems before they get into production.

An advantage of scripting languages it that they are easier to create small programs in, and easier to make a change in a running system without having to do a complete build/deploy cycle.

Downtime can be avoided when deployed compiled programs by simply running in a cluster.

Entraspan strongly encourages compiled languages like Java/C++ for any program that is likely going to be over 5 K lines of source code, which isn't very much when writing a comprehensive database driven application.