¿Por que JAVA tiene fama de ser pesado?

Iniciado por Chamanik, 11 Diciembre 2010, 16:26 PM

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

Chamanik

Me queria presentar primero en el foro. Pero no he visto el apartado. Aprovecho entonces para manderles un saludo a todos los foreros y al staff.

Me quiero iniciar en esto de la programacion. Pero me lo voy a tomar con calma. Es decir, no voy hacer de ello mi profesion. Por lo tanto, quiero disfrutar aprendiendo sin presion. Despues de leer por encima algunos lenguajes y tutoriales, creo que me voy a decidir por JAVA. Esta claro que lo primero es aprender algoritmos, diagramas y POO. Tener paciencia y motivacion. Eso lo digo para no parecer el tipico: "Quiero aprender JAVA en un fin de semana..."

Pero este lenguaje (JAVA) siempre a tenido fama de ser "pesado" por los recursos que consume y los requisitos que necesita. En cambio, el C, siempre lo ponen por las nubes. Parece que sea un lenguaje mistico. Segun leo, es un poco tedioso y dificil para aprender (el tema punteros y tal...)

Esta claro que mejor no tocar lenguajes visuales y de ese tipo. Mas que nada por los consejos (creo acertados) que se dan en este foro. Se que son lenguajes muy validos. Pero quizas, para los que ya dominan la programacion y quieren tener un descanso con estos entornos de programacion.

Recomiendan mucho Python. Un tiempo estuve "trasteando" con el. Pero me hice un lio con la ventana de comandos, las IDEs y demas historias. Quizas fue culpa mia, ya que dispone de bastante documentacion. No se...

En cambio JAVA tiene ese aire al C, pero mas cercano al que quiere aprender desde cero. Quizas, de una forma mas amigable.

El tema de la "pesadez" de JAVA es notorio en algunos programas. Muchos usuarios argumentan: "Jo, si que tarda en abrir el programa" y otros contestan: "Es normal. Es JAVA"

¿Esto depende de JAVA o del ordenador de que disponemos?

Resumiendo: Si descarto C ¿Me recomendais JAVA o Python?

Gracias...

pucheto

El tema de tratar a un lenguaje como lento es muy rebuscado... No interesa que el programa sea rapido o lento, sino que sea, "suficientemente rapido para" realizar cierta tarea...

Para la gran mayoria de las tareas comunes q te vas a encontrar, java si va a ser mas lento que ( un codigo decente ) de C o C++... pero va a ser mas rapido que otros lenguajes, por ejemplo un python interpretado... y va a ser suficientemente rapido como para tener un programa hecho en java que funcione bien y cumpla su objetivo en un tiempo adecuado.

Otro tema a tener en cuenta es la facilidad de programacion y mantenimiento, de poco me sirve programar un script en C en 3 horas, que en python por ejemplo uno lo hace en 40 minutos...
C esta muy bueno para realizar codigo y funciones que hagan un uso intensivo de CPU.

Otro tema es que el bytecode de java no lo tenes q recompilar cuando cambias de plataforma... y el codigo de C++ si...

Como lenguaje para aprender, depende, JAVA o PYTHON ( el q mas me gusta recomendar ) si vas a programar como hobby, cosas simples... en cambio eligiria C++ si va a ser tu carrera a seguir ( en especial por el tema punteros, en general suele dar un poco de panico cuando uno no los entiende bien, pero despues resultan naturales y hasta se los extraña si no los tenes; y por el manejo de memoria manual no administrado; estos temas suelen ser bastante complicados de entender y acostumbrarse rapido para el programador que no lo sufrio nunca por programar en java por ejemplo ).

Chamanik

Gracias por la respuesta. De echo, lo que me tira un poco para atras (en JAVA y C) es el tema de los corchetes, llaves y espacios en los codigos fuente. El Python me recuerda mas al Basic y lenguajes estructurados.

