[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 23:17 / Filesize : 368 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プロトタイプベース・オブジェクト指向



1 名前:デフォルトの名無しさん [03/12/08 21:30]
オブジェクトを複製または継承によって生成を行う言語,
プロトタイプベース・オブジェクト指向言語について語りましょうよ.

関連リンク >>2


528 名前:デフォルトの名無しさん mailto:sage [04/04/03 19:38]
>>525-526
なるほど、そうですね。

>それを定義できればいいんだから。

までは考えてませんでした。

>自分を捜して

というのがあれば自分的には嬉しいです。

Scheme みたいに、シンボルに束縛されているのが値か手続きか区別しない(
評価する時に S 式の頭にあれば手続きと看做される)ようなモデルがイイですね。
メソッドテーブルはクラスに属し、変数テーブルはインスタンスに属するという
のは実装上の都合ですよね。これは一貫性に欠けると思います。特にメソッドが
ファーストクラスなら、尚更。


529 名前:デフォルトの名無しさん mailto:sage [04/04/03 20:04]
>メソッドテーブルはクラスに属し、変数テーブルはインスタンスに属するという
>のは実装上の都合ですよね。
実装って言うか、それがクラス、なのかな?
うーん、クラスってなんだろ。

欲しいのは、
自分を捜して、なければ自分のクラスを探して、なければクラスの親から捜す、
っていう感じ?
しらんけど、Rubyってこんなんじゃない?

530 名前:デフォルトの名無しさん mailto:sage [04/04/03 20:17]
消えたログの続きが読みたい・・・。
>>509>>506 の続きになるのかな。

531 名前:デフォルトの名無しさん mailto:sage [04/04/04 00:57]
>>529
メソッドに話を限れば、クラスは、オブジェクトにとって

・原則として変更が許されない
・無条件移譲先

ですね。逆に言えば、プロトタイプベースのオブジェクトにこのような
制約を課すことで、オーソドックスなクラスベースのオブジェクトが
できあがるわけです。縛りを緩くすれば、プロトタイプベースの要素を
盛り込むことができます。

532 名前:デフォルトの名無しさん mailto:sage [04/04/04 01:22]
>>531
さらに、自分が委ねられたメソッド起動リクエストについては、無条件委譲先
ではなく、あらかじめ別に用意した移譲先に委譲する…という縛りを設ければ
より完全にクラスベースの振る舞いをさせることができそうです。

たとえば、Smalltalk のクラスは(インスタンス)メソッドを持っていますが、
それらはインスタンスから委譲された場合のみ起動でき、自分で起動する
ことはできません。これは先の無条件委譲のしばりが効いていると考えるとうまく
説明できます。また、インスタンスから委譲されたが自分は持っていない
メソッドについては、ここで述べた「自らがレシーバでないときは、無条件
移譲先に委譲できない」という縛りから、二つある委譲先スロットのうち、
無条件移譲先には委譲できず、もう一方、つまりスーパークラスへ委譲せざるを
得ない、というふうに解釈すればよいわけです。

533 名前:デフォルトの名無しさん mailto:sage [04/04/04 01:28]
>>532
このようなメソッドディパッチの観点から言うと、CLOS はそもそも
メソッドがオブジェクトに属しておらず、クラスベースでもプロトタイプ
ベースでもないので、ちょっと脇によけておいた方がよさそうですね。

534 名前:デフォルトの名無しさん mailto:sage [04/04/04 01:39]
じゃ、クラスベースはどんな制限をつけるとプロタイプベースになるの?

535 名前:デフォルトの名無しさん mailto:sage [04/04/04 03:08]
>>534
クラスのインスタンスが常にひとつであるような制約を課すことで(見かけ上の)
プロトタイプベース・オブジェクトを実現できます。

たとえば、Smalltalk のようにクラス自身もオブジェクトで、かつ、メタクラスの
シングルトンであることが保証されている言語なら(非クラスの)インスタンスを
使わず、クラスを使うことでそのままプロトタイプベースプログラミングが(見かけ上)
可能です。

インスタンスに直接メソッドをもたせるような機構にしなければならないのならば、
制約を課すだけでは駄目で、薄いながらも何かしらレイヤーを書いてやる必要が
あるでしょう。

536 名前:デフォルトの名無しさん mailto:sage [04/04/04 05:37]
>>528
> Scheme みたいに、シンボルに束縛されているのが値か手続きか区別しない(
> 評価する時に S 式の頭にあれば手続きと看做される)ようなモデルがイイですね。

スレ違いだが、それはどうだろうね。
変数名とメソッド名への制約が増えるから、俺は嫌いだね。




537 名前:デフォルトの名無しさん mailto:sage [04/04/05 16:15]
えーと、「出来ます」ってだけだと、そりゃある程度強力な言語ならあちてい何でもできるわけで、
インスタンスベースのスロットの定義等について、その機構をサポートする簡易な文法があって、
便利に利用できるってことが重要なんじゃない?

例えば、プロトタイプ言語で
human = [ kind: #human, bark() { print("I'm human");} ];
anAho = [ _proto: human, iq: 100, bark() : { print("My name is aho");} ];
とか2行でかけるものを、何行も文を連ねて書いて「出来ます」ってのはなんか違うっていうか・・・


538 名前:デフォルトの名無しさん mailto:sage [04/04/06 02:08]
>>537
簡単なオブジェクトを簡単に記述できるというのは、
スクリプト言語ならば重要な問題かもしれんが、
環境がベースになっている言語ではあまり本質ではないね。
つまり、スクリプト言語に使うのならメソッドを2,3定義するだけでいいものが多いから
1行や2行で書けるかどうかが問題になるが、もっと環境を使ってライブラリ蓄積
していくことを想定した言語では、そういった1行コードは問題ではない。

あと、Modula-3のopaque typeのように一見煩雑に見えるけど
言語機能としてはそれなりに洗練された結果というものもある。

539 名前:デフォルトの名無しさん mailto:sage [04/04/06 06:41]
>>537

流行ってないんでしようがないのだけれども、こういうのはある意味典型的な
プロトタイプ言語のコードなわけで、なんてのかな、>>535の前半のような発想よりは
むしろ↑の方で出てきたクロージャでインスタンスを実現するものの方が指向が
近しいような気がする、というか。。

>>536
>スレ違いだが、それはどうだろうね。
たぶん殆どのプロトタイプ言語でその区別は行われていないと思います。
好き嫌いはともかく。

540 名前:デフォルトの名無しさん mailto:sage [04/04/06 07:23]
>>537-539
あのー、いつの間にモデルの話からリテラル表現の話に飛んでいったのでしょうか?
あと、当然ながら処理系の設計の話もまた別の話だ罠。

541 名前:デフォルトの名無しさん mailto:sage [04/04/07 13:17]
モデルの話は結論?まで逝ったからいいでしょう。>>537-539は解ってなさそうだけど。
ところで、POOとUMLの関係ってどうなん?

542 名前:デフォルトの名無しさん mailto:sage [04/04/07 14:26]
>>532
> さらに、自分が委ねられたメソッド起動リクエストについては、無条件委譲先
> ではなく、あらかじめ別に用意した移譲先に委譲する…という縛りを設ければ
> より完全にクラスベースの振る舞いをさせることができそうです。

それだと、メタ方向の委譲とスーパー方向の委譲が混ざらないか?


543 名前:!532 mailto:sage [04/04/08 01:10]
>>542
メタ方向ってインスタンス←クラス←メタクラスの関係の事?
スーパー方向はインスタンス←クラス←スーパークラスだよね。

>>532
で、>>532 が言ってるのは、foo.bar() で foo のクラス Foo がメソッド bar() を
持っていない時、クラス Foo は(Foo 自身のクラスである) MetaFoo に問い
合わせずに、別に用意されたクラス SuperFoo に問い合わせに行くようにする。
MetaFoo に行くか SuperFoo に行くかは、自分がレシーバかどうかで判断する。

・自分がレシーバの時は自分のクラスに問い合わせる(自分がクラスならメタクラス
 に問い合わせる ーー そんなケースあるのかな?)
・自分がレシーバじゃない時はスーパークラスに問い合わせる

であってます?

自分がレシーバじゃないってどう判断するのかな?

プロトタイプチェーンが分かっていないので、変な事を言っていたら済みません。

544 名前:デフォルトの名無しさん mailto:sage [04/04/08 02:20]
処理系の実装が複数あって、仕様がある程度きっちり決まっているプロトタイプベース
言語って JavaScript 以外にあります?

545 名前:デフォルトの名無しさん mailto:sage [04/04/08 08:33]
>>543
そういう制御をしようとしたら処理系自体に手を入れないと話にならんでしょ

546 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:25]
Smalltalk の SomeClass allInstances do: [foo_proc] みたいなイメージで、
あるプロトタイプを共有しているオブジェクト全てにメッセージを送信する
機能を持っているプロトタイプベース言語ってありますか?



547 名前:デフォルトの名無しさん mailto:sage [04/04/10 22:54]
>>546
細かいようですが、SomeClass allInstances do: [:inst | inst somethingToDo] ですね。

で、本題は SomeClass allInstances みたいなものがあるか?
ということでよろしいですか? それなら元祖的存在の SELF にすでに
browse childrenOf: obj
というのがあります。プロトタイプスロットに obj を束縛している
全オブジェクトをリスト(a vector) で返します。

548 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:24]
>>547
どうもありがとうございます。

