gihyo.jp » DEVELOPER STAGE » 連載 » LL Future×gihyo.jp presents 今年もLLのアツい夏がやってきた! » 第6回 古い言語,新しい言語

LL Future×gihyo.jp presents 今年もLLのアツい夏がやってきた!

第6回 古い言語,新しい言語

古い言語の制約

LL Futureで「古い言語,新しい言語」のセッションを担当させていただくことになった竹迫です。

皆さんは初めてBASICを触ったとき,変数代入になぜLETの構文がついていたか疑問に思ったことはないでしょうか?

他の言語処理系でも,初期のPascalの実装ではラベル名に指定できる文字列は数値のみという制限があったりしました。これはなぜでしょうか?

1つの理由はこうしたほうが構文解析の実装が楽になるからです。

今では本当の理由は推測するしかありませんが,当時の計算機資源の制約や(CPUが遅い,メモリが少ない,記憶装置へのアクセスが遅いなど),パーサーの実装技術が発展途上していたこともあり,プログラミング言語の表現が制約されていた時代があったからではないでしょうか。

設定ファイルとしての言語

アプリケーションの動作をカスタマイズするために,設定ファイルを別途用意する,という文化がありました。1つは環境変数によってアプリケーションの動作を切り替えるという方法で,C言語ではgetenvするだけで設定値が読み込めるので,自分で設定ファイルを読み込んでパースする処理が必要ありませんでした。アプリケーション開発者にとってこれは非常に楽なことです。設定ファイルを読み込むためだけにわざわざ自分でパーサーを一から書くのは面倒なことです。

そこで登場してくるのがアプリケーション組み込み用言語です。Emacs Lispが1つそうでしょう。

WindowsではINIファイルやレジストリという機構がOSのAPIとして提供されていましたが,それとは逆にUNIXではそのようなAPIは標準で提供されなかったため,テキスト処理が手軽にできるスクリプト言語処理系が多く誕生したものと思われます。

そして,これらのスクリプト言語で記述されるアプリが増えると,設定ファイルを自分自身の言語で記述できるようになります。ひとつはPerlの古典的なCGIなどでよく見られるスタイルで,設定ファイル自体がPerlのプログラムになっていて,そこに書かれた変数の値に応じてアプリケーションの動作を変えるものです。

こうした言語内DSLが簡単に作れるかどうかが,1つのLLの基準ではないかと思っていたりします。

どこで動く?

さて,世界中のデバイスで一番多く使われているスクリプト言語処理系は一体何でしょうか?

UNIXのシェルでしょうか? それともMS-DOS系のバッチファイルでしょうか?

その1つがECMAScript(JavaScript,ActionScript)ではないかと思うのですが,正確な数字はどうなっているのでしょうか。元々ブラウザに組み込まれることを前提に実装された言語処理系なので,言語仕様が非常にコンパクトでかつ実用的です。最近では内部でVMのバイトコードを実行するような実装も多く,パフォーマンスの問題も徐々に改善されてきたりします。

去年のLL魂のライトニングトークでSHA1をJavaScriptで実装したとき,Cのネイティブコードに比べると約2,000倍の速度差があったという報告がありましたが,これは単純に計算すると最新の4GHzのCPU上で2MHzの仮想実行コードが動いている計算になります。2MHzのクロックというと当時のMSX以下です。実はJavaScriptで実装されたMSXのエミュレータ(jsMSX)も世の中には存在し,ブラウザでMSXが動くようにまでなっています。

※ちなみに余談ですが,映画『ターミネーター』の中で表示されるプログラムはZ80のアセンブリ言語です。遠い未来でもZ80は使われているということなんでしょうね。

ただ,モバイル系の端末ではまだまだCPUパワーが足りないため,JavaScriptよりもFlashLiteのようなコンパイル済みのバイトコードを実行するActionScriptの処理系が日本では注目されています。

Shibuya.abc?

バイトコードといえば,最近注目を集めているのがLLVM。Mac OS Xで標準採用され,OpenGLの実装がLLVM上で動作するようになり一気にメジャーになりました。

ここにきて突然ECMAScript 4の仕様策定作業が中止されたとの発表がありました。ECMAScript 3.1 をベースに標準化が行われる予定になるのですが,ECMAScript 4の一部の仕様を実装してきたTamarinや,ActionScript3.0の未来はどうなるのでしょうか。