Haces referencia que el JAVA no puede llegar a donde llega el C ¿Eso quiere decir que JAVA no puede hacer todo tipos de programas como C? Es decir, no puede hacer videojuegos o sistemas operativos ¿El JAVA es solo para crear programas de gestion, webs y cosas de ese estilo?

Lo que me atrae del Python es que va al grano y es directo. Me fastidia tener que poner tanta sintaxis, corchetes, llaves y tabulaciones para escribir una misera palabra en la pantalla.

El echo de decidirme por JAVA es por que hay mas videotutoriales en la red y bastante mas documentacion (comparado con Python).  Pero para mi, resulta mas compresible el lenguaje Py que el JAVA. O al menos interpretar un codigo fuente.


pucheto

CitarGracias por la respuesta. De echo, lo que me tira un poco para atras (en JAVA y C) es el tema de los corchetes, llaves y espacios en los codigos fuente. El Python me recuerda mas al Basic y lenguajes estructurados.
No te creas, el tema de los corchetes te acostumbras enseguida y son mucho mas claros que lo que pensas. En general el que puede llegar a hacer desastres con los corchetes es un programador desprolijo. Si uno tabula bien el codigo, comenta y es ordenado como declara las variables y en los nombres que usa, no es mucho mas complicado leer el codigo en C que en python.

CitarHaces referencia que el JAVA no puede llegar a donde llega el C ¿Eso quiere decir que JAVA no puede hacer todo tipos de programas como C? Es decir, no puede hacer videojuegos o sistemas operativos ¿El JAVA es solo para crear programas de gestion, webs y cosas de ese estilo?
El tema que tiene C y C++ sobre Java, es la posibilidad de acceder a los recursos de bajo nivel de manera directa, o de usar "inline assembly" en el medio del codigo. Podes hacer mejoras de performance como alinear bien la memoria, usar registros xmm y un monton de cosas de bajo nivel de las que en java no tendrias manejo (por lo menos directamente). Otro tema es, que si vas a seguir de carrera ingenieria en informatica o licenciatura en ciencias de la computacion, C++ suele ser el lenguaje base, porque sirve para todo, desde las materias de sistemas operativos, bases de datos (armarlas, no conectarse una base de datos), redes, y materias basicas como algoritmos y estructuras de datos...

Experiencia mia: Yo tuve compañeros en la facultad que programaban (y trabajaban y vivian de eso) en Java desde hacia años, y yo que no trabaje nunca, y aprendi C++ de libros (TUTORIALES NO! LIBROS SI!) , no tube ningun problema cuando llegaba la parte de implementacion de los tps, en cambio ellos tenian perdidas de memoria, y "Segmentation faults" por no saber manejarla bien, por no entender bien los ciclos de vida de las variables y por no tener un buen conocimiento de punteros, debido a q Java se encarga de todo eso por su cuenta.

CitarLo que me atrae del Python es que va al grano y es directo. Me fastidia tener que poner tanta sintaxis, corchetes, llaves y tabulaciones para escribir una misera palabra en la pantalla.
Python lo q tiene de lindo (para mi) es q te obliga a tabular (haciendo el codigo de los principiantes un poco mas legible), y es muy practico y rapido para crear scripts interesantes. Ademas tiene una libreria estandard GIGANTE! donde tenes desde RPC, Sockets, Serializacion, Threads, Base64, Zlib, y cosas de las que en C++ o buscas una libreria de terceros o lo programa uno a mano. (y ademas es portable el codigo y no depende del SO en general)

CitarEl echo de decidirme por JAVA es por que hay mas videotutoriales en la red y bastante mas documentacion (comparado con Python).  Pero para mi, resulta mas compresible el lenguaje Py que el JAVA. O al menos interpretar un codigo fuente.
De python tambien hay muchisimo, pero lo mejor de todo, no son los videos tutoriales, lo mejor son los libros.. imprimirse uno y leerlo... La idea del tutorial no es enseñar un lenguaje de programacion, sino la de dar una breve introduccion, no suelen profundizar mucho en algunos temas que mas adelante se vuelven importantes... Ademas los libros de introduccion suelen explicar también como hacer el debugging y te enseñan a manejar algun IDE en particular.


