新しい言語を学ぶのは、もうやめなさい。C言語とパスカルが「隣国」に見える、“パラダイム”という名の最強の思考メガネ

AI・テクノロジー

「Python、Java、Ruby、Go……次から次へと新しい言語が出てきて、もう追いかけきれない!」
プログラミングを学ぶ多くの人が、こうした「言語の洪水」に疲れ果てています。新しい言語が出るたびに分厚い入門書を買い、文法を覚え直す。そんな不毛なループに陥っていませんか?

もしそうなら、今すぐその「文法という表面」を追いかけるのをやめてください。
実は、プログラミング言語の進化の裏側には、世界の見方を根本から変えてしまうような巨大な「パラダイムシフト」が隠されています。この「パラダイム」という名の最強の思考メガネさえ手に入れれば、初めて見る言語であっても「ああ、これはあの国(思想)の言葉だな」と瞬時に理解できるようになるのです。

今回は、人類がコンピュータという「無機質な回路の塊」を相手に、いかにして知の革命を起こしてきたのか。0と1の地獄から、人間が言葉を取り戻すまでのドラマチックな歴史の第一歩を紐解きます。

今回の配信内容🎧

  • プログラミングにおける「パラダイム」とは何か。その定義を科学史の文脈から解説。
  • なぜC言語を極めた人は、学んだはずのないパスカルを「何の苦もなく」読めるのか。
  • 人類が最初に直面した「0と1の地獄」。回路を直接操作する過酷な実態。
  • 命令とデータがごちゃ混ぜ?「プログラム内蔵方式」が生んだ奇妙なカオス。

パラダイム:世界の見え方が変わる「知のOS」

「パラダイムシフトと言えばね、現代人におけるパラダイムシフトと言えば、やっぱりどう考えても構造化プログラミングだと思うんですよ。」

科学史家のトマス・クーンが提唱したこの概念は、天動説から地動説への転換のように、その時代に当たり前とされていた考え方が根本から覆されることを指します。プログラミングの世界においても、これは単なる流行り廃りではなく、コンピュータという存在をどう定義するかという「世界の見方」そのものです。

新しい言語を学ぶたびに挫折するのは、あなたの努力不足ではありません。単に、前の言語の「メガネ」をかけたまま、新しい世界を見ようとしているだけなのです。

たとえば、堀本さんは大学時代にC言語を徹底的に叩き込まれました。その後、未学習だったパスカル(Pascal)という言語のコードに出会ったとき、驚くべき体験をしました。学んだことがないはずなのに「何の蜘蛛(くも)なく読める」のです。

「時代も近いしパラダイムが一緒なので。……何の蜘蛛なく読める。」

これは、C言語とパスカルが共通のパラダイムを持っていたからです。例えるなら、中世ヨーロッパの隣国同士のようなものです。キリスト教という共通の価値観(パラダイム)を共有していれば、隣の国へ行っても、作法や言葉のニュアンスが自然と理解できます。しかし、パラダイムが異なると、まるで産業革命後の現代人が海賊の時代にタイムスリップしたかのように、全く通用しなくなってしまうのです。

「0と1」の暗闇で回路を叩く。プログラマが機械の奴隷だった原始時代

このパラダイムシフトがいかに劇的な救済だったかを知るためには、まず「シフトが起こる前」の原始的な世界、すなわち「機械語(マシン語)」の地獄を覗いてみる必要があります。

現代の私たちがキーボードを叩いて美しい英語のようなコードを書いているのとは裏腹に、コンピュータの正体は、ただの半導体回路の集まりです。
「コンピュータの中では何が0と1に対応してるんでしょうか……回路の電気が通ってると1だっけ。」

その通りです。そこには「意味」も「論理」もありません。あるのは「電気が通っているか(1)」「いないか(0)」という物理的な事実だけです。初期のプログラマは、この0と1の羅列を直接書き込むことで、回路のスイッチを一本一本カチャカチャと切り替えるような、途方もない作業を行っていました。

