プログラミング言語おしながき

 

お豆知識

  • プログラミング言語の歴史を系譜図で確認できるサイトの紹介記事GIGAZINE
  • 色んな言語でHelloWorld - Wikipedia
     

言語と簡単な説明

  • これからプログラミングを始めようという方は、用語がわからなくてもいいので、イメージをつかむようにしましょう。
     

メジャ言語

界中で広く使われている実績があり、資料も充実している言語達。
その中でも特に、独立したソフトを作るためによく使われるものを集めました。
メジャかマイナか、というのには多分に主観が入りますので、違和感を感じた方はコメントや修正をお願いします。

 

C言語

  • 恐らく、世界で最も使っている人間や資料が多いであろうプログラム言語であり、現在では後続の言語に道を譲った場面も多いが、今なお多くの言語の構文に影響を与えている(あのひどいswitch文も!)。
  • とりあえずこれが習得出来れば他の言語に移るのも苦労しないだろうし、難しすぎる事も無い。
    ただし、昔からプロに使われ続けてきた言語なので、入門用というほど簡単なわけでもない。
  • 初めてのプログラミング言語として教育に用いられることも多いが、多くの(PCの動作原理を知らないことが多い)人間が"ポインタ"で躓く。とっつきにくいことは否めないが、学んで損は無い。
    基本的な言語仕様としてそれほど複雑な構文が無いため、「本格的」なプログラミングを初めて行う人でもわかりやすいかも。
  • 使う人によってまったく異なる顔(「高級言語」としての顔と「低水準言語(高級アセンブラ)」としての顔)を見せる言語でもある。
    その懐の広さ故に下手な人と上手い人で大きな差が出るが、これ1個覚えれば割と何でも出来るという事でもある。
  • 2ch(read.cgi)はこの言語で作られている。初めての人はgcc入れると(゚Д゚)ウマー
  • ちなみにC言語の前身となったのはB言語だが、Bの前身はBCPLであってA言語ではない。
  • ちなみにC言語の後継のひとつにD言語があるが、このサイトではマイナー言語にすら取り上げられないほど超マイナーな存在である。
 

C++

  • C言語(構造化プログラミング言語)を拡張して作られたオブジェクト指向言語。C言語からの移行組は、オブジェクト指向で躓くことが多いが、ほとんどCの上位互換でありながらちょっとしたところをより使いやすいように改良してあるため、Better C(C言語プラスアルファ)として使用する場合も多い。
  • C++の特徴的機能の一つであるテンプレートは、C#やJavaにGenericsとして導入されたほど非常に強力な機能だが、反面、非常に難解な機能としても名高い。STLとよばれる標準ライブラリの一群や、強者により開発されたboostというライブラリはこのテンプレートをフルに活用している。これらを駆使したコードは関数型言語にも似て、テンプレートを全く使わないコードとは完全に別の言語の様相を呈する。
  • 元々強力だったC言語に機能を追加しただけなので、当然強力なのだが、 習得するのにも使いこなすのにも苦労が伴い、下手な使い方をするとC言語以上に酷い事になるため、多くの職業プログラマに嫌われがちであり、業務で使っている人は減ってきている様子。最近はむしろ趣味でプログラミングをする人間がやりがいを求めて挑戦するような傾向にあるようだ。リアルタイムなゲーム等、速度が必要な分野では業務でも未だに現役である。
  • 「言語仕様にコンパイラが追いつかない」と言われるほど複雑怪奇であり、普段C++を使いこなしている人でも、正直その完璧な仕様を覚えているかどうか怪しかったりする。C言語に機能追加されただけなので、普段はCとして使い、便利な機能だけつまみぐいするような人もいるとかいないとか。
  • その複雑怪奇な言語がさらに怪奇さを増した"C++0x"という新規格が制定中である。これは00年代中、おそらくは09年に公表され"C++09"となる予定だが、どうも議論が遅れており、本当に09年に公表されるかは不明。仮に公表されても、コンパイラの対応はさらに時間がかかると思われる。"0x"は実は16進数という説もある。
     