PD: en mi facultad (estudio licenciatura en ciencias de la computacion en la universidad de buenos aires), en la primer materia de programacion, uno ve un lenguaje de especificacion (medio flojo es, es pura logica de primer orden), un lenguaje funcional (HASKELL TE AMO) y un lenguaje imperativo (C++), todo en 4 meses y da un TP de cada uno. De esos ultimos 2 lo que mas rescato es q haskell te enseña a hacer funciones recursivas eficientes y enfermas, y que C++ me sirvió para todo (y sabiendo bien C++ no es muy dificil programar en cualquier otro lenguaje imperativo!, el paradigma funcional es otro mundo).

brock

Java  lo enseñan en las universidades por que las empresas viejas necesitan programadores javeros para renovar sus programas y  es mas barato modificarlo que crear uno nuevo.

Java es muuuuuuuuuy tedioso en plan llaves y cosas de esas..
Y al fin y al cabo ¿que es java?
Lo bueno es C y C++ que son casi clones
Yo estoy aprendiendo Visual Basic.net
¿Que es vb.net o C#.net?
Super lenguajes de programacion  faciles y rapidos de programar, puedes programar cosas muy rapidamente y facil de depurar.
Lo malo es que es lento, por que  no es codigo administrado.

Aqui entra en juego C o C++
Son lenguajes No administrados, usease tienes que encargarte tu de escribir y liberar memoria, pero es muuuuy rapido comparado con .net.

Solucion = Fusion
Desde .net puedes llamar a tus .dll creadas en C o  C++
Usease, si quieres hacer 5 tonterias, pues las haces en  .net y si quieres hacer algo que consume mucho, pues lo haces en C o C++

Conclusion ¿Para que sirve java? Si puedes conbinar C y C++  que son lenguajes mas rapidos y pontentes que Java con .net que es facil y rapido de programar.

Linux esta programado en C windows en C  y asm, conclusion C es mejor que Java y .net es mas rapido que java y C usease coges los 2 extremos rapidez y velocidad, pero bueno .net no es tan lentooo, simplemente que cosas pesadas, pues las haces en C o C++

pucheto

Citar
Java  lo enseñan en las universidades por que las empresas viejas necesitan programadores javeros para renovar sus programas y  es mas barato modificarlo que crear uno nuevo.
C# y VB.net no? m...

Citar
Java es muuuuuuuuuy tedioso en plan llaves y cosas de esas..
Y al fin y al cabo ¿que es java?
Y q es java al fin y al cabo? llaves? C++ y C no son tediosos en el tema de llaves? aca estas recomendando python y haskell q no usan llaves?

CitarLo bueno es C y C++ que son casi clones
C++ se puede decir q es una extensión de C, pero ser clones es ser equivalentes y no es asi...

Citar
Yo estoy aprendiendo Visual Basic.net
¿Que es vb.net o C#.net?
Super lenguajes de programacion  faciles y rapidos de programar, puedes programar cosas muy rapidamente y facil de depurar.
Lo malo es que es lento, por que  no es codigo administrado.
Justamente ES codigo administrado, tiene casi las mismas pros y contras q Java (aunque tengan sus diferencias) respecto de C y C++...

Citar
Aqui entra en juego C o C++
Son lenguajes No administrados, usease tienes que encargarte tu de escribir y liberar memoria, pero es muuuuy rapido comparado con .net.
Tambien tenes acceso directo al hardware (con las restricciones q te ponga el sistema operativo).

Citar
Solucion = Fusion
Desde .net puedes llamar a tus .dll creadas en C o  C++
Usease, si quieres hacer 5 tonterias, pues las haces en  .net y si quieres hacer algo que consume mucho, pues lo haces en C o C++
Tambien se puede hacer esto en Java o en Python o en Ruby o en Lua o en Perl o en PHP o en D o en Haskell o en Smalltalk o en casi todos los lenguajes de programacion... La gran mayoria de los lenguajes de programacion exponen un API de C... y existen sus wrapers para C++...

