¿Qué significa la frase "El nivel de indirección resuelve cada problema" en Informática?El nivel de indirección resuelve cada problema
Respuesta
Generalmente significa que al aumentar el nivel de abstracción se puede hacer que el problema sea más fácil de comprender/resolver.
Sin embargo, tenga cuidado con sus abstracciones, la cita completa al menos tal como lo escuché es, "Puede resolver cada problema con otro nivel de indirección, excepto por el problema de demasiados niveles de indirección".
Buen consejo. Trabajo rutinariamente con problemas muy abstractos y me gusta describir la abstracción como una gran palanca en la que presionas el extremo más pequeño: los pequeños cambios producen grandes movimientos, pero a costa de que debes esforzarte mucho. – BCS
Esa no es la cita completa; es una versión corregida que alguien más ideó después del hecho. Es correcto, sin embargo. –
http://zedshaw.com/essays/indirection_is_not_abstraction.html – unhammer
Básicamente significa que debe dividir su problema en problemas más pequeños hasta que los problemas sean fáciles de resolver.
a eliminar el problema en varias capas:
- rutinas que resuelven el problema
- Se llaman: rutinas que entienden el espacio del problema
- Lo llaman: rutinas que hacen pequeños pasos (cargar un archivo , twiddle algunos bits, escribe una salida).
Las rutinas en la parte superior (los de resolución de problemas) están indirected/abstraído de los medios reales de la solución del problema, haciéndolos más flexibles para resolver el mismo problema de una manera ligeramente diferente después.
¿Por qué el voto a favor? – jv42
Del libro Beautiful Code:
Todos los problemas de la informática se pueden resolver por otro nivel de indirección ", es una famosa cita atribuida a Butler Lampson, el científico que en 1972 prevé la computadora personal moderna.
Aunque esto es contradicted by Wikipedia que atribuye la frase de David Wheeler.
Al final del capítulo, el libro menciona que Lampson atribuye la cita a David Wheeler, por lo que Wikipedia no está realmente contradiciéndola, simplemente siguiendo la indirección, si se quiere :), a la fuente. – jw013
Tal concepto muy importante y tan pocas respuestas aquí. Generall y cada problema presentado puede resolverse no necesariamente mediante ajustes directos del código, sino aplicando algún proxy (olvide la definición del patrón) de alguna forma. La intercepción & | la instrumentación de eventos está muy infravalorada.
Por favor, ¿qué quiere decir con intercepción y/o instrumentación de eventos? ¿Qué eventos? ¿Y cómo está subvaluado? Gracias. – user712092
El corolario de Kevlin Henney es, "... a excepción del problema de demasiadas capas de indirección".
Lo escuché con el corolario antes de escucharlo solo. Me encuentro con este corolario con más frecuencia de lo que me encuentro con la situación en la que necesito agregar capas de indirección. –
Esta cita es muy amplia en sus implicaciones. La clave para entender es enfocarse en la palabra 'problema'. El problema puede ser un error/problema de programación, la traducción de una entidad mundial a su componente informático equivalente, la asociación de costos con la solución informática. Supongamos que está tratando de resolver el problema con el costo de desarrollar algo usted mismo, es posible que desee considerar a otros expertos para que hagan el trabajo por usted mucho más barato en tiempo y dinero. Este es otro uso de direccionamiento indirecto
Primero debemos entender qué significa Agregar Nivel de Indirección.
Por lo general, Añadiendo el Nivel de Indirección significa que somos capaces de proporcionar una manera alternativa de resolver un problema, idealmente con algunos beneficios adicionales. Otras veces, cuando nada está funcionando actualmente, la indirección podría ser nuestra única solución.
Por ejemplo, si la necesidad del negocio es "Tenemos que decidir qué tamaño de bloque de IP comprar para poder proporcionar direcciones IP a todos nuestros sitios".
El problema es que si elegimos un bloque que es demasiado pequeño, tendremos que obtener uno más grande. Nuestro administrador no solo debe obtener otro bloque, sino que ahora debe agregarse un prefijo adicional en nuestra tabla de enrutamiento para acceder a mis sitios. Eso es tiempo extra, costo y complejidad. ¿Hay una mejor manera?
Hoy en día, una dirección IP significa quién es usted cuando inicia sesión y donde se encuentra.
LISP usa un nivel de direccionamiento indirecto para resolver el problema de enrutamiento indicado anteriormente.
Lo hace con un cierto coste:
Un nuevo servidor capaz LISP ahora deben existir para asignar direcciones a sitios
Se requieren dos espacios de nombres (uno para la ubicación del otro ID)
y algunos beneficios adicionales:
Eliminar la renumeración sitio cuando se añade un nuevo bloque
Reducción en el tamaño de las tablas de enrutamiento
ISP puede hacer cambios (sitios que se mueven desde un host a otro)
conserva el espacio de direcciones IPv4 (espacio localizador de direcciones no asignadas a los hosts)
con LISP un ISP puede asignar menos direcciones por sitio
La imagen siguiente muestra la nueva capa de indirección:
LISP resuelve el problema mediante la adición de un nueva capa de indirección y simplifica algunas cosas, pero no es del todo sencillo. Es diferente y en muchos sentidos es mejor.
- 1. ¿Cómo resuelve Git el problema de fusión?
- 2. ¿Qué problema resuelve IStructuralEquatable y IStructuralComparable?
- 3. ¿Qué problema resuelve Peaberry para Guice?
- 4. ¿Cómo sobrecargar el operador de indirección? (C++)
- 5. ¿Qué problema/s resuelve un algoritmo de motor de regla?
- 6. modernos CPU Inner Loop indirección optimizaciones
- 7. que resuelve el resultado de Java 137
- 8. "barra antes de cada cita" problema
- 9. ¿Resumen de cambios para cada nivel de API?
- 10. Trazado de los valores promedio para cada nivel en ggplot2
- 11. ¿Qué información incluir en cada nivel de registro?
- 12. ¿Cómo resuelve exactamente el mDNS las direcciones?
- 13. ¿El nuevo tipo de variable "dinámica" en .NET 4.0 resuelve el problema de envío de método único/múltiple en CLR?
- 14. Ruby on Rails 3. Cada uno hace el problema
- 15. Autofac - devolución de llamada global cuando se resuelve el objeto
- 16. ¿Se resuelve un problema de identificación de producto no válido con las compras en la aplicación?
- 17. Serialización "nivel de aislamiento" en MongoDB, o el problema de actualización perdida
- 18. contexto único para cada grupo a un nivel específico
- 19. ¿Cómo averiguar de dónde sbt resuelve dependencias?
- 20. ¿Por qué necesito doble capa de indirección para macros? En
- 21. Cómo el enlazador resuelve el símbolo en el código de ensamblaje
- 22. ¿Qué problemas resuelve la reflexión?
- 23. ResolveBundleUrl no resuelve todos los archivos?
- 24. PHP RecursiveIteratorIterator: determinando el primer y último elemento en cada nivel de rama
- 25. Websockets no resuelve el error "recibido marco de continuación inesperado"
- 26. ¿Cómo se pueden crear estructuras de datos cíclicas (e inmutables) en Clojure sin indirección adicional?
- 27. ¿Por qué NSError necesita doble indirección? (puntero a un puntero)
- 28. ¿Qué tan bien resuelve el diccionario .NET las colisiones?
- 29. El problema de partición
- 30. ¿Cuánto afecta la indirección del puntero a la eficiencia?
Esto suena como una tarea de tarea. –