[PYTHON] La "méthode destructive" est-elle un terme Ruby?

Hier, j'ai écrit un article "Toutes les méthodes destructrices que les data scientists devraient connaître", et j'ai eu l'avis suivant d'un ami. C'était.

J'étais un peu inquiet, mais "méthode destructive" et "méthode non destructive" ne sont pas de la programmation générale mais des termes Ruby, et ne signifient pas "méthode pour changer de récepteur"? Si vous osez l'appeler par son nom, la méthode replace semble correcte. (Je ne trouve pas de japonais) https://discuss.pytorch.org/t/what-is-in-place-operation/16244 https://ja.wikipedia.org/wiki/In-place algorithme

De plus, par exemple, pandas utilise également le nom d'argument "inplace" (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html), donc c'est pour les data scientists. Ensuite, on a dit que sur place pourrait être plus familier.

Certes, je pense que la plupart des articles qui sortent comme "destructeurs" sont de Ruby. J'étais un peu inquiet, alors j'ai cherché et comparé les mots «destructif» et «en place» dans des documents en différentes langues.

Pour Python: en place prédomine

[Recherche de documentation](https://docs.python.org/ja/3.8/search.html?q=%E3%82%A4%E3%83%B3%E3%83%97%E3%83% AC% E3% 83% BC% E3% 82% B9 & check_keywords = yes & area = default) Au fait, il semble que le mot "in-place" soit en fait souvent utilisé. Par exemple, "[FAQ sur la programmation](https://docs.python.org/ja/3.8/faq/programming.html?highlight=%E3%82%A4%E3%83%B3%E3%83%97%E3%" Dans "83% AC% E3% 83% BC% E3% 82% B9 # how-do-i-modify-a-string-in-place)", c'est comme suit.

Comment changer une chaîne en sur place? ¶

Vous ne pouvez pas faire cela car la chaîne est immuable. Dans la plupart des cas, vous devez simplement composer une nouvelle chaîne à partir des parties individuelles que vous souhaitez assembler.

D'autre part, le mot «destructif» est également utilisé dans une certaine mesure. Par exemple, la documentation de Python2.7 contient le mot «destructivement». La dernière version du document dit "Effacer et retourner", mais seule la traduction japonaise a changé.

Tel qu'utilisé dans les algorithmes d'agrégation, popitem () est utile pour l'itération destructive des dictionnaires. Si le dictionnaire est vide, l'appel à popitem () lancera KeyError.

Même dans Python 3.8, "curses --- Opération du terminal pour la gestion de l'affichage des cellules de caractères" contient "non destructif (non destructif (non destructif) ( Le mot «non destructif)» a été trouvé.

Superposez la fenêtre sur destwin. Les fenêtres ne doivent pas nécessairement être de la même taille, seules les zones qui se chevauchent sont dupliquées. Cette copie est non destructive.

Il y a aussi «destructif» à distance.

Remplacez le contenu de la fenêtre au-dessus de destwin. Les fenêtres ne doivent pas nécessairement être de la même taille, seules les zones qui se chevauchent sont dupliquées. Cette copie est destructrice.

Pour Ruby: Le terme méthode destructive est expliqué

Dans la FAQ officielle sur Ruby, il y avait un élément "Qu'est-ce qu'une méthode destructive?". Aucune traduction n'a été trouvée pour la version japonaise.

The plain version creates a copy of the receiver, makes its change to it, and returns the copy. The “bang” version (with the !) modifies the receiver in place.

Le mot «en place» est également utilisé dans la description.

Je n'ai pas beaucoup parlé de la documentation, alors je vais jeter un œil à Rubima. Après tout, le mot «destructif» est souvent utilisé. Par exemple, à partir de «Ruby Code Impressions [2nd] WikiR».

force_encoding est une méthode destructive, bien qu'il soit difficile de le dire uniquement par son nom car il n'a pas de! Par conséquent, il n'est pas nécessaire d'attribuer la valeur de retour au texte. C'est assez.

À certains endroits, le mot «en place» a été utilisé lors de la «séance du matin du 10 juin».

D'un point de vue syntaxique, yield s'est mis en travers lorsque yield est arrivé en premier et a été introduit plus tard avec des arguments bloqués. De plus, je ne mute pas sur place avec String, mais ce n'est pas bon d'être foiré. Je regrette 98% des variables intégrées que j'ai obtenues de Perl.

Pour PHP: les deux sont utilisés ensemble

Il semble que les mots «en place» et «destructif» soient utilisés. Il semble que ces parties n'aient pas encore été traduites en japonais?

Depuis "Ds \ Sequence :: sort"

Sorts the sequence in-place, using an optional comparator function.

Depuis Ds \ PriorityQueue :: toArray.

Remarque:

This method is not destructive.

Autres langues

Je voulais aussi regarder Smalltalk, qui a influencé Ruby, mais ce n'était pas clair. Cependant, si vous regardez la documentation de [Smalltalk-72](http://bitsavers.informatik.uni-st Stuttgart.de/pdf/xerox/parc/techReports/Smalltalk-72_Instruction_Manual_Mar76.pdf), il y a au moins un mot non destructif. Il a été utilisé par endroits.

Note that you can make non-destructive text by using xor ink which complements the background so that reshowing the text crases it while restoring what was underneath.

J'ai également regardé Haskell, qui a fondamentalement des variables immuables, mais je n'ai trouvé que celles dont le terme destructif signifiait "une mise à jour d'une spécification de langage qui était incompatible dans le passé". J'ai abandonné parce que la lecture elle-même semblait être une douleur pour moi maintenant.

En outre, en Ruby, il est utilisé à proximité de la nomenclature appropriée «méthode destructive», tandis que destructif dans d'autres langues semble être utilisé comme un adjectif général. Peut-être que le terme «méthode destructive» est un terme qui a commencé à être utilisé dans la communauté Ruby, mais qui a été reconnu et répandu comme terme de programmation en japonais. Je vais le vérifier à nouveau si j'ai une chance.

Recommended Posts

La "méthode destructive" est-elle un terme Ruby?
Qu'est-ce qu'une distribution?
Qu'est-ce qu'un terminal?
Qu'est-ce qu'un hacker?
Qu'est-ce qu'un pointeur?
Cette chaîne est-elle une fraction?
Est-ce un commerce de système?
Qu'est-ce qu'un arbre de décision?
La liste Python n'est pas une liste
Qu'est-ce qu'un changement de contexte?
Qu'est-ce qu'un appel système
[Définition] Qu'est-ce qu'un cadre?
Ceci est une question webiopi
Qu'est-ce qu'une fonction de rappel?
Profil dans une méthode de la classe
L'image est Namekuji