Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
もっと楽しむ! プログラミング言語 「豆」談義:第1回 古くて新しい関数型言語「Lisp」|gihyo.jp
[go: Go Back, main page]

gihyo.jp » DEVELOPER STAGE » 連載 » もっと楽しむ! プログラミング言語 「豆」談義 » 第1回 古くて新しい関数型言語「Lisp」

もっと楽しむ! プログラミング言語 「豆」談義

第1回 古くて新しい関数型言語「Lisp」

次のページへ

はじめに「僕たちは今……」

人間の思考に,ことば――すなわち言語は欠かせないものです。考えごとをするときに,ことばを使っていない人はいないでしょう。

さて,僕達は今,コンピュータを身近に感じる世界にいます。

コンピュータというのは,ハードウェアとソフトウェアに大きく分けることができますが,ソフトウェアはさまざまなプログラミング言語を用いて書かれたプログラムで構成されています。

プログラムの重要さは,コンピュータのハードウェアを変更しなくても,中のプログラムを変えることによってコンピュータの用途を「計算」「文書作成」「ゲーム」「勤怠管理」「ショッピング」と変えることができることからもわかります。つまり,皆さんが「コンピュータって便利だね」と,言うときに指すコンピュータとは,プログラミング言語で書かれたプログラムのことなのです。

そのプログラミングの始まりは,チャールズ・バベッジが作成した解析機関用に書かれたもので,そのプログラムを書いたのはバベッジの助手であったエイダ・ラブレス女史だという説があります(最近ではエイダ女史ではなく,バベッジが書いたというのが定説だそうです)。

バベッジの解析機関から始まったプログラミング言語は,今,僕がネットで確認しただけでも200以上の種類があるわけですが,皆さんは,その中でどのくらいのプログラミング言語をご存じでしょうか。

たとえば,プログラミング言語の中には,皆さんも知っているif文だとかfor文のような演算子が存在しないものも多くあります。でも,if文がなかったら「iは3より大きいか」という分岐はどうやって作るのでしょう。また,「X=Y(XはYと等しい)」「Y=Z」という情報から「X=Z」という推論を導き出すのが得意だというプログラミング言語もあります。推論が得意なんて,一体どういう分野で使われるプログラムを作るものなのでしょうか。

プログラミング言語の生い立ちには,プログラム言語を開発する人やその時代などいくつもの背景が存在します。計算を素早く行いたい,人工知能を作りたい,子供でも書けるようにわかりやすくしたい,インタラクティブなメディアを作るためなどなど――そうした自分の知らないプログラミング言語を,ちょっとだけでも知ることは,子供の頃,北京語やドイツ語や日本と異なることばの「こんにちわ」を覚えるのが面白かったのと同じで楽しいのではないでしょうか。

この連載は,そんな子供の頃の知識欲を満足させる遊びを,プログラミング言語で再現してみようと思い立ったところが出発点です。ですから,いろんなプログラミング言語を題材に面白い話を書いていければいいなぁ――と思っています。

さあ,古くて新しいLISPを体験してみませんか?

一番はじめに紹介するプログラミング言語はLISPです。なぜLISPが最初かと言うと,今回紹介していく予定のプログラミング言語のなかで一番古いからです。

LISPは連載を予定している言語を含めた数あるプログラミング言語の中でも昔からある部類になります。COBOLやFORTRANと同時代からある由緒正しいプログラミング言語なのです。読者の中には,「なんだ今さら古い言語かよ」と思う方もいらっしゃるかもしれませんが(私も最初はそうでしたが……),古いからと言って見くびってはいけません。LISPには,他の言語に参考にされる技術やアイディア,他の言語にはないパラダイムなど,今でも画期的な技術要素が満載です。LISPを説明する上では,その出自から数学理論など難しい単語がたくさん出てきますが,今回はそのような難しい話は抜きに,普段Javaや.Netなどのプログラミングに飽きた方に,こんな言語が昔から合ったのかと思っていただけるようにLISPの紹介をしてみたいと思います。

LISPの誕生

LISPは1958年に考案されました。これは先ほども説明しましたが,現在使われている言語の中ではFORTRANについで古いプログラミング言語です。当初は数学理論のラムダ計算――そんな数学モデルがある程度に思ってください――に用いる言語として使われていましたが,その数学理論を背景とした表現力と柔軟性から人工知能の分野で盛んに使われるようになりました。そして普及して使われるようになるとLISPの実装の容易性から,さまざまなLISPの方言(LISPの一種という意味)が生まれることになりました。

