for文でたどるプログラミング言語の発達史|UNIX Cafe

当サイトでは、コンテンツの一部に広告を掲載しています。
for文でたどるプログラミング言語の発達史|UNIX Cafe

UNIX Cafe | 第79回

目次

はじめに|for 文は「発明」ではない

プログラミングを学び始めると、とても早い段階で for 文 に出会います。

「くり返しをするための文」として、当たり前のように使っていますが、
実はこの for 文には、プログラミング言語の長い歴史が詰まっています。

同じ「くり返し」なのに、

  • どうして書き方が違うのか
  • なぜ、この形になったのか

それをたどっていくと、
言語が生まれた理由や性格が、自然と見えてきます。

このページでは、同じ for 文を例にしながら、
言語がどんな順番で発達してきたのかを見ていきます。

アセンブラ | for 文が、まだ存在しなかった世界

アセンブラの世界には、for 文は存在しません

あるのは、

  • 数を比べる
  • 条件によって、別の場所へ飛ぶ

この2つだけです。

判断とジャンプだけで作る、くり返しの原点

cmp i, n ; jge end

「何回くり返す」という発想も、「ここからここまで」という区切りも、
すべて人が考えて、手で書く必要がありました。

「くり返し」も、実際には、「比べる → 飛ぶ → 戻る」

という流れを、人がすべて組み立てていました。

この時代は、人が機械に合わせて考えていた時代です。

図解で見るアセンブラの処理

for文でたどるプログラミング言語の発達史|UNIX Cafe | 図解で見るアセンブラの処理

for 文は、まだ「形」になっていませんでした。

秘密の部屋シリーズ 第1回|UNIXが生まれた小さな研究室の話
👉 https://pc-fan.net/unix-secret-room/

やさしい UNIX & Linux 第2回|UNIXの基本思想
👉 https://pc-fan.net/unix-linux-2/

FORTRAN | 計算したい、という強い目的から

FORTRAN は、科学者や技術者が「計算をしたい」という
はっきりした目的から生まれました。

大量の数値を扱い、同じ計算を何度もくり返すための言語です。

数を順番にたどる、計算のためのループ

do i = 1, n

そのために、

  • 1 から
  • n まで
  • 順番に

という、とてもまっすぐなループが用意されました。

図解で見るFORTRANの処理

for文でたどるプログラミング言語の発達史|UNIX Cafe | 図解で見るFORTRANの処理

FORTRAN の for(do)文は、計算に正直な for 文です。

やさしいプログラミング入門 第5回|くり返しは魔法のループ
👉 https://pc-fan.net/first-python-5/

C言語 | 構造を隠さない、現実的な for 文

C 言語は、
オペレーティングシステムを書くために生まれました。

そのため、
機械の仕組みをあまり隠しません。

初期化・条件・増加が並んだ、構造が見える for文

for (i = 0; i < n; i++)

この for 文には、

  • 初期化
  • 条件
  • 増加

が、すべて1行に並んでいます。

少し長く見えるのは、何が起きているかを、全部見せているからです。

図解で見るC言語の処理

for文でたどるプログラミング言語の発達史|UNIX Cafe | 図解で見るC言語の処理

C の for 文は、人と機械のちょうど真ん中に立っています。

はじめてのC言語 第8回|C言語ってどんな言葉?
👉 https://pc-fan.net/first-c/

はじめてのC言語 第11回|条件とくり返し:レシピの流れを決めるルール
👉 https://pc-fan.net/first-c-4/

はじめてのC言語 第17回|人数が変わっても使える、ミックスジュースの作り方
👉 https://pc-fan.net/first-c-10/

Pascal | 正しく考えるための for 文

Pascal は、プログラミングを「教える」ために整えられた言語です。

意味がそのまま読める、学ぶための for文

この for 文は、ほとんど文章のように読めます。

for i := 1 to n do

仕組みよりも、
意味がそのまま伝わることが大切にされています。

Pascal の for 文は、
学ぶための for 文です。

図解で見るPascalの処理

for文でたどるプログラミング言語の発達史|UNIX Cafe | 図解で見るPascalの処理

i を 1 から n まで動かす

やさしいプログラミングの世界 第12回|同じ景色を、何度でも描けるようになった日
👉 https://pc-fan.net/memory-first-code-12/

やさしいプログラミングの世界 第6回|小さな部品が、ひとつの仕組みになる
👉 https://pc-fan.net/memory-first-code-6/

Python | 何をしたいか、だけを書く

Python は、「人が読みやすいこと」をとても大切にする言語です。

「何回くり返すか」だけを書く for文

Python では、for 文の中から多くの要素が消えました。

  • 初期化
  • 増加
  • 細かい条件

それらは、言語の中に隠されています。

for i in range(n):

Python の for 文は、
人の考えを、できるだけ邪魔しない for 文です。

* range は「0 から n-1 までを、順番に用意する道具」です。

図解で見るPythonの処理

for文でたどるプログラミング言語の発達史|UNIX Cafe | 図解で見るPythonの処理

残ったのは、n 回くり返すという意味だけです。

はじめてのPython 第1回|Pythonってなに?
👉 https://pc-fan.net/first-python/

はじめてのPython 第5回|くり返しは魔法のループ
👉 https://pc-fan.net/first-python-5/

はじめてのPython 第7回|ミニゲームづくりに挑戦
👉 https://pc-fan.net/first-python-7/

Java | 人が増えた時代の for 文

中身を安全に取り出す、チーム向けの for文

Java が活躍するのは、
多くの人が関わる、大きなプログラムの世界です。

Java では、for 文が 2つの役割に分かれました。

  • 数で回す for
  • 中身を順番に取り出す for

1つ目は、C から受け継いだ形

for (int i = 0; i < n; i++)

2つ目は、配列の中身を安全に回すための形

for (Item item : items)

Java の for 文は、
一人で書く時代から、みんなで書く時代に対応した for 文です。

図解で見るJavaの処理

for文でたどるプログラミング言語の発達史|UNIX Cafe | 図解で見るJavaの処理

2つ目の形は、配列の中身を、安全にひとつずつ使うためのものです。

やさしいプログラミングの世界 第10回|仕組みどうしが手をつないだ日
👉 https://pc-fan.net/memory-first-code-10/

まとめ|for 文が語っていること

for 文は、
進化してきたわけではありません。

その時代ごとに、

  • 何に困っていたか
  • 何を大切にしていたか

それが、
形として表れただけなのです。

  • 機械に合わせる時代
  • 計算を重視した時代
  • 現実と戦う時代
  • 教える時代
  • 人にやさしくする時代
  • チームで作る時代

for 文を見るだけで、
その流れが、自然と見えてきます。

最後に

新しい言語が、
古い言語より「偉い」わけではありません。

それぞれの言語は、
その時代の一番の困りごとに、正直に答えた結果なのです。

for 文は、
そのことを、静かに教えてくれています。

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

あわせて読みたい
レベル・用途別おすすめ Linux 本リスト|UNIX Cafe UNIX Cafe | 第65回 Linux の世界には、「はじめて触る人」「コマンドを覚えはじめた人」「サーバーに挑戦したい人」と、さまざまな段階があります。そんなときに、自分...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次