Incognitosis random header image

Si programas en C o C++, ve cambiando de lenguaje

25 de April de 2008 , a las 11:34 · 4 comentarios ·

Lo he publicado en The Inquirer y la verdad es que me la debería haber reservado para Incognitosis, porque la noticia me ha molado un montón, y eso que a mí lo de programar me gusta más bien poco a pesar de ser informático. Sí que tuve una época de curiosidad en este terreno, - llegué a hacer mis pinitos en ensamblador (buf) con el Amiga - pero las prácticas de la facultad en lenguajes tan relevantes como Modula - que reconozco que era una opción interesante para aprender temas de modelos de datos - o Caml me apartaron del gusto por la programación. Ya fue tarde cuando tuve que aprender C para las prácticas de Compiladores y Sistemas Operativos: le había cogido alergia a la programación.

Sea como fuere, el índice TIOBE de popularidad de lenguajes de programación, C y C++ están perdiendo terreno entre los programadores debido a un factor fundamental: no disponen de un recolector de basura, un componente esencial para muchos desarrolladores que les ahorra lidiar con problemas de gestión de memoria. Los famosos punteros de C que nos volvían locos a todos son muy potentes, pero su gestión no compensa para muchos los beneficios de rendimiento que pueda dar, y algo similar ocurre con C++.

C and C++ are definitely losing ground. There is a simple explanation for this. Languages without automated garbage collection are getting out of fashion. The chance of running into all kinds of memory problems is gradually outweighing the performance penalty you have to pay for garbage collection

Esa es la razón del auge de algunos lenguajes como VisualBasic - que pese a ser todo un veterano, crece a marchas forzadas -, C#, o includo D, el que algunos califican como sucesor de C++. Dichos lenguajes sí hacen uso de estos mecanismos, y aportan características novedosas frente a los tradicionales C y C++, que no obstante - que yo sepa - siguen siendo la base y fundamento de la programación en Linux.

Lástima que no hayan comentado nada sobre programación multinúcleo en esa interesante entrevista de Dr. Dobbs al responsable de TIOBE. La programación concurrente sigue siendo un tema candente hoy en día, y es el principal factor por el cual los actuales procesadores triple-core y quad-core de AMD e Intel no logren escalar como deberían. Pero eso da para otro artículo, claro.

Tags: Tecnología

Entradas relacionadas



  • Incognitosis vuelve a su anterior diseño
  • Alatriste decepciona
  • Incognitosis v3.0
  • Palm vuelve a ser Palm
  • Cosas imposibles en Windows y Mac OS que puedes hacer en Linux




  • 4 respuestas por el momento ↓

    • 1 Alginros // 25 de April de 2008 , a las 4:27 pm

      Hombre yo no sé si C/C++ han dejado de ser tan populares, la verdad. Todavía soy estudiante,jeje. Pero desde mi humilde punto de vista sí que planteo una postura bastante clara. Creo que un lenguaje tipo PASCAL es más idóneo que C en cuanto a ingeniería se refiere. Y es que lo bueno de PASCAL frente a C es que no deja posibilidad a muchas ambigüedades y con ello de ahorran horas y dinero (en las empresas) depurando fallos provocados por la “mala” elección de un lenguaje tan flexible como C/C++. Es más, yo creo que aunque un recolector de basura es algo muy cómodo, sí que se puede programar en condiciones sin recolector de basuras.

      Por otro lado, el problema de su pérdida de “fama” es posible que se deba a la ausencia de recolector de basura (cómodo pero que denota que la gente se ha acostumbrado demasiado pronto a lo “bueno”. Véase Java/C#. No siempre valen estos lenguajes.).

      Finalmente concluyo esta largo opinión (sorry por el coñazo, jeje) aclarando que no creo que sea adecuado sustituir C por PASCAL pero que sí sería ideal algún lenguaje similar a D. Al igual que me gustaría que hubiera un lenguaje similar a las prestaciones de C pero siendo muy fuertemente tipado. Y es que nodigo que volvamos hacia atrás, pero sí que me gustaría incitaros a una reflexión sobre este tema muy interesante.

      Saludos a todos

    • 2 Alejandro // 26 de April de 2008 , a las 8:37 pm

      Yo la verdad, no se haste que punto esto es fiable…
      No entiendo esa bajada de Javascript que por ejemplo últimamente se pone muy de moda por la web 2.0…. ¿Y esa subida de ColdFusion?

    • 3 Claudio // 27 de April de 2008 , a las 3:47 pm

      Me parece un poco irreal este ranking, que el Java esté primero me parece correcto pero que el javascript, que es uno de los lenguajes utilizados, por no decir el que más, para programar páginas web y que lo pongan en bajada, me parece un tanto “increible”

    • 4 José María // 28 de April de 2008 , a las 11:48 am

      Hola,
      discrepo matizadamente.
      1) Este estudio habla, sobre todo, de terreno relativo, y por tanto, en un mundo en el que se abre un frente web/servicios/mashup, es obvio que los lenguajes de moda ganen cuota relativa. Otra cosa distinta es decir que pierden terreno “absoluto”. Por ejemplo, el número de líneas programadas en C en el terreno de los drivers de dispositivo, núcleos de sistema operativo, microcontroladores de electrodoméstico, etcétera. Casi estoy por apostar a que han subido a pesar de que muchos micros lleven un jazelle desaprovechado (salvo en aplicaciones de movilidad) en sus entrañas ;^D.
      2) Puedo comprender que tener un garbage collector automático es cómodo pero eso impone una limitación, y es que el GC entra en funcionamiento cuando le da la gana, y cuando le da la gana significa que puede decidir hacerlo cuando peor te viene, haciendo que el comportamiento no sea el más adecuado. Esto estoy seguro de que limita que esos lenguajes ganen terreno en determinados nichos. Si exisitiera un lenguaje en el cual se pudiera especificar la inteligencia del GC para que se adapte a tus circunstancias… sería otra cosa (por ejemplo poder forzar a que el GC corra en un core específico y sin bloquear acciones críticas, a pesar del desperdicio de potencia), cosa que no se si existe.
      3) Creo que no se puede discutir que lenguajes tipo C/C++ sacan más rendimiento de la máquina que lenguajes basados en máquinas virtuales. De hecho, aunque me parece posible que C++ pase a mejor vida, dudo mucho que C pierda terreno “absoluto”, y si me apuras apostaría a que el número de líneas en C siguen creciendo. Como mucho imagino que lenguajes tipo Haskell/Erlang les pueden robar cierta cuota de mercado a C/C++/D, pero la cosa no creo que esté del todo clara aún.
      4) Además, el estudio tiene cosas curiosas, como decir que D sube mientras que C++ baja, cuando quizá habría que considerar juntos a C/C++/D (ya que no sería justo al considerar, por ejemplo, que es lo mismo visual basic 1.0 que el x.0 que esté de moda ahora y que habrá que ver qué pasa con él con el advenimiento de Silverlight y la moda de GUI’s RIA).

      Yo creo que no se pueden comparar lenguajes de nicho con lenguajes de moda, de la misma forma que no se pueden comparar peras con manzanas, y menos aún haciéndolo de forma relativa, pues los lenguajes orientados hacia interfaces usuarios siempres tendrán, en general, un mayor número de líneas. Además, ¿En qué lenguaje están programadas las máquinas virtuales?

      Mi visión sobre la competencia entre lenguajes, por tanto, me la plantearía de otra forma, haciendo hincapié en que los lenguajes preparados para la concurrencia y la paralelización, han visto llegar a su mesías: las arquitecturas multicore, para las cuales determinados lenguajes no están preparados y no se sabe que pasará, si bien la tendencia será a componer las aplicaciones en base a máquinas virutales corriendo en el entorno de un único core, o si bien las bibliotecas especializadas en multi-thread, como la de INTEL (¿MPI?) serán el parche que mantendrá a C/C++, o si será el momento de los Haskell/Erlang.

      Por eso, mi pronóstico (difuso) sobre lenguajes va más en esta línea:
      a) Guerra entre C/C++/¿D? , Haskell/Erlang y, si me apuras, Java sabor J2EE en ciertos ámbitos.
      b) Guerra Java/Ruby/VisualBasic/Flex/Silverlight en otros.
      c) Crecimiento suave de C/C++ en otros.
      d) Constancia en terrenos más especializados, cada uno en el suyo de otros (como ADA, VHDL/Verilog, LISP/Smalltalk/Prolog, etcétera).

      Estos estudios, normalmente, te hablan de qué lenguajes tienes que saber para poder vivir programando sin depender en excesiva de quién te contrate, pero ni siquiera sirve para construir tu CV en torno a ellos, pues un programador válido es aquel que sabe escoger el lenguaje adecuado para una aplicación determinada en un contexto temático y de gestión concreto (resumiendo mucho “contexto”) y que estás cosas para lo que sirven es para invertir en cuáles son las traducciones en las que invertir y/o libros divulgativos que encargar si estás en el negocio editorial y poquito más.

    Deja un comentario