2023/02/12 このエントリーをはてなブックマークに追加 はてなブックマーク - 分配束縛、分割代入、分解宣言の違いって何?似たようなやつ三銃士を連れてきたよ

分配束縛、分割代入、分解宣言の違いって何?似たようなやつ三銃士を連れてきたよ






こんにちは、美味しんぼ はあんまりちゃんと読んだことがないyy_yankです。

社内で話題になってたので、気になり始めて調べて自分なりに整理したものを記事にしました。
間違ってたらご指摘ください


分配束縛、分割代入、分解宣言
構文上はほぼ似たことを行っていそうなのに様々な名前が存在している。


こういうやつ


    const [first, second] = [1, 2]

では、何がどうなっててどういう違いがあるか。


気になりますよね?
調べてみました!(いかがでしたか構文)









  • 古くはLISPの文脈では destructuring(分配)があった

  • Clojureはそれを引き継いでいる

  • 一方、CoffeeScriptでは destructuringを分割と訳した

  • ES6でそれを引き継いだ

  • 一方、Kotlinでは destructuringを分解と訳した

  • 一方、C#では deconstructionという単語を使い、分解と訳した


C#以外は、同じdestructuringなので訳語は揃えても良かったんじゃないかな感が個人的にはある(単語は違えど、C#も揃ってる方が誤解が少ない…んだろうか)。


分配、分割、分解。ここらへん揃ってなくても大きな支障はないといえばないし、普通の人にとっては些末な問題かもしれない。
ぶっちゃけ、どっちでも良いなとも思いつつも、機能的には類似しているのに表現のゆらぎがあるような感じがしてモヤッとするかも。



Kotlinでの分解という訳語について


特にKotlinに関しては、個人的に後悔する点かもしれない。
書籍での訳語が定着していく中で自分も意見を言えたといえば言えた※はず。
ただ、現在まで浸透しまっていて、ここから変更するのもややこしい話である。あと、当時はES6の分割代入も出始めた頃で時期が被ってたし、分配束縛も不勉強で知らなかったみたいなところは自分としてはある。


※ Kotlinインアクションとか、たろうさんの本とか、コミュニティに対して呼び方こうしようとか提案したりなど出来たかなぁと。別に自分は偉くもなんともないですが



それぞれの言語ごとの仕様は異なっていたりするし実現方法も異なる。
そのあたりで各言語、destructuring のあとに続く言葉がバラバラになってるのだと思われる。

束縛、代入、宣言。それぞれ違うので安易に混同すると束縛警察、代入警察、宣言警察が来るかもしれないし来ないかもしれない。


翻訳者からすると、原文を見ないでもスッと分かってもらえるようになっていてほしいが、訳語は本当にむずかしい。
ある意味で再発明なので、元の意味を損なわず英語から呼び方を変えるチャレンジであり、腕の見せ所であり、ミスると語弊があるという難しいもの。



分かった、全部英語で呼べば解決だ(?)
というのは半分冗談で半分本気で、訳語と原文の用語、両方覚えて良い感じに解釈しておくのがオススメです。




0 件のコメント:

コメントを投稿

GA