edición general
478 meneos
5309 clics

El lenguaje C desbanca a Java del primer puesto [ENG]

El índice Tiobe, que mide la popularidad de los lenguajes de programación entre los desarrolladores, muestra como C ha logrado alzarse con el primer puesto que ocupaba Java. En castellano www.theinquirer.es/2012/04/09/el-lenguaje-c-desbanca-a-java-del-primer

| etiquetas: programación , c , informatica
209 269 1 K 662 mnm
209 269 1 K 662 mnm
«123
  1. -TOC, TOC
    -¿Quien es?
    (20 segundos más tarde)
    -Java
  2. #2 Sun simplemente ofertó algo bueno. Un lenguaje que aumenta la legibilidad de los programas, evita problemas de punteros, evita problemas de no borrar zonas de memoria, funciona en todos lados sin cambiar una línea de código, tiene librerías para todo sin necesidad de cosas de terceros y las puedes consultar a través de Internet. Súmale que cualquiera puede proponer mejoras al lenguaje a través del proceso JCP y que esas mejoras son votadas por grandes empresas del sector de la informática como IBM, Oracle, Google, etc. Súmale que hay proyectos de terceros impresionantes como todo lo que hace Apache (todo libre). Súmale que hay frameworks para todo como Struts, Spring, Java Server Faces, Hibernate... Súmale dos grandes IDEs como Eclipse y Netbeans. Quien no lo quiera ver allá él. Que sí, que todo eso es a costa de ser más lento, pero me parece una contrapartida aceptable.

    Hoy en día haces un tutorial de J2EE y ves que absolutamente todo se puede hacer de forma relativamente sencilla y legible.

    #9 Oracle se equivocará en la gestión de muchas cosas, pero con respecto a Java casi todo lo que ha hecho es bueno. Salvo quizás negarle a Apache Harmony la posibilidad de ser una implementación oficial de Java SE (lo cual no tiene porque ser malo porque lo cierto es que veo innecesario que haya varias implementaciones, más cuando la oficial es libre). Desde que llegó Oracle Java pasa a tener en su desarrollo no sólo a Oracle sino también a IBM y Apple, con lo cual conseguirán por primera vez unificar el desarrollo para todas las plataformas. Java 8 sale este año y va a salir con todo lo que estaba previsto. Java FX ha pasado a tener una API al más puro estilo Java. OpenJDK se ha convertido en la implementación de referencia de Java. Es decir, no veo nada malo y en cuanto algo se ponga malo ten por seguro que IBM o cualquier otra interesada del sector en Java le pondrá los puntos sobre las íes a Oracle.
  3. #7 #10 Lo de Java lento es un mito a día de hoy. Que consuma más memoria por lo general vale, pero lento... tenéis variedad de benchmarks para comparar el rendimiento de C vs Java. Pensad que las optimizaciones en C son estáticas y las de Java son dinámicas, hay tareas que realiza más rápido Java que C. Además, comparar C con Java es algo poco coherente, habría que compararlo con .NET.
  4. ¡Los clásicos nunca mueren!
  5. Por contrastar con esta estadística, estas son las de Github a día de hoy:

    1. Javascript (20%)
    2. Ruby (15%)
    3. Python (9%)
    4. Shell (8%)
    5. Java (8%)
    6. PHP (7%)
    7. C (7%)
    8. Perl (5%)
    9. C++ (4%)
    10. Objective-C (2%)
    Resto: 15%

    github.com/languages
  6. ¡A por ellos Fortran 67!
  7. Me cuesta creer que Java pierda popularidad en pleno apogeo de Android
  8. Ya estamos con la misma historia de siempre.

    Para empezar, la noticia es más bien poco relevante, ya que da a entender que C ha quitado mercado a Java, cuando no es así. Ambos lenguajes tienen mercados totalmente diferentes, la fortaleza y el dominio de Java está en el lado del servidor en aplicaciones web (cuántas usaréis a diario sin tener ni idea de que están hechas en Java...), donde C no pinta nada, y algo parecido pasa a la inversa con Java en el escritorio, donde salvo contadas excepciones no hay muchos casos de éxito. Si a Java le han quitado cuota de mercado, que lo dudo muy mucho, sería en favor de C#, PHP, Ruby... no C. Si vas a participar en una carrera de coches, cogerás un deportivo, si tienes que arar el campo, un tractor, porque hacerlo al revés sería estúpido, lo mismo que intentar compararlos.

    Y después están las críticas y chistes "de barra de bar", claro, ésas no fallan en el antiJavismo de Menéame.

    Java admite críticas legítimas, como, qué sé yo, ausencia de funciones lambda y de primer orden, carencias en la implementación de tipos genéricos, por ejemplo. Pero curiosamente cuando preguntas al 90% de los críticos de Java no van más allá de "es que es lento y consume memoria", porque han oído campanas y no saben dónde. Java fue "lento" en las primeras versiones, de algo que hace ya mucho más de una década. Como cualquier lenguaje que corre sobre una máquina virtual, cuando se ejecuta una aplicación Java hay que iniciar la máquina virtual, algo que consumirá su tiempo y memoria. Pero, ¿sabéis cúal es la trascendencia de consumir unos segundos y unos pocos MB de memoria al inicio en una aplicación empresarial que idealmente estará funcionando ininterrumpidamente durante semanas o meses, con gigas y gigas de memoria a su disposición? Ninguna. Por no hablar de que en las máquinas virtuales modernas (y no tan modernas), existe algo que se llama compilación just-in-time, que de forma dinámica compila a código NATIVO, y a veces con mayor eficiencia que muchos compiladores de C.

    Pero nada, supongo que las críticas vienen de estudiantes que han dado un par de asignaturas de programación y C (aunque repito que no son comparables) les parece más de "pros" (por cierto, el manejo manual de memoria debe de ser la mayor causa de bugs de la historia, o buscad "segmentation fault" o "buffer ocerflow") y las empresas que invierten cada año millones y millones de euros en proyectos con Java son gilipollas.

    Como digo, Java admite críticas legítimas, pero debo de tener mala suerte porque las que me topo siempre no lo son. Y ante todo soy pragmático y "defiendo" a Java no porque sea ningún devoto, sino porque es lo que hago para ganarme la vida desde hace cerca de 10 años, y me la gano bastante bien, sobre todo desde que salí de España.
  9. #79 Todos los lenguajes de programación son orientados a los programadores, no a los usuarios. La idea es facilitar (y muchas veces posibilitar) la prorgamación, cosa que al usuario se la trae al pairo.

    Los lenguajes dinámicos son una gran avance, y la velocidad no es lo fundamental, la mayoría de las tareas no exigen mucha "velocidad", y ya suelen estar implementadas en lenguajes compilados, como manipular los dibujos en la pantalla, tratar estructuras de datos complejas (como hashes y listas), etc.


    Por otro lado, el C++ es uno de los peores lenguajes inventados, comenzó bien, pero hoy en día es un horror (peor que el Java). A menos que desarrolles sistemas operativos, o librarías de manipulación de datos o cálculo, no tiene demasiado sentido desarrollar en un lenguaje compilado. El beneficio no justifica el coste.
  10. Pues me alegro, Java estará bien para algunas cosillas, pero para aplicaciones de uso diario es una mala idea, no cuesta tanto hacerlas en C y van más rápido consumiendo menos memoria. Además las aplicaciones Java que tengo cada día en marcha van tragando más y más memoria... Aunque la última vez que debatí esto en Menéame me llevé unos cuantos insultos y negativos, y lo mismo en otros sitios :-S Me sorprende no ver algún programador Java de esos por aquí :-)

    Aunque para lenguaje lento Phyton, lo estoy aprendiendo ahora y es muy sencillo y cómodo, pero lento es como él solo.

    #10 "Que sí, que todo eso es a costa de ser más lento, pero me parece una contrapartida aceptable."

    ¿Contrapartida aceptable para quien? Para el programador quizás, para el usuario en general no, sobre todo si el hardware es un teléfono de cama baja. Especialmente en Symbian, lo que cuesta encontrar algo que funcione bien y no de mucho por culo entre toda la morralla que hay (casi toda en java)...
  11. Axioma generalista:
    El mejor lenguaje es el que yo conozca y use y los demás son peores 'per se'.
  12. #39 Más razón que un santo. Hay una enorme cantidad de gente que critica Java por cosas que no son Java, como quien dice que Spring es pesado y lento o que Hibernate hace cosas muy raras. Qué tendrá que ver... Es como criticar C++ porque Windows Vista es una mierda, un sinsentido.

    Luego están los que directamente no tienen ni puñetera idea de programar, y cuelgan el muerto al lenguaje:

    File f = new File("c:\temp.txt") // Esto no funciona en Linux, y eso que dicen que Java es multiplataforma, menuda mierda.
  13. SUN demostró con Java que si eres capaz de publicitar bien la mierda, vendes mierda a porrillo.
  14. #2 Estoy muy de acuerdo contigo.

    Hace muchos anos que no programo, pero lo de Java es demencial. La moto que vendieron con que era independiente de la plataforma y eso sería la panacea.

    Si al final hay que meter el maquina de Java, de panacea nada, por no hablar de que incrementa los tiempos de ejecución.

    En mi opinion un buen programadador de C es alguien que entiende como funciona un ordenador, procesador, memoria, etc. Un buen programador de Java es alguien que sabe utilizar clases y objetos.

    Por mi C, forever, si el desarrollo de procesadores y recursos no hubiera sido el actual, Java no se hubiera comido un colin, pero como se ha incrementado brutalmente el procesamiento ylos recursos, esta compitiendo como el que mas.

    Y es mi opinion de no experto, que nadie se moleste, solo es una opinion.
  15. Como nota a tener en cuenta os sugiero a todos que os leáis como se hace este indice TIOBE, ya que es un poco "raro" ... se basa en las búsquedas del termino en los buscadores y otras lindezas del estilo.
    No es para nada objetivo para determinar si un lenguaje es más popular que otro, simplemente que en ESTE índice está más arriba.
  16. Los lenguajes de programación son como la brocha de un pintor, solo es la herramienta. La única diferencia es que en este caso los pintores son unos frikis.
  17. #18, a mí Objective-C siempre me ha parecido C con implantes Borg. Es algo muy turbio.

    "C ya no se usa, C es muy viejo, C ha sido desbancado por C++ y Java"

    Pues mira.
  18. Joder, el cuarto Objetive-c , como tiran los iphones
  19. #3

    Fortran no, pero COBOL hay un huevo.
  20. Python es la respuesta hermanos, y cuando estas haciendo algo tan bestia que necesitas potencia extra lo extiendes con modulos en C y a tirar.

    Todo lo demás, cuentos de la lechera.
  21. #4 Perdona, pero todos y cada uno de los profesores de la facultad de ciencias de la UGR programa en Fortran. Y es que no saben ningún otro lenguaje. Fortran 67, siquiera 90.

    Así que sí, Fortran hay un huevo, por lo menos en sectores científicos.
  22. #10 Cuando has dicho Struts, Hibernate, Netbeans... me ha dado un escalofrío.
  23. No soy precisamente un defensor de Java, pero me encantaría todos los que están por aquí, que si "I love C" y cosas así, verlos programando un ERP en C, que sí que sí, que se puede, por supuesto, pero se lo dejo a los frikis, porque no es optimo (óptimo no es la palabra, pero ahora mismo no me sale la que tengo en la punta de la lengua :P)

    Cada lenguaje tiene su mercado. Ni el de Java es el de programar a bajo nivel, ni el de C a alto nivel. Cada cosa para lo que es, no me seáis fanboys por favor.
  24. /* Me sorprende que nadie lo haya hecho todavía... */
    <include blabla.h>
    void main(int argc, const char* argv[]) // perdon si me cuelo en algo, hace mucho que no ceceo :-P
    {
    while(1)
    {
    printf("%s wins!",dameLenguajeFavorito());
    sleep(500); //esta me imagino que será de c++ y no de c, pero me dejáis usarla, no??
    }
    }
  25. #10 Amén. La gente parece que sigue empeñada en creer que Java es una mierda. Java ha cambiado mucho en los últimos años, y quien no quiera verlo es que está ciego. El chiste del TOC, TOC ya está un poco manido.

    Lo que muchos denominan un lenguaje lento y malo, ha servido de base para Android (aunque con Dalvik en vez de la típica JVM), se han creado lenguajes basados en él como Groovy o Scala, que a su vez han servido de base para frameworks como Grails o Play! que mueven sitios con millones de visitas como sky.com.

    La mayoría de los que tanto se quejan sin argumentos de Java tiene cero o menos experiencia programando en él.
  26. #57 Si me permites un corolario: Las críticas hacia un lenguaje siempre serán directamente proporcionales al desconocimiento del mismo.
  27. #79 Genial. Has descubierto que los lenguajes compilados como C++ son más rápidos que los dinámicos. Vas para premio nobel de informática o algo así. </irony here, ofc>
  28. #18 Llamarmierda inmunda es una falta ded respeto, si prefieres otros lenguajes mejor para ti, pero habrá personas a las que les guste Obj-C. Además es un lenguaje diferente.
  29. 32 Bash 0.367%

    Porcentualmente será poco, pero anda que no hay sistemas funcionando y en buena forma gracias a shell scripts :-)
  30. Java no es lento de por si, eso si, gasta cantidades ingentes de RAM lo que puede penalizar la velocidad sobre todo en la carga del programa o si el sistema operativo pagina su memoria...

    Es un buen lenguaje que ha evolucionado bastante y tiene muchas posibilidades que hacen todo mucho más sencillo.

    C también es un muy buen lenguaje aunque da muchos más quebraderos de cabeza a la hora de programar y portar código.

    De todas formas eso de medir un lenguaje según las referencias tampoco lo veo muy infalible. Probablemente cuando salga Java 8 habrá un boom en este indicador que no se corresponderá con su incremento real de uso.

    Salu2!!
  31. Java es un lenguaje. Como lenguaje le da mil vueltas a C, lo cual es lógico ya que es un lenguaje más moderno, basado en el propio C.

    Otro tema es la máquina virtual de Java. Siempre hablo de hoy en día. Aquellos que se quejan del Java de hace 10 años, pues hablan sin ningún tipo de conocimiento. Como todo, la Máquina virtual tiene sus pros y sus contras. El contra, hoy en día no tanto la velocidad (ver benchmarks), sino que necesitas arrancar toda la máquina virtual para ejecutar un "holamundo". Pero están trabajando ya en eso (por fin).

    Si necesitas un programa para unas necesiadades muy específicas con poquísimo consumo de memoria y afinar al 100% en rendimiento en un sistema empotrado, C es tu amigo, java no es una opción. Pero como véis, son necesidades muy concretas. Para un proceso de servidor, Java es perfectamente viable (cassandra, kproxy). Para una aplicación de escritorio, Java es perfectamente viable (eclipse).

    Los que dicen que es lento o que gasta cantidades ingentes de memoria habría que decirles lo siguiente: No es tanto problema de la máquina virtual, sino de los inútiles que programan esos programas (estarán incluidos aquellos que se tanto se quejan?). Me parto la caja con el amigo que se quejaba de SAP. Java al ser mucho más sencillo que C invita a cualquiera a hacer programas, eso es bueno porque al ser sencillo mejora la productividad del buen profesional, pero también atrae a chapuzas, inútiles y ameteurs que hacen mierda y luego achacan al lenguaje (al lenguaje! nótese la estupidez) que es lento, que tiene mal rendimiento, etc.

    Que Java está perdiendo protagonismo? Lógico, están pegando fuerte otros lenguajes que se comen el nicho de java, aunque no el de C. Y algún día vendrá un lenguaje mejor que desbancará a Java y C se quedará para sus cositas, como Cobol, fortran, y el mismo Java, para mantener y mejorar software antiguo.
  32. #11 Bueno el kernel de Linux( el que usa Android ) esta escrito en C y solo hace falta ver a Torvalds alabándolo( o cagándose en el resto de lenguajes) . También puede tener a ver con que se este buscando reciclar el hardware y exprimir mas su potencia y en esto C gana a Java
  33. #60 C en las manos de un programador sin conocimientos en seguridad puede ser peor que Java,la maquina virtual ayuda a que no se cuelen tantos virus
  34. #26, sleep es POSIX, es histórica de C:


    CONFORME A
    POSIX.1

    FALLOS
    sleep() puede estar implementada con SIGALRM; mezclar llamadas a alarm() y a sleep() es una mala idea.

    Utilizar longjmp() desde un manejador de señales o modificar el manejo de SIGALRM mientras se está dur‐
    miento, producirá resultados no definidos.

    VÉASE TAMBIÉN
    signal(2), alarm(2)
  35. #45, hombre, los comandos las funciones propias del lenguaje suelen llevar llamadas al sistema por debajo. En Unix, fopen se implementa mediante open, printf mediante write, scanf mediante read, etc...

    El fallo es que sleep históricamente se implementaba por encima de alarm, y la idea de que las esperas se utilizasen si no se están usando temporizadores parecía razonable (no). Y lo pone en los estándares: "Interactions between alarm() and any of setitimer(), ualarm(), or usleep() are unspecified".

    En Linux, por ejemplo, no hay problema ya que sleep se implementa sobre nanosleep y esa no hace el idiota con los temporizadores. Pero vaya, es un "no debes", como "no debes usar gets" o algunas funciones no portables.
  36. #17 A mi también, pero por Hibernate que no es un framework si no un ORM, pero Netbeans lo ha catalogado bien como IDE #10
  37. En realidad nunca ha estado por debajo. En qué está escrito Java? Pues eso.
  38. #38 Estas hablando de historias que no tienen que ver con el jre por defecto. Que haya inutiles que hacen cosas lentas y cutres no implica que los que nos desenvolvemos bien con java hagamos las cosas dpm.
  39. #47 Es obvio que necesitas una capa de abstracción para que un lenguaje sea independiente de la máquina, no engañaron a nadie. Obviamente necesitas una VM para cada arquitectura y S.O., pero gracias a eso puedes cambiar una máquina por otra y que tu programa siga funcionando, sin recompilar!!. Quién no vea una ventaja en eso es que no entiende la importancia que supone dicha abstracción.

    Por otra parte, un buen programador en C puede ser un mal programador en Java y viceversa. Si es cierto que C te exige conocer el funcionamiento a más bajo nivel, lo cual está bien para fines didácticos, pero para un proyecto grande de verdad, con capacidad de procesamiento muy grande, crees que hacer una gestión manual de la memoria es bueno? Trabaja con un proyecto mínimamente grande en C y verás las risas de memory leaks.
  40. A mi lo que mas me gusta de Java es Processing. Os recomiendo a todos los artitas, diseñadores o gente con inquietudes tecnologicas con pocos conocimientos tecnicos que lo pruebe.

    #49 Yo conocí a alguien una vez que decía "C es como follar, hay que saber".
  41. #70 Dependerá del tipo de producto que quiera la empresa, digo yo, no? Me aprece un axioma atrevido eso de que si lo quiere "bien" pide Java.
  42. #93 Yo soy joven y defiendo que todas las aplicaciones deberían estar hechas en lenguajes compilados (especialmente las exigentes como juegos o similares) y sólo en casos puntuales se deberían hacer aplicaciones en otros lenguajes (por ejemplo ciertas aplicaciones web que deben funcionar en cualquier SO o un cliente genérico para móviles etc). El problema no está en jóvenes o viejos, está en la poca consideración que se tiene hacia la informática y en que sólo parece importar que la aplicación funcione en un PC recién comprado y da igual que cuando conviva con cientos de programas más en el PC del usuario pueda funcionar como debe.

    De hecho siempre he pensado que el mayor problema de Symbian fue Java, y que si bien Android tiene Java mejor implementado que Symbian también le terminará pasando factura, sobre todo cuando la gente deje de cambiar de teléfono cada año y vea que los androides no aguantan el tipo (por que no van a aguantar).
  43. #40 Es cieto que Cassandra esta hecho con Java, pero Facebook ya no utiliza Cassandra. Utiliza HBase que curiosamente tambien esta hecho en Java.

    Saludos.
  44. Me gustaría saber la experiencia profesional con Java que tienen aquí algunos que critican a Java con tanta vehemencia.

    Aunque ya me lo imagino yo: ninguna.
  45. De parte de un programador de Java, C y php:
    En mi opinión una de las mayores virtudes de Java como lenguaje, aparte de derivar de C, es que es fácil de enseñar, de aprender y de paso elimina las restricciones y convenciones que en otros lenguajes como C fuerzan a realizar un código casi eficientemente impecable (pero no por ello más robustos); todas las cuales, sumadas, son las que provocan que Java vaya 'lento' (hablo por ejemplo de uso y abuso de cualquier tipo de Collections, concatenaciones de Strings, etc.).

    Esto no significa que Java sea lento, sólo que usarlo con menos experiencia y conocimientos que los más expertos hace que escribamos código que se ejecute más lento (pero no menos robusto). Con el tiempo, al igual que cuando uno practica un deporte, adquieres experiencia, y realizas buenas prácticas sin despeinarte que hacen que la JVM vuele, pudiendo tirar ese código que dicen muchos que en benchmarks es igual o casi de veloz que C.

    Por otro lado el indice TIOBE a grosso modo cuenta los resultados de buscar '<lenguaje> programming' en los 9 buscadores más utilizados, lógicamente ésto no se puede usar como infalible índice de penetración en el mundo de la programación.

    El lenguaje C es ampliamente utilizado en enseñanza, lleva aquí muchísimos más años y existen enormes cantidades de recursos escritos sobre él, por eso es muy dificil que acabe eclipsado por muchos lenguages, más si es un lenguage todavía vivo con enorme fuerza en las tareas donde la ejecución en tiempo real es requisito obligatorio (sin tener que recurrir a ensamblador). De ahí que esté tan arriba pese a que sea dificil juntar un grupo heterogéneo de programadores de los que gran parte de ellos digan que usan C normalmente. Y por eso que los lenguages de más moderna adopción como PHP o C# parezca que no tienen apenas cuota cuando una busqueda sobre los empleos ofertados en el mundillo arrojaría un 40% del total entre ambos perfectamente.

    En fin , pienso que ojalá siempre tengamos estos problemas y que gracias a esto nunca tengamos que dejar de aprender.
  46. Estais todos equivocados, tarjetas perforadoras. Así codifican los hombres de pelo en pecho :-D
  47. #35 Cassandra es la base de datos que usa Facebook, entre otros, y está hecha en Java :-P
  48. #42 Joer, estos cambian de base de datos todos los años, es imposible seguirles la pista xD

    #43 Aquí te cuentan algo ( en.wikipedia.org/wiki/Cassandra_(database) ), pero es que cambian más de arquitectura que de bragas.
  49. No se puede comparar a JAVA y a C en cuanto a si uno es mejor que otro, cada uno tiene su mercado y su porqué. C es más rápido y JAVA más portable.
  50. ¿Aquí es donde se comparan dos lenguajes de programación que se crearon con muchísimos años de diferencia y que encima se dirigen a áreas de la informática totalmente diferentes?

    Ok, C apesta, y Java también. Lo que mola es IA32.
  51. Más bien java pierde popularidad, C siempre está y estará ahí, es necesario en muchos escenarios donde no hay otra opción
  52. #70 "Cuando una empresa quiere hacer algo bien..."

    Mmm... ¿Facebook?, ¿Twitter?, ¿Foursquare?
  53. No me extraña que esté arriba en el ranking, la mayoría de los lenguajes de programación que han sacado después de C son un derivado de este que lo mejoran en algún o varios aspectos.
    Nunca será una pérdida de tiempo aprender a programar en este lenguaje y la mayoría de programas que hagáis con este lenguaje, sobre todo los sencillos, luego los podreis aprovechar para otros lenguajes.
  54. #10 No tengo ni la más remota idea de lo que estás diciendo, pero tienes pinta de saber un huevo, así que te voto positivo.
  55. Es curioso, leo varios comentarios y parece una especie de "a ver quién mea más lejos" por parte de defensores de Java, .NET o C/C++.

    Por mi parte, debo ser un bicho raro, soy arquitecto de software, 16 años de experiencia en programación, he sido profesor de Java, he programado en C, en C++, en Ruby, en C#, en Delphi... y lo que he sacado en claro en todo este tiempo es que el lenguaje de programación ayuda en parte, pero es el programador, y más en concreto el equipo de desarrollo, el que tiene que funcionar. Por poner un ejemplo, se le puede dar el lienzo más caro con los mejores óleos a una persona con arte mediocre, y conseguirás un resultado mediocre. En cambio, Goya era capaz de hacer arte con un carboncillo.

    Java es un gran lenguaje, como también lo es C# (después de todo, son bastante parecidos), como también lo es C. Tienen primas feas, como Cobol o Visual Basic, que aun así hay gente que las saca a bailar. No me gustaría estar en su pellejo, pero les entiendo, a un lenguaje también se le puede coger cariño, y seguramente sean capaces de hacer maravillas. Lo mismo para los IDE, hay gente que le encanta eclipse, otros como yo que prefieren el Visual Studio, pero que uno te parezca mejor que el otro no implica que el otro sea malo.

    Y sigo diciendo, el desarrollo de software es un arte, exige creatividad, exige compenetración en el equipo, unos engranajes bien engrasados, y entonces se hará algo grandioso, sea en lo que sea. Lo malo es que esto es complicado de conseguir, en especial en España, dónde las empresas no saben entender cómo funciona realmente un equipo de software, ni les entra en la cabeza que un técnico experto puede tranquilamente ganar más dinero que un gestor, sencillamente pertenecen a ramas diferentes del trabajo.

    Y a los que hablaron de Hibernate, Spring o Struts para expresas lo bueno que puede llegar a ser java, les recuerdo que ese trío de ases también existe en .NET, no hay que cerrarse en banda a nada nuevo y hay que evaluar todo lo que existe sin descartar absolutamente nada simplemente por ser un fanboy.
  56. Y por supuesto, los mismos que ponen a parir a Java aquí hablarán maravillas de Android y dirán que iPhone es una mierda.
  57. Que java sea lento es un mito, lo de la memoria es totalmente real. Pero lo la memoria difícilmente se va a poder solucionar por cómo está pensado java. ¿ Quieres una gestión de memoria eficaz ? Pues no piense en Java. ¿ Quieres compatibilidad ? No pienses en C.
    Es así de sencillo el lenguaje debe ser decidido según tu objetivo.
  58. #5

    Y los bancos, administracion y Telefónica, en COBOL ....
  59. #70, pues yo si creo que es por una moda. O dicho de otro modo, das una patada a una piedra y descubres a tropecientos programadores de Java, a los que puedes contratar por unas migajas.
  60. #38 ¿Crees que por decir más palabras en inglés tu argumento -tus quejas no tienen NADA que ver con el lenguaje, sino con la (supuesta) mierda de implementación- va a resultar más válido?

    Te remito a mi mensaje en #86.

    PHP viene de "Personal Home Page", y mira por dónde, el ¿70%, 80%? de las aplicaciones que usas a diario en la web están hechas en un lenguaje para hacer una página personal o para controlar lavadoras (y otro porcentaje grande, en C#, que fue un clon de Java). Qué cosas, ¿eh?
  61. Si es que C siempre ha sido de lo mejorcito: es de lo más sencillo y se puede programar prácticamente todo.
  62. #25 Solo hace falta haberlo usado. Java está bien, hasta que el cliente de Data Protector (en Java) tarda eones en actualizar el estado de un filesystem, o al intentar evolucionar un ticket Remedy se queda colgado al acceder al public log (en el cliente Java), o cuando refrescas la cesta de download de parches SAP (java...), o al intentar refrescar las alertas en el cliente Openview se queda idiota (Java)...

    Nunca te fíes de un sistema ideado para lavadoras.
  63. #199

    Calibre (Python + Qt)
    Eclipse (Java + GTK)
    Todos los programas de Android (Java)
    Javascript en todos los sitios web.
    PHP, Python, Java, Ruby, Perl, Scala... en servidores web (incluido Google).
    C# en los programas modernos de Microsoft.


    > mejor hacerlo directamente con un lenguaje compilado y pensando en la escabilidad desde el minuto 0


    Ya, porque tú lo dices, y ni idea del sobrecoste humano que eso significa (como si fuese lento, o los ordenadores costasen menos que los programadores), y técnicamente el problema de los fork() en programar en código nátivo.

    Es fácil hablar, y asegurar que todo el mundo está equivocado. Vaya con el nivel informático, sois unos gurús. Todos los demás están equivocados, desde Zuckerberg hasta Guido van Rossum.
  64. #3 Más bien será fortran 77, o si acaso, que lo dudo, fortran 66. Y sí, se usa, hay muchas librerías de métodos numéricos muy eficientes. Se utiliza en software de calculo térmico en industria aerospacial.(Esatan).
  65. Lo que queráis, pero cuando una empresa quiere hacer algo bien, lo único que se le pasa por la cabeza es Java, ni PHP, ni C ni ninguna copia de éstos que incluye .net
    A cada cual lo suyo, y Java en cuanto a robustez, seguimiento de estándares, sencillez y uso profesional, no tiene a nadie de cerca.
    ¿Que es más lento? Vale.
    Pero ¿qué es más caro, un procesador un poco más rápido o unos cuantos programadores haciendo las cosas mal, por libre y un TCO desorbitado?

    Cuando las grandes compañías apuestan por Java, no creo que sea por una moda.

    Oracle sucks y todo eso, pero es un ad-hominem como la manga un abrigo decir que Java pierde popularidad.
  66. #93 El que confunde las cosas eres tú. Las herramientas son para los programadores, que no tiene nada que ver con las aplicaciones, que son para los usuarios.

    A los usuarios no les interesa nada del lenguaje de progración, y que se use lenguajes dinámicos tiene poca relación con la velocidad final de las aplicaciones, que dependen de muchas otras cosas.

    Eso no significa que no se programen mierdas en lenguajes dinámicos o Java, peor es absolutamente ridículo que en una discusión sobre la "herramienta" que usan los "expertos" se afirme que "no se piensa en el usuario". Es saber muy poco, desde para qué se inventan y desarrollan los lenguajes de alto nivel (¡para los programadores!) hasta qué influencia tienen en las aplicaciones, la velocididad, o la experiencia de usuario.

    Por cierto, también muy poco conocimiento de la realidad, como que todo en Android es Java, o que programas como Calibre están hechos completamente en Python (y por eso es multiplataforma), o que el gigante Eclipse está hecho enteramente en Java (y va muy rápido para todo lo que hace), o que incluso hasta Google está programado en lenguajes de alto nivel (antes mucho de Perl, ahora en Python).


    Insisto: al usuario se la trae al pairo el lenguaje, y se hacen mierdas de programas en C++ o en Java.
  67. #98 Yo tengo 4 y sólo con eclipse + firefox + emulador y la memoria estaba ya a tope... no me puedo ni imaginar el sufrimiento que tiene que ser usarlo con sólo 1 giga.
    Bajo mi punto de vista el problema del consumo de memoria no es tanto de Java como de la programación de alto nivel. Facilita la vida al programador y hace mucho más entendible el código pero el (ab)uso de estructuras que guardan información redundante y de capas y capas de abstracción hace que el consumo de memoria y procesador se incremente mucho.
  68. #139 Estoy totalmente de acuerdo con lo que dices, aunque seas joven :-)

    No suelo votar pero tu frase:

    "sólo parece importar que la aplicación funcione en un PC recién comprado"

    Se merece un positivo por que es mas cierta que haber Dios jaja!!
  69. #29 Llevo hace tiempo diciéndolo y todo el mundo pasa de mí: los nuevos lenguajes de programación parecen orientados desde hace tiempo hacia el programador y no hacia el usuario, y eso es muy malo, porque se priorizan los medios sobre el fin. En los lenguajes habitualmente considerados "buenos" por la mayoría de autoproclamados gurús, especialmente los que se apuntan a cada carro que ven ignorando cualquier lenguaje con más de 4 años de antigüedad, el código se termina antes, pero suele ser de peor calidad (y hablo de velocidad, requisitios mínimos innecesariamente altos, etc.).

    Y ahora, dos ejemplos reales (nada de benchmarks). Ejemplo número 1: aplicación científica para un sistema de control en tiempo real, donde no sólo hay un límite estricto de tiempo, sino que además cuanto más rápido sea el sistema más numéricamente estable es el algoritmo: cierto lenguaje dinámico tardaba 6 horas en ejecutar N iteraciones del algoritmo. Portado a C++, usando las mismas N iteraciones, el resultado se redujo a un minuto. 360 veces más rápido. Ejemplo número 2 (más de andar por casa): aplicación pequeña de consumo propio y de uso diario, que tarda 6 segundos simplemente en cargar la interfaz, más otros tantos si quiero abrir un cuadro de diálogo de abrir archivo. Cuando me harté y la porté a C++, se abría en un segundo, y todo en general era mucho más rápido. Después de añadirle unas 4 veces más funcionalidades, seguía igual de rápido.

    Aunque en los dos casos hable de C++, no quiero decir que éste sea la panacea (C probablemente es más rápido, por ejemplo), pero a la eficiencia (velocidad, al fin y al cabo) se le da mucha menos importancia que la que tiene, y esto es porque pensamos más como programadores que como usuarios. Por cierto, la portabilidad tampoco es siempre prioritaria: pensad en todo el software "de consumo interno" (que es la gran mayoría, hasta donde sé. Y sí, también cuenta la rapidez, lo sé de primera mano). Por no hablar de que C también permite portabilidad con un pelín de maña.

    #47 Lo de no pensar en el ordenador como un todo es casi un dogma en muchos libros de programación. Lo típico de la ocultación, no pensar en "detalles de implementación", etc. Desde el momento en que se considera que la "abstraction penalty" es razonable (cuestión de gustos), es lo normal, pero yo tampoco estoy de acuerdo.

    P.D.: ni Eclipse ni Netbeans me gustan un pelo, prefiero el Visual Studio. En cuanto a editores sí que diría que es pura cuestión de gustos y cada programador hace lo mejor para él.

    (Perdón por el tochaco)
  70. #85 D'oh! Iba a responder y sin querer te he votado positivo. Bueno, la respuesta: al usuario no se la trae al pairo precisamente porque el lenguaje influye en el resultado final. ¿De verdad nunca has acabado hasta los huevos de programas como JDownloader o algunos clientes de torrent, que aunque ofrezcan una funcionalidad muy buena son insufriblemente lentos? Yo sí, muchas veces. Y es por eso por lo que luego puse el ejemplo del programa que inicialmente hice en Java, pero traduje a C++ cuando me harté de lo lento que iba.

    No estoy nada de acuerdo con que C++ sea malo. Estuve unos cuantos años buscando un lenguaje que se ajustara a mi modo de pensar y hasta que no conocí C++ a fondo no me di por satisfecho. Cuestión de gustos.

    Otra cosa es que en el mundo de la empresa ya entre en juego el tiempo de desarrollo, pero ésa es otra cuestión. Yo hablo del resultado final del código, y sigo manteniendo que la velocidad es un factor, en tanto que el usuario puede notar la diferencia.
  71. ¿Nadie lo ha puesto todavía?

    www.youtube.com/watch?v=1S1fISh-pag
  72. #79
    1. A la mayoría de la gente lo primero que le importa no es "la velocidad" sino "la pasta". Lo que ganas con el programa menos lo que gastas en desarrollarlo, evolucionarlo y mantenerlo.

    2. El caso ese de 360x de optimización, es muy probable que no fuera una reescritura línea a línea sino una mejora de la implantación del algoritmo, hay varios benchmarks por ahí de C/C++ vs Java y no he visto nunca esas diferencias de rendimiento. Además, en el peor de los casos (algún módulo que necesita una optización enorme a bajo nivel) siempre podrías desarrollar el 99% de la aplicación con Java (+barato de desarrollar y mantener), escribir los algoritmos críticos en C y usarlos de forma nativa mediante JNI (la interfaz nativa de Java). Yo mismo lo he hecho varias veces.

    3. A mí la eficiencia de un programa, su fluidez de uso, etc., me importan sólo de forma relativa. Soy un programador y para mí es un orgullo hacer una aplicación rápida, estable, usable, mantenible y legible, pero estos aspectos no son todos igual de importantes desde un punto de vista profesional. El aspecto más importante en una aplicación empresarial es su rentabilidad. Nadie quiere usar una aplicación muy lenta, por lo tanto no será rentable. Nadie quiere usar una aplicación difícil de manejar -> poco rentable. Pero mejorar décimas de segundo en ciertas operaciones a veces no compensa con el coste de desarrollo y mantenimiento.

    Me encanta programar, me gusta C, me gusta Java, y me gustan muchas cosas, pero hay que ponerse siempre en contexto y tener una visión más amplia que el "bajo nivel" y "rapidez" de un lenguaje.
  73. #10 Pongo la contrapartida de una parte de lo que dices (aunque comentas el tema de eficiencia al final):
    "evita problemas de punteros"
    Si, soy raro. Me gustan los punteros de C. Me dan más control sobre lo que hago, y eso me gusta. ¿Es más complicado? Si, pero eso no es malo.

    "evita problemas de no borrar zonas de memoria"
    Con el Garbage Collector, que resta enormemente la eficiencia de cualquier programa. De nuevo, ¿es más difícil hacerlo "a mano"? Mucho, y eso puede ser bueno. Si es fácil, no es potente. Si es potente, no es fácil.

    "funciona en todos lados sin cambiar una línea de código"
    Gracias a ser un lenguaje interpretado, más lento que uno compilado. De nuevo, va en contra de la eficiencia.

    "Súmale dos grandes IDEs como Eclipse y Netbeans."
    Eclipse, personalmente, no me gusta demasiado. Netbeans si, es el que uso... para programar en C++

    "Quien no lo quiera ver allá él."
    Lo mismo digo. Quien no quiera ver que no se puede poner un lenguaje como si fuese "el mejor", puesto que te puede interesar uno u otro depende de lo que hagas... lo siento, pero no, Java no es mejor. PUEDE ser mejor, dependiendo de lo que quieras hacer. No encuentro sentido a estas "guerras".

    "Que sí, que todo eso es a costa de ser más lento, pero me parece una contrapartida aceptable."
    A mi no.
  74. #85 Y para aplicaciones gráficas. Y para aplicaciones en tiempo real. No, no es tan fácil. Yo uso java en el trabajo porque, para lo que hago, necesito una cierta flexibilidad que no me da C++. En Casa uso C++ porque hago aplicaciones gráficas y con Java es impensable hacerlas.

    #191 No, ojo, que te ponía de ejemplo puesto que ponías algunos datos en lugar de hacer como la mayoría y decir "lo que no uso yo es una mierda!" y podía decir la contrapartida. Y, repito, que tengan una contrapartida no quiere decir que sea malo o peor, es solo que tienes que saber lo que quierens en cada momento, pero es algo que lanzo "en general" (y no es una critica a tu comentario, que es de los pocos razonados) porque, como ves, aquí hay muchos comentarios que, sin argumentos (porque no existen) aseguran que un lenguaje es mejor que otro. Cualquier programador con dos dedos de frente, sabe que un lenguaje tiene pros y contras y tiene que saber decidir.
  75. #223 quería decir que c no sólo es bajo nivel. Si usamos librerías se puede entender como un lenguaje de alto nivel. No comparable al mundo sap quizás pero muy versátil y potente.
  76. #4 ¡Cómo que no hay un nuevo Fortran!

    ftp://ftp.nag.co.uk/sc22wg5/N1701-N1750/N1729.pdf

    Existen compiladores GCC, de Intel, de NAG, etc. Y ya se está trabajando en el Fortran 2013.
  77. #63 a veces no se trata de si la gestion manual de menoría es buena o mala. A veces, simplemente es necesaria.

    Cada lenguaje tiene sus cosas, sin mas. Si piensas que es una mierda, quizá no estes usando el lenguaje adecuado para lo que estás desarrollando.
  78. #79 como puedes ver, #81 y #85 son dos ejemplos de lo que dices. El programador se cree el ombligo del mundo, hasta cuando esta programando.

    Si la aplicacion que utilizas la van a usar 500 personas, durante 4 anos, que importa que tu como programador pierdas tu tiempo compilando una release final por poner un ejemplo si se cambia de plataforma, y así la adaptas a la nueva, si asi cada usuario gana 5 segundo pongamos por día, en tiempo es bastante.

    La percepcion del usuario se la suda a la gente que programa y asi de bien nos va, tenemos la fama que tenemos.

    Quien diga que la velocidad no es fundamental es que es muy joven y no ha vivido otros tiempos. Como los procesadores dejen de incrementer sus prestaciones por limitaciones del material, veremos si es o no fundamental. De hecho la velocidad, la limpieza, calidad y experiencia de usuario, es lo que diferencia un buen programa de uno malo.
  79. #165 Pues será por venir de pueblos diferentes, porque en el mío decir "lo dudo enormemente" significa "lo dudo enormemente" que tu quieras darle más interpretaciones para sentirte ofendido, es cosa tuya. Porque vamos, también podría pensar que te equivocas y no que mientes, no te parece? por cierto, ya colaboro con el ala científica, ¿que pasa?¿que todo lo que no sea lo tuyo no es ciencia? que simplificación tan absurda...al menos sí estamos deacuerdo en algo, ninguno quiere perder más tiempo con el otro, que te vaya bien el día :-)
    #166 ssssshhhh calla que lo cabreas!! insensato!! xD
  80. #231 Bueno, yo te puedo decir que parte del sistema de control de tráfico aéreo está hecho en Ada. Pero el sistema más crítico, el de comunicaciones, está totalmente hecho en C. Y yo sí estoy seguro porque estoy en el equipo de desarrollo de estos sistemas :P.
  81. A ver cuando google pone fácil lo de programar android en C. Sé que se puede pero es una odisea preparar eclipse para hacerlo.
  82. #58 mundo del cálculo numérico =/= Facultad de ciencias :-) Decir que todos y cada uno de los profesores de allí lo usan, me parece una barbaridad. Por ejemplo, dudo que lo usen mucho en biología (que podría equivocarme, pero me extrañaría bastante) y en el departamento de Estadística e I.O. no me sé de nadie que lo use a día de hoy, teniendo cosas chachis como R. Ahora, en el departamento de Análisis matemático por ejemplo, pues no me sorprendería nada.
  83. #47 Cada lenguaje para lo suyo, o dicho de otra forma para cada tipo de software, plataforma, requerimientos.... hay que saber escoger la herramienta adecuada. Una aplicación grande hecha en C sin clases/objetos, patrones de diseño, framework... puede ser lo mas eficiente del mundo pero completamente inmantenible. Por otro lado no te vas a poner a programar en Java o Python un sistema embebido, en tiempo real o el kernel de Linux...
  84. #100 Hombre pues entonces igual no te has expresado muy bien.

    Dices: "Quien diga que la velocidad no es fundamental es que es muy joven y no ha vivido otros tiempos."

    y justo enlazas un comentario de galli que dice

    "Los lenguajes dinámicos son una gran avance, y la velocidad no es lo fundamental,..."

    Pero bueno, tampoco voy a malmeter con esto, al fin y al cabo yo pienso aquello de

    "Existen dos tipos de lenguajes de programación:
    Por un lado, aquellos de los que la gente se queja todo el rato; por otro, los que nadie utiliza."
    Bjarne Stroustrup
  85. "A quien sólo tiene un martillo todos los problemas le parecen un clavo"
  86. Por algo el Buscaminas está programado en C
  87. #61 En caminos (UGR) también se usa. En el departamento de estructuras. Aunque también se usa Matlab, Fortran es muy común.

    Edito: se usa para los cálculos numéricos porque, al parecer, es muy eficiente: elementos finitos, elementos de contorno y esas cosas.
  88. #59 Ni en linux ni en windows :-P "c:\\"
  89. #169 Los autenticos hombres programan en el paint.
  90. #185 La teoria y el sentido comun nos dice que hay mejores lenguajes que otros para determinadas tareas. Pero tambien somos humanos y actuamos por otros factores menos logicos y mas psicologicos, la tendencia es siempre desarrollar en lo que mas experiencia tenemos y por lo tanto, mas confianza nos brinda a la hora de hacer un trabajo.
  91. String string = new String() :-D
  92. #86 Sólo como curiosidad, y aunque no es para nada representativo, sí hay quien se atreve con C o C++ en la web (casos muy excepcionales). No sé hasta qué punto será de popular esta web por estos lares, parece que se menciona mucho por reddit: www.okcupid.com/about/technology
  93. #70 "A cada cual lo suyo, y Java en cuanto a robustez, seguimiento de estándares, sencillez y uso profesional, no tiene a nadie de cerca."
    ¿Java mas robusto que otras soluciones? Lo dudo.
    ¿Java sigue mas estandares que otras soluciones? Lo dudo.
    ¿Java mas sencillo que otras soluciones? Lo dudo.

    Dudo que ni tomando todas a la vez o una por una no haya (en una gran cantidad de proyectos) otras soluciones que superen Java.

    "Cuando las grandes compañías apuestan por Java, no creo que sea por una moda." Que buen argumento....espera que lo pruebo : como algunos de los grandes portales de internet estan hechos (en la parte del servidor) con PHP debe ser que PHP es la mejor de las soluciones para cualquier proyecto web ¿te parece coherente este argumento?, pues aplícalo a lo que has escrito ....
«123
comentarios cerrados

menéame