Java(ジャバ)

  • 下記JavaScriptとは名称が似ているが、全くの別物である。
  • 他の言語とは違いWindowsで作ったプログラムだろうが、Linuxで作ったプログラムだろうが同じように実行できる言語。その代わり、実行するにはランタイムが必要。どこでも動くという特性から、Web系のシステムでよく採用されている。昔はCと比べられて遅い遅いと言われてきたが、最近のランタイムはJIT等の技術によって随分と高速になった。逆に言えば、使っているランタイムによって動作速度が変わる言語とも言える。
  • 完全なオブジェクト指向プログラミング言語である。
  • 標準ライブラリが豊富であること、オブジェクト指向言語であることから初心者がやるのに向いているかも? (オブジェクト指向言語じゃない言語でメジャーなのはC言語くらいだし)
  • どこでも動くというのはMicrosoftが推し進める .NET Frameworkと似ているが、実際、.NET FrameworkはJavaのパクりと言ってもいい。
  • C++からCの重荷を捨て去って、さらにメモリ管理の呪縛から解放された言語。いきなりC系から入るとポインタで挫折する人が多いが、Javaにはそれが表面上はない分いくらかは初心者向き。ただし、実際は裏に隠れているので、ポインタの概念を理解していないと痛い目に遭うことも多い。
  • "ぬるぽ"の本場である。思う存分"がっ"して欲しい。そして反省しろ。
     

C#

  • C++とJavaを混ぜたような言語。業務ソフトの開発において、C++よりも効率が良く、取って代わりつつあるようだ。.NET Frameworkで動作する言語の一つであり、実行に.NET Frameworkが必要ではあるが、動作環境はWindowsだけではない(Mono・DotGNUをググれ)。名前の由来は、「#」が4つの「+」に見えることから、C++をさらに推し進めたC ++++という意味が込められている(らしい。諸説ある)。余談だが、変数cをインクリメントしたc++は数値として扱われるので(c++)++はコンパイルエラーとなる。
  • 完全なC言語との互換性を保つ為に、無意味に複雑になってる部分があるC++と違い、Java同様過去のしがらみを捨てノビノビと作られているためか、非常に綺麗にまとまっている。しがらみと一緒に今までの資産もいくらか捨てる事になったわけだが、これから学ぶ人には関係無い話だろう。
  • C++,Java,Delphi,VBなど、色々な言語の良い所どりをしようとして手堅くまとまっている中堅の言語といった印象。
     

Visual Basic(ヴィジュアル ベーシック)

  • Windows上でのGUIプログラム作成に適した言語。
    GUIの画面構成をドラッグアンドドロップで作成できるため、初心者でも楽しめる。
    ただし実行速度に難あり。また実行にランタイムが必要。
  • VB使いというと2chでは馬鹿にされがちであったが
    ぶっちゃけ簡単なソフトなら1番楽に作れる言語であるため、プロの人も適材適所でバリバリ使っているらしい。
    また、VBAでExellやWord上で動くマクロを書けたり、VBScriptで似たような書き方が出来たりと
    Microsoft関係のものに関しては予想以上に便利に使えたりする。
    ただ、機能はそれなりに限られているので、本格的なソフトを作りたいなら不足する事もあるかもしれない。
     

VB.net

  • .NET Framework上で動作する。Visual Basicという名で通ってはいるが言語仕様はVBとは異なる。
    VB出来るから簡単だろなんて思ってたら痛い目にあう言語。
  • .NETで動くので、過去のVBのような実行速度の遅さや微妙な制限がなく、C#とほぼ同様の機能が使えたりするが、その分過去のVBのようなCOMに対する柔軟性などは薄い。
  • Visual Studioでこいつを使うとIntelliSenceが異常に強力。
     

Delphi (デルファイ)

  • Pascalで記述するVisual Basicのようなものだが、実行速度は結構速め。
    開発環境を指す場合もある。ネイティブで開発できるし、.NET対応のバージョンもある。
  • C++等と比べて異様にコンパイル速度が速く、ライブラリも充実しているため、サクサク開発出来るのだが
    影が薄く、資料もさほど充実していない(本屋に入門書が置いてなかったりする)ため
    実力の割にあまり評価されてない不遇の言語。
  • 専ブラのJaneとか、SkypeとかもDelphiで作られてるんだぞ(Delphiで開発されたアプリケーション)。
     

LL

語であり、正しくはLightweight Language(軽量言語)の事を指します。
何が軽いのかというと、PCの動作ではなく、プログラマの負担です。
プログラマがやりたい事を簡単に実現させるための様々な機能が用意されており、サクサク書けるのが特徴。
ただしその機能のためPCへの負担は大きめで、動作は遅く、画像を扱ったりするのは苦手です。

主に簡単な文字列処理や、Blogや掲示板などのネット上で動くソフトを作るために使われます。
(ネット上でよく使われるのは、プログラムが暴走してもサーバー全体に悪影響を与えたりしない機能を持っているため)
ウィンドウを出してどうこうするような本格的、大規模なソフトの製作にはなかなか使われませんが
PCの性能向上やライブラリの充実によって、やろうと思えば可能な環境は整いつつあります。

 

