387 votes

Que signifie le terme "crochet" dans la programmation?

J'ai récemment entendu le terme "crochet" en parlant à certaines personnes d'un programme que j'écrivais. Je ne sais pas exactement ce que ce terme implique, même si je déduis de la conversation qu'un crochet est un type de fonction. J'ai cherché une définition mais je n'ai pas pu trouver une bonne réponse. Quelqu'un pourrait-il me donner une idée de ce que signifie généralement ce terme et peut-être un petit exemple pour illustrer la définition?

207voto

Micah Points 28683

Essentiellement, c'est un endroit dans le code qui vous permet d'exploiter un module pour fournir un comportement différent ou pour réagir en cas de problème.

107voto

paxdiablo Points 341644

Un crochet est une fonctionnalité fournie par le logiciel pour les utilisateurs de ce logiciel pour avoir leur propre code appelé dans certaines circonstances. Ce code peut améliorer ou de remplacer le code actuel.

Dans les temps anciens où les ordinateurs étaient vraiment personnels et les virus ont été moins fréquentes (je parle des années 80), c'était aussi simple que de patcher le logiciel de système d'exploitation lui-même pour appeler votre code. Je me souviens avoir écrit une extension de l'Applesoft BASIC de la langue sur l'Apple II, qui simplement accroché mon code dans l'interpréteur BASIC par l'injection d'un appel à mon code avant de la ligne a été traitée.

Certains ordinateurs avaient pré-conçus, crochets, par exemple, les flux d'e/S sur l'Apple II. Il a utilisé un tel crochet pour injecter la totalité du disque sous-système (Apple II ROMs ont été à l'origine construit dans les jours où les cassettes ont été le principal moyen de stockage pour Pc). Vous contrôlé les disques par l'impression du code ASCII 4 (CTRL-D), suivi par la commande que vous vouliez exécuter puis un CR, et il a été intercepté par le disque sous-système, qui avait accroché lui-même dans la Pomme ROM impression de routines.

Ainsi, par exemple, les lignes:

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

liste le contenu du disque puis de le ré-initialiser la machine. Cela a permis à de tels stratagèmes, comme la protection de vos programmes de BASE par la mise en première ligne:

123 REM XIN#6

ensuite à l'aide d' POKE insérer l' CTRL-D caractère où l' X a été. Alors, pour qui cherche à la liste de votre source d'envoyer le ré-initialiser la séquence de sortie des routines où le disque sous-système de la détecter.

C'est souvent le genre de supercherie, nous avons dû recourir, pour obtenir le comportement que nous voulions.

Aujourd'hui, avec le système d'exploitation plus sécurisé, il offre des installations pour les crochets de lui-même, puisque vous n'êtes plus censé modifier le système d'exploitation "en vol" ou sur le disque.

Ils ont été autour pendant un long moment. Les Mainframes avaient eux (appelé sorties) et un grand nombre de logiciels de l'ordinateur central d'utilisation de ces équipements, même maintenant. Par exemple, le code source libre de système de contrôle qui vient avec z/OS (appelé SCLM) vous permet de remplacer entièrement le sous-système de sécurité en plaçant simplement votre propre code dans la sortie.

67voto

Alan Storm Points 82442

Dans un sens générique, un "crochet" est quelque chose qui vous permettra, d'un programmeur, d'afficher et/ou d'interagir avec et/ou de changer quelque chose qui est déjà en cours dans un système/programme.

Par exemple, le CMS Drupal fournit aux développeurs avec des crochets qui leur permettent de prendre des mesures supplémentaires après un "nœud de contenu" est créé. Si un développeur ne pas mettre en œuvre un crochet, le nœud est créé par la normale. Si un développeur implémente un crochet, ils peuvent avoir un code supplémentaire exécuté chaque fois qu'un nœud est créé. Ce code pourrait faire quoi que ce soit, y compris la restauration et/ou la modification de l'action d'origine. Il pourrait aussi faire quelque chose sans rapport avec la création d'un nœud entièrement.

Un rappel peut être considéré comme un type spécifique de crochet. Par la mise en œuvre de fonctionnalités de rappel dans un système, ce système est ce qui vous permet d'appeler un code supplémentaire après qu'une action est terminée. Cependant, l'accrochage (comme un terme générique) n'est pas limitée à des rappels.

Un autre exemple. Parfois, les Développeurs Web vont se référer à des noms de classe et/ou Identifiants sur des éléments comme des crochets. C'est parce qu'en plaçant l'IDENTIFIANT et le nom de la classe sur un élément, ils peuvent ensuite utiliser Javascript pour modifier cet élément, ou "crochet" à la page du document. (c'est l'étirement de la signification, mais il est couramment utilisé et utile de mentionner)

21voto

geowa4 Points 17712

Accrocher à la programmation est une technique qui utilise ce qu'on appelle des crochets pour créer une chaîne de procédures en tant que gestionnaire d'événements.

6voto

urgent Points 21

Hook indique une place dans le code où vous envoyez un événement d'un certain type, et si cet événement a été enregistré auparavant avec une fonction appropriée à rappeler, alors il serait géré par cette fonction enregistrée, sinon rien ne se produit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X