K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[981] Re:関数の型の宣言構文について
投稿者:みずしま
2007/06/26 00:51:15

>どこまでVMに実行時情報を持たせるかにもよりますが、たとえばJVMでは、 >T型の変数 a, b があるとき、 >Tがintのときの a = b; と、Tがdoubleのときの a = b;を同一のバイトコードでは >表現できないのでは? >Javaはクラスに関する限りポインタ(参照)しかない言語ですし、 >Genericsで対象にできるのは結局Objectだけなので、コンパイラだけで >ごまかしきれてますけれども。 はい。ただ、それは全ての型について同一のバイトコードで扱えなければならないという方針の場合の話であって、例えば、基本型は型ごとにコード複製、参照型はErasureによって同一のバイトコードに変換するなどの方針であればコンパイラだけでごまかせると思います。 >基本型は対象にしないとしても、クラスの(ポインタでなく)実体を扱えるように >した場合、C++のように機械語を吐くコンパイラでは、「何バイトコピーするか」が >型ごとに違ってきます。このへんVMだと工夫のしようはありそうですが。 確かに。ただ、ASTや中間表現の段階で実体型ごとにコードを複製しておけば、「何バイトコピーするか」などの詳細はコード生成部に任せられるのでは?
[この投稿を含むスレッドを表示] [この投稿を削除]
[980] Re:関数の型の宣言構文について
投稿者:(ぱ)こと管理人@自宅環境復活
2007/06/26 00:31:08

>あれ、インスタンスに対して参照だけではなく、実体に対する代入等の操作ができる >ようにするんでしょうか? それはやめた方が良いような。 ええと、みずしまさんの独自言語についてはわかりませんが、 現在のDiksamについてであれば、実体に対する代入等の操作ができるように するつもりはありません。 [975]で >当時は、Javaのような「ポインタしかない言語」が嫌で、クラスは実体でも >宣言できるようにしようとしていましたし、 と書いたように、(ふたつめくらいのDiksamを作っていた)「当時は」、そういう 仕様を考えていた、ということです。 それがどれぐらい仕様上も実装上も難しいものであるか、ということを 知らなかっただけですはい。
[この投稿を含むスレッドを表示] [この投稿を削除]
[979] Re:関数の型の宣言構文について
投稿者:kit
2007/06/25 21:02:11

> クラスの(ポインタでなく)実体を扱えるようにした場合 あれ、インスタンスに対して参照だけではなく、実体に対する代入等の操作ができる ようにするんでしょうか? それはやめた方が良いような。 継承のあるクラスのインスタンスではなく、単なる構造体のようなものに対してのみ 許すなら問題ないかもしれませんけど...
[この投稿を含むスレッドを表示] [この投稿を削除]
[978] Re:関数の型の宣言構文について
投稿者:(ぱ)こと管理人@自宅環境復活
2007/06/25 01:47:14

>普段使っていないと、久しぶりに使ってみたときに、つい括弧つけちゃった >という経験があります。結局、自分が普段使っている言語に合わせるのが一番 >なのかなとも思います。 それもひとつの手ですし、なまじ似てるから混乱するというのなら、 いっそ中括弧でなくendで終わる構文にするとか、根本的に変えてしまう というのもありかもしれませんね。 >>当時は、Javaのような「ポインタしかない言語」が嫌で、クラスは実体でも >>宣言できるようにしようとしていましたし、そうなるとtemplateも、Javaのように >>コンパイラだけでごまかしきることはできなくなります。 > >(C++風の)templateなら、コンパイラだけでなんとかなるのではと思ったのですが、 >何か見落としがあるんでしょうか?あるいは、 どこまでVMに実行時情報を持たせるかにもよりますが、たとえばJVMでは、 T型の変数 a, b があるとき、 Tがintのときの a = b; と、Tがdoubleのときの a = b;を同一のバイトコードでは 表現できないのでは? Javaはクラスに関する限りポインタ(参照)しかない言語ですし、 Genericsで対象にできるのは結局Objectだけなので、コンパイラだけで ごまかしきれてますけれども。 基本型は対象にしないとしても、クラスの(ポインタでなく)実体を扱えるように した場合、C++のように機械語を吐くコンパイラでは、「何バイトコピーするか」が 型ごとに違ってきます。このへんVMだと工夫のしようはありそうですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[977] Re:関数の型の宣言構文について
投稿者:みずしま
2007/06/24 20:55:34