JavaScript

  • 非常に珍しいプロトタイプベースオブジェクト指向スクリプト言語。
    上記Javaとは名称が似ているが、全くの別物である。
  • 主としてHTMLの動的な変更に用いられる。(つまりIEみたいなブラウザさえあれば動かせる言語でもある)
  • ユーザー数という意味ではトップクラス。最近では、AJAXの流行で脚光を浴びている。
 

Perl (パール)

  • 汎用のスクリプト言語。非常に実用的であり、テキスト処理、システム処理、CGIなど広く用いられる。「一つのことをやるのに一つ以上の方法がある」言語なため、上級者と初心者では同じ目的でもまるで違うコードになる。
  • 使いこなせば、C言語で何百行と書かねばならない処理が数行で済む事すらあるが、記号や省略表記の使い方が難解で、基本的に暗記して使っていくしかなく、正規表現などを大量に駆使したperlのコードは例え他の言語を一通り極めた人間であっても全く読めない事がしばしば。
  • 昔は、ネット掲示板といえばperlで書かれているのが普通であった。今でも大抵のレンタルサーバー等で動かせる。最近はPHPやRubyなどで書かれる事も増えてきたようだ。
  • 2ch(bbs.cgi)はこれでつくられている。
     

PHP

  • HTML埋め込み型のサーバサイド・スクリプト言語。最近流行している。Perl/CGIに比べ、動作が早い場合が多いとされる。ライブラリが豊富で、データベース等との連携やXMLの扱いが優秀。
  • 速度面や読みやすさでCGI業界のperlに取って代わろうとしてる言語であり、WikiなんかもPHPで書かれているものは多い。
  • また、BamcompileというWindowsバイナリを生成するツールも存在し(正しくは、PHPエンジンにエンコードしたスクリプトをくっつけてある)、コマンドラインプログラムを作ることも可能。そのままでhttp、socket通信の関数が扱えるため、単純作業の自動化に便利(性質上アンチウィルスに誤爆されることもある)
  • Ver5より、正規表現ライブラリとしてOnigurumaをのっけており、以前よりかなり高速、かつ強力な正規表現を書けるようになっている。
  • .NETなコンパイラとしてPhalangerというものも存在する。
     

Python (パイソン)

  • オブジェクト指向スクリプト言語。汎用目的の言語だが、異なる言語で書かれたコンポーネント間をつなぐ糊言語としても人気がある。
  • 仕様がきれいなので初心者にもオススメ。アメリカではPerlと共にプログラミングの入門言語として教育の場で親しまれているほか
    多くの3DCGソフトのマクロ言語としても有名。ゲームの制御なんかにも使われている。
  • 文法の通りに書けば自然に、綺麗に読めるように書けてしまうという規則が特徴的。
    「色々な書き方が出来た方が良い」 「同じ事をやってるんなら同じように見えた方が良い」という
    2つの対立した考え方があるが、Pythonは後者を支持し、言語設計に取り入れていると言える。
  • OpenOfficeのマクロ記述言語としても利用されている。
  • wxPython, Tkinter等、ウィンドウを出してどうこうするようなアプリケーションを手軽に作成出来るツールも充実している。
 

IronPython(アイアンパイソンまたはアイロンパイソン)

  • .NET Framework上で動作するPythonである。
  • もともと、Python界で有名なプログラマによって「CLI(.NET Frameworkの仕様)は動的言語との相性が悪い」という趣旨の短い論文を書くための検証用として作成された。しかし、予想に反してよく動いてしまい(当時のPythonより1.8倍速かったとかなんとか)、現在ではMicrosoftの公式プロジェクトとして開発が続いている。
     

Ruby(ルビー)

  • オブジェクト指向スクリプト言語。珍しく作者は日本人。 もともと日本での人気は高かったが、最近ではRuby On Railsの影響で海外でも人気が高まっている。
  • 色々な言語のいいとこどりをして綺麗にまとめたような言語であり、初心者にも扱い易い言語。
  • 習得が容易なオブジェクト指向言語という点でよく似たPythonと比較されがち。
    日本語の入門記事・書籍の数の関係で日本ではRubyに軍配が上がるが、欧米ではPythonの方が普通に人気。
  • 日本産ではあるが日本語の取り扱いは他の言語と同レベルで、特にRubyとしてのアドバンテージはない。
 

VBScript(ブイ・ビー・スクリプト)

  • VBScriptは、Visual Basic(VB)のサブセット(簡易版)で、マイクロソフト社製のスクリプト言語である。
  • Windows系OSにWSH(Windows Script Host)を導入することで動作する。 Window2000/XPには最初からWSHが導入されているため、メモ帳さえあればとりあえず始められるので手軽。
  • これをメールに添付したウィルスが流行ったりもした。
     

