プログラミング言語の歴史
コンピュータの歴史は、そのままプログラミング言語の歴史でもある。
まず最初に登場するのはプロセッサを直接動作させるための機械語(マシン語)である。
これは単なる数字の羅列であり、視認性は極めて低かった。
また、当然ながらプロセッサごとに異なる仕様となるため、移植性も低い。
逆に利点は実行速度とプロセッサとの親和性である。
当然直接動作させるため速度はプログラミング言語の中では最速である。
しかし、コンピュータが発達するにつれ、機械語ではどうしても技術者の育成や、汎用性の低さが問題となる。
そこで登場するのがプログラミング言語である。
ここでは主な言語をおなじみ「Hello, world!」のコードと共に簡単に紹介するが、コードが正しいという保証はない。
(HTMLは例外として載せているが、基本的にマークアップ言語はプログラミング言語ではない)
年代 | 言語名 | タイプ | 開発元 | コード | 特徴など | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1957 | FORTRAN (FORmula TRANslation) フォートラン | 手続型 命令型 | IBM社 John Backus... |
program helloworld print *, "Hello, world!" end program helloworld |
世界初の高水準言語。 特に科学技術計算に優れ、21世紀の現在でも改良を重ねて使用されている。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1958 | ALGOL (ALGOrithmic Language) アルゴル | 手続型 命令型 構造化 | Friedrich Bauer、Peter Naur、Heinz Rutishauser Klaus Samelson、John Backus... |
BEGIN FILE F(KIND=REMOTE); WRITE(F, <"HELLO, WORLD!">); END. |
最初の構造化言語。 後に開発されるプログラミング言語のベースとなる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1959 | RPG (Report Program Generator) | クエリ処理 | IBM社 | **free ctl-opt dftname(user001); ctl-opt dfractgrp(*no) main(main); dcl-proc main; dsply 'Hello, world!'; end-proc; |
IBMのシステム上で動作。 主に会計用途で使用されてきた。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1960 | COBOL (COmmon Business Oriented Language) コボル | 手続型 命令型 | CODASYL | 000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. HELLO. 000300 PROCEDURE DIVISION. 000400 DISPLAY 'HELLO, WORLD!'. 000500 STOP RUN. |
米国防総省主導で開発された事務処理用言語。 特に銀行システムで多く用いられ、現在でも使用されているケースは多い。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1960 | LISP (LISt Processor) リスプ | 手続型 関数型 | MIT(Massachusetts Institute of Technology) John McCarthy... |
(format t "Hello, world!") |
世界初の関数型言語。 マクロとしての親和性があり、Emacsのマクロ言語としても採用された。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1963 | CPL (Combined Programming Language) | 手続型 命令型 | Christopher Strachey | Write("Hello, world!") |
BCPLの元になった言語。 つまり、C言語の大元になる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1964 | APL (A Programming Language) | 配列処理 | Kenneth Iverson | 'Hello, world!' |
「APL記号」と呼ばれる特殊な記号を用いる。 これにより簡潔に計算式を記述することが可能であるが、入力も特殊となるためあまり普及しなかった。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1964 | BASIC (Beginners' All-purpose Symbolic Instruction Code) ベーシック | 手続型 命令型 | Dartmouth College Kemény János György、Thomas Kurtz |
10 PRINT "Hello, world!" |
利用者が多い言語の1つ。 特に家庭用コンピュータ普及期を支えた。 また、近年は構造化も取り入れて形を変えて使用されている。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1966 | PL/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; |
科学技術、工業用として設計された言語。 所謂メインフレーム上で動作する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1966 | BCPL (Basic Combined Programming Language) | 手続型 命令型 構造化 | University of Cambridge | get "streams.d" external { Ws } let Main() be { Ws("Hello, world!*N") } |
文法規則として「{}」を初めて使用した。 また、初めて「Hello world」を提示した言語ともいわれる。 後のB言語を通じてC言語へと発展するベースとなる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1967 | Simula (SIMUlation LAnguage) シミュラ | 構造化 オブジェクト指向 | Norwegian Computing Center | Begin OutText ("Hello, world!") ; Outimage ; End ; |
初のオブジェクト指向を取り入れた言語。 後のSmalltalkなど、オブジェクト指向プログラミングに影響を与えた。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1967 | LOGO ロゴ | 手続型 命令型 | Wally Feurzeig | TO HELLO PRINT [Hello, world!] END |
教育用として開発された言語。 最大の特徴は「タートルグラフィック」機能。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1968 | Forth フォース | 手続型 命令型 スタック志向 | Charles Moore | : HELLO ( -- ) CR ."Hello, world!" ; HELLO |
組込系の用途で使用されるケースが多い。 逆ポーランド記法が特徴。 日本ではX68Kの通信用フリーソフトウェア「Telecom Miki Next」のマクロ記述言語として用いられていた。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1969 | Pascal パスカル | 命令型 構造化 | Niklaus Wirth | program hello(output); begin writeln('Hello, world!') end. |
MacintoshのOSやTEXなどの開発で用いられた。 現在でも仕様を拡張したものが使われている。 (Delphiなど) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1969 | B | 手続型 | 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文字以上の出力が不可能という謎の制限があった。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[戻る] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
年代 | 言語名 | タイプ | 開発元 | コード | 特徴など | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1972 | C | 命令型 手続型 構造化 | Bell Laboratories Dennis Ritchie |
#include <stdio.h> int main(void) { puts("Hello, world!"); return 0; } |
数々の派生言語を生み出した。 高水準言語でありながら、低水準(プロセッサ)寄りの処理も得意としているのが特徴。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1972 | Prolog (PROgrammation en LOGique) プロログ | 論理型 | Université d'Aix-Marseille Alain Colmerauer、Philippe Roussel... |
write('Hello, world!'). |
論理型言語の祖。 人工知能研究に用いられた。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1972 | Smalltalk スモールトーク | 手続型 オブジェクト指向 | Xerox社 Alan Kay、Dan Ingalls、Adele Goldberg... |
Transcript show: 'Hello, world!'. |
オブジェクト指向という言葉を初めて定義した言語。 現在に続く流れの1つである。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1974 | ML (Meta-Language) | 命令型 手続型 関数型 | The University of Edinburgh Robin Milner |
print "Hello, world!\n"; |
型推論の概念を持つ関数型言語。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1974 | SQL (Structured Query Language) | 宣言型 クエリ処理 | IBM社 Raymond Boyce、Donald Chamberlin |
BEGIN DBMS_OUTPUT.PUT_LINE('Hello, world!'); END; |
データベース言語の祖。 一般的なプログラミング言語とは違い、データベースの操作のために開発された。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1977 | AWK オーク | スクリプト型 | Bell Laboratories Alfred Aho、Peter Weinberger、Brian Kernighan |
BEGIN { print "Hello, world!" } |
UNIXのshell上で動作させるスクリプトを作成する目的で開発された言語。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1979 | Ada エイダ | 命令型 構造化 オブジェクト指向 | 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++」へ移行しつつある。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
197x | MATLAB (MATrix LABoratory) マトラボ | 数値解析 | MathWorks社 | function y = hello_world %#codegen y = 'Hello, world!'; |
MathWorks社が開発した数値解析ソフトの名称だが、その中で用いるプログラミング言語の名称でもある。 行列やベクトル演算などの数学的処理をグラフ化するなどの数学処理に特化した言語である。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[戻る] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
年代 | 言語名 | タイプ | 開発元 | コード | 特徴など | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1983 | C++ シープラスプラス | 手続型 オブジェクト指向 | Bell Laboratories Bjarne Stroustrup |
#include <iostream> int main() { std::cout << "Hello, world!\n"; } |
C言語を拡張したため名称は「++」となった。 現在多く使用されている言語の1つである。 (拡張といいつつ、かなり異なるためC言語から移行するのはそれなりに苦労する) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1984 | Objective-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の開発言語である。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1984 | PostScript ポストスクリプト | スタック指向 スクリプト型 | Adobe社 | /font /Courier findfont 24 scalefont def font setfont 48 48 moveto (Hello, world!) show showpage |
ページ記述言語に分類されるスクリプト言語。 電子出版用途で用いられる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1985 | Eiffel エッフェル | オブジェクト指向 | Bertrand Meyer | class HELLO create make feature make do print ("Hello, world!%N") end end |
コンパイル時にC言語やJavaのコードを生成するという特徴を持つ言語。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1986 | Erlang アーラン | 宣言型 関数型 並行処理志向 | Ericsson社 | module(hello). -export([main/0]). main() -> io:format("Hello, world!\n"). |
分散処理を目的としたプログラミング言語。 現在はオープンソースである。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1987 | Perl パール | スクリプト型 | Larry Wall | print "Hello, world!\n"; |
マルチプラットフォームを目的としたスクリプト言語。 ウェブアプリやシェルスクリプトで用いられる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1988 | Mathematica マセマティカ | 手続型 関数型 | Wolfram Research社 | CloudDeploy["Hello, world!"] |
数式処理を目的とした言語。 数学的な処理を必要とする環境で用いられる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[戻る] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
年代 | 言語名 | タイプ | 開発元 | コード | 特徴など | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1990 | Haskell ハスケル | 関数型 | Lennart Augustsson、Paul Hudak... | main = putStrLn "Hello, world!" |
遅延評価などの機能を持つ純粋関数型言語。 名前の由来が数学者だけに数式の処理や評価を得意とする。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1991 | Python パイソン | 命令型 関数型 オブジェクト指向 | Guido van Rossum | print('Hello, world!') |
マルチプラットフォーム対応のインタプリタ型言語。 オープンソースである。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1991 | Visual Basic ヴィジュアルベーシック | 手続型 構造化 オブジェクト指向 | Microsoft社 | Private Sub Command1_Click() MsgBox "Hello, world!" End Sub |
Microsoft社が自社OSであるMS-DOSやWindowsのために開発した。 「BASIC」という名前がついてはいるが、元の言語とは殆ど互換性はない。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1993 | HTML (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> |
ウェブページの作成を目的としたマークアップ言語。 厳密な意味ではプログラミング言語ではない。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1993 | Lua ルア | 手続型 関数型 オブジェクト指向 スクリプト型 | Roberto Ierusalimschy... | print("Hello, world!") |
C言語のホストに組み込まれる目的で作られたスクリプト言語。 近年ではゲーム用のスクリプトとして使用されるケースも多い。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1993 | R アール | 手続型 命令型 関数型 オブジェクト指向 | Ross Ihaka | cat("Hello, world!\n") |
オープンソースの統計解析向けプログラミング言語。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1995 | Ruby ルビー | 命令型 関数型 オブジェクト指向 スクリプト型 | まつもとゆきひろ | print "Hello, world!" |
「Perl」に続くという意味で「Ruby」と命名された。 日本発のプログラミング言語として初めて国際規格に認証された。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1995 | Java ジャバ | 関数型 オブジェクト指向 | Sun Microsystems社 →Oracle社 |
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello, world!"); } } |
マルチプラットフォーム対応で、Java仮想マシン上で動作する。 ウェブアプリで使用される言語として人気が高い。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1995 | JavaScript ジャバスクリプト | 手続型 関数型 オブジェクト指向 スクリプト型 | Netscape Communications社 →Mozilla Foundation |
<script> alert('Hello, world!'); </script> |
「Java」とついているが、直接的な関係はない。 HTML内やウェブアプリで使用される。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1995 | PHP (PHP: Hypertext Preprocessor) | 命令型 手続型 関数型 オブジェクト指向 スクリプト型 | Rasmus Lerdorf | <?php echo "Hello, world!"; ?> |
動的ウェブページの作成などを目的としたスクリプト言語。 名前が示す通り、「HTML」のプリプロセッサとして動作する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1996 | SuperCollider スーパーコリダー | 音響信号処理 | James McCartney | "Hello, world!".postln; |
音響信号処理に特化したプログラミング言語。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[戻る] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
年代 | 言語名 | タイプ | 開発元 | コード | 特徴など | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2000 | C# シーシャープ | 命令型 関数型 構造化 オブジェクト指向 | 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」構想の中心的存在。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2001 | D ディー | 命令型 関数型 オブジェクト指向 | Walter Bright、Andrei Alexandrescu | import std.stdio; void main() { writeln("Hello, world!"); } |
C言語をベースとして、型推論やC++のテンプレートなどの機能を持つ。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2003 | Scala スカラ | 関数型 オブジェクト指向 | 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のライブラリが使用可能。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2005 | F# エフシャープ | 命令型 関数型 オブジェクト指向 | Microsoft社 | printfn "Hello, world!" |
Microsoft社の「.NET Framework」向けプログラミング言語。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2009 | Go ゴー | 命令型 手続型 関数型 構造化 オブジェクト指向 | Google社 | package main import "fmt" func main() { fmt.Println("Hello, world!") } |
開発ツールなどは全てフリーかつオープンソースである。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[戻る] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
年代 | 言語名 | タイプ | 開発元 | コード | 特徴など | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2010 | Rust ラスト | 命令型 関数型 オブジェクト指向 | Mozilla Foundation | fn main() { println!("Hello, world!"); } |
オープンソースのプログラミング言語。 習得難易度が高いが、使用者からの指示も高い言語である。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2011 | Dart ダート | 命令型 関数型 オブジェクト指向 | Google社 | void main() { print('Hello, world!'); } |
主にウェブアプリ、モバイルアプリ向けのプログラミング言語。 JavaScriptの代替を目指して開発された。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2012 | Julia ジュリア | 命令型 手続型 関数型 オブジェクト指向 | Jeff Bezanson、Stefan Karpinski... | println("Hello, world!") |
オープンソースのプログラミング言語。 FortranやC、Pythonのコードが呼び出しできる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2014 | Swift スウィフト | 命令型 宣言型 関数型 オブジェクト指向 | Apple社 | print("Hello, world!") |
Objective-Cのランタイムが使用できる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2014 | Hack ハック | 命令型 手続型 関数型 オブジェクト指向 スクリプト型 | Facebook社 | <?hh echo 'Hello, world!'; ?> |
オープンソースのプログラミング言語。 PHP実行環境のHipHop仮想マシン(HHVM)上で動作する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2014 | Crystal クリスタル | オブジェクト指向 | Manas Technology Solutions | puts "Hello, world!" |
オープンソースのプログラミング言語。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[戻る] |