Tecnología

Potencia vs Fluidez: ¿se han vuelto los programadores comodones?

·

Nos ponemos en situación. Cerrad los ojitos y viajad al pasado. 30 añitos solamente. Ni nos imaginábamos Internet, y éramos esclavos de los 8 bits. Los procesadores de aquellas primeras generaciones solían tener una frecuencia de reloj de 1 MHz. Repito. 1 MHz. Avancemos un poco. Abril de 1982. Sinclair Research presenta su ZX Spectrum, con un «potente» procesador Z80 a 3,5 MHz y 48 kB de memoria (aunque el primero tuvo en realidad 16 kB). No había multithreading, ni arquitecturas superescalares. Si una instrucción tardaba 5 ciclos en ejecutarse, eran 5 ciclos. Aquella máquina, que para los estándares actuales es ridícula, demostró algo prodigioso: que con 3,5 MHz de potencia y 48 «kas» se podían lograr juegos increíbles con una fluidez brutal.

Evidentemente el ZX Spectrum 48K tenía limitaciones importantes: su resolución (256×192 píxeles) y sus 4 bits de color (una paleta con 7 colores y dos brillos para cada color, excepto el negro) ofrecían todo un desafío a los desarrolladores de videojuegos, que no obstante alegraron la vida a millones de niños. Yo entre ellos, aunque nunca tuve uno, porque pude presumir de tener un C64, mucho mejor :). Aquellos programadores se sacaban rutinas de la chistera que permitían hacer cosas asombrosas en esa «castaña» de procesador y con esa «castaña» de memoria. Los ejemplos son casi inacabables.

Y seguimos avanzando: 10 años más. Estamos en la época dorada de mi adorado Amiga 1200, recién lanzado y superior en arquitectura y sobre todo en prestaciones de su sistema operativo (con multitarea real) a cualquier PC de la época. Y desde luego, a cualquier Mac, salvo en apartados muy, muy específicos -que alguno me intente discutir esto-. Los juegos para aquella máquina marcaron una época. Y de nuevo, todo fue gracias a aquellos programadores que sacaron todo el jugo a un procesador y a unos chips gráficos y de sonido que tenían muchas limitaciones. Más ejemplos inacabables.

Sigamos viajando en el tiempo.

Otro empujón hacia delante. Estamos en 2012. Ya podéis abrir los ojos. Tenemos micros quad-core con frecuencias de reloj de más de 3 GHz, configuraciones en las que lo normal es contar con 6 u 8 Gbytes de memoria RAM, GPUs que superan en potencia bruta a esas CPUs en varios órdenes de magnitud y sistemas de almacenamiento que  nos ofrecen velocidades de transferencia de 400 o 500 Mbytes por segundo.

Pero lo más grave no es eso. Esos procesadores quad-core, esas GPUs y esas memorias de alta gama están disponibles en nuestros flipantes smartphones y nuestros molones tablets. Que por supuesto, hacen cosas muy chulas y que molan un montón para presumir delante de los amigotes. El efecto zoom del iPad cuando uno entra o sale de carpetas de fotos y luego hace zoom en ellas, la fluidez del desplazamiento de las pantallas con iconos o con texto e imágenes, e incluso lo «follao» que van el Call of Duty o el Need for Speed Shift. Cómo mola. Y qué rápido va todo, ¿eh?

Mi pregunta es: ¿cómo coño no van a ir rápido con esos maquinones detrás? ¿Por qué nos asombramos tanto de las cosas que puede hacer un iPad o un Samsung Galaxy Nexus?

Precisamente lo que no es normal es que con esas configuraciones hardware haya muchas cosas que vayan tiradas. Abrir varias pestañas en un navegador o tener varias aplicaciones abiertas en un móvil es sinónimo de problemas en la mayoría de los casos, y es algo que por muchas flores que se le puedan echar a Android o a iOS no acabo de entender.