マイナ言語

業的に普及はしなかったものの、一部の環境や分野、会社などで使われ続けていたり
後発の言語に大きな影響を与えた開拓者的な言語や
Cなどで主流な手続き型とは異なる、いわゆる関数型の仕様を持った言語。
そして日本でのみ使われている言語……などなどを集めています。
メジャかマイナか、というのには多分に主観が入りますので、違和感を感じた方はコメントや修正をお願いします。

 

AWK(オーク)

  • テキスト処理と簡単な計算に特化したスクリプト言語。perlすら持ち出すのが面倒なような簡単なCSV等の処理に力を発揮するが、当然複雑な作業には向かない。
  • 初心者が習得するような言語ではないし、既に複数の言語を習得しているような人なら瞬殺で習得できるような影の薄い言語。でも知っているとたまに便利なこともある。
  • ちなみに言語の名前は開発者3人の頭文字を取ったもの。AはA. V. Ahoさんだが、エイホと読むので注意。

Smalltalk(スモールトーク)

  • アラン・ケイの考案したメッセージングのオブジェクト指向をサポートするために作られた言語。「オブジェクトにメッセージを送って…」という考え方は後の多くの言語に影響を与えた。
  • 同じくケイの発案である「ダイナブック」を暫定的に実現するための“OS”として開発された経緯も持つ。このため本格的な処理系は独自の“ルック&フィール”を持つゲストOSのように振る舞うことが多い。ちなみに、1970年代にALTO上で開発・運用されていたSmalltalkのGUIの有り様が、後のパーソナルコンピュータにおけるGUIの方向性(オーバーラップウインドウ、メニューによる命令、カット&ペースト、マルチフォント、等々)を決定づけた。
  • 処理系それ自体が(バイトコードコンパイラから、GUIフレームワーク、IDEに至る環境内のすべてが)Smalltalk自身で記述されている点が特徴。
  • 文法はシンプルで、二項演算、ループや条件分岐も含め、すべて「object message」という意味の式として記述し、処理系にもそう解釈される。
  • オリジナルのXEROX Smalltalk-80システムの直系の子孫は、Cincom SmalltalkおよびSqueak Smalltalkとして現在も活発な開発・改良・機能拡張が続けられている。

Objective-C

  • C言語にSmalltalk風のオブジェクト指向を導入したプログラミング言語。
    C++よりも比較的シンプルなため、Cが使えるなら容易に習得できる。主にMac OS Xで利用されている。
  • OSXではObjective-C++も使用されている
     

Eiffel(アイフェルまたはエッフェル)

  • 文法的にはPascalを連想させる、オブジェクト指向言語。 機能的にはJavaに似る。
  • 言語名は、エッフェル塔では無く設計者(ギュスターヴ・エッフェル)に由来する。
     

Ocaml(オーカムル)

  • Objective Camlの略。最近ちょっとホットな関数型言語。
  • 関数を引数に取れたり型を指定せず型推論させたりとC言語のような手続き型言語からは想像の付かない世界が広がっている。
    関数型言語といえば他にLispなどがあるがOcamlは静的型付け言語なので速さの点では上と言って良い。
  • 破壊的代入ができてしまうなどといった副作用を持つため純粋な関数型言語ではないとする意見もある。
     

Haskell(ハスケル)

  • 純粋関数型言語。名称は論理学者であるハスケル・カリーに由来する。
  • 生産性が異常に高く、この言語でPerl6を数ヶ月で実装した人もいるほど。
    また、純粋関数型なので手続き型のC/C++とはまるで別世界の様相を呈している。
    例としては、手続き型言語にあるような変数がないこと、必要になるまで計算を遅らせる遅延評価という仕組みによって無限の長さのリストを扱えることなどが挙げられよう。
     

Scheme(スキーム)

  • Lispから派生した言語。
    Lispの特徴に書いてある「動的型付け」、「コード自体がオブジェクト」、「前置記法」、「カッコ多い」をほぼ受け継ぐ。
    数あるLisp方言の中で唯一CommonLispに飲み込まれず生き残った?(よく知らない)
     

Common Lisp(コモン・リスプ)

  • Lispの方言の一つ。乱立するLisp方言を纏めるために策定された標準規格。
  • Emacs LispやSchemeと並んで、現在最もよく使われているLisp方言である。
    仕様の簡潔さを旨とするSchemeと異なり、実用性を重視した複雑な言語仕様と大きな標準ライブラリを有するのが特徴。
     