みずしまです。返事が遅くなりましてすみません。 >どうもcrowbar ver.0.1で「ifの後ろの()をなくす」という文法にしたものの >(これも以前のDiksamではすべてそうなっていました)、自分自身すら慣れることが >できなかった、というのがトラウマになっている気もします。 >本当にバリバリに使えば、すぐ慣れることなのかもしれませんけれども。 私の作った言語でも、if、whileなどの後ろの()が無い文法になっているのですが、 普段使っていないと、久しぶりに使ってみたときに、つい括弧つけちゃった という経験があります。結局、自分が普段使っている言語に合わせるのが一番 なのかなとも思います。 >以前の3つくらいのバージョンのDiksamのふたつめくらいまではtemplateを >付けようとしていました。が、結局そのあたりを作っている間に(複雑に >なりすぎて)挫折してしまったわけでして。 >私は今でもgeneric programmingの知識や経験が豊富なわけではありませんが、 >当時はもっと知らなかったにも関わらずそんなところに手を出したら >挫折するのも当然です。 templateの実装は結構複雑そうですね。かく言う自分も、Java generics相当の 機能(JVMで動作するので、仕様はJavaと互換にしたい)を俺言語に搭載しようと 思いつつ、Java genericsの型システムがかなり複雑なので、なかなか 挑めないでいます。 >当時は、Javaのような「ポインタしかない言語」が嫌で、クラスは実体でも >宣言できるようにしようとしていましたし、そうなるとtemplateも、Javaのように >コンパイラだけでごまかしきることはできなくなります。 >型ごとにコード複製やむなし、という考えで作っていたように思いますが、 >結局、その部分の実装まですら行き着けなかったような。 (C++風の)templateなら、コンパイラだけでなんとかなるのではと思ったのですが、 何か見落としがあるんでしょうか?あるいは、 > 型ごとにコード複製やむなし というのが、型ごとにコード複製すれば、コンパイラだけでなんとかなるという 意図でしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[976] 管理者により削除されました
2007/06/17 19:38:29

思わず投稿ボタンをダブルクリックして二重投稿した上に、 パスワードを入れていなかったので管理者権限削除。 ちゃんとこの辺の対策もしなければいけませんねえ。
[この投稿を含むスレッドを表示]
[975] Re:関数の型の宣言構文について
投稿者:(ぱ)こと管理人@ネットカフェ
2007/06/17 19:36:57

>C言語ポインタ完全制覇の記述などを見ても、後置の型宣言の方がお好みなのかな >と思っていたので、ちょっと意外な気がしました。 私自身も「後置の型宣言の方が好み」と思っています。 現在のDiksamは「4つ目くらいの作り直し中」で、以前のバージョンでは すべて後置にしていました。 どうもcrowbar ver.0.1で「ifの後ろの()をなくす」という文法にしたものの (これも以前のDiksamではすべてそうなっていました)、自分自身すら慣れることが できなかった、というのがトラウマになっている気もします。 本当にバリバリに使えば、すぐ慣れることなのかもしれませんけれども。 >あと、質問なんですが、将来的にDiksamを拡張して、多相型(JavaのGenerics >相当の機能)を付け加える予定はあるでしょうか?多相型のセマンティクスは >言語によってかなりバリエーションがあり、一応俺言語を作っている者として、 >前橋さんがどのようなセマンティクスが良いと考えておられるかについて興味が >あります。 以前の3つくらいのバージョンのDiksamのふたつめくらいまではtemplateを 付けようとしていました。が、結局そのあたりを作っている間に(複雑に なりすぎて)挫折してしまったわけでして。 私は今でもgeneric programmingの知識や経験が豊富なわけではありませんが、 当時はもっと知らなかったにも関わらずそんなところに手を出したら 挫折するのも当然です。 当時は、Javaのような「ポインタしかない言語」が嫌で、クラスは実体でも 宣言できるようにしようとしていましたし、そうなるとtemplateも、Javaのように コンパイラだけでごまかしきることはできなくなります。 型ごとにコード複製やむなし、という考えで作っていたように思いますが、 結局、その部分の実装まですら行き着けなかったような。
[この投稿を含むスレッドを表示] [この投稿を削除]
[974] Re:関数の型の宣言構文について
投稿者:みずしま
2007/06/16 02:09:55