ECMAScriptバイトコード処理系でLLVMバイトコードを動かすとどうなるのか?

そこに未来があるのかどうか?

今年のLL Futureでは以下のパネラーの方々をお招きして時間の許す限り徹底討論する予定です。

三度の飯よりもabcが好き!な,Shibuya.abc(ActionScript Byte Code)的なメンバーがさまざまなネタをお届けしたいと思います。お楽しみください。

おまけ:私が番長になったきっかけ

最後に,私とLLイベントの関わりについてお話しします。

LL SaturdayやLL Weekendの参加報告がおもしろかったので,広島に住んでいる自分もこの日は上京してぜひ参加したいと思い,3年前のLLDNの昼の部のチケットを思い切って購入したのが最初です。

しかし楽しみにしていた夜の部のチケットがすでに完売していて購入できなかったがために,予約語プログラミングというネタを思いつき,ライトニングトークに応募しました。このときスタッフの方に審査を通していただき,広島から羽田空港行きの飛行機の中でppencodeのプログラムを作成してLTデビューすることになりました。

以後,LL RingでPerl,Plaggerで2本,LL魂ではライトニングトークの番長を担当させていただき,自分自身もイメージファイトすることになりました。

もしもLLDNの夜の部のチケットが売れ切れにならず普通に買えたとしたら,おそらく今の自分はなかったと断言できます。今年のLL Futureに行こうかどうかまだ迷っている人がいらっしゃいましたら,ぜひ思い切って参加してみてください。

著者プロフィール

竹迫良範(たけさこよしのり)

Shibuya Perl Mongers2代目リーダー。オライリーPerlクックブック第2版の監訳など。

マイクロソフトMVPアワード2008 Developer Security 受賞。第29回U-20プログラミング・コンテスト審査員。セキュリティ&プログラミングキャンプ2008講師。

大学卒業後,独立系ITベンチャーにて大企業向けパッケージソフトの開発に従事し,2005年より50%ルールのサイボウズ・ラボ株式会社に入社。

コメント

  • Pascalのgoto文label

    当時のbit誌で、「goto文の使用を抑制するためにわざとgoto文を不便にしたい。そのために数字限定にした」という事が書いてありました。内容だけを覚えているのですが、ヴィルトの発言だったのか、誰かの推測だったのか・・・・・

    Commented : #1  otn (2008/08/29, 20:55)

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

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

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

2010年版SEO体得講座

本連載では,いまや企業サイトの戦略の1つとして欠かすことのできないSEOについて,最新トレンドからすぐに使えるTipsまでを紹介します。

小型Linuxサーバの最高峰 OpenBlockS 600活用指南

搭載メモリの増加,CPUクロックの向上など,あらゆる面が強化された期待の新モデルOpenBlockS 600。この記事ではOpenBlockS 600の紹介から,活用するためのさまざまなノウハウを紹介していきます。

はじめMath! Javaでコンピュータ数学

プログラミング言語入門者向けに,知っていると役立つ数学的トピックスを紹介します。簡単な演習問題と解説で,即活用できる知識を目指します。

教科書には載っていない ネットワークエンジニアの実践技術

ネットワークエンジニア,インフラエンジニアのトラブル対応には,時には「教科書通りにいかない」テクニックが必要となります。資格試験では得られないこうした実践的な技術について,実例を元に紹介します。

Googleケータイ,世に現る

2008年9月,Googleが中心となって開発されている「Android」を採用した携帯電話「T-Mobile G1」が発表されました。本連載ではT-Mobile G1を中心にGoogleケータイに迫ります。

モバゲーオープンプラットフォームに挑戦!――面白法人カヤック流モバゲーオープンプラットフォーム企画と開発のイロハ

2010年1月にリリースとなったモバゲーオープンプラットフォーム。その制作企業であるカヤックが,アイデアを企画に落とし込み,開発までのノウハウを紹介します。

プロトタイピングツールSketchFlowを用いた,Silverlightアプリ開発

SketchFlowプロトタイプ作成からアプリケーション開発までをExpression Blend 3を使って実践的に解説します。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

最近のコメント