J++

  • Microsoft版Java。Java(JavaVM)にMicrosoftが独自の拡張をしたために
    Sunの不興を買い訴訟問題(Microsoftの負け)とまでなった。
  • これによりMicrosoftはC#を生み出したが、それだけでは済まず、J#なんていうものまで誕生する始末となった。
    J++Userを思うと熱い液体が頬に伝う。言えることは、黙ってJavaやれってことだ。
     

Fortress(フォートレス)

  • Sunが新世代Fortranとして作った言語。マルチプロセッサを操るのが得意らしい。
    名前は英語で「要塞」の意。
  • その名前故非常に検索しづらく、資料を見つけづらく、よくわからない。

HSP

  • 正式名称はHot Soup Processor。CとBASICの中間みたいなもの
    文法や命令文が非常に簡単で小学生向けの本も出されるほど。主にゲームの作成に使われる。
  • 業務用ではなく、趣味で手軽にプログラミングを楽しむために開発されたものである。
    ウィンドウやボタン、画像などを出したり動かしたりといった事が非常に簡単に出来るが、基本的にWindowsでしか動かせない。
    高度な事をやろうと思えば不可能ではないが、そのレベルなら他の言語の方がかえって楽だろう。
  • 開発者は日本人であり主に日本で有名だが、英語圏でも使っている人はいるようだ。
     

SpeeD

  • 非常にマイナーな言語。実行速度は速い。コンパイルに時間がかかる。非常に難解。
    bEpKyT氏により作成された。彼には才能が無い。
     

ひまわり

  • 書式が日本語形式の言語。
  • インタプリタ型で、どちらかというとLLに近い簡易な言語。
    MicrosoftOfficeを弄る機能が豊富で、簡単な業務の自動化に使える。
  • ひまわりのランタイムはDelphiで開発されており、DelphiのGUI部品を使える。
    またDLLやAPIを使う事も出来るため、やろうと思えば高度な事も出来る。(が、逆に難しいかもしれない)
  • 今なら「なでしこ」があるので、わざわざこちらを使う意味はない。
  • 他にも「あさやけ」などがある。
     

なでしこ

  • ひまわりの進化系。日本語形式の言語。なでなでしこしこ
  • 「オブジェクト指向を導入」「実行速度を何倍にもアップ」「CGIとして動作可能」「より自然な日本語らしく」などなど
    様々な方向でひまわりからのパワーアップがなされている。
    自然な日本語への改良とは例えば、ひまわりでは文節の区切りに句点が不自然に多くなりがちだったが
    なでしこでは助詞で上手く区切りとするようになっている点など。
  • 単語の区切りがわかりにくくプログラミングに向かないと言われる日本語で
    これだけの字句・構文解析をするというのは、地味に高度な事だったりする。
  • 当然、日本語なので世界を狙えるようなものではないが
    英語だというだけで余計な「難しそう」という印象を受ける事なくプログラミングができ
    ソースを読んだだけで何をやっているか理解しやすいため、主に教育の分野で活躍している。
  • 他の言語を習得している人でも日本語萌えのために使っている事がある。
     

特化言語

定の用途や環境に特化した言語を集めました。
Flashやアプリケーションの制御、簡易なゲーム製作、OSの機能へのアクセスなどなど。

 

ActionScript(アクションスクリプト)

  • アドビシステムズ社(旧マクロメディア社)の製品であるFlashに使用されるプログラミング言語。
    Flashを作成する際に複雑な動作をさせるには欠かせない。
  • 今まではFlashの作成には専用ソフトウェアが必要だったが
    アドビが開発環境をオープンソースで公開したことにより無料で開発することが可能になった。
  • とくにver3からは、よりオブジェクト指向(プロトタイプ思考)が強くなり、パッケージ管理などしっかりした言語となった。
     

Vimスクリプト

  • テキストエディタ:Vimに搭載されてる。スクリプト言語
     

Emacs Lisp

  • テキストエディタ:Emacsに搭載されてるLispの一種。通称elisp
     

VBA

  • Visual Basic for Applicationsの略。Microsoft Office製品などのアプリケーションに搭載されており、構文はVBと同一である。VBとの違いは、搭載アプリケーション内でしか実行できない点である。
     

Nscripter

  • フリーのノベルゲーム用スクリプト。
  • フリーゲームだったり、同人ゲームだったりの世界では、これと吉里吉里(TJS)で人気を二分している。
    吉里吉里以上に取っ付きやすいが、細かな所までは弄れなかったりする。ソースはパッと見HSPっぽい。
    多人数開発?面倒ってレベルじゃねーぞ!!
    Linux用の処理系もあったりする、クロスプラットフォームのゲームが作れるね!
     

