Que lenguaje elegir, Java o C++?

Iniciado por laidbackluke, 29 Diciembre 2011, 00:04 AM

0 Miembros y 1 Visitante están viendo este tema.

Xandrete

Cita de: Ragnarok en 20 Enero 2012, 20:36 PM
Con todo el ecosistema que está surgiendo alrededor de la máquina de java, como scala y clojure, no veo por qué aprender C++ si no es para hacer cosas a muy bajo nivel:
- Por eficiencia.
- Por saltarse mecanismos de seguridad.

¿Eco...sistema? ¿Ecosistema? Perdona, me resultó divertida esta palabra para este uso.

Es que pienso en ecosistema y me imagino florecillas y pajaritos revoloteando en un pintoresco y rural paisaje sin polución  ;D

Por cierto, esto de los ecosistemas me recuerda a una pieza de Camile Saint-Säens, llamada Le carnaval des animaux. Éste es uno de los movimientos, llamado Aquarium. ¡Y perdón por el Off-topic!

¡Saludos!

Littlehorse

Citar¿Eco...sistema? ¿Ecosistema? Perdona, me resultó divertida esta palabra para este uso.

Es muy común usar el termino "ecosistema" refiriéndose al conjunto de aplicaciones y tecnologías que se generan alrededor de una plataforma sea esta del tipo que sea.

Y si, efectivamente el mundo de tecnologías alrededor de la VM de Java es atractivo y útil en tantos aspectos que no alcanzan los posts para enumerar los alcances que uno puede tener si domina varios frameworks y tecnologías.

Citar
Pues yo a C++ no le veo futuro. Más que nada porque es un lenguaje que tiene un monton de complicaciones y de cosas que mete patadas al buen diseño y la mantenibilidad(vease el mecanismo de polimorfismo que lleva), además de el creciente uso de C#, que es un lenguaje mucho más completo, potente y que tiende a tener un diseño bastante mejor.

Todo lenguaje tiene dos caras y obviamente las ventajas que tiene en rendimiento y flexibilidad se balancean con desventajas en otros aspectos.
Igualmente, lo de complicaciones es muy relativo y depende de que tanto domines el lenguaje. Lo mismo aplica para las ventajas/desventajas en el diseño.
Lo del poliformismo estoy de acuerdo hasta cierto punto, ya que también tiene sus ventajas respecto de otros lenguajes. Sacando eso, creo que C# es el lenguaje que implementa el polimorfismo de la mejor manera -a mi parecer, obviamente- pero eso es solo una característica mas del lenguaje y al evaluar las ventajas/desventajas a nivel diseño, deben evaluarse todas las características.

A C++ por el momento le queda bastante siempre que se necesiten aplicaciones de alto rendimiento y C++ sea uno de los pocos lenguajes en los cuales esto es posible. Ademas, mientras se le diga dando fuerza a C++ desde las corporaciones dominantes en el mundo del software, C++ seguirá tal donde esta.

En la actualidad, tanto C# como Java pueden utilizarse para infinitas aplicaciones, pero no para alcanzar el mismo rendimiento que en C++, por razones obvias. Tal vez algún día se pueda, hoy por hoy es imposible.




Yo opino lo mismo que en otros posts recientes. Depende de lo que se quiera hacer y las áreas a las que uno quiera enfocarse.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

тαптяα

 :rolleyes:

JAVA, es más de presente-futuro.

Es el lenguaje que te van a pedir en todos lados.

ShotgunLogic

Cita de: Littlehorse en 20 Enero 2012, 22:55 PM
Es muy común usar el termino "ecosistema" refiriéndose al conjunto de aplicaciones y tecnologías que se generan alrededor de una plataforma sea esta del tipo que sea.

Y si, efectivamente el mundo de tecnologías alrededor de la VM de Java es atractivo y útil en tantos aspectos que no alcanzan los posts para enumerar los alcances que uno puede tener si domina varios frameworks y tecnologías.

Todo lenguaje tiene dos caras y obviamente las ventajas que tiene en rendimiento y flexibilidad se balancean con desventajas en otros aspectos.
Igualmente, lo de complicaciones es muy relativo y depende de que tanto domines el lenguaje. Lo mismo aplica para las ventajas/desventajas en el diseño.
Lo del poliformismo estoy de acuerdo hasta cierto punto, ya que también tiene sus ventajas respecto de otros lenguajes. Sacando eso, creo que C# es el lenguaje que implementa el polimorfismo de la mejor manera -a mi parecer, obviamente- pero eso es solo una característica mas del lenguaje y al evaluar las ventajas/desventajas a nivel diseño, deben evaluarse todas las características.

A C++ por el momento le queda bastante siempre que se necesiten aplicaciones de alto rendimiento y C++ sea uno de los pocos lenguajes en los cuales esto es posible. Ademas, mientras se le diga dando fuerza a C++ desde las corporaciones dominantes en el mundo del software, C++ seguirá tal donde esta.

En la actualidad, tanto C# como Java pueden utilizarse para infinitas aplicaciones, pero no para alcanzar el mismo rendimiento que en C++, por razones obvias. Tal vez algún día se pueda, hoy por hoy es imposible.




Yo opino lo mismo que en otros posts recientes. Depende de lo que se quiera hacer y las áreas a las que uno quiera enfocarse.

Saludos


Pues yo creo que el multihilo de C# pwnea a todos XD