Porque si hay una cosa clara en el segmento tecnológico hoy en día es esta: que los desarrollos software están muy por detrás del hardware actual. Mirad la carga de vuestros procesadores en prácticamente cualquier momento, y preguntaos porqué seguimos buscando micros y gráficas más potentes, cuando la mayor parte del tiempo las vamos a tener infrautilizadas, sobre todo en informática de sobremesa.

¿Se han vuelto comodones los desarrolladores? ¿Se dirán a sí mismos aquello de «bueno, podría intentar que fuera más eficiente, pero con subir los requisitos ya me justificaré»? Seguro que hay de todo, pero esta reflexión sobre la que ya comentaba algo hace tiempo y que también aparecía en posts muy buenos como este no deja de ser cada vez más una cuestión que genera muchas, muchas, muchas dudas.


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.

  • OnePlus 7 Pro: 6,67 pulgadas a 90 Hz (dicen que son la pera), 8 GB de RAM, 256 GB capacidad, cámara triple (48+16+8), cámara frontal retráctil 16 MP, lector de huella en apntalla, 4.000 mAh. Está a 599 euros en Banggood con el código BGOP7PRO
  • Xiaomi Mi 9: 6,39″ sin marcos, Snapdragon 855, 6 GB de RAM, 64 GB de capacidad, cámara triple de 48+16+12 MP, está a 358,66 euros a través de Amazon con el código D4WKHWVT. Alucinante.
  • Xiaomi Redmi Note 7: 6,3» Snapdragon 660, 3 GB de RAM, 32 GB de capacidad (ampliables vía MicroSD), 4.000 mAh, minijack y cámara dual de 48+5 MP realmente estupendo por 122,9 euros en Banggood con el código BGN73E. Si no os queréis complicar la vida la versión superior de 4 GB de RAM y 64 GB de capacidad está en Amazon a 171 euros.
  • Xiaomi Mi Band 4: la nueva pulsera cuantificadora con pantalla AMOLED 0,95?, hasta 50 m profundidad y 5 ATM, sensor cardíaco, comandos de voz, notificaciones, brutal por 33,06 euros en AliExpress. (Elegid la versión global, no la china).
  • Xiaomi Mi Air 13: un 13,3″ FullHD IPS con Core i5-8250U, 8/256GB, WiFi doble banda, salida HDMI, lector de huella, buena opción en Banggood: 621 euros con el código BGMI710
  • Xiaomi Mi A2: está de oferta. Pantalla de 5,99 pulgadas, Snapdragon 660, 4 GB de RAM, 64 GB de capacidad (no ampliables), cámara dual (12+20), está a 145 euros en Amazon. Jamás había estado tan barato allí.
  • LG Gram: un portátil ultraligero de tan solo 1,1 kg de peso. 15,6″ FullHD, Core i7-8565U, 8 GB de RAM, 256 GB capacidad, Windows 10 Home, 3xUSB, 1 xUSB-C (con Thunderbolt 3!!). Me parece brutal por 899 euros en Amazon.
  • Portátil HP Pavilion 15-bc450ns: un equipo de 15,6? Full HD con un Core i5-8300H, 8 GB de RAM, 1 TB de HDD, 128 GB SSD (uauh) y GeForce GTX 1050 (uauh!), sin Windows (hay incognichollo ahí de 1,5 euros para resolver). Está a 579 euros en Amazon.
  • Monitor BenQ GW2270: un 21,5″ Full HD con formato 16:9, conectores DVI y VGA, 5ms, color negro. Increíble por 69 euros en Amazon. La versión HDMI está a 95 euros.
  • MiniPC: atentos a este equipo en formato NUC con un Core i3-7100U, 8 GB de RAM, 120 GB de SSD, WiFi 300 Mbps, 6 x USB, RJ-45, Ethernet, VGA, HDMI, toma auriculares. Por 205,94 euros, nada mal en AliExpress. Te regalan montura VESA.
  • WD MyBook 8TB: un disco duro externo con una capacidad brutal e interfaz USB 3.0. Está a 149 euros en Amazon UK, envío incluido.
  • Disco Duro WD 250 GB: un disco duro convencional de 250 GB que oye, nos puede resolver bastantes papeletas, a un precio ridículo: 15,90 euros en Amazon. Dicho lo cual, esta unidad SSD Kingston SSDA400 de 2,5 pulgadas y 120 GB es bastante más rápida y aunque tiene la mitad de capacidad creo que es más interesante para la mayoría de los usuarios: son tan solo 18,99 euros en Amazon.
  • Memoria USB Sandisk IXpand Mini 64GB: un dispositivo para extraer datos del iPhone o el iPad y guardarlos en esta llave con puerto Lightning y puerto USB 3.0. Muy útil para copias de seguridad sin tener que conectar el móvil o tableta al PC. Está a 18,50 euros en Amazon
  • FIFA 19: terminan las temporadas reales, así que bajan los precios de los FIFA. Tanto en PS4 como en Xbox One están a 32,90 euros en Amazon
  • Xbox One X + Metro Exodus: la consola más potente de Microsoft está de rebajas, incluye Metro Redux, un mando, 1 TB de capacidad y también Metro 2033 y Metro Last Light. Está a 349 euros en Amazon Alemania, envío incluido.
  • Teléfono Nokia 3100 Mini: una réplica del antiguo móvil estrella de Nokia, perfecto para usar el teléfono móvil como eso, como un teléfono. Tiene conectividad 2G, teclado físico y minipantalla. Prodigioso por 10,78 euros (sí, 10,78) en TomTop.
  • Windows 10 Pro: una licencia para el sistema operativo de Microsoft. Te la mandan por correo junto a algunas instrucciones. Está a 1,99 euros en eBay, perfecta para este equipo que se venden sin sistema operativo
  • Xiaomi Mi 9 SE: 5,97 pulgadas, Snapdragon 712, 6 GB de RAM, 128 GB de capacidad (uauh), triple cámara (48+12+16), lector de huella en pantalla, está a tan solo 270 euros en GearBest
  • Amazfit Verge Lite: sin NFC, pero con una autonomía de hasta 20 días. Pantalla AMOLED de 1,3″ 360×360 Corning Gorilla Glass. Frecuencia cardíaca, gran variedad de modos deportivos. GPS + GLONASS. Está a 89,18 euros en AliExpress
  • OnePlus 7: la evolución del 6T con 6,41?, Snapdragon 855, 8 GB de RAM, mininotch, 256 GB de capacidad (uauh), cámara dual 48+5, 3700 mAh de batería, huella en pantalla. Está a 437,49 euros en AliExpress.
  • SSD Samsung 2 TB: una unidad SSD con esta capacidad y a este precio es tela. Velocidades de 550 MB/s, está a 195 euros en Amazon Francia, envío incluido.
  • PO Realme X: el rival a batir en gama media rompedora. Tremendo, 6,53? sin marcos, Snapdragon 710, 4 GB de RAM, 64 GB de capacidad, cámara dual 48+5, cámara frontal periscópica, 3765 mAh, lector de huellas en pantalla. Brutal por 257 euros en Banggood.
  • Xbox One S Digital + 3 juegos: la consola de Microsoft sin unidad de Blu-ray incluye un mando y Minecraft, Sea of Thieves y Forza Horizon 3. Está a 175 euros en AliexpressPlaza con el código «plazaoff«. Envío desde España, 2 años garantía.
  • Tablet Amazon Fire 7: la renovada tableta de Amazon con mejor procesador y sobre todo con el doble de capacidad que el modelo de 2017. La versión de 16 GB (ampliable vía microSD) está a tan solo 69,99 euros en Amazon.
  • 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,41 en AliExpress.

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