TJS2

  • Javaっぽいスクリプト言語。TJS2VM上(現在はWindowsのみ?)で動作する。
  • これ自体はマイナーだが、TJS2を使ったゲームエンジン「吉里吉里(きりきり)&KAG3」はちょっと有名なので紹介。
    (主観)吉里吉里を使ってみた感じはDirectXよりはとっつきやすい。
     

シェルスクリプト

  • UNIX系OSやLINUXでコマンドをバッチ処理(決まった幾つかのコマンドを自動的に実行)するためのスクリプト。
  • 変数の使用や条件分岐、ループなどの機能を持ち便利。
    使用するシェルごとに書き方が異なり、代表的なものはsh系(sh、bash)とcsh系(csh、tcsh)がある。
    最近ではZ-Shellなんてのもある。
    ちなみにLinuxのデフォルトのシェルはbash。
     

バッチファイル

  • Windowsのコマンドプロンプト(またはDOSプロンプト)でバッチ処理(決まった幾つかのコマンドを自動的に実行)するためのスクリプト。
  • WindowsではGUIによる操作がメインのため、最近はあまり使用されることは少ないが、一部のインストーラなどでは使われる。
    なおNT系で使われるコマンドプロンプトでは、9x系のDOSプロンプトと比べ多彩な文法が使える。
     

System3.X

  • アリスソフト謹製のゲームエンジンで3.5、3.6、3.8、3.9の4種類がある。
  • ノベルだろうがRPGだろうがSLGだろうがADVだろうがなんでも作れる。
    100%ではないが3.5で作られた物はそれ以降のバージョンでも、3.9で作られた物はそれ以前のバージョンでも動作する。
    3.5の仕様が公開されたことによりマルチプラットホームが実現。
    昔はユーザーが多かった。
     

System4.X

  • C言語ライクなアリスソフト謹製のゲームエンジン。
  • ノベルだろうがRPGだろうがSLGだろうがADVだろうがなんでも作れる。
    逆になんでも出来るせいか3.Xの頃ほどユーザーによる利用はそれほど盛んではない。
    これを使うくらいならC、C++の方がいいと思われる。
    入手には会員登録が必須。
     

CatSystem2

  • ういんどみる謹製のゲームエンジン。
  • ADV制作を効率的に行えることを基本コンセプトに作られている。
    ユーザー数は少ないが個人的にはNスクよりも使いやすい。
     

古代言語

史上、初の高級言語であるFORTRANを始め、かなり初期の時代に発明された言語の数々。意外と、改良されて現代でも活躍中だったりするものも多いが、基本的には上手くプログラムを組むための定石が確立していなかった時代のものである。言語の仕様上いわゆるスパゲッティプログラムという処理の流れが絡まったプログラムを作ってしまいがちなので、今からプログラミングを学ぼうと思っている人が始めるにはお勧め出来ない。

 

Ada(エイダ)

  • ボーイング777、F-22などの制御ソフトウェアに使用されているプログミング言語。
  • アメリカ国防省より募集され、軍事や国家運営への使用に耐えうる信頼性を持つことが条件とされた。
    まぁ一般人はまず使わない。
     

BASIC(ベーシック)

  • Beginners' All-purpose Symbolic Instruction Codeの略。
    略称を意味のあるものにするために、頭をひねったであろうことは想像に難くない。
  • 初心者向け言語であり、高校数学などでも使われている。
    尚、Visual Basicは名前にBASICとついているものの、もはや別物である。
     

COBOL (コボル)

  • 先人が使用したFORTRANと双璧をなす古の言語。科学計算に特化したFortranに対し、COBOLは財務計算に特化している。
  • これから作成するプログラムのための開発言語として選択する価値は低い。
  • 「コンピュータ=パソコン」な認識の人にとっては遥か昔に絶滅したと思われている言語であるが、実際には企業のワークステーションなどで今でもCOBOLで書かれた業務プログラムが大量に稼動している(その数はCに次ぐとか)。これら業務用プログラムのライフサイクルは、パソコンのアプリケーションに比べると非常に長いため、これからもメンテナンスなどの需要でCOBOLはそう簡単にはなくならないと思われる。
  • 尚、COBOLerはCOBOLプログラマを指し、侮蔑語である。
     

FORTRAN(フォートラン)

  • 古の言語。COBOLが事務処理用であったのに対し、FORTRANは科学技術計算用であった。
  • 史上初の高級言語であり、実に50年前に開発された言語であるがゆえに
    現在ではほとんどの分野でCやC以降の言語に取って代わられた。
  • 科学技術の研究分野に限っては現役で使われているところもあるといった程度であり
    一般的には、縁側でお茶をすすりながら語られるにふさわしい言語である。
  • ただ、科学技術計算のための言語の名は伊達ではなく、科学計算に於いてその計算速度は最速を誇る。
    これが未だに研究分野で使われ続ける理由である。
     

