La esencia del desarrollo de software.
"Necesitamos hacer 500 agujeros en la pared, así que diseñé un taladro automático". Utiliza engranajes elegantes y precisos para ajustar continuamente la velocidad y el torque según sea necesario.
- Genial, ella tiene un peso ideal. Cargamos 500 de estos taladros en el cañón, que hicimos, y disparamos a la pared.He estado haciendo programación durante 15 años. Pero últimamente, durante el desarrollo, no se ha aceptado pensar en eficiencia, simplicidad y perfección: hasta el punto de que me siento triste por mi carrera y por la industria de TI en general.
Por ejemplo, los automóviles modernos operan, digamos, el 98% de lo que permite físicamente el diseño actual del motor. La arquitectura moderna utiliza una cantidad de material calculada con precisión para cumplir su función y permanecer segura en estas condiciones. Todos los aviones convergieron al tamaño / forma / carga óptimos y, básicamente, tienen el mismo aspecto.
Solo en el software se considera normal si el programa se ejecuta al nivel del 1% o incluso del 0,01% del rendimiento posible. Nadie parece tener ninguna objeción.
La gente incluso está orgullosa de cuán ineficiente es el programa, como "por qué molestarse, las computadoras son lo suficientemente rápidas":
@tveastman : ejecuto un programa de Python todos los días, se ejecuta en 1,5 segundos. Pasé seis horas y lo reescribí en Rust, ahora se ejecuta en 0.06 segundos. Esta aceleración significa que mi tiempo dará sus frutos en 41 años, 24 días :-)
Probablemente haya escuchado este mantra: "El tiempo del programador es más costoso que el tiempo de la computadora". Esto significa que estamos pasando tiempo en la computadora a una escala sin precedentes. ¿Compraría un automóvil con un caudal de 100 litros por cada 100 kilómetros? ¿Qué tal 1000 litros? Con las computadoras, esto sucede todo el tiempo.
Todo es insoportablemente lento.
Eche un vistazo: las computadoras portátiles son miles de veces más potentes que las que llevaron a una persona a la luna. Sin embargo, cada segundo sitio no puede proporcionar un desplazamiento suave de 60 FPS en el último MacBook Pro de gama alta. ¡Puedo jugar cómodamente, ver videos 4K, pero no desplazarme por páginas web! Esta bien?
La aplicación de
correo de la Bandeja de entrada de Google en el navegador Chrome del mismo Google
tarda 13 segundos en abrir un correo electrónico de tamaño medio :
También anima formas blancas vacías en lugar de mostrar sus contenidos, porque esta es la única forma de animar algo en una página web con un rendimiento decente. No, no 60 FPS, sino "lo más rápido posible en esta página". Espero con interés lo que la comunidad web ofrecerá cuando las pantallas de 120 Hz se vuelvan convencionales. Apenas hacen frente a 60 Hz.
La actualización de Windows 10
tarda 30 minutos . ¿Qué se puede hacer por tanto tiempo? Esta vez es suficiente para formatear completamente mi unidad SSD, descargar la última compilación e instalarla unas 5 veces seguidas.

Pavel Fatin : Escribir en el editor es un proceso relativamente simple, por lo que incluso 286 podría proporcionar un proceso de escritura bastante fluido.
En los editores de texto modernos, los retrasos en la escritura son más largos que en Emacs de 42 años. Editores de texto! ¿Qué podría ser más fácil? Para cada pulsación de tecla, solo necesita actualizar el área rectangular pequeña en la pantalla, y los editores de texto modernos no pueden hacerlo en 16 ms. Y esto es mucho tiempo. LOTES Un juego en 3D llena la pantalla con cientos de miles (!!!) de polígonos durante los mismos 16 ms, y también procesa la entrada, relata el mundo y carga / descarga dinámicamente los recursos. ¿Cómo es eso?
La tendencia es que el software no se vuelve más rápido y más funcional en absoluto. Obtenemos equipos más rápidos en los que el software con las mismas funciones se alterna más lentamente que antes. Todo funciona mucho más lento que la velocidad máxima. ¿Alguna vez se preguntó por qué su teléfono arranca de 30 a 60 segundos? ¿Por qué no puede arrancar, digamos, en un segundo? No hay limitaciones físicas. Personalmente, me gustaría eso. Quiero que los desarrolladores lleguen al límite, utilizando cada bit para el rendimiento.
Todo es ENORME
Y esto es hinchazón. Las aplicaciones web pueden abrirse diez veces más rápido si simplemente bloquea los anuncios. Google les ruega a todos que detengan los frenos con la ayuda de la iniciativa AMP, una solución técnica que no necesita ninguna tecnología, solo un poco de sentido común. Si elimina la hinchazón, Internet comenzará a funcionar a una velocidad increíble. ¿Es realmente difícil de entender?
El sistema Android sin aplicaciones
ocupa casi 6 GB . Solo piense por un segundo cuán indecente es el gran número. ¿Qué es, películas HD? Creo que principalmente código: kernel, drivers. Algunos otros recursos, por supuesto, pero no pueden ser tan grandes. ¿Cuántos controladores necesitas para el teléfono?