>>案としてJava 7風に >> B foo(A); > >Java 7で関数を代入できる変数の宣言は > >B(A) foo; > >では? >http://journal.mycom.co.jp/articles/2006/08/23/java7closuer/002.html あ、そうですね。うろ覚えで書いたので間違ってしまったようです。 >>というわけで、静的型付け関数型言語(MLとかHaskellなど)でよくあるように、 >> foo : int -> int; >>と書くのはいかがでしょう? > >ご提案ありがとうございます。ちょっと調べてみます。 >ただDiksamは、 >「floatなんか付けるつもりもないくせに浮動小数点数はdouble」 >というくらいC/Javaにひよった言語ですので、Java 7風かなあ、とは思っています。 >と言いつつ、「なぜかBだけ先頭」という規則が美しくないとは思っているんですけどねえ。 C言語ポインタ完全制覇の記述などを見ても、後置の型宣言の方がお好みなのかな と思っていたので、ちょっと意外な気がしました。とはいえ、この程度の細かい シンタックスの違いはある意味どうでもいい話なので、C/Javaにひよるのも一つ なのかもしれません。 あと、質問なんですが、将来的にDiksamを拡張して、多相型(JavaのGenerics 相当の機能)を付け加える予定はあるでしょうか?多相型のセマンティクスは 言語によってかなりバリエーションがあり、一応俺言語を作っている者として、 前橋さんがどのようなセマンティクスが良いと考えておられるかについて興味が あります。
[この投稿を含むスレッドを表示] [この投稿を削除]
[973] Re:関数の型の宣言構文について
投稿者:(ぱ)こと管理人
2007/06/15 12:29:55

>こんにちは。みずしまです。 こんにちは。 はてなの方でちょっと書いたのですが、自宅PCが不調で、昨夜からついに起動もできなくなりました。今は昼飯がてらネットカフェで書いています。 というわけでしばらく反応が遅くなると思います。ご了承ください。 >案としてJava 7風に > B foo(A); Java 7で関数を代入できる変数の宣言は B(A) foo; では? http://journal.mycom.co.jp/articles/2006/08/23/java7closuer/002.html つまり、 > var foo:(A) B; この形式から、末尾のBを先頭に持ってきて、それ以外の部分をBの後ろにつないだ形式になります(と、私は解釈しています)。 > B foo(A); Diksamには関数のプロトタイプ宣言があるので、この構文はバッティングしますね。 >というわけで、静的型付け関数型言語(MLとかHaskellなど)でよくあるように、 > foo : int -> int; >と書くのはいかがでしょう? ご提案ありがとうございます。ちょっと調べてみます。 ただDiksamは、 「floatなんか付けるつもりもないくせに浮動小数点数はdouble」 というくらいC/Javaにひよった言語ですので、Java 7風かなあ、とは思っています。 と言いつつ、「なぜかBだけ先頭」という規則が美しくないとは思っているんですけどねえ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[972] 関数の型の宣言構文について
投稿者:みずしま
2007/06/14 21:02:39

こんにちは。みずしまです。 以前から前橋さんのページの特にプログラミング言語関係のネタをwatchして いましたが、今年になってから「プログラミング言語を作る」の 「静的型・バイトコード実行型言語を作る」編を開始されたということで、 静的型言語好きな自分としては、Diksamがどんな言語になっていくのか 楽しみにしております。 さて、本題なのですが、Diksamでは将来的に関数型の変数を扱う機能の実装を 予定されているようですが、構文に関してはまだ決定されていないようです。 案としてJava 7風に B foo(A); と書く方法と var foo:(A) B; と書く方法の2つを考えておられるようですが、どちらも関数を返す関数などの 複雑な型を書く場合にイマイチな気がします。 C(B) foo(A); //Aを受け取り、「Bを受け取りCを返す関数」を返す関数 var foo:(A) (B) C; //引数と返り値の型が区切られて無いせいで、読みにくい気がする というわけで、静的型付け関数型言語(MLとかHaskellなど)でよくあるように、 foo : int -> int; と書くのはいかがでしょう?
[この投稿を含むスレッドを表示] [この投稿を削除]
[971] Re:無題
投稿者:(ぱ)こと管理人
2007/06/08 08:22:22

えー、補足で一応書いておくと、 これが私の書いたものに対する正当な批判のつもりなら、 ・そもそもどの文章についてなのか。 ・そこで使われている「バカ」の具体例 くらい出さなきゃ話にならんでしょう。 まあ、こんな書き捨て野郎には何も期待してませんけど。
[この投稿を含むスレッドを表示] [この投稿を削除]
[970] Re:無題
投稿者:(ぱ)こと管理人
2007/06/08 08:02:23

