Hace 15 años | Por jotape a theregister.co.uk
Publicado hace 15 años por jotape a theregister.co.uk

C demostró de forma abrumadora ser el lenguaje de programación más popular para miles de nuevos proyectos open source durante 2008. De acuerdo con Black Duck Software, que monitoriza 180.000 proyectos en casi 4.000 páginas, casi la mitad de los 17.000 nuevos proyectos (47%) usaron C. El siguiente lenguaje fue Java, con un 28%. Noticia en inglés, vía http://tech.slashdot.org/article.pl?sid=09/01/22/237213

Comentarios

q

#12 y #3 MONO

D

C o no C esa es la cuestión

D

El C es para nenas. Los hombres de verdad programamos en código máquina, introduciendo los opcodes en binario de memoria, y con un teclado de dos teclas: 0 y 1.

jfabaf

#63 comentario++;

Eso es para nenas:

mov cx,[ncomentario]
inc cx
mov [ncomentario], cx

Ellohir

Por algo es el mejor lenguaje de programación del mundo.

jfabaf
q

#15 A que antes Java no era libre e Icaza vió la necesidad de un lenguaje de más alto nivel para desarrollar aplicaciones en Linux, es decir, Mono (.Net).
Ahora Java ya es libre lo cual ha quitado muchísimo protagonismo a Mono, dado que además Mono tiene el mismo problema que Wine, siempre por detrás.

B

Realmente manda narices que hableis de programar un sistema en tiempo real en Java...

q

#19 La eficiencia tiene que ver menos con el lenguaje de programación de lo que piensas. De poco sirve que hagas tu aplicación en C puro si luego usas algoritmos y estructuras de datos pésimas, o gestionas mal la memoria. De hecho, esos suelen ser los problemas más comunes.

s

#65: claro, en general las aplicaciones web que usan javascript con un servidor especifico usan una tecnica de ajax a la que llaman comet, hay varios estilos, pero en general la idea es que con ajax el cliente va mandando peticiones al servidor web para saber si hay algo nuevo cada x tiempo y con comet el servidor puede mandar actualizaciones al cliente, y se muestran al instante (cuando dije antes tiempo real me referia a esto, no a un sistema de tiempo real)

ejemplos:
http://aleccolocco.blogspot.com/2008/10/gazillion-user-comet-server-with.html -> un servidor casero que hizo un blogger para probar la diferencia de rendimiento entre c y erlang, usa libevent
http://www.freeliberator.com/ -> un servidor mas avanzado (tienen versiones de pago y gratuitas)

y en otros lenguajes:
http://activemq.apache.org/index.html -> servidor java de apache foundation
http://orbited.org/ -> servidor python

en general los servidores mas completos dan la opcion de elegir entre varios protocolos para comunicarse con los clientes (el javascript en este caso)

#72: imagino que lo dices de coña, pero la verdad esque hay muchos merluzos sueltos y he trabajado en aplicaciones que usaban tsql como lenguaje de programacion (casi toda la logica implementada mediante stored procedures, triggers... imposible de mantener IMHO)

atzu