Standard

11 comentarios en “Potencia vs Fluidez: ¿se han vuelto los programadores comodones?

  1. Alex dice:

    Muy interesante Javi. Te voy a hacer una reflexión. Intenta que un programa cualquiera en Windows se ejecute con un uso de CPU del 70%. Haz lo propio en un UNIX. Seguro que notas la mejora, pero sigue siendo ineficiente la manera en que los sistemas operativos adjudican los recursos. Un sistema no debería verse afectado en el rendimiento de la CPU si esta no alcanza el 100%, pero eso es solo en teoría. El sistema operativo emplea muchos ciclos en realizar los cambios de contexto y estos se multiplican con cada grado de paralelismo de las tareas. Con los procesadores multicore hemos multiplicado las UAL, incluso los registros… pero solo hay un bus para acceder a la memoria o a otros recursos externos y por el que compiten los cores. Con las memorias modernas de acceso multipuerta algo se mejoró en el grado de paralelismo pero el cuello de botella sigue estando ahí.

    Por que si no los servidores se basan en varios sockets? Porque pueden multiplicar los buses, los accesos a memoria si cada socket controla sus módulos de memoria. Aunque estén todos conectados y compartidos, cuanto mejor se gestione desde el sistema operativo donde se alojan los programas físicamente en memoria y que socket los ejecuta, mejor aprovechamos el hardware.

    El problema es que los programadores rara vez piensan en los demás programas, solo en el suyo. Y algunos sistemas operativos no ponen condiciones a los programas para ejecutarse en entornos multitarea, así que muchas veces no es problema del programa que va lento sino de que los recursos que necesita los esta ocupando otro. Y en un móvil esto es importante porque normalmente solo tenemos una aplicación en modo interactivo y el resto en segundo plano. Y queremos que hagan cosas como las hacen los PCs sin que sean la mitad de potentes que son estos.

  2. lc dice:

    Hoy va de historietas….
    Lo primero que hay que tener cuidado es con los flashback sobre articulos tecnologicos. A mi me ha pasado tres veces. Soy de spectrum y de este pase a pc (amstrad 1640), siempre babeando por el comodores 64, el comodore Amiga 500 de algunas amistades, con su motorola con arquitectura ¿Harward?, con su procesadores especializados y los apple… Pasa el tiempo y tengo mi pc con vga, se me presenta la oportunidad de comprar un maravilloso amiga 500 de segunda mano, lo compro y ¡opssss!, ¿que paso aqui?, es verdad que sigue moviendo los graficos como un diablo, pero esto ya no es tan maravilloso como yo recordaba, no hay tantos colores en movimiento, sencillamente mi pc moderno era un buen trasto pero igual que los otros que existian, no habia nada en pcs que significara un salto bestial frente al mio, bueno si, las sgi y tal, pero eso era inalcanzable. Pasa el tiempo, tengo mi amd 1800 con mi nvidia fx5200, se me presenta la oportunidad de adquirir una sgi octane, con su risc (175 mhz) y su supergraficos opengl, y ¿que paso?, pues si, la maquina es sorprendente, que sus buses, que en realidad son switch son una maravilla, que su opengl es sorprendente, pero que el pc se la lleva de calle, eso si la sgi se relentiza pero suavemente, sin tirones, despues compre un 400 mhz y al final una octane 2 con graficos v6, solo por capricho, pero no, las maquinas antiguas no son ninguna maravilla, ¿que hacen cosas increibles?, no, hacen lo que corresponde a sus caracteristicas y las de hoy hacen lo que corresponde a sus caracteristicas. Para acabar hace un par de años enrede con un apple LC (lc, como yo 🙂 y con un mackintosh de los de pantalla de ¿7? pulgadas, no pretendia comparar nada, pero vamos el system ¿6.5? era como de juquete, vamos que el windows 3.1 hacia mas, peor hecho, eso si, pero mas. Asi que cuidadito con los flashback.
    En cuanto a los programadores, te referiras a los de sistemas operativos, porque los de aplicaciones no se que van a hacer, si no se puede acceder al hard, e incluso los de sistemas puede que no puedan hacer mas si les dan las entradas y las salidas, no mas, los cambios de contextos, fallos de pagina y demas esta todo en el hard. En los tiempos de la vga y msdos se podia hacer algunas cosillas, ¿modo x? o algun ciclo que te ahorrabas en ensamblador por hacer alguna genialidad, pero hoy, «na de na», Ademas en el tiempo que piensas la genialidad te sacan un procesador generico o un procesador de grafico que te saca un 500% a tu genialidad, que no, que esto no es como el spectrum.
    De todos modos lo que hace un pc de hoy en dia es impresionante y un ipad 2 mas, verdad que hay algun cuello de botella, yo diria que el principal, el disco duro, porque como la memoria de tu aplicacion puede estar paginada en un fichero en memoria porque tienes muuuuchas cosas funcionando en el ordenador o porque hace tiempo que tu aplicacion esta en reposo, porque todo el mundo usa una base de datos en disco duro para guardar cualquier chorrada, eso de las estructuras de datos casi no se lleva,…. en fin, que no, que nada es como antes en programacion, asi que comparar es imposible.
    No sigo que aburro…

  3. nahiko dice:

    No sé si he buscado bien, pero creo que el Z80 (microprocesador del Spectrum) contaba con 252 instrucciones nativas (en ensamblador, de las que se ejectuan por hardware.
    El basic del spectrum no sé con cuántas contaba, pero creo que no más de 100.

    Un x86, cualquiera cuenta con sus intrucciones nativas (no sé exactamente cuántas son ahora mismo, pero unas cuantas) si pasamos a los 386 DX y 486 DX y sucesivos, contaban con coprocesador matemáticos, el cual añadía otro juego de instrucciones más para operaciones de coma flotante, en los 386 y 486 SX se podría meter un 387 o 487 (que eran los copros físicos, los DX estaban integrados en el mismo procesador)
    El pentium no aportó mucho en este ámbito hasta que aparecieron los MMX, que implementaban por hardware las 57 (creo recordar) nuevas instrucciones multimedia, (solo una de las MMX podía sustituir a más de 200 de las X86 estándar.
    AMD sacó las 3DNow!, luego vinieron SSE, SSE2, SSE3, SSE4 y SSE5. Cada cual con sus más y sus menos, las SSE5 creo que no se llegan a usar, y se propone en su lugar las AVX o algo así, es un pedazo de lío.
    SOLO para el procesador, cuántas instrucciones nativas tenemos? Un cojón.
    Pasamos a las gráficas? Pues otro tanto de instrucciones.

    Para aprovechar bien todo este hardware tan potente, necesitamos muuuuuchas instrucciones no nativas que hagan las llamadas pertinentes, unos compiladores muy bien hechos, muchas librerías intermedias para ir haciendo el acceso al hardware más sencillo para un programador que tiene que estar también preocupándose por la lógica del juego, la limpieza del código, el ahorro de memoria y sus leaks, la herencia, el polimorfismo, y un largo etc de cosas. Al final, emplear a fondo un ordenador y sacarle todo el jugo es TERRIBLEMENTE complicado. Y hay muuuuchas capas de por medio para facilitar las cosas (sería completamente imposible currarse un juego decente programando en ensamblador!!) que pueden ir metiendo lags.

    Hacer un juego en spectrum es terriblemente sencillo, apenas tiene 4 cosas en las que nos tenemos que fijar, hay un solo intérprete entre el basic en el que lo programamos y el ensamblador que se ejecuta en el microprocesador, es muy difícil cagarla en algún sitio y no darnos cuenta o que poco a poco se vaya llenando la memoria y vaya bajando el rendimiento, por ejemplo.

    Por otro lado, cuando los gráficos eran muy malos, una pequeña mejora, se notaba un cojón. Hoy en día (y ya desde hace bastantes años) una mejora apenas se nota.
    Os propongo una prueba:
    Cogéis un juego, por ejemplo el PES, os lo instaláis, configuración gráfica, filtro anisotrópico desactivado. Jugáis un betis – valencia (por no decir un madrid – barça :p) y sacáis un pantallazo.
    Pegáis el pantallazo en un mspaint.
    Ahora volvéis a entrar en el juego, configuración y activáis el filtrado anisotrópico. Jugáis un Depor – Zaragoza. Pantallazo parecido al anterior (os recomiendo en un corner, para que tengáis más o menos lo mismo.

    Habéis notado diferencia gráfica entre poner el filtrado anisotrópico y no ponerlo? A que no!!!
    Ahora mirád ambos pantallazos, ya verás como hay MUCHA diferencia. Fijáos en la hierba.

    Luego por otro lado, efectivamente hay compañías que tienen los juegos vendidos antes incluso de programarlos, y para no perder pasta, sacan una versión del juego al año (léase NFS) les da igual la mierda que hagan, pero lo tienen que sacar en un año, por lo tanto, no se preocupan mucho por optimizar, esto también es un gran problema 🙁

    S2!!

  4. aRCaNGeL dice:

    Buenassss, creo que todos habéis dado en el clavo. Fundamentalmente creo que no es que los programadores se hayan vuelto vagos, sino que fundamentalmente la optimización de código ha dejado de ser una prioridad desde hace unos años (de hecho, los que llevamos unos años estudiando la carrera por paquetes, nos hemos dado cuenta como al prinpipio la fase de optimización de código era una de las más importantes en el desarrollo de software y ahora ya no lo es). Como indicaba, habéis dado en el clavo ya que considero que este cambio ha sido debido a:
    1.- El aumento de capacidades hardware ha sido tan rápido que un software mal optimizado, en poco tiempo mejoraba por sí solo simplemente esperando a Intel y AMD, por ejemplo.
    2.- La avaricia de la industria hace que los desarrollos duren un peo, por lo tanto la fase de optimización de código, como tantas otras se acorte drásticamente y dependas de auténticos maquinones para que vaya como debe (aquí tengo que romper una lanza en favor de Blizzard que lleva con el desarrollo de Diablo 3 la hueva de años. Esperemos que no defraude porque ha tenido tiempo de sobra para sacar un producto acojonante).
    3.- En cuanto a los Sistemas Operativos, creo que no debería ser una excusa. Recuerdo en la época del MS-DOS, con su limitación de 640 kb, cómo los programadores se buscaron el modo protegido (con el famoso dos4gw.exe) para quitarse ese lastre y permitieron juegos como DOOM (punto de inflexión en la programación de videojuegos sin ninguna duda).

    En definitiva, no creo que los programadores se hayan vuelto vagos, sino que las circunstancias les han empujado a olvidar la optimización de código….

    P.D.: probablemente alguno me pondrá a parir. No soy programador así que, sed buenos conmigo… ;)))

  5. Kamajii dice:

    Mi verdad es que programar para un determinado hard, en un determinado lenguaje (compilado, por supuesto) hoy en día me cae tan lejos, €¦ que como programador lo único que pretendo es no «poner» muchas estupidedes en mi código.
    Hasta donde hago yo, no se el resto de la parroqia, programo con .net 3/4 (VB/C#), contra una JVM o con un lenguaje interpretado de por medio (PHP/ASP) pero el hard no lo «huelo» ni de lejos. Suma mis defectos programando a los probables defectos de las n-capas de software que tengo debajo de mis programas,€¦ ya te puedes imaginar «los milagos» que hace el hardware: aveces incluso hace que mis programas parezcan útiles 😉

  6. A mi me lo dejó muy clarito un antiguo jefe, hace 15 años: Es mucho más barato y sencillo comprar máquinas más potentes que asumir el coste de desarrollar software más eficiente.

    Me jode, pero por lo que he visto con el paso de los años, no debe ser el único que piensa así.

    Tamos vendíos !

  7. nadie dice:

    No entiendo por qué se ha borrado el comentario que hice con un enlace en el que Gallir explicaba perfectamente los quebraderos de cabeza que tienen los ingenieros de Android y de IOX para hacer funcionar correctamente esos cacharros que, según tu teoría, están desperdiciados por el malhacer de los programadores.

    Pensé que era una lectura interesante. Sobretodo para el que se hace las preguntas que tú planteas aquí.
    Creo que la próxima vez me lo voy a pensar dos veces antes de escribir por aquí.

Comentarios cerrados