Dima: en tu pregunta, dices:
En mi experiencia, todos los grandes productos de software desarrollados utilizando lenguajes con recolección automática de basura son difíciles de ejecutar y soportar.
A gran escala, hablemos de un mínimo de diez millones de líneas de código, un equipo de más de 100 desarrolladores, una duración acumulativa del proyecto de no menos de 30 meses y que se ejecute (es decir, requiere para la producción) al menos 100 servidores . Por lo tanto, no hay proyectos “simples” de una o dos personas que se ejecutan en una gran cantidad de servidores, no hay aplicaciones gigantes del ejército de programadores que se ejecutan en un solo proceso en una sola máquina, etc., pero a gran escala real proyectos
- ¿Cuál es el propósito de las pruebas de software?
- ¿Existe un software que pueda traducir mangas?
- ¿Qué esperarías de un documento de mejores prácticas al desarrollar widgets de formulario de Symfony 1.4?
- ¿Qué ventajas prácticas ofrece Git sobre SVN o Perforce?
- ¿Te fue fácil la programación de software o tuviste que luchar con algunos de los conceptos al principio?
Uno de los avances en las últimas décadas que ha simplificado drásticamente el desarrollo y las operaciones de los sistemas a gran escala es la recolección automática de basura. La recolección automática de basura es una de las principales razones por las cuales podemos construir sistemas a gran escala. Antes de los lenguajes modernos con recolección automática de basura, los sistemas a gran escala eran increíblemente difíciles y costosos de construir, eran extremadamente frágiles y estructuralmente resistentes al cambio, y un gran porcentaje de los sistemas a gran escala que las empresas intentaban construir simplemente no funcionaban . (Fui testigo de algunos de primera mano. Estos fueron proyectos que terminaron matando o casi matando a las compañías que apostaron por ellos).
Entonces, su pregunta se basa en una combinación de sesgo de sobreviviente y la siguiente falacia lógica: Usted asume que la recolección de basura es la causa del “dolor de correr y apoyar”, pero ¿en comparación con qué ? ¿El dolor de cerrar el negocio? ¿El dolor de nunca terminar un proyecto? ¿El dolor de que el sistema se bloquee regularmente?
Lo entiendo. Te gusta la brutal simplicidad de la memoria no administrada automáticamente. ¿No es divertido preparar algo solo o con un compañero de programación durante un fin de semana? Pero ese no es un “sistema a gran escala”. Lo que no se está dando cuenta es que muy pocos sistemas a gran escala (según los estándares actuales) se construyeron con éxito con esas tecnologías. Para construir sistemas a gran escala, esas tecnologías primitivas apestaron en aquel entonces, y todavía apestan hoy.
He trabajado con varios proyectos muy exitosos que operaron sistemas a gran escala construidos sin recolección automática de basura. Entonces, sí, es posible construirlos, pero también sé que juzgar las decisiones tecnológicas a partir de estos éxitos raros (por ejemplo, Paypal core, NYSE core) depende inherentemente del sesgo de supervivencia, y en todos los casos que conozco (incluidas las bolsas de valores, procesamiento central de pagos, banca, control de tráfico aéreo, etc.), estos sistemas a gran escala ya están muy aumentados con aplicaciones creadas utilizando la recolección automática de basura, y muchos de los sistemas sobrevivientes a gran escala construidos sin recolección automática de basura ya están en proceso de ser reemplazado por completo con sistemas construidos usando recolección de basura automática.
De hecho, se ha dicho que la recolección automática de basura es la peor forma de administración de memoria, excepto por todas las otras formas que se han probado de vez en cuando …
– Winston Churchill (más algunas de mis propias libertades con su redacción)
Supongo que este es el punto que estoy tratando de transmitir: el dolor de administrar la “recolección automática de basura” para un sistema a gran escala puede ser el mayor dolor que enfrenta, pero si está lidiando con ese dolor, entonces usted ‘ eres afortunado, porque significa que has esquivado la mayoría, si no todos, los dolores más grandes. En el esquema de las cosas, es un dolor bastante pequeño.
Por otro lado, si no me crees, siempre puedes ir y reconstruir Facebook usando C ++ …