プログラミング言語 開発スレ( ´D`) 2

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
暇で本気な人はカモソ!

前スレ
プログラミング言語 開発スレ( ´D`)
http://pc3.2ch.net/test/read.cgi/tech/1020711295/
オブジェクト指向言語開発室
http://isweb43.infoseek.co.jp/computer/am_dev/
2デフォルトの名無しさん:02/08/31 05:07
分岐スレ
case-sensitive vs. case-insensitive論争
http://pc.2ch.net/tech/kako/1022/10223/1022352006.html
3デフォルトの名無しさん:02/08/31 05:09
必要なリンクがあれば、貼っといてください。
4モナ吉:02/08/31 09:02
(・∀・)
5モナ吉:02/08/31 09:12
紹介が遅れますた
自称・新スレゲッターのモナ吉れす。
どぞ、お見知り沖を
6デフォルトの名無しさん:02/08/31 17:47
ウヴァみたいな閉鎖的な言語作るなよ
>>1
おもしろそうですね。
では、今からJAVA勉強します。
僕の場合まずnasmの勉強からですね。
というよりも、nasmって何だ…?レベル。
リンカは.NET Framework SDK付属のlinkでいいのでしょうか?
nasm == 超絶アセンブラ。
10デフォルトの名無しさん:02/08/31 20:36
プログラミング言語2ch++開発スレッド
http://pc3.2ch.net/test/read.cgi/tech/1028347382/
11デフォルト暇人さん:02/08/31 20:46
さてと、>>1はどこかな?
12デフォルトの名無しさん:02/09/02 07:47
nasmへのトランスレーターが楽かも
13デフォルトの名無しさん:02/09/02 11:06
nasmを通した後、ライブラリとリンクするようになると思うけど、
ライブラリはどうする?
とりあえずCのライブラリでも使っとく?
14デフォルトの名無しさん:02/09/02 11:12
プログラム言語を作るのが目的なら、最初に独自の仮想マシンを
作った方が良いかも。自分で扱いやすいコード体系・仕様の仮想
CPUを定義できるし、アセンブラも含めた総合的な言語処理系を
実装していけるからね。
>>13
ライブラリはとりあえず必要ないんじゃない?
呼び出し規約をCにあわせておけば便利だとは思うけど。
16デフォルトの名無しさん:02/09/02 14:09
バイトコード吐けるようにしようぜ
exeとは別に
ELFエミュレータを作ってWin上で動かすと。
>>14
> 自分で扱いやすいコード体系・仕様の仮想CPUを定義できるし、
この辺りがまた面倒そうな…

とはいえ、コード生成に関してはちゃんと勉強してないから、
あまりわかっていないんだけど。
>>16
バイトコードってJavaの?
2014:02/09/02 16:20
>>18

実際に今仮想マシンを作っているけど、仮想CPUの設計・実装自体
は思っていたよりずっと簡単だった。ただ、問題はBIOSというか、
ディスクやキャラクタベースの表示などのデバイス周りの設計。
まあ、このあたりは「言語処理系」本体とは本質的には関係ない
部分だから、ないならないで良いんだけど。

とりあえず、基本的な仮想CPUとメモリシステム、ビットマップ
(フレームバッファ)ベースの表示システムまではできているんで、
そろそろ本来の目的である言語処理系を作り始めたいところ。まず
はアセンブラかな。
2118:02/09/03 16:03
>>20
既存のCPUのコードに変換することは前提にしていないのですね。

それにしてもなかなか凝ったものをお作りで。
Smalltalkのようなシステムを含んだようなものを目指しているのでしょうか?
>>15
直ぐには必要ないというか、言語のコンセプトに沿ったものを
作る必要があると思うんで、とりあえず必要ないというのは賛成。
とりあえずHello worldぐらいは表示してみたいなという話。

ちょっとそれるけど、呼び出し規約にはどんなのがある?
C呼び出し、Pascal呼び出し以外に。
あと↑の正式名称も知りたいとこ。
>>20
仮想コードマシンを作りたいのか、PCエミュレータを作りたいのか、どっちだ。
2414:02/09/04 18:09
>>23
作っているのは、仮想コードを実行する仮想マシン。
作りたいのは、OSや言語処理系を含めた総合的なコンピュータシステム。

