本文へスキップ
totonoe.tech

プログラミング言語を整える

初級

プログラミング言語を整える。

= C・JavaScript・Java・Python を、エソラング図鑑と同じ尺度で並べて比べる

プログラミング言語が初めての方は、先に そもそもプログラミング言語とは・どんな場面で使うか をどうぞ。

4言語の比較

読みにくさ・書きにくさは5段階評価です。数値が大きいほど、読み書きに手間がかかることを示します。

言語 誕生年 作者 生まれた国 読みにくさ 書きにくさ 学べること
C 1972年 Dennis Ritchie アメリカ ●●●○○ ●●●○○ コンピュータ内のメモリを自分で管理するということ
JavaScript 1995年 Brendan Eich アメリカ ●●○○○ ●●○○○ 型の異なる値どうしの演算にも、独自の規則で意味を与えてしまうこと
Python 1991年 Guido van Rossum オランダ ●○○○○ ●○○○○ 読みやすさを文法のルールにしてしまうという考え方
Java 1995年 James Gosling アメリカ ●●○○○ ●●○○○ あらかじめ型を決めておくと、後から誤りに気づきやすいということ

そもそもプログラミング言語とは

コンピューターへの指示を、人が読み書きできる形にしたもの。

プログラミング言語は、コンピューターにしてほしいことを書くための決まりです。コンピューターが直接わかるのは機械語だけなので、人が書いたコードを、コンパイラで機械語にまとめて変換するか、インタプリタで実行しながら解釈して動かします。

言語ごとに得意な分野と書き方が違います。変数の型を宣言する言語もあれば、宣言しなくてよい言語もあります。どの言語が一番よいかではなく、作りたいものに合う言語を選ぶのが基本です。

どこで・どんな場面で使うか

  • 企業の業務システム

    Java・C#・COBOL などが使われます。販売・会計・金融の基幹システムなどが代表例です。

  • 組み込み・機器の制御

    家電や車載機器の中のソフトは、C や C++ で書かれることが多いです。

  • Web サイトの動き

    JavaScript は、ブラウザの中で動く言語として、Web ページの動きを作ります。

  • データ分析・自動化

    Python は、データ分析や業務の自動化など幅広い用途で使われています。

  • 事務作業の自動化・求人での見え方

    Excel の自動化には VBA が使われます。求人では、言語名が募集条件として書かれます。

なぜ覚えておくと得か

  • 1つ覚えると、ほかの言語が早く身につく。変数・条件分岐・繰り返しといった基本の考え方は、多くの言語で共通です。
  • 仕事の分野と言語がつながる。どの分野でどの言語が使われるかを知ると、学ぶ言語や就職先を選びやすくなります。
  • 道具として選べるようになる。目的に合う言語を選べると、無理な作り方を避けられます。

上の比較表と、下の Hello World の並びを見比べて、同じお題でも言語ごとにどう書き方が違うか確かめてみてください。

日本の現場や研修で使われる6言語

業務システム・組み込み・金融・事務の自動化などで使われ、新人研修でも取り上げられることの多い6言語です。どのページにも同じ5つのお題・出力当てクイズ・よくあるエラーをまとめています。

言語 誕生 作った人・組織 型の付け方 動かし方
C言語 1972年 デニス・リッチー(ベル研究所) 静的型付け コンパイルして機械語の実行ファイルを作る
C++ 1983年(1979年に「C with Classes」として開発が始まりました) ビャーネ・ストロヴストルップ(ベル研究所) 静的型付け コンパイルして機械語の実行ファイルを作る
Java 1995年 Sun Microsystems(James Gosling ら)。現在は Oracle が開発を主導しています 静的型付け javac でバイトコード(.class)にコンパイルし、JVM(Java仮想マシン)の上で実行する
C# 2000年(発表) Microsoft(設計の中心は Anders Hejlsberg) 静的型付け .NET の中間言語(IL)にコンパイルし、.NET のランタイムが実行時に機械語へ変換して動かす
COBOL 1959年 CODASYL(米国の政府・企業が参加した委員会)。グレース・ホッパーの FLOW-MATIC の影響を受けています 静的型付け(PIC 句で桁数と種類を宣言する) コンパイルして実行ファイルを作る(GnuCOBOL は C に変換してからコンパイルする)
VBA 1993年(Excel 5.0 に搭載) Microsoft 型を宣言しなくても動きます(Variant 型になる)。Option Explicit を書くと変数の宣言を強制できます Excel・Access などの Office アプリの中で動きます(VBE で書いてその場で実行する)

