Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: TheAzazel en 31 de Julio de 2005, 05:18:15 PM

Título: .net, Managed C++, Managed Directx ¿?
Publicado por: TheAzazel en 31 de Julio de 2005, 05:18:15 PM
 Soy un inculto en todo el rollo este nuevo del .Net y el managed x o y.

A muy grandes rasgos se que todo el .net es en cierto modo parecido al java... lo que no se, es q utilidad tiene y pq microsoft esta invirtiendo tanto en ello, antes ya estaba java y encima realmente multiplataforma...pq el .Net mientras no hagan el Mono ese para linux y para demas sistemas lo que corresponda...se queda en Windows....

me gustaria, vosotros q os habeis pegao con estas cosas, que explicarais un poco eso del .Net y el managed C++ y movidas de esas... por ahora solo se, q el .net framework seria mas o menos como una maquina virtual java... pero no se por y ni para que.....

enga, q seguro q como yo hay mucha gente interesada....

y gracias!
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: Vicente en 31 de Julio de 2005, 05:57:56 PM
 Hola,

a ver, .NET es una nueva tecnología de Microsoft, que como bien dices, tiene muchas similaridades con Java. Está orientada sobre todo a entornos web (arquitecturas SOA) y es una plataforma donde se desarrolla muy rápido (garbage collection, gran librería de clases, etc etc).

Que sea multiplataforma o no, supongo que a Microsoft no le importa demasiado, aunque mono excepto por WinForms tiene todo lo demás bastante bien portado, y verás que hay muchisimos proyectos para Linux de .NET (Mono), así que aunque no fue multiplataforma en su lanzamiento, ya casi que lo es. Y lo que si es, es multilenguaje: tu puedes hacer una clase en VB.NET, heredarla en C#, y luego heredar de esta segunda en Managed C++. Hay muchos proyectos para mover lenguajes al framework de .NET (Delphi por ejemplo parece que funciona muy bien en .NET ya, Borland ha currado mucho con eso).

Porque Microsoft invierte mucho en ello pues supongo que es como todo: comerse el mercado. Igual que los SO, los navegadores, las consolas, etc etc.

Como también dices el Framework es el equivalente a la VM de Java.

Respecto a Managed C++ no comento nada, porque no lo conozco. El lenguaje .NET por excelencia es C# y es en el que más se vuelca Microsoft. C# es su versión de Java. También invierten mucho en Visual Basic .NET (porque la comunidad de gente que programaba en VB6 es inmensa, y no van a perder a tantos programadores cambiando la plataforma de desarrollo, serían tontos...).

Respecto a .NET vs JDK (J2EE): las dos librerías de clases son muy completas y traen mogollón de cosas. No me voy a meter mucho porque la J2EE la conozco bien poco. Aunque me quedo con el Framework .NET 2.0 frente a la JDK 5.0.

Respecto a C# vs Java, en mi OPINION PERSONAL, C# le da tortas a Java por todos los lados. Se nota que es un lenguaje mucho más moderno, que ha copiado lo bueno de Java (y C++) y lo que no era bueno lo han corregido y mejorado (o añadido funcionalidad nueva). Es como si ahora sacara Sun un Java nuevo, pues seguramente sería mejor que aquel java que diseñaron hace más de 10 años ya  (creo no?).

La versión de DirectX par usar con .NET se llama Managed DirectX (casi todo lo que se usa sobre .NET le han puesto eso de Managed).

Y no se, poco más se me ocurre ahora. Tu pregunta lo que quieras (o lo que no quede claro). Lo mismo hay alguna metedura de gamba en el post, espero que no.  Un saludo!

Vicente
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: TheAzazel en 31 de Julio de 2005, 10:07:48 PM
 uhmm.. pero ya antes, se podia utilizar una DLL escrita en C/C++ desde VB o desde donde quisieras.... con eso de que .Net engloba y facilita la conexion de todos esos lenguajes... q es exactamente??? mucho mas facil que usar una DLL quizas??