Oye... y .NET? (los lenguajes # y Visual Basic)

atzu
n

comentario++;

D

#10 ¿A qué se debe esa relación GNOME-Microsoft?

D

#47 assembler POWER!!!
providing software since 1 a.C

ummon

#21 El lenguaje no hace al programador.
Un mal programador hará un desastre de aplicación sea cual sea el lenguaje que use.
Cuando se habla de eficacia de la aplicaron no se puede mezclar diciendo que en C un mal programador hace una mierda, pero que en otro lenguaje un buen programador hace una virguería.
Si se habla de eficiencia de un lenguaje frente a otro hay que hablar en igualdad de condiciones, y en igualdad de condiciones C/C++ es mucho mas rápido y consume menos memoria que otros exceptuando claro el ensamblador.

DZPM

¿Donde está el estudio?

No me fío mucho, más que nada por el reducido uso de PHP, y la nula presencia de python. Ehem. 17,000 me parecen pocos, y más si más de la mitad no eran libres...

Mi estudio, en base a los tags de StackOverflow:
9,440 c#
6,987 .net
5,382 java
3,888 c++
3,342 javascript
2,886 php
2,670 python
1,504 c
1,175 ruby
676 perl

Para validar mis fuentes, haced las consultas del tipo http://stackoverflow.com/questions/tagged/python y, en general: http://stackoverflow.com/tags

s

#48: conozco jaxer, la base de jaxer es cpp, me estas dando la razon lol
hay muchas alternativas a jaxer, la mayoria tambien programadas en c, pero si necesitas algo especifico lo normal es desarrollar tu propio servidor segun tus necesidades y no usar una solucion mas general como jaxer

#49: no digo que no se pueda hacer, digo que el rendimiento siempre, siempre, sera mejor en c que en otros lenguajes...

C

Para las guarradas que hacen algunos en C/C++ dejando por ahí memoria sin liberar, tranquilamente podrían pasarse a otros lenguajes que tuvieran su recolector.

De todas formas, de C/C++ hay mucho programador-fanboy (especialmente en el mundo open source) que se piensa que por usar un lenguaje "se-es-mas". Solo hay que ver ciertos algoritmos que por no separar en dos lineas al día siguiente no los entiende ni el que los programó.

La clave de los lenguajes de programación es entender que en el fondo no dejan de ser meras herramientas. Un buen informático debe conocerlas y decidir cual conviene más para un proyecto concreto, de lo contrario posiblemente el proyecto, sea cual sea, fracasará.

D

C/C++ RULES

q

#74 Pues amigo las referencias en Java/.Net no dejan de ser punteros pero a más alto nivel. ¿Te suena "Null pointer exception"?

B

#29 Se supone que una cosa es la rapidez innata de un lenguaje y otra la inutilidad de quien programa.

Si haces un programa en C++ y no destruyes objetos es que eres un matao de la leche, no es culpa del lenguaje.

q

#27 El lenguaje no hace al programador.
Un mal programador hará un desastre de aplicación sea cual sea el lenguaje que use.

Estoy de acuerdo.

Si se habla de eficiencia de un lenguaje frente a otro hay que hablar en igualdad de condiciones, y en igualdad de condiciones C/C++ es mucho mas rápido y consume menos memoria que otros exceptuando claro el ensamblador.

Pero es que esa igualdad de condiciones es difícil que se de y me explico. En Java por ejemplo no tienes que preocuparte en destruir objetos (liberar memoria) de modo que en realidad es perfectamente posible que una aplicación en C/C++ consuma más memoria ya que no da esas facilidades, no es algo raro sobre todo teniendo en cuenta que en este pais quien programa en muchos casos lo hace a disgusto/quemado esperando a ver si sube a analista/consultor.
Creo que C/C++ a día de hoy tiene un ámbito bastante distinto del de Java/.Net. La eficiencia no lo es todo ni mucho menos, si el proyecto tiene ese requisito como crítico o muy acotado pues vale, pero no es lo común en la mayor parte de las aplicaciones que se desarrollan.

q

#18 normalmente la gente que critica a c/c++ no tiene ni puta idea.

¿Dónde me he metido yo con C? Yo he hablado de su uso en ciertos proyectos.
De todos modos gracias por el prejuicio oye.. yo también te quiero sin conocerte.

s

#43: estas progamando un chat en tiempo real con javascript, necesitas un servidor para el protocolo que vayas usar, lo programas en el lenguaje de alto nivel que usa tu web? NO
programas el servidor en c.

por supuesto hay alternativas que tambien funcionan, en facebook chat usan Erlang por la concurrencia, pero algunas partes del chat son cpp (por velocidad, imagino)
pero en general, para un proyecto pequeño, te conviene aprender a usar diferentes lenguajes para cosas especificas como erlang? o simplemente usas c? pues eso

PS. por supuesto si tu desarrollo web se limita a hacerte un blog y la pagina de la panaderia de tu barrio, pues no vas a necesitar nada de esto, pero si haces algo complejo..

D

#35 Todos los lenguages tienen fan-boys que cree que su lenguage es mejor y ellos mejores programadores por usarlo.

El verdadero motivo es que la mayoria de las aplicaciones openSource estan hechas inicialmente para el mundo Unix y portadas tambien para el mundo windows, para ello en mi opinion si quieres una aplicacion nativa la mejor opcion es usar la interfaz posix , la cual desde C/C++ tiene un acceso muy comodo.

En cuanto a los problemas de memory leak, es mas una cuestion de habitos de programación que otra cosa, con buenos habitos de programación es dificil que tengas uno.

cosmonauta

#2. Supongo que si.. que se refiere a C/C++.

D

#1 ¿Qué tiene que ver Fresqui en todo esto? lol

kabute

#10 Miguelito el amigo de los niños... (de Microsoft claro)

Como todos presupongo que se refiere a C/C++ por que este año le pegas una patada a una piedra y salen mil aplicaciones Qt4, y por lo general se hacen con C++.

Estaría bien tener un PDF del estudio para tener datos más reales, este no parece nada tener nada pretencioso detrás (como las estadísticas de uso de los sistemas operativos), no obstante peca de falta de rigurosidad...

atzu

#14 También.

D

#c-10" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/578007/order/10">#10 y #18, me refiero a Miguel de Icaza y su amor por todo cuanto producto/parida produce/pare la empresa de Redmond. Además, Icaza es el fundador de GNOME y el principal impulsor de C# y Mono en este entorno de escritorio.

B

#74 La gracia de C entre otras cosas son los punteros.

DeepBlue

FORTRAN power!

Providing software since 1957 lol

q

#57 imaginemos que estamos haciendo una aplicación de control, en la que tengamos que controlar unos sensores de parada de emergencia de un motor,no creo que fuera del agrade de nadie, que el motor no se parara ,porque no ha podido leer la información de los sensores por la entrada en funcionamiento del grabage collector.

¿Qué? El recolector de basura no se carga objetos al tun tun precisamente. Si necesitas la información de los sensores, un objeto digamos, está claro que necesitas tener la referencia al mismo, y habiendo referencia el recolector de basura no va a destruir el objeto. No es correcto eso que dices.
La desventaja del recolector de basura en sistemas de tiempo real son los retrasos que pueda haber, razón por la cual existen versiones especiales de Java, pero ya digo que lo que comentas en concreto no es cierto.

D

#6 entre otras cosas sigue ahi porque reune lo bueno de un lenguaje a alto nivel pudiendo programar a bajo nivel

q

#41 Creo que es te ha olvidado poner las etiquetas de .

p

lenguaje C?? odio los punteros!!

D

#14 yo me referia a .net como tal

D

#52 Me parece muy interesante, ¿sabes donde puedo encontrar un ejemplo de aplicación AJAX, con C como servidor?

q

#66 De acuerdo entonces a lo que te refieres es al problema que suponen los retrasos del recolector en sistemas tiempo real. Hay proyectos que tratan de atajar eso, desconozco si prescinden del recolector, hacen que funcione de forma manual o qué http://en.wikipedia.org/wiki/Real_time_Java

Pero ya ves que esa pega sólo se aplica a ese tipo de aplicaciones que no son precisamente las más frecuentes.

D

#46 ¿C como servidor de una aplicación Javascript?.
¿Lo haces con Jaxer? http://www.aptana.com/jaxer

q

#46 Vale, entonces no tratabas de ser irónico. Ese servidor de comentas puede estar en Java hecho perfectamente. De hecho donde Java más triunfa precisamente es en servidor. En el ejemplo que pones difícilmente es la eficiencia tan determinante como para no poder hacerse en un lenguaje de programación de más alto nivel.

Mira, un proyecto opensource servidor programado en Java que hace bastante más que servir a un chat:

http://osflash.org/red5

ummon

#29 No es exactamente así, no es que el C/C++ no te de las facilidades para liberar memoria, es que si usas new luego tienes que usar delete, si no se hace es un error del programador y no un fallo del lenguaje.
Si utilizas variables en el stack al salir de la función el C si las libera automáticamente.
El Java tiene problemas de no liberar memoria y el programador no se suele enterar, de hecho lo que siempre se mejora en estos lenguajes es el garbage collector y eso es por algo.
En muchas aplicaciones se decantan por el Java en detrimento del C/C++, porque un programador barato de Java suele ser mas productivo (desde el punto de vista económico) que un programado barato de C/C++ este ultimo normalmente puede hasta quemar el proyecto.

D

#69 Exactamente es a lo que me referia,la mayoria de las soluciones que hay es poder ejecutar el Garbage Collector bajo demanda, e incluso en algunas implementaciones bajo demanda e incluso poniendole un quantun maximo de ejecución.

A mi es que me viene por deformacion-profesional , ese es el campo en el que he desarrolado mi carrera , sistemas de control en tiempo real.

neopablinho

Joder y CLIPS no está? Con lo bonito que es... (cagoen mi profesor...)

D

#76 Muy interesante, gracias.

S

Si incluyen c# sera con el proyecto MONO, no?

s

y que se va a usar? comparar c con los demas lenguajes de programacion es ridiculo

yo SIEMPRE uso c o asm para todo, incluso para la programacion web muchisimas veces conviene bajar a c mediante un cgi o un servidor aparte (sobretodo para cosas con ajax)

D

#35 Mono es el nombre de un proyecto de código abierto iniciado por Ximian y actualmente impulsado por Novell (tras la adquisición de Ximian) para crear un grupo de herramientas libres, basadas en GNU/Linux y compatibles con .NET según lo especificado por el ECMA.

hardrock

#4 cuanta razón tienes

equisdx

¿¿Y HTML?? ¡¡es que nadie piensa en HTML!!...

D

#53 ok ok, esque no sabia de la existencia de MONO lol, y aunque existiera, con linux programo en java

D

#30 ya, pero la framework de .net no es opensource no?

dreierfahrer

#11 Lo realmente bueno es inmune a las modas y parece que hasta al marketing.
Lo curioso del C/C++ es que los que hablan mal de el suelen ser gente que no lo utiliza o lo utiliza poco.

Pues yo solo he oido hablar mal de C++ ha gente que lleva 15 años programando C++...

Tu teoria me falla completamente: yo nunca lo he usado -ni ganas- pero no lo critico, tiene su utilidad y VALE PARA LO QUE VALE, como java, python o delphi.

mko2

El codigo maquina es para nenazas, los hombres de verdad memorizan las variables y calculan de cabeza.

Ero-Padrin

#c-3" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/578007/order/3">#3 Acaso no se pueden crear aplicaciones open source con .NET?? No te hablo ni siquiera de Mono.

Yo he programado un par de aplicaciones opensource en C# desde Windows XP con Visual Studio 2005

q

#30 Sí, es verdad, claro que puede ser opensource. El problema es que no podrá funcionar en el sistema operativo opensource más extendido.

Malolillo

Mediaportal: http://www.team-mediaportal.com/about_mediaportal.html
es GNU/GPL y esta creado con c#

Ero-Padrin

#42 Pero la noticia habla de proyectos open source. Qué más da si el framework de .NET es open source o no? Lo que se ha contado para hacer este "ranking" es que la aplicación sea open source, no que se hayan utilizado lenguajes, frameworks o herramientas libres

D

#35 sobre lo de fan-boy por el #41 igual si tienes razon

jferrero

#31, no has leído el texto. TIOBE también da como ganador a C.

P

Pues no sé, pero en TIOBE siguen dando a Java como el ganador desde aproximadamente mediados de 2005... (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

c

#34 Como por "open source" solo aceptes programas para *nix, mal vamos.

mantrax

y SQL?

D

#41 ¿¿mandeee??? ¿¿c y asm para un cgi sobre todo por usar AJAX???
¿Que tiene que ver el tocino con la velocidad?.
¿Me pones un par de ejemplos, en el cual sea mas comodo o mejor hacerlo en c/asm que en perl, python,asp, jsp, otros?

Mejor aun esplicame para que sirve setjmp y entonces me creere que lo haces mezclando c y asm.

ViaToR

Para los de "No se puede comparar C/C++ con..."
http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=all

PD: Me refiero a comparar por velocidad.

D

#59 Lo que quiero decir es que puede darse el caso que no se realize una lectura importante en un tiempo determinado si justo entra a funcionar unos momentos antes el garbage collector,porque el procesador estaria ocupado.

Como bien sabes hay dispositivos que estan mapeados en memoria fisica, y el valor de esa posición de memoria cambia en función del estado del dispositivo,logicamente el contenido de esa memoria lo recoges mediante c (ya que es una posicion de la memoria fisica y no de la memoria virtual ) y lo traspasas a java mediante JNI.

Este es el problema no que no puedes acceder al objeto, sino que la información que vallas a leer se halla perdido(cambiado) por no leerla en un tiempo determinado por culpa del garbage collector.

Estaria bueno que el garbage collector , se cargase una posición de memoria que este referenciada si eso fuese asi, nunca tendrias la garantia de que ningun programa te funcionase.

Lo que si que hace es no entra nada mas que quites la ultima referencia de una posicion de memoria, sino que entra cada x tiempo , y elimina todas las que esten sin referenciar.
Esto ultimo se puede evitar haciendo que solo entre cuando se quita la referencia, haciendolo entonces mas confiable para sistemas de tiempo real, pero a cambio penaliza el rendimiento de la jvm.

D

#52 Lo siento no comparto tus ideas, espero que lo que hallas querido decir es un chat concurrente(que ya de por si diria que es la manera logica de programarlo)que no es lo mismo concurrencia que tiempo real.

Mas que nada porque sino me gustaria saber que S.O le instalarias, si es linux, si le parchearias el kernel con RTAI. Y si este esfuerzo seria recomendable.

Estoy con #49 en que lo mas adecuado para programación de un chat, deberia ser otro lenguage mas al estilo,perl ,python, o java.
De hecho si estuviera en mis manos si solo fuese a trabajar yo lo haria en perl, pero para que el siguiente trabajador que pudiera coger el proyecto lo tuviera mas facil lo haria en Java.

En cuanto al rendimiento, creo que el software de un chat no es un ejemplo en el cual el procesamiento valla a ser extremo, de hecho no se que gran cantidad de usuarios quieres que maneje ese chat ahora mismo, pero casi te tendrias que preocupar mas de si el S.O aguantara bien trabajar con tantas conexiones abiertas, si los dispositivos aceptan tanto trafico, otros... ante que preocuparte del rendimiento aportado por el lenguage, te aseguro que un pentium 1 con linux ,perl java o python , podria estar trabajando con mas de 100 usuarios sin pestañear.

D

El mejor lenguaje/entorno de programación; según mi opinión, es aquel que se parezca más al lenguaje hablado, el que realice automáticamente los pasos rutinarios, el más cómodo...

D

#25 lo digo como complemento a tu comentario, no como critica

D

#12 ahhh, pos hazme el favor de poner los tags de ironic que soy corto lol

#10 que has querido decir con eso (enserio esque no se a donde querias llegar con eso)

#11 normalmente la gente que critica a c/c++ no tiene ni puta idea.

porcierto, en segundo puesto esta mi amado Java!!!

q

Mok! Segmentation fault!

Me temo que en muchos de esos proyectos lo que están haciendo es matar moscas a cañonazos. Hacer una aplicación chorra en un lenguaje de bajo nivel no te hace más hombre.

Si en realidad la noticia engloba también a C++ el titular debería ser "C/C++ dominó..."

D

#35 En lo referente a que un lenguage de programación no es mas que una herramienta, estoy completamente de acuerdo, de hecho es mas me atreveria a decir, que a veces no solo deberiamos de mirar como herramientas a los lenguages de programación , sino tambien al S.O. ya que muchas opciones las podemos configurar y aprobechar usando una buena configuración del S.O.
Por ejemplo si nos piden que nuestra aplicación en caso de morirse se reinicie automaticamente , siempre nos sera mas facil hacer uso de un script dentro del S.O. que capturar las señales provenientes del S.O. y en funcion de ello,relanzar la aplicación justo antes de que se pare.

Y sobre los recolectores de basura solo comentar, por la naturaleza de muchas aplicaciones no se pueden usar, imaginemos que estamos haciendo una aplicación de control, en la que tengamos que controlar unos sensores de parada de emergencia de un motor,no creo que fuera del agrade de nadie, que el motor no se parara ,porque no ha podido leer la información de los sensores por la entrada en funcionamiento del grabage collector.