たとえば「足し算をしろ」という命令も、「このデータを使え」という指定も、すべては0と1の組み合わせ。人間がコンピュータの都合に100%合わせ、回路の配線図を頭に叩き込んで作業していた時代。当時のプログラマは、知的な創造者というよりは、巨大な回路の一部として機能する「機械の奴隷」だったと言えるでしょう。正直、今の私たちが書いている美しいコードも、100年後のエンジニアから見れば「スイッチを切り替えているのと変わらない」と笑われる日が来るのかもしれません。

命令とデータが同居するカオス。プログラム内蔵方式の「奇妙な構造」

さらに当時のプログラマを苦しめたのが、「プログラム内蔵方式」というコンピュータの構造そのものが抱える不条理でした。
現代のコンピュータの多くが採用しているこの仕組みですが、最大の特徴は「メモリ」という一つの箱の中に、指示書である「命令」と、その材料である「データ」がごちゃ混ぜに格納されている点にあります。

「これデータと命令っていう全然異なるものが同じ場所に書いてあんの、変なの。」

初期のプログラミングにおいて、これはまさに「地獄の番地管理」を意味しました。
たとえば、ゲームを作ろうとしたとき、メモリの番地(住所)はこんな風になります。

  • 3番地:プレイヤーの残りHP(データ)
  • 5番地:敵の攻撃力(データ)
  • 101番地:足し算をせよ(命令)
  • 102番地:3番地と5番地を足せ(命令)

プログラマは、どの住所に何を置いたかをすべて完璧に記憶するか、巨大な住所表をにらみつけながら管理しなければなりませんでした。もし、101番地の命令を書き間違えて3番地の「データ」を読み込もうとすれば、コンピュータはプレイヤーのHPを「命令」として解釈しようとし、システムは一瞬で暴走します。

そもそも、初期のコンピュータは特定の計算のためだけに「配線自体」を物理的に組み替えていました。それに比べれば「メモリに指示書を置く」のは画期的でしたが、代償として、人間には理解不能な「番地の海」を泳ぐ苦行が始まったのです。この「住所不定」のカオスから脱出しようとする渇望こそが、人類に第一のパラダイムシフトを決断させることになります。

知の革命への序章:いかにして人間は言葉を取り戻すのか

この0と1の地獄から脱却するために、人類は「抽象化」という魔法を使いました。
回路のスイッチを直接操作するのではなく、人間が理解できる「名前」や「構造」をコンピュータに押し付ける。これこそが、プログラミング言語における宗教改革とも言えるパラダイムシフトの始まりです。

「パラダイムが異なるといきなり読めなくなる。」

この事実は、逆に言えば、パラダイムさえ掴んでしまえば、あらゆる言語の壁を越えられることを示唆しています。現代のプログラマが、JavaからPython、Goへとスムーズに移行できるのは、私たちがすでに「構造化プログラミング」や「オブジェクト指向」という共通のパラダイムメガネを標準装備しているからに他なりません。


まとめ

この記事をまとめると…

  • プログラミング・パラダイムは、単なる文法ではなく「世界をどう見るか」という設計思想であり、科学史のパラダイムシフトと同じ重みを持つ。
  • C言語とパスカルのように、設計思想(パラダイム)を共有していれば、異なる言語であってもその意図を容易に読み解くことができる。
  • 原始的な「機械語」の時代、プログラマは0と1を操り、回路のスイッチを直接切り替える「機械の一部」のような過酷な労働を強いられていた。
  • 「プログラム内蔵方式」による命令とデータの混在は、複雑な番地管理の地獄を生み、これが次世代の言語進化を促す原動力となった。

プログラミング言語の歴史は、いかにして人間が「機械の鎖」を断ち切り、自分たちの言葉でコンピュータを操る権利を取り戻してきたかという、自由への闘争の記録です。
あなたが今日書いているその1行のコードは、かつて0と1の海で溺れていた先人たちが、命を削って手に入れた「パラダイム」という名の救助船の上に成り立っているのです。

配信元情報

番組名:ゆるコンピュータ科学ラジオ
タイトル:プログラミング言語にも歴史の転換点がある【プログラミングパラダイム・シフト1】#64
配信日:2023-03-19

タイトルとURLをコピーしました