Hello World を6言語で並べる

C言語

#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}

C++

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

Java

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

C#

Console.WriteLine("Hello, World!");

COBOL

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO.
       PROCEDURE DIVISION.
           DISPLAY "Hello, World!".
           STOP RUN.

VBA

Sub Main()
    Debug.Print "Hello, World!"
End Sub

言語ごとの解説

C

= 自分でメモリを管理する言語

読みにくさ ●●●○○
書きにくさ ●●●○○

1972年生まれで、INTERCAL と同じ年に作られました。

コンピュータの中には、値を保存しておくための大きな領域(メモリ)があります。多くの言語ではその管理を自動で行いますが、Cではすべて自分で管理します。どこに置くか、いつ解放するかを自分で指定します。

安全装置がないぶん、実行は高速です。そのため、OSの基盤部分や家電の内部、ゲーム機の内部など、いまも幅広く使われています。

この節に並べたのは、広く使われている言語だからです。危険が少ないという意味ではありません。

コード例 Hello, World!
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}

ひとこと

ふつうの言語として並べていますが、記述を誤るとプログラムだけでなく実行環境自体が停止することがあります。安全装置が見当たらないのではなく、安全装置という考え方自体が存在しない設計です。それでも50年以上使われ続けていて、エソラング図鑑にある他の多くの言語は、Cが作った仕組みの上で動作しています。

もっとくわしく(外部サイト): https://en.cppreference.com/w/c

JavaScript

= 型の変換をゆるやかに行う言語

読みにくさ ●●○○○
書きにくさ ●●○○○

1995年、ブラウザに搭載するためにわずか10日間で作られました。当時の急ごしらえの設計は、現在も一部残っています。

たとえば、異なる型どうしを足し算してもエラーになりません。独自の規則に従って自動的に型を変換し、結果を返します。

この仕組みにより記述の自由度は高くなりますが、意図しない誤りも同じように変換されて通ってしまうため、あとから気づきにくいという面もあります。

この型変換の規則を極端に利用したのがJSFuckです。エソラング図鑑には、JavaScript から派生した言語も含まれています。

コード例 Hello, World!
console.log("Hello, World!");

// 参考: 型変換の例
[] + {}    // "[object Object]"
[] + []    // ""(空文字列)

ひとこと

10日間で作られたと言われている言語です。異なる型どうしを演算してもエラーにならず、独自の規則に従って値を返します。この柔軟さが誤りの原因になる一方で、JSFuck が成立する理由にもなっています。このページ自体も JavaScript によって動いています。

もっとくわしく(外部サイト): https://developer.mozilla.org/ja/docs/Web/JavaScript

Python

= インデントを文法規則にした言語

読みにくさ ●○○○○
書きにくさ ●○○○○

「読みやすさが重要だ」という考え方を、文法のルールとして定めた言語です。

多くの言語では、コードのまとまりを波括弧などで囲みます。この言語では波括弧を使わず、行頭のインデント(字下げ)の深さでまとまりを判断します。そのため、書く人が見た目の書式を崩すことができません。

Brainfuck が「命令をできるだけ少なくする」ことを目指したのとは対照的です。Python は「人が読めること」を最優先にしています。

エソラング図鑑の中では、Brainfuck と対照的な設計思想を持つ言語といえます。

コード例 Hello, World!
print("Hello, World!")
# 以上。1行です。

実際に動かしてみたいときは Python を整える(Playground) へどうぞ。ブラウザ内で実際に Python コードを実行できます。

