Java vs. Python

Tengo la impresión de que Java fue diseñado para hacer que fuera difícil escribir mal código, mientras que Python está diseñado para hacer que sea sencillo escribir buen código.

— Magnus Lycka

Comentarios
  1. Sólo puedo decir: Viva ruby!! xDDD

    Responder

  2. Ig

    Se puede decir más alto pero imposible decir más claro.

    Apenas he probado Java, y he hecho alguna cosilla en Python, pero si he mirado con algo de profundidad Ruby y estoy totalmente de acuerdo con la frase.

    De todas formas Magnus desarrolla en Python así que hay que entender la frase en ese contexto :).

    @Zootropo
    te falta el link http://www1.tripnet.se/~mly/mly.html
    ;).

    Responder

  3. Son Link

    Yo no se programar en Java así que no voy a comparar ambos.
    De todos modos me quedo con Python que ya le e cogido mucho carillo XD

    Responder

  4. Java es como una mujer, tiene sus cositas, hay q entenderlo, jaja 🙂

    Responder

    • mainakae

      En efecto, es como una mujer: tiene millones de complementos que ponerse 😀

      Responder

  5. Rafa

    joé a mi me enseñan programacion con java en la ing. informatica 🙁

    yo lo veo bien pero en este blog no hay mas que criticas 😛 será verdad…

    Responder

    • Bueno, como todo en este mundo, tiene sus cosas buenas y sus cosas malas.

      Responder

  6. javapower

    El código será más bonito pero java es más eficiente.

    Por otra parte lo suyo es saber desarrollar independientemente del lenguaje. Al fin y al cabo los lenguajes están muy sujetos a modas.

    Responder

    • Hombre, es que si nos ponemos así, Java es más bonito que C, pero C es más eficiente. Y C es más bonito que el ensamblador, pero el ensamblador es más eficiente.

      Y ojo, que lo digo desde la perspectiva de una persona a la que le gusta Java, como puede atestiguar los artículos sobre el lenguaje en la bitácora. No vayáis a pensar que soy un fanboy de Python.

      Responder

      • javapower

        Algo me decía que alguien me hablaría de C.
        ¿No estamos hablando de lenguajes de alto nivel?

        De todas formas llevas razón, pero creo que me has entendido igual que yo a tí. Era sólo por trollear un poquitín 😛

        No sé si fué en este blog o en /. donde vi una comparativa 30 y pico lenguajes de programación en función de su rendimiento… a ver si lo encuentro y lo pego por aquí, las gráficas asustan.

        Por cierto ruby era de los peores en rendimiento, no muy lejos de python.

        Responder

        • javapower

          Si quieres edita el post anterior y nos ahorramos este segundo comentario. Aquí la comparativa. Ojo, es una forma de rendir rendimiento un poco subjetiva, al igual que esa otra que ví de comparar según lo que tarde en ejecutar un for.

          Respecto al for (y ya me estoy enrollando), en javascript tarda menos contar de 100 a 1 que de 1 a 100 😀

          El enlace:

          http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependability-of.html

          Responder

        • Si, también vi la comparativa. Es un hecho que el rendimiento no es el punto fuerte de los lenguajes de script.

          A ver si Google lo remedia con Unladen Swallow 🙂

          De todas formas para la mayoría de los programas la diferencia de rendimiento no es apreciable.

          Responder

        • Carlos Suarez

          A ver, esto es “ingenieria elemental” jaja. A mayor fluidez a la hora de programar, es decir, a la hora de programar y encontrar un lenguaje que sea facil de usar y entender, Caso Ruby, el codigo intermedio es mayor, esto es por el compilador. De ahi que si miramos Groovy on Grails, veremos que se demora una eternidad para compilar una applicacion. y ni decir si queremos generar el War de la misma. todo es cuestion de gustos. Como se dice en el mundo linuxero, hay diferentes flavores, o flavours. Yo utilizo Java, C++, Ruby, C#, PHP y Cada cual tiene su uso y necesidad, en cada uno se sacrifica algo para mermar algo. Ya sea algo tan simple como Dinero vs Tiempo, o algo tan complejo como el tema de TiempodeCompilacion vs TiempodeProgramacion.

          Saludos.

          Responder

      • jesus

        No se puede decir que ensamblador es mas eficiente en la programación todo depende de que estés programando ensamblador resulta mas eficiente para programas para hardware (drivers), juegos para consolas ya que se especifica la memoria que vamos a usar pero programar otro tipo de software es muy deficiente ya que se requiere mas tiempo de programación y hay peligro de afectar recursos inesperados, java o C por otra parte son mas eficientes para crear programas de de administrativos, de oficina, edición, por mencionar algunos, además ensamblador es lenguaje de bajo nivel y los otros son de alto nivel.
        No es fácil comparar si no se hablo de lo que se desea programar con ellos.
        No he programado en Python pero en java si y me parece un lengua muy buena por tiene portabilidad y es muy sencillo de entender.

        Pero todos los lenguajes son lo mismo lo único que cambia es la sintaxis del lenguaje pero si sabes programar puedes dominar cualquier lenguaje.

        Responder

      • anon

        Yo creo q con eficiencia se refiere a que java es multiplataforma, he trabajado un poco con phyton y java, en lo personal prefiero java.

        Responder

      • Efren Villamagua

        Pero el punto está en el equilibrio entre buenas prácticas, lo práctico, lo seguro, lo eficiente. Por eso Java es el mejor.

        Responder

  7. Si no eres capaz de abstraerte del lenguaje de programación estás acabado… o limitado.

    Responder

  8. Danilo

    No he probado phyton pero soy feliz con java… siempre he logrado lo que he querido como lo que querido… algunas veces con un poco de esfuerzo, pero es como todas las cosas, tienen sus pros y contras!!

    Responder

    • Danilo

      Perdon por la ofensa!!… es Python… como se nota que no lo conozco!… jajaja

      Responder

      • yoyo

        siempre aparece un loquito tipo linux vs window

        Responder

  9. wizard-raz

    for(long i=0; i<1000000; i++)
    continue;
    Java
    real 0m0.323s
    user 0m0.196s
    sys 0m0.040s

    for i in xrange(1000000):
    pass
    Python
    real 0m0.176s
    user 0m0.168s
    sys 0m0.004s

    Mas rápido no lo creo

    Responder

    • q3

      ejecuta un foreach de java ¬¬

      a python le faltan unos años más para que sea más masivo ….

      Luego de unos años tanto python como java pasarán de moda ¬¬

      que tontas estas comparaciones…

      Responder

      • asd

        El foreach no sirve para lo que propones pero en lo demás concuerdo contigo

        Responder

      • Un foreach de Java es azúcar sintáctico. El compilador lo traduce a un for de toda la vida.

        Responder

        • Oath

          Falso, lo traduce en un Iterator… por favor no opinéis si no sabéis

          Responder

          • Anónimo

            Es un iterador intermedio que se recorre con un for, ignorante

  10. exquisito !

    Responder

  11. ihm

    IMHO, no se que coño le veis a Python. lejos de mi intencion flamear, pero:

    1) la sintaxis es odiosa. Vamos a ver! no estaba claro ya que la sintaxis basada en formato era cosa del pasado? que les costaba poner un {} o un BEGIN/END?

    2) es interpretado, no ya en bytecodes, sino en texto plano. WTF! no hay mas que ver el grafico de python en la [a href=”http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability-2009.png”]imagen[/a]. Ni compilacion, ni optimizacion, ni leches. Mira q me gustan poco las VM pero les veo su logica. en cambio, los lenguajes de script en desktop?!?! por favor.

    3) el tipado dinamico, WTF! muy comodo, si señor, y al control de tipos q le den. eso sin tener en cuenta el tiempo extra a la hora de crear objetos y cambiarles de tipo. yo no tengo experiencia directa con python, pero si con el lenguaje de scripting de matlab, y cosas como el tipado dinamico hacen q el rendimiento de estos sea entre 10 y 100 veces peor que con C, Pascal, etc.

    No estoy diciendo q los lenguajes de scripting no tengan sentido. Tienen su sentido en determinados ambientes donde hacer algo rapido para una prueba rapida es importante, pero me parece a mi que los proyectos medianos para desktop no son uno de ellos. IMHO, python y ruby son el hype de la decada en cuanto a lenguajes, ya veremos cuanto tarda en aparecer el proximo python killer y todo el mundo se olvide de ellos, o me equivoco y quiza se consoliden.

    Disclaimer: repito que mi intencion no es la de flamear, es simplemente curiosidad pura y dura. Por una parte no me parece un avance frente a Java/C#, pero por otra, la gente no para de hablar de el (coño, hasta B.Eckel habla bien de el, y le tengo en buena estima) y lo esta utilizando ultimamente en bastantes programas. Algunos son buenos programas, aunque su rendimiento y responsividad, ejem, me callo.

    Responder

      1. Indentar el código es una buena práctica. Si no indentas, no eres un buen programador. Y si lo haces, ¿cuál es el problema con Python?
      2. Python es semi interpretado. El código fuente se compila a bytecode cuando se ejecuta por primera vez.
      3. Es de tipado dinámico, pero tiene tipado fuerte.

      Responder

      • ihm

        1.) indentar codigo es una buena practica, y ayuda a la legibilidad, pero no deberia ser el mecanismo para separar bloques, un ejemplo:

        #foo.py
        #…
        i=0
        while i<100:
        if i<10:
        print i
        i=i+1
        #…

        #foo2.py
        #…
        i=0
        while i<100:
        if i<10:
        print i
        i=i+1
        #…

        si indentas por error la sentencia ‘i=i+1’ tienes un bonito bucle infinito. corrigeme si me equivoco, pero es perfectamente correcto en python, no? es una chorrada de ejemplo, pero es lo mas sencillo q se me ha ocurrido.

        3.) pero aunq se compruebe en tiempo de ejecucion el tipo de una variable, solo se encontrara un bug relacionado con el tipo de una variable en tiempo de ejecucion, no en compilacion. si el bug se encuentra en una zona poco ejecutada del codigo, tendras una bonito bug aleatorio con condiciones no replicables.

        Repito que no tengo experiencia con python, asi q me puedo equivocar. Existe algun mecanismo en python para evitar 1 y 3 del q no haya oido hablar?

        Responder

        • ihm

          me cago en la leche, voy a poner ‘_’ como si fuesen espacios:

          #foo.py
          #…
          i=0
          while i<100:
          __if i<10:
          ____print i
          __i=i+1
          #…

          #foo2.py
          #…
          i=0
          while i<100:
          __if i<10:
          ____print i
          ____i=i+1
          #…

          Responder

          • Ig

            Igualito que si te equivocas al poner llaves

            i=0;
            while (i<100) {
            __if (i<10) {
            ____print i;
            __i=i+1
            }}

            o

            i=0;
            while (i<100) {
            __if (i<10) {
            ____print i;
            __i=i+1}
            }

            Tu argumentacion para mi no tiene fundamento.

            Nota: apenas se java y no tengo claro que la sintaxis sea correcta.

    • javapower

      Al final me voy a tener que registrar y todo.

      Igual que pienso que Java es mejor que python en función del rendimiento de las aplicaciones y de su escalabilidad, lo cual defendí en anteriores comentarios, también es cierto que cuando una empresa como lo es Google desarrolla íntegramente en python, y teniendo en cuenta la cantidad ingente de datos que mueven, algo tendrá python que no tiene java.

      Respecto a la sintaxis, qué importa eso, ya tenemos IDE que lo hacen todo por nosotros. Yo personalmente cuando escribo algo en java y voy con prisas no me fijo en las tabulaciones, total, cuando tengo el método ya escrito pulso CTRL ALT F y netbeans me lo pone todo perfectamente ordenadito y tabulado (o identado, odio esa palabra). Seguro que en python hay algo igual, de hecho netbeans está desarrollando un módulo para desarrollar con python y no me extrañaría que a corto plazo den soporte en el glassfish para aplicaciones python.

      Respecto al tipado dinámico sí estoy de acuerdo, no me gusta nada, no le veo ninguna utilidad ni me parece que el código sea más legible, de hecho si se alarga es al contrario porque el tipo de la variable se vuelve contextual con lo cual casi que tendríamos que estar ejecutando de memoria. Otra cosa es que fuese como javascript, que da igual el tipo porque sólo puede ser DOM, string o función (alguna cosa más, pero pa resumir).

      Responder

  12. Aguante C! xD

    Responder

  13. si te equivocas identando, será porque identas con pocos espacios… además de que muchos editores de texto para programadores, como Kate, te dan la opción de identar o des-identar. Yo programo en Python al igual que en otros lenguajes, y debo decir que con los identados me equivoco, pero con las llaves tiendo a errores, como ocurre por ejemplo al copiar código.

    Un saludo.

    Responder

  14. stormbringer

    Yo comencé a usar python para mejorar mi indentación. Sobra decir que ahora python me gusta bastante y lo uso para proyectos personales.

    Responder

    • stormbringer

      Mi problema con java es que lo comparo con python en la facilidad de cada uno para escribir ‘scripts’, no en el ‘poder’ que tiene cada lenguaje.

      Eso es lo que me impide practicar java, cualquier sugerencia para solucionarlo, se agradece.

      Responder

  15. Hoa Gente, Yo he probado los dos, es mas los estoy utilizando y desde mi punto de vista, ambos tiene ventajas sobre el otro, como se Python es 10, que digo 100 veces mas Simple que java(pero no por eso es menos potente), pero en si java es muchisimo mas Portable, ya que por ejemlo Cras una aplicacion con interface grafica en Python con Linux y pasarlo a ese mismo codigo a Windows, es un parto, mientras que con Java es mucho mas Simple pero asi y todo, para imprimir un mensaje con Python solo hace falta un:
    #print “Mensaje”
    Simple Facil y muy practica,
    saludos jajajaja

    Responder

    • dani

      La complicación de portar un programa para Linux en Python que tenga interfaz gráfica a Windows dependería del framework de creación de GUIs que utilizaras y no de Python en todo caso.

      No tiene ningún tipo de complicación portar un programa que use PyGTK o wxPython a Windows por ejemplo.

      De hecho en ese punto es incluso mejor que Java porque sí tendrías widgets nativos o muy parecidos a los de Windows.

      Responder

  16. Cagide

    Pues las comparaciones de tiempo y del codigo, no son mas que una pelea en vano, cada lenguaje esta diseñado para una funcionalidad, python es un lenguaje hermoso y claro de entender, aparte de que muy divertido, apuesto que muchos resescubrieron lo divertido que ra programar cuando lo aprendieron, pero, java es un lenguaje robusto con un gran valor en el mercado, si nos fijamos bien, si queremos hacer una aplicacion rapiday de manera divertida utilizamos pyhton si deseamos hacer una aplicacion grande y con mucho cdigo, conexcion y convinando varias tendencias( web, desktop, portabilidad) utilizamos java, OJO, no estoy diciendo que python no es un lenguaje robusto ya que cuenta con infintos frameworks creanme, lo cual es obvio porque es apollado por la comunidad open sources, al igual que el buen java (OpenJdk). Todo depende el proyecto que deseamos contruir si quieres eficiencia en una palm C sera el adecuado, si quieres una aplicacion robusta (empresarial)Java no suena tan mal, si deseas hacer una aplicacion de gestion o un videjuego son meterte en tantos lios como con C pues Python suen buena opcion 🙂

    Responder

  17. xrs
  18. […] Fuente: http://mundogeek.net […]

    Responder

  19. daniel

    Yo no programo en python, pero he escuchado excelentes comentarios de él, mientras que de Java si puedo dar mi voto a favor ya que no hay cosa que no se pueda hacer (o eso he visto yo).

    Un saludo!

    Responder

  20. andrew sanchez

    por razones laborales tuve que usar python, mas alla de todas las ventajas (que los pythonianos se cansan de repetir en cualquier foro de java, c# o ruby :D) tambien he estado hechando unas lecturitas de ruby (mas ruby que rails) y en lo personal, conociendo algo de java, python y ruby puedo en mi humilde opinion decir:
    -python es el mas sencillo de programar y muchisimo mas sencillo de entender a simple vista el codigo de otros, pues su sintaxis es sencilla y te da la sensacion que hay una sola forma correcta de resolver los problemas que se te puedan presentar. Ruby es el que me resulta mas dificil de entender a simple vista (tal vez porque solo lo estoy comenzando a utilizar).Java…que se puede decir, simplemente java, uno de los idiomas universales.
    – no obstante por otro lado python me resulta aburrido, programar en java es como escribir una larga novela, donde para llegar a la parte interesante tienes que llevar al lector por una serie de eventos, pero cuando llegas te engancha, ruby es como un poema, me resulta el mas entretenido para programar aunque es mañoso y entender lo hecho por otros no es tan simple, python es como escribir un informe para el trabajo, es rapido, sencillo, practico, conciso….pero aburridisimo!!, aunque creo que es cuestion de personalidad (me gusta siempre buscar formas diferentes de programar y resolver las situaciones que se me presenten), seria interesante iniciar un articulo donde se compararan no los lenguajes sino las comunidades de programadores de cada lenguaje y como cada quien visualiza a los que programan en otro lenguaje….

    Responder

  21. Hunter

    yo digo q el futuro es pascal! arre perdido

    Responder

  22. Dagvi

    Pues bien java es un poderoso lenguaje y lo he usado se que su sintaxis es un poco tediosa pero tiene sus encantos el cual lo atrapa a uno sobre todo en los primeros dias que se aprende a programar pero python es sencillo y muy util. con cual me quedo?.

    con los dos.

    Responder

  23. JMorris

    He estado viendo python, especificamente utilizando django y desde el punto de vista del programador te permite hacer mas funcionalidad con menos codigo.

    Lo que no me termina de gustar son los tipos de datos dinamicos.

    Aunque escucho repetidamente que el codigo se lee mas facilmente, mi experiencia tratando de modificar codigo existente es que seguirle la pista a las clases heredadas es mucho mas complicado que en Java.

    En Java, cualquier IDE decente logra conocer el 100% las relaciones entre las diferentes clases e interfases, y te puede ayudar a entender rapidamente donde esta el codigo que necesitas ver o modificar.

    En python, a las clases le aparecen metodos y propiedades en ejecucion que hacen imposible contar con una ayuda 100% efectiva por parte del IDE. Al final, te fuerzan a hacer unit tests para saber que rayos pasa en el codigo cuando se ejecuta y esto puede ser igualmente complicado si no conoces el codigo.

    Si es algo muy pequeño no debe haber problemas, pero en un sistema real con cientos de clases creo que esto crea un problema de mantenimiento grave.

    Responder

  24. JEANCARLOS

    MIren yo trbajo con Phyton hice un simulador de vuelo, tambien control de tiro .. obvio mis programas son 80% Phyton, 10% C++ y 10% Java, Phyton no es tan veloz en tiempo real algo que java si me permite hacer mis conexiones, En lo tecnico Phyton le lleva lejos a Java, pero depende ah que esta orientado cada uno: Recordar … Google (60% Phyton); youtube (90%phyton)… porque ellos utilizaran Phyton??

    Responder

    • Mario

      Python es un lenguaje rapidísimo en la búsqueda de datos y minería.. Gogle y yoyube lo usan esencialmente para realizar sus “Buscadores” ya que en esta áreas de la programación python le gana lejos a java y a cualquier otro lenguaje. Java es un lenguaje robusto que consume recurso exponencial mente a diferencia de python.Python fue creado para realizar minería de datos y Java para ser multiplataforma… Cada uno tiene sus ventajas en sus respectivos campos… (“Los lenguajes no pasan de moda si no que se pierde su campo”)

      Responder

    • yoyo

      para venderte el cuento que es mejor.

      Responder

  25. Trinedol

    Java es una vestia come recursos, Python no y menos si lo usas en plataforma Linux 🙂

    Responder

  26. […] exalumno de la Universidad Carlos III y autor también de un tutorial de Python.  En un post (Java vs. Python) su blog encontré con esta cita, con la que estoy totalmente de acuerdo: Tengo la impresión de […]

    Responder

  27. wuill

    a ver youtube no esta escrito en python, esta escrito en PHP el 50%, parte del codigo tal vez esta hecho en python un 5% o 10%, recordar q Youtube aparte de usar PHP, usa Javascript, XML, Mysql,(la verda no se si a un usa Mysql), Ajax, HTML5, Flash, un 10% de Java, CSS, te lo digo ya q estube leendo la API de Youtube, aparte de ser desarrollador web con PHP, y JSP, cada lenguaje tiene sus cosillas…! cuando ves algun video en algunas paginas veras al final algo como .php

    Responder

  28. […] en: MundoGeek MeneameBitacorasRedditDeliciousGoogle BuzzFacebookTwitter Esta entrada fue publicada en Geek […]

    Responder

  29. Ruben

    Bueno, con lo poco que sé sobre programación, en c++,visual basic, bisual.net, java netbeans y python, lo único que puedo decir es, el lenguaje que mas me ayuda en la programación es Java Netbeans, es mas fácil, amigable y te ayuda bastante en el momento de programar.

    Responder

    • Gato con bOTAS

      ignorante Netbeans es un IDE, el mismo que esta diseñado para JAVA,JAVA FX ,Php y Perl

      Abeis enojado al gato y no conviene enojar a este GATITO

      Responder

    • Alden

      Netbeans es un IDE para programar en java como eclipse y otros y tiene plugins para otros lenguajes como php, c++, etc
      yo he probado java y python, java es muy dificil pero tienes demasiada información en cambio python es facil pero con poca información en español en comparación con java aunke eso está cambiando

      Responder

  30. Para mi es cuestion de funcionalidad (donde y para que)

    C# = Programar algo para salir de apuro con API y no WEB

    C++ = De manera eficiente sin API

    Python = Programar mis cosas para linux con miles de posibilidades y con GTK, para web, le falta madurar Django

    Java = Multitodo, en especial para programar android

    Responder

  31. Solkaer

    Java es muy pesado, pero es un buen lenguaje y te facilita una programación estructurada.

    Responder

  32. Gato con bOTAS

    Últimamente se esta incrementando el Uso del lenguaje PHP por su flexibilidad y sobre todo en el bajo presupuesto que requiere realizar un proyecto en el mismo, y el tiempo de desarrollo es menor.

    REALIZAR un proyecto en Java es costoso, ya que no hay muchas personas que dominen bien el lenguaje.

    miau!

    Responder

  33. albondiguilla

    Android también es de Google, y las aplicaciones de Android qué son … JAVA.

    Aun así, no estoy defendiendo Java sobre otros, máxime porque no conozco Python.

    Seguro que como todo en la vida, tiene sus pros y contras y dependiendo del contexto será más apropiado uno u otro.

    Responder

  34. Mario

    JAVA PARA RATOOOOOOOOOOOO

    Responder

  35. Anónimo

    Java me encanta para hacer aplicaciones de escritorio y es útil cuando diseño paginas Web.

    Responder

  36. D. Rubio

    Antes de entrar a Ing. Informática aprendí a programar con Python.
    Ahora nos están enseñando a programas con Java y a los compañeros les cuesta mucho entenderlo por la complejidad de su sintaxis, en cambio yo que ya tengo las ideas claras sobre programación solo tengo que aprender la sintaxis.
    Moraleja: aprende a programar con Python y ya aprenderás la sintaxis de otros lenguajes.

    Responder

  37. franjjs

    He desarrollado en python y en Java.. tb en otros lenguajes.

    Me gustan ambos lenguajes y cada uno tiene sus pros y contras..

    Pyton es dinámico, si todo lo basas en dict, list, etc… necesitas tener muy buenos developpers para que sea mantenible, y que el código sea bueno de verdad.

    lo q no me gusta de python es la gestión de memoria, multithreading, el GIL, etc.. el garbage collector es lamentable y en grandes proyectos si quieres afinar en rendimiento es un dolor de muelas…

    El Java me gusta, se estructura muy bien, el paquetado me parece más currado q el de python, el multithreading a años luz, etc, etc, etc…Los developpers no deben ser tan buenos, con que sean buenos ya estructuran el código bien.

    De Java no me gusta la instalación, no poder tocar en producción cosas, etc… en python es editar el fichero y listo.

    Responder

  38. JavaFx

    Java para mi es lo mejor, y puede complementarse con Python 😛 Java es muy eficiente, pero ya se viene el nuevo futuro de la programación Orientada a Objetos… JavaFX!! esperen unos 2 años y ya verán 🙂

    Responder

Deja un comentario