Lo primero que tenes que saber si queres que tu programa vuele es:
1- usar un lenguaje interpretado o compilado?
si un lenguaje es compilado o no. Por aqui se comienza antes que nada.
Lenguaje Compilado (rapidos)
Un lenguaje compilado es término un tanto impreciso para referirse a un lenguaje de programación que típicamente se implementa mediante un compilador. Esto implica que una vez escrito el programa, éste se traduce a partir de su código fuente por medio de un compilador en un archivo ejecutable para una determinada plataforma (por ejemplo Solaris para Sparc, Windows NT para Intel, etc.).
Es decir Un lenguaje compilado es aquel que, es traducido a código máquina y las instrucciones generadas, son interpretadas directamente por la máquina
C, C++, Pascal, Delphi, Kylix, Lazarus
Lenguaje Interpretado (lentos)
Un lenguaje interpretado es aquel en el que las instrucciones se traducen o interpretan una a una en tiempo de ejecución a un lenguaje intermedio o lenguaje máquina o a través de una máquina virtual, siendo típicamente unas 10 veces más lentos que los programas compilados.(Adaptación de la definición en Wikipedia)
Es decir un lenguaje interpretado, es aquel que es traducido a un lenguaje intermedio(entiéndase no-máquina), en la cual cada instrucción es interpretada y traducida a lenguaje máquina en tiempo de ejecución.
BASIC, Perl, PHP, Java, Visual Studio .NET
Conclusion: C/C++ siempre va hacer mucho mas rapido que .NET
Fuente:
http://robregonm.blogspot.com/2006/02/lenguajes-interpretados-vs-lenguajes.html
Lamento diferir contigo... pero tu respuesta no es completamente cierta.
Se podria decir que existen tres tipos de lenguajes... los que se compilan directamente a lenguaje maquina, como C, C++, Pascal, etc. Los que se compilan a pseudo-codigo y se ejecutan en maquina virtual como Java, la familia de lenguajes de .NET. Y por ultimo estan los lenguajes interpretados, como Perl, PHP los scripts de Shell, etc.
En tiempos antiguos la velocidad de los lenguajes compilados directamente a lenguaje maquina era indudablemente la mejor. No existian ni maquinas virtuales, ni interpretes lo suficientemente eficientes como para hacerles compentencia.
Luego de algun tiempo aparecio Sun y Java.... La idea primordial era que los programas escritos en Java se compilaban no a lenguaje maquina sino a un pseudo-codigo que se recompilaba en tiempo de ejecucion en la maquina destino.
Al principio las maquinas virtuales eran lentas y pesadas, porque no solo compilaban el programa sino una serie de bibliotecas, o el framework, lo que hacia que los programas parecieran lentos y pesados.
Luego se disenio lo que se le conoce como compilador JIT o compilador "Justo a Tiempo"... Este tipo de compiladores en vez de compilar todo el pseudo-codigo, solo compila las funciones que se vayan utilizando y va cargando las clases del framework en cuanto se necesite... con el tiempo los compiladores JIT fueron evolucionando y ahora no solo compilan, sino que realizan optimizaciones en tiempo de ejecucion que permiten a los programas compilados de esta manera utilizar de la mejor manera los recursos del sistema.
La flexibilidad e "inteligencia" de los compiladores JIT ha superado por mucho la compilacion "estatica" que se hace con los programas como C y C++... podes buscar en internet benchmarks de programas que corren sobre maquina virtual y compilados y te vas a dar cuenta que la diferencia entre un programa en C++ y Java o .NET es minuscula, superando incluso a veces el performance de C y C++ por mucho.
El futuro de los lenguajes esta en los que corren haciendo uso de compiladores JIT... la capacidad de que los programas se optimicen al momento en que estan corriendo ha provocado una oleada de lenguajes nuevos que corren bajo maquina virtual. Antes era casi que unicamente Java, ahora .NET funciona de una manera completamente similar y el desarrollo ahora esta no en desarrollar un compilador mas eficiente, sino uno mas inteligente.