¿.NET > Java?

Y

#59 en eso te puedo responder yo:

La respuesta es tan sencilla como que muchos de los desarrolladores son empresas subcontratadas, en la que, programadores mal pagados y explotados, realizan soluciones ya implementadas en el pasado y modificadas sin tener en cuenta la estandarización del software y la multiplataformidad del software.

Es tan fácil como saber que, para entrar y acceder a servicios del estado (por ejemplo), hay que usar internet explorer. Incluso, algo tan simple como la firma digital, si no es con internet explorer, no funciona. Y quien te dice la firma digital, te dice simplemente el acceso... con un mensaje en medio de la web "Esto está optimizado para internet explorer, por favor descargate la última versión desde aquí"... ridículo.

Lo más curioso de todo, es que la mayoría de gente que usa esos servicios, suelen ser usuarios de mozilla, ópera u otro navegador que no sea ie.

Lo dicho, esos fallos se basan en una mala implementación y una mala organización a la hora de realizar estos servicios.

No tiene nada que ver en la calidad de la máquina virtual o del framework usado.

yEnS

Atsumi, no podrías haberla cagado más en tu post explicativo.

Decir que C# no vale para "construír" casas es una pedrada tan grande como un agujero negro (o más).

kas

YO quiero añadir que si Java esta tan extendido es unicamente por la WEB.

Las aplicaciones web como juegos o aplicaciones "emrpesariales" se desarrollan en java / javascript, es por eso que hay tanto uso de java.

Realmente no se cuanta gente se dedica a hacer herramiendas para "escritorio" con Java, sencillamente lo encuentro ridiculo no usar herraminetas de microsoft para hacer aplicacione de gestion para windows.

chEf

yo ahora estoy haciendo un proyecto pa la uni en .net y realmente es un lenguaje bastante sencillo. De los demas no tengo ni idea como son. Bueno.. se pascal y se C++ pero de programacion web..nada

N

He programado en .NET, java, C, COOL (COSMOS Oriented Object Language), etc.

Por mi experiencia puedo decir que .NET no es superior a Java, ni Java es superior a .NET, todo depende de lo que quieras hacer. No creo que ninguno de vosotros cuando vayais a hacer una aplicación la hagais con un lenguaje sólo porque os gusta, pensareis en qué ventajas/inconvenientes tendrás, tiempo de desarrollo, mentenimiento, integración, etc.

A nivel personal me gusta muchisimo más Java, no me gusta la filosofia microsoft de "click siguiente, siguiente, siguiente, terminar". No se, me gusta controlar YO el código y no que lo controle el IDE.

El tema de las interficies graficas... ombre el Net Beans no se queda corto, puedes poner los controles dónde quieras, controlar el reescalado, el "LookAndFeel", etc. ¿Qué problema le veis? Que són lentas... también existe el SWT. Tal vez Java no tiene la mima cantidad de controles que .NET, pero ya he dicho que todo depende de lo que quieras hacer. Y en contra java no es tan "rapido" como .NET, el tema del codigo IL está muy bien conseguido.

kas

Click siguiente?

Yo no uso asistentes en mi código y te aseguro que controlo absolutamente todo el código.

En cuanto al desarrollo de una aplicación, yo no me dedico al desarrollo web, por lo que solo pienso en herramientas de escritorio.

La gracia esta en que cada vez C# es mas extenso y potente y cada vez le veo mas futuro, cada día aprendo algo que me reduce la cantidad de código, o que hace mi código mas "smart".

Su orientación a objetos, su Generics, su Reflection, sus interfaces.. todo esto hace que escribas la mayor parte de código en bloques que jamas volverás a tocar y que solo debas preocuparte de esas pequeñas clases que implementas.

He hecho practicas en vb.net en la universidad con mejores resultados que los que lo han hecho en Java.

Ahora estoy haciendo una en C#, que estando al 80% ya es la mejor de los 10 años de la asignatura y todo gracias a los controles que he podido crearme y a los escasos obstáculos de programación con los que me he encontrado.

B

#66

tio xD

control sobre el codigo != control sobre lo que esta pasando

una opinion personal en voz alta,

gente que consigue mejores resultados con un lenguaje de mas alto nivel que con uno de mas bajo nivel, es que son peores programadores.

en el sentido de ponerle interes (todo depende del tiempo que se tenga, recursos etc) y querer resultados ya, que no tiene pq ser eso malo, simplemente es una opinion.

pero alguien que tenga un buen conocimiento de dos lenguajes (uno de mas alto nivel que otro), tiempo disponible y le guste programar, le va a sacar mas jugo en todo a cuanto mas bajo nivel.

todo es alcanzar un compromiso claro, no te vas a poner a programar en ASM xD

kas

Hola? Control sobre codigo != control sobre lo que esta pasando?