なんなんすかね、これ。 匿名書き捨て野郎の相手をするほどヒマではないので放置しときますが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[969] 無題
投稿者:unko
2007/06/07 22:52:51

何かアレだな 文章に頻繁に出てくる「バカ」ってのがウザい 人をバカにする文章を書くことで優越感に浸れるのかもしれないけど 読んでる方は不快なだけだから。
[この投稿を含むスレッドを表示] [この投稿を削除]
[968] 管理者により削除されました
2007/05/27 12:00:10

[この投稿を含むスレッドを表示]
[966] 管理者により削除されました
2007/04/23 00:36:06

なんなんだ最近連投されているラグナロクオンライン関連らしいぶっ壊れた日本語のしかもリンク先すら読めないこのSPAMは。
[この投稿を含むスレッドを表示]
[965] 断酒宣言
投稿者:(ぱ)こと管理人
2007/04/04 00:11:48

ページ直すのが面倒なので今年はこっちでやります。 3/22より例によって断酒しています。 今回の期間はゴールデンウイーク開始まで。 ・飲み会では飲んでもいい。 ・それ以外でどうしても飲んじゃった場合には、その旨をここで報告する。 というふたつの例外条件はいつものとおり。 年度の変わり目は飲み会が多いので、そのへんを狙うのがコツ(ぉぃ)
[この投稿を含むスレッドを表示] [この投稿を削除]
[964] 時間切れ
投稿者:(ぱ)こと管理人
2007/04/02 02:32:41

昨年のBF-BASIC'nに続き、今年も何かエイプリルフールネタをやろうとして、「S式を箇条書きで表現するLispもどき言語」というのを考えてたんですが時間切れでした… あーあ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[963] 広告を削除しました
投稿者:(ぱ)こと管理人
2007/03/30 20:46:00

 広告が連投されていて、この掲示板では管理者削除で消しても形跡が残るので、鬱陶しいので物理削除しました。  spam向けの削除機能とspamよけの何らかの機能を考えないといかんかなあ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[962] Re:めちゃめちゃ勉強になりました
投稿者:(ぱ)こと管理人
2007/03/23 00:19:12

はじめまして。お役に立てたのなら幸いです。 >仕事に、「構文解析」の needsが出て、 目的のアプリケーションがCで、yacc/lexが使える状況であれば、 うちのサイトの記述が役に立つかと思います。なお、yaccのコンフリクト 解消については、「プログラミング言語を作る」よりも 「電卓を作ってみよう」 http://kmaebashi.com/programmer/c_yota/calc.html の方に記述がありますのでよろしければそちらもどうぞ(今見返すと、 我ながらアレな文章書いてますが…)。 目的のアプリケーションがC++なら、(yacc/lexも使えますが)Boostの spiritの方がよいかもしれません。 外部ツールやライブラリを使うのが難しいなら、再帰下降で手書きの パーサを書くという方法もありますよね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[961] めちゃめちゃ勉強になりました
投稿者:巨大怪獣
2007/03/21 19:47:13

仕事に、「構文解析」の needsが出て、 困っているところに、 前橋さんのこのサイトを見つけました。 「あっ!これで、なんとなく、助かるじゃん!」という感じなんです。 本当に、感謝します。 (まったく私の勝手ですが。。。)これから、よろしくお願いします。^_^ さって、「電卓作成」の勉強に入ります。。。
[この投稿を含むスレッドを表示] [この投稿を削除]
[960] 管理者により削除されました
2007/03/10 22:19:56

投稿者の記載も新しい追記もなく、単に古い投稿に返信しただけの記事だったので削除しました。 テスト投稿はテスト用掲示板 http://kmaebashi.com/bbs/list.php?boardid=testbbs にお願いします。
[この投稿を含むスレッドを表示]
[959] 無題
投稿者:(ぱ)こと管理人
2007/02/25 20:36:21

レンタルサーバ業者さんから下記の通りサービス停止の連絡が来ています。 サーバ停止中は、kmaebashi.comの閲覧や掲示板の使用ができません。 ただしメールは届きます。 > メンテナンス作業実施のお知らせ > ネットワーク機器のメンテナンス作業を実施いたします。 > 作業日時:3/5(月)午前1時~ > 作業対象:国内全サーバー > 作業内容:ネットワーク機器のメンテナンス > 作業時間は4時間程度を予定しております。 > 作業中、数回程度断続的にネットワークが遮断されます。 > 一回の遮断は30秒から3分程度となっております。
[この投稿を含むスレッドを表示] [この投稿を削除]
[958] Re:リンク
投稿者:(ぱ)こと管理人
2007/02/23 02:01:46