オブジェクト生成する毎に辞書に登録してるのかしらん。
プロトタイプベースの言語は個々のオブジェクトは野放し状態だと
思ってましたが、ある程度の管理はされているんですね。

549 名前:デフォルトの名無しさん mailto:sage [04/04/12 02:43]
>>548
ん〜、でも、Smalltalk においても #allBehaviorsDo: なんかは本来はオブジェクト全部に
問い合わせたりするのがスジだったりするので(高速化のための端折っていますが)
クラスベース、インスタンスベースに限らず、全オブジェクトがオブジェクトメモリ内にあるか、
さらに、それらにアクセスする手段があるか否かってところで、allなんたらな機能が存在しうる
かどうかが決まってしまうような気もします。

まあ、純粋なオブジェクト指向(そんなものがあればの話ですが…(^_^;))を論ずるとき、
実装において、高速化や最適化がからむ部分は解釈が難しいですね。たとえば、
消えてしまったログの object-oriented pointer で表現されるオブジェクトには“状態”
はあるかないか…なんて話とかもそのたぐいだと思います。

550 名前:デフォルトの名無しさん mailto:sage [04/04/12 03:15]
>>549
> まあ、純粋なオブジェクト指向(そんなものがあればの話ですが…(^_^;))を論ずるとき、
> 実装において、高速化や最適化がからむ部分は解釈が難しいですね。たとえば、
> 消えてしまったログの object-oriented pointer で表現されるオブジェクトには“状態”
> はあるかないか…なんて話とかもそのたぐいだと思います。

