computer-science abstraction indirection

computer science - El nivel de indirección resuelve cada problema



computer-science abstraction (7)

¿Qué significa la frase "Nivel de Indirección resuelve cada Problema" en Informática?


Esta cita es muy amplia en su implicación. 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 la indirección


Básicamente significa que debe dividir su problema en problemas más pequeños hasta que los problemas sean fáciles de resolver.

Usted divide el problema en varias capas:

  • rutinas que resuelven el problema
  • Llaman: rutinas que comprenden el espacio problemático
  • Llaman: rutinas que hacen pequeños pasos (cargar un archivo, mezclar algunos bits, escribir una salida).

Las rutinas en la parte superior (las que resuelven problemas) se indirectan / abstraen de los medios reales de resolver el problema, haciéndolos más flexibles para resolver el mismo problema de una manera ligeramente diferente más adelante.


En general, significa que al aumentar el nivel de abstracción uno 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 escuché es, "Puede resolver cada problema con otro nivel de direccionamiento indirecto, excepto por el problema de demasiados niveles de indirección".


Del libro Beautiful Code :

Todos los problemas en la informática pueden resolverse con otro nivel de indirección ", es una cita famosa atribuida a Butler Lampson, el científico que en 1972 imaginó la computadora personal moderna.

Aunque esto es contradicho por Wikipedia que atribuye la frase a David Wheeler.


Un concepto tan importante y tan pocas respuestas aquí. En general, 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 y | la instrumentación de eventos está muy infravalorada.


El corolario de Kevlin Henney es: "... excepto por el problema de demasiadas capas de indirección".


Primero debemos entender lo que significa agregar nivel de indirección .

Usualmente, Agregar Nivel de Indirección significa que podemos proporcionar una forma 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, una dirección IP significa quién es usted cuando inicia sesión y dónde se encuentra.

LISP usa un nivel de direccionamiento indirecto para resolver el problema de enrutamiento indicado anteriormente.

Lo hace con algún costo:

  • Ahora debe existir un nuevo servidor con capacidad LISP para asignar direcciones a sitios

  • Se requieren dos espacios de nombres (uno para Ubicación y el otro para ID)

Y algunos beneficios adicionales:

  • Elimine la renumeración del sitio al agregar un nuevo bloque

  • Reducción en el tamaño de las tablas de enrutamiento

  • ISP puede hacer cambios (mover sitios de un host a otro)

  • Conserva el espacio de direcciones IPV4 (espacio de direcciones del localizador no asignado a los hosts)

  • Con LISP un ISP puede asignar menos direcciones por sitio

La imagen a continuación muestra la nueva capa de direccionamiento indirecto:

LISP resuelve el problema agregando una nueva capa de direccionamiento indirecto y simplifica algunas cosas, pero no es del todo simple. Es diferente y en muchos sentidos es mejor.