Digital Gadget #104

見たことの無い新しい言語の世界


■ 新しいプログラミング言語

プログラミング言語として良く知られた Java も 誕生から 10年以上経ち、もうすでに老舗の域に入ってきました。 学校や企業研修で 初めて学んだプログラミング言語が Java という人も増えてきました。 最近ではスクリプト言語、特に Ruby on Rails の勢いもあり Ruby の人気 が高まってきたように感じられます。 他にも C言語, C++, C#, Python, Perl, PHP と様々なプログラミング言語が存在し、 用途や目的に使い分ける複数の言語が操れるバイリンガルプログラマも 多いことでしょう。 ここでは、さらに通常のプログラミング言語とは一線を画する 特殊な用途向けプログラミング言語を紹介します。

■ CUDA

http://www.nvidia.com/object/cuda_home.html

CUDA(クーダ) は NVIDIA が提供する GPU(Graphics Processing Unit) 専用のプログラミング言語です。 CUDA の正式名は Compute Unified Device Architecture です。

CUDA は C言語風のプログラミングを行うことで、 CPU+GPUを最大限に活用し 数値計算用途に特化した用途を利用できる環境です。 本来GPUはグラフィックスパフォーマンスの向上や、シェーダー言語による 質感豊かな表現に使われるものでした。 ところが GPUの持つ並列計算パワーに着目した研究者達が、 グラフィクス以外の用途に活用し始めたのです。 GPU を活用した計算分野は GPGPU(General-Purpose computation on GPUs) と呼ばれ、 流体計算や音声データ処理を始めとする 様々な科学技術計算に活用し始められています。

 General-Purpose Computation Using Graphics Hardware   http://www.gpgpu.org/

先日 NVIDIAはハイパフォーマンスコンピューティング専用の Tesla ブランドを発表しました。 発表されたスペックは計算精度は低いながらも 518 G FLOPS です。 一般的な CPU の計算性能を圧倒的に凌駕しています。 CUDAを用いた計算は得意不得意がありますが、 一般的に CPU だけの場合よりも 10倍から 200倍の性能をたたき出します。

CUDA は現在専用の特殊なグラフィックスドライバを必要とするため、 GeFORCE 8000 シリーズ以降のグラフィックス環境でしか動作しません。 CUDAは Windows XP, Linux 環境で動作する環境が提供されています。 CUDA専用のコンパイラは標準のC言語の書式に対応し、 GPU様の中間コードを出力します。 出力された中間コードは、それぞれのグラフィックハードウェアの性能を 最大限に生かした形でグラフィックスドライバに解釈され GPU上で実行されます。

CUDA という語感から思い浮かべるのは Barracuda という肉食性のどう猛な魚です。 アメリカ車やハードディスクにも Barracuda という名前がありましたが、 CUDA も同様にどう猛でパワフルさが感じられる名前です。 現在 CUDA 様に用意されたコードは、ごくごく簡単なサンプルや、 性能評価のためのサンプルばかりです。 じょじょにこれから「どう猛さ」を発揮して欲しいものです。

■ Fortress

http://projectfortress.sun.com/Projects/Community

Fortress(砦) は FORTRAN の後継として 大規模な科学技術計算や、並列計算用に設計されたプログラミング言語です。 現在サン・マイクロシステムズのリサーチグループが提供しています。

Fortress の特徴は、 数学の中で扱われる数式に近い形でプログラミングが記述できること、 並列演算、並列計算を意識した作りになっていることです。 現在は CPU ネイティブな実装は無く、Java VM 上で動作します。 設計方針としては、並列計算の最適化を行うことと、 必要な拡張機能は、基本言語仕様が肥大化しないよう、 ライブラリで提供していくそうです。 Σなどの数式中に使われるギリシャ文字がプログラムの中で使えるのは 不思議な感覚です。 また数式はとてもシンプルに記述でき、 Java では、桁数の多いかけ算を表記するのに x.multiply(y) などとする一方、 Fortress では単に数式っぽく x y と記述するだけです。



   Fortress によるソースコード例

■ D

http://www.digitalmars.com/d/

D言語は C言語の後継として作られている言語です。 現在 Digital Mars 社がコンパイラ、ライブラリ等を提供しています。 また GNU のコンパイラ GCC も D言語に対応しています。 バグの要因となりやすい記述が出来にくく考えられているのが最大の特徴です。 ユニットテストやドキュメンテーションなどの 開発プロセスも考慮されており、後発の言語ならではの充実度です。 C言語の記述と良く似ているので親しみやすく、中規模〜大規模の プログラム開発をターゲットとしています。 Java言語のように GC(Garbage Collector) を標準装備していることも 便利につかえる特徴です。