今現在,LISPと一言で言っても,標準化された正統派のCommon LISPや,Emacs LISP,Interlisp,schemeなどたくさんのLISPが出てきます。それぞれの方言は,特徴的な機能が初期のLISPにプラスアルファされて発展してきました。その中でもInterlispは,現在,Java界隈で注目されているAOPの機能が実装されていたり,さらに,Interlispの開発環境であるInterlisp-Dでは,今のEclipseなどの統合開発環境に相当する,対話型開発ツールやデバッカなどが実現されていました。ちなみにそれは1980年代半ばの頃です。その当時の一般的な業務系システムの開発環境が,メインフレームに文字ベースのTSS端末(※1)だったことを考えると,相当先進的だったことが窺えます。

余談ですが,弊社には当時からLISPをバリバリ使っていたと言う猛者が何人かいます。当然,そのような人も時代の波によりJavaの開発をするわけですが,EclipseやAOP,DIなど新しめの技術を見ても,「そんなの昔からあったよ!」と,何を今さら感を込めて言うのですが,LISPの当時の時代背景を見直すと,昔からあった技術が一般化されてきているだけなのだとあらためて考えさせられることがあります。

※1 TSS
Time Sharing Systemの略

次のページへ

著者プロフィール

チーム北海道

居酒屋北海道をこよなく愛するエンジニア集団(伊藤清人,江川崇,荻原利雄,長谷川裕一,吉野雅人 以上株式会社豆蔵所属)。

URLhttp://www.mamezou.com/

コメント

コメントの記入

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

その他の連載

Java Expert+gihyo.jp Presents Sun Microsystems, Inc.スペシャルインタビュー集

サン・マイクロシステムズ株式会社およびSun Microsystems, Inc.の協力のもと,最新Java技術情報誌『Java Expert』とgihyo.jpの読者に向けた独占インタビューを実施しました。

初めてのデータベース設計

Webアプリケーションを作るとき,最も重要なのがデータベースの設計です。データベース設計に問題があると,システム全体の振る舞いに影響します。この特集では初めての方に向けて,データベース設計の基礎知識をしっかりお届けします。

[動画で解説]和田卓人の“テスト駆動開発”講座

テスト駆動開発(TDD)についての,動画による講義形式の連載です。テスト駆動開発を知るために,経験者の話を聞く,という点からみなさんのお役に立てればと考えています。

Eclipseプラグインを作ってみよう!

Eclipseには,ユーザー独自のプラグインを開発するための環境として,プラグイン開発環境(PDE)が用意されています。この連載では,Eclipse Formsを使った設定ファイルエディターの開発を通じて,Eclipseプラグイン開発手法を紹介していきます。

そろそろLDAPにしてみないか?

ユーザ管理のあるところLDAPあり! 管理者のみなさん,そろそろLDAPにしてみませんか? 単なるアドレス帳扱いじゃもったいない。ちゃんと使えば,面倒だったリソースの追加や変更がウソのように簡単になりますよ。

オープンソースなシステム自動管理ツール Puppet

UNIX系OSのシステム管理を自動で行うためのツールPuppetについて,その概要から具体的なシステム管理への適用まで,実際の現場で利用するために必要な情報をお届けします。

prototype.jsを読み解く

今や古典となりつつあるPrototypeライブラリ。本特集では,単なる使い方ではなく内部の実装に焦点をあて,丁寧に解説していきます。

ColdFusion-開発効率を求められる今だから知りたい高性能Webアプリケーションサーバー

2007年9月21日に最新版ColdFusion 8日本語版がアドビシステムズ株式会社よりリリースされました。この連載では,なぜColdFusionが長きに渡ってWeb開発者から支持を集めてきたのか,その魅力に迫ります。

連載一覧

おすすめムック

  • Java Expert #02

    Java Expert #02

    最先端Java技術情報誌の最新号がついに登場!第2弾となる今回は,前号に引き続きTeedaをまるごと解説します。加えて,2007年のJava業界を席巻した「JRuby」,そして来年...

  • ソフトウェア・テスト PRESS Vol.5

    ソフトウェア・テスト PRESS Vol.5

    特集1は「開発プロジェクトを成功に導くための[入門]テスト計画の立て方,書き方,進め方」。成功に導くためのテスト計画を立案し実行するために求められる「戦略」「...

おすすめムック一覧

おすすめ書籍

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE

書籍記事一覧

  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • エンジニアマインド
  • 組込みプレス

最近のコメント