戻る

プログラミング言語の歴史

コンピュータの歴史は、そのままプログラミング言語の歴史でもある。

まず最初に登場するのはプロセッサを直接動作させるための機械語(マシン語)である。
これは単なる数字の羅列であり、視認性は極めて低かった。
また、当然ながらプロセッサごとに異なる仕様となるため、移植性も低い。
逆に利点は実行速度とプロセッサとの親和性である。
当然直接動作させるため速度はプログラミング言語の中では最速である。

しかし、コンピュータが発達するにつれ、機械語ではどうしても技術者の育成や、汎用性の低さが問題となる。
そこで登場するのがプログラミング言語である。

ここでは主な言語をおなじみ「Hello, world!」のコードと共に簡単に紹介するが、コードが正しいという保証はない。
(HTMLは例外として載せているが、基本的にマークアップ言語はプログラミング言語ではない)

なお、言語のタイプ分けはあくまでも参考レベルであり、実際は様々な要素が絡んでいることが多い。

[1970年代][1980年代][1990年代][2000年代][2010年代]


年代言語名タイプ開発元コード特徴など
1957FORTRAN
(FORmula TRANslation)
フォートラン
手続型
命令型
IBM社
John Backus...
program helloworld
 print *, "Hello, world!"
end program helloworld
世界初の高水準言語。
特に科学技術計算に優れ、21世紀の現在でも改良を重ねて使用されている。
1958ALGOL
(ALGOrithmic Language)
アルゴル
手続型
命令型
構造化
Friedrich Bauer、Peter Naur、Heinz Rutishauser
Klaus Samelson、John Backus...
BEGIN
  FILE F(KIND=REMOTE);
  WRITE(F, <"HELLO, WORLD!">);
END.
最初の構造化言語。
後に開発されるプログラミング言語のベースとなる。
1959RPG
(Report Program Generator)
クエリ処理IBM社
**free
 ctl-opt dftname(user001);
 ctl-opt dfractgrp(*no) main(main);
 dcl-proc main;
  dsply 'Hello, world!';
 end-proc;