Esta claro que si tengo que hacer un software de gestion donde tengo una conexiona base de datos y una muestra de informes, no voy a estar controlando cada bit de memoria que cojo y done lo meto. No voy a estar controlando el protocolo tcp/ip a piñon ni haciendome funciones de creacion de archivos xml ni de interpretacion de ellos.

Seria por hacer eso y controla bsolutamente lo que pasa, mejor programador?

Quizas, pero quien me lo paga? Vale la pena los meses extra de trabajo en C++ para desarrollar una aplicacion que en C#, sabiendo, se puede hacer en 1 mes o menos?

EL post de la jerarquia de programadores es otro xD

kas

#67 Hostia tio me has hecho rallar un rato con esto:

"gente que consigue mejores resultados con un lenguaje de mas alto nivel que con uno de mas bajo nivel, es que son peores programadores."

En serio opinas eso?

En mi opinión:

Un buen programador es aquel que, no solo es capaz de conseguir mejores resultados con menos lineas de código, si no aquel que desarrolla ordenadamente, que documenta todo su código como es debido y que aprovecha al máximo las posibilidades del lenguaje que hace servbir, sea cual sea este.

Hablar de resultados y niveles de lenguajes me parece totalmente fuera de lugar, ya que es como decir que los pilotos de F1 son mejores que los de Rallie, son mundos parecidos pero no comparables.

Soltrac

Q tontería, cualquier herramienta q te ayude a no tener q teclear tochacos de código es bien recibida, regla 1 de ingeniería del software.

Miminh0

No he programado en .NET nunca la verdad, pero me río de todo aquel que se atreve a decir que puede llegar a ser mas extenso que java con la CANTIDAD de frameworks que hay para Java o J2ee.

PD: Que la gente sea nefasta programando no quiere decir que los lenguajes sean malos.

BrOkeR

No voy a entrar en detalles, pero para muestra un botón.

Trabajo en una empresa de consultoría informática internacional especializada en tecnologias Microsoft (AVANADE) asignado a un proyecto en un cliente muy grande.

Pues bien, el cliente esta pasando toda su produccion de Java a .NET. De hecho tengo compañeros terminando un proyecto en Java y otros empezando la proxima versión, que sustituirá a la de Java, en .NET.

B

#68

Por definicion tio de alto nivel, es menor control de lo que esta pasando (que delegas en el compilador) a cambio de mayor comodidad a la hora de programar.

O no es eso alto nivel? vas delegando en capas inferiores, y a cambio puedes hacer cosas mas complejas pq tienes mayor comodidad al no tener que preocuparte de lo que pase por debajo.

No tiene nada que ver pilotar sobre codigo, a saber que esta pasando, pero nada.

Pq por codigo puede ser un diagrama de bloques lo mas cutre posible (mas alto nivel no existe como quien dice), y puedes entenderlo perfectamente, ahora bien, el como lo hace no lo sabes, y si no lo sabes, como lo vas a controlar? xD

Y sobre lo otro, si lo opino, es por lo que veo en el mundo, que no es poco. Si no lo viera tan frecuentemente, no lo pensaria asi.

No esta nada fuera de lujar, de hecho, cuando alguien, cuanto mas bajo nivel entiende, mucho mejor programa (a cualquier nivel), yo es lo que veo.

Esto no son rallies ni F1, es programacion, fuera ejemplos figurados y a los hechos.

Yo ya lo he puesto antes, si vas a hacer cosas con ventanas pues .NET te lo ofrece bien facil, si quieres hacer lo mismo con mas control, pero mas laborioso, pues JAVA.

Seguramente, mi experiencia personal, quien hace un programa complejo en JAVA, seria capaz de hacer el mismo en .NET, pero ya el caso al reves, seria mas dificil de encontrar (basicamente pq bajas de nivel), no se si me explico.

Que eso no es malo, cada uno lo que necesite.

Ni uno es mejor, ni peor. Tb lo he comentado antes, son las necesidades y recursos los que marcan que utlizar.

Pq como muy bien has puesto xDD quien te lo paga? esa es la mayor verdad, pero las cosas como son hombre.

cabron

Creo que habéis malinterpretado las palabras de Seuron (suponiendo que yo le haya entendido bien).

No está diciendo que por programar en un lenguaje de alto nivel seas peor programador que si programas en uno de bajo nivel.

Cuanto más abajo estés, menos controlan por ti, y más tienes que controlar tú, y más conocimiento tienes que tener sobre como funciona todo.

Evidentemente es una chorrada programar a bajo nivel si tienes otra herramienta que te ahorra tiempo, pero aunque uses esa herramienta, sigues teniendo el conocimiento de como funciona todo por debajo, y eso te sirve para escribir mejor código de alto nivel.

Sin embargo, si no sabes como funcionan las cosas por debajo, puedes escribir código de peor calidad, ya que no tienes conocimiento de como va a funcionar realmente el código que has escrito.

