Java VS C#, No lo creo, Son lo mismo pero...

Iniciado por LastDragon, 26 Abril 2006, 01:04 AM

0 Miembros y 2 Visitantes están viendo este tema.

LastDragon

Cita de: X.Cyclop en 26 Abril 2006, 20:54 PM
Cita de: LastDragon en 26 Abril 2006, 20:47 PM
Por ejemplo

C es ineficiente para cambiarse de plataforma.. del 100% del codigo hay que reescribir aveces hasta el 85% y aveces mas para reimplementar un programa en otro procesador y/o OS
Entonces según tú C no es portable. :huh:


Que esto, ¿lo estas haciendo a proposito?

Yo creo qeu aunque aveces se me va algun teclaso o tengo alguna que otra falta de ortografia. lo que escribo semanticamente es comprensible.

Ahi no dice por ningun lado que C no sea portable. Dice que es ineficiente para ese hecho, obvio lo estoy comparando con C#

Xciclop tenemos un problema de semantica, hay que hacer algo al respecto

Casidiablo

Cita de: LastDragon en 26 Abril 2006, 20:47 PM
La idea del .NET no se trata de un lenguaje.. C# es el insignia, sin emargo .NET no es C#

¿Podrías explicar esto? Es que no entiendo muy bien y me interesa bastante. Igual me pongo a buscar ya mismito :D

Saludos!!!

JuszR

Pero estás diciendo que C es ineficiente para cambiarse de plataforma.. del 100% del codigo hay que reescribir aveces hasta el 85% y aveces mas para reimplementar un programa en otro procesador y/o OS.

Por eso digo, que según tú, C no es 100% portable. Si fuera portable compilas en Windows/Linux/BSD igual, sin cambiar NADA de código.
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]

LastDragon

Cita de: X.Cyclop en 26 Abril 2006, 21:07 PM
Pero estás diciendo que C es ineficiente para cambiarse de plataforma.. del 100% del codigo hay que reescribir aveces hasta el 85% y aveces mas para reimplementar un programa en otro procesador y/o OS.

Por eso digo, que según tú, C no es 100% portable. Si fuera portable compilas en Windows/Linux/BSD igual, sin cambiar NADA de código.

asi es... no es 100% portable, no digo que no l osea pero simplemente el mismo codigo no siempre correra en todos lados

JuszR

¿Y qué tiene Java que compila sin mover NADA de código en cualquier OS? ¿No tiene librerías o son las mismas para todos los OS?
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]

Casidiablo

Cita de: X.Cyclop en 26 Abril 2006, 21:32 PM
¿Y qué tiene Java que compila sin mover NADA de código en cualquier OS?

La VM.

Cita de: X.Cyclop en 26 Abril 2006, 21:32 PM
¿No tiene librerías o son las mismas para todos los OS?

Tiene librerías.. pero más bien se le dice "paquetes". El hecho es que la VM se encarga de hacerlo Universal para casi todas las aplicaciones que se hagan.

Saludos!!!

LastDragon

Cita de: Casidiablo en 26 Abril 2006, 21:06 PM
Cita de: LastDragon en 26 Abril 2006, 20:47 PM
La idea del .NET no se trata de un lenguaje.. C# es el insignia, sin emargo .NET no es C#

¿Podrías explicar esto? Es que no entiendo muy bien y me interesa bastante. Igual me pongo a buscar ya mismito :D

Saludos!!!


Ok.

Para entender esto, a diferencia fundamental entre Java y .Net hay que separa el lenguaje de las VM

Java tiene una maquina virtual, La maquina Virtual de JAVA. El asunto con esta maquina virtual es que espera ejecutar archivos class que provienes de clases en archivos .java

Esto significa que la maquina virtual de java esta ligada al lenguaje java. Solo corre programas compilados del lenguaje Java.

El framework .NET es la maquina virtual de este entorno, pero el framework no esta ligado a ningun lenguaje.

framework se comporta como un sistema operativo en si mismo.. Como el Basis para los que han instalado software de SAP.

entonces el en este entendido el framework .net siendo "un tipo de sistema operativo" permite recibir y ejecutar codigo arbitrario que pueda entender.

como un procesador de IA86 ejecuta cualquier codigo IA86, framework ejecutara cualquier codigo .NET el que sea no importa de que fuente provenga.

Quienes son las fuentes.

Los lenguajes de compilacion son la fuente. Tradicionalmente un lenguaje de programacion genera codigo para un OS y Procesador especifico y hay compiladores para cada plataforma. Basicamente ahora hay un compilador para una nueva plataforma la .NET

Entonces Visual Basic.NET hace referencia a que Visual Basic en lugar de generar codigo x86 va a generar codigo para la plataforma .NET

Python.NET, Pascal.NET (Delphi.NET), ada.net, perl.net, Asp.net, Etc,Etc, Etc.NET

Si todos esos lenguajes compilan para una plataforma virtual llamada .NET significa que el framework .net puede correr el codigo generado, como un procesador de intel correria un exe comun y corriente de Windows

Entonces la similitud es que el framework traduce su plataforma .net a codigo nativo del procesador local como lo hace JAVA, pero el framework acepta cualquier programa compilado en .NET no solo JAVA

