トラック1・📜プログラムとは何か

プログラミング言語の地図とCの位置

読む目安 約10分・ゴール:低級言語・高級言語の違いを理解し、数ある言語の中でのC言語の位置づけを説明できる

アプリでこのトピックを学ぶ(無料・登録不要)

このトピックの要点

プログラミング言語は数百種類あります。全部を知る必要はありませんが、地図のどこに自分がいるかは知っておくと得です。

機械に近い言葉から、人間に近い言葉へ

「高級/低級」は値段や偉さの話ではありません。機械からの距離を表すだけの言葉です。低級=機械に近い、高級=人間に近い、それだけの意味です。

翻訳方式による2つの流派

JavaやC#はその中間の方式をとります。速さと手軽さのどちらを取るか、という設計思想の違いです。

Cの居場所

C言語は1972年、UNIXというOSを書くために生まれました。半世紀以上前の言語ですが、いまも現役です。位置づけを一言でいえば、高級言語の中で、いちばん機械に近い場所です。

ビットCは「持ち運べるアセンブリ」なんて呼ばれることもあるよ。機械に近いのに、人が読める言葉なんだ。

どれが最強か、という問い

「どの言語がいちばん優れているか」という議論は昔からありますが、答えは「用途による」です。データ分析や機械学習ならPython、Webの画面ならJavaScript、業務システムならJavaやC#、機器の制御やOSならC。工具箱の中のドライバーとハンマーに優劣がないのと同じで、向き不向きの違いにすぎません。そして、どの言語で書いてもソースコードは最後には機械語になって動く、という点だけは全部に共通しています。

もうひとつの利点: 文法の親戚が多い

Java、C++、C#、JavaScript、Go、PHP……これらは書き方の作法をCから受け継いでいます。{} でまとまりを作る、文の終わりに ; を打つ、if for while で流れを操る。この形はCが広めたものです。

ですからCを1つ身につけると、他の言語の見た目が急に読めるようになります。地図の縮尺を覚えるようなもので、初めての土地でも道の見当がつくようになるのです。2つ目の言語を学ぶ時間は、1つ目の半分以下で済むとよく言われます。最初の1つに時間をかける価値は、そこにあります。

アプリでこのトピックを学ぶ(無料・登録不要)

確認問題

確認問題 1

実行する前にプログラム全体を機械語へ翻訳しておく方式を ____ 型と呼びます。C言語はこちらで、Pythonのように実行しながら1行ずつ翻訳する方式はインタプリタ型です。

  1. コンパイル
  2. アセンブリ
  3. インタプリタ
  4. スクリプト
答えを見る

正解:A(コンパイル)

先に全部翻訳しておくのがコンパイル型(C・C++・Rust・Go)で、動作が速いのが持ち味です。インタプリタ型は問題文の後半で説明されているとおりPythonなどの方式なので、空欄には入りません。アセンブリは機械語の命令に短い名前を付けた低級言語そのものの名前で、翻訳方式の名前ではありません。スクリプトは「手軽に書いて実行する用途」を指す呼び名で、規格上の分類ではありません。

確認問題 2

プログラミング言語についての説明として、正しいものはどれでしょう。

  1. 「高級言語」とは人間の考え方に近い言語のことで、性能が優れているという意味ではない
  2. 「高級言語」とは、有料で高価な言語のことである
  3. C言語は機械語そのものなので、翻訳せずに実行できる
  4. Pythonはコンパイル型なので、実行前にすべて機械語へ翻訳される
答えを見る

正解:A(「高級言語」とは人間の考え方に近い言語のことで、性能が優れているという意味ではない)

高級/低級は「機械からの距離」を表す言葉で、優劣や値段の話ではありません。低級=機械に近い、高級=人間に近い、それだけの意味です。C言語は高級言語なのでコンパイルが必要で、Pythonは実行しながら1行ずつ翻訳するインタプリタ型です。

「プログラムとは何か」の目次

  1. コンピュータは何をする機械か
  2. プログラムとは「手順書」である
  3. ソースコードから機械語へ——コンパイルの旅
  4. CPUとメモリの模式図
  5. 命令実行サイクル(Fetch-Decode-Execute)
  6. プログラミング言語の地図とCの位置
  7. なぜ最初にC言語なのか
  8. 0と1ですべてを表す——2進数の入口

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版の販売ページは準備中です。

ほかのトラック

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版