Welcome to Stratos!
C# es de Microsoft. (Esto mismo por si solo ya deberia ser un inconveniente, porque Microsoft es especialista en hacer APIs terrorificas, vease la infumable Win32 o DirectX que se tira a la basura en cada version para hacerse de nuevo).
En cuanto a lo de la velocidad, no se como es en C#, pero mirando el ejemplo de Java (lenguaje en el cual C# está inspirado), los problemas de velocidad venian aparte de por lo de la maquina virtual, por el garbage colector, la forma en que se manejan los objetos y las inicializaciones que hace siempre en los miembros de una clase. Se pueden declarar objetos en la pila en C#? como es el manejo de memoria? incializa cosas sin que tu se po pidas?
Por otra parte hay gente en este post que ha citado que C# es mas moderno que C++ y que tiene cosas que C++ no tiene, me gustaria ver ejemplos de esto, porque que yo sepa hasta hace poco no tenia ni templates.
pero cuando defines un método dentro del cuerpo de una clase es necesariamente un método "inline" y a veces uno no desea que esto sea así
"prop" es sin duda una variable del objeto "obj", en C# se podría estar invocando un método con parámetro 10, de modo que podríamos realizar verificación de rangos o si lo deseamos podríamos establecer que "prop" sea read-only o write-only (algo imposible en C++).
El hecho de ser multiplataforma para el caso de juegos es muy relativo, si hago mi juego en C++ para Windows (con OpenGL si quieres) no compilará en PS2 ni en GameCube ni en XBOX porque ninguna de ellas posee OpenGL. En todo caso necesitaré de una librería tipo RenderWare.
De hecho, recientemente ha salido al mercado un juego AAA de estrategia en tiempo real creado en C#.
Y si respecto a multiplataforma te refieres a otros sistemas operativos ¿Para que quisiera que mi juego corriese en Linux, Solaris, Digital Unix y Mac? Son plataformas prácticamente inexistentes en el ámbito gamers.
Por otro lado, aunque hagas tu juego en Java el mismo no podrá ejecutarse en ninguna consola, ya que no cuentan con JVMs y aunque encuentres el modo de hacerlo ¿a que velocidad piensas que lo hará? ¿porqué no intentas hacer algo similar a Haddd pero en Java para que comparemos velocidades? ses.gifCitarNadie ha propuesto hacer juegos en java para consolas. En mi post anterior ponia Java como lenguaje ideal patra hacer aplicaciones empresariales sobre todo relacionadas con la web.
Nadie ha propuesto hacer juegos en java para consolas. En mi post anterior ponia Java como lenguaje ideal patra hacer aplicaciones empresariales sobre todo relacionadas con la web.
Por que no lo nombras?
Cada uno en su campo, C++ y Java son superiores a C#. Todas esas ventajas que habeis citado tambien las tiene Java, y es multiplataforma, de hecho Microsoft invento C# porque sun les denunció cuando los entornos para Java de Microsoft empezaban a añadir extensiones y a pervertir el lenguaje. Con lo cual me planteo 2 posibilidades:a) Quiero hacer unha aplicacion empresarial, en la que la velocidad me da igual, y lo que me importa es el tiempo y coste de desarrollo. Elijo Java. No le veo ninguna ventaja a C# sobre este. Java es mas abierto que C#, porque aunque es de Sun en principio, hay muchos mas fabricantes implicados y que tienen voz y voto. No me vendo a Microsoft, cosa que es importante si tengo una empresa, no estar dependiendo de un solo fabricante y puedo tener ordenadores diferentes SOs. Java es multiplataforma, se puede hasta programar para moviles.B) Quiero hacer una aplicacion con gráficos en tiempo real, donde lo que importa es la velocidad. Elijo C/C++. C# es mas lento y no es portable. Y a lo mejor quiero hacer un juego para PS2.Teniendo Java y C++ no veo razon para usar C#, porque estos dos lenguajes son superiores en sus respectivos campos. Soy consciente de que siendo el buque insignia de Microsoft nos lo van a meter hasta en la sopa, pero se usará porque es de microsoft no porque el producto sea mejor, como ha pasado miles de veces.- No me voy a poner a defender que se hacen interfaces graficas en C++ mejor que en C# o Java, porque no es cierto, aunque usando librerias como wxwindows se hacen de forma aceptablemente facil. Este es un campo en lo que prima es el tiempo y costes de desarrollo y C++ no es lo ideal, ya que es un lenguaje muy dificil que exige gente muy preparada, C# y Java son aptos para un abanico mucho mas grande de programadores. - Del mismo modo no acepto que C# o Java son mejores que C++ para aplicaciones de tiempo real, porque la velocidad es crucial aqui y es evidente que C++ es sustancialmente mas rápido y esto no va a cambiar en un futuro, porque cuando haya mejores maquinas con estas los programas C++ iran aún mas rapido y hay cosas para las que jamas habrá potencia suficiente, vease la fisica y aspectos de la IA como por ejemplo la busqueda de caminos. C++ es un lenguaje que permite el manejo de memoria a muy bajo nivel y esto es fundamental para la velocidad.Saludos.
Todas esas ventajas que habeis citado tambien las tiene Java, y es multiplataforma, de hecho Microsoft invento C# porque sun les denunció cuando los entornos para Java de Microsoft empezaban a añadir extensiones y a pervertir el lenguaje. Con lo cual me planteo 2 posibilidades:
Elijo Java. No le veo ninguna ventaja a C# sobre este. Java es mas abierto que C#, porque aunque es de Sun en principio, hay muchos mas fabricantes implicados y que tienen voz y voto. No me vendo a Microsoft, cosa que es importante si tengo una empresa, no estar dependiendo de un solo fabricante y puedo tener ordenadores diferentes SOs. Java es multiplataforma, se puede hasta programar para moviles.
Elijo C/C++. C# es mas lento y no es portable. Y a lo mejor quiero hacer un juego para PS2.
C++ es un lenguaje que permite el manejo de memoria a muy bajo nivel y esto es fundamental para la velocidad.
no comparto para nada tu opinión de Java y C# la verdad, yo he usado los dos (vengo a .NET desde Java) y si no le ves ventajas a .NET sobre Java, no se, me da que no lo has usado mucho (oye, lo mismo me equivoco).
Ya, y ASM a más bajo nivel todavía, pero nadie hace un juego entero en ASM, porque es el equivalente al suicidio ritual. Yo lo veo como una evolución: antes su usaba ASM, luego C, luego C++, y algún día le tocará palmar al C++, como a todos. Que Microsoft tenga más o menos prisa por palmarlo ya es otra cosa... wink2.gif
Citarno comparto para nada tu opinión de Java y C# la verdad, yo he usado los dos (vengo a .NET desde Java) y si no le ves ventajas a .NET sobre Java, no se, me da que no lo has usado mucho (oye, lo mismo me equivoco).Yo he usado mucho Java, de C# hablo por lo que he leido y por los posts de la gente en este topic. Por eso no me he centrado nunca comparar "features" de ambos.- Cierto que las interfaces con swing son lentas, pero tambien estan AWT y SWT. Para gustos hay colores. Ademas si estamos hablando de una aplicación web la interfaz ya es otra historia.- Java tiene a favor la multiplataforma, que es un hecho. Hay implementaciones de J2SE, J2EE y J2ME para multitud de plataformas y de mas de un fabricante. Hay programas serios, grandes y comerciales hechos en Java que son multiplataforma (el Matlab o el MagicDraw por poner ejemplos que he usado), nombradme alguno en C#. Me parece muy bien que .NET sea todo lo abierto que quieras pero los hechos son lo que cuentan. Java es mutiplataforma de hecho y .NET no, y esto me parece que no tiene discusion. La vida fuera del mundo Microsoft existe y C# no tiene cabida ahí.- No he usado C# para discutir si tiene mas cosas que Java, pero personalmente me he encontrado muy a gusto en Java y no he echado de menos nada importante. Los temas que comentais me parecen detalles menores mucho menos importantes que lo comentado previemente y me da la sensacion que Java y C# son muy similares.CitarYa, y ASM a más bajo nivel todavía, pero nadie hace un juego entero en ASM, porque es el equivalente al suicidio ritual. Yo lo veo como una evolución: antes su usaba ASM, luego C, luego C++, y algún día le tocará palmar al C++, como a todos. Que Microsoft tenga más o menos prisa por palmarlo ya es otra cosa... wink2.gifYo odio el ASM tanto como tu pero creo que es evidente que la diferencia entre ASM y C++ es infinitamente mayor que entre C++ y C#/Java. Comparando Java y C++ es cierto que en Java se desarrolla mas rapido, no mucho mas rapido si se sabe programar bien en C++, y desde luego no brutalmente mas rapido, cosa que si ocurre en C++ con respecto a ASM. Si en ASM se desarrolla a velocidad 1 en C++ se hace a 10 y en Java a 12 (suponiendo programadores capaces en los 3 campos y en aplicaciones que se puedan hacer con los 3).Otra caracteristica de C++ es que permite programar a muy bajo y muy alto nivel a la vez.Cierto que amaestrar a un programador de C++ es mucho mas dificil que a uno de C#/Java. Desde luego si yo tuviese una empresa no haría mis aplicaciones de contabilidad en C++.C++ es el estandar para graficos en tiempo real hoy en dia, y no veo cerca el dia que C# lo reemplace en este ambito. Cierto que hubo un dia en que C++ se usaba para todo y esto está cambiando, pero este es un reducto en que veo dificil que C++ desaparezca a corto plazo, recordemos que el quake3 aun estaba en C.Saludos.
- Cierto que las interfaces con swing son lentas, pero tambien estan AWT y SWT. Para gustos hay colores. Ademas si estamos hablando de una aplicación web la interfaz ya es otra historia.
Java es mutiplataforma de hecho y .NET no, y esto me parece que no tiene discusion.
No he usado C# para discutir si tiene mas cosas que Java, pero personalmente me he encontrado muy a gusto en Java y no he echado de menos nada importante.
y me da la sensacion que Java y C# son muy similares.
Comparando Java y C++ es cierto que en Java se desarrolla mas rapido, no mucho mas rapido si se sabe programar bien en C++
Hay programas serios, grandes y comerciales hechos en Java que son multiplataforma (el Matlab o el MagicDraw por poner ejemplos que he usado), nombradme alguno en C#
The RealmForge GDK runs on any operating system that the .NET Framework can be installed on: these include Windows 98, ME, 2000, NT, and XP. The RealmForge GDK can also be run on nearly all popular operating systems including Windows, Linux, Solaris, FreeBSD, HP-UX, and MacOS X when Mono is installed. Mono allows applications written in any of the countless .NET languages including C#, J#, and VB.NET to run on any platform. Similar to Java, the same build can be distributed to an run on any of these operating systems making it cross-platform interoperable. This is as opposed to the hacked support for different platforms that is accomplished in projects written in native languages like C++. This requires the maintenance of different builds and distributions for each platform specific considerations for each and every targeted platform by way of countless ifdef statements. Alternatively, .NET languages adhere to the philosophy of write once, run anywhere.
At the moment there are a couple extra steps that are required to use OpenGL and SDL instead of DirectX. Also the current version of RealmForge has not been tested on non-windows platforms yet, though Axiom has been successfully run on Linux.