Y bueno, lo de C++ no es que alguien que maneje C++ bien no sepa utilizar correctamente todas las complicaciones que tiene, pero el problema es que por ejemplo en proyectos de Ingeniería de Software que siempre estas con codigo de otras personas es realmente una locura.
The clans are marching against the law, bagpipers play the tunes of war, death or glory I will find, rebellion on my mind.

Littlehorse

Pero eso sucede en todos los proyectos en los que tengas que trabajar con código ajeno. Que el código sea o no una locura depende del nivel de seniority del/los proyectos involucrados.

Yo he visto proyectos en C++ muy bien hechos y documentados como también he visto proyectos en Java con código desastroso y no te hablo de proyectos pequeños si no de proyectos para multinacionales y la verdad es que te asustabas de ver tantas malas practicas. Test unitarios hechos "para que den verde" y módulos enteros con funcionalidades que tenían un nivel de acoplamiento que daba miedo.

Mientras mejor te manejes en un lenguaje, mas sencillo se te va a hacer comprender código ajeno, pero si este no esta ni comentado ni documentado y encima esta mal diseñado, ni siendo el mejor del mundo ni usando el lenguaje mas sencillo te evita los dolores de cabeza.

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

armizh

Como opinion personal puedo decir que aprender C/C++ es la mejor forma de comenzar la programacion, a pesar de que no son los mas faciles, pero son los lenguajes mas extendidos y la gran mayoria de los lenguajes modernos estan basados en la sintaxis de C/C++.
Pues yo creo que la forma mas eficaz de aprender es con un buen manual de C/C++ y codigo en mano de algun programa pero que este lo bastante comentado para poder entender como funciona.
Mas personalmente recomiendo C cuando lo que necesitas potencia, practicamente todo se puede hacer con C, y pues la verdad a pesar de que C++ es mas eficaz que C y permite (en gran parte de los compiladores) codigo en C, yo no logro acostumbrarme a el, pero es un detalle mio xD
Recuerda: para aprender necesitas un buen manual (que en este foro te pueden recomendar todos los habidos y por haber) y revisar un proyecto o una aplicacion bastante comentada y que sea basica (talvez valgan mas los ejercicios, que en este foro tambien abundan, de hecho hay subforos especificos para eso, pero yo no aprendi con ejercicios xd jeje).
Si bien JAVA es bastante potente y eficaz, no es muy rapido debido a que se ejecuta sobre una VM lo cual relentiza el sistema. Es un buen lenguaje y su sintaxis esta basada en C++, por lo que aprendiendo C++ no sera tan dificil aprender JAVA (que de por si es facil).
Saludos
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

ShotgunLogic

Cita de: Littlehorse en 21 Enero 2012, 00:34 AM
Pero eso sucede en todos los proyectos en los que tengas que trabajar con código ajeno. Que el código sea o no una locura depende del nivel de seniority del/los proyectos involucrados.

Yo he visto proyectos en C++ muy bien hechos y documentados como también he visto proyectos en Java con código desastroso y no te hablo de proyectos pequeños si no de proyectos para multinacionales y la verdad es que te asustabas de ver tantas malas practicas. Test unitarios hechos "para que den verde" y módulos enteros con funcionalidades que tenían un nivel de acoplamiento que daba miedo.

Mientras mejor te manejes en un lenguaje, mas sencillo se te va a hacer comprender código ajeno, pero si este no esta ni comentado ni documentado y encima esta mal diseñado, ni siendo el mejor del mundo ni usando el lenguaje mas sencillo te evita los dolores de cabeza.

Saludos!
Lo se lo se, pero si ya de por si es malo, imaginate si el lenguaje empeora las cosas.

Lo que quiero decir es que no me gustan esas caracteristicas que tiene porque las veo para la Ingenieria del Software como abrumadoras, ademas que C# esta cogiendo mucha fuerza, y no es de extrañar porque es un lenguaje potentisimo.
The clans are marching against the law, bagpipers play the tunes of war, death or glory I will find, rebellion on my mind.

Xandrete

Cita de: armizh en 21 Enero 2012, 05:02 AM
Si bien JAVA es bastante potente y eficaz, no es muy rapido debido a que se ejecuta sobre una VM lo cual relentiza el sistema.

No necesariamente. Existen procesadores Java que pueden ejecutar directamente bytecode de este lenguaje ^_^

armizh

Cita de: Xandrete en 21 Enero 2012, 13:33 PM
No necesariamente. Existen procesadores Java que pueden ejecutar directamente bytecode de este lenguaje ^_^
Pero me da que esos procesadores no son muy estables, ademas de sacrificar la unica gran ventaja de Java sobre C/C++ que es la portabilidad real, comparada con la portabilidad por codigo de C/C++.
Sin esa ventaja, como se dice en buen chileno, C/C++ le da mil patas en la r*** a Java, jeje perdon por eso xd
Saludos.
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Xandrete

Cita de: armizh en 21 Enero 2012, 16:32 PM
Pero me da que esos procesadores no son muy estables, ademas de sacrificar la unica gran ventaja de Java sobre C/C++ que es la portabilidad real, comparada con la portabilidad por codigo de C/C++.
Sin esa ventaja, como se dice en buen chileno, C/C++ le da mil patas en la r*** a Java, jeje perdon por eso xd
Saludos.

Expresión totalmente correcta  ;). Pero, ¿por qué dices que sacrifica portabilidad? En principio, no. Lo único que tienen estos procesadores es que interpretan directamente el bytecode de Java. Pero este bytecode sigue funcionando perfectamente sobre JVM bajo otras arquitecturas (no es que se le haga ninguna modificación especial para poder ser ejecutado con un procesador Java).

Saludos