3 puntos por GN⁺ 2024-02-11 | 1 comentarios | Compartir por WhatsApp

Un llamado por el software conciso para 2024

  • El aumento de tamaño del software, es decir, el 'bloat', sigue siendo una de las mayores vulnerabilidades del software.
  • Desarrollar software conciso es importante para mejorar la experiencia de usuario, reducir los riesgos de seguridad y aumentar la eficiencia del sistema.
  • Los desarrolladores deben diseñar software en la dirección de ofrecer más funciones con menos código.

Opinión de GN⁺

  • El fenómeno del 'bloat' en el software puede provocar degradación del rendimiento del sistema y vulnerabilidades de seguridad, por lo que los desarrolladores deben enfocarse en la optimización del código y en un diseño eficiente.
  • Como los usuarios quieren experiencias de software más rápidas y seguras, el software conciso puede ser competitivo en el mercado.
  • Este artículo puede ayudar a los desarrolladores a replantearse las tendencias actuales del desarrollo de software y a motivarse para crear mejor software.

1 comentarios

 
GN⁺ 2024-02-11
Opinión de Hacker News
  • En la novela de Vernor Vinge "A Deepness in the Sky", la humanidad ya se ha expandido entre las estrellas sin contar todavía con tecnología más rápida que la luz. Las naves espaciales son muy antiguas y mezclan tecnologías de distintos sistemas y civilizaciones.

    • Los sistemas informáticos han evolucionado durante tanto tiempo que ya casi nadie entiende realmente la mayor parte del código. La gente simplemente usa ese código y construye cosas nuevas encima.
    • Uno de los personajes ha viajado durante mucho tiempo y ha permanecido en estasis, así que probablemente es uno de los humanos más viejos. Fue ingeniero de sistemas en el pasado, y como conoce cómo funcionaban los sistemas de esa época y sus vulnerabilidades, tiene una gran ventaja en el futuro cuando otros han apilado muchas capas encima y ya no entienden exactamente lo que están haciendo.
    • Creo que Vernor tiene un punto importante.
  • La mayoría de las librerías de npm tienen innecesariamente demasiadas funciones. Sus autores no conocen un buen diseño, y todas las librerías quieren hacerlo todo.

    • Por ejemplo, una librería para conversión de codificación de cadenas termina incluyendo cargar archivos, guardarlos, descargarlos por internet, ofrecer herramientas de línea de comandos, etc. Una librería debería hacer una sola cosa.
    • En Rust tampoco parece que la situación sea mejor. Si quieres editar la documentación de Rust, tienes que instalar como 1000 crates.
    • El problema no es el lenguaje, sino que cualquiera puede publicar una librería y de hecho lo hace. La gente que "solo quiere sacar el trabajo" elige la librería con más funciones, y como le da flojera escribir unas cuantas líneas de código que podrían resolverse fuera de la librería, termina pidiendo todavía más funciones.
    • No sé cómo se debería resolver este problema. Una idea es crear un grupo orientado a las "bajas dependencias", animar a la gente a poner esa insignia en sus librerías y hacer que los demás la busquen al momento de elegir una.
  • En "Terre des Hommes" de Antoine de Saint-Exupéry, se pregunta si alguna vez has mirado un avión moderno, seguido la línea de su evolución año tras año, y pensado en todo lo que crea el ser humano.

    • Todo el esfuerzo industrial, los cálculos, el diseño y las noches de trabajo sobre planos terminan concentrándose en fabricar un objeto que posee el principio supremo de la simplicidad.
    • Hacen falta generaciones de artesanos experimentando para que las curvas de un mueble, la quilla de un barco o el fuselaje de un avión se vayan pareciendo poco a poco a las curvas básicas y puras del pecho o los hombros humanos.
    • La perfección se alcanza no cuando ya no hay nada más que añadir, sino cuando ya no queda nada por quitar.
  • La cantidad de código que usamos hoy es enorme. Por ejemplo, abrir una puerta de garaje puede requerir más de 50 millones de líneas de código activas.

    • Estamos ejecutando tantísimo código, pero lo más probable es que la mayor parte nunca haya pasado por una revisión profunda.
    • Y aun así volvemos a la rutina diaria de instalar dependencias de npm.
  • El software se considera tan riesgoso que se recomienda no ejecutarlo uno mismo, sino dejárselo a proveedores de "X como servicio" o a "la nube".

    • Es como si dijeran que, como los autos se incendian con facilidad, deberías dejar que un experto los conduzca acompañado por bomberos profesionales.
  • El software no se vuelve más conciso porque eso requiere tiempo, habilidad y personal costoso.

    • Como desarrollador independiente, alguien que aprendió node.js el año pasado puede juntar node.js, contenedores, varios servicios de bases de datos hospedadas en AWS, servicios lambda, almacenamiento de objetos, Cloudflare, yaml, react, vite, etc., y hacer en un día una webapp frágil.
    • Es difícil escribir software rápido y de bajo costo de mantenimiento de una manera que además deje ganancias.
  • Antes se intentaba estandarizar hooks provistos por el sistema para que todos los desarrolladores los usaran en interfaces y otras partes, y la labor principal del desarrollador fuera programar la lógica de la aplicación.

    • Estas llamadas al sistema debían seguir realizando la misma tarea aunque cambiara el código, y permitir que el software antiguo siguiera compilando y ejecutándose sin problemas mientras el software nuevo obtenía más funciones.
    • Ese sueño se derrumbó rápidamente (por ejemplo, con el problema de las DLL), y mucha de la gestión de paquetes pasó a centrarse en asegurar que se usaran las librerías correctas.
    • Ahora que ya se ha acumulado tanta experiencia, surge la pregunta de si ese sueño era viable, o si de verdad estamos avanzando desde el caos actual hacia software rápido, conciso, estable y más seguro.
  • Sobre Rust, incluso si Rust tuviera 70% menos vulnerabilidades por línea que C++, si en Rust estás arrastrando cientos de paquetes y terminas con 10 veces más líneas de código, el número absoluto de vulnerabilidades podría ser mayor.

  • Si hubiera sabido hace 20 años que el software sería como es hoy, no habría elegido ser programador. Todo es gigantesco, el hardware y el software compiten sin fin, y la situación no mejora, no se vuelve más fácil ni más simple.

  • Apenas haces clic en un enlace, aparecen un banner de CTA, anuncios de Google y un banner de cookies. Cierras el banner de cookies y enseguida aparece otro anuncio de Google, que además te sigue cuando haces scroll. Mientras lees el artículo, ves por lo menos tres anuncios más.

    • En esas condiciones, es difícil tomarse el contenido en serio.