で、今やっているのはアセンブラの開発に使うための文字(バイト)列
処理クラスの実装。
>>22

cdecl …C言語。引数は右から。呼びだし側が解放(なので可変長引数が使えるが効率悪)
pascal…旧Pascal等。引数は左から。関数内で解放。
stdcall…Windows API。引数は右から。関数内で解放。
register(fastcall)…Delphi。引数の一部をレジスタを使って渡す。詳細はコンパイラ依存。

Windowsならstdcallだけで充分かな。

とりあえずnasmだけでコンソール出力APIを使ってHello Worldができるようになってから
具体的な作業にかかりたいと思います。
2622:02/09/04 22:20
>>25
ありがとうです。
stdcallが右からなのと、fastcallについては知らなかったです。
戻り値が複数あるような奴が出てくるかとちょっと期待してたんだけど残念。
>>24
まったく別のレイヤーの話を混ぜるのは感心しない。
このスレはなんのスレだ?
nasmで Hello world (Linux板) 参考URL
http://www.nk.rim.or.jp/~jun/lxasm/asm01.html
2914:02/09/05 05:16
>>27

いや、だから主に「言語処理系を作るために」仮想マシンを作って
いるんだが。実機より理想化したコード体系・バイナリ形式を自由
に定義できるし、総合的なシステムを開発する経験をつめるからね。
SqueakやJavaのようにシステムまで考慮したものはあるから、
まったく別のレイヤーって感じはしないけど。

個人的にはネイティブをやりたい。
僕も作るならネイティブコンパイラにしたいですね。

>>28のリンク先は参考になりました。
その上で質問ですが、nasmwでWindowsのdllの関数を呼ぶ方法を教えていただけないでしょうか?
(インポートライブラリは無しの方向で)

それさえわかれば、一応コンパイラ作れるのかな…?
3228:02/09/06 04:08
linuxの方は調べてあったんだけど、Windowsの方はやってない。
masmやtasmでの解説は見つかるんだけど、肝心のnasmの奴がない。
masmのを参考に、ちょっと挑戦してみました。
一応、表示はでました。
kernel32.libはVC++6.0にあった奴を使いました。
(インポートライブラリってこれのこと?)

アセンブラには自信ないんで、
おかしいところあれば指摘よろしく。
section .data
msg db 'hello, world', 0x0A
msglen equ $ - msg
written dd 0
stdout dd -1

section .text
global _start
extern _GetStdHandle@4
extern _WriteFile@20

_start:
 push -11
 call _GetStdHandle@4
 mov [stdout], eax
 push 0
 push written
 push msglen
 push msg
 push dword[stdout]
 call _WriteFile@20
 ret

> nasmw -fwin32 hello.nas
> link /SUBSYSTEM:CONSOLE /ENTRY:start /MAP hello.obj kernel32.lib
3431:02/09/06 05:47
返事どうもです。
無謀にもilink32を用いて挑戦してみました。

・Borlandのインポートライブラリは名前の変形をしないようなので_と@以下を削除
・コードセグメントは segment .code USE32
・何故か.dataを使うとAdditional segments need to be defined in a .def fileエラーが出る
・エントリポイントを指定するオプションがわからん