IBMのシステム上で動作。
主に会計用途で使用されてきた。
1960COBOL
(COmmon Business Oriented Language)
コボル
手続型
命令型
CODASYL
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. HELLO.
000300 PROCEDURE DIVISION.
000400     DISPLAY 'HELLO, WORLD!'.
000500     STOP RUN.
米国防総省主導で開発された事務処理用言語。
特に銀行システムで多く用いられ、現在でも使用されているケースは多い。
1960LISP
(LISt Processor)
リスプ
手続型
関数型
MIT(Massachusetts Institute of Technology)
John McCarthy...
(format t "Hello, world!")
世界初の関数型言語。
マクロとしての親和性があり、Emacsのマクロ言語としても採用された。
1963CPL
(Combined Programming Language)
手続型
命令型
Christopher Strachey
Write("Hello, world!")
BCPLの元になった言語。
つまり、C言語の大元になる。
1964APL
(A Programming Language)
配列処理Kenneth Iverson
'Hello, world!'
「APL記号」と呼ばれる特殊な記号を用いる。
これにより簡潔に計算式を記述することが可能であるが、入力も特殊となるためあまり普及しなかった。
1964BASIC
(Beginners' All-purpose Symbolic Instruction Code)
ベーシック
手続型
命令型
Dartmouth College
Kemény János György、Thomas Kurtz
10 PRINT "Hello, world!"
利用者が多い言語の1つ。
特に家庭用コンピュータ普及期を支えた。
また、近年は構造化も取り入れて形を変えて使用されている。
1966PL/I
(Programming Language ONE)
命令型
構造化
IBM社
HELLO:PROC OPTIONS(MAIN);
 DCL HELLO1        CHAR(12)  INIT('HELLO, WORLD!');
 DCL 1 HELLO2,
      2 HELLO2_1   CHAR(12)  INIT('HELLO, WORLD!');
 DISPLAY('HELLO WORLD!');
 DISPLAY(HELLO1);
 DISPLAY(HELLO2);
END HELLO;
科学技術、工業用として設計された言語。
所謂メインフレーム上で動作する。
1966BCPL
(Basic Combined Programming Language)
手続型
命令型
構造化
University of Cambridge
get "streams.d"
external
{
Ws
}

let Main() be
{
Ws("Hello, world!*N")
}
文法規則として「{}」を初めて使用した。
また、初めて「Hello world」を提示した言語ともいわれる。
後のB言語を通じてC言語へと発展するベースとなる。
1967Simula
(SIMUlation LAnguage)
シミュラ
構造化
オブジェクト指向
Norwegian Computing Center
Begin
OutText ("Hello, world!") ;
Outimage ;
End ;
初のオブジェクト指向を取り入れた言語。
後のSmalltalkなど、オブジェクト指向プログラミングに影響を与えた。
1967LOGO
ロゴ
手続型
命令型
Wally Feurzeig
TO HELLO
  PRINT [Hello, world!]
END
教育用として開発された言語。
最大の特徴は「タートルグラフィック」機能。
1968Forth
フォース
手続型
命令型
スタック志向
Charles Moore
: HELLO  ( -- )  CR ."Hello, world!" ; HELLO 
HELLO
組込系の用途で使用されるケースが多い。
逆ポーランド記法が特徴。
日本ではX68Kの通信用フリーソフトウェア「Telecom Miki Next」のマクロ記述言語として用いられていた。
1969Pascal
パスカル
命令型
構造化
Niklaus Wirth
program hello(output);
begin
  writeln('Hello, world!')
end.
MacintoshのOSやTEXなどの開発で用いられた。
現在でも仕様を拡張したものが使われている。
(Delphiなど)
1969B手続型Bell Laboratories
Kenneth Thompson、Dennis Ritchie
main(){
  extrn a,b,c;
  putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'Hell';
b 'o, w';
c 'orld';
C言語の元となった言語。
4文字以上の出力が不可能という謎の制限があった。
[戻る]
年代言語名タイプ開発元コード特徴など
1972C命令型
手続型
構造化
Bell Laboratories
Dennis Ritchie
#include <stdio.h>

int main(void)
{
    puts("Hello, world!");
    return 0;
}
数々の派生言語を生み出した。
高水準言語でありながら、低水準(プロセッサ)寄りの処理も得意としているのが特徴。
1972Prolog
(PROgrammation en LOGique)
プロログ
論理型Université d'Aix-Marseille
Alain Colmerauer、Philippe Roussel...
write('Hello, world!').
論理型言語の祖。
人工知能研究に用いられた。
1972Smalltalk
スモールトーク
手続型
オブジェクト指向
Xerox社
Alan Kay、Dan Ingalls、Adele Goldberg...
Transcript show: 'Hello, world!'.
オブジェクト指向という言葉を初めて定義した言語。
現在に続く流れの1つである。
1974ML
(Meta-Language)
命令型
手続型
関数型
The University of Edinburgh
Robin Milner
print "Hello, world!\n";
型推論の概念を持つ関数型言語。
1974SQL
(Structured Query Language)
宣言型
クエリ処理
IBM社
Raymond Boyce、Donald Chamberlin
BEGIN
 DBMS_OUTPUT.PUT_LINE('Hello, world!');
END;
データベース言語の祖。
一般的なプログラミング言語とは違い、データベースの操作のために開発された。
1977AWK
オーク
スクリプト型Bell Laboratories
Alfred Aho、Peter Weinberger、Brian Kernighan
BEGIN {
  print "Hello, world!"
}
UNIXのshell上で動作させるスクリプトを作成する目的で開発された言語。
1979Ada
エイダ
命令型
構造化
オブジェクト指向
United States Department of Defense
Jean Ichbiah
with Ada.Text_IO;

procedure Program is
begin
   Ada.Text_IO.Put_Line("Hello, world!");
end Program;
軍事目的で開発された言語。
米国製兵器のアビオニクスに使用されていたが、近年は「C++」へ移行しつつある。
197xMATLAB
(MATrix LABoratory)
マトラボ
数値解析MathWorks社
function y = hello_world
%#codegen
y = 'Hello, world!';
MathWorks社が開発した数値解析ソフトの名称だが、その中で用いるプログラミング言語の名称でもある。
行列やベクトル演算などの数学的処理をグラフ化するなどの数学処理に特化した言語である。
[戻る]
年代言語名タイプ開発元コード特徴など
1983C++
シープラスプラス
手続型
オブジェクト指向
Bell Laboratories
Bjarne Stroustrup
#include <iostream>

int main()
{
    std::cout << "Hello, world!\n";
}
C言語を拡張したため名称は「++」となった。
現在多く使用されている言語の1つである。
(拡張といいつつ、かなり異なるためC言語から移行するのはそれなりに苦労する)
1984Objective-C
オブジェクティブシー
オブジェクト指向Tom Love、Brad Cox
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Hello, world!");
    }
    return 0;
}
C言語をベースにSmalltalkの概念を取り入れた。
NeXTやmacOS、iOSの開発言語である。
1984PostScript
ポストスクリプト
スタック指向
スクリプト型
Adobe社
/font /Courier findfont 24 scalefont def
font setfont
48 48 moveto
(Hello, world!) show
showpage
ページ記述言語に分類されるスクリプト言語。
電子出版用途で用いられる。
1985Eiffel
エッフェル
オブジェクト指向Bertrand Meyer
class
    HELLO

