<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <dfn><ruby>型<rt>かた</rt><rt>type</rt></ruby></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">値</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">式</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">変数</anchor>に付けられたやつです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ<ruby xmlns="http://www.w3.org/1999/xhtml">型<rt>がた</rt></ruby><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">data type</rt></rubyb></dfn>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型</anchor>です。</p><section><h1>型システム</h1><figure class="list middle"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型システム</anchor></figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML Schemaのデータ型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGMLのデータ型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GPD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型 (Web IDL)</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 11404</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO 19103</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SensorML</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript値</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Infra値</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XPath 1.0データ型</anchor></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 関連: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データモデル</anchor></p></section><section><h1>いろいろな型</h1><figure class="short list"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ型</anchor>クラス</figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">sentinel value</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">未定義</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">null</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">void</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ビット型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真偽値型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">数値型</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整数型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実数型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">浮動小数点型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十進数型</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スカラー</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">union</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">列挙型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">組</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">項組</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">配列</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集合</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集成</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">辞書</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">写像</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構造体</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">界面</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハンドル</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クラス</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">primitive型</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">複合型</anchor></li></ul></figure></section><section><h1>型論争</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
{<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">動的型付け言語</anchor> | 弱い型 | 型なし | データの型を重視} と {<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">静的型付け言語</anchor> | 強い型 | 「入れ物」の型を重視 | <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型推論</anchor>マンセー}
の派閥は数十年にわたって形を変えながら、論点を変えながら、
参加者を変えながら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">舞台<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">プラットフォーム</title></anchor>を変えながら、よくわからない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宗教論争</anchor>を続けています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型</anchor>付き言語 vs <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型</anchor>なし (or 弱い型?) とかいう糞みたいな論争まだやってるのかwwwww
好きな方を使えよwwwwwwww
<time>2023-09-08T14:28:06.700Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型システム</anchor>利用で向上した分の生産性を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型</anchor>論争で浪費してるだろwww</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <cite xml:lang="ja">Xユーザーのかおるこたゃさん: 「なんかたくさん反応きてて怖いんですけど、私はRustの研究をしているので当然最近の言語はこの辺の問題が解決されていることを知っており、しかし初心者が最初に触れるであろう静的型付き言語は往々としてこういうつらさを抱えてるという話です。あと動的型付き言語へのヘイトスピーチやめてください」 / X</cite>, <time>午後3:38 · 2024年7月11日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-07-11T06:38:29.000Z</attrvalue></time>, <time>2024-07-11T12:54:12.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://x.com/cordx56/status/1811288936398090557">https://x.com/cordx56/status/1811288936398090557</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite xml:lang="ja">Xユーザーのかおるこたゃさん: 「胡乱なポストが拡散されて、強い言葉のリプ・引用が多く寄せられているのでとても気分が悪いです。」 / X</cite>, <time>午後3:59 · 2024年7月11日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-07-11T06:59:17.000Z</attrvalue></time>, <time>2024-07-11T12:54:12.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://x.com/cordx56/status/1811294171514208716">https://x.com/cordx56/status/1811294171514208716</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
<cite xml:lang="ja">Xユーザーのかおるこたゃさん: 「一部の静的型付き言語の人、動的型付き言語をバカにするのは(本来おかしいが)許せるとして、動的型付き言語を使ってる人をバカにするのはライン越えだからな。人として最低限ができてないやつと議論する気はないよ。」 / X</cite>, <time>午後3:48 · 2024年7月11日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-07-11T06:48:37.000Z</attrvalue></time>, <time>2024-07-11T12:54:12.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://x.com/cordx56/status/1811291489269592357">https://x.com/cordx56/status/1811291489269592357</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
<cite xml:lang="ja">Xユーザーのかおるこたゃさん: 「エディタ戦争とかよくネタにされてるけど、静的型付け/動的型付けもまぁよく燃えますなぁ。」 / X</cite>, <time>午後9:03 · 2024年7月11日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-07-11T12:03:07.000Z</attrvalue></time>, <time>2024-07-11T12:54:12.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://x.com/cordx56/status/1811370633055601127">https://x.com/cordx56/status/1811370633055601127</anchor-external></li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
この界隈昔から強い言葉で人格批判レベルまで含めてやり合ってる印象あるから怖いよなあ。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 
考えてみれば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ボヘミアンと貴族の階級闘争</anchor>もこれの亜種だな。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 
<cite xml:lang="en">Bringing Peace to the Galaxy - Externals</cite>, <time>2024-07-24T05:40:17.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://externals.io/message/106453">https://externals.io/message/106453</anchor-external></p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> (削除済みツイート)<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <cite xml:lang="ja">XユーザーのYukihiro Matzさん: 「@h_sakurai わざわざ私を殺さなくても、JavaScriptから(MSが)TypeScriptを作ったように、誰かがTypeRubyを作ればいいんですよ。TypeScriptが成功したようにTypeRubyが本家Rubyより流行れば、私が足を引っ張ってるかどうかは関係ないわけで。」 / X</cite>, <time>午後4:34 · 2024年10月1日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-10-01T07:34:56.000Z</attrvalue></time>, <time>2024-10-02T04:00:24.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://x.com/yukihiro_matz/status/1841018946776154431">https://x.com/yukihiro_matz/status/1841018946776154431</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <cite xml:lang="ja">XユーザーのYukihiro Matzさん: 「なんで自分好みの言語を得るために、私の言語を変えようとするのだろうか。他人の物を取り上げなくても、好みに合う既存言語を使うか、いっそ自分で作ればいいじゃんかよ。」 / X</cite>, <time>午後4:42 · 2024年10月1日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-10-01T07:42:45.000Z</attrvalue></time>, <time>2024-10-02T04:00:24.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://x.com/yukihiro_matz/status/1841020913804013597">https://x.com/yukihiro_matz/status/1841020913804013597</anchor-external></li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 
「型を明示すれば速くなります」って <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Visual Basic</anchor> が30年前に実現していた世界で草、
未だにそんなメリット語って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型</anchor>の普及を目指す人がいるのかwwwww</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> 
最近は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AI</anchor> という新要素が加わってまた一段と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型論争</anchor>が賑わっているようだけれども、
言ってることは今までと何も変わってないのが笑えるよねえ。
ゴミみたいな論争が変わらずずっと続くってことは、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AI</anchor> はトッピングで本質的にはやっぱりなんも変わらんのだろうねーw</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> 
近頃見られる新類型は、敵方を 「AI でわけもわからずコードを書かせてる馬鹿」
扱いして藁人形するパターンらしい。</p></section><section><h1>型パズル</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 型パズルと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">次元解析</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">単位</anchor>が合うように<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">掛け算</anchor>する) って、どっちも</p><ul><li>対象の中身を深く理解してなくても</li><li>許される組み合わせ/形の制約だけを見て</li><li>かなりのところまで正解っぽいものを復元できる</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 物理でいうと、</p><ul><li>欲しい量の次元を決める</li><li>手元の定数や変数の次元を見る</li><li>掛けたり割ったりして辻褄を合わせる</li><li>係数や細部は分からなくても、式の骨格はかなり当たる</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 型でも同じで、</p><ul><li>欲しい型がある</li><li>手元の関数やデータの型がある</li><li>どう合成すればその型になるか探す</li><li>実装の意味を深く考えなくても、項の骨格がかなり決まる</li></ul><p>ということが起きる。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> しかも「わかった気になりやすい」ところまで似てる。
次元解析は、式の形が合った瞬間にかなり「理解した感」が出る。
でも実際には、</p><ul><li>無次元定数が違うかもしれない</li><li>対数や指数が潜んでるかもしれない</li><li>そもそも支配方程式や近似条件を分かってないかもしれない</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> つまり、骨格は合ってても物理はまだ分かってないことが普通にある。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> 型パズルもそれに近くて、</p><ul><li>この API たちはこう繋がる</li><li>この状態遷移は encode できる</li><li>この invariant は型で表せる</li><li>この関数はこのシグネチャになる</li></ul><p>みたいなのが決まると、すごく「本質を掴んだ」感じが出る。
でも実際には、</p><ul><li>その関数が何を計算すべきか</li><li>業務ルールとして正しいか</li><li>期待する副作用をしてるか</li><li>パフォーマンスが許容範囲か</li><li>UX 的に妥当か</li></ul><p>みたいな部分はまだ全然未解決だったりする。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 
つまり両方とも、構造制約が強いので、理解の手がかりとしてはめちゃくちゃ強いのだけど、
そのせいで逆に 「制約を満たせた = 本質を理解した」と錯覚しやすい。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> 
もちろん次元解析は超強力だし、間違いを弾くし、式の形を導くのにも役立つ。
でも物理そのものではない。
同じように、</p><ul><li>型はめちゃくちゃ強力</li><li>間違いを弾く</li><li>実装や設計の骨格を与える</li><li>合成可能性を見せてくれる</li></ul><p>でも、プログラムそのものの意味全部ではない。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> だから型パズルにハマると、</p><blockquote><p>「ちゃんと次元が合った式を作れた。よって現象の本質を掴んだ」</p></blockquote><p>みたいなテンションになりがちで、
そこから</p><blockquote><p>「ちゃんと型が合った。よって設計の本質を掴んだ」</p></blockquote><p>に滑っていく。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> 要するに、</p><ul><li>次元解析: 現象の「ありうる形」を強く制約する</li><li>型: プログラムの「ありうる接続と構造」を強く制約する</li></ul><p>で、どちらも</p><ul><li>正解への探索空間をめちゃくちゃ削る</li><li>骨格を与える</li><li>明らかにおかしいものを弾く</li><li>うまくいくと深い理解っぽく見える</li></ul><p>のだけど</p><ul><li>係数・境界条件・支配方程式に相当するもの</li><li>実際の振る舞い・意味・仕様の細部</li></ul><p>までは勝手には出てこない。</p></section><section><h1>メモ</h1></section></body></html>