Citar
Conclusion ¿Para que sirve java? Si puedes conbinar C y C++  que son lenguajes mas rapidos y pontentes que Java con .net que es facil y rapido de programar.
y para que sirve .net? si podes combinar Python con C++? y Java no es mucho mas complicado q C#...

Citar
Linux esta programado en C windows en C  y asm, conclusion C es mejor que Java y .net es mas rapido que java y C usease coges los 2 extremos rapidez y velocidad, pero bueno .net no es tan lentooo, simplemente que cosas pesadas, pues las haces en C o C++
Linux y windows y la gran mayoria de los sistemas operativos estan programados en C y asm (lo minimo posible asi es mas facil portarlo a otras arquitecturas)... pero eso no implica q C sea mejor q java, son 2 lenguajes diseñados para cosas distintas...

Tenes muy arriba a todo .NET y opinas cualquier cosa, ademas apenas se te puede entender q escribís...

brock

Pues yo creo que no me has entendido, simplemente que con Java por ejemplo no se pueden crear drivers, con C si, osea C es mejor que java, cuando he dicho que  C y C++ son casi clones es para que no parezca que hay que aprender 2 idiomas, ya que son casi lo mismo.
Y sinceramente, veo mejor aprender C donde puedo crear mis drivers que Java.
Y si quiero programar rapido, alguna aplicacion VB.net me da la oportunidad, he matizado que en .net se podian usar las apis de C por que como es codigo administrado y C no lo es pues para despejar dudas.
Java y C es como PHP y ASP.NET
Ambos funcionan bien, pero esta claro que C y ASP.Net es mejor

Historia...:
El otro dia estaba intentado sacar un link de una web (cree un estractor de enlaces), y cuando mire el codigo de fuente ZAS! una pedazo de encriptazion Javascriptineana ¡BRUTAL!
Adivina como saque el link...
Puse un .WebBrowser y use esto Document.Links(1).InnerHtml , increibe la saque en medio segundo, claro que podrias hacer eso en java, pues animo xD yo lo hago en .Net y no tengo que currarme el desencriptador.

Con este  ejemplo demuestro que VB.net es mas facil que Java...
y bueno, creo que es logico que C es mejor que Java.


Enserio disculpas a quien piense lo contrario, quizas sea un poco idealista (lo reconozco), por eso pido disculpas, pero simplemente hablo lo que siento, jamas dire que yo tenga razon o este en lo cierto, simplemente doy mi opinion, si fusiono la potencia de C con la rapidez a la hora de programar de .net no necesito java.

pucheto

El tema es que seguis idealizando a VB.net sin poner ningun fundamento en concreto... Comparas a Java con C y aparece .net de la nada y salis deciendo q es facil y simple... bueno, JAVA tambien! y Python tambien, y php tambien...

Te repito C no es mejor q java... estan hechos para cosas distintas... siguiendo tu linea de pensamiento C es mejor q .net... y pascal es mejor q .net... y casi cualquier lenguaje q compile a codigo de maquina es mejor q .net... pq te permite hacer drivers y hacer SO...

Y con el ejemplo q das no demostraste nada, solamente demostraste q lo podes hacer en VB.net... Tambien hablas de que ASP.net es mejor q php sin dar ningun fundamento...

Blitzkrieg'

#8
Por Dios, cuando sera que la gente va a entender que C y Java no son competidores. Estan hechos para cosas distintas!  :-\

EDITO: ASP.NET jamas sera mejor que PHP.



Dnk!

Jaja aqui estan todos locos, pero que digan que asp mejor que php  :rolleyes:

Para cada situacion un lenguaje es mejor que otro. No se puede genarlizar. Porque si quieres implementar una interfaz grafica no vas a utilizar C/C++ porque sea mas rapido que C#,Java...

Tengan conciencia y no idealicen. Pensar en la gran variedad que tenemos en lo que a lenguajes se refiere y la libertad de eleccion. Una ventaja... no un inconveniente.




Comentar es agradecer.
Visita Mi Blob