Esto surgió en una conversación que estaba teniendo en línea, y se me ocurrió que no tengo idea de cómo se supone que funciona: muchos programadores parecen dar por hecho, de hecho, es obvio que las clases son una característica de idioma necesaria para la gestión de grandes proyectos de software.¿Cómo te ayudan las clases a administrar aplicaciones grandes?
No es obvio para mí cómo lo hacen.
Mi pregunta es, ¿cómo lo sabes? ¿Qué medidas objetivas hay que demuestren que las clases aumentan la productividad, reutilizan el código y reducen la complejidad de la producción de un programa? ¿Qué aspectos de las clases los hacen ideales para que los equipos grandes colaboren?
Y ahora, hay una pregunta que me gustaría hacer, que es algo difícil de expresar. Lo siento si me equivoco y termino confundiendo o enojando a alguien:
Objetivamente, ¿cómo sabes que el uso de clases no es la causa de que la aplicación sea grande para empezar? Es decir, ¿es posible que se haya escrito un programa con una función equivalente, con mucho menos código, lo suficientemente pequeño como para no necesitar medidas especiales para "administrarlo", utilizando alguna otra estrategia de reutilización de código? (hay muchos para elegir, como los de paradigmas de programación funcional o programación orientada a aspectos).
Ese último bit es algo que Steve Yegge ha estado insinuando en su blog. Pero soy un poco escéptico de ambos lados de la discusión, debido a la falta real de datos duros por parte de nadie, y no tengo suficiente experiencia para llegar a una conclusión por mi cuenta.
¿Qué opinas?
editar: En particular, estoy interesado en por qué muchos programadores piensan que la herencia de estilo prototípico no está a la altura de las grandes aplicaciones. Lamento que esta pregunta sea vaga: es producto de mi falta de comprensión sobre este tema.
edit2: parece haber cierta confusión sobre lo que quiero decir con programación funcional. (No creo que alguna versión de VB fuera funcional, ciertamente no versiones anteriores). Por favor, consulte el artículo de Wikipedia. http://en.wikipedia.org/wiki/Functional_programming
edit3: y permítanme enfatizar que estoy buscando medidas objetivas. Opiniones no subjetivas
Stellar answer. Creo que lo entiendo, pero incluso si no lo hago, creo que leer esto me ha hecho progresivamente un mejor programador. Todavía tengo esperanza para el futuro, que no dejaremos de buscar mejores formas más útiles de obtener estos beneficios de encapsulación. – Breton