Au lieu de fonctions , commencez par des sous-programmes . Dites-leur qu'un programme n'est qu'une liste d'instructions, une recette pour dire à l'ordinateur comment faire quelque chose. Et qu'il est exécuté une instruction après l'autre (avec la possibilité de faire quelques étapes en parallèle, mais plus à ce sujet plus tard).
Certaines tâches sont assez courantes et répétitives, donc ce serait terrible si nous devions toujours les écrire encore et encore, donc nous les écrivons une seule fois et en faisons un "petit programme" - un sous - programme , qui peut être réutilisé par d'autres parties du programme. Afin de pouvoir l'exécuter plus d'une fois, nous lui donnons un nom significatif dans notre programme. Et puis nous pouvons utiliser ce nom lorsque nous voulons exécuter ce "petit programme" dans le cadre d'un plus grand, en l' appelant par ce nom.
Appeler un sous-programme, c'est comme invoquer un démon qui sait accomplir cette tâche, par le nom de ce démon. Donc, quand nous voulons faire cette tâche particulière dans notre programme, nous écrivons "appelons le démon nommé Argoth", et le démon se présente et fait la tâche pour nous comme nous lui avons demandé de le faire, puis s'en va et nous pouvons continuer notre emploi.
Parfois, le démon a besoin d'informations supplémentaires sans lesquelles il ne peut pas décider laquelle des tâches à effectuer ou ce que nous attendons vraiment de lui. Par exemple, si le démon est censé construire un château, il peut avoir besoin de savoir où il est censé le construire, ou quelle taille , etc. Ce sont les arguments transmis au démon ... Je veux dire, le sous-programme, qui devient maintenant paramétré .
Les paramètres sont les informations qui manquent, mais sont nécessaires pour effectuer la tâche. Ils modifient un peu ce que le sous-programme peut faire. Ils sont comme des cases vides dans la recette qui doivent être remplies avant de pouvoir l'exécuter.
Les arguments , en revanche, sont les informations (valeurs) réelles que nous fournissons pour ces paramètres.
Quant à l'exécution parallèle, on peut y penser de cette façon: il y a toujours quelqu'un (ou quelque chose ) qui exécute le programme (la liste des instructions). C'est soit un autre être humain (saviez-vous que "ordinateur" était autrefois le nom d'une personne qui effectuait le calcul?), Soit une machine. Un programme n'est qu'une liste d'instructions, il ne fonctionne pas seul. Il doit y avoir quelqu'un ou quelque chose qui fera le processus de calcul(effectuez ces actions dans la liste). Et parfois, ces actions peuvent être effectuées en parallèle - nous pouvons distribuer les copies de la liste à plusieurs personnes et laisser chacune d'elles effectuer un ensemble de tâches différent de la liste, tant qu'elles ne s'interrompent pas, ou ne s'interrompent pas. Je n'ai pas à attendre les résultats du travail de quelqu'un d'autre. C'est du multithreading pour vous;)
Quant à la différence entre les fonctions et les sous - programmes (également appelés procédures ), la différence habituelle est qu'une fonction est appelée pour calculer une certaine valeur qu'elle renvoie à la suite de son exécution, tandis que les procédures sont exécutées juste pour le plaisir;) AKA pour leurs "effets secondaires" - juste pour le bien des opérations effectuées à partir de la liste.
Mais si appeler une procédure ou une fonction pose des problèmes au début, vous pouvez utiliser un autre terme qui était autrefois populaire: sauter . On peut sauter dans un sous-programme, ce qui signifie que vous arrêtez d'exécuter tout ce que vous faites en ce moment et que vous "sautez" vers un autre endroit de la liste (ou une autre liste) - le sous-programme - afin d'exécuter ses tâches. Ensuite, lorsque vous avez terminé, vous "sautez en arrière" - c'est-à-dire que vous revenez à l'endroit où vous avez été interrompu, afin de pouvoir continuer votre tâche précédente. La différence entre appeler et sauter est que maintenant vous êtes le démon.
Quant aux méthodes mentionnées ici par quelqu'un, ou au fait que certains langages "n'ont pas de fonctions, seulement des méthodes" - ce n'est pas tout à fait correct, car les méthodes sont des fonctions! - un type particulier d'entre eux: ce sont des fonctions qui sont utilisées pour récupérer des informations encapsulées à l'intérieur d'un objet, ou pour les opérer. Ils sont une "méthode pour opérer sur ces données". Le nom vient d'un paradigme orienté objet dans lequel les données sont entourées d'objets et ne peuvent pas être exploitées directement, uniquement par des fonctions spéciales appelées "méthodes".
Une méthode est spéciale d'une autre manière: elle doit savoir sur quel objet particulier elle est censée fonctionner / être appelée (l'objet "this"). C'est pourquoi les méthodes sont généralement agrémentées d'un paramètre caché supplémentaire qui stocke des informations sur l'objet sur lequel il a été appelé (le pointeur "this"). Cela complique un peu la façon dont la fonction est appelée, mais c'est un "détail d'implémentation" qu'un programmeur ne devrait pas déranger beaucoup, tant qu'il sait ce qu'il fait.