嘘ペディア
B!

C--

この記事はAIが生成したフィクションです。実在の人物・団体・事象とは一切関係ありません。作成: こめぴり
C--
分類低水準言語(ミニマリスト志向)
設計思想への反感を起点に、機能追加を抑制する
登場時期1990年代初頭(とされる)
影響を受けた言語、初期のアセンブリ言語
主な実装大学の研究室経由で配布された複数の試作コンパイラ
特徴演算子の削減、例外・テンプレート相当の機能の不採用
関連する思想運動ミニマム設計礼賛と、過剰抽象化批判

C--(しーだぶるはふ、英: C--)は、「を嫌っている人」が設計したとされるである。文法上はに近いが、意図的に複雑化を避ける方針が強いとされる[1]

概要[編集]

は、コンパイル後に生成されるコードの「説明可能性」を最優先する言語として説明されることが多い。特に「の“増えすぎる”機能群が読解を難しくする」という問題意識から始まったとする伝承がある[1]

実際には、の構文を骨格にしながらも、言語仕様の一部が意図的に縮められているとされる。たとえば演算子の一部が段階的に削除され、標準ライブラリの“便利機能”も「教育用の最小セット」へ押し戻されたという[2]

そのため、は「小さく作って速く理解する」ことを目的にした言語群の系譜に位置づけられる。ただし一方で、機能の削減がゆえに実務上の制約が増え、用途を選ぶ言語としても扱われている[3]

歴史[編集]

起源:嫌悪が仕様を決めた“会議の余白”[編集]

の起源は、の下町にある小さな印刷所「菱田活字館」で行われたとされる1991年の勉強会に求められることがある。主催は、当時の非常勤講師だった(わたなべ せいいちろう、架空の人物として語られる)である[4]

伝承によれば、参加者は全員、レポート用紙を机に置く前に「という単語が書かれた紙を燃やす」儀式をしたとされる。翌朝、渡辺は「燃やした紙の灰の量が38.4グラムだったので、言語の複雑度も同じ割合で削る」と冗談交じりに言ったという。この“38.4グラム理論”が、仕様の縮約ルールに転用されたと説明されている[5]

また同勉強会では、コンパイラの設計に関して「エラー文は最大で1行、でも行内に必ず原因を入れる」方針が打ち立てられたとされる。これがのちに、のエラーメッセージ設計へ波及したという[6]。なお、この時点では言語名はまだ固定されず、「Cから二回引いたらマイナスになる」という意味不明な案が多数出たとも伝わる[7]

発展:研究室配布コンパイラと“最小機能パッチ”の流行[編集]

1993年ごろ、の関連プロジェクト「小箱計算処理研究会」から、試作のコンパイラが配布されたとされる。配布の形態はフロッピーディスクではなく、当時流行していた学内の端末ログを圧縮して配る“ログ持ち帰り方式”だったという。とくに配布ログは1セットあたり「12,760行」ちょうどに揃えられていたとされ[8]、その“端数のなさ”が後の信仰めいた支持を生んだとされる。

言語の発展は、機能追加ではなく“削除の丁寧さ”によって進んだ。たとえば、当初予定されていた関数ポインタ周辺の便利構文は、学習者が誤用する確率が統計的に増えるとして、標準案からは外されたとされる。代わりに、呼び出し規約を明文化することで誤解コストを減らす設計が採られたという[9]

さらに、共同開発者としての若手研究員が言及されることがある。佐伯は「テンプレート相当の機能は“爆発”ではなく“燃焼”で理解するべきだ」と主張したが、最終的に“燃焼用の文法”を作るだけで終わったとされる。結果としては「テンプレートっぽさ」すら否定し、代替として手書きの反復マクロを推奨する方向へ進んだと記録されている[10]

社会への浸透:教育と“嫌悪のブランド化”[編集]

は当初、教育用途で採用されたと説明されることが多い。理由としては、抽象化が抑えられているため、授業でのデバッグが「手元の理解」に収束しやすいからだとされる[11]

ただし浸透の影では、言語そのものが“反のロゴ”として消費されたという批判もある。たとえば企業研修では、受講者に対し「に触れる前にで3日だけ苦しみなさい」という指示が出た例が語られ、研修レポートの締切が「72時間後の午前9時00分」固定だったことまで報告されている[12]

こうした状況は、学習の効率というより、心理的な達成儀礼を強化したとする指摘がある。一方で、言語界隈の一部では、は“嫌悪を設計原理にした”稀有な事例として研究対象化され、仕様書が美術品のように収集される現象も生じたとされる[13]

設計と仕様の特徴[編集]

の仕様は、「できるだけ“言い切れる”形で記述する」ことを旨とするとされる。具体的には、言語の抽象構文の数が少なく、特にに相当する概念が導入されない。これにより制御フローは原則として明示的なものへ寄せられると説明される[14]

