Pregunta ¿Qué se entiende por el término "gancho" en la programación?


Hace poco escuché el término "gancho" mientras hablaba con algunas personas sobre un programa que estaba escribiendo. No estoy seguro de lo que este término implica, aunque deduje de la conversación que un gancho es un tipo de función. Busqué una definición pero no pude encontrar una buena respuesta. ¿Alguien podría darme una idea de lo que generalmente significa este término y quizás un pequeño ejemplo para ilustrar la definición?


187
2018-01-21 23:52


origen


Respuestas:


Esencialmente es un lugar en el código que le permite acceder a un módulo para proporcionar un comportamiento diferente o para reaccionar cuando sucede algo.


114
2018-01-21 23:55



Un gancho es la funcionalidad proporcionada por el software para que los usuarios de ese software tengan su propio código llamado en determinadas circunstancias. Ese código puede aumentar o reemplazar el código actual.

En los viejos tiempos, cuando las computadoras eran realmente personales y los virus eran menos frecuentes (estoy hablando de los '80), era tan simple como parchar el software del sistema operativo para llamar a su código. Recuerdo haber escrito una extensión del lenguaje Applesoft BASIC en Apple II que simplemente enganchó mi código en el intérprete BASIC al inyectar una llamada a mi código antes de que se procesara alguna línea.

Algunas computadoras tenían ganchos prediseñados, un ejemplo es la transmisión de E / S en Apple II. Utilizó dicho gancho para inyectar todo el subsistema del disco (los ROM de Apple II se construyeron originalmente en los días en que los cassettes eran el principal medio de almacenamiento para PC). Usted controló los discos por impresión el código ASCII 4 (CTRL-D) seguido del comando que quería ejecutar y luego CR, y fue interceptado por el subsistema de disco, que se había enganchado a las rutinas de impresión de la ROM de Apple.

Entonces, por ejemplo, las líneas:

PRINT CHR(4);"CATALOG"
PRINT CHR(4);"IN#6"

enumeraría el contenido del disco y luego reiniciaría la máquina. Esto permitió trucos tales como proteger sus programas BASIC al establecer la primera línea como:

123 REM XIN#6

luego usando POKE para insertar el CTRL-D personaje en donde el X estaba. Entonces, cualquiera que intente enumerar su fuente enviaría la secuencia de reinicialización a través de las rutinas de salida donde el subsistema del disco la detectaría.

A menudo es el tipo de engaño que tuvimos que recurrir, para obtener el comportamiento que queríamos.

Hoy en día, con el sistema operativo más seguro, proporciona instalaciones para los ganchos, ya que ya no se supone que modifique el sistema operativo "en vuelo" o en el disco.

Han estado por aquí largo hora. Los mainframes los tenían (llamadas salidas) y una gran cantidad de software de mainframe usa esas instalaciones incluso ahora. Por ejemplo, el sistema de control de código fuente gratuito que viene con z / OS (llamado SCLM) le permite reemplazar completamente el subsistema de seguridad simplemente colocando su propio código en la salida.


64
2018-01-22 00:12



En un sentido genérico, un "gancho" es algo que le permitirá a usted, un programador, ver y / o interactuar y / o cambiar algo que ya está sucediendo en un sistema / programa.

Por ejemplo, Drupal CMS proporciona a los desarrolladores anzuelos que les permiten tomar medidas adicionales después de crear un "nodo de contenido". Si un desarrollador no implementa un gancho, el nodo se crea de forma normal. Si un desarrollador implementa un enlace, puede tener algún código adicional ejecutado cada vez que se crea un nodo. Este código podría hacer cualquier cosa, incluido retroceder y / o alterar la acción original. También podría hacer algo que no esté relacionado con la creación del nodo por completo.

Una devolución de llamada podría considerarse como un tipo específico de gancho. Al implementar la funcionalidad de devolución de llamada en un sistema, ese sistema le permite llamar a algún código adicional después de que se haya completado una acción. Sin embargo, el enganche (como un término genérico) no está limitado a las devoluciones de llamada.

Otro ejemplo. Algunas veces, los Desarrolladores Web se referirán a nombres de clase y / o ID en elementos como ganchos. Esto se debe a que al colocar el nombre de ID / clase en un elemento, pueden usar Javascript para modificar ese elemento o "enganchar" en el documento de la página. (Esto está ampliando el significado, pero se usa comúnmente y vale la pena mencionar)


33
2018-01-22 00:18



Enganche en la programación es una técnica que emplea los llamados ganchos para hacer una cadena de procedimientos como un controlador de eventos.


13
2018-01-21 23:58



Los ganchos son una categoría de función que permite que el código base llame al código de extensión. Esto puede ser útil en situaciones en las que un desarrollador central desea ofrecer extensibilidad sin exponer su código.

Un uso de ganchos es en el desarrollo de mods de videojuegos. Un juego puede no permitir que los desarrolladores de mod extiendan la funcionalidad base, pero los ganchos pueden ser agregados por los desarrolladores de la librería mod core. Con estos ganchos, los desarrolladores independientes pueden solicitar que se les llame a su código personalizado sobre cualquier evento deseado, como carga de juegos, actualizaciones de inventario, interacciones entre entidades, etc.

Un método común de implementación es dar a una función una lista vacía de devoluciones de llamadas, y luego exponer la posibilidad de ampliar la lista de devoluciones de llamadas. El código base siempre llamará a la función al mismo tiempo y a la hora correcta pero, con una lista de devolución de llamada vacía, la función no hace nada. Esto es por diseño.

Un tercero, entonces, tiene la oportunidad de escribir un código adicional y agregar su nueva devolución de llamada a la lista de devolución de llamada del gancho. Con nada más que una referencia de ganchos disponibles, han ampliado la funcionalidad con un riesgo mínimo para el sistema base.

Los enganches no permiten a los desarrolladores hacer nada que no se pueda hacer con otras estructuras e interfaces. Son una opción que debe tomarse teniendo en cuenta la tarea y los usuarios (desarrolladores externos).

Para aclaración: un gancho permite la extensión y puede implementarse mediante devoluciones de llamada. Las rellamadas generalmente no son más que un puntero de función; la dirección calculada de una función. Parece haber confusión en otras respuestas / comentarios.


11
2018-01-25 15:57



Simple dijo:

Un gancho es un medio para ejecutar código personalizado (función) antes, después o en lugar del código existente. Por ejemplo, una función se puede escribir para "enganchar" en el proceso de inicio de sesión para ejecutar una función de Captcha antes de continuar con el proceso de inicio de sesión normal.


5
2017-08-02 14:36



Hook denota un lugar en el código donde se despacha un evento de cierto tipo, y si este evento se registró anteriormente con una función adecuada para devolver la llamada, entonces esta función registrada lo manejaría, de lo contrario no pasará nada.


4
2018-04-05 05:05



los ganchos se pueden ejecutar cuando se encuentra alguna condición. p.ej. se llaman algunos cambios variables o se hace alguna acción o sucede algún evento. los ganchos pueden ingresar en el proceso y cambiar las cosas o reaccionar ante los cambios.


2
2018-01-22 00:00