人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ポール・グレアムの「言語の設計に関する5つの問題」を翻訳中なのですが、
("Five Questions about Language Design" http://www.paulgraham.com/langdes.html)
コンピュータ言語に関する話がわからないので、プログラミングに詳しい方に質問です。

[1] 「continuations」って何ですか? 次のような文脈で出てきます。
「それ以外でサーバ・ベースのソフトウェアで有用だとわかる可能性があるのは、驚くなかれ、continuationsだ」
「ウェブ・ベースのソフトではcontinuation-passing styleのようなものを使うことができる」

[2] [1]に関連しますが、正直、この一文はぜんぜんわかりません。お助けを。
In Web-based software you can use something like continuation-passing style to get the effect of subroutines in the inherently stateless world of a Web session.

[3] first class functionsとkeyword parameterってどう訳せばいいですか?
「どれくらい可能性があるのかわからないが、私が個人的にぜひしたいことの1つは、first class functions、再帰、keyword parameterといった、大きな特徴となる新しい抽象的な概念の発見だ」

回答はいずれか1つでOKです。よろしくお願いいたします。

●質問者: lionfan
●カテゴリ:コンピュータ 学習・教育
✍キーワード: Class FIVE keyword software Web
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●35ポイント

[1]continuation-passing styleは「継続渡しスタイル」といって再帰の手法の一つです。

http://torus.jp/memo/x200605/tailcall.rd.html

◎質問者からの返答

SALINGER様、ありがとうございます!!


2 ● くまっぷす
●120ポイント ベストアンサー

[1] 「continuations」って何ですか? 次のような文脈で出てきます。

うーん、これはちょっと訳しても一般の人(C言語あたりのプログラム経験があるひとを含む)が理解できるかどうか微妙ですね。

continuationは「継続」とも訳されますがカタカナでコンティニュエーションまたは英語のままでcontinuationと使われることが多いように思います(古手のひとはまずそのまま使う。一般に普及していない概念なんでしょうね)。

http://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A

Wikipadiaにもありますけど、こう書かれると私もちんぷんかんぷん(笑)。サブルーチンだとあるプログラムの流れのごく一部しか保存しませんが、コンティニュエーションを使った場合は全部を保存するという違いがあります。コンティニュエーションを使う一番わかりやすい例はコルーチンです。

http://madeira.cc.hokudai.ac.jp/RD/yamamoto/Essay/11.html

実際によく使われる例は

http://d.hatena.ne.jp/kohtani/20061227/p1

複数のスレッドがあって片方を止めて(状態を保存したまま)他のスレッドの処理に移り、処理が終わったら元に戻るような場合です。

プログラミング言語でいうとCだとsetjmp()/longjmp()が(一応)continuationの例と言えますし、コンティニュエーションが明示的な売り物になっている言語としてはLispの一種(といっていいのかな)であるSchemeなどがあります。

なのでここはそういうことを踏まえて英語のままで書くことをお勧めします。

[2] [1]に関連しますが、正直、この一文はぜんぜんわかりません。お助けを。

In Web-based software you can use something like continuation-passing style to get the effect of subroutines in the inherently stateless world of a Web session.

「Webベースのソフトウェアではcontinuation-passingのような形式を使うことで本来的にステートレスな世界であるWebセッションにサブルーチンと同じ効果を得ることができる。」

Webセッションはクッキーや大域変数でも使わない限り1回1回アクセスするたびに前の状態が保存されないため、内部的な状態の変化を意識しないと書けないアプリケーションロジックを作るのが大変だったのですが、continuationを使うことで楽になるよ ということでしょう。

https://www.kahua.org/cgi-bin/kahua.fcgi/kahua-web/show/info/Abo...

みたいなコンティニュエーションが可能なフレームワークがいくつかあるようです。


[3] first class functionsとkeyword parameterってどう訳せばいいですか?

「どれくらい可能性があるのかわからないが、私が個人的にぜひしたいことの1つは、first class functions、再帰、keyword parameterといった、大きな特徴となる新しい抽象的な概念の発見だ」

first class functions

http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/mltext/...

http://sky.zero.ad.jp/~zaa54437/programming/concepts/index3.htm

関数型言語などで扱われる用語で訳はそのままfirst class functionsでも第一級関数でもよさげ。

keyword parameter

http://math-sci.hp.infoseek.co.jp/DylanInfo/Functions/ParameterL...

これの真ん中あたりにありますが、普通プログラミング言語で関数に値を渡すときは順番が固定されますが、キーワードパラメータの場合は(Dylanの場合)キーワード:値 という形で渡すことが可能になります。Dylanの場合はキーワードを指定しない場合は関数宣言側でのデフォルト値が使われます。

訳はキーワードパラメータ、でしょうね。

そういえば「各言語が解決するもの」に出てきた言語名がいろいろ…そういえばあれにはHaskellがいなかったような…

◎質問者からの返答

Kumappus様、いつもありがとうございます。とても丁寧な解説にもかかわらず、いまだにcontinuationがわかりませんでした(泣)

やっぱポインタと構造体で挫折した人が翻訳しちゃいけませんよねえ?

さてさて、グレアムのページに "Learning from Founders"が載り、Yasushi Aokiさんによる翻訳がすでに出ているようです。

「創業者に学ぶ」by Yasushi Aoki

http://www.aoky.net/articles/paul_graham/foundersatwork.htm

また同じくYasushi Aokiさんの訳として、

"How to Start a Startup"

http://www.paulgraham.com/start.html

を翻訳した「スタートアップの始め方」

http://www.aoky.net/articles/paul_graham/start.htm

がありました。超うれしいです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