create
    make

feature

    make
        do
            print ("Hello, world!%N")
        end

end
コンパイル時にC言語やJavaのコードを生成するという特徴を持つ言語。
1986Erlang
アーラン
宣言型
関数型
並行処理志向
Ericsson社
module(hello).
-export([main/0]).
main() -> io:format("Hello, world!\n").
分散処理を目的としたプログラミング言語。
現在はオープンソースである。
1987Perl
パール
スクリプト型Larry Wall
print "Hello, world!\n";
マルチプラットフォームを目的としたスクリプト言語。
ウェブアプリやシェルスクリプトで用いられる。
1988Mathematica
マセマティカ
手続型
関数型
Wolfram Research社
CloudDeploy["Hello, world!"]
数式処理を目的とした言語。
数学的な処理を必要とする環境で用いられる。
[戻る]
年代言語名タイプ開発元コード特徴など
1990Haskell
ハスケル
関数型 Lennart Augustsson、Paul Hudak...
main = putStrLn "Hello, world!"
遅延評価などの機能を持つ純粋関数型言語。
名前の由来が数学者だけに数式の処理や評価を得意とする。
1991Python
パイソン
命令型
関数型
オブジェクト指向
Guido van Rossum
print('Hello, world!')
マルチプラットフォーム対応のインタプリタ型言語。
オープンソースである。
1991Visual Basic
ヴィジュアルベーシック
手続型
構造化
オブジェクト指向
Microsoft社
Private Sub Command1_Click()
    MsgBox "Hello, world!"
End Sub
Microsoft社が自社OSであるMS-DOSやWindowsのために開発した。
「BASIC」という名前がついてはいるが、元の言語とは殆ど互換性はない。
1993HTML
(HyperText Markup Language)
マークアップ型Tim Berners-Lee
<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="UTF-8">
  <title lang="en">Hello, world!</title>
 </head>
 <body>
  <article>
   <p>Hello, world!</p>
  </article>
 </body>
</html>
ウェブページの作成を目的としたマークアップ言語。
厳密な意味ではプログラミング言語ではない。
1993Lua
ルア
手続型
関数型
オブジェクト指向
スクリプト型
Roberto Ierusalimschy...
print("Hello, world!")
C言語のホストに組み込まれる目的で作られたスクリプト言語。
近年ではゲーム用のスクリプトとして使用されるケースも多い。
1993R
アール
手続型
命令型
関数型
オブジェクト指向
Ross Ihaka
cat("Hello, world!\n")
オープンソースの統計解析向けプログラミング言語。
1995Delphi
デルファイ
命令型
構造化
オブジェクト指向
Borland International
program HelloWorld;
{$APPTYPE CONSOLE}
begin
  Writeln('Hello,World.');
end.
Borland社が自社開発のTurbo Pascal/Borland Pascalの後継を目指して開発した。
仕様としてはPascalを発展させたObject Pascalを独自拡張したもの。
Delphi自体は言語名称としても使われているが開発統合環境の総称である。
1995Ruby
ルビー
命令型
関数型
オブジェクト指向
スクリプト型
まつもとゆきひろ
print "Hello, world!"
「Perl」に続くという意味で「Ruby」と命名された。
日本発のプログラミング言語として初めて国際規格に認証された。
1995Java
ジャバ
関数型
オブジェクト指向
Sun Microsystems社
→Oracle社
public class HelloWorld{
   public static void main(String[] args){
     System.out.println("Hello, world!");
   }
}
マルチプラットフォーム対応で、Java仮想マシン上で動作する。
ウェブアプリで使用される言語として人気が高い。
1995JavaScript
ジャバスクリプト
手続型
関数型
オブジェクト指向
スクリプト型
Netscape Communications社
→Mozilla Foundation
<script>
  alert('Hello, world!');