con respecto al managed C++... que diferencia hay con el C++ normal? tan solo que utiliza .Net? y como escribes un managed C++ o un C++ de toda la vida?

lo demas, me ha servido para situar un poco todo el cacao de nombrecitos jeje
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: Vicente en 31 de Julio de 2005, 10:29:37 PM
 Hola,

tu antes podías usar una DLL desde otro lenguaje, igual que usar C desde Java por ejemplo (o supongo), pero supongo que tendría algo de jaleo, no se. La cosa es que en .NET para ti es todo transparente. No hay que hacer nada raro, tu puedes tener en la misma solución proyectos en varios lenguajes y mezclarlos sin ningún problema y sin necesitar hacer cosas raras. Al heredar de una clase tu no te preocupas de en que lenguaje se escribio la clase, tu heredas y fin, luego como todos los lenguajes compilan al mismo código intermedio pues solucionado. No se si esas cosas se pueden hacer con DLLs... .NET también soporta llamar a DLLs (por ejemplo en Haddd se usa para llamar a la física que es con Newton), COM, ActiveX,...

Respecto a lo de Managed C++, supongo que sería C++ .NET, usease, usando la librería de clases de .NET en vez de las librerías standard de C++, sin punteros (en teoría), con garbage collector,... Para escribir código en Managed C++ pues puedes usar el Visual Studio 2003 o la beta del Visual 2005. No se si habrá otros editores (para C# tienes el SharpDevelop que es Open Source, y no se como va el curro en el MonoDevelop).

Un saludo!

Vicente
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: ethernet en 31 de Julio de 2005, 10:37:19 PM
 Yo he estado haciendo cosas con managed C++ y es una gozada. Tienes todo el API a tu disposición, incluído windows forms con su editor. Con él haces aplicaciones  en un periquete y salvo cosas nuevas como que hay clases administradas y no administradas que al principio es un tostón, es igual que el C++ de toda la vida.
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: shephiroth en 01 de Agosto de 2005, 12:23:05 AM
 Wenas, no soy muy ducho yo en esto, asi q si me equivoco que alguien me corrija rapidamente xDD

Solo quería comentar que arriba alguien preguntaba diferencia entre el managed c++ y el c++ de toda la vida. No lo sabría explicar pq no se mucho lo q conlleva (demomento yo continuo con mi c++ de toda la vida xDD), pero aqui te pongo una diferencia codeando las clases:

En c++ de toda la vida harías:

class pepito{...}
pepito miHijo;
pepito *suHermano;


En managed c++ tendrías:

__gc class pepito{}
pepito miHijo;
pepito *miHijo;


Realmente no se q conlleva ni mejoras ni nada.....como ya dije sigo en mi c++ de toda la vida xDD
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: zupervaca en 01 de Agosto de 2005, 01:01:34 AM
 si vas a utilizar .net con lenguaje administrado lo mejor es usar el c-sharp sin duda que es el lenguaje que se diseño expresamente para el, para los demas lenguajes han hecho "chapucillas" para no perder todos los programadores que los usan, c++ managed es un lio, los punteros como los conocemos dejan de existir ya que el gc no podria controlarlos, yo tambien cuando programo en c++ lo sigo haciendo con el de toda la vida ya que tener el control total de lo que se esta haciendo da muchas ventajas, no obstante con las funcionalidades que dan con el api de .net los punteros rara vez se hechan en falta y es que te lo dan todo montado y listo ;)
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: Haddd en 01 de Agosto de 2005, 10:10:58 AM
 Recordad que con C# también se pueden utilizar punteros en modo unsafe  :lol:

Título: .net, Managed C++, Managed Directx ¿?
Publicado por: tamat en 01 de Agosto de 2005, 03:26:52 PM
 yo tengo una duda:

Si programo en C++ managed pero unsafe, ese codigo es portable? (multiplataforma etc)
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: _Grey en 01 de Agosto de 2005, 03:32:59 PM
 Otra duda mas, lo del entorno .Net y sus comparaciones con Java, no vienen por que el codigo no esta compilado 100% a codigo maquina y .Net lo termina optimizando a la maquina que tengas?