まったくです。正確には、オブジェクトの定義に「状態」は本質かどうか、ですね。

私としては、参照透明なオブジェクト世界が可能である以上は
「状態」は本質ではないと思うのですがね。
オブジェクトを「状態」と「機能」で定義しようという考え方というのは
ノイマン型計算機モデルをそのまま小さくして「オブジェクト」にしているんじゃないか
と思います。

551 名前:デフォルトの名無しさん mailto:sage [04/04/15 00:40]
参照透明性とは直接関係ないけど、関数型言語の返り値を使って演算していくスタイルは
結構好き。
オブジェクト指向言語は一時変数を作りまくるというイメージがあります。Smalltalk とか、
文法的には返り値を使うスタイルでも全然問題無さそうなのになぁ。

Lisp と Smalltalk を足して2で割った様な言語が欲しい。Self がそうかと思ったけど、
どうなんでしょう?

552 名前:デフォルトの名無しさん mailto:sage [04/04/15 00:45]
>>551 OCamlは?

553 名前:デフォルトの名無しさん mailto:sage [04/04/15 00:53]
>>552
dynamic binding な言語が好きなもので。すいません。

554 名前:551 mailto:sage [04/04/19 04:21]
Slate ハケーン!

slate.tunes.org/

以前このメールを見た時は、サイトに繋がらなかったのに。

