Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





C vs C++ (u oop vs estructurado)

Iniciado por fjfnaranjo, 15 de Marzo de 2007, 12:11:18 PM

« anterior - próximo »

fjfnaranjo

Tras la intervención que hice en otro post, he estado investigando un poco y haciendo mis propias pruebas sobre este tema.

De todas las webs que he encontrado, la que da una información más apañada para el caso es la siguiente:

  http://unthought.net/c++/c_vs_c++.html

Si estais interesados, es una lectura muy buena (pero esta en inglés).

De esta página web se deducen una idea importante, referente al asunto "C vs C++ (u oop vs estructurado)".

  - C++ no es un lenguaje orientado a objetos, si no que da la posibilidad de programar con objetos. Por lo tanto, C++ no fuerza la utilización de objetos, y si no se usan, el consumo asociado a estos no se suma. Asi que si búscamos eficiencia evitando el uso de características de c++, podemos programar en c++ directamente sin usarlas.

CONCLUSIONES (que me aplicaré a mi mismo en el futuro):

1 - Mandar C a tomar por saco definitivamente y usar C++...
2 - Utilizar características de C++ (oop, templates, exceptions) o no usarlas cuando los algoritmos planteados así lo requieran, considerando siempre que esten bien diseñados y analizados.
3 - Procurar siempre seguir un control intensivo sobre las interfaces que diseñamos para que puedan ser manejadas desde C o C++ (hay muchas cosas hechas ya en C y sería un error ponerse a actualizarlo todo).


Java, C#, Makers... eso es otra guerra, aquí estoy hablando de los 2 Gigantes, y de 2 métodos de diseño de algoritmos, no nos vayamos por ahi que desvariamos ...

En fin, si alguien ha leido el artículo podría dar su opinión por aquí.

Saluditos.

PDT: A mi me va el diseño, asi que si la lio no me hago responsable :P
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)


Pogacha

Bueno, creo que todos los que estamos en C++ es por que en realidad nos aprovechamos de eso.
Para todo lo que no requiera optimización trabajamos en el mas alto del nivel del lenguaje y para lo que lo requiera nos bajamos a C o incluso hace unos años se iba hasta ensamblador.
Saludos.

AK47


MrK


Vicente

Si solo vas a trabajar sobre windows usa C# que va bastante mejor que Java (si es solo para Solaris usa Java y si necesitas multiplataforma depende).

Prompt

Cita de: "Pogacha"Bueno, creo que todos los que estamos en C++ es por que en realidad nos aprovechamos de eso.
Para todo lo que no requiera optimización trabajamos en el mas alto del nivel del lenguaje y para lo que lo requiera nos bajamos a C o incluso hace unos años se iba hasta ensamblador.
Saludos.

Hoy en día es muy importante trabajar con ensamblador para optimizar código que se ejecuta bastantes veces en cada proceso del motor de juego.

Como por ejemplo la multiplicación de matrices, etc... es realmente importante leer articulos sobre x86 o x64 sobre estas cuestiones.

Mi experiencia me dice, que trabajar con OOP y ensamblador en C++ es lo más normal en nuestra industria. Sueles usar OOP y cuando necesitas un rendimiento extremo utilizas ensamblador.

Por otra parte si miras el código fuente de quake3, ves como programan en estructurado y ensamblador y solo cuando es estrictamente necesario utilizan OOP. Esto... da un alto rendimiento como todos los que hemos jugado a los juegos de Id o usado su motor hemos podido comprobar.

Aunque puede que esto último hoy en dia sea más por ser muy friki! programar en OOP da muchas ventajas aunque pierdes rendimiento ( teorico ).

Saludos a todos :)


MrK

Cita de: "Vicente"si necesitas multiplataforma depende.

cierto, depende de si quieres que sea multiplataforma o no :)

Vicente

Cita de: "MrK"
Cita de: "Vicente"si necesitas multiplataforma depende.

cierto, depende de si quieres que sea multiplataforma o no :)

No creo que C# y TAO tengan nada que envidiar a Java + loquesea sobre Linux ;) Y como supongo que a mi no me crees, pues te vas a la página de TAO y aprendes un poco :)

http://www.taoframework.com/Home


MrK

Cita de: "Lex"Es que todos sabemos que Mono Project no existe, es solo una loca fantasía de esos malditos invasores adoradores del Windows que quieren ensuciar linux XD

A ver. yo puedo, salvando problemas tecnicos, escribir un interprete de .net
para spectrum teniendo la certeza que no vendra un dia microsoft y me va a
patear el culo? que yo sepa, no. Cosa que si que puedo hacer con LUA (por
poner un ejemplo). Pues sinceramente, no me parece que eso sea multiplataforma
porque el dia que microsoft quiera cerrar el grifo, lo hara. Pero bueno, por
suerte microsoft no es una de esas empresas que se caracterizan por
hacer este tipo de cosas xDDD

a mi no me preocupan(en el caso que lo usara, claro) las implementaciones, sino
la licencia que hay detras, y que un dia pueda usar un programa que me guste
mucho y al dia siguiente para hacerlo tenga que cambiar de operativo.

Vicente

Pues estas muy mal informado ;) Sí puedes implementar el estandar de .NET porque está liberado. Nada puede evitar que nadie lo coja y lo implemente. Es cierto que MS podría decidir no liberar próximas versiones (pero al menos hasta la 3.5 no va a ser el caso porque ya están en proceso). Pero lo que ya está liberado ya está liberado (aplicate este mismo cuento con SUN, que si no es por .NET no liberan Java y si que te podrían haber jodido sin problemas).

Y si aún así piensas que con lo del acuerdo de MS y Novell hay una conspiración oculta para hundir a la gente que usa mono, usa dotGNU. Mira, copio y pego:

"#  DotGNU Portable.NET, an implementation of the Common Language Infrastructure (CLI), more commonly known as ".NET", includes everything that you need to compile and run C# and C applications that use the base class libraries, XML, and Systems.Windows.Forms. Currently supported CPUs: x86, ppc, arm, parisc, s390, ia64, alpha, mips, sparc. Supported operating systems: GNU/Linux (on PCs, Sparc, iPAQ, Sharp Zaurus, PlayStation 2, Xbox,...), *BSD, Cygwin/Mingw32, Mac OS X, Solaris, AIX."

"DotGNU is part of GNU and thereby protected from coming under the control of any single company."

Aunque el precio que te tocaría pagar por no fiarte es que dotGNU va bastante más retrasado que Mono...

Pues eso, buscate un argumento mejor ;) Un saludo!

Vicente

Fran

Varias cosas.

Alguien podría explicarme brevemente y para idiotas (no estoy para pensar) ¿q es Tao? Un enlace para usar OpenGL y algunas otras librerias en NET?

Vicente esta va para ti.¿Sabes donde puedo encontrar las especificacones liberadas de NET 3.5??

Mono es un poco contrasentido para el espiritu de los Linuxeros ¿no? Son todos AntiMS y van a permitir correr o programar en un invasor??

fjfnaranjo

CitarAunque puede que esto último hoy en dia sea más por ser muy friki! programar en OOP da muchas ventajas aunque pierdes rendimiento ( teorico ).

Pues esto es lo que yo pensaba al principio, que el rendimiento se notaba, pero es que resulta que no ... (y debido a esto cree el post y puse el link)

De todas formas todo depende de la técnica y el algoritmo, lo que yo venía ha decir es que usar c es innecesario, puedes usar c++ sin tocar nada de oop y te va hasta mejor.

Y ya que bajas niveles para hacer operaciones más rápido, te bajas hasta ASM sin pasar por C (o como mucho usas c++ sin tocar la oop).

Y por cierto, hay que ser muy pero que muy genio para programar en ASM mejor que un compilador, que por muy práctico que lo veamos los compiladores lo hacen mejor que nosotros (salvo excepciones). Y con respecto a las operaciones con matrices y operaciones relacionadas con el mundillo de los videojuegos, la mayoría de las gráficas ya te las hacen por hardware (y ojalá el OpenGl triunfe y empiecen a desarrollar interfaces y APIs cada vez mejores, porque muchas de estas optimizaciones por hardware se quedan sin uso ... )
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.