Lisp(リスプ)

  • Fortranに次ぐ古い高級言語であるにもかかわらず、動的な型付けを行い、前置記法を持ち
    コード自身をオブジェクトとして扱うことができるという脅威的な仕様を持つ。
  • 一言で言うと「(カッコ(が(多(すぎ(wwwwwww(ワロタwwwww))))))」
  • その溢れ出る魔力に魅入られ熱狂的なファンとなる者が今もなお存在し
    古代の産物と言うのに違和感があるほど今も話題にあがったり勉強する人がいたりする言語。 謎のオーパーツ。
  • 「Common Lisp」の項目も参照。
  • C#などここ数年言語トレンドの流れは、まるでLispに回帰してるようと言える。ほんと早すぎたんだよこの言語
     

Prolog(プロローグ)

  • その昔、人工知能の分野でよくつかわれた言語。
  • 論理式乃ちPrologプログラムという不思議な性格を持つ。ということは、"自然言語に よるプログラミング"という目標に対しては次善策くらいの位置にいることになる。
  • いわゆるパズルや経路問題を列挙的手法で解くのに向いている。
  • 簡単に言うと「ちょwwこれどう記述すんの?ww」って時に使えるかもしれない
  • 基本的にはオンメモリデータベースと思えばよい。照会言語としてのPrologはSQLより 遥かに強力である。しかし、データベースシステムとしては、管理機構があまりに貧弱だ。

Pascal

  • 代表的な構造化プログラミング言語の1つであり、本来は教育用言語として誕生した。同じ構造化言語でありながら記法の対照的なCとしばしば比較されてきた。
  • 厳密なため機械的に解析しやすくコンパイルが非常に高速で、簡素なため初心者に習得しやすいという強力な言語仕様を持つ。ただし、大規模な開発や低レベル部分の制御が苦手なため、プロには敬遠されていた。
  • とはいえ、初期のMacintoshがPascalで書かれているなどの例に示されるように、言語としてのポテンシャルは高いと言える。ちなみにMacでプログラムを行う場合、Macintosh Toolboxと呼ばれるAPIセット(WindowsでいうWin32APIに相当)はPascal形式となっており、文字列もCのヌル終端形式ではなく先頭バイトに文字列長が指定されたPascal文字列に変換しなくてはならなかった。Inside Macintosh(Apple公式の技術文献)でもPascalで関数プロトタイプやサンプルコードが記述されており、少なくとも初期のMacプログラマにとってはPascalは避けて通れない道であった。
  • 後継となる言語はDelphiであり、こちらもコンパイルが爆速である。
     
  • 尚、本物のプログラマはパスカルを使わないとされているが、真相は闇の中である。
     

PL/I(ピーエル・ワン)

  • 古の言語。ALGOLを基礎に事務処理用言語COBOLや科学技術計算用言語Fortranの機能を取り込み あらゆる用途に耐える汎用の言語として、すべての言語を置き換えるべく開発されたという非常に無茶な言語。
  • 当然あまり普及しなかったが、現在でも一部生き残っているというしぶとい一面を持つ。
    趣味で勉強する価値が無いのはCOBOLやFORTRANと同じ。
     

その他

手く分類出来なかった言語や、そもそも言語っぽくないもの。
アセンブリなんかは古代の言語といえばそうだが、将来においても無くなる事はありえないだろう。

 

アセンブリ言語

  • 命令が機械語と一対一で対応している言語。
  • CPUによって使える命令が異なるが、基本的な機能や定石はどんなCPUでも大体同じである。
    もちろん、最大限の性能を引き出すためにはCPUの細かい仕様を覚える必要があるが……
  • 大抵の場合、構文自体は非常にシンプルだが、それが故にロジック全体の可読性に欠け、結果的に複雑で初心者には不向き。
    その他の高級言語(特にシステムそのものに切り込めるC/C++等)をやったことのある人なら
    プログラミングの概念を学ぶためにやる価値はある。
  • C言語などの仕様や動作が「何故そうなっているのか」という部分に自然と納得出来たり
    自分が書いたコードがコンパイルされた後、どうなってるのかわかったりして楽しい。
     

CASL(キャッスル、またはキャスル)

  • 情報処理技術者試験の為だけに存在するアセンブリ言語であり、架空のコンピュータであるCOMETにて動作するとされる。
    尚、現在では仕様が変更され、CASLⅡ/COMETⅡとなっている。
  • アセンブラやCPUアーキテクチャの入門として大学の授業などで使用されることもある。
     