■ ChucK

http://chuck.cs.princeton.edu/

ChucK は音を記述するためのオーディオプログラミング専用の言語です。 主にライブ演奏で、その場でプログラムを書き換えながら演奏するために 作られています。 プログラム言語で、演奏をしながらその場で シンセサイザーを開発しているといえば、解りやすいでしょうか。 Audicle (http://audicle.cs.princeton.edu/) というビジュアルプログラミング環境を併用すると、 より感覚的にコントロールすることが可能になります。

■ RAPIDMIND (旧Sh)

http://www.rapidmind.net/

RAPIDMIND は以前 Sh と呼ばれていた GPGPUのための専用プログラミング言語です。 CUDAが現在のところ NVIDIAの GPUにしか対応していないのに比べ、 RAPIDMINDは GPUだけでなく、IBM の CELL チップにも対応してます。 将来的にはマルチコア CPUにも対応予定だそうです。

■ Processing

http://processing.org/

Processing はアート作品向けの平易なプログラミング言語です。 元はアート教育向けに作られた言語 DBN(Design By Numbers) (http://dbn.media.mit.edu/) が元となっています。 Processingで開発したビジュアルは平易に Java Appletに変換し,Web公開が可能です. 主にデザイン分野やアート分野の教育目的に作られたため、 各種機能が意 図的に制限されています。 コンピュータプログラミングを専門としない学生のための道具として 考えられています。 アート系における描くことや印刷するといった概念を うまくプログラミングに反映しているものです。

        ********

■ 未来のプログラミング言語

その他、日本発の学校教育用プログラミング言語ドリトル (http://dolittle.eplang.jp/) や、 日本語でプログラミングできる  ひまわり(http://kujirahand.com/himawari/) なでしこ(http://nadesi.com/) といった変わり種のプログラミング言語も存在します。

最近では従来コンピュータでは扱うことが難しかった 数学的概念 interval-arithmetic(区間計算)も コンパイラで扱えるようになってきました。 従来は想定以上の計算機パワーを必要としたため、 実用的ではなかった数学的概念も、 少しづつプログラミングの世界に展開してきているのです。

最近の携帯電話の CPU性能は、 10年ほど前の一般的なパソコンの性能を優に超えています。 将来は携帯電話だけでプログラミングできる言語がでてくるかもしれません。 例えば顔文字を駆使し、数字、矢印を使い、 ソースコードを上下左右にプログラミングしていくのかもしれません。 予測辞書と顔文字でプログラミングするのも現代的かもしれませんね。 何十年後には、SEやプログラマが必要の無い、 進化したコンピュータが登場しているのでしょうか? たとえどんな形態かは解りませんが、遠い将来も 人間がモノ作りに関わり続けていることだけは確かなことでしょう。 [SD]



■ Digital Gadget This Month

■ 無線 USB / Belkin / 129.99ドル

http://www.belkin.com/pressroom/releases/uploads/05_15_07NetworkUSBHub.html

Belkin Network USB Hub F5L009はピアノ調に輝く黒色も美しい ネットワーク USB ハブです。 IEEE 802.11n draft1.0 に対応した高速無線 LAN に対応しています。 通常長いケーブルで延長するしかなかった USB 接続デバイスを 無線 LAN 経由でワイヤレスで扱えるのが最大の特徴です。 5ポート用意されているUSBポートに接続すると、 まるでパソコンの USBポートに直接接続しているのかのように見せかけ、 ローカルデバイスの様に扱える機能を有します。 また複数のパソコンで USBに接続されたプリンタなどを 共有できるのも特徴です。

■ USB ポート増設メモリ / RiTEK Yego

http://www.ritek.com/p2-pro4-ez-uniform.asp

ノートパソコンなど USBポートが少ない場合、すぐにポートが埋まってしまい 不便な場合も多いことでしょう。 RiTEK Yego は USBメモリの機能を持ちつつ、 プラス2ポートの USBポートが増設可能なデバイスです。 カラフルな 3色で、 128MB, 256MB, 512MB , 1GB, 2GB, 4GB の製品が用意されています。 Y字型の部分は、アクセスステイタスの LED が点灯します。 2GB版で 33ドル、4GB版で 45ドルだそうです。


Copyright © 1998-2008 by Yukio Andoh 安藤幸央 andoh@digitalgadget.jp