ひとこと

扱いやすく、初学者にも広く使われている言語です。一方で、行頭の空白を1文字ずらすだけで動作しなくなるという、見た目以上に厳密な一面があります。名前の由来はヘビではなく、イギリスのコメディ番組『空飛ぶモンティ・パイソン』です。

もっとくわしく(外部サイト): https://docs.python.org/ja/3/

Java

= 事前に型を宣言する言語

読みにくさ ●●○○○
書きにくさ ●●○○○

JavaScript と同じ1995年に発表されましたが、名前が似ているだけで、技術的な関連はありません。当時の販売上の事情によるものです。

「一度書けばどこでも動く」ことを目標に作られました。異なる種類のコンピュータでも、同じプログラムがそのまま動作します。

そのぶん、記述前にあらかじめ多くを決めておく必要があります。この値は整数、これは文字列、というように型を宣言します。記述量は増えますが、誤りを実行前に発見しやすくなります。

この4言語の中では、記述量が多く、型の管理が最も厳格な言語です。

コード例 Hello, World!
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
// Python では1行で済んだ内容

ひとこと

「Hello World!」を1行出力するためだけに、比較的多くの記述が必要です。準備の記述が長いのが特徴ですが、そのぶん書いた本人以外が10年後に読んでも意味が把握しやすいという利点があります。大規模なシステムが長期間安定して稼働している背景には、この厳密さがあります。

もっとくわしく(外部サイト): https://docs.oracle.com/javase/jp/

あえて読み書きしにくく設計された言語(難解プログラミング言語)を集めた図鑑は エソラングを整える にまとめています。この4言語と同じものさし(読みにくさ・書きにくさ)で比較できます。

出典

各言語の解説・出典URLは、言語ごとの公式ドキュメント(個別セクションに明記)によります。誕生年・作者・生まれた国は各言語の公式資料にもとづきます。

🔒 このページは静的な一覧で、入力欄はありません。閲覧数の計測(Google アナリティクス)についてはプライバシーポリシーをご覧ください。

このツールについて

日常的に使われているプログラミング言語のうち、C・JavaScript・Java・Pythonの4つを取り上げます。エソラング図鑑(/esolang/)で使っている「読みにくさ」「書きにくさ」の5段階のものさしをそのまま使い、誕生年・作者・生まれた国とあわせて比較します。

C・JavaScript・Java・Python を、誕生年・作者・読みにくさ/書きにくさの5段階・Hello World で1表に。エソラング図鑑と同じ尺度なので、見慣れた言語の位置づけが分かります。

主な機能

  • 4言語の比較表(誕生年・作者・生まれた国・読みにくさ・書きにくさ・学べること)
  • 日本の現場や研修で使われる6言語(C・C++・Java・C#・COBOL・VBA)の比較表と Hello World の並べ書き
  • 各言語の Hello World のコード例と特徴
  • Python は既存の実行環境(/python-playground/)へ導線
  • エソラング図鑑(/esolang/)と同じ尺度で相互リンク
  • 静的ページ・送信ゼロ

よくある質問

Q. このページは何を比べていますか?

A. C・JavaScript・Java・Python の4言語を、誕生年・作者・生まれた国と、エソラング図鑑と同じ「読みにくさ」「書きにくさ」の5段階の尺度、Hello World のコード例で並べています。優劣の評価はしていません。

Q. なぜエソラング図鑑と分かれているのですか?

A. 図鑑は意図的に読み書きしにくく作られた言語を集めたもので、日常的に使う4言語は性質が違うためです。同じ尺度で見比べられるように、別ページに分けて相互にリンクしています。

Q. Python はここで実行できますか?

A. このページは比較のみです。実行は既存の「Python を整える」(/python-playground/)で行えます。

Q. 4言語の誕生年を教えてください。

A. C は1972年(Dennis Ritchie)、Python は1991年(Guido van Rossum)、JavaScript は1995年(Brendan Eich)、Java は1995年(James Gosling)です。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。

運営サイト

私たちが運営するサイト