Esto que he dicho, es algo que se aplica a lenguajes como C o C++, que tienen una relación estrecha con el ensamblador. Si conoces el lenguaje ensamblador del procesador x86 por poner un ejemplo, cuando escribas en C o C++ para este procesador, vas a tener conocimiento de como se va a ejecutar tu código realmente, y eso te hará escribir código de mejor calidad.

Ahora bien, lo que no tengo tan claro, es que esto se aplique a lenguajes como Java o .NET, que pasan del codigo del lenguaje, al código máquina de la máquina virtual, y de ahí al código máquina de la plataforma donde se ejecuta.

En estos casos, para que realmente te fuese útil el conocmiento de bajo nivel, tendrías que conocer como funciona la máquina virtual, y como se traduce el funcionamiento de la máquina virtual a esa plataforma en concreto, y aquí ya estamos hablando de tener mucho level xD

kas

Bien, os he entendido tanto a Sauron como a ti, cabron.

Si estoy de acuerdo en que cuanto mas sepas de bajo nivel, mejor entenderas toda la estructura de un PC y por ello mejor codigo de alto nivel haras.

No estoy de acuerdo en el hecho de que "pierdo control".

Hm.. creo que vemos diferente esas 2 palabras, es decir: SI, dejo yo de hacer malloc's, de cazar el WIN32 para los eventos de pantalla, me olvido de los punteros (aunque existe la palabra clave unsafe en C# para poder usarlos).

Sin embargo, el hecho de poder olvidarme del API de windows, de reservar memoria con una simple declaración o un constructor sin palabras extrañas, no solo aclara el código, si no que ademas elimina trabajo innecesario hoy en dia.

Opino que tanto Java como .NET son frameworks nacidos de esta necesidad de olvidarse de tan bajo nivel cuando lo que se pide son aplicaciones web o programas de escritorio, comúnmente de gestión o similares, donde lo que interesa no es un rendimiento por las nubes y un supercontrol de cada bit de memoria reservado, si no una "presentación adecuada al cliente" y una gestión de datos que cualquier cpu de hace 4 años podría soportar.

Ese es el enfoque que yo les doy a estas tecnologías y el principal motivo para el que migrar a ellas.

Desde hace 4 años, he desarrollado software de gestión personalizado, servidores de red, manejadores de archivos, comunicación con web, herramientas de diseño gráfico, controles personalizados, software de todo tipo para PocketPC... y lo he hecho tanto en VB .NET como en C#, preocupándome única y exclusivamente de lo que es importante: Esa SQLConnection, ese OnPaint, ese TCPListener, ese webrequest, ..

Y os digo que en ningún momento he sentido que no tenia control sobre mi código.

cabron

No es que no tengas control sobre tú codigo, salvo que el compilador/interprete esté mal hecho, está claro que la aplicación solamente va a hacer lo que tu hayas escrito.

Sobre lo que no tienes control es sobre lo que se ejecuta.

Cuantas más capas pones, signfica que el compilador está haciendo más cosas por ti, y el compilador, por muy bueno que sea, no es humano, y no siempre es capaz de hacer la solución más óptima.

Como tú dices, si estás haciendo una aplicación J2EE para una empresa, quizas no importa que la transacción tarde medio segundo de más, o que ocupes 4mb extra de memoria.

Esas cosas solo se tienen en cuenta para aplicaciones que corren en dispositivos con recursos limitidos, o aplicaciones en tiempo real, pero eso no quita que dejas de tener ese control, no lo digo ni como algo bueno ni malo, si no como un hecho.

kas

Estoy de acuerdo contigo en casi todo, excepto en el hecho de que, si mal no tengo entendido, estos frameworks se dedican a hacer buenos compiladores, aplicando las mejores técnicas para cada caso. Si bien tambien conozco gente que ha modificado las librerias de windows para aplicar otros metodos, que, por su forma de trabajar, le aumentan el rendimiento. De todo hay en la viña del señor y esta claro que lo que seguramente te gustaria aplicar una tecnica distinta de la que aplique el framework en determinados momentos, pero no lo considero significativo.

Es cierto que el rendimiento no es tan alto como programar a pelo contra la maquina sin maquinas virtuales ni IL's, sin embargo tampoco es un mal rendimiento para una aplicación de escritorio ni para web.

Quiza estoy insistiendo demasiado en el tema de "aplicación de escritorio" o de "gestión", pero, no nos engañemos, estos frameworks están orientados a eso, y .NET mucho mas que Java, que, como decís, esta algo por debajo en cuanto a nivel de programación respecto de .NET.

B

Que guay cabron xD , me has resumido perfectamente.

Si es cierto lo que comentas sobre los lenguajes que utilizan maquina virtual, ahi ya no queda tan claro que control tienes.

Y por supuesto, como se ha concluido, no significa peor o mejor, simplemente es un hecho por definicion de nivel.

De hecho en C, puedes escribir en el mismo codigo, instrucciones asm, por si quieres tener absoluto control de X parte y quieres que se ejecute tal cual.

Usuarios habituales