Creo que el tema está bien elegido. Es "genial" escribir una línea de Perl que haga diez mil cosas a la vez, pero luego apesta cuando tienes que volver a visitarla.
En una nota diferente, inteligente o no, el código debe estar documentado. Existe un desajuste de impedancia inherente entre los lenguajes de programación aceptados por la industria y los conceptos de alto nivel a los que los humanos estamos acostumbrados en nuestro pensamiento. El código de auto-documentación simplemente no es realizable, hasta que se convierte en un lenguaje natural, es decir. Incluso es necesario documentar el código de Prolog, ya que, por muy alto que sea, aún es bastante formal.
El código imperativo de grano fino sirve para implementar planes de grano grueso, que deben documentarse. No quiero tener que leer las 50 líneas del método cuando un comentario rápido de la hoja de ruta de 3 líneas funcionará.
Edición posterior:
Un ejemplo más elocuente es uno que trasciende las computadoras. Un libro puede estar muy bien escrito, pero a menudo queremos procesarlo en diferentes niveles de abstracción. A menudo, un resumen del libro servirá, y eso es lo que los comentarios pueden ofrecer al código. Por supuesto, un código bien resumido puede hacer mucho para la autodocumentación, pero no puede ofrecerle todos los niveles de abstracción.
Y los comentarios también pueden actuar como notas al margen en un libro, cuando necesitamos explicar el proceso de razonamiento detrás de una afirmación en el texto principal sin descarrilarlo.
Con este contexto, encuentro que mi declaración anterior que se refiere al lenguaje natural que trasciende la necesidad de comentarios es incorrecta. Incluso el lenguaje natural, como en un libro, puede prestarse a la documentación, para explicar de manera dispersa la abstracción incorporada en el texto, o para proporcionar desvíos sin descarrilar el texto principal. Con la nota de que un código bien resumido ya puede haber recorrido un largo camino hacia la autodocumentación.
Por último, pero no menos importante, los comentarios pueden ayudar al programador a mantener un alto nivel de abstracción. Muchas veces me doy cuenta de que dos comentarios consecutivos que incluí en una lista de pasos no hablan al mismo nivel de abstracción, lo que justifica de inmediato una mirada crítica a lo que estoy haciendo con ese código.
Ciertos problemas trascienden la codificación y afectan la codificación al igual que otras actividades. Los comentarios pueden proporcionar esa ayuda para aclarar las razones subyacentes y las facetas de nuestro código, y creo que son un compañero agradable que habla un lenguaje más suave para beneficiar a la persona para un cambio.