Le auguro un futuro seguro a C y C++ por temas de IoT pero en Tiobe Index, C ha caído un 7% durante el último año, aunque no sé si este índice solo se basa en el interés de la gente o también en ofertas de trabajado o algo
.
Aquí dicen la metodología que siguen. Se basa en el número de hits que salen al buscar un lenguage en 25 buscadores (Google, Yahoo, Amazon...). Por el tipo de buscadores que usan, se basan en el "interés de la gente" en general, sea lo que sea eso. Por ejemplo, no buscan en Linkedin porque no son capaces de parsear el resultado (serán vagos).
La query es +"<language> programming", o sea, meten en google y similares +"java programming" +"lisp programming"... y cuentan el número de resultados.
[...] en Tiobe Index, C ha caído un 7% durante el último año [...] ¿Te atreverías a dar un motivo?
Ni idea. Los índices es lo que tienen. Si un lenguaje se pone de moda un mes y sube un 20%, ese 20% ha de salir de algún lado. C pierde un 7% y otros también habrán perdido share hasta completar ese 20%. Se me ocurre que cada vez hay mas gente programando o queriendo programar en alto nivel porque suenan mucho las aplicaciones web, las aplicaciones móviles y todo ese rollo, mientras que la base de bajo nivel permanece constante o crece más despacio.
Pero no hay que olvidar que es "interés" lo que se mide, que es etéreo. No es como la intención de voto, que tu votas a uno o a otro partido. Si en intención de voto baja PP y sube C's y el resto no se mueve y la gente de la encuesta es más o menos la misma, se puede concluir que ha habido votantes del PP que se han pasado a C's. Pero si meten un susto a una señora del PP, el "interés" de la gente sobre el PP va a subir, pero no tiene nada que ver con la intención de voto.
Yo mismo me gano la vida con C/C++ y acabo de subir el "interés de la gente" en "erlang" con mi post anterior. Y puedo acabar ganándome la vida con todos ellos.
Podrían ser nuevos lenguajes como Rust o Go sustitutos de C/C++ para microcontroladores en un futuro no muy lejano?
Depende de qué consideres microcontrolador. La frontera es difusa. Si consideras microcontrolador una Raspberry Pi, entonces puedes programar en lo que te de la gana, ya que tiene suficiente potencia como para montar un web server pequeñito, y en teoría puedes correr una webapp con el framework de turno.
En ese aspecto, yo creo que en un futuro no muy lejano pasará como pasó con los PC, que de repente no había porqué estar racaneando con la eficiencia. De repente eran tan potentes como para correr un mini programa con toda una VM debajo que a su vez corre sobre un SO sin que pasase nada.
Pero si consideras como microcontrolador un ATTiny, con unos pocos KBs de RAM y que además lo vas a tener durmiendo el 99% del tiempo, porque va con pilas y quieres que duren mínimo 5 años... ahí solo vale C. Y vale C en su faceta de "ensamblador para humanos".
Con respecto al IoT... pues mira, a lo mejor un bicho que centralice el control de todos los aparatitos de una casa o de una oficina, se puede hacer con algo tipo SoC como la Raspberry. Y puede mostrar una web, o sincronizarse con un smartphone... eso puede ir en Go, Java o lo que sea.
Pero en un cacharrito tipo "termómetro remoto", battery-powered, en el que el rol del micro está claro y definido - leer el dato del sensor de temperatura y transmitir por red el dato al bicho controlador. Y punto. - Es que no cabe otra cosa que no sea el código a pelo. No hay SO.
También hay que tener en cuenta que el señor que programa el micro del cacharrito termómetro, probablemente ha diseñado el PCB, sabe manejar un osciloscopio, sabe leer el datasheet para configurar el ADC que lee el sensor... Tiene muchos conocimientos de electrónica y bastantes preocupaciones como para andar aprendiendo el nuevo lenguaje de moda cada 6 meses. Y sobre todo, necesita un lenguaje que "le quepa en la cabeza".
A lo mejor sabe usar una base de datos pero no necesita saber de álgebra relacional, o de complejidad ciclomática, o de tal patrón de diseño que encaja muy bien con la metodología SCRUM.
Por tanto, yo pienso que convivirán, según la aplicación. Rust puede acabar en el termómetro remoto, pero Go, lo veo chungo.
---
Edito para poner
esta encuesta de stackoverflow que me ha parecido interesante. Lo mismo ya la habéis puesto, pero bueno: