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
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
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.
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.
Menuda mierda más lenta. Los hombres de verdad programan en ensamblador; no existe ningún lenguaje más eficiente.
Puestos a criticar a Java por chorradas, juguemos todos al mismo juego.
Pero afirmar que en programación la velocidad no es lo importante, es una frase de alguien o muy joven que no ha vivido otros tiempos, o alguien que se ha expresado incorrectamente (quiza como yo )
#105 "Las herramientas son para los programadores, que no tiene nada que ver con las aplicaciones, que son para los usuarios".
Efectivamente las herramientas son para los programadores, y al usuario debería importarle poco en que esta hecho un programa, el quiere que sea bonito y rapido, y más rapido es y será siempre con C. Otra cosa es que como dice alguien por ahi, no vas a crear un ERP en C (aunque eso tambien es bastante discutible).
"y se hacen mierdas de programas en C++ o en Java. "
En todo se hacen cosas buenas y malas, eso es problema ya de otras cuestion como, "que es un programador?", "cual debe ser su formación?". Aqui en Espana es algo así como un friki, con un curso de mes y medio, que no gana mas de 24 mil euros/ano, como tu dices los usuarios no se paran a pensar el trabajo que hay detras de una aplicacion, y asi nos va. En EEUU un buen programador puede ganar tranquilamente 100mil euros y estar bien valorado (ojo uno bueno).
Edito: se usa para los cálculos numéricos porque, al parecer, es muy eficiente: elementos finitos, elementos de contorno y esas cosas.
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.
Un arquitecto y un escultor son dos profesiones diferentes, por tanto tienen medios y herramientas diferentes para realizar su trabajo.
Yo no tendré ni idea pero has venido tu a iluminarme con este ejemplo tan sumamente chorra.
Vamos, es lo que se recomienda utilizar en la página de developers. No entiendo por qué te complicas la vida con Netbeans.
Es decir prefieres hacer algo lento al ejecutarse, pero no enfocarte en la memoria y la cpu, pero que sea seguro. Todo para ahorrar problemas, sueldos y descontentos, no?
Quiza por eso a los 6 meses de entrar en producción las aplicaciones empiezan a dar errores que nadie sabe de donde saben, funcionan lentas cuando tienen concurrencia y necesitan de mantenimientos criticos para continuar con su funcionamiento, que se traduce en mas dinero (aparte de la memoria y el procesador)
"(No me molesto en argumentarte nada porque creo que tampoco lo entenderías)"
No te molestes es tu opinion, y como tal la tomo (me la suda), la mia (que te la sudará) es:
Has hecho 2 o 3 cursitos, o quiza hiciste FP, te has puesto a programar y llevas ya varios anos, quiza hayas tengas cualificacion no digo que no. Pero si no pones foco en temas como memoria o cpu no has tenido una formado completa, eso es seguro. Has aprendido a programar trabajando, como tantos, y asi sale lo que sale, solo vale que funcione y los plazos.
www.youtube.com/watch?v=1S1fISh-pag
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.
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).
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.
Decir que no encuentro mas argumentación y por eso me invento tu vida laboral, inventandote tu la mia es muy inteligente. Como por cierto muy inteligente tu ejemplo del escultor y el arquitecto, puedes escribir libros para crios
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!!
por qué? porque no tienen cojones a hacer lo mismo de nuevo, porque es absurdo tirar a la basura algo que funciona y porque son sistemas cautivos cuyos "mantenedores" obligan a seguir igual.
sólo SCH ha tenido cojones a cambiar sus sistemas y les ha costado una fortuna.
ninguno de estos ejemplos son válidos.
ponte al frente de una compañía a nivel técnico, tienes sistemas prehistóricos que fallan y no ofrecen lo que necesitas (y no tienes ataduras) y te dicen "hacia dónde vamos?" ten por seguro que más del 80% te dirá, a día de hoy, que a java.
ERROR!! Java.concepto.exception....
Los programas en general son para funcionar lo primero, luego lo demás. Me gusta como lenguaje pero va excesivamente lento al funcionar. Cada vez que cargo algo en java me da urticaria. En 2012 que un programa superbásico me tarde muchos segundos en cargar...
Aunque hubiera mejorado ahora, lleva muchos años ya con nosotros. El ecosistema que rodea un lenguaje es importante pero lo primero que le pides a un coche es que tenga ruedas, no sé si me explico.
Un saludo
Cito texualmente "Lo dudo enormente", y yo respondo que, lo que dudes tu, pues es la realidad, me da igual. ¿Donde está el problema? La parte más ofensiva, si cabe, es una cita textual tuya.
Por cierto, los porcentajes son algo indicativo, una hipérbole, ¿sabes? No pretendia hacer un estudio socioeconómico del caso.
Algo interesante del proyecto del AVE, la primera versión de la aplicación cliente tardaba 10 minutos en arrancar (lo cual era a todas luces horrendo e inusable). La segunda versión, el arranque era casi instantáneo Ambos estaban hechos en java, la primera versión por gente con pocos conocimientos, la segunda por gente con más conocimientos. Lógicamente, esta diferencia tenía que ver con cómo se programa (de mal) que con el lenguaje en sí.
Entra en un aula de matemáticas y mira en que están haciendo los programas de inversión de matrices.
El único que se está columpiando aquí eres tu, yo hablo con conocimiento de causa. Y te repito que se soy tan agresivo escribiendo es porque tu comentario me resultó insultante, como poco. Y lo de que me estoy columpiando, tambien lo es.
#159 Ve a cualquier estudiante de biología o estadística por ejemplo, que te recuerdo, estudian también allí. te reto a encontrar a uno sólo que sepa siquiera que es eso del fortran.
Mmm... ¿Facebook?, ¿Twitter?, ¿Foursquare?
Un cualquiera hace referencia a que, por mucoh que digas ahora que no, decir "lo dudo enormemente" en mi pueblo es una forma sutil de decir que estoy mintiendo.
Pero bueno, yo no voy a seguir en esta conversación bizantina más tiempo. Tengo cosas que hacer y no puedo perder el tiempo. Hala, que te vaya bien programando en lo que sea que programes y espero que no tengas que colaborar nunca con el ala científica de la facultad de ciencias, porque como no sepas fortran te va a tocar aprenderlo.
#166 ssssshhhh calla que lo cabreas!! insensato!!
Yo no he dicho que sea lo más eficiente, he dicho que es lo que es. Ve a blamearles a los que han pensado eso y porque no enseñan algo más util como el mathlab, aunque la respuesta que te llevarás es que no saben usarlo, ¿cómo van a enseñarlo?
No quiero paracer grosero, pero es como si me dicen que para que enseñan a hacer integrales a mano si ya hay tablas con todas las integrales y el matemática te las hace en un periquete.
#168 Siento romper nuestro acuerdo de no molestia, pero me lo has puesto a huevo: Si eres de biología, entonces entiendo muchas cosas. Y no, no lo considero ciencia.
P.D: Espero que sepas entender que es una broma.
es.wikipedia.org/wiki/Tink
En la misma pagina de la wikipedia tienes dos ejemplos de "Hello world".
EDITO: Viendo tu comentario a #168 me ha recordado a otro XKCD (el refranero del freak ) xkcd.com/435/
#172 Yo me referia a esto tambien.
i.minus.com/ikq8hS.gif
P.D: Espero que sepas entender que es una broma.
#173 Confesaría a que rama pertenezco, pero perdería la gracia de verle ir dando bandazos, aunque sí te puedo asegurar que ando muy a la derecha del gŕafico.
¿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 ....
Voy a hacer un intento rápido. En abril del 2012, el porcentaje agregado de los lenguajes JVM que entran dentro del TIOBE 50 es:
Java: 17.026%
Groovy: 0.389%
Scala: 0.225%
Total: 17.64%
Para los de .NET:
C#: 7.348%
VisualBasic.NET: 0.978%
F#: 0.281%
Total: 8.607%
Ahora los mismos números para enero de 2011, JVM:
Java: 17.773%
Groovy: 0.358%
Scala: 0.256%
Total: 18.387%
Incremento: -0.747%
Y .NET:
C# 6.226
VisualBasic.NET: 0.263%
F#: Todavía no había entrado en el TIOBE 50.
Total: 6.48%
Incremento: 2.127%
Así que yo remarcaría algo bien distinto:
1. El conjunto de lenguajes de JVM ha caído ligeramente (un 0.747%).
2. El conjunto de lenguajes .NET ha tenido una subida considerable (un 2.127%).
3. Actualmente, el conjunto de lenguajes JVM está ligeramente por encima de C.
4. Tanto en JVM y .NET, se está dando un gran crecimiento en el uso de nuevos lenguajes basados en la misma plataforma. Este crecimiento se debe a la compatibilidad de estos lenguajes, que permite una adopción más rápida.
5. Dentro de JVM, Java está perdiendo terreno respecto a Groovy y Scala.
Vamos Python!! que te está pasando?
Hay gente que cuando diseña un programa lo que quiere es que sea lo mejor posible, para ello elijen un lenguaje de programación que les permita dotar a su programa de la mayor rapidez y eficiencia posible, por ejemplo C++. Incluso algunos locos recurren al ensamblador para agilizar partes criticas en su programa.
Hay otro tipo de gente que después de diseñar un buen programa, lo que quieren es hacerlo en el menor tiempo posible, por lo que suelen elegir Java como lenguaje.
En mi opinión Java continua vivo porque no es de Microsoft (al parecer eso ya lo hace menos malo) y por ser multiplataforma.
Salu2
Wikipedia inglesa: "Hibernate is an object-relational mapping (ORM) library for the Java language, providing a framework for mapping an object-oriented domain model to a ..."
Página oficial de Hibernate: "Hibernate an open source Java persistence framework project..."
No tengo nada más que decir.
"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.
Puedes intentar aprender algo de Java, realmente no es tan complejo como puedan parecer todos esos términos. Simplemente hay que escoger un par de buenos tutoriales y enseguida se aprenden cosillas.
#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.
#164 Será que son empresas de mierda! jajaja
Si te interesa tener un control casi absoluto sobre el estado de la memoria o como se guardan las cosas, pues C. No vas a hacer un sistema operativo en Java.
Si no te importa la velocidad o, sobre todo el consumo de memoria, y quieres orientación a objetos y cosas chulas muy automatizadas, no tener que reinventar la rueda nunca, etc, Java.
Si lo de tener una máquina virtual no va contigo pero quieres seguir teniendo orientación a objetos, considera C++ o C#. Bueno, en C se puede hacer "orientación a objetos" si eres suficientemente ordenado y metódico (y un matao como yo...), pero pierdes muchas facilidades y cosas como el polimorfismo.
Si quieres tener muchos procesos que hacen cosas no muy complejas y sobre todo no algoritmicas pero se pasan muchos mensajitos, prueba Erlang.
Y así podría estar con todos los lenguajes que conozco.
¿Me puedes decir qué programas "de los de verdad" usas tú que esten programados en lenguajes dinamicos?
Algun navegador?, algun programa ofimático?, algun programa multimedia? ¿algo que no este hecho en C/C++/asm?
Muchas cosas no pueden haber, POR QUE YO NO TENGO EL MOTOR JAVA INSTALADO Y NO HECHO DE MENOS NINGUNA APLICACIÓN, de hecho el openoffice no me lo quería instalar cuando SUN obligaba a instalar la maquina virtual para no se que pollada.
Por qué chrome está aumentando su share, si no es porque va más rapido?
Las webs de las de verdad, como las multiples de google, seguramente estén hechas mayoritariamente en C/C++ con fastcgi. Los juegos ya ni me meto, y el mundo embedded que es mucho más grande que el de PC más de lo mismo.
Solo hay que ver los de facebook la que han tenido que liar para optimizar su web cuando el tema empezó a crecer, al final les hubiera salido mucho más facil y mejor hacerlo directamente con un lenguaje compilado y pensando en la escabilidad desde el minuto 0, pero bueno, he de reconocer que no hubieran ido tan rápido al principio.
No importa si ahora los ordenadores van más rapido, si hay dos programas a elegir, los usuario elegiremos el más veloz.
Los lenguajes interpretados son para servir webs y para programillas freelance.
A software framework is a universal, reusable software platform used to develop applications, products and solutions. Software Frameworks include support programs, compilers, code libraries, an application programming interface (API) and tool sets that bring together all the different components to enable development of a project or solution.
en.wikipedia.org/wiki/Software_framework
En este sentido un ORM es una parte (la del modelo) de un software framework, no el todo. Por eso lo desacertado de ponerlo junto a un framework como struts o spring. Desde otro punto de vista, si quieres estandarizar las aplicaciones corporativas para que cumplan lo definido para un Software Framework, tampoco tendría sentido plantear como tal a un ORM. Pero desde un punto de vista de semántica estricto quizás tengas razón, pero no en un entorno software ...