Windows 95 ocupaba 30 MB. ¡Hoy tenemos páginas web más pesadas que este sistema operativo! Windows 10 ya tiene 4 GB, es decir, 133 veces más. ¿Pero es 133 veces mejor? Quiero decir, funcionalmente son casi lo mismo. Sí, tenemos Cortana, pero dudo que pese 3970 MB. Pero esto es Windows 10, ¿realmente Android debería ser una vez y media más?
La aplicación de teclado Google, como si nada hubiera pasado, consume 150 MB. Este programa dibuja 30 teclas en la pantalla: ¿es realmente cinco veces más complicado que todo Windows 95? ¡La aplicación Google, básicamente solo un paquete para la Búsqueda web de Google, ocupa 350 MB! Los servicios de Google Play que no uso (no compro libros, música o videos allí) son 300 MB que simplemente se sientan aquí y que no se pueden eliminar.

Después de instalar todas las aplicaciones necesarias (redes sociales, chats, mapas, taxis, bancos, etc.), solo queda 1 gigabyte para fotos en el teléfono. ¡Y esto generalmente no tiene juegos ni música! ¿Recuerda los momentos en que el sistema operativo, las aplicaciones y todos sus datos se colocaron en un disquete?
Su programa de notas probablemente esté escrito en Electron y, por lo tanto,
viene con un controlador para el controlador Xbox 360 , puede mostrar gráficos en 3D, reproducir audio y tomar fotos usando una cámara web.

El chat de texto simple siempre ha sido famoso por la velocidad y el bajo consumo de memoria. Entonces, Slack es un ejemplo de una aplicación que requiere muchos recursos. Quiero decir, el chat y un editor de texto son las cosas más básicas, deberían consumir la menor cantidad de recursos. Bienvenido a 2018.
Se puede decir que al menos funcionan. Pero un aumento de tamaño no significa una mejora. Esto significa que alguien ha perdido el control. Ya no sabemos lo que está pasando. Un aumento en el tamaño es un aumento en la complejidad, una disminución en el rendimiento y la fiabilidad. Esto no es normal y no debe considerarse normal. Debe prestar atención de inmediato al tamaño hinchado y mantenerse alejado de ellos.
Todo se pudre
Un teléfono Android de 16 GB era perfecto hace tres años. Hoy en día, apenas funciona con Android 8.1, porque cada aplicación se ha duplicado al menos sin razón aparente. No hay características adicionales. No se hicieron más rápidos y la apariencia no cambió. ¿Están solo ... hinchados?
El iPhone 4s salió con iOS 5, pero apenas puede ejecutar iOS 9. Y esto no se debe a que iOS 9 es mucho mejor, básicamente, el sistema no ha cambiado. Pero el nuevo hardware es más rápido, por lo que hicieron que el software fuera más lento. No se preocupe, tiene nuevas funciones interesantes, por ejemplo ... ¡las mismas aplicaciones funcionan a la misma velocidad! No lo se
iOS 11 ha dejado de admitir aplicaciones de 32 bits. Esto significa que si el desarrollador no está listo para devolver y actualizar la aplicación, lo más probable es que no vuelva a ver este excelente programa.
@jckarter : Se puede hacer que el programa DOS funcione sin cambios en casi cualquier computadora hecha después de los años 80. La aplicación JavaScript puede bloquearse debido a la actualización de Chrome de mañana.
Las páginas web de hoy
no funcionarán en ningún navegador después de 10 años (o tal vez antes).
"Necesitamos correr tan rápido para permanecer en el mismo lugar". Pero el punto? Constantemente puedo comprar nuevos teléfonos y computadoras portátiles, como todos los demás, pero ¿puedo hacerlo solo para poder ejecutar las mismas aplicaciones, que solo se han vuelto más lentas?
Creo que podemos y debemos corregir la situación. Ahora todos están desarrollando programas para hoy, ocasionalmente para mañana. Pero será bueno hacer cosas que funcionen un poco más.
Peor es mejor
Ahora nadie entiende nada. Y no quiere entender. Acabamos de lanzar estupideces a medias, esperamos lo mejor y lo llamamos "sentido común para una startup".
Se solicita que las páginas web se actualicen si algo salió mal. ¿Quién tiene tiempo para encontrar la causa del problema?

