El día 12 de diciembre de 2008 11:00, Carlos E. R.
No estoy diciendo que sea peor. C++ es mejor. Pero un programa hecho en C++, que usa las cosas especiales que añade, es más lento por narices. Y encima, como el compilador GCC de hace unos años no generaba código bien optimizado para C++, pues teníamos una rémora considerable, que afectaba al KDE. La gente de KDE estuvo dando la lata a la gente del GCC para que corrigieran ese problema, y estuvieron trabajando mucho en eso. Supongo que ya lo habrán conseguido.
Esto lo explicó Rafa en su dia.
Ahí tenemos el kernel, que está hecho en C, no C++. Cuando cuenta la velocidad y la optimización y el control, no se usa C++. Por muy bueno que sea, cada lenguaje tiene sus usos optimos y los que no o son. Como todo lo que hacemos las personas.
Vuelvo a citar el texto original, sin recortes: For the vast majority of problems out there, I state that C++ provides no significant downsides and a number of significant improvements. Bold? Some people seem to think so, but it's really the case. Let's start out by clearing up a few very common C++ misunderstandings: * C++ is slower than C Wrong! Many C programs are valid C++ programs as well - and such a C program should run at identical speed when translated with either the C and with the C++ compiler. * C++ specific features give overhead Wrong! The so-called overhead introduced by certain C++ specific features (such as virtual function calls or exceptions), is comparable to the overhead you yourself would introduce should you choose to go thru the pain it would be to implement a similar feature in C. * C++ is object oriented Wrong! The C++ language contains some language extentions over C, that make object oriented programming and generic programming more convenient. C++ does not force object oriented design anywhere - it merely allows for it if the programmer deems OO feasible. C allows for object oriented programming as well, C++ only makes it simpler and less error prone. So, if you believe me, we have established that "C++ is not significantly worse than C". Let's have a look at what it is that makes C++ a better C: * Stronger typing The type system in C++ is stronger than in C. This prevents many common programming errors - coupled with the next very important feature, the stronger type system even manages not to be an inconvenience. * Parameterized types The template keyword allows the programmer to write generic (type-agnostic) implementations of algorithms. En los primeros años del desarrollo del kernel Linux, no había ningun compilador C++ de GNU, así que forzosamente debían hacerlo en C. Hoy en dia la situación ha cambiado en cuanto a compiladores para C++, pero por inercia, continuan con C a secas. No se si realmente los craneos del kernel Linux, se habran tomado la molestia de estudiar el C++, y hacer las evaluaciones correspondientes. Por otro lado, con la cantidad de lineas de codigo que tiene el kernel linux, ponerse a reescribirlo, sería como desarrollar un kernel nuevo desde cero. Y eso solamente lo puede hacer alguien que conozca al dedillo los fuentes del kernel, al igual que la programación en C++, y le sobre mucho tiempo. Podras ver, de acuerdo con las lineas anteriores, que el kernel Linux no está escrito en C, porque el ejecutable sea mas rapido que el escrito en C++, sino por otras razones completamente ajenas a eso. Por otro lado, pasate por alto el hecho de que algunos programas (o kernel) hechos en C, si no estan bien depurados, tienden a tener problemas con el uso de memoria, ya que no limpian la memoria una vez que ha sido usada, cosa que rara vez sucede en C++, y que ademas el codigo escrito en C++, ademas de tener la tercera parte de la cantidad de lineas, se presta menos a los errores de tipeo. Slau2 -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org