
UNIX Cafe | 第79回
はじめに|for 文は「発明」ではない
プログラミングを学び始めると、とても早い段階で for 文 に出会います。
「くり返しをするための文」として、当たり前のように使っていますが、
実はこの for 文には、プログラミング言語の長い歴史が詰まっています。
同じ「くり返し」なのに、
- どうして書き方が違うのか
- なぜ、この形になったのか
それをたどっていくと、
言語が生まれた理由や性格が、自然と見えてきます。
このページでは、同じ for 文を例にしながら、
言語がどんな順番で発達してきたのかを見ていきます。
アセンブラ | for 文が、まだ存在しなかった世界
アセンブラの世界には、for 文は存在しません。
あるのは、
- 数を比べる
- 条件によって、別の場所へ飛ぶ
この2つだけです。
判断とジャンプだけで作る、くり返しの原点
cmp i, n ; jge end「何回くり返す」という発想も、「ここからここまで」という区切りも、
すべて人が考えて、手で書く必要がありました。
「くり返し」も、実際には、「比べる → 飛ぶ → 戻る」
という流れを、人がすべて組み立てていました。
この時代は、人が機械に合わせて考えていた時代です。
図解で見るアセンブラの処理

秘密の部屋シリーズ 第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の処理

やさしいプログラミング入門 第5回|くり返しは魔法のループ
👉 https://pc-fan.net/first-python-5/
C言語 | 構造を隠さない、現実的な for 文
C 言語は、
オペレーティングシステムを書くために生まれました。
そのため、
機械の仕組みをあまり隠しません。
初期化・条件・増加が並んだ、構造が見える for文
for (i = 0; i < n; i++)この for 文には、
- 初期化
- 条件
- 増加
が、すべて1行に並んでいます。
少し長く見えるのは、何が起きているかを、全部見せているからです。
図解で見るC言語の処理

はじめての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の処理

やさしいプログラミングの世界 第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の処理

はじめての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の処理

やさしいプログラミングの世界 第10回|仕組みどうしが手をつないだ日
👉 https://pc-fan.net/memory-first-code-10/
まとめ|for 文が語っていること
for 文は、
進化してきたわけではありません。
その時代ごとに、
- 何に困っていたか
- 何を大切にしていたか
それが、
形として表れただけなのです。
- 機械に合わせる時代
- 計算を重視した時代
- 現実と戦う時代
- 教える時代
- 人にやさしくする時代
- チームで作る時代
for 文を見るだけで、
その流れが、自然と見えてきます。
最後に
新しい言語が、
古い言語より「偉い」わけではありません。
それぞれの言語は、
その時代の一番の困りごとに、正直に答えた結果なのです。
for 文は、
そのことを、静かに教えてくれています。
さらに学びたいあなたへ
📘 用途ごとに選ぶ Linux のおすすめ本