Saludos.
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: TheAzazel en 01 de Agosto de 2005, 05:14:40 PM
Cita de: "_Grey"Otra duda mas, lo del entorno .Net y sus comparaciones con Java, no vienen por que el codigo no esta compilado 100% a codigo maquina y .Net lo termina optimizando a la maquina que tengas?

Saludos.
hay algo por ahi que creo que optimiza una vez el codigo para tu maquina (es lento, por eso se guarda y se ejecuta una vez), supongo q si cambia de maquina volvera a ejecutarse....
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: NeLo en 01 de Agosto de 2005, 06:49:41 PM
Cita de: "TheAzazel"
Cita de: "_Grey"Otra duda mas, lo del entorno .Net y sus comparaciones con Java, no vienen por que el codigo no esta compilado 100% a codigo maquina y .Net lo termina optimizando a la maquina que tengas?

Saludos.
hay algo por ahi que creo que optimiza una vez el codigo para tu maquina (es lento, por eso se guarda y se ejecuta una vez), supongo q si cambia de maquina volvera a ejecutarse....
Hay varias posibilidades de optimización.

jitter normal: Es el que se suele usar por defecto, y sólo compila el código MSIL a código nativo a medida que va siendo necesario, pues así se ahorra tiempo y memoria al evitarse tener que compilar innecesariamente código que nunca se ejecute. Para conseguir esto, el cargador de clases del CLR sustituye inicialmente las llamadas a métodos de las nuevas clases que vaya cargando por llamadas a funciones auxiliares (stubs) que se encarguen de compilar el verdadero código del método. Una vez compilado, la llamada al stub es sustituida por una llamada directa al código ya compilado, con lo que posteriores llamadas al mismo no necesitarán compilación.

jitter económico: Funciona de forma similar al jitter normal solo que no realiza ninguna optimización de código al compilar sino que traduce cada instrucción MSIL por su equivalente en el código máquina sobre la que se ejecute. Esta especialmente pensado para ser usado en dispositivos empotrados que dispongan de poca potencia de CPU y poca memoria, pues aunque genere código más ineficiente es menor el tiempo y memoria que necesita para compilar. Es más, para ahorrar memoria este jitter puede descargar código ya compilado que lleve cierto tiempo sin ejecutarse y sustituirlo de nuevo por el stub apropiado. Por estas razones, este es el jitter usado por defecto en Windows CE, sistema operativo que se suele incluir en los dispositivos empotrados antes mencionados.
Otra utilidad del jitter económico es que facilita la adaptación de la plataforma .NET a nuevos sistemas porque es mucho más sencillo de implementar que el normal. De este modo, gracias a él es posible desarrollar rápidamente una versión del CLR que pueda ejecutar aplicaciones gestionadas aunque sea de una forma poco eficiente, y una vez desarrollada es posible centrarse en desarrollar el jitter normal para optimizar la ejecución de las mismas.

prejitter: Se distribuye como una aplicación en línea de comandos llamada ngen.exe mediante la que es posible compilar completamente cualquier ejecutable o librería (cualquier ensamblado en general, aunque este concepto se verá más adelante) que contenga código gestionado y convertirlo a código nativo, de modo que posteriores ejecuciones del mismo se harán usando esta versión ya compilada y no se perderá tiempo en hacer la compilación dinámica.

Saludos!
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: TheAzazel en 02 de Agosto de 2005, 12:46:37 PM
 madre mia, menuda panzada a currar que se ha pegado mocosoft con todas estas historias... vamos, que ahora los lenguajes nuevos del net o los antiguos pero en formato "managed" generan un codigo distino, ademas de sus versiones normales generar codigo x86... ahora tambien generan codigo MSIL... y luego a su vez, el jitter que compila de esas formas a codigo nativo....

yo sigo sin entender la cuestion basica...a donde va todo esto? porque tantas complicaciones? podria reducirse todo a la tipica estrategia de mocosoft... complicar todo dando alguna ventajilla pero con el objetivo principal de kitarse a la competencia...

creo que al C/C++ de toda la vida... no lo van a desbancar en mucho tiempo... seguire de cerca el desarrollo de .net pero por ahora... ni tocarlo :P

y con tanto rollo del windows vista y sus increibles requeremientos de sistema para hacer lo mismo que el XP, cada vez, el mundo Linux esta mas cerca o porque no...Mac q ahora sera x86 jeje

conclusion...a donde vamos a ir a parar???
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: Haddd en 02 de Agosto de 2005, 12:48:14 PM
 Creo que si programas para el nuevo Windows Vista, todo tiene que ser managed. Seguramente eso no será así, pero seguro que empiezan a aparecer montones de pegas y que tarde o temprano desaparecerá la opción de no hacer las cosas managed.

Y sinceramente, si no has progrmado en .net no sabes lo que te pierdes porque eso sí es productividad!!
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: TheAzazel en 02 de Agosto de 2005, 01:12:40 PM
Cita de: "Haddd"Creo que si programas para el nuevo Windows Vista, todo tiene que ser managed. Seguramente eso no será así, pero seguro que empiezan a aparecer montones de pegas y que tarde o temprano desaparecerá la opción de no hacer las cosas managed.

Y sinceramente, si no has progrmado en .net no sabes lo que te pierdes porque eso sí es productividad!!
puf... me imagino que sera como has dicho... no tiene sentido que microsoft invierta tanto en .net y luego en vista y no sea por un interes comun....

a mi es que esto de tener q reprogramar todo me da un poco mucho por saco... si me hacen eso... me obligaran a cambiar de OS y utilizare el winXXX solo para jugar y aplicaciones....

ojala se acuerden de todos los programadores C/C++ y demas... y nos dejen seguir nuestra vida de forma paralela a sus movidas de .net jejeje

con productividad..te refieres a q es mucho mas rapido programar no?
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: Haddd en 02 de Agosto de 2005, 01:22:42 PM
 No es que sea más rápido programar, sino que con mucho menos código ahces más cosas y tienes menos problemas..Además tienes muchas más librerías, pero muuuuchas, disponibles, muy probadas y pensadas todas con la misma filosofía y estrucutra...¿Qué más quieres?
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: TheAzazel en 02 de Agosto de 2005, 01:30:35 PM
 jeje, que fuera multiplataforma total :P
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: zupervaca en 02 de Agosto de 2005, 03:39:02 PM
 por parte de microsoft no lo esperes, pero como el c-sharp es libre lo haran otras personas
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: Vicente en 02 de Agosto de 2005, 03:39:55 PM
 Hola,

para el multiplataforma excepto por Windows.Forms creo que casi todo funciona (tampoco he mirado a fondo mono, pero eso parece). Respecto a C/C++/C#, en mi opinión personal C/C++ se quedarán para cosas de más bajo nivel (por ejemplo, Windows Vista que en un principio iba a ser sobre .NET al final muchas cosas no lo son y están escritas en C o C++), mientras que para aplicaciones de alto nivel se quedarán lenguajes de desarrollo más rápido (C#/Java).

Son lenguajes que como dice Haddd son más productivos: traen una librería de clases que hace casi todo lo habido y por haber, te evitan muchos dolores de cabeza (los punteros y la memoria dinámica tan muy bien, pero también dan muchos problemas),... Tendrán un rendimiento inferior, pero se hacen las cosas más rápido. Para las aplicaciones que requieran utilizar hasta la última gota de potencia de un PC pues no se utilizarán, pero la mayoría de las aplicaciones normales no requieren llegar a esos niveles (y que el rendimiento de este tipo de lenguajes no es tan malo como se cree).

Y también creo que pasará lo que dice Haddd en Windows Vista: poco a poco se van a ir comiendo lo que no sea Managed (y safe).

Un saludo!

Vicente
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: TheAzazel en 02 de Agosto de 2005, 04:50:46 PM
 Uhmm..... yo quizas pienso mas a lo retro jeje.
Vereis, todo el desarrollo este esta muy bien, digamos que es The way to go. Pero... no tiene porque deshecharse lo anterior...
De hecho, cuanta gente no ha anunciando la muerte del C/C++ anteriormente? q si ahora viene VB, q si ahora viene Java, q si ahora viene XYZ... no se. Cada cosa para lo que es.
Hay que usar las cosas con sentido comun, a nadie en su sano juicio se pone con una aplicacion de gestion y ensamblador o unos drivers de video en visualbasic. Hasta ahora, C/C++ se ha utilizado para drivers, juegos y aplicaciones que requerian velocidad, pero ahora mismo sucede algo... los juegos evolucionan a 3D, el mayor peso cae sobre la grafica...la CPU sigue siendo necesaria pero pierde fuelle en ese campo luego.... quizas ahora, gracias a las graficas(y no especificamente porque haya salido un mega lenguaje) sea mas rentable utilizar otra tecnologia.

Ejemplo practico: haddd engine. Esta en C# y se ejecuta bastante bien luego... si es un lenguaje comodo(segun decis eh? q yo no me he puesto con el, he hecho cosillas y apanos y lo dificil es encontrar lo q quieres...no el como hacerlo jeje) y el peso grafico cae en la grafica....ya no importara tanto si C# es tan rapido como C (que no lo es) justo pq la grafica se come todo el marron y las cpu actuales son una bala..hace tiempo q el hardware vencio al software :) , quizas no en todos los aspectos, pero si en casi todos je.

Ahora, lo q me joroba es la IMPOSICION de cambiar de lenguaje, es un caso teorico pero lo q habeis dicho tiene su logica y personalmente, me lo creo. Me hubiera gustado mas(lo mismo aun sucede) q fuera una evolucion logica de C++, tal y como este lo fue de C, digamos algo asi como un C+++ compatible hacia atras con el resto. Digamos q asi, puedes estar al nivel q quieras y C# no me vale, q sea de microsoft ya no me gusta mucho, q sea MONOplataforma tampoco...q tenga sintaxis distanta tampoco y que, su estructura sea un poco rara tampoco (lo mismo ya os habeis acostumbrado...pero a mi me gustaria ver mi codigo con mis ficheritos y el resto...q quede oculto) y en definitiva, sigue siendo algo personal, me gusta el C/C++, estoy acostumbrado a el y puedo hacer de todo y solo espero q siga siendo asi durante mucho tiempo. La diferencia para mi quizas sea q ciertas cosas, en vez de hacerlas con delphi o VB...las hare con C# q es mas parecido a C y el aprender no ocupa lugar jeje

q pedazo de thread mas constructivo...espero q sigais posteando rica informacion q digerir :)
Título: .net, Managed C++, Managed Directx ¿?
Publicado por: Vicente en 02 de Agosto de 2005, 05:30:01 PM
 Hola,

ta claro que C/C++ no van a desaparecer (igual que existe aun ensamblador para algunas cosas). Respecto a la imposición, ten en cuenta que aunque el nombre es C#, C# tiene mucho más que ver con Java que con C++, porque igual que Microsoft ha sacado VB.NET para no perder a la gente de VB6, el objetivo de C# (en mi opinión) es ganarse a los desarrolladores de Java (se desarrolla creo mucho más para empresas en Java que en C++). Por eso puede que a ti te parezca más "raro" en sintaxis y similares, pero para la gente de Java (yo pasé a C# desde Java) la transición es muy suave. Respecto a lo de mono plataforma en serio, mirate esto:

Proyecto Mono

Si buscas en internet verás que hay muchisimos proyectos para .NET sobre linux, con lo cual supongo que aunque no sea multiplataforma 100%, algo si ;)

Lo del codigo, los ficheritos y el oculto no lo entiendo  :blink:

Un saludo!

Vicente