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
Hoy en día haces un tutorial de J2EE y ves que absolutamente todo se puede hacer de forma relativamente…...
Fortran no, pero COBOL hay un huevo.
Así que sí, Fortran hay un huevo, por lo menos en sectores científicos.
Y los bancos, administracion y Telefónica, en COBOL ....
-¿Quien es?
(20 segundos más tarde)
-Java
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.
"C ya no se usa, C es muy viejo, C ha sido desbancado por C++ y Java"
Pues mira.
Aunque ya me lo imagino yo: ninguna.
<include blabla.h>
void main(int argc, const char* argv[]) // perdon si me cuelo en algo, hace mucho que no ceceo
{
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??
}
}
keithlea.com/javabench/
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)...
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.
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.
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!!
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)
Nunca te fíes de un sistema ideado para lavadoras.
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.
www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Saludos.
#43 Aquí te cuentan algo ( en.wikipedia.org/wiki/Cassandra_(database) ), pero es que cambian más de arquitectura que de bragas.
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.
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.
los comandoslas 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.
www.amazon.com/Steve-Jobs-Walter-Isaacson/dp/1451648537
La biografía de Dennis Ritchie
www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628
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
#49 Yo conocí a alguien una vez que decía "C es como follar, hay que saber".
Porcentualmente será poco, pero anda que no hay sistemas funcionando y en buena forma gracias a shell scripts
El mejor lenguaje es el que yo conozca y use y los demás son peores 'per se'.
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.
Viva C!
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.
Es así de sencillo el lenguaje debe ser decidido según tu objetivo.
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.
Todo lo demás, cuentos de la lechera.
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.
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.
#21 Sinceramente, me da igual que lo dudes enormemente. No es algo que me estoy inventando, puede comprobarlo cualquier persona. En la carrera, en la asignatura optativa de programación nos enseña C++ un profesor de informática. En segundo de carrera, en métodos numéricos, nos piden que olvidemos C++ porque trabajaremos única y exclusivamente con Fortran 77, que es lo que ellos saben manejar.
Los programas que salen escritos de la facultad de ciencias de Granada son 70% Fortran 77, 25% Fortran 90, 5% Mathematica.
Ok, C apesta, y Java también. Lo que mola es IA32.
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)
Me quedo con #67 que es lo que yo quería explicar, y sumo que en mi opinion un programador de C tiene más merito individual a nivel creativo que uno de Java, que a pesar de ser bueno, se basa (por necesidad del lenguage) en otros desarrollos.
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.
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.
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?
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.
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.