</script>
「Java」とついているが、直接的な関係はない。
HTML内やウェブアプリで使用される。
1995PHP
(PHP: Hypertext Preprocessor)
命令型
手続型
関数型
オブジェクト指向
スクリプト型
Rasmus Lerdorf
<?php
 echo "Hello, world!";
?>
動的ウェブページの作成などを目的としたスクリプト言語。
名前が示す通り、「HTML」のプリプロセッサとして動作する。
1996SuperCollider
スーパーコリダー
音響信号処理James McCartney
"Hello, world!".postln;
音響信号処理に特化したプログラミング言語。
[戻る]
年代言語名タイプ開発元コード特徴など
2000C#
シーシャープ
命令型
関数型
構造化
オブジェクト指向
Microsoft社
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, world!");
            Console.ReadKey(true);
        }
    }
}
動的ウェブページの作成などを目的とした言語。
Microsoft社の「.NET」構想の中心的存在。
2001D
ディー
命令型
関数型
オブジェクト指向
Walter Bright、Andrei Alexandrescu
import std.stdio;

void main()
{
    writeln("Hello, world!");
}
C言語をベースとして、型推論やC++のテンプレートなどの機能を持つ。
2003Scala
スカラ
関数型
オブジェクト指向
Martin Odersky
object HelloWorld{
  def main(args: Array[String]){
    val strs = Array("Hello,", "world!")
      output(strs)
    }

  def output(strs: Array[String]):Unit = {
    for(str <- strs) {
      printf("%s ", str)
    }
  }
}
Java仮想マシン上で動作するプログラミング言語。
Javaのライブラリが使用可能。
2005F#
エフシャープ
命令型
関数型
オブジェクト指向
Microsoft社
printfn "Hello, world!"
Microsoft社の「.NET Framework」向けプログラミング言語。
2009Go
ゴー
命令型
手続型
関数型
構造化
オブジェクト指向
Google社
package main

import "fmt"
func main() {
    fmt.Println("Hello, world!")
}
開発ツールなどは全てフリーかつオープンソースである。
[戻る]
年代言語名タイプ開発元コード特徴など
2010Rust
ラスト
命令型
関数型
オブジェクト指向
Mozilla Foundation
fn main() {
    println!("Hello, world!");
}
オープンソースのプログラミング言語。
習得難易度が高いが、使用者からの支持も高い言語である。
2011Dart
ダート
命令型
関数型
オブジェクト指向
Google社
void main() {
  print('Hello, world!');
}
主にウェブアプリ、モバイルアプリ向けのプログラミング言語。
JavaScriptの代替を目指して開発された。
2011Kotlin
コトリン
命令型
関数型
オブジェクト指向
JetBrains社
fun main(args:Array) {
    println("Hello, world!")
}
Java仮想マシン上で動作するオープンソースのプログラミング言語。
Android開発用として公式に採用されているものの1つ。
2012Julia
ジュリア
命令型
手続型
関数型
オブジェクト指向
Jeff Bezanson、Stefan Karpinski...
println("Hello, world!")
オープンソースのプログラミング言語。
FortranやC、Pythonのコードが呼び出しできる。
2014Swift
スウィフト
命令型
宣言型
関数型
オブジェクト指向
Apple社
print("Hello, world!")
Objective-Cのランタイムが使用できる。
2014Hack
ハック
命令型
手続型
関数型
オブジェクト指向
スクリプト型
Facebook社
<?hh
 echo 'Hello, world!';
?>
オープンソースのプログラミング言語。
PHP実行環境のHipHop仮想マシン(HHVM)上で動作する。
2014Crystal
クリスタル
オブジェクト指向Manas Technology Solutions
puts "Hello, world!"
オープンソースのプログラミング言語。
[戻る]


[TOPに戻る]