« そろそろ復活しようかと | トップページ | EBt lite 今日の開発状況 »

2006/09/12

マルチスレッド指向言語が欲しいなぁ

そんなことを考えている昨今。これからの時代、言語もマルチスレッド意識したものにならないといかんのですよ、やっぱり。そりゃあ Java とかはスレッドサポートしているけど、あんなに構えてこれからスレッドプログラミングするぜ!っていうのはなぁ。そう思いませんか、皆さん。

で、個人的にはマルチスレッドで動くということは、今ある関数呼び出しみたいなことをしていては駄目で、関数の呼び出し部分と結果の獲得部分が分離されないといけないのですよ、きっと。だから、今ある手続き型の言語から一歩踏み込んだ形の言語が必要なんですよ。

たとえば(文法がどうよとかいうのは無視。イメージを伝えたいだけなので)…

int answer[num];
for ( int a = 0 ; a < num ; a ++ ){
answer[a] = do_something( a );
}

っていうのは

int answer[num];
int id[num]; // でも int は嫌だなぁ。
for ( int a = 0 ; a < num ; a ++ ){
// 一見関数呼び出しだけど実はスレッド起動
id[a] = start_do_something( a );
}
for ( int a = 0 ; a < num ; a ++ ){
// スレッドの実行結果を取り込む。必要だったら戻り値でスレッドの稼働状態を獲得
thread_status = result_do_something( id[a], &answer[a] );
}

って形に分離されているべきであり、非同期で動けるところは実際に非同期に動くかどうかは別として、いつでも非同期動作可能な形で記述されるべきだと思うわけですよ。んで、スレッド分岐させたくなければ、関数の宣言でこれはスレッド分岐しないよーと定義するだけでいいわけだし。

ということを思う昨今。自分で言語作る元気はないのでどこかで作ってくれないかなぁ。というか、こういうアプローチは間違っているのだろうか。個人的にはこれから先のトレンドはマルチスレッドというか非同期動作だと思っているんだけどなぁ。

|

« そろそろ復活しようかと | トップページ | EBt lite 今日の開発状況 »

コメント

初めて書き込みさせて頂きます、h小林です;-)
# 頭痛の折にはご心配をおかけしました(_o_) もう大丈夫です。

非同期指向の件、良い着眼だと思います。現状では
スクリプト系で、上記のような 並列実行→ join
の非同期性を楽に書けるよう構文レベルで支援しているものは
無さそうな気がします。

構文以外だと、 Erlang の非同期メッセージを使った並列処理は
(並列処理の割に、いやなバグが入り込みにくくて)評判が
良いみたいです。(完全に上記と書き方を変えなきゃ駄目ですが)

おいらの言語でも、是非この辺りはチャレンジしたいと
考えております。んではでは〜♪

投稿: h小林@ぶりぶりっと | 2006/09/13 20:53

どうもです~。体調がよくなったと聞いて安心しました!

Erlang というのがあるんですね~。というわけで、ちょっと調べてみました。おぉ、書きやすそう。んで、やっぱりスレッド(プロセス)の起動とメッセージの受け渡しは分離しているんですね。分離している方がいいのかなぁ。それはそうとかなり癖がありそうな言語ですね ^^;

なんにせよ、そういう言語が出てきているということはやっぱり非同期指向(というかどうかはわからんのですが^^;)という方向性は正しいんですねー。まだ感覚は鈍っていないんだー。ちょっと安心。

おもしろい言語ができたら私にもさわらせてくださいねー。

投稿: おかだ | 2006/09/13 22:06

> 方向性は正しいんですねー

はい、そう思いますよ〜
そう言えば、言語じゃなくて設計パターンですが、
Google の MapReduce も正にこのタイプの並列分散処理(^^;

やっぱり、大規模データ計算系の、速度を求める方向の
並列化の基本形って事でしょうね
その場合、確かに起動と処理内容受渡しは一緒に書けた方が
素直ってことで、この部分についてもおかださんが感じている
事は正しいと思います。

Erlang の場合は、処理サーバーを予め起動しておき、
そこに処理内容を流し込む、という設計パターンに合わせてあると
思います。通信屋さんの現場から出てきた言語だからでしょう。

> おもしろい言語ができたら…

そりゃもぅ、是非お願いします〜(>_<)

投稿: h小林@ぶりぶりっと | 2006/09/13 23:55

よっしゃぁ、まだ勘は鈍ってない。まだ現役でいける!私の場合、体調崩していてここ5年ほどアンテナ張っていなかったので浦島太郎状態なのですよ~。もう最新の動向はあきらめるしかないかなーとか弱気だったりしたのですが、感覚が鈍ってなければOK。これであと5年は戦えます :-)

しばらくは私は Zaurus の EBt で遊んでいると思いますけど、個人的には EBt をネットワークと連結させて色々遊びたい!という野望があるんですよ。すべてのメモがリンクで表現されているんだったらリンク先がネットワークのどこにあってもいっしょだよねーっていう発想。すでに EBt ではないんですが、他にも、サーバー間のデータの伝搬とか、色々。ずーっと考えているんですよ。P2P的なところもあれば分散システム的なところもあって面白い。思考ゲームで十分すぎるほど楽しんでいたりするのですが ^^; 楽しんでいるうちに世間において行かれてしまいそうだ…その前に何か作らないといかんですね。時間が欲しぃ~。

言語の方は私はいつでも Ready to GO! ですよ~。私はアプリ屋さんなので言語作ったりとかは苦しいので、その辺のスキルを持っている小林さんがうらやましいです~

投稿: おかだ | 2006/09/14 00:45

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/50935/11872850

この記事へのトラックバック一覧です: マルチスレッド指向言語が欲しいなぁ:

« そろそろ復活しようかと | トップページ | EBt lite 今日の開発状況 »