>http://kmaebashi.com/bbs/  なるほど… 報告ありがとうございます。掲示板のスクリプトがhttp://kmaebashi.com/bbs/以下においてあるくせに、Niftyの過去ログがhttp://kmaebashi.com/bbs/index.htmlである、ということがまずいように思えます。  Niftyの過去ログは、Niftyでは500件で投稿が流れてしまうという制限があったため、せっかくの投稿が消えてしまわないように作ったものです。当時はレンタルサーバ借りて自分で掲示板を設置するとは思いもよらず/bbs/直下にしたわけですが、その後、いざ掲示板を作るにあたっても、別に悪いこともないだろうと/bbs/直下に置いたのが仇になったようです。  どっちかのURLを変えればよいわけですが、既にNifty掲示板の過去ログも現行掲示板も結構Google等に拾われているようなので、当面このままにしようかと思います。あしからずご了承くださいませ。  この現象のせいですごく困っている、という方はご報告ください。私は携帯は使わないので、状況を把握していない可能性があります。
[この投稿を含むスレッドを表示] [この投稿を削除]
[957] Re:リンク
投稿者:yuya
2007/02/21 12:47:29

> お気になさらず。 ありがとうございます。 テスト板の方で勝手に実験させてもらったのですが、再現しませんでした。 [952]で「Niftyの過去ログに飛んだ」と書きながら OTDの過去ログのURLを書いてしまっていましたが、正しくは http://kmaebashi.com/bbs/index.html でした。おそらく携帯ブラウザの制限から、本来のURLが破棄されて、 /../ すなわち http://kmaebashi.com/bbs/ として解釈されてしまい、index.html が表示されたのだろうと推測しています。 もちろんこのファイル名は「Niftyの過去ログのインデックス」という意味でしょうけれど、 デフォルトインデックスとして扱われてしまったのでしょうね。 # お騒がせしました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[956] Re:リンク
投稿者:(ぱ)こと管理人
2007/02/20 23:47:03

>ありゃ、お役に立とうと思ったら裏目に出てしまった。 >すみませんです。 や、これはもう完璧に私のポカですからお気になさらず。 # SQLの文法の問題だと言い張りたい気はなきにしもあらずですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[955] Re:リンク
投稿者:(ぱ)こと管理人
2007/02/20 23:47:00

>ありゃ、お役に立とうと思ったら裏目に出てしまった。 >すみませんです。 や、これはもう完璧に私のポカですからお気になさらず。 # SQLの文法の問題だと言い張りたい気はなきにしもあらずですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[954] Re:リンク
投稿者:yuya
2007/02/20 12:50:07

ありゃ、お役に立とうと思ったら裏目に出てしまった。 すみませんです。 前橋さんのサイトは携帯電話のブラウザでも ほとんど問題なく読めるので、よく携帯(au)からアクセスするのですが そのときに起きた現象だったので、 キャッシュは残ってましたがソースが見られない。 うー、気持ち悪い。
[この投稿を含むスレッドを表示] [この投稿を削除]
[953] Re:リンク
投稿者:(ぱ)こと管理人
2007/02/20 02:28:22

>このspammerの書いていたリンク先を、削除される前にクリックしちゃったんですが、 >なぜか旧掲示板(Nifty)の過去ログのページに飛んだんですよ。 >たぶんここに↓↓ >http://kmaebashi.com/bbs/otdindex.html うーん、D/Bをいじってフラグを戻し、投稿を復活させてクリックしてみたのですが、 再現しないようです。 それはさておきその時update文にwhereを付け忘れてしまい… 広告が全部復活してしまいました (;_;) 途中までは消したのですが、今日はもう眠いので後日ぼちぼち消していきます。 とほほ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[952] リンク
投稿者:yuya
2007/02/20 02:13:25

このspammerの書いていたリンク先を、削除される前にクリックしちゃったんですが、 なぜか旧掲示板(Nifty)の過去ログのページに飛んだんですよ。 たぶんここに↓↓ http://kmaebashi.com/bbs/otdindex.html 再現されるかどうか分かりませんけど、 何かバグがあるなら修正の機会になるかと思い、一応指摘させていただきました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[951] 管理者により削除されました
2007/02/20 02:29:45

広告なので削除しました。 聖書のお言葉に従う人がspamをばらまいているらしい。へー。 # てなことを書いたような気が。
[この投稿を含むスレッドを表示]