機械語

  • CPUが直接解釈して実行出来る命令。
    16進数の数値に 加算、減算、代入などの動作が割り振ってあり、CPUは読み込んだ数値に従って動く。
    多少「数値」というのには違和感があるが、要は数バイト程度のデータの事。
  • 数値と動作の対応関係を「命令セット」と呼び、これが同じCPUなら違う製品でも同じソフトが動かせる。
    (実際はOS等の環境によって動かない場合も多々あるが……)
  • Windowsが動くような一般的なパソコンのCPUはx86という命令セットを持っている。
  • Cなら、機械語命令をchar型の配列として用意してから、インラインアセンブラで配列に対してcallやjmpを呼び出せば
    直接走らせる事も出来る。 が、実用性はあまり無く、最近のOSではDEPなる機能で保護されている場合もある。
    (WinならXP SP2以降。ただしデフォだとDEPはオフになっている。オンの場合でもVirtualAllocで確保すれば大丈夫)
     

UML(Unified Modeling Language)

  • のっけからこんな事を言うのもなんだがプログラミング言語ではない。
    UMLはソフトウェア開発のためのモデリング言語である。
  • 大規模なソフトウェアを開発する場合その仕様を明確にしなければならない。
    特に複数人で開発をする場合は共通する認識が重要となる。
    UMLはそういった大規模ソフトウェアの仕様を細かく正確に表現するための言語であり、近年注目されている。
  • JUDEなどのツールが有名であり、オブジェクト指向に密接に関係している。
     
  • ぶっちゃけて言ってしまえば「図」である。
     

ネタ

? なんだって?
MicrosoftやGoogleをブッ潰すスーパーソフトを作りたいって?
そうかそうか、そんな君にオススメの言語があるんだ。

 

Brainfuck (ブレインファック)

  • 名がアレなので、Brainf*ckと呼ぶことが多い。開発者はUrban Muller氏。
    コンパイラを小さくする事を目的として設計された言語。
    実際、Mullerが開発したコンパイラのサイズは123バイト(キロバイトでもメガバイトでもない)インタプリタは98バイトとなっている。
  • ポインタを>と<で操作しながら、ポインタがさす値を増減させて処理をさせる。
    実用性は全くといっていいほど無いが、一応あらゆるプログラムを作成できる。とんでもなく難しい。機械語の方がマシだな。
     
    Brainf*ckと同等で文字だけを変えたものには以下のようなものもある。
  • プログラミング言語 長門有希
    • …,「」および任意の命令区切りを使ってプログラムする言語。
    • 例えば 「………。…。…。…。…。…。…。…。…。…………。……長門有希」こんな風に。
    • でも実態はただの BrainF*ck なのでまともなものはできそうにない。
  • neko mimi Fu**
    • ネコミミ!ネコミミモードキス…したくなっちゃった…おにいさま私のしもべーや・く・そ・く・よフルフルフルムーン  キスキス…
    • 1レス内に全命令のリファレンスが入る素敵な言語。
  • その他のものや詳しくはプログラミング言語/Brainfuck参照。
     

Whitespace

  • 従来の言語において、空白に相当する文字(スペース、タブ、言語によっては改行も)は言語における単語の区切りであったが
    この言語においては空白文字が言語の全てとなっている(それ以外の文字列はコメント扱いで無視される)。
    そのため、一見するとプログラムであることすらわからないという珍しい言語である。
     

Grass(グラス)

  • ちょっと草植えときますね型言語。
  • プログラム中で意味を持つ文字が「w」「W」「v」の三種しかないため、ソースコードは草を生やしているようにしか見えない。
    ラムダ計算をベースとした関数型言語で、操作的意味論を使った形式的定義も公開されている。
     

HQ9+

  • Hello worldの出力に特化したプログラム言語。
    プログラマー初心者でも'H'と書くだけで簡単にHello World出力プログラムが作成できる。
     

VIP言語

  • その気になれば、ものの数時間で弾道計算ソフトが作れてしまう最強言語。素人にはお勧め出来ない。
     

Pxem

  • 新世代0バイトプログラミング言語。
  • ファイル名をもコマンドと解釈する仕様により、ファイルサイズ0バイトでのさまざまなプログラミングを可能にする。
  • Hello, world!を出力するプログラムを作るには、Hello, world!.pxeという空のファイルを作るだけである。
     

  • 1文字目が大きくなってるのは「ここで区切りなんだよ」というのを分かりやすくするためにやってるだけなんで、気に入らなかったら消しちゃってください>< -- 分類した人? 2008-01-28 (月) 03:47:56
  • 結構分かりやすいと思うよ>一文字目 -- 2008-01-29 (火) 17:08:40
  • そんなのはCSSでやってください -- 2008-01-29 (火) 18:58:17