Actualización: creo que una forma de decirlo es eso: sí, cumplió las promesas, pero cuando obtuvimos lo que queríamos descubrimos que también teníamos problemas de orden superior. Así que ahora tenemos que resolverlos para que podamos tener un buen gemido por no haber resuelto aún más problemas de alto orden 🙂
La respuesta original sigue sin cambios.
Parcialmente, en el sentido de que los mecanismos y conceptos del lenguaje están ciertamente allí, pero no anticipamos el hecho de que para que el código sea reutilizable necesitamos abordar una serie de nociones más abstractas, como la calidad y vocabularios comunes.
- ¿Se ha movido la industria del software en la dirección correcta en términos de innovación en la última década?
- ¿Cuál es el costo de desarrollar aplicaciones de Android e iOS como Umano en India?
- Ciencias de la computación: ¿Qué preguntas busca actualmente en las respuestas?
- ¿Qué es una tarea simple en tiempo real?
- ¿Quiénes son algunas personas o grupos con los que puedo contactar para externalizar el desarrollo de una aplicación iOS?
La calidad es complicada porque abarca la corrección, la simplicidad, la belleza, la disciplina y la claridad semántica, todo lo cual es escaso y difícil de medir objetivamente.
Se han establecido vocabularios comunes hasta cierto punto. Por ejemplo, el libro Software Patterns de GOF hizo mucho bien para popularizar la noción de patrones de diseño. UML hizo esto en menor grado: parte de la notación fue útil para proporcionar un lenguaje descriptivo, pero uno debe ignorar todas las tonterías tediosas e inviables de la metodología que los no profesionales tratarían de venderle.
También existe el vocabulario común de ciertas API e implementaciones. Partes de las bibliotecas estándar de Java se han diseñado de manera reflexiva y coherente, y los profesionales harían bien en comprenderlas y adoptar convenciones. Otras partes … no tanto.
Por supuesto, hay muchas tecnologías que intentan abordar estos problemas, pero la esencia del problema es que la mayoría de los programadores no son muy buenos en lo que hacen la mayor parte del tiempo. Y, por supuesto, me incluyo en esa observación.
Los programadores también tienen la mala costumbre de reutilizar cosas que no merecen ser reutilizadas. Hay * lotes * de bibliotecas y programas que se reutilizan a pesar de que su diseño y / o implementación es una basura absoluta.
Creo que esperábamos más de OOP de lo que teníamos razones para esperar. Creo que la conclusión clave es que no debemos esperar que ninguna tecnología resuelva todos nuestros problemas. En el mejor de los casos, podemos esperar mejorar un poco para abordar algunos tipos de problemas (y debemos esperar regresiones ocasionales a medida que se prueban nuevas ideas y se descubre que son callejones sin salida).