HN 日本語サマリー

← 一覧へ戻る
プログラミング

プログラミング用語を気にしなくなった理由

I stopped caring about programming terms (teadriven.com)

11 pointsby ghassenfaidi11 コメント

要約

著者は、プログラミングにおける用語の曖昧さや文脈による意味の違いに長年悩んできたが、最終的に用語の厳密さよりもコミュニケーションと理解を優先することを学んだ。数学や医学の例から、定義されていない概念や集合的な合意に基づく用語の重要性を理解し、初心者が用語に intimidat されないよう、気楽に学ぶ姿勢を推奨している。

全文翻訳

3年間ほどCSを学んできて、ずっとフラストレーションを感じていることがあります。それは用語です。 コンポーネントとモジュールの違い、あるいはDAOとリポジトリなど、多くの用語について混乱していたのを覚えています。 ある日、それが実際にはあまり重要ではないことに気づくまで。 プログラマーは日々新しい用語を生み出しており、誰でもそうすることができます。 ある時点で、異なる文脈にいる二人が、ほぼ同じ概念を意味する用語を生み出すのではないかと感じるようになりました。 その後、Stack Overflowの誰かが、皆が見落としている意味の「ニュアンス」を自信満々に説明してくれるのです。 もちろん、いつも「それらは密接に関連していますが、異なります」という答えから始まります(あるいは、さらに自信のあるAIツールも同様です)。 しかし、多くの場合、そうではありません。実際はもっとシンプルです。用語を使っている人に、それが何を意味するのか尋ねればいいのです。 また、異なるプログラミングエコシステムで特定の用語が異なる方法で使用されていることに気づき始めました。 同じ用語が異なる文脈で異なる意味で使われることがあります。それだけのことです。 そして、私は用語と深い関係を持っていました。翻訳が趣味の一つとして育ちました。 用語の起源(語源)を調べるのが好きでした。 なぜラムダ関数と呼ばれるのか、あるいはなぜ情報理論でシャノンがエントロピーと名付けたのかなど、多くのクールなトリビアを知っています。 そして、高階関数と第一級関数の違いを喜んで訂正して説明していました。 しかし、それは本当に重要なのでしょうか? しかし、なぜ私が用語をあまり気にしないことにしたのか、ご存知ですか? 実際には3つの経験があります。 最初の経験 離散数学の教科書、Susannaの有名な傑作を読んでいました。 あるセクションで彼女はこう述べています。「すべての用語は他の用語を使って定義されますが、どこかで始めなければなりません。 数学的論理学では、「文」、「真」、「偽」という用語は、初期の未定義用語です。」 私は「何だって?!どうしてそんなことがあり得るんだ?」と思いました。 数学に未定義用語があり得るのか? はい、あります。 私たちはどこにでも未定義用語と公理を持っています。 「因果律」が何を意味するのか、あるいは「時間」のような概念さえも、私たちは本当には知りませんが、それと共に生きています。 それが存在することははっきりとわかっています。 そして、それを説明したり証明したりすることはまだできませんが、その上に素晴らしいものを築き上げ、素晴らしい科学的発見をすることができます。 二番目の経験 私はUWのプログラミング言語に関するオンラインコースを受講していました。 それは素晴らしいコースで、非常に役立つ多くの用語を習得するのに役立ちました。 しかし、コースのある時点で、いくつかの関数型プログラミングの概念を説明した後、教授のDan Grossmanはこう言いました。「人々はしばしば高階関数と第一級関数を混同するので、私たちも気にしないことにしましょう。」 それは謙虚な経験でした。 プログラミング言語の博士号を持つ人が気にしないなら、なぜ私がそれを戦いに変える必要があるのでしょうか? また、同じDan Grossmanが、人々がしばしば言語を「コンパイル言語」と呼ぶことに不満を表明していたことも注目に値します。 実際にはそれは言語そのものではなく、実装の特性だからです。 なぜなら、これは実際にはプログラミング言語の歪んだ理解につながるからです。 したがって、常に「用語は重要ではない」か、「用語を誤用したら殺してやる!」という単純なものではありません。 三番目の経験 三番目の洞察はあなたを驚かせるかもしれません。 私は実際にうつ病について話している精神科医からそれを聞きました。 彼はこう言いました。私たちはうつ病が何であるかを本当には知りません。 実際、それは私たちが知っている他の病気(糖尿病など)のような病気ではありません。 だから私たちはそれを障害と呼んでいます。つまり、しばしば(常にではないですが)一緒に現れる一連の症状です。 そこで、私たち精神科医のコミュニティは、互いにコミュニケーションできるようにするために、それを「うつ病」と呼ぶことに合意しました。 ある日、私たちが「うつ病」と呼ぶものの新しい症例や新しい症状を発見したら、それをリストに追加し、この新しい「バリアント」に名前(例:高機能うつ病)を付けるかもしれません。 さて、現実世界では何もそんなに単純ではありませんが、ここでの主な考えは、それが何であるかを本当には知らないということです。 しかし、これは人々の幸福を追求することを妨げません。 経験と科学的研究によって、私たちはそれを最善の方法で(薬の有無にかかわらず)治療することができます。 それは私が聞いた中で最も謙虚な言葉でした。 そしてそれは、今ではあまりにも明白に感じられる深い教訓でした:用語は単に理解のために作られたのです。 それが結局のところ重要なのです。 これはプログラミングだけの問題ではありません。 悲しいことに、私たちはしばしば、それぞれが異なる定義を持っていることに気づかずに、概念や問題について激しい戦いを繰り広げます。 用語は、分野に足を踏み入れたばかりの人々にとって非常に威圧的になる可能性があります。 私は、それを気楽に捉えることの重要性を強調すべきだと感じています。