ttp://www.sra.co.jp/smalltalk/SML/archives/2002-October/005955.html

555 名前:デフォルトの名無しさん mailto:sage [04/04/19 12:27]

C++ の operator() および、 boost::function などの汎用関数オブジェクトは、
型にとらわれない柔軟な仕組みだと思う。C++ は静的でありながら、工夫次第で
動的拡張も可能なモンスター言語だとおもう。

myObject.Connect( "Proc", MyFunction ); // MyFunction を スロットにセット
( myObject->*"Proc" )( 24 ); // MyFunction 呼び出し

とかも出来る。しないけど。

556 名前:デフォルトの名無しさん mailto:sage [04/04/19 18:54]
言語は色々勉強した方がいいよ。




557 名前:デフォルトの名無しさん mailto:sage [04/04/19 19:15]
Delphiのカスタムバリアント(ボソ

558 名前:デフォルトの名無しさん mailto:sage [04/05/05 10:41]
Self 4.2.1 がリリースされていますね。

ttp://research.sun.com/self/release_4.2/release.html

559 名前:1 mailto:sage [04/05/21 21:31]
hosyu

560 名前:デフォルトの名無しさん [04/06/02 18:37]
どうした?
おまえら。

561 名前:デフォルトの名無しさん mailto:sage [04/06/05 00:19]
selfってWindowsかLinuxじゃ使えないの?

562 名前:デフォルトの名無しさん mailto:sage [04/06/05 22:20]
>>561
一応、あるにはあるのですが…。古いので動かすのは難かしいかも。

ttp://www.gliebe.de/self/

563 名前:デフォルトの名無しさん mailto:sage [04/06/09 18:22]
今使うならJavaScript一択でしょ。

564 名前:デフォルトの名無しさん [04/07/03 01:38]
プロトタイプベース晒しage

565 名前:デフォルトの名無しさん mailto:sage [04/07/05 03:52]
>>563
一応IoやSmalltalk(Squeak)でもいいんじゃない?

566 名前:デフォルトの名無しさん mailto:sage [04/07/06 14:58]
あれ、だれもProthonに触れないの?
海外で結構人気らしい。
www.prothon.org/index.html



567 名前:デフォルトの名無しさん mailto:sage [04/07/15 11:51]
>>565
こら! Smalltalkはクラスベースだろ。それをプロトタイプベース
に改造した「始祖」がSelfだ。

568 名前:デフォルトの名無しさん mailto:sage [04/07/15 12:23]
アホが一匹紛れ込んでいるので引き取ってください
C#って死滅する理由がないよね! Part4
pc5.2ch.net/test/read.cgi/tech/1042464104/639


569 名前:デフォルトの名無しさん mailto:sage [04/07/15 20:31]
>>567
タイルスクリプティング(だっけ?)の部分じゃないの。

570 名前:デフォルトの名無しさん mailto:sage [04/07/16 08:05]
>>569
それはSmalltalkじゃなくてSqueakな…
いってみれば「Cは統合ヘルプ環境がいい」と同じぐらい変。

571 名前:デフォルトの名無しさん mailto:sage [04/07/16 10:47]
>>570
>>565 に Squeak って書いてあるじゃん。

572 名前:デフォルトの名無しさん mailto:sage [04/07/16 11:54]
うち誰かがSqueakシステムにおける、Squeak eToysとSmalltalk言語の区別が
できていない罠。

eToysはSmalltalk言語で記述されているが、Smalltalk言語とは別物の
言語処理系。プロトタイプベースだし、変数には型があり、if-then-elseの
条件分岐構文もある。

ふつう、Squeakと書けば(Smalltalkが併記された場合はなおさら)「Squeakシステム」を、
Smalltalkと書けば「Smalltalk言語」をイメージさせるから「Smalltalk(Squeak)」と
書いてもSqueak eToysを意図しているとは受け取られにくい…

のであります。

573 名前:デフォルトの名無しさん mailto:sage [04/07/16 12:06]
俺はむしろ、わざわざ Squeak と併記したのは、Morph とかタイルスクリプティングを
匂わせたかったのかと思ったよ。まぁ、好意的な解釈かもしれんが。

574 名前:デフォルトの名無しさん mailto:sage [04/07/16 13:50]
>>573
むしろ? わざわざ?

575 名前:デフォルトの名無しさん mailto:sage [04/07/17 01:28]
子供かよ。

576 名前:デフォルトの名無しさん [04/07/19 14:47]
Hage



577 名前:1 mailto:haskellsaikou [04/08/12 00:25]
クラスベースに比べると、記述量的に見てプロトタイプベースは厳しいですかね。

最近Haskell勉強してるんですけど、
「頻繁に使用する少数の道具」が揃っているところが強みだと感じています。
再帰系の高階関数とかコンビネータとか。

そういう厳選された道具がオブジェクト指向の世界にも存在するのかなぁ。
もしあればそれを探し出して、組み込んだ言語ならクラスベースに匹敵するかも。

Lightweight Language が流行っているように
如何に簡単に多くのことを行えるか、がこれからの言語争いで重要だと思います。
# 言うまでもないけど

578 名前:デフォルトの名無しさん mailto:sage [04/08/18 02:59]
実際ゲームのスクリプトなんかに向いてるみたい。
diablo2 のjspというBOTはjavascript。
まあまあ使いやすかった。
プロトタイプベースである必要はあんまない気がするが。

579 名前:デフォルトの名無しさん mailto:sage [04/08/18 08:11]
というか、使う人が手を入れることを前提とする場合クラスよりもプロトタイプのほうが扱いやすい。


580 名前:デフォルトの名無しさん mailto:sage [04/08/18 15:41]
HTML に埋め込むタイプの小規模スクリプトだと、プロトタイプの独壇場。

581 名前:デフォルトの名無しさん mailto:sage [04/08/18 16:44]
>>580
ボタンや IMG の挙動を変えるのにいちいち別クラスにしたくないな、確かに。

582 名前:デフォルトの名無しさん mailto:sage [04/08/18 22:00]
構文的な言語の特殊性としては、
やっぱJavaScript程度のものが妥当なんだと思った。
LispやSmalltalkみたいな変則的なものは知ってる人じゃないと近寄りがたい。
手軽にtarget.xとかドット表記でオブジェクトを指定できるのもいい。
なんだかんだ言ってもCかPerlなら知ってる人多いからね。
jspのスクリプトがあそこまで普及したのはライブラリの質の高さもあったけど、
構文的なわかりやすさが影響してると思う。
プロトタイプベースとあんま関係なくてごめん。

583 名前:デフォルトの名無しさん mailto:sage [04/08/22 00:46]
もまいらが使ってるプロトタイプベース言語で数行程度のサンプルコード書いてみてくれないか?

584 名前:デフォルトの名無しさん mailto:sage [04/08/22 01:12]
>>583
何か興味あるところで“お題”を出してもらえればすぐに。
でなければ、普段使っているクラスベースで数行のサンプルを
提示してくれれば、それと同等のものを書きます。

585 名前:デフォルトの名無しさん mailto:sage [04/08/22 02:48]
>>583

INU:
[ "WAN! WAN!" mise. ] naki<
[ "GATU GATU" mise. ] tabe<
tabe.
naki.

INU! NEKO<

NEKO:
tabe.
naki.

[ "NIAO NIAO" mise. ] NEKO.naki<

NEKO.naki.
INU.naki.


実行結果
GATU GATU
WAN! WAN!
GATU GATU
WAN! WAN!
NIAO NIAO
WAN! WAN!

586 名前:デフォルトの名無しさん mailto:sage [04/08/22 16:03]
class Thread2ch {
static int resNumber;
public:
  virtual void hosyu() = 0;
  virtual int resWrite(std::string contents, bool isSage = true) = 0;
};
class PrototypebaseOOThread : public Thread2ch {
  void hosyu()
  {
    ・・・
  }
  int resWrite(std::string contents, bool isSage = true)
  {
    ・・・
    return ++resNumber;
  }
};

int main()
{
  PrototypebaseOOThread *anObject = new PrototypebaseOOThread();
  anObject->resWrite("ぬるぽ");
  delete anObject;
  return 0;
}
//コードでスレッドの保守を表現する感じでお願いします。
//言語名もかいてくれると(゜д゜)ウマ
//で、585氏早速ありがとうございます



587 名前:デフォルトの名無しさん mailto:sage [04/08/22 16:14]
>>586
それのドコがプロトタイプベースやのん?

588 名前:デフォルトの名無しさん mailto:sage [04/08/22 16:30]
>>587 に同意。もう少しプロトタイプベースっぽいお題でないと。
というわけで >>585 を上でちらりと出た Io で書いてみる。

Dog := Object clone do(
 bark := method( "WAN! WAN!" linePrint )
 eat := method( "GATSU GATSU" linePrint )
)
Dog eat
Dog bark

Cat := Dog clone

Cat eat
Cat bark

Cat bark := method( "NIAO NIAO" linePrint )
Dog bark
Cat bark

実行結果
GATSU GATSU
WAN! WAN!
GATSU GATSU
WAN! WAN!
NIAO NIAO
WAN! WAN!

犬の派生に猫ってのも妙だけどなー。

589 名前:585 mailto:sage [04/08/22 18:25]
>>586
ほとんど知る人のない梓弓スクリプトという言語です。
なんとか直訳的に写すとこんな感じかなあ。でも、
>>587>>588に同感で、プロトタイプベースと
クラスベースでは、書く時の考え方も変わってしまうと思う。
---

@! Thread2ch< Thread2ch:
0 resNumber<
[ ] hosyu<
[ contents< isSage< 0 ] resWrite<

Thread2ch! PrototypebaseOOThread< PrototypebaseOOThread:
[
(略)
] hosyu<
[ contents< isSage<
PrototypebaseOOThread.resNumber resNumber<
(略)
resNumber 1 age, resNumber> ] resWrite<

[
0 "ぬるぽ" PrototypebaseOOThread.resWrite.
0 ] @.main<

---
梓弓はごらんの通りの後置記法で、「<」は代入、「>」は値の取出し、
「@」は始原オブジェクト、「!」はコピーの作成、など。

>>588
猫じゃなくて普通にポチとかにすると、「ポチ is a 犬」だから
クラス・インスタンス関係みたいになってちょっとかな…と。

590 名前:デフォルトの名無しさん mailto:sage [04/08/22 18:34]
流れを断ち切るようで申し訳ないのですが
プロトタイプベースは、親のスロットを変更すると子にまで影響及ぶんでしたっけ?

591 名前:デフォルトの名無しさん mailto:sage [04/08/22 18:41]
>>590
デリゲーションチェインがあればどうなるかは考えればわかるだろ

592 名前:デフォルトの名無しさん mailto:sage [04/08/22 18:50]
>>590
言語によりけりじゃないのかなあ?
JavaScript なら影響及ばなかった気がする。
梓弓だと影響及ぶけどね。

INU.tabe.
INU.naki.
NEKO.tabe.
NEKO.naki.
[ "PAKU PAKU" mise. ] INU.tabe<
[ "KYAN KYAN" mise. ] INU.naki<
INU.tabe.
INU.naki.
NEKO.tabe.
NEKO.naki.

実行結果
GATU GATU
WAN! WAN!
GATU GATU
NIAO NIAO
PAKU PAKU
KYAN KYAN
PAKU PAKU
NIAO NIAO

593 名前:590 mailto:sage [04/08/22 19:07]
>>591>>592
親のスロットを変更した際の挙動がプロトタイプベースの定義に
含まれているか知りたかったんでス
即レスdくすでした

594 名前:デフォルトの名無しさん mailto:sage [04/08/23 21:04]
>>586
なにかと思ったら、プロトタイプベースで書いて欲しいコード
だったんですね。仮想関数あたりはモディファイしてあります。

#Io
Thread2ch := Object clone
Thread2ch resNumber := 0
Thread2ch resWrite := method(contents, isSage,
return(resNumber += 1))
Thread2ch hoshu := method(
return(resWrite("保守",self)))
ProtoBasedOop := Thread2ch clone
ProtoBasedOop resWrite("1げっと",Nil)
==> 1
ProtoBasedOop hoshu()
==> 2
ProtoBasedOop resNumber
==> 2
Thread2ch resNumber
==> 0

595 名前:デフォルトの名無しさん mailto:sage [04/08/24 00:21]
梓弓スクリプトってなんじゃググっても無いぞ

596 名前:デフォルトの名無しさん mailto:sage [04/08/24 00:43]
今時は誰でも俺言語の一つくらいは持ってるだろうから、その類いじゃね?



597 名前:1 mailto:sage [04/08/24 00:50]
soopyです。
てこんな単純じゃ言語の特徴あまり出ませんね。

dog = {
bark: ({arg:[x]; do:[println "WAN! WAN!"];} eval);
eat: ({arg:[x]; do:[println "GATSU GATSU"];} eval);
};
dog eat bark();
dog bark ();

cat = dog + {};
cat eat ();
cat bark ();

cat bark = {arg:[x]; do:[println "NIAO NIAO"];} eval;
dog bark ();
cat bark ();


598 名前:デフォルトの名無しさん mailto:sage [04/08/24 00:56]
>>595
ぐぐったら下のほうに出てきたけど、>>596の類いだな。
まあなんか高い志掲げてるし、将来に期待すれ

599 名前:デフォルトの名無しさん mailto:sage [04/08/24 12:41]
ごめん、例の俺言語の類だが宣伝させてくれ
人少なすぎで少し困ってる
微妙にプロトタイプベースじゃないが勘弁

# Petit Script
Root
  create -> Dog;
Dog
  <- bark { System puts "Wan! Wan!" }
  <- eat { System puts "Gatsu Gatsu" }
  bark
  eat
  create -> Cat
  bark
  eat
  <- bark { System puts "Niao! Niao!" }
  bark
  eat;
Dog
  bark
  eat;

600 名前:599 mailto:sage [04/08/24 12:41]
続き

# 実行結果
Wan! Wan!
Gatsu Gatsu
Wan! Wan!
Gatsu Gatsu
Niao! Niao!
Gatsu Gatsu
Wan! Wan!
Gatsu Gatsu

From: 今新しい言語を作ってます
ttp://pc5.2ch.net/test/read.cgi/tech/1054580836/l50

601 名前:586 mailto:sage [04/08/24 15:28]
なんだかしょぼいお題コードを書いてしまったようで・・・
Javascriptあたりから出直してきます。_| ̄|○

602 名前:デフォルトの名無しさん mailto:sage [04/08/24 20:20]
>>598
ググって出てきたの?

「梓弓スクリプト」でググったら該当無し
「梓弓 スクリプト」でググってもそれらしいのは見当たらず
「梓弓 script」も同様
「梓弓」だけじゃワケワカメだった。

ちょっと興味があるんでキーワード教えてくださいな。

603 名前:デフォルトの名無しさん mailto:sage [04/08/25 00:01]
>>602
「梓弓 スクリプト」でぐぐると、
三つめくらいに時候の挨拶っていうのがあって、
そこからリンクたどると見つかるよ。

604 名前:デフォルトの名無しさん mailto:sage [04/08/25 04:57]
別に無断リンク禁止サイトではないのだから
ずっと時間が経ってからスレを見る人のために
ちゃんとリンクしたほうが良いと思いませんか?

梓弓について
gr.vxx.jp/azusayumi.html
リンクに関する見解
gr.vxx.jp/link.html

605 名前:デフォルトの名無しさん mailto:sage [04/08/25 08:36]
なんで記号的、全時代的な構文のスクリプトばっかなんだ?
Ruby厨と言われるかもしれないけど、RubyのようにクラスベースOOの人でも
違和感無く扱えるような構文の方が良くない?

606 名前:デフォルトの名無しさん mailto:sage [04/08/25 08:43]
>>605
もっと具体的に



607 名前:デフォルトの名無しさん mailto:sage [04/08/25 08:57]
>>603-604
ありがとん

608 名前:デフォルトの名無しさん mailto:sage [04/08/25 09:12]
>>605
スクリプトに限らず俺言語ってのは基本的にオナニーだからだろ。

609 名前:デフォルトの名無しさん mailto:sage [04/08/25 09:26]
プログラミング言語といっても、わかり易い言語にする為には自然言語的なセンスが
必要だとは思う。かといって Smalltalk みたいに英語に近くするとネイティブ以外に
分かり辛い所も。

610 名前:デフォルトの名無しさん mailto:sage [04/08/25 12:00]
>>605
ってかRubyはクラスベースじゃないの?SeRubyのこと?

漏れはある程度記号が使われるコードのほうがいいなぁ。JavaやPythonとかだと記号が少ないと感じる。


611 名前:1 mailto:sage [04/08/27 22:02]
>>599
おお、言語作ってますか。いいですねぇ。
ちょっと今時間的余裕ないのですが、
そのうち触らせてもらいます。
開発頑張ってください。


612 名前:デフォルトの名無しさん mailto:sage [04/08/28 22:46]
Ruby知ってると幸せになれるよ

JavaScript程ではないけど

613 名前:デフォルトの名無しさん mailto:sage [04/08/29 07:45]
宣伝乙。
このスレに Ruby 知らないヤツは居ないと思うが。

614 名前:デフォルトの名無しさん mailto:sage [04/08/29 18:19]
>>613
ノシ

名前を知ってはいるけど見たこと無い
使わないし

615 名前:デフォルトの名無しさん mailto:sage [04/08/30 00:47]
今日日うっかりデフォインスコとかすると/usr/binあたりに居ないか?>Ruby
てかWinとかだと自前で入れないと入らんか

616 名前:デフォルトの名無しさん mailto:sage [04/08/30 05:46]
Rubyはそろそろ廃れてきたからね
やっぱどこでも使えるJavaScriptがいいよ



617 名前:デフォルトの名無しさん [04/10/25 17:38:23]
Selfの論文翻訳されてるよage
ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/p/self/self.html

618 名前:デフォルトの名無しさん mailto:sage [04/10/25 18:44:46]
traits使って説明しだした辺りからうさん臭さを感じた

619 名前:デフォルトの名無しさん mailto:sage [04/10/25 20:48:59]
>>618
具体的にはどんなふうに?

620 名前:デフォルトの名無しさん mailto:sage [04/11/05 23:16:06]
相変わらず人いないね

621 名前:デフォルトの名無しさん mailto:sage [04/11/06 01:14:41]
>>618
今までずっと「tetris使って説明しだした辺りからうさん臭さを感じた」と読んでた。


622 名前:デフォルトの名無しさん mailto:sage [04/11/06 01:19:24]
>>620
つーか、最初から2-3人で回し書きしてるのがミエミエだったろ(藁
プロトタイプ最強君と、クラスベースも等価君と、バランス君。


623 名前:デフォルトの名無しさん mailto:sage [04/11/06 03:45:34]
各自が俺言語を持ち寄って自慢するスレでもいいんじゃね?

624 名前:1 mailto:sage [04/11/14 18:36:14]
>>622
>>620は「相変わらず」と言ってるので「つーか」になってないよー


625 名前:デフォルトの名無しさん [04/12/18 01:53:39]
これがプロトタイプベースだぜ。クラス厨共、どうだよこのクールさは、ああん?




みたいなコードキボン。

626 名前:デフォルトの名無しさん mailto:sage [04/12/18 03:08:12]
>>625
言語システムのローレベルをくみ上げていく(っと言うかブートストラップと言うか)の段階が一番興味深い結果出すと思うが。




627 名前:デフォルトの名無しさん [04/12/18 03:17:45]
>>626
どんな感じ?イメージ沸かぬ。

628 名前:デフォルトの名無しさん mailto:sage [04/12/18 03:23:45]
>>627
クラス型の言語だとObjectがすべての原型->そのObjectのClassのメタクラスの->Object
みたいな循環部分を最初にどうやってくみ上げるかってお話があるじゃないですか。
プロトタイプ型言語だと自分を派生させる機構は最初何から始めるのだろうって当たりが面白いんじゃないのって事なんで
あんまり深く考えてたわけじゃないです。

小生4年くらい前にpureオブジェクト指向言語をclassベースでやったときにその基底部分のくみ上げが非常に面白かったんで
同じようにプロトタイプ型言語でも興味深い(言語の性格に依存した)立ち上げ方法があるんでないのかって事です。








[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<368KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef