Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





.net, Managed C++, Managed Directx ¿?

Iniciado por TheAzazel, 31 de Julio de 2005, 05:18:15 PM

« anterior - próximo »

TheAzazel

 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!

Vicente

 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

TheAzazel

 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

Vicente

 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

ethernet

 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.

shephiroth

 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

zupervaca

 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 ;)

Haddd

 Recordad que con C# también se pueden utilizar punteros en modo unsafe  :lol:


tamat

 yo tengo una duda:

Si programo en C++ managed pero unsafe, ese codigo es portable? (multiplataforma etc)
Por un stratos menos tenso

_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.

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....

NeLo

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!
Drowning deep in my sea of loathing

TheAzazel

 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???

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!!

TheAzazel

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?






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.