Tecnología

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

·

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.


Incognichollos

Esta es una selección con las mejores ofertas tecnológicas actualizadas casi diariamente, como expliqué aquí. Aunque estés en un post “antiguo” las ofertas son de última hora, los Incognichollos los actualizo aparte. También puedes seguir los Incognichollos en Twitter o en el nuevo canal de Telegram 🙂 . Aprovecha, que no suelen durar mucho tiempo:

  • Kindle Paperwhite: el lector de libros electrónicos de referencia baja de precio. Con pantalla de 6″ retroiluminada, 8 GB de capacidad, y esa resistencia al agua para llevártelo a la pisci/playa sin miedo. Está a 109,99 euros en Amazon.
  • Portátil Chuwi Lapbook Air: 14,1″ FullHD, Intel Celeron N3450, 8 GB de RAM, 128 GB SSD (ranura M.2), Windows 10, teclado inglés, WiFi, está a 281,04 euros en Banggood con el cupón BGair44
  • Repetidor WiFi dodocool: para mejorar la cobertura de tu red WiFi, soporte de redes 802.11b/g/n, antena integrada, enchufe europeo. Está a 16,99 euros en Amazon.
  • Lenovo Ideacentre 510A: un PC para trabajar y jugar con un AMD Ryzen 5 2400G, 8 GB de RAM, 1 TB HDD, una gráfica AMD Radeon RX 560 (4 GB GDDR5), y Windows 10 Home. Está a 599,99 euros en Amazon.
  • 48 cápsulas Nescafé Dolce Gusto: el sabor espresso intenso está de rebajas, un pack de 3×16 cápsulas está a 10 euros en Amazon
  • Patinete Xiaomi Pro: el modelo con batería ampliada (474 Wh, 18.650 mAh) que pasa de 30 a 45 km, sistema de frenos dual, ruedas de 8,5 pulgadas, más avanzado y seguro por 485 euros en Banggood con el cupón MIFANPRO
  • Ratón gaming Corsair M65 Elite: con cable, sensor óptico, hasta 18.000 PPP, retroiluminación RGB, sistema de pesos ajustables. Un ratón gaming muy llamativo y capaz, está a 49,99 euros en Amazon.
  • Lenovo Legion T530: un PC de sobremesa con un Core i5-8400, 8 GB de RAM, 128 GB de SSD, 1TB de HDD y gráfica GTX 1050. Sin sistema operativo, pero bien por 599 euros en Amazon. Pero que muy bien.
  • Zapatillas Lacoste Carnaby Evo: en color azul marino, disponibles en varias tallas, están a 59,99 euros en AliExpress Plaza.
  • Grand Theft Auto V: la edición para la Xbox One está de rebajas, solo 16,99 euros en Amazon.
  • Memoria USB SanDisk Cruzer 64 GB: conexión USB 2.0, buen diseño y capacidad estupenda sobre todo a este precio: 8,99 euros en Amazon.
  • Disco duro externo WD My Book 10 TB: vamos a por todas con esta unidad externa de nada menos que 10 TB con conexión USB 3.0 y un precio estupendo, 188,99 euros en Amazon. Brutal
  • Samsung Galaxy S10e: el telefonazo compacto con 5,8”, Exynos 9 Octa 9820, 6 GB de RAM, 128 GB de capacidad (ampliables), cámara dual 12+16 MP, 3.100 mAh lector de huella en el lateral. Está a 559 euros en eBay.
  • Windows 10 Pro: una licencia para el sistema operativo de Microsoft a 2,99 euros. Te la mandan por correo junto a algunas instrucciones. Está a 2,99 euros en eBay, perfecta para esos equipos que se venden sin sistema operativo.
  • Xiaomi Mi 9: atentos, chicos. AMOLED 6,39” , Snapdragon 855, 6 GB de RAM, 64 GB de capacidad, huella dactilar en pantalla, carga inalámbrica y rápida, cámara triple (48+12+16 MP). Está a 401 euros en Banggood con el cupón 4BGM964. Otra alternativa: está a 449 en Amazon.
  • Xiaomi Redmi Note 7: 6,3” (mininotch), Snapdragon 660, 4 GB de RAM, 128 GB de capacidad (ampliables), 4.000 mAh de batería, minijack y cámara dual de 48+5 MP realmente estupenda. Está a 201,63 euros en Banggood con el cupón 4BGN7128. La versión de 3 GB de RAM y 32 GB de capacidad del Redmi Note 7 está lógicamente más barata, tan solo 146 euros en AliExpress con el cupón “aliexpress19068. Y otra opción más, 4 GB de RAM, 64 GB de capacidad por 165 euros en AliExpress con el cupón AliExpress19215
  • Suscripción EA Access 12 meses: un año entero para disfrutar un catálogo estupendo de juegos para la Xbox One como si fueran tuyos. Los instalas y a disfrutar. Está a 18,89 euros en CDKeys.
  • Auriculares inalámbricos Xiaomi AirDots TWS: los competidores de los AirPods de Apple con Bluetooth 5.0, 4 horas de autonomía y 12 más en el estuche, control táctil. Están a 22,74 euros en GearBest con el código 321U9GID
  • PocoPhone F1: telefonazo de 6,1”, Snapdragon 845, 6 GB de RAM, 128 GB de capacidad, cámara dual (12+5 MP), 4.000 mAh. Nunca lo había visto a este precio en esa versión de 128GB. Está a 279 euros en GearBest envío desde España, garantía 2 años.
  • Unidad SSD SanDisk 2 TB: una estupenda opción para quienes necesitéis mucha capacidad y mucha velocidad. 2 TB en SSD es una pasada, creedme. Está a 207 euros en Amazon Alemania, envío incluido.
  • Módulo Ballistix Sport RAM DDR4 16 GB: sigue bajando la memoria, y este módulo de 16 GB lo demuestra: DDR4, PC4-2400, color gris, está a 81 euros en Amazon Alemania envío incluido. Póngame dos (por aquello de aprovechar las memorias dual-channel).
  • Impresora multifunción Canon Pixma TS3150: imprime, escanea y copia, con WiFi, Pixma Cloud Link, inyección, impresionane por 33 euros en AliExpress con el cupón plazaoff. En Amazon muy barata también, 39 euros.
  • Patinete eléctrico Xiaomi Mijia M365: el referente. Plegable, 30 km de batería, 25 km/h, doble freno, en color negro, está a 303 euros en Banggod con el código plrosku, en Amazon sale por 412 euros.
  • Auriculares gaming Logitech G432: unos cascos de diadema con micrófono, sonido envolvente 7.1 perfecto para detectar a tus enemigos en FPS solo con el audio. Está a 55 euros en Aliexpress con el código plazaoff.
  • Tarjeta gráfica Zotac RTX 2060: estupenda opción para jugar a toda potencia. Una GeForce RTX 2060 con 6 GB de memoria GDDR6, y todas las mejoras de la arquitectura Turing (Ray-tracing, DLSS). Está a 339,99 euros en Amazon.
  • Xbox Game Pass 6 meses: en un pack de dos códigos digitales de 3 meses cada uno. Rebaja del 50% para este servicio que te permite jugar a cerca de 200 juegos de la Xbox One como si fueran tuyos. Mola, y está a 29,99 euros en Amazon.
  • Xiaomi Mi A2: la versión global de este móvil de 5,99″ con un Snapdragon 660, 4 GB de RAM, 32 GB de capacidad (no ampliables), cámara dual 12+20. Está a 131,60 euros en AliExpress con el código aliexpress19084. El modelo con 4/64 GB está en Amazon a 152 euros
  • Auriculares i12 TWS: unos auriculares inalámbricos BT 5.0 con control táctil, diseño “inspirado” (ja) en los AirPods. Están a 15,15 euros en GeekBuying con el cupón JJVWTEUK
  • Office 2019 Professional Plus: licencia para un PC, solo para Windows 10, licencia perpetua, envío del código de licencia por correo. Se dan instrucciones para descarga, instalación y aplicación. Está a 10,60 euros en Amazon.
  • Portátil Chuwi HeroBook: un 14,1″ HD con un Intel E800 quad-core, 4 GB de RAM, 64 GB de capacidad (ampliable con SSD M.2), Windows 10, 38 Wh batería. Modesto pero simpático sobre todo por su precio, 191 euros en Aliexpress con cupones.
  • Portátil gaming Asus R570ZD: un 15’6” FullHD con un AMD Ryzen 5 2500U, 8 GB de RAM, 256 GB SSD, GTX 1050 (2GB), teclado en español, puerto RJ-45, USB-C, peso de 2,3 kg (no es una pluma). Sin Windows, ojo. El precio es estupendo, 554 euros en Amazon
  • Xiaomi Mi A2 Lite: versión global, 5,84” Snapdragon 625, 3 GB de RAM, 32 GB capacidad (ampliable), cámara dual 12+5 MP, 4.000 mAh batería, Android One puro. Increíble que cueste 126,89 euros en Banggood con el cupón 4BGA2L3
  • Bolígrafo Xiaomi Mijia Pen + 3 recambios: el boli de 0,5 mm con tecnología suiza (o eso dicen) que enamora. Yo ya he comprado varios, y la verdad es que molan, y por este precio, más. El boli + tres recambios sale por 3,57 en AliExpress.
  • Huawei Honor 10 Lite: 6,21”, CPU Kirin 710, 3 GB de RAM, 64 GB de capacidad (ampliables), cámara dual trasera (13+13 MP), frontal de 24 MP, 3.400 mAh, lector de huellas y hasta NFC para pagos móviles. Está a 194 euros en AliExpress con el cupón “plaza1
  • Portátil Xiaomi Mi Notebook Pro: 15,6 pulgadas FullHD, Core i5-8250U, 8 GB de RAM, 256 GB PCIe SSD, expansión M.2, GeForce MX150, lector de huella, teclado en inglés (te regalan pegatinas). Está a 765 euros en AliExpress. Envío desde España en 5 días.
  • Portátil Jumper EzBook 3 Pro: modesto pero perfecto para viajes o niños: 13,3 pulgadas FullHD (!!), Intel Celeron N3450, 6 GB de RAM, 64 GB eMMC (slot M.2), salida HDMI, peso 1,39 kg, Windows 10, teclado EEUU. Está a 199,78 euros en AliExpress