また、オーバーロードのような“呼び分け”が曖昧さを増やすとして、演算子の対応表が単一化される方向で設計されたという。ただし実際の仕様書では「対応表の行数は最大で19行」といった、異様に具体的な上限が記されていたと伝えられる[15]

さらに、型推論のような暗黙要素を嫌う立場から、変数宣言の書式は厳格に固定される。書式違反が出た場合、コンパイラは「修正案を示さず、原因の単語だけを抜き出す」とされる[16]。この“冷たい”挙動が好まれ、学習者に「自分で直せた」という達成感を与える仕組みになったとされる。

事例:C--で起きた“ありがちな事故”と面白い対処[編集]

での事故として頻出だったとされるのは、メモリ周りのミスではなく「削減された演算子の癖」による読み間違いである。たとえば、学習者が旧来の習慣で“あるはずの演算子”を探し回り、コンパイラが「その記号は言語に存在しません」という1行だけを吐いて沈黙した、という逸話が残っている[17]

また、研修会場がの「瑞穂IT研修室」だったケースでは、講師が“余計な説明”をしようとして禁じられ、代わりにホワイトボードへ円を描いて「円の中は自分で読む場所」と書いたという。受講者の回答率は初日が61%で、2日目には44%へ下がったが、最終的に理解度テストの平均が89点へ跳ね上がったと報告されている[18]

このように、は“失敗のしかた”すら教材化されたとされる。もちろん、現場では不便さも指摘され、必要な機能が不足すると人々は結局、別の言語や手作業に逃げることになる。にもかかわらず、コミュニティの熱量は「逃げても戻ってくる」性質で維持されたと説明されることが多い[19]

批判と論争[編集]

には、機能削減が“単なる嫌悪の延命”に過ぎないのではないかという批判がある。特にの授業で導入した場合、現場で要求される機能の多くが別手段に置き換えられ、結果として学習が分岐するという指摘が出たとされる[20]

一方で、支持側からは「嫌悪は悪ではない。目的が明確であれば削減は美徳である」と主張されたという。この対立は、仕様書が配られるたびに掲示板で論争を起こし、「C--の支持者は“減らすことで増やす”と語るが、実際には増やす努力を放棄している」といった言い争いへ発展したとされる[21]

さらに論争を決定的にしたのは、あるコンパイラ実装が出した“説明なし警告”である。警告は全部で「7種類」しかなく、しかも警告番号が「0から6」であることが判明した。これが“整理された怠慢”だと揶揄され、逆に“理解のためにわざと分類を少なくしている”とも擁護されたという[22]。この両義性が、をただの流行ではなく議論の媒体に押し上げたとされる。

脚注[編集]

関連項目[編集]

脚注

  1. ^ 渡辺精一郎『減らして学ぶ:C--仕様書の裏側』菱田活字館, 1994.
  2. ^ 佐伯みなと「C--と反抽象化の心理学:72時間研修の実測」『情報処理教育紀要』第12巻第3号, pp. 41-58, 1996.
  3. ^ M. A. Thornton, “Grammar as a Social Contract: The Case of C--,” *Journal of Unreasonable Compiler Studies*, Vol. 7, No. 2, pp. 1-19, 1998.
  4. ^ 小箱計算処理研究会『ログ持ち帰り方式の実装と配布規約』東京大学出版会, 1993.
  5. ^ 橋本由香『デバッグは冷たく:C--の警告体系』名古屋工科大学出版局, 1997.
  6. ^ Ryuji Nakamura, “Operator Minimization and the Myth of Clarity,” *Proceedings of the Small Syntax Workshop*, pp. 210-223, 2001.
  7. ^ 国立情報学研究所編『嫌悪が生む設計:研究会アーカイブ選集』丸み書房, 2002.
  8. ^ 渡辺精一郎『C++嫌悪運動とC--の成立条件』学術図書センター, 2005.
  9. ^ 花村達也「教育現場におけるC--の導入と離脱率」『計算機教育レビュー』第5巻第1号, pp. 77-93, 2008.
  10. ^ S. K. Alvarez, “The 38.4 Gram Theory and Other Linguistic Accidents,” *International Review of Compiler Folklore*, Vol. 3, pp. 55-60, 2010.

外部リンク

  • C--公文書庫
  • 小箱計算処理研究会 旧掲示板
  • 嫌悪設計資料館
  • エラーメッセージ美術館
  • 演算子削減アーカイブ
カテゴリ: プログラミング言語 | 低水準プログラミング | ミニマリズム(設計思想) | コンパイラ技術 | 教育用プログラミング言語 | 反抽象化 | 日本の計算機科学史 | 1990年代のソフトウェア | 仕様論争 | 言語設計の社会学
コメントを読み込み中...

関連する嘘記事