というわけで、変数も.codeに置いて、Cランタイムを併用する事で(苦笑)Hello Worldできました。
どうしたものか…。
いや、.NET SDK付属のlinkと、プラットフォームSDKのkernel32.libでもいいんですけど(w

>(インポートライブラリってこれのこと?)
です。dllに対応するlibです。
VBやDelphiやF-BASIC(Win版)なんかはそんなもの無しでもいきなり呼べるので、
何か方法はあると踏んでいるのですが。
インポートライブラリはヘッダ中でdll名を書けないC言語の足枷みたいなものなので、
新しく言語を作るのであれば、引きずりたく無いなあ、と、なんとなく。
3531:02/09/06 15:31
「import 名前 dll」という書き方を見つけたのですが、これは -f win32 では認識してくれず。
エントリポイントは ..startで良さげ。というわけで、一応-f obj フォーマット版動作しました。

; imports.nas (何故か別ファイルにする必要がある)
import GetStdHandle kernel32.dll
import WriteFile kernel32.dll

; hello.nas
global ..start
extern GetStdHandle
extern WriteFile
segment _TEXT USE32 public class=CODE
..start:
 push dword -11
 call GetStdHandle
 mov [stdout], eax
 push dword 0
 push dword written
 push dword msglen
 push dword msg
 push dword[stdout]
 call WriteFile
 ret
segment _DATA USE32 public class=DATA
msg db 'hello, world', 0x0D, 0x0A
msglen equ $ - msg
written dd 0
stdout dd -1
segment _BSS USE32 public class="BSS"
group DGROUP _BSS _DATA

> ilink32 hello.obj imports.obj
3628:02/09/06 23:33
>>31
Microsoftのlinkではこれをリンクするのは無理なようです。
nasmのドキュメントを読んでみましたが、どうもそんな感じのようです。

ilink32はbccに付いてるのですか?
まだ入れてないんで、入れてみます。
3728:02/09/07 01:46
出来ましたー

そんだけ(^^;
3931:02/09/08 00:51
コンパイラを作るには、後何が要るでしょうね。
メモリ管理は暫定的にHeapAllocにでも任せておけばいいし、
スレッドローカル変数みたいなのもDelphiのthreadvarは特殊なセグメント使ってややこしそうですが
とりあえずTlsAllocなんてものもあるし。

避けられそうに無いもので残っているのは、例外処理かなあ。
構造化例外処理をアセンブラで実現する方法を御存じの方、おられないでしょうか?
4031:02/09/08 11:08
逆アセンブリで地道に調査開始。まずfinallyから。こんな感じでした。

TRY:
 xor eax
 push ebp
 push HANDLER
 push dword [fs:eax]
 mov fs:[eax], esp
 ...
 xor eax, eax
 pop edx
 pop ecx
 pop ecx
 mov [fs:eax], edx
 push END
FINALLY:
 ...
 ret
HANDLER:
 jmp ランタイムの関数…ここで何をすればいいのでしょう?
 jmp FINALLY
END:
4128:02/09/08 15:52
TLSっていうのがあるのは知りませんでした。
MSDNに載ってたサンプル見たけど、
いまいち、使いどころがよくわからんです。

構造化例外処理の実装はよく知らんです。
知りたくて、資料を探し回ったんだけど、見つからなかったです。
.NETと同じモンになりそうな予感
4331:02/09/08 19:40
検索したらこんなの見つけました。がんばって英語よむかぁ…
ttp://www.jorgon.freeserve.co.uk/Except/Except.htm

>>41
TLSがあると、グローバル変数を必要悪として使わなければならない場合
(例えば、コールバック関数にポインタを渡すとか)に、
他のスレッドとの同期を気にしなくていいので(ほんのちょっとだけ)嬉しいです。
4431:02/09/09 01:13
やった…finallyハンドラできました。
デバッガを使いたかったのでDelphiのインラインアセンブラです。

procedure _HandleFinally;
asm
 { [ESP+12] ctxPtr, [ESP+16] dspPtr }
 mov eax, [esp + 4] {EXCEPTION_RECORD}
 mov edx, [esp + 8] {try時のesp}
 {処理するかどうかの問い合わせと実行で2回呼ばれる. 問い合わせ中は無視}
 test [EAX].TExceptionRecord.ExceptionFlags, 6{cUnwindInProgress}
 je @Exit
 pushad {レジスタを保存}
 mov ebp, [edx + 8] //tryでスタック上に積んだebp
 mov ecx, [edx + 4] //tryでスタック上に積んだ@Handler
 add ecx, 5 //"jmp _HandleFinally" の分を進める
 call ecx
 popad
@Exit:
 mov EAX, 1 {continue}
end;

例外ハンドラ(>>40のHANDLER)の先頭でここへjmpしてくればおっけーです。
4531:02/09/09 01:20
テストコードです。

procedure WriteOnFinally(Data: Integer); register; {動作確認}
begin
 WriteLn('Finally', Data); ReadLn;
end;

procedure TestFinally;
var Data: Integer;
asm
 xor eax, eax; push ebp; push offset @HANDLER; push dword ptr [fs:eax]; mov [fs:eax], esp
 mov Data, 1234 {きちんとローカル変数も使えるか確認用}
 mov eax, 1; mov ecx, 0; div ecx {ゼロで割って例外発生}
 xor eax, eax; pop edx; pop ecx; pop ecx; mov [fs:eax], edx; push offset @EXIT
@FINALLY:
 mov eax, Data
 call WriteOnFinally
 ret
@HANDLER:
 jmp _HandleFinally
 jmp @FINALLY
@EXIT:
end;

次はexcept(catch)ハンドラと行きたいですが、種類ごとの分岐とか難しそうな予感。
DelphiやC++は例外をクラスにマップしているので、そのままぱくってくるわけにいかないしなあ。
先に独自の例外をthrowする方法を調べた方がいいかな?
4628:02/09/09 21:09
43のリンクはありがとうございます。
役に立ってます。
per-threadの部分なんて特に。
といってもまだ始めの方しか読んでませんが。

アセンブラで >>44-45 相当のものを組んでみました。
例外ハンドラが2回呼ばれて、finallyが最後に実行されることは確認しました。
ただ、今のところ、エラーのダイアログ出てしまいます。
SetUnhandledExceptionFilterを使えば抑制することはできると思うのですが、
その対処で良いか自身がないです。
もうちょっとリンク先を読んでみます。
4731:02/09/09 23:34
やっぱり同じようなところで悩んでおられますね。
SetErrorMode(2)でも抑制できましたが、
どこにもcatchされずに、そのまま終了した場合、
ダイアログが出て欲しいのですが、それも抑制されてしまいます。

例外ハンドラ→SetUnhandledExceptionFilterで指定した関数→ダイアログの流れっぽく
SetUnhandledExceptionFilterで指定した関数で1を返せば抑制できました。
しかし、DelphiのRTLのソースコードを漁ってみたのですが、
SetUnhandledExceptionFilterもSetErrorModeも使われていないようなので、
例外ハンドラ中で抑制する方法があるのではと踏んでいます(が、それがわからない…)

//Delphi IDEから実行した場合、デバッガが例外を受けとるので気がつかなかった(w
//その後単独で実行して初めてダイアログの存在に気がつきました。
4831:02/09/09 23:37
追記訂正。

例外ハンドラ(1回目)→SetUnhandledExceptionFilterで指定した関数
→ダイアログ→例外ハンドラ(2回目、finally時)

ダイアログがfinallyのタイミングよりも先に出るのが困り者です。
4931:02/09/11 01:02
外側でcatchした場合、ダイアログは出ないので、
ダイアログが出るのが正しい動作のような気がしてきました。

まずcatchされるまで遡って、catchされる位置が確定してから
finallyが順に実行されるような動きです。
5028:02/09/11 01:54
>>49
try
 try
 finally
except

ってな感じにしたんですね。
こっちでもVC++独自拡張の例外を使って、確認しました。
例外発生後、
exceptの判定
finallyの処理
exceptの処理
の順番でした。
exceptの処理中に例外が発生させるというような話もありそうなので、
exceptの処理は例外ハンドラ内ではやれないことになる。
(できるかもしれませんが)
そうするとfinallyの処理もハンドラの中なのか外なのかって話が出てきて、
どっちなんでしょう?
型に単位[MKS]も含まれる言語ってないの?
次元の合わない式はコンパイルエラー。

double force[kg*m/(s*s)];
とか。
デバッグに便利そうだけどコーディングは面倒?
5228:02/09/11 23:00
>>51
聞いたことはないです。
ちょっと思ったことをつらつら書いてみると。

計算途中で kg*m, 1/(s*s) というような型が必要。
あと10のべき乗とか、logや√を取ったりとか、
型の数がかなりの量になると思う。
(型推論を導入する?)

平均をとったりするのは型に束縛されたくない。
(総称を導入する?)

数値計算するプログラムを検証する場合、
プログラムで計算した結果と別の手段で計算した結果とを
比較する。そうすると別手段の方で単位がどうとかいうのが
考慮済みだったりする。

単位とかに縛られない抽象的なものにすることにより、
力の計算とかにも使えたり、金額の計算にも使えたりと
汎用性を生み出してる。
(科学技術計算に特化した言語にするのが目的なら別にいいが。)

Mathmaticaとかにあったりして。(ないと思うけど)
5351:02/09/12 00:14
たしかによくよく考えると面倒そう。
型推論って?…ググル…文脈から型を推論するわけですか。ムズソウ
しょーもない単位間違いバグを発見して書きこんだけどやっぱいらないかな。
5428:02/09/12 00:32
>>53
型推論に関しては実はあまりよく知らなかったりします。

試しにそんなような機能を実装してみたりして。
単位情報を内部に持つ、クラスなり構造体を作り、
演算子の定義とかして。
5531:02/09/12 00:40
おお、賑やかになってる。

>>51
C++で、templateを使った例なら知ってますけど
言語に組み込まれているのは知らないです。

template<int m1, int l1, int t1, int m2, int l2, int t2>
Phy<m1+m2, l1+l2, t1+t2> operator * (Phy<m1, l1, t1> l, Phy<m2,l2,t2> r)
{
 return Phy<m1+m2,l1+l2,t1+t2>( l * r );
}

みたいな。
5628:02/09/12 21:12
構造化例外を解説しているところを見つけました。
英語が不得手な私でも割とスラスラ読めたりしてます。

A Crash Course on the Depths of Win32 Structured Exception Handling
http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0197/exception/exception.htm
5731:02/09/19 08:48
catchを実装しようとして、その前に、オブジェクト指向言語なら
例外コード→オブジェクトの変換が必要と考えました。

で、例外オブジェクトですが、もし文字列などの可変長要素を持つのであれば、
それを破棄するタイミングも考えなければいけません。
普通に考えたらcatch節を抜ける際に破棄されるべきでしょうけれど、
catch節でまた例外が起きる事も考えたら、

catch( ... )
{
 try
 { 処理 }
 finally
 { 例外オブジェクトの破棄 }
}

としなければならないのでしょうか。
もっといい手は無いものか。
5831:02/09/19 08:52
×実装○試す

実際にどんな言語を作るのかも考えて無いな〜。
総称を使えるようにして、あれもこれも…と夢は膨らむのですが、
膨らませれば膨らませるほど自分の実力では作れそうにないのが難です。
C++だと、throw中、catch中の例外発生 => 即terminate()
じゃありませんでした?

例外中の例外ってかなり致命的な状況だし(逆にユーザーはそうでないコードを
書くべきでない)、それでも悪くないと思います。
6028:02/09/19 16:06
ちょっと身の回りがごたついていたので書き込みが止まっていました。

>>59
catch節の中で、例外が発生すること自体は問題ないと思います。
といっても余り使ったことないので自信はなくて、
別の例外オブジェクトを使って、再度throwするという用途があるだろうから
というのが理由です。
ただ、デストラクタで例外を発生させるのは、よくないという話は
聞いたことはあります。
コンストラクタ内で例外を起こすのも良くないらしい。
http://www.cmagazine.jp/src/kinjite/cpp/exception.html#index28
6228:02/09/20 02:03
>>57
例の意味があまりよくわかんないんだけど。
catch節の終わりに暗黙のfinallyが存在すると思う。
わざわざtryを書かなくても大丈夫なようにするのではないかと。

>>58
どんな言語を作ろうかってのは、よく考える。
こんな機能を付けようかと思って考えてると、
効率の悪い実装方法しか思いつかない場合が多い。
無理して実装しても、はたして問題は出ないのかとか、
実際にそんな機能使い物になるのか、悩んだりしてる。
6331:02/09/20 19:24
>>62
わかりにくい例ですみません。
catch節を機械語に直す時、中にもうひとつ暗黙のtry…finallyを作らないといけないのだろうか、
二度手間で非効率っぽいなー、という意味でした。

あれから考えたのは、例外を受けとった時点で、EBPと対応させて何処かにリストを作って、
何処かの時点で現在のEBP以下の例外オブジェクトを一掃するような作りにすれば、不要かな。
6428:02/09/21 02:19
>>63
了解です。暗黙なのかどうかわからなかったんで。

C++だとデストラクタの呼び出しをやらにゃならんから、
結局そうしなければ、ならないんじゃないかな。
結構話進んでるね。
自分も、新たな言語+ライブラリを作ろうと思ってるんだが。
とりあえず、諦めずに頑張ってくれい。
(でも結局途中で挫折しちゃうことが多いんだよなあ・・煽りじゃないけどさ)
そんなに難しいことでもないっしょ?
コンパイラを作ろうとすれば難しいが。
まずは、インタプリタでいいんでないの?
>>67
ひょっとして実装のこと言ってる?
66は「設計がうまくいかなくて挫折する」の意。
設計するのって、そんなに難しいもんかねぇ。
ある程度決まってるんなら、実装してみたほうがいいかもね。
7028:02/09/24 00:45
既存の言語と差異化を図らないと、誰も使ってくれない。
その差異の部分がムズい。
>>70
そうそう。そんで色々考えてくと結局既存言語の真似になっちゃってどうでもよくなって挫折する
 順番より、視覚的なのがいい。
慣れたらいいのかもしれないけど。


data 1
    > 1 と 2 の処理内容
data 2


> か < の上下に書かれているものに対して、
< か > の左右に書かれているもので、処理
data の横に注釈を付けたり。
開始・終了記号もいるかな?
まあいろいろと。
なんたりして。
7331:02/09/24 18:46
自分は、むしろ、突飛なものを作ってみたいのですが、
他のスレを読んでいると、ブロックが中括弧以外というだけで気持ち悪いとか
そんな意見をたまに見かけるので、どこまで道を踏み外すかが微妙です。

関数型みたいに引数を遅延評価する手続き型言語で、ブロックも引数として渡せて
IF文すらライブラリで提供する…なんてのを夢想してみたり。
夢想ばかりで固まりません(w
7428:02/09/24 20:46
とりあえず、実用的なものを。
道を踏み外すのはそれからと思っています。

でも、多少夢想はしていて、
実行したい処理を実行キューを追加していって、
キューから取り出しては実行する。
キューが空になったら終了。
手続き呼び出しや、ループもそれで構成。
処理を並列化し易いかなと思ったけど、なかなか…
7528:02/09/25 03:18
>>73
遅延評価はいいなとは思うんだけど、
副作用というか、処理の順番というかその辺りをどう考えりゃいいかわからん。
プログラマまかせでもいいような気もするし。
7628:02/09/26 03:36
>>72
一日放置して改めてみてもやっぱりよくわからんです。

視覚的なものっていうと、回路図のような感じを真っ先に考えてしまう。
処理を表すブロックらを、データの流れを表す線で結びつけてって感じに。
7728:02/09/26 03:41
上げてみてみる。
78デフォルトの名無しさん:02/09/26 07:51
AAをコメントあつかいしてください。
モナーのフキダシにコーディングしたいです。
define 'func(' '.oO('

public void キタ━(゚∀゚)━!!();

public int main() {
 キタ━(゚∀゚)━!!.oO(>>74さん、こんなのどうよ?);
}
80    :02/09/26 19:29
 文で書いたら、横か縦の列になるので、どうしても横長や縦長になって、
視覚的に捉えにくい。
 
8174=28:02/09/27 00:51
>>79
どうでもよくなって挫折しちゃいそうです。
8228:02/09/27 01:22
>>80
別に縦横均等でも、ある程度以上の大きさになると視界からはみ出るから、
似たようなことになりうるように思うけど。

概略を掴むのは視覚的なものの方が楽だと思う。
実際、UMLは視覚的だと思うし。
でも、細部まで視覚的なもので書こうとすると、線が絡むというか、
ごちゃごちゃしてしまうと思う。

オレの「視覚的」の認識がズレているようで何かやだなぁ。
いっそ立体にして、色んな方向から眺めてみるとか。
…昔積み木で表現するのがあったけど、あんまり使いやすそうじゃなかったな…
複雑に絡み合った状態って、文字の方が理解しやすいのかな…
8428:02/09/27 22:18
立体視が可能なディスプレイがあると、立体ものはいいかも。

変数への代入を始点、変数の参照を終点と考えると、
文字の場合でも線(ここではデータの流れ)を考えることができる。
ただ、始点と終点しか見えてない訳だから、
複雑に絡んでいる部分を気にしなくてもよくなる。
文字の方が理解し易いというよりも、複雑さの許容度が高いように思う。

視覚的なものでも、複雑に絡み合ったら、ブラックボックス化とか、
階層化とかすれいいとは思うんだけど、どう判断してよいやら。

あと、文字の方が正確に伝え易そうな感じがする。
>>84
図形は、なまじ具体的で、融通がきかないから、判りにくくなるのかな…
見たい線だけ目立たせたり、引き伸ばして迂回させたりできれば…

階層化とかの判断は、今のところ自力でやるしかなさそうな気がする…
OO だと、クラス単位とかオブジェクト単位とかもあるけど…

図形で正確に伝えるのは、確かに難しそう…
その辺りとか、文字と組み合わせて行く方がいいのかな…
8628:02/10/02 22:52
例外について調べてたときに、C++がハードウェア例外の
サポートを必須にしていないということを初めて知った。
そのときはそれでいいのかと思ったんだが、よく考えてみると、
サポートしないのもありなんじゃないかと思うようになった。
(環境依存するからっていうのは別にして)

ハードウェア例外をキャッチしたい場合ってどういうとき?


それにしても、まだ、例外オブジェクトの生成、破棄のタイミング
調べてねぇや。
8731:02/10/09 03:28
一度あげます。

コンパイラ言語で、クラスにメソッドを後から追加できたり、
インターフェースを後から実装させたりできると、幸せっぽい気がしてるのですが、
名前空間の混乱を起こさないような上手い方法無いかなー?
88デフォルトの名無しさん:02/10/09 07:43
混乱上等
自己書き替えマンセ
89デフォルトの名無しさん:02/10/09 08:09
マジレスすると、
インターフェイス名.メソッド名(引数)
で実装させれば混乱は少ないし、同じクラスに同名のメソッドも複数置けるようになし、
実行時にインターフェイスを追加しやすい。アクセスの手間は増えるけどなー。
UNIXの権限並みのアクセス権を手軽にクラスやメソッドに対して指定できて、実行時にインターフェイスやメソッドの追加・変更・削除ができる神の言語を希望。
39どこいった?
9228:02/10/11 22:29
>>87
MixJuiceがいい感じに解決してる。
 やっぱり書いていいのかな・・
9428:02/10/16 17:50
>>93
話が止まっちゃってるんでいいと思いますよ。

もし、85さんなら、話を折っちゃってスミマセンでした。
>>1
逝ってよし
>>95
突然どうしたの?
必要なリンクがあれば、貼っといてください。
98デフォルトの名無しさん :02/10/30 16:16
マスオの予感(w
99デフォルトの名無しさん:02/10/30 19:44
トークンも入念に選定しなければ。
C++みたいに
vector<vector<int>>
↑ココ
がだめだったりするような仕様だとイヤ。コンパイル早いやつほしいん。
↑どこ?
つーかこんな板でなんかできるわけ無いだろ。バカ
アフォしかいない板ねぇ。
マスオの国から2002〜増殖!!〜
マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
       ∪
マスオの国から2002〜増殖!!〜
マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
       ∪
マスオの国から2002〜増殖!!〜
マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
       ∪

マスオの国から2002〜増殖!!〜
マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
      
マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
       ∪


マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
       ∪

マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
       ∪
マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
       ∪
マスオ降臨中!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                      /⌒ヾ⌒ヽ.
                     /   丿  ..ヾ
                   /   。 人    )
                  (。...。_ .ノ 。ヾ。...丿
                   ( _ .  .. ノ   )
                  /        /
                  / ノ し   /
     三 ̄ ̄ ̄ ̄\    / ) と   /
     /  ____| .  /      /
     /  >     |   /      /
    /  / ⌒  ⌒ |  /     /
    |_/---(・)--(・) |  /     /
    | (6    つ  | /  ..  / / どうやら!!!!!!!!!!
     |    ___ |/   . /  <俺は増殖するらしい!!!!!!!
    \  \_/ / /   /    \_________
 シコ  \___/   /   /
      /     \ / .  /
 シコ  ( ) ゚ ゚/\ゝ 丿.../
      \ ヽ、 (  /  ⊂//
        \ ヽ / ⊂//
        ( \つ  /
        |  |O○ノ \
        |  |    \ \
        |  )     |  )
        / /      / /
       / /       ∪
      
112デフォルトの名無しさん:02/11/02 18:50
さらしあげ
今parser書いてて分からなくなったんだけど、
C++みたいにクラスの定義の中でメソッドを宣言だけしておいて
メソッドの定義はクラス定義の外側に書くっていうのは許容するの?

ClassName::Method(param)
{
}
みたいなやつ。
114113:02/11/03 07:59
あと、総称の構文が現状の
クラス名 : class [ 総称リスト] (継承リスト) {

の形だと、C++のtemplateより機能が弱い。

「自由変数」と「束縛変数」の区別が付かないので
C++みたいなテンプレートの部分特殊化が不可能な気がする。

aliasの構文を
別名 : alias [総称] 何か;
に拡張すればこれで代用できるかな。
1
2
3
4
5
6
7
>>113
http://isweb43.infoseek.co.jp/computer/am_dev/archives/draft.txt
これのparser書いてるの?
とりあえず、自分の判断でやってしまえばいいと思いますよ。

>>114
総称に<>ではなく[]を使っているところから、Eiffel風の総称を想定しているように
思います。その場合、部分特殊化はなくて、制約された総称という概念が
出てきます。
C++のテンプレートにしろ、Eiffelの総称にしろ、使い倒したわけではないんで、
どちらがいいのかはよくわかりません。

とにかくがんばってください。
 右脳なプログラミング環境について、書いてみていいでしょうか
ちょっとニュアンスがちがう。
125122:02/11/04 00:00
制約された総称が、部分特殊化に取って代わるかのように書いちゃってますね。
そういう意味で書いたわけではないです。
126113:02/11/04 00:03
>>122
Eiffel、読んだことはあるけど書いたことはない言語です……。
つまりはよく分かってない。

過去ログにあったEiffelの資料見ながら勉強し直しますです。
頑張ってみます。
>>122
>総称に<>ではなく[]を使っているところから、Eiffel風の総称を想定しているように

比較演算子を括弧に使ってしまうと、(C++同様)構文上のちょっとした罠ができてしまうので、
単純に<>を避けただけだったような…。
128122:02/11/04 01:25
>>127
前スレを調べたら512-517辺りに書いてありました。

C++かEiffelかどっちにするというのは、結局結論がでていないって
ことでいいのかな?(少し読んだけどわからん)
C 以外は糞
+1
131名無し募集中。。。:02/11/06 21:01
開発される言語の名前は「ののたん」に決定
132VB太郎:02/11/06 21:06
教えてください。〜
NT4.0間の端末で
端末Aから端末Bのサービスを操作または情報取得するような
API関数の組み合わせ教えてください。(可能であれば
133VB太郎:02/11/06 21:08
スレ間違えました。
134VB太郎:02/11/06 21:09
>>133
どこ行ったらいい?
( ^▽^)<適当な質問スレかVBスレでどうですか? Yahoo!に逝けば厨房が相手してくれますよ♪
136デフォルトの名無しさん:02/11/06 22:40
137名無し募集中。。。:02/11/06 23:07
>>135
おまいつ
138でらえもん調味料:02/11/06 23:21
>>137
+0.4
140デフォルトの名無しさん:02/11/12 19:05
実際のところ進捗はどうなのよ
141前スレの1:02/11/12 19:42
前スレさえ全然読んでません。
スマソ
142本スレの1:02/11/12 20:22
前スレの内容は一通り目を通したはずなのですが、
余り覚えていません。
ドラフトは全部は目を通していません。
スマソ
( ´D`)( ´D`)( ´D`)( ´D`)( ´D`)
http://www.ruitomo.com/~gulab/search.cgi?k=%28%81%40%81L%faD%81M%29&2=50
( ´D`)( ´D`)( ´D`)( ´D`)( ´D`)
144デフォルトの名無しさん