本文へスキップ
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 アメリカ ●●○○○ ●●○○○ あらかじめ型を決めておくと、後から誤りに気づきやすいということ

言語ごとの解説

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は、言語ごとの公式ドキュメント(個別セクションに明記)によります。誕生年・作者・生まれた国は各言語の公式資料にもとづきます。

🔒 このページは静的な一覧で、閲覧時にデータが外部へ送信されることはありません(送信ゼロ)。

このツールについて

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

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

主な機能

  • 4言語の比較表(誕生年・作者・生まれた国・読みにくさ・書きにくさ・学べること)
  • 各言語の 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の「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

KOINOBORI ECOSYSTEM

私たちが運営するサイト