Y la ventaja para el programador cual es?

Digamos que soy un programador de python es lo unico y es lo unico que se programar.

Quiero exportar mi programa a una Sparc corriendo solaris imaginemos que en esta plataforma no existe python

consigo un compilador de python.net y mi conocimiento sobre python es lo unico que debo saber para generar un ejecutable que va a correr en esa sparc o en un Windows o una mac. No tendria que aprender nada del procesador local yo solo programaria tal como se y listo mi programa corre donde sea que haya un framework .net

Otro ejemplo

Yo solo se Visual Basic y quiero programar para Linux un programita con ventanitas y todo muy mono asi como en Windows.

Pero resulta que en Linux no tengo un compilador de VB, pues con el VB tradicional generaria codigo x86 para windows

Visual Basic.NET va a generar un codigo para framework.net que luego podre correr en Linux como si mi programa fuera nativo de esa plataforma o en MacOS, o en la Sparc

Mi conocimiento de Visual Basic sera suficiente para que yo escriba aplicaciones para arquitecturas tal vez ni conosca

Les recomiendo que si tienen dudas, vean el video de miguel de icaza el video toma mas de una hora de platica y en todo el video se explica esto de forma audio visual, imaginence si tuviera que reescribir todo para poder explicarlo con letras...

lo que escribo es el resumen de toda esa interesante platica.

En resumen

La maquina virtual de JAVA esta ligada a programas hechos con JAVA

La maquina virtual .NET no esta ligada a ningun lenguaje aunque la mayoria lo relacione con C# y es que como el C# se parece a JAVA y la maquina virtual .NET funciona similar a JAVA lo han usdo como lenguaje insignia pero no quiere decir que sea el unico lenguaje para programar en .NET

Todos los lenguajes son bienvenidos en .NET incluso JAVA

Una de las cosas mas poderosas del .NET es:
Imaginate que haces una clase en JAVA, a lo que seria JAVA.NET y desde C.net o desde Delphi.net creas un objeto que hereda de la clase hecha en JAVA. La potencia maxima del .NET es que los programas escritos en diferentes lenguajes de pronto pueden compartir codigo.

Imaginate un Python haciendo uso de una rutina JAVA o de Pascal. Cosas a ese nivel.

Podria formar un equipo de programadores y que cada programador fuera experto en su propio lenguaje. Al final el codigo de todos podria mesclarse para formar un programa que proviene de diferentes lenguajes.

Casidiablo


Muy, muy muy interesante. Luego veo el video ya que no tengo parlantes.

Saludos y Gracias!!!

JuszR

Cita de: Casidiablo en 26 Abril 2006, 22:25 PM

La VM.

Tiene librerías.. pero más bien se le dice "paquetes". El hecho es que la VM se encarga de hacerlo Universal para casi todas las aplicaciones que se hagan.

Ah. Lo malo es que cuando ejecutas una aplicación en Java el VM, solo en Windos, te pone todo muy lento. Yo a veces juego ajedrez/pool en Yahoo! y de verdad que en Windows parece todo como si tuviera 1kb de RAM, en cambio, en Linux parecería que son "applets de C++" (qué raro se escucha), porque todo va igual de rápido. ::)

¿A qué se debe esa lentitud en Windows?

Las aplicaciones en .Net no se. Nunca he probado una sola aplicación hecha en .Net para saber qué tanto influye el .Net Framework con la velocidad de la pc. :rolleyes:
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]

LastDragon

Cita de: X.Cyclop en 27 Abril 2006, 01:07 AM
Cita de: Casidiablo en 26 Abril 2006, 22:25 PM

La VM.

Tiene librerías.. pero más bien se le dice "paquetes". El hecho es que la VM se encarga de hacerlo Universal para casi todas las aplicaciones que se hagan.

Ah. Lo malo es que cuando ejecutas una aplicación en Java el VM, solo en Windos, te pone todo muy lento. Yo a veces juego ajedrez/pool en Yahoo! y de verdad que en Windows parece todo como si tuviera 1kb de RAM, en cambio, en Linux parecería que son "applets de C++" (qué raro se escucha), porque todo va igual de rápido. ::)

¿A qué se debe esa lentitud en Windows?

Las aplicaciones en .Net no se. Nunca he probado una sola aplicación hecha en .Net para saber qué tanto influye el .Net Framework con la velocidad de la pc. :rolleyes:

No se en los nuevos kernel, pero en los viejos venia un modulo activable..

justo abajo de correr ejecutables ELF de Linux
venia correr ejecutables JAVA

Cuando se le activa esa opcion a Linux corria el codigo Java como codigo nativo de Linux, el resultado es que tendria que ejecutarse tan rapido como un programa nativo...

por que la ejecusion del java era o es a nivel kernel no atraves de una maquina virtual

En los nuevos kernel noveo el modulo de programas JAVA supongo que ahora viene embebido dentro del kernel y ya no se le puede desactvar. Digo por que realmente tiene tiempo que no requiero compilar kernel de la serie 2.6.x

Bajate un kernel de la serie 2.4.x y revisa esa opcion de hecho en la ayuda de modulo viene bien explicado que ventajas le daba a Java