Cualquier aplicación web produce un flujo constante de errores JS "aleatorios", incluso en navegadores compatibles.
Toda la arquitectura de la base de datos web / SQL se basa en la premisa (incluso la esperanza) de que nadie cambie los datos mientras mira una página web abierta.
La mayoría de las aplicaciones de colaboración hicieron lo mejor que pudieron, hay toneladas de escenarios típicos cuando pierden datos. Vimos el diálogo "¿Qué versión debo guardar?" Hoy, el nivel es tan bajo que los usuarios están contentos incluso con este problema.

Y no, en mi mundo la aplicación no es normal, que dice: "Destruiré parte de tu trabajo, solo elige cuál".
Linux mata
intencionalmente procesos aleatorios. Y sin embargo, este es el sistema operativo del servidor más popular.
Todos los dispositivos que tengo se bloquean regularmente de todos modos. De vez en cuando, es necesario reiniciar el monitor Dell porque tiene software. Airdrop? Tendrá suerte si encuentra un dispositivo, de lo contrario, ¿qué debo hacer? Bluetooth? Las especificaciones son tan complejas que los
dispositivos no se comunicarán entre sí , y
los reinicios periódicos son la mejor opción .

Y ni siquiera menciono el
Internet de las cosas . Está tan fuera de razón que no hay nada que agregar.
Quiero estar orgulloso de mi trabajo. Quiero trabajar, cosas estables. Para hacer esto, debe comprender exactamente qué estamos desarrollando, por dentro y por fuera, y esto no se puede hacer en sistemas hinchados y demasiado complicados.
El mismo caos en la programación.
Parece que nadie más está interesado en soluciones completas, rápidas, eficientes, duraderas y de alta calidad. Incluso si las soluciones efectivas se conocen desde hace mucho tiempo, todavía luchamos con los mismos problemas: gestión de paquetes, sistemas de ensamblaje, compiladores, diseño de lenguaje, IDE.
Los sistemas de ensamblaje son inherentemente poco confiables y requieren periódicamente una limpieza completa, aunque tienen toda la información sobre discapacidad. Nada impide que el proceso de ensamblaje sea confiable, predecible y 100% reproducible. Simplemente nadie piensa que es importante. NPM ha estado en un estado "a veces en funcionamiento" durante muchos años.
@przemyslawdabek: , rm-rf node_modules
Node.js/JavaScript.
? , . « »? , - , , .

, , . , Hadoop
, .
, .
@rakhim: « » « », «, , ». «», : , .
Linux, Docker , , , . , . , « » Go. == .
Python , .
. Python — sudo? « » , . . , - ( ) ( , ,
):

.
— . , .
, , . , . AWS. . . , 20 . :
- — . , .
. . , , . — . , , .
, , . , .
,
.
.

? , 25 ? , . , .
— :
@sahrizv: 2014 — .
2016 — Docker, .
2018 — Kubernetes, Docker.
:
@dr_c0d3: 2000: 100 XML, «» EJB.
2018: 100 YAML, «» .
XML …
, .
. , . () , Android 350 ? , . , ? , , . : « , »? . .
. , , . (iPhone/iOS , Chrome ) , .
— , , . , . , . .
.
(
LMAX Disruptor,
SBE,
Aeron) , .
Xi , , .
, 500 000 . , , .
, . - . , , — , .
. . , . , . - — , , , , , , .
— . - . , . , . - .
:
— . , , . , , , , , ( !). , . , , . . « , ...» — !
, . , , . , , . , , , .