¿Quieres recibir un correo de aviso cuando publique nuevas entradas?

Standard

12 comentarios en “Si programas en C o C++, ve cambiando de lenguaje

  1. 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. 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”

  3. 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.

  4. Laura dice:

    Hola,
    Buscando info sin querer me topé con este foro. Soy Analista programador e ing. en sistemas y me dedico a programar. Programo en ambos lenguajes c++ (builder) y pascal (delphi) aunque prefiero el c. Si bien siempre esta la pelea entre ambos lenguajes considero que los dos tienen lo suyo, el que sabe manejar los punteros, realmente son algo muy últil, y eso le da un puntito al c++. Como ingeniera todo lo que es microcontroladores esta hecho en c , estoy en el área de sistemas distribuidos y es cierto que mpi esta hecho en c, asi que dudo que desaparezca pronto. Ahora con respecto a JAVA ¿alguno se puso a programar en java? lo unico que lo sustenta es que sea multiplataforma, lo que tambien hace que la performance se vaya al tacho. A la hora de programar es odioso. Lo que hay que rescatar es que como lenguaje academico (para enseñar lenguaje orientado a objeto) es bueno.
    Lo que tambien tienen de bueno c++ y pascal (delphi) es la cantidad de componentes desarrollados para la VCL.

  5. jose dice:

    yo opino la verdad es que cada lenguaje es potente es su area, muchos dicen que C es el lenguaje que ha sobrevivido años de evolucion y sigue vigente, esta bien pero es odioso programar en C/C++, con esos sus punteros imposibles de entender me tiene loco, yo soy sincero, prefiero java, es un lenguaje mucho mas completo para mi, me facilita la tarea de programar y me ahorra tiempo, en cambio C/C++ es un lio a la hora de trabajar con estructuras dinamicas, les soy sincero si puede cambiar de C/C++ a java, no lo duden!!!

  6. Skyvoyager dice:

    Mucho Java, mucho C/C++……..pero al final de lo que se tira es de FORTRAN en ingenieria. Y el FORTRAN renacerá de sus cenizas con los sistemas multi-core…si no tiempo, ya lo vereis. Siempre escuche a un viejo profesor que con él se llegó a la luna y con él se volverá a ir..

  7. PinchaTeclas dice:

    Ingenieque? Ese profesor sigue vivo o se hizo un programa para ir a la luna en FORTRAN? jajajajaja. Dejate de panplinas de lenguajes, no hay nada mejor que un cincel y una tarjeta esperando ser perforada.

  8. Gemetrece dice:

    #5 ¿que programar en Java es odioso? Mira, que tu no sepas adaptarte a programar en java viniendo de C++ no significa que sea odioso. De echo es mucho más sencillo (pero mucho más) que C++ puesto que “esconde” los punteros, no tiene herencia múltiple, independiente de la plataforma… vamos que va a lo que va: a AYUDAR al programador, no ha entoncerperlo como quieres dar a entender.

    Y una cosilla más, de serie, hay muchísimas mas cosas desarrolladas para java que para c++, los chicos de Sun tienen de todo para ayudarte a programar (digo de serie, no de APIS de terceros, que creo que gana Java también 😉

    En lo único que te doy la razón es en el rendimiento, donde gana C++ (de ahí la razón que se use mucho en videojuegos y aplicaciones donde el rendimiento es esencial).

  9. Ronald Lopez dice:

    Hoy en dia esta creciendo el auge de la programacion Paralela, y de todos los lenguajes citados aqui, los que estan dando la talla (en mi humilde conocimiento) lo es C y FORTRAN, Java tambien lo posee, pero frente a aplicaciones elaboradas entre C, Fortran y Java, java es mas lentos, asi que uno de los lenguajes que estan aptos para el paralelismo son esos 2, ademas algunos de los Sistemas Operativo que se respete estara hecho en C.

  10. paelams dice:

    Se viene C++ 0x no se como esto va a repercutir ;
    ya que esta implementando muchas funcionalidades entre ellas el paralelismo.

    Sobre los punteros ;quiza sea dificil aprenderlos pero con la practica puedes llegar a dominarlos

  11. FlameSoul dice:

    Un par de comentarios:
    1) Asumo que los que odian los punteros y se vueleven locos con ellos o no han usado punteros lo suficiente o estan en un área en la que les resultan mas sencillo otros tipos de abstracciones
    2) Dudo que C esté perdiendo terreno, no podria afirmar lo mismo de C++.
    3) Soy estudiante de ingeniería electronica. Actualmente he pasado desde programar el HC11 de motorola en 1er año en assembler a crear programas de PC en C, luego en C++ (ha sido una buena progresion logica) y ahora en cuarto año he vuelto a los micros en laboratorio de microprocesadores, programando el HC12, pero esta vez en C y no en assembler. La verdad que creo que como minimo va a pasar mucho tiempo hasta que C pierda terreno, porque salvo en aplicaciones que tengan grandes cantidades de espacio disponibles y microprocesadores muy potentes, el C y el assembler siguen haciendo mucha falta. No todas las aplicaciones tienen 4GB de memoria y un micro de 2GHz. Tampoco es que java o algun otro lenguaje de los nuevos paradigmas permita ser optimizado para micros como el HC12 (en los que tengo 512K de RAM+Flash a 40MHz), o al menos aun no me he enterado de que eso sea asi.
    4) C y C++ fueron dos grandes sucesos (mas que nada C, que sucedió a los lenguages A y B). Sería bueno que ya tuviesemos un sucesor oficial pero que aplique los nuevos paradigmas de programación. Igual, con la aparicion de sistemas multinucleo y con el tema de las multitareas puede ser que este haciendo falta otro nuevo cambio en la forma en que el codigo que se escriba hace las cosas (o quizas hay que cambiar la forma en que el hardware hace las cosas, ya me ocuparé de eso).
    5) Me parece un tanto arbitrario decir que si programas en C y C++ vayas cambiando de lenguaje, esto depende de que estes programando. Si hablamos de programacion en PC o en celulares tal vez, puede ser.
    6) Creo que no me olvide de opinar de nada.

Comentarios cerrados