【超高速】C/C++に代わる低級言語を開発したい 6
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/05/16(日) 22:16:21しかし、2010年の今、もしもCが発明されていなかったとして、低レベルなシステム開発のためのプログラミング言語を
新たに作るとしたら、Cとは違う言語になるだろう。少なくとも、全く同じにはならないはずだ。
そこで、このスレッドでは、
低レベルなシステム開発のためのプログラミング言語
を一から考えたい。
既存の言語を使って何かをすることが目的ではなく、新たなプログラミング言語を考えることが目的であるから、
「既存のXX言語を使えばいい。」という類の発言は無意味である。
「既存のYY言語のZZ機能は、WWと言う点で有用だから採用したい。」という発言は歓迎だ。
現代の一流のプログラミング言語研究者が、最先端の研究成果を盛り込んで、
一から低レベルなシステム開発のためのプログラミング言語を作るとしたら、どのような言語になるだろうか、
という観点で考えたい。
◆前スレ
【超高速】C/C++に代わる低級言語を開発したい 5
http://pc12.2ch.net/test/read.cgi/tech/1273199795/
0002デフォルトの名無しさん
2010/05/16(日) 22:17:13(1)ハードウェアを直接操作する低レベルの記述が可能
(2)プログラマーが勘違いしてプログラマーの意図と違う動作をしないように言語仕様が直感的で学習が容易
(3)最新のオサレ機能が使えてワクワクしながらプログラミング可能
◆主な要望◆
・デバドラ屋だって、オサレ言語で開発したい!
・プログラマーの言語仕様の学習不足によるヒューマンエラーを最小限にするために、できるだけ小さな言語仕様にしたい。
・組込み屋だけど、関数型とダックタイピングしたい。
・shared_ptrの構文糖が欲しいな
・低レベル記述性(絶対条件) > 構文の美しさ(読みやすさ、学習の容易さ) > 再利用性(抽象性)
・算術演算以外の演算子は後置
・割込み、例外、非同期IOとかを統一扱えるイベント機能が欲しい。
0003デフォルトの名無しさん
2010/05/16(日) 22:31:03Programming Language I
◆新言語の位置づけ◆
Ruby, Python, Haskell, OCaml, Scala, Clojure, Erlang, …
烏合のごとく言語が生まれてきているのにどれも似たようなLLばかりで、ハードウェア制御のような低レベル処理を行える言語が無い。
一方、Cは40年使われ続けてきているわけで、そろそろ置き換えられる言語が出てきてもいいだろう。
そこで、C程度の性能が出せて、Cが使われている分野を全てカバーでき、
過去の互換性に囚われて構文を妥協せず、今時の機能を使えてCよりもプログラミングしやすい新言語を作りたい。
◆新言語でのリソース管理方針◆
・確保したリソースを明示的に後始末しなくても問題が発生しない
・何らかのメリットのために確保したリソースを明示的に後始末してもよい
※GCは手段であって上記が満たされていれば必ずしも必須ではない。
0004デフォルトの名無しさん
2010/05/16(日) 22:32:110005デフォルトの名無しさん
2010/05/16(日) 23:22:180006デフォルトの名無しさん
2010/05/16(日) 23:42:010007デフォルトの名無しさん
2010/05/16(日) 23:47:180008デフォルトの名無しさん
2010/05/17(月) 00:27:36言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0009デフォルトの名無しさん
2010/05/17(月) 00:33:03未だにVMだのJITだの言いだす奴らが後を絶たない。
0010デフォルトの名無しさん
2010/05/17(月) 01:12:42C#で書かれたプログラムでHDDのファームウェアを更新するのだってある時代だぞ
0011デフォルトの名無しさん
2010/05/17(月) 01:15:030012デフォルトの名無しさん
2010/05/17(月) 01:29:24Cでも大きすぎる
0013デフォルトの名無しさん
2010/05/17(月) 01:34:490014デフォルトの名無しさん
2010/05/17(月) 02:33:16kwsk
0015デフォルトの名無しさん
2010/05/17(月) 03:04:000016デフォルトの名無しさん
2010/05/17(月) 04:24:520017デフォルトの名無しさん
2010/05/17(月) 07:15:110018デフォルトの名無しさん
2010/05/17(月) 07:44:10SC CiSE Template Haskell MetaOCaml CamlP4
Prologのマクロ、演算子定義
Dylan Nemerle Boo Cyan
Cleanで作るインタプリタ C式 Compact ftdop4
0019デフォルトの名無しさん
2010/05/17(月) 07:57:40流れとまとめはどこだ
0020デフォルトの名無しさん
2010/05/17(月) 11:19:42全部似たような流れの糞スレと見た
0021デフォルトの名無しさん
2010/05/17(月) 11:38:420022デフォルトの名無しさん
2010/05/17(月) 12:24:17当然64bitマシン対応だよな
ニーモニックを直接書けるようメモリアドレス確保する専用の汗・逆汗変換機能が欲しいかもしらん
0023デフォルトの名無しさん
2010/05/17(月) 14:31:54C--がそういうコンセプトだし珍しくなかろう。
竹内先生はOSやアーキテクチャがガベコレを支援して然るべきと言ってるし。
0024デフォルトの名無しさん
2010/05/17(月) 15:15:490025デフォルトの名無しさん
2010/05/17(月) 16:33:360026デフォルトの名無しさん
2010/05/17(月) 17:52:33ガベコレが無いとメモリリークで落ちるんです。
わかってください。
0027デフォルトの名無しさん
2010/05/17(月) 17:56:300028デフォルトの名無しさん
2010/05/17(月) 19:31:540029デフォルトの名無しさん
2010/05/17(月) 19:44:19ごく一部アセンブラ。C++ではない。
性能的にはハードの理論値90%以上は出せた
新言語はこれ最低ラインにしてくれ
0030デフォルトの名無しさん
2010/05/17(月) 20:22:030031デフォルトの名無しさん
2010/05/17(月) 21:38:33SiliconImageのドライバの出来が悪いのはCで書かれてるからなのか
0032デフォルトの名無しさん
2010/05/18(火) 00:45:09ガベージコレクションあってもメモリリークで堕ちることはあるが。
0033デフォルトの名無しさん
2010/05/18(火) 03:13:18その通り。最終的にはプロファイルしながらuS以下の単位で手動オプティマイズ
>>31
SIじゃないよ。もっとマイナーw
でドライバじゃなくファームなw
0034デフォルトの名無しさん
2010/05/18(火) 14:16:280035デフォルトの名無しさん
2010/05/18(火) 18:44:15http://golang.jp/pkg/unsafe
0036デフォルトの名無しさん
2010/05/18(火) 18:46:110037デフォルトの名無しさん
2010/05/18(火) 18:58:38struct A { A a = new A(); A a2 = gcnew A();}
A a1(){ return new A(); }
A a2(){ return gcnew A(); }
A a = a1();
a = a2();
というようなことをしたとする。
どれがGC対象でどれがGC対象ではないかはアドレスで判断できる。
しかし、gcnewした値をnewした変数が参照している場合
GC対象にするにはどうしたらいいのだろう?
gc対象外のオブジェクトは保守的にGCする?
それとも、すべてGC対象にしつつ
deleteすればたとえ参照が残っていても開放する?
すべてをGC対象にする場合は完全に型情報を把握できる?
完全に型情報を把握できない場合はどうする?保守的GC?
0038デフォルトの名無しさん
2010/05/18(火) 19:29:40それよりで混在の問題はGC型で確保したデータを返すゲネレータパターンの引数にデストラクタ処理されるデータを渡した場合の不整合のほうが深刻
0039デフォルトの名無しさん
2010/05/18(火) 19:31:09コンサバティブだと思う
簡単なプログラムでだが
mmapしたメモリをsliceに
貼り付け出来て走ってたが。
0040デフォルトの名無しさん
2010/05/18(火) 23:03:020041デフォルトの名無しさん
2010/05/19(水) 01:32:04あと、その逆も。
0042デフォルトの名無しさん
2010/05/19(水) 01:37:070043デフォルトの名無しさん
2010/05/19(水) 01:40:070044デフォルトの名無しさん
2010/05/19(水) 01:56:530045デフォルトの名無しさん
2010/05/19(水) 02:06:15GCアリ用に書いたコードをGCナシ用に簡単に書き変えられる構文を設計するのが面倒ってこと?
それとも、
GCアリ用に書いたコードをGCナシ用に書き換えるのはどんな構文にしたとしても常に面倒ってこと?
0046デフォルトの名無しさん
2010/05/19(水) 02:22:40でも管理エリア外のメモリはGC対象外ってことでいけんじゃね
ていうか、GCの問題はメモリ以上に、実行が途中で不定な時間止まることだろ
0047デフォルトの名無しさん
2010/05/19(水) 02:35:170048デフォルトの名無しさん
2010/05/19(水) 11:00:09collectableとstaticやautoは同時指定できず、無指定時のデフォルトはauto指定。
行頭で collectable: と指定すれば、それ以降のスコープブロック内では無指定でcollectable指定。
同様に collectable{ ... } とすれば、そのブロック内では無指定でcollectable指定。
autoやstaticも同様に指定できる。
GCの実装はコンパイラ依存とし、既存GCライブラリのラッパーであっても構わないし、OSに投げてもVMに投げても良い。もちろん独自実装だって構わない。
GC指定された変数を非GC指定へ渡す際は要キャスト(というか、ハードコピー)とすれば、不整合は起こりにくく出来るのでは?
もちろん、その場合はメモリをちゃんとプログラマ側で確保してあげるべきで、自動化してはいけない。
その際の構文は...
('A`)ノシ アト ハ マカセタ
0049デフォルトの名無しさん
2010/05/19(水) 13:25:42>不整合は起こりにくく出来るのでは?
それだと不整合は起こりえるので全く使い物にならないから
言語サポートしたとはいえない
よく考えてから書け
0050デフォルトの名無しさん
2010/05/19(水) 13:30:280051デフォルトの名無しさん
2010/05/19(水) 14:58:04ブロック内でGCとか意味ないってことに気づけよ
変数単位じゃなく確保されたメモリ自体の管理だからな
gcnewとかいう半端な仕様なんて汚いだけ
ここはファームやドライバ書ける言語の話じゃねえの
Windowsしか知らないでプログラム組むならなんぼでも選択肢あんだろ
0052デフォルトの名無しさん
2010/05/19(水) 15:48:53保守的GCだと管理外は回収されないってだけだよ
中みてないけどw
プログラム的には注意が必要だが便利ではある
特にでかいファイルをmmapできると行儀よく読むより速度が2桁変わるしな
0053デフォルトの名無しさん
2010/05/19(水) 15:53:22少し違和感があるんだけど、Windowsって大きなメモリー領域確保
すると遅くなるの?
0054デフォルトの名無しさん
2010/05/19(水) 17:00:33ほとんどのシステムで大きなメモリ領域をとると遅くなるが
抜け道的にGC対象外のエリアを使えるのと使えないのでは書ける範囲がだいぶ違う
例えばDBのエンジンとかその底のファイルアクセス部分とかね。
上の方はGCアリでいいが、下はむしろ有害だったりするし。
まあ俺はシステム屋、組み込み屋だからGCで不定時間停止とか
割り込みから使えない方が問題だがw
0055デフォルトの名無しさん
2010/05/19(水) 17:11:050056デフォルトの名無しさん
2010/05/19(水) 17:18:03>ほとんどのシステムで大きなメモリ領域をとると遅くなるが
ならねーよ。バカ。
0057デフォルトの名無しさん
2010/05/19(水) 17:34:04今要望が出てる機能だけで簡単(?)に作成してみればいい
0058デフォルトの名無しさん
2010/05/19(水) 17:58:190059デフォルトの名無しさん
2010/05/19(水) 18:17:480060デフォルトの名無しさん
2010/05/19(水) 22:09:05C++/CLIは.Net FrameworkのC++マネージ拡張を簡単にしたものなんだ。
知らなかった。orz
ポインタとハンドルがあって、ハンドルはGC対象ってわけか。なるほど。
ちゃんと触ってみるかぁ
0061デフォルトの名無しさん
2010/05/20(木) 01:04:35理由言えバカ!勉強にならねーだろ。
56がバカかどうかわからないけど、
メモリ領域を大きく取る
=> 物理メモリ外か?
YES=> エラー or スワップから変換
NO => アドレッシング解決による3サイクルアクセス
って感じで分かれないの?
ばかだなーって思ったやつは検索用語か読んどけ本書いていけ
0062デフォルトの名無しさん
2010/05/20(木) 01:18:30何度も言うけどこのスレは勉強会のスレじゃないよ。
バカは黙ってろって何度言えば分かる?
勉強会のスレッドに不足してるわけでもないし、
このスレで勉強会始めるなよ。
0063デフォルトの名無しさん
2010/05/20(木) 01:36:00キャッシュ忘れんなよ
特に組み込みのCPUなんかで動画扱うと
桁変わる位速度が違う
0064デフォルトの名無しさん
2010/05/20(木) 01:59:48学術的な話するのに勉強はするないうのはおかしいんじゃない?
勉強会スレってあるの?
0065デフォルトの名無しさん
2010/05/20(木) 02:01:340066デフォルトの名無しさん
2010/05/20(木) 02:30:51中にはまともなの?もある
>>56みたいなのはバカといわれても文句は言えんな
0067デフォルトの名無しさん
2010/05/20(木) 02:32:250068デフォルトの名無しさん
2010/05/20(木) 03:30:43^がポインタ演算子ならぬ、ハンドル演算子みたいに働いてGC用型になり
ref classがGC対象クラスになるということが分かった。
GCなしがベースでGCありにしたいときに特別な修飾ができればいいんだな。
ポインタ操作はunsafeなライブラリが受け持つことにして隠蔽してしまえば
ハンドルとプリミティブだけでプログラムできる。
通常はjavaみたいにプリミティブと参照される型だけあるようにする。
A* a = new A()じゃなくA a = new A
stack A a = new A()等とするとスタックにメモリ確保されて
スコープから抜けると開放される。
A^ a = gcnew A
でgc対象にできるって感じでgc有り無し共存できたらいいかなぁ?
C#にアンマネージド機能を追加した感じで。
0069デフォルトの名無しさん
2010/05/20(木) 11:24:19Hot Spot VMでは参照マップを使ってポインタとそうでないものを区別してるそう。
0070デフォルトの名無しさん
2010/05/20(木) 11:52:470071デフォルトの名無しさん
2010/05/20(木) 15:25:23とか?
a = a << 2
if(CARRY_FLG){
}
とかですかね?
フラグの値を取り出してboolとして扱えるような構文
0072デフォルトの名無しさん
2010/05/20(木) 17:43:23アセンブラだと自然に
a = a + b
if(OV_FLG){
a = INT_MAX
}
みたいにできるんだけど、Cとかだと
if (INT_MAX-b<a)
a += b;
else
a = INT_MAX;
みたいにやらないといけないことが多くてまどろっこしい
0073デフォルトの名無しさん
2010/05/20(木) 17:47:24ループしてまで、なんとかスレを伸ばしたいのかな?
そうまでしてスレを伸ばしたいのなら、勉強会始めなきゃ
良いのにって思う。議論が進みそうになると勉強会初めて、
ネタに尽きるとループっていうのは2chの悪い所。
何時までたっても同じところから前に進めない。
つまり、バカが書き込むのはよくないと思う。
0074デフォルトの名無しさん
2010/05/20(木) 18:00:44#define INT_CLIP(x) (int)(MAX((long)INT_MIN,MIN((long)INT_MAX,(long)x)))
a = INT_CLIP(a + b);
こう書いとけばコンパイラが勝手に最適化してくれるぞ
0075デフォルトの名無しさん
2010/05/20(木) 18:14:16おまえ・・・ループしてね?
0076デフォルトの名無しさん
2010/05/20(木) 18:17:46それが結構してくれねーんだ
律儀にビット拡張して計算してコンペアして分岐してくれる
0077デフォルトの名無しさん
2010/05/20(木) 18:22:20暗黙の型変換が仕様なので、暗黙の型変換後を最適化する
普通の最適化だと無理なんだよね。
字句解析→構文解析、この辺で情報が落ちてしまいがち
でも、これもコンパイラの勉強会の話ですれ違い。
バカはどっか行け
>>75
俺もそう思う
0078デフォルトの名無しさん
2010/05/20(木) 18:38:350079デフォルトの名無しさん
2010/05/20(木) 23:16:24ってことで
0080デフォルトの名無しさん
2010/05/20(木) 23:31:41基本ブロック単位でプログラムできるようです。
これこそ超高速C言語なのかもしれないですね。
よくわかってないですが、基本ブロック単位で関数みたいに出来るのかな?
0081デフォルトの名無しさん
2010/05/20(木) 23:46:28VMとかGCとか遅くなる要素が無くて、C程度に速いオサレな言語だから。
0082デフォルトの名無しさん
2010/05/20(木) 23:49:030083デフォルトの名無しさん
2010/05/20(木) 23:55:12現スレッドオブジェクト current
現スレッドのALUオブジェクト current.alu
現スレッドのALUオブジェクトのキャリーフラグ current.alu.flag.carry
現スレッドのALUオブジェクトのゼロフラグ current.alu.flag.zero
using current.alu.flag;
でcurrent.alu.flagを省略できるとか。
0084デフォルトの名無しさん
2010/05/21(金) 00:19:34ただ、クラスがあったりする。
ポインタを使いたい場合はunsafe内で使える。
だけどVM不要な人がいちいちunsafeは書きたくない問題が残る。
例えば、unsafe:って書いておけばunsafeになるくらいだといいのかもしれない。
class C{
static void Main(){
unsafe {
int n;
int* pn = &n;
byte* p = (byte*)pn;
0085デフォルトの名無しさん
2010/05/21(金) 00:20:41CBCはC言語の問題点を克服したパラレルCなんですね。
0086デフォルトの名無しさん
2010/05/21(金) 01:49:18面白そうだからみてみたら
これの継続って引数付きgotoですな
一応戻るようなのも書けるみたいだが
ループのたびに継続作るのは
まとまったコードを書くのはキツそう
0087デフォルトの名無しさん
2010/05/21(金) 01:55:10なんだよ。現スレッドって。
キャリーやフラグは扱えたら面白いが
最適化で実行順が変わるとアウトだし
CPUで挙動が異なるのがねー
0088デフォルトの名無しさん
2010/05/21(金) 05:49:29int* x = stackalloc int[N]でスタックからアロケーション可能だけど
すべてのオブジェクトはGCで管理されるのでGCによって消される可能性がある。
対策として
fixed(double* p = &c.re){
*p = 10;
}
等としてfixedの間はGCが行われないようにすることができる。
ということで、C#の場合はGCありきな言語でポインタ操作もできると。
0089デフォルトの名無しさん
2010/05/21(金) 06:04:070090デフォルトの名無しさん
2010/05/21(金) 06:12:27早漏の >>1 の後始末なんて知ったこっちゃない。
0091デフォルトの名無しさん
2010/05/21(金) 06:15:00http://www.pllab.riec.tohoku.ac.jp/slides/ppl2007sli.pdf
SML#の#は.Net Frameworkの前からあってレコード演算子"#"を象徴するものと
0092デフォルトの名無しさん
2010/05/21(金) 06:17:38ビックリマン登場
参照の必要があればGCしないほうがいい
0093デフォルトの名無しさん
2010/05/21(金) 07:33:210094デフォルトの名無しさん
2010/05/21(金) 08:56:43言語自体を限りなくコンパクトにして、豊富なライブラリを標準で付ける。
ライブラリとして分離されていればメンテしやすいのは自明。後から新技術を採用するのも容易。
つまり、GCとかVMとかライブラリでどうにでもなることは後で考えろ、ということ。
まず決めるべきは上っ面、構文のみである。
0095デフォルトの名無しさん
2010/05/21(金) 09:07:070096デフォルトの名無しさん
2010/05/21(金) 09:08:19あと、GCやVMに言語が一切関係してなくて、ライブラリで実現してる例ってあるのかな?
あるなら教えてほしいもんだが。
0097デフォルトの名無しさん
2010/05/21(金) 09:24:06その前に何故GCやVMが「言語の機能」だと思い込んでるの?
そっちのほうが不思議だわ
0098デフォルトの名無しさん
2010/05/21(金) 09:47:13その前に何故GCやVMが「ライブラリだけで実現」できると思い込んでるの?
そっちのほうが不思議だわ
0099デフォルトの名無しさん
2010/05/21(金) 09:49:110100デフォルトの名無しさん
2010/05/21(金) 09:55:040101デフォルトの名無しさん
2010/05/21(金) 10:15:23実行時の機能だから
おまえは言語の機能とパーサ以降の機能を分離できてない
0102デフォルトの名無しさん
2010/05/21(金) 10:21:33頭のなかだけで分離していて現実を見てない人の気配がするお。
0103デフォルトの名無しさん
2010/05/21(金) 10:29:240104デフォルトの名無しさん
2010/05/21(金) 10:56:080105デフォルトの名無しさん
2010/05/21(金) 10:58:500106デフォルトの名無しさん
2010/05/21(金) 11:20:550107デフォルトの名無しさん
2010/05/21(金) 11:23:17低能が我慢できずに反してきたか。
それだけしか言えないか?
0108デフォルトの名無しさん
2010/05/21(金) 11:58:26だから組み込む必要はない(ライブラリでいい)ねって話だろ。何か問題でも?
0109デフォルトの名無しさん
2010/05/21(金) 12:03:53うん。それ以外に言う必要ないし
0110デフォルトの名無しさん
2010/05/21(金) 12:06:210111デフォルトの名無しさん
2010/05/21(金) 15:58:01GC 必須になるオサレな構文が、
0112デフォルトの名無しさん
2010/05/21(金) 16:48:07VMは影響しない
低レベルでGCありならgolang
無しならCで決まりじゃね
C++の末えいはみな悲惨
0113デフォルトの名無しさん
2010/05/21(金) 16:48:570114デフォルトの名無しさん
2010/05/21(金) 16:52:06クロージャや継続ですねわかります
0115デフォルトの名無しさん
2010/05/21(金) 18:01:43オブジェクトのインスタンスをスコープを外して永続化したいとき以外
newを使えなくしてしまえば良いんじゃないかな。
するなといってもしてしまうのが人の常なので、newの構文は長くしよう。
奇数行だと、new_allocate_heep_memory_i_need_I_want_majide_majde
偶数行だと、new_allocate_heap_memori_I_need_i_want_maide_majide
こうやって無茶苦茶書きにくく、長く書く必要があれば嫌な感じがして、
となれば使うのを控えると思う。
後、スコープを外れてメモリーリークを避けるために、ローカル変数への
代入は永続変数の代入が無ければ、コンパイルエラーってことにすれば
良いと思う。
0116デフォルトの名無しさん
2010/05/21(金) 18:10:340117デフォルトの名無しさん
2010/05/21(金) 18:26:02って考えると、オブジェクト指向のhave a関係が
大雑把過ぎると思うんだよね。
人間には手がある。とその人は本を持ってる。
英語だとどちらもhasで表現されるけども、日本語では
単語レベルで概念が分かれてて、「ある」と「持ってる」
違った単語で表現するよね。プログラミングでもこの概念を
分けないと駄目だと思う。
英語詳しくないんだけど、have theとhave aで良いのかな?
have the でそのインスタンスを明確化して、参照やポインタを
持つのはhave aで表現する事にすれば、良いのではないかな?
0118デフォルトの名無しさん
2010/05/21(金) 18:35:20equipmentじゃないかと。
0119デフォルトの名無しさん
2010/05/21(金) 18:37:41という事で、クラス定義の文法は
class Human
{
have the char name[40];
have the int age;
have a int money;
have a car* private_car;
}
とすれば色々判って便利だと思う。
0120デフォルトの名無しさん
2010/05/21(金) 18:38:40ガンキャノンのキャノンは外せない
外せたら、それガンキャノンやない、ガンや!
0121デフォルトの名無しさん
2010/05/21(金) 18:41:57そういうこと、文法でそこを縛ってやれば、
メモリーリークも見つけやすく自動化も楽になると思うんだ。
プログラムも組みやすいだろうし。
0122デフォルトの名無しさん
2010/05/21(金) 18:51:00考えられる多重度って
0..1と1の二種類じゃないし、構文だけでどうにかしようってのは
あまり現実的でないと思うと思うが
Cライクな言語において、0..1の多重度を表現するのにNullポインタ的なものを
使うことが多いけど、
少なくとも高級な言語なら、OptionやMaybeがあるべき姿だと思う
Javaや.NETは型安全性を犠牲にした妥協と見える
0123デフォルトの名無しさん
2010/05/21(金) 18:55:00オブジェクト指向プログラミングと、
オブジェクト指向分析の境界で、そのへんがあやふやだから、
そのインスタンスの性質を表してるのに、have関係的に
扱ったりしてややこしくなってると思うんだよね。
have the のインスタンスは、所有してるクラスが死ねばもろともで良いんだよ。
仮にそれを参照(所有)してる他のクラスが生きてるとしても、それは
それを持ってることがおかしいんだよ。
0124デフォルトの名無しさん
2010/05/21(金) 19:00:02砲門を二つ持ってる。
ここでガンキャノンがシャア少佐の工作によって
破壊されてるのに、2門残ったりする。
ホワイトベースhave a ガンキャノン
ホワイトベースhave a 2門
とかやって、バグの原因になるんだよ。
ホワイトベースhave a ガンキャノン
ホワイトベース.数える砲門数()
としなければおかしいんだよ。
0125デフォルトの名無しさん
2010/05/21(金) 19:02:38その参照を返すようなメソッドだのを作らなければいいだけの話では
そうすれば自動的に寿命は所有者と同じになるだろ
プログラムを現実世界の直喩で考えても上手くいかんと思うがなあ
現実を直接的にそのままモデル化しようとするのは
OO初心者が陥りがちな罠では
0126デフォルトの名無しさん
2010/05/21(金) 19:06:27逆>>122みたいなバカな事言い出すのがオブジェクト指向に混乱を
もたらしてる。
class Human{
have the hand[2];
have a handbag_list;
}
どちらも(0..N)関係だけど、意味合いがぜんぜん違う。
0127デフォルトの名無しさん
2010/05/21(金) 19:19:01ああいいたいことは分かった
多重度というより、関連のconst性な
constでいいんじゃねえの
0128デフォルトの名無しさん
2010/05/21(金) 19:36:280129デフォルトの名無しさん
2010/05/21(金) 19:44:28そのときのガンキャノンは、まさしくガンだよ
0130デフォルトの名無しさん
2010/05/21(金) 20:27:10英語の勉強もか。have, belong, is
オブジェクト指向って自然発生的にやってたし
昔Smalltalkとか勉強したから理解が深まった
プリミティブじゃないifとかループとか美しいぜ
C++族の中途半端さが嫌いなやつはいねえのか
0131デフォルトの名無しさん
2010/05/21(金) 20:48:23今ほどのカオスにはならなかったろうに。
0132デフォルトの名無しさん
2010/05/21(金) 20:58:46宣言によっては削ることも出来るが、それはもはやガンキャノンではありえないわけだな
0133デフォルトの名無しさん
2010/05/21(金) 20:58:53マシだろうな
無駄な努力はやめとけ
0134デフォルトの名無しさん
2010/05/21(金) 21:05:370135デフォルトの名無しさん
2010/05/21(金) 21:33:100136デフォルトの名無しさん
2010/05/21(金) 23:13:13それって実行時のオーバーヘッドなく使える機能だよね?
新言語にはぜひ入れよう。
0137デフォルトの名無しさん
2010/05/21(金) 23:16:39C#やらGCの話をしている時点でgolangの圧勝
OS本体はCで書いて、その上はgolangって感じだね
リンカとかコンパイラも書きやすそうだしな
Xprotocolの実装が入ってるし、そういうミドル層を狙ってるんだろう
現実的な解じゃないか
0138デフォルトの名無しさん
2010/05/21(金) 23:29:11それなら、golangは新言語の直接の競合にはならないね。
新言語の主眼はCの置換えだから。
0139デフォルトの名無しさん
2010/05/21(金) 23:31:210140デフォルトの名無しさん
2010/05/21(金) 23:55:320141デフォルトの名無しさん
2010/05/21(金) 23:56:230142デフォルトの名無しさん
2010/05/21(金) 23:56:32Cの置き換え言語の話でGCやらオブジェクトの話してるわけだが?
Cはある意味完成された言語。
だからこそgolangは別な層を目指したんだよ
現行の半端なOOへのアンチテーゼでもあるな
0143デフォルトの名無しさん
2010/05/22(土) 00:03:59C++みたいなテンプレートは別に要らないけど
0144デフォルトの名無しさん
2010/05/22(土) 00:04:53golangがCとの共存を目指しているなら、golangがカバーしない部分では競合にはならない。
新言語はgolangと共存してもいいし、共存するくらいなら新言語だけを使ったほうがいいね。
0145デフォルトの名無しさん
2010/05/22(土) 00:08:280146デフォルトの名無しさん
2010/05/22(土) 00:11:11君はCPU固有言語君じゃないか?
頭をC#/C++/Winから離した方がいいよ
0147デフォルトの名無しさん
2010/05/22(土) 00:12:160148デフォルトの名無しさん
2010/05/22(土) 00:18:47俺エスパーかと思ったが違ったか
Cは英語みたいなもんだ。超えるのは難しいぞ
0149デフォルトの名無しさん
2010/05/22(土) 00:19:54使える分には構わないけど
0150デフォルトの名無しさん
2010/05/22(土) 00:27:55どうせ入れるなら最初から前提にしたらいい。
スレの意味はなくなるがw
>>144
C++すらホントの低レベルじゃ使われてない事実を考えて見てはどうだろう。
0151デフォルトの名無しさん
2010/05/22(土) 00:28:570152デフォルトの名無しさん
2010/05/22(土) 00:32:04>C++すらホントの低レベルじゃ使われてない事実を考えて見てはどうだろう。
だからこそ、低レベルで本当に「使える」新言語を作るんだろ。
0153デフォルトの名無しさん
2010/05/22(土) 00:35:25> C++すらホントの低レベルじゃ使われてない事実を考えて見てはどうだろう。
使っちゃ悪いということはないんじゃない? Cで出来る事は何でもできるんだから。
eCosはかなりの低レベルだと思うけどC++で書かれている。
0154デフォルトの名無しさん
2010/05/22(土) 01:30:29「既存のXXXはダメだから、新言語もダメだ」
ではなく、
「既存のXXXはダメだから、新言語はこうしよう」
という議論を期待したい。
0155デフォルトの名無しさん
2010/05/22(土) 01:54:330156デフォルトの名無しさん
2010/05/22(土) 02:42:17ん?あれCじゃないか?
C++のサポートはあったと思うが。
C++がCと同じことが出来るのは
比較的上の世界だよ
前向きにいうなら、Cの代替じゃなく
C++/java/C#の代替を考えたらどうだろう
ブートローダやOS、組込みなんかの
ベタな世界を知らないで
Cの置き換えを考えるのは無理と思うよ
0157デフォルトの名無しさん
2010/05/22(土) 02:49:50知り合いがC++使ってRTOS作ってたが
ブート部分は苦労してたな
世界を二つ作らないといけないし
リアルタイムな時間の保証も考えると
結局virtualはほとんど無し
クラス階層も浅めでやってたな
俺はCで書いたが、性能や時間保証は
余り苦労しなかったかな
0158デフォルトの名無しさん
2010/05/22(土) 02:52:11> java/C#の代替を考えたらどうだろう
スレ違い
0159デフォルトの名無しさん
2010/05/22(土) 02:54:03> C++がCと同じことが出来るのは
> 比較的上の世界だよ
Cに出来てC++に出来ないこととは?
0160デフォルトの名無しさん
2010/05/22(土) 03:14:12例えばmain以前の部分や
プアなCPUやメモリの組込みなんかは?
書けなくもないが、C++てより
ただのCとして使うことになる
>>158
GCやらクロージャやら
オブジェクトがうんたらとかの話ばっかだろ
スレ違いじゃないと思うがな
0161デフォルトの名無しさん
2010/05/22(土) 03:22:15> 例えばmain以前の部分や
> プアなCPUやメモリの組込みなんかは?
それって、Cに出来てC++に出来ないことなの?理由は?
> ただのCとして使うことになる
それでもC++であることには変わりない。
0162デフォルトの名無しさん
2010/05/22(土) 03:26:41子供かよw
要するに
その場に書いてないコードが走ったり
余分にメモリ食って
余分なセットアップがいるC++は
最初から使わないんだよ
動的なメモリすら使わない世界な
0163デフォルトの名無しさん
2010/05/22(土) 03:33:40で、>>159の質問には答えないの?
> 子供かよw
これで逃げるなら別にいいけど。
0164デフォルトの名無しさん
2010/05/22(土) 03:42:32C++がC++として機能する前は何で書くんだ?
スタティックなコンストラクタ呼び出しやら
スタックやメモリ初期化周りとかな
C++の機能を全く使わずに書いてもC++なのか?
まあ、暇だからいいけど
現実に選択肢に入らないんだから
言葉遊びならこれ位に。
0165デフォルトの名無しさん
2010/05/22(土) 03:49:11だから、それは、「Cに出来てC++に出来ないこと」の説明ではないだろ。
CはXXXが出来る。しかし、C++はXXXが出来ない。
端的にXXXを答えればいい。
0166デフォルトの名無しさん
2010/05/22(土) 04:04:31Cに出来てC++に出来ないことがあると論陣を張り続けるには無理がある。
ハンバーグとハンバーガーを比べてハンバーガーには肉が無いと言ってるようなものだ。
0167デフォルトの名無しさん
2010/05/22(土) 04:20:020168デフォルトの名無しさん
2010/05/22(土) 04:22:14俺はハンバーグセットを頼むけどなw
>>166
余分なものが付いているから使われない世界もあるんよ。
Cとしてか使わないならそれはC++とは言えんだろってこと。
0169デフォルトの名無しさん
2010/05/22(土) 04:29:190170デフォルトの名無しさん
2010/05/22(土) 04:40:480171デフォルトの名無しさん
2010/05/22(土) 04:55:030172デフォルトの名無しさん
2010/05/22(土) 04:59:56ほとんど使われてないからどっちでもいいよw
新言語はC並にRAMがまだない状態でも動かせる言語にしてくれ
0173デフォルトの名無しさん
2010/05/22(土) 05:01:070174デフォルトの名無しさん
2010/05/22(土) 05:41:430175デフォルトの名無しさん
2010/05/22(土) 09:15:54ハンドル型があって共存できればいい。
で、マネージドな関数からアンマネージドな関数を呼び出すときは
GCを止めるフラグを立てて戻ってきたら立て直すのを自動で行ってくれるようにする。
マネージドなプログラムのスタックフレームは完全なGCが可能な情報があれば嬉しい。
マネージドなプログラムではポインタは扱わないでハンドルで扱う。
アンマネージドなプログラムではポインタを扱う。
とすれば融合できそうですね。
managed int main() {// mainがmanagedならgcライブラリをリンク
a();
}
managed struct A{}
struct B{}
managed int a(){
String s = @"str";// マネージドな文字列
A a = new A();
return unsafe();// 自動GC OFF
}
int unsafe() {
B b* = new B();
auto B b2* = new B(); // autoが付くとスタックから取得する。
delete b;
return 1;
}
0176デフォルトの名無しさん
2010/05/22(土) 09:17:280177デフォルトの名無しさん
2010/05/22(土) 09:29:560178デフォルトの名無しさん
2010/05/22(土) 09:39:07完全なGCが可能になるので、GCのアルゴリズムはライブラリでいいとしても
関数の呼び出し規約の変更と構造体にGCが可能にするための情報の
追加が行えるようにするといいと思うのです。
関数呼び出し時のスタックに何が入っているかも分かるようにするとか。
GC切った状態でならOSも、言語も作れる。
すくなくとも、言語仕様としてGC拡張に耐える文法であるといいと思います。
C++の
B b(3);
のように書いてスタックに変数をというのはやめて
auto B* b = new B(3);b.a
のように書けたらいいのではないかと。
0179デフォルトの名無しさん
2010/05/22(土) 09:51:53しきりにGCGCとわめいてるクズ共はそういう世界を考慮していない根本から間違った奴ら
どうしても採用していならまずCPUを占有しないGCを発明してからにしろ
0180デフォルトの名無しさん
2010/05/22(土) 09:55:56GC使用を選択可能というのも現実的な解だと思うが
0181デフォルトの名無しさん
2010/05/22(土) 09:59:28ない
GC必須な仕様ではリアルタイム処理は絶対に作れない
タイムスライスを保証できないから
さらにGCがなくても高水準なプログラムは作れる
であれば採用しないのは当然の帰結だ
0182デフォルトの名無しさん
2010/05/22(土) 10:11:410183デフォルトの名無しさん
2010/05/22(土) 10:19:31ゆとりはメモリ管理もできないんだ
許してやれ
0184デフォルトの名無しさん
2010/05/22(土) 10:24:38許してやれ
0185デフォルトの名無しさん
2010/05/22(土) 11:23:21採用可能だが採用しないことも可能という言語仕様なら問題ないだろ。
コード流用の観点から言えば十分に検討の余地がある。
頭固すぎだろ。
0186デフォルトの名無しさん
2010/05/22(土) 11:41:410187デフォルトの名無しさん
2010/05/22(土) 11:59:55リアルタイム処理専用のコンパイラならGCなしで使うようになってたほうがいい。
GCの言語機能はオプショナルなものとする。
GCありが可能なコンパイラでもオプションによってGCありが選択できる。
コーディング規約等にGCありオプションを付けてはいけないことと明記し
徹底することで対応できるのではないかと。
0188デフォルトの名無しさん
2010/05/22(土) 12:16:41何で GC 可能を GC 必須にすり替えるんだ。
0189デフォルトの名無しさん
2010/05/22(土) 12:17:58A a;と書いてスタックに領域が取られるのが不満だ。
D言語だと auto A a = new A();と書くことでスタックに領域が取れるのでそうしたい。
Objective-Cは覚えるのに千本ノックが必要で老いた体に叩き込むのはキツイ。
D言語は保守的GCでマネージアンマネージがスタックフレームにごちゃまぜになってるのが不満。
C#はデフォルトGCありであることが不満で新しい言語はデフォルトGCなしが望ましい。
0190デフォルトの名無しさん
2010/05/22(土) 12:27:22C++/CLI拡張を念頭において新しい言語を作成して欲しいです。
0191デフォルトの名無しさん
2010/05/22(土) 14:56:21それ以外のところではプログラマーが特に意識せずともメモリーリークが起こらないように処理系が良きにはからってくれればいい。
CGは単なる手段だから、後者を実現できるのであればCGである必要は全くない。
0192デフォルトの名無しさん
2010/05/22(土) 14:59:240193デフォルトの名無しさん
2010/05/22(土) 15:02:260194191
2010/05/22(土) 15:08:00GCはgarbage collectionの略
0195デフォルトの名無しさん
2010/05/22(土) 15:13:55GC可能 : 許可
0196デフォルトの名無しさん
2010/05/22(土) 15:16:210197デフォルトの名無しさん
2010/05/22(土) 15:16:370198デフォルトの名無しさん
2010/05/22(土) 15:20:04新言語の仕様に縛られなくていいよ。
0199デフォルトの名無しさん
2010/05/22(土) 15:24:55何が言いたいかよくわからん
リアルタイム計算や少メモリのような要件のないプログラムはGCあり言語で書いて
そういう要件のあるプログラムはGCなし言語で書けばいいのでは?
だって、別のプログラムだろう?
メモリってグローバルな資源だから、特定のプログラムの一部分は
少メモリである必要があるとか、タイムクリティカルでなくていいとか
そういうことって無いと思うし
0200199
2010/05/22(土) 15:27:24割り込みハンドラとかあんのかな、と思うけど
もしそれだけが問題なら、特定のブロックでGCが実行されないようにさえ
出来ればいいんじゃねえの
大抵そういう手段は用意されてると思うけど
0201デフォルトの名無しさん
2010/05/22(土) 15:29:23GCを完全に使わない設定がないと意味が無い
0202デフォルトの名無しさん
2010/05/22(土) 15:31:31いくつも言語を覚えたくない。
0203デフォルトの名無しさん
2010/05/22(土) 15:33:49簡単にそれぞれ移行出来ればいいな。
0204デフォルトの名無しさん
2010/05/22(土) 15:36:15今既に言語1個じゃ仕事にならんだろうに
0205デフォルトの名無しさん
2010/05/22(土) 15:39:50GCとかメモリ管理とか
0206デフォルトの名無しさん
2010/05/22(土) 15:41:12同時に巻き込まれて無効になる仕様があるのは仕方が無いな
0207デフォルトの名無しさん
2010/05/22(土) 16:04:28大きさの変わるオブジェクトの管理が、
ちょっ速になりそうな気がするんだけどな。
テーブルをどこに置くかが問題だがw
0208デフォルトの名無しさん
2010/05/22(土) 16:17:48そんなんこのスレでもさんざん言われてるだろ
オプショナルなGCは保守的になるんだよ
保守的GCは確実に解放していいと判断できるメモリしか解放できない
効果などあってなきが如し
0209デフォルトの名無しさん
2010/05/22(土) 16:44:04それはC言語での話でしょ。
C++では保守的ではないマークアンドスイープが実装できるはず。
0210デフォルトの名無しさん
2010/05/22(土) 18:47:240211デフォルトの名無しさん
2010/05/22(土) 18:59:340212デフォルトの名無しさん
2010/05/22(土) 19:18:05そういうことはオプショナルで且つ保守的でないGCを発明してから言ってくれる?
何が「はず」だヴォケ
0213デフォルトの名無しさん
2010/05/22(土) 19:30:43出来ないと思っている理由は何?
C++はスタック・スタティック確保はコンストラクタ・デストラクタ呼び出すから対応済。
ヒープ確保はnewをオーバーライドすればすべてのインスタンスを追跡できる。
出来ないと思う理由が知りたい。
はずというのはそういう有名なライブラリがないからだができない理由が知りたいわ。
0214デフォルトの名無しさん
2010/05/22(土) 19:32:540215デフォルトの名無しさん
2010/05/22(土) 19:36:51friend というアクセス制限子があるけども、これってオブジェクト指向的に
必須というわけでもないと思うので、friendは廃止して良いよね。
いやいや、そうじゃないfriendが無いと大変な事になる、こういう場合
組めなくなるという意見があれば教えてください。
0216デフォルトの名無しさん
2010/05/22(土) 19:38:24C++のポインタや型はナマだから、何の印もついてないし
ポインタと整数と適当に置き換えたりできるのもCと同じだ
それでなぜC++できちんとしたGCが出来ると思うのか理解できん
0217デフォルトの名無しさん
2010/05/22(土) 19:39:220218デフォルトの名無しさん
2010/05/22(土) 19:42:05出来ないなんて誰も言ってないと思うけど?
根拠も実例も示さず妄想だけで議論を進めるのは危険でしょ。
0219デフォルトの名無しさん
2010/05/22(土) 19:55:03理解してないのはわかった。
0220デフォルトの名無しさん
2010/05/22(土) 19:59:090221デフォルトの名無しさん
2010/05/22(土) 20:54:040222デフォルトの名無しさん
2010/05/22(土) 21:30:03>C++はスタック・スタティック確保はコンストラクタ・デストラクタ呼び出すから対応済。
一般にGCのある言語にはC++でいうデストラクタは無い。ファイナライザやディスポーザはヒープ外リソースの開放のためでデストラクタではない。
ましてや、ファイナライザが呼ばれないかもしれないGC付言語もある。
>ヒープ確保はnewをオーバーライドすればすべてのインスタンスを追跡できる。
この追跡を0オーバーヘッド且つストップザワールド無しで実現できるアルゴリズムが存在しない。存在すれば直ぐに採用されている。
0223デフォルトの名無しさん
2010/05/22(土) 21:32:50あれが汚いと思わないならプログラミングやめたほうがいい
混在させるならGCありをベースにしないと半端になる
構造体はメモリと1:1で余分な追加物無し出ないと
かけないものが出てくる
RTOS並みのマルチスレッド管理をネイティブに言語に組み込めないかね
そういうのベース言語でOS作ってみたいな
0224デフォルトの名無しさん
2010/05/22(土) 21:37:41頭痛が痛いんだ。
RTOSのスレッドをマルチスレッドと呼ぶのはなんか違うような気がする。
なんか違うけど誤解する程度には似てるので、確かに技術的なロードマップ
はありえると思うんだけど。
ただその場合、それは言語じゃなくてOSの話題になるわけで、
その辺り、自分の言ってる事が無茶苦茶にならないように書けてないので、
君は良くわかってないバカだと思う。
2chに限らず、その辺混乱しちゃうだろうから、と丁寧にかけないバカは
たいてい本当にバカ、二百万の書き込みの内ひとつだけ、こうやって突っ込むと
まともな答えが返ってくるけども、君はバカだと思う。
バカ多すぎ。
0225デフォルトの名無しさん
2010/05/22(土) 21:40:52おれはC++はマークアンドスイープ型のGCは実装可能だといいたいんだけど。
一般的なGC言語の話をして何が言いたいの?
>この追跡を0オーバーヘッド且つストップザワールド無しで実現できるアルゴリズムが存在しない。
おれはC++で「保守的ではないマークアンドスイープが実装できる」はずといっている。
なぜオーバーヘッドの話になる?
ちなみにC++で実装可能なら、GCの採用不採用選択を言語が保証することは可能ということになるから
C++の仕様からその特性を抽出すればそのような言語は可能という主張ができる。
もしそうならオーバーヘッドの問題は不採用で回避可能だね。
でそのソースコードをマークアンドスイープ型GC採用のプログラムに流用も可能になる。
0226デフォルトの名無しさん
2010/05/22(土) 21:44:070227デフォルトの名無しさん
2010/05/22(土) 21:44:47オーバーヘッドを無視すればだけどな
実際にはオーバーヘッドがあるために採用できない
>ちなみにC++で実装可能なら
実例出せればカッコイイけどな
0228デフォルトの名無しさん
2010/05/22(土) 21:46:51両立できないんだよね、だが実際それを実装してしまうMicrosoftにそら恐ろしいもの感じるが。
0229デフォルトの名無しさん
2010/05/22(土) 21:47:070230デフォルトの名無しさん
2010/05/22(土) 21:50:43で実装を見せない限り認めないと。自分はただ自説を繰り返すのみ。
プログラムは動作していない限り意味がないのは最終的にはそういうものだけど
ただ否定するだけって何も生まないね。
0231デフォルトの名無しさん
2010/05/22(土) 21:59:01議論の段階は終わったから実装見せてくれ。
実装見せろとか後ろ向きなこというな。
が3スレにわたって繰り返されてる。
勢いを維持したいだけのバカがいるんだよ。
0232デフォルトの名無しさん
2010/05/22(土) 21:59:45アルゴリズムが違うんだからどっちも完全に同じ結果になるような動作をすることはないね。
最大公約数のなかで記述することになるから面倒になることは間違いない。
GCない場合をデフォルトとして公約数内の範囲で記述すればGC採用上でも動作するというくらいだとおも。
0233デフォルトの名無しさん
2010/05/22(土) 22:07:53具体的な指摘とはこれ?
>おれはC++はマークアンドスイープ型のGCは実装可能だといいたいんだけど。
とりあえず、スレタイの[超高速]にマッチしているか指摘して欲しい
0234デフォルトの名無しさん
2010/05/22(土) 22:20:250235デフォルトの名無しさん
2010/05/22(土) 22:24:22そういう質問するレベルなら、書き込むなよ。
初心者すれって山のようにある。
0236デフォルトの名無しさん
2010/05/22(土) 22:31:430237デフォルトの名無しさん
2010/05/22(土) 22:32:34GC肯定派「こういうGCの方式がある、この言語ではこうしてる」
議論が噛み合ってないんだよ、否定派のランタイムが必要に
対して対論を(ランタイムなしで実現できるGC)を出してこいよ
バカの癖に書き込むなよ。
0238デフォルトの名無しさん
2010/05/22(土) 22:34:350239デフォルトの名無しさん
2010/05/22(土) 22:36:06パタリロ・ド・マリネール8世曰く「いらいらする時はカルシウムを取るといい。」
0240デフォルトの名無しさん
2010/05/22(土) 22:38:510241デフォルトの名無しさん
2010/05/22(土) 22:39:240242デフォルトの名無しさん
2010/05/22(土) 22:40:45新言語自身だろうね。
0243デフォルトの名無しさん
2010/05/22(土) 22:41:440244デフォルトの名無しさん
2010/05/22(土) 22:42:08Cかな
0245デフォルトの名無しさん
2010/05/22(土) 22:42:130246デフォルトの名無しさん
2010/05/22(土) 22:43:15そりゃそうだろ。
0247デフォルトの名無しさん
2010/05/22(土) 22:44:080248デフォルトの名無しさん
2010/05/22(土) 23:08:48理解不能ならそんでいいが
並列記述がOS依存な言語じゃなく
逆に言語とランタイムに入れちまうってこと。
CSPみたいなのは微妙だし。
んでOS書いたらOS自体も並列実行させやすいし。
スレッドみたいなんが1stクラスなら
OSの記述レベルがあがる。
シグナルとか例外なんかもあつかえるかな
ま、与太話だが、並列実行=OSありきつーのは想像力なさすぎだ
ディスバッチャなんざコアはランタイムに十分入るくらい小さいしな。
0249デフォルトの名無しさん
2010/05/22(土) 23:13:52せっかくメモリ管理自動にするメリットが
二種類のメモリを管理するコストに相殺されちまう。
0250デフォルトの名無しさん
2010/05/22(土) 23:33:06ヒープとスタックの混在は?
ファイルとメモリーの混在は?
グローバル変数とローカル変数の混在は?
0251デフォルトの名無しさん
2010/05/22(土) 23:41:50言ってる意味がわかりません。
0252デフォルトの名無しさん
2010/05/22(土) 23:45:130253デフォルトの名無しさん
2010/05/23(日) 00:05:43でも、C++ではポインタの追跡ができないんじゃない?
ポインタ禁止、スタックに配列、クラス、構造体の確保禁止、
配列も指定クラスを使いなんらかのマークが付いている。
スマートポインタのみ許可で、スマートポインタには何かマークが付いている。
マネージドなクラスにはクラス情報へのポインタが追加されている。
アンマネージドな関数呼び出し時はNOGC; a(b); GCON;みたいにする。
例外はとりあえず禁止。
等として、レジスタや中途半端な状態のデータだけは保守的にすれば
このへん適当ですけど、完全なGCはできるのかな?
0254デフォルトの名無しさん
2010/05/23(日) 00:13:321つ母音をとるとアンマネージドな意味にすると
そんなに汚くなくかけるんじゃないかなと思ったのですがどう思います?
例)
var a:Int = 0; val a:Int = 0; class A{} struct A{} def a(a:Int){}// managed
vr a:Int = 0; vl a:Int = 0; clss A{} strct A{} df a(a:Int){}// unmanaged
0255デフォルトの名無しさん
2010/05/23(日) 00:15:140256デフォルトの名無しさん
2010/05/23(日) 00:19:310257デフォルトの名無しさん
2010/05/23(日) 00:19:41____
/ \ /\ キリッ
. / (ー) (ー)\ 俺はGC付き言語でGCを作ったことがあるぞ!
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0258デフォルトの名無しさん
2010/05/23(日) 00:20:380259デフォルトの名無しさん
2010/05/23(日) 00:21:30OSは神が造り人に与えるものだとでも思っている?
0260デフォルトの名無しさん
2010/05/23(日) 00:21:50・生ポインタは無し。ただのポインタでもメタデータ付きにするか拡張可能な構造体にする。
・GCは、プリミティブ(ルーチンとか)の管理で必要なら言語として実装する。そうでなければライブラリ
でいいんじゃないの?
もっとプリミティブなポインタとかルーチンの話をしようぜ。
0261デフォルトの名無しさん
2010/05/23(日) 00:23:27> もっとプリミティブなポインタとかルーチンの話をしようぜ。
以前も同様の書き込みを見たが、話をしたいなら自分から話題を振れ。
0262デフォルトの名無しさん
2010/05/23(日) 00:31:230263デフォルトの名無しさん
2010/05/23(日) 00:32:02現存の処理系による制約はあるが、
言語仕様としてはC++/CLIはCをほぼ完全に包含しているのだから、
CでかけるものはC++/CLIでかける。
即ち、C++/CLIでOSをかける。
0264デフォルトの名無しさん
2010/05/23(日) 00:40:01一方、Cはランタイムはなくても言語として成立している。
0265デフォルトの名無しさん
2010/05/23(日) 00:41:31言語仕様としてはC++/CLIはCをほぼ完全に包含している
0266デフォルトの名無しさん
2010/05/23(日) 00:42:26仮にC++/CLIでOS書くとして、低水準な部分は全部#pragma unmanagedでコード書くということ?
たしかにそれでも「C++/CLIで書ける」は偽ではないだろうけど、
CもしくはC++でコンパイルできるコードをわざわざ
C++/CLIコンパイラでコンパイラしているだけという捉え方もできるぞ。
0267デフォルトの名無しさん
2010/05/23(日) 00:43:560268デフォルトの名無しさん
2010/05/23(日) 00:45:29包含してると言っても、水と油が分離している状態だけどな。綺麗に混ざれば問題なかったのだが。
マネージドのクラスのメンバーにC++のオブジェクト変数(ポインタじゃないよ)が作られれば良かったのに
0269デフォルトの名無しさん
2010/05/23(日) 00:46:170270デフォルトの名無しさん
2010/05/23(日) 01:00:16逆に考えるんですね
0271デフォルトの名無しさん
2010/05/23(日) 01:02:27言語仕様の中で上手く統合できるか、綺麗に分離する必要があるかはまた別の議論。
0272デフォルトの名無しさん
2010/05/23(日) 01:11:46C++/CLIみたいなゴミを使いたきゃそっち使えばいい
管理情報振ってGCするとか、どんなハイレベルな言語作る気だよ
脳みそ腐ってるやつらばっかだな
0273デフォルトの名無しさん
2010/05/23(日) 01:23:41シェルは文字列しかないからGC楽勝だろ
0274デフォルトの名無しさん
2010/05/23(日) 01:25:280275デフォルトの名無しさん
2010/05/23(日) 01:33:14GC入れようって訴えてるヤツは「低水準も書ける高水準」を目指してることに気付いてないようだ
本来は完全なスレチなんだが相手するのも疲れた
0276デフォルトの名無しさん
2010/05/23(日) 01:37:520277デフォルトの名無しさん
2010/05/23(日) 01:40:560278デフォルトの名無しさん
2010/05/23(日) 01:42:10許してやれ
0279デフォルトの名無しさん
2010/05/23(日) 01:47:340280デフォルトの名無しさん
2010/05/23(日) 01:49:240281デフォルトの名無しさん
2010/05/23(日) 01:52:230282デフォルトの名無しさん
2010/05/23(日) 02:19:50GC入れちゃうとある程度以下の世界が書けなくかるんだよね
まあmanagedとかの話はほっとくのがいいな
ところで、さっきはアホが寄り付いたが
goroutineとchannelにmutexつかrmcみたいなオペか変数の装飾か
後はレジスタセットみたいな組込みデータ型か
なんてので低レベルな並列言語つーネタはどうよ
0283デフォルトの名無しさん
2010/05/23(日) 02:21:270284デフォルトの名無しさん
2010/05/23(日) 02:21:420285デフォルトの名無しさん
2010/05/23(日) 02:24:13低レベルな言語にGCとか違和感持つ人間は多いんじゃね
0286デフォルトの名無しさん
2010/05/23(日) 02:26:20書き込まれている内容が重要であって、誰が書き込んだかなんて関係ないから。
0287デフォルトの名無しさん
2010/05/23(日) 02:31:490288デフォルトの名無しさん
2010/05/23(日) 02:34:180289デフォルトの名無しさん
2010/05/23(日) 02:35:390290デフォルトの名無しさん
2010/05/23(日) 02:36:34書き込みが目立つだけか
0291デフォルトの名無しさん
2010/05/23(日) 02:41:30GCを使うプログラムも、GCを使わないプログラムも両方書けるようにするには
言語仕様にはGCが入ることが必須になるんだよ。
言語仕様にはGCが必ず入っていて、
その仕様に基づいて作られるプログラムでは、GCを使う、使わないは任意に選べる。
言語仕様にGCが入ったからといって、GCを必ず使わなければならないということはない。
0292デフォルトの名無しさん
2010/05/23(日) 02:43:49GCはメモリの生存時間をシステムに委ねて楽するわけだ
言語仕様も小さくなってきれいになる
楽とミスを減らすための機能なのに
区別して書くとか逆向き
0293デフォルトの名無しさん
2010/05/23(日) 02:44:17そういう意味では言語仕様に含めることはリスクを伴う
CGに反対しているのは自制の意味を込めているのだろう
0294デフォルトの名無しさん
2010/05/23(日) 02:46:27・GCに委ねるリソースと委ねないリソースを混在。
・全てのリソースをGCに委ねない。
どれにするかは、開発内容によって選べば良い。
0295デフォルトの名無しさん
2010/05/23(日) 02:47:020296デフォルトの名無しさん
2010/05/23(日) 02:49:01俺もしばらく様子見。
0297デフォルトの名無しさん
2010/05/23(日) 02:49:040298デフォルトの名無しさん
2010/05/23(日) 02:50:25無限ループって怖いねw
0299デフォルトの名無しさん
2010/05/23(日) 02:54:14反論を恐れてアンカーすらつける勇気ない奴がごちゃごちゃ言うなww
0300デフォルトの名無しさん
2010/05/23(日) 02:54:32おまえだよ
0301デフォルトの名無しさん
2010/05/23(日) 02:55:590302デフォルトの名無しさん
2010/05/23(日) 03:03:47どこかの天才が混在可能なオサレな文法作ってくれたらその時に考えればいい
0303デフォルトの名無しさん
2010/05/23(日) 03:04:06別人だってw
人にケチつけてないで
お前こそなんかネタ振れよw
嫁もワンコも寝ちまってヒマなんだからよ
0304デフォルトの名無しさん
2010/05/23(日) 03:12:160305デフォルトの名無しさん
2010/05/23(日) 03:18:070306デフォルトの名無しさん
2010/05/23(日) 03:20:520307デフォルトの名無しさん
2010/05/23(日) 06:04:03アンマネージドな関数とマネージドな関数のスタックフレームは
別々に分けるとGCしやすくていいと思ったのだけどどうだろう?
コルーチンの呼び出しみたいに切り替えるの。
アンマネージド(GC起動前)→GC起動→マネージド→GC停止→アンマネージド
というようにすればいいと思ってたのだけど
スタックが分かれていればこうできるかなと。
アンマネージド(GC起動前)→GC起動&スタック切替→マネージド→スタック切替
→アンマネージド→スタック切替→マネージド…
こんなことがC++/CLIで起こってるのかな?
0308デフォルトの名無しさん
2010/05/23(日) 06:27:42だけ読んだ
0309デフォルトの名無しさん
2010/05/23(日) 07:25:530310デフォルトの名無しさん
2010/05/23(日) 07:51:270311デフォルトの名無しさん
2010/05/23(日) 09:44:310312デフォルトの名無しさん
2010/05/23(日) 10:27:16恐ろしくいろんなことを勘違いしてるように感じるのだけど、
その勘違いを紐解けない。Wikipediaのスタック、コールスタック
の記述を読んだだけでコードを書いたこと無い、似非プログラマーが
書いたって感じ。
0313デフォルトの名無しさん
2010/05/23(日) 10:58:36勘違いしてて出来ないならそれはそれでいいんだ。
出来たらいいなってことで、ああしたらできるかな、こうしたら出来るかな?
って考えてるだけなので。今のところ。
GCありなし混在言語なんて、ほとんど誰も作ったことないだろうから
やってみるのがいいんでしょうね
0314デフォルトの名無しさん
2010/05/23(日) 11:12:130315デフォルトの名無しさん
2010/05/23(日) 11:13:330316デフォルトの名無しさん
2010/05/23(日) 11:33:00「16bitマイコンで動くファームウェアがC言語で書かれているはずがない!」
「えっ?」
0317デフォルトの名無しさん
2010/05/23(日) 15:03:300318デフォルトの名無しさん
2010/05/23(日) 16:20:300319デフォルトの名無しさん
2010/05/23(日) 16:31:320320デフォルトの名無しさん
2010/05/23(日) 16:32:54処理系にやらせたい人は、処理系にやらせれられるように
両方対応するのが望ましい。
0321デフォルトの名無しさん
2010/05/23(日) 16:33:17スマポなら、自力管理から自動管理まで用途に応じて幅を持たせられるから便利だね。
0322デフォルトの名無しさん
2010/05/23(日) 16:34:31しー、言っちゃだめよ。議論が終わっちゃうでしょ。
0323デフォルトの名無しさん
2010/05/23(日) 16:36:430324デフォルトの名無しさん
2010/05/23(日) 16:58:08君には理解できなかったんだね残念
0325デフォルトの名無しさん
2010/05/23(日) 17:02:23次は人に理解してもらえるように頑張れ。
0326デフォルトの名無しさん
2010/05/23(日) 17:04:160327デフォルトの名無しさん
2010/05/23(日) 17:05:450328デフォルトの名無しさん
2010/05/23(日) 17:06:07一般教養で勉強するレベルの事すら理解してないで、そこまで
理解してる人はいないんだからと書いてるやつは、勉強しなおすべきだと思う
http://pc12.2ch.net/test/read.cgi/tech/1152200420/
いいスレがあるんだけど、この本を読めるレベルじゃなくて、
書けるレベルがここに参加していい最低限度のレベル。
0329デフォルトの名無しさん
2010/05/23(日) 17:08:010330デフォルトの名無しさん
2010/05/23(日) 17:08:110331デフォルトの名無しさん
2010/05/23(日) 17:09:470332デフォルトの名無しさん
2010/05/23(日) 17:10:570333デフォルトの名無しさん
2010/05/23(日) 17:11:460334デフォルトの名無しさん
2010/05/23(日) 17:12:560335デフォルトの名無しさん
2010/05/23(日) 17:14:190336デフォルトの名無しさん
2010/05/23(日) 17:40:51この分野はさんざん研究されているだろうから、
最新の最も簡単に安全に効率よく出来る手法を持ってきて
あとは最近ハヤリの構文や機能と上手く融合出来れば良いね。
0337デフォルトの名無しさん
2010/05/23(日) 17:42:14具体的にはどんなこと?
0338デフォルトの名無しさん
2010/05/23(日) 17:48:190339デフォルトの名無しさん
2010/05/23(日) 17:50:020340デフォルトの名無しさん
2010/05/23(日) 17:51:320341デフォルトの名無しさん
2010/05/23(日) 17:54:030342デフォルトの名無しさん
2010/05/23(日) 17:56:150343デフォルトの名無しさん
2010/05/23(日) 18:02:46OSとプログラミング言語を意図的に(もしくは白痴)
混同してる。そしてそのことに何の疑問ももたない自作自演。
もうね、本当にね。バカばっかり。
0344デフォルトの名無しさん
2010/05/23(日) 18:03:310345デフォルトの名無しさん
2010/05/23(日) 18:13:18ポインターの定義構文と使用構文にやっぱ問題あるよな。
http://builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm
これでもかって言うぐらいに、間違えてくれてるんだ。
これを反面教師にして、ポインターの宣言とアドレスの取り扱い
周りの構文を考えたいんだけど、どうかな、D言語の場合が
参考になるわけなんだけど、D言語レベルで充分かなとも思うし。
それにしても、この人、良くこの文体で書けるなぁって思う。
IBMでこの文体で、この内容ってことは、
キ○○イに近いような気がする。
0346デフォルトの名無しさん
2010/05/23(日) 18:13:31スレッドはアリだな
occamみたいなん面白い
0347デフォルトの名無しさん
2010/05/23(日) 18:34:47絶 対 に 入 れ る な
って機能先に洗い出して、残った物に優先順位つけてけばいいかと
0348デフォルトの名無しさん
2010/05/23(日) 18:39:100349デフォルトの名無しさん
2010/05/23(日) 18:44:08デフォルトでマルチスレッド・マルチコア環境前提でいい
0350デフォルトの名無しさん
2010/05/23(日) 18:50:30言語仕様に固定で組み込むのは駄目。あくまでもすべてを記述できる低級言語
0351デフォルトの名無しさん
2010/05/23(日) 18:57:23variant型とかか
0352デフォルトの名無しさん
2010/05/23(日) 19:00:130353デフォルトの名無しさん
2010/05/23(日) 19:06:22少なくとも設計がひと段落するまでは(欲しいか欲しくないかは別にして)
仕様に関係する議論から排除できるな
0354デフォルトの名無しさん
2010/05/23(日) 19:12:54その他の自由な議論を阻害するものではない。
0355デフォルトの名無しさん
2010/05/23(日) 19:16:27議論が正常化すると思う。CPUは問わないけどもアセンブラリストを
要求された時点でUPする事。にすれば良いと思う。
0356デフォルトの名無しさん
2010/05/23(日) 19:16:280357デフォルトの名無しさん
2010/05/23(日) 19:17:51>>354-355で、本気の人だけになると思う。
そしてトリップ無しでの発言は基本荒らし行為って
事にすれば良いんだよ。
0358デフォルトの名無しさん
2010/05/23(日) 19:20:18つまり>>357は荒らし行為ってことだな。
0359デフォルトの名無しさん
2010/05/23(日) 19:26:43鳥無しの基本嵐認定は行き過ぎだが、鳥有り議論に対する影響を少なくするってのはありだな
要望っていうかスタンスがあるなら鳥つけろ、妄想垂れ流すだけで邪魔するなら荒らし認定されるんだろう
論理的で根拠がある話なら鳥有りが意見を組み入れるだろうし
0360デフォルトの名無しさん
2010/05/23(日) 19:28:18初心者が全部の機能を使いたくなる気持ちはわかるけど
言語仕様に入っていても不要な機能は使わなければいいだけだよ。
0361デフォルトの名無しさん
2010/05/23(日) 19:29:29コンパイラ作れる奴いるの?
いたとして、作る気あんの?
そこ抜きに話しても無駄に終わるぜ
0362デフォルトの名無しさん
2010/05/23(日) 19:32:33「鳥付けろ!」とか「鳥無しばかりだから傍観するわ」とか言って荒らす奴が出てくるから鳥を余り強調しない方がいい。
付けたい奴が付けるだけでいい。
発言を尊重するかどうかは、鳥の有無によってではなく、あくまでもその内容によるべきだ。
0363デフォルトの名無しさん
2010/05/23(日) 19:34:24確かにそうだな
0364デフォルトの名無しさん
2010/05/23(日) 19:34:28Wikiは議論に向かないので、fj.comp.langに移動が良いと思う。
fj.comp.lang.cを間借りさせてもらうか、場合によっては作ってもらう
ってことで。雑音はいりにくいし(w
0365デフォルトの名無しさん
2010/05/23(日) 19:37:23そんなこと無いと思うよ。とりなしを無視できな奴もバカって
事にすれば良いだけ。とりなしをNGIDにすればすっきりするし。
ということで、鳥必須ってことで。
0366デフォルトの名無しさん
2010/05/23(日) 19:40:450368デフォルトの名無しさん
2010/05/23(日) 19:44:070369デフォルトの名無しさん
2010/05/23(日) 19:46:10コンパイラ作る技量ないとか言ったら
全部無駄になるんだが
そこんとこ分かってんのか?
0370デフォルトの名無しさん
2010/05/23(日) 19:48:23NGもわざわざ宣言せずに黙ってやればいいし。
このスレでは内容にかかわらないところで発言の仕方を縛るようなことは一切しない。
レスの取捨選択はあくまでも個々人でやるべきことだから。
0371取りに行くです ◆JZ1SFn6i7c
2010/05/23(日) 19:49:39GC 多値戻り
0372デフォルトの 名無しさん
2010/05/23(日) 19:51:40>>371
お前はコンパイラ作れるのか?
まずそれが知りたい
0373デフォルトの名無しさん
2010/05/23(日) 19:54:30多値を扱うデータ型を用意して、関数(メソッド、サブルーチンコール、…)の入出力で自由に使えるようになっていると便利だな。
0374デフォルトの名無しさん
2010/05/23(日) 20:06:170375デフォルトの名無しさん
2010/05/23(日) 20:09:56ライブラリでできるものはライブラリにしないといつまでも作れないよ。
低級言語だから欲張らないことだ。
0376デフォルトの名無しさん
2010/05/23(日) 20:34:10タプルは基本データでいいんじゃない
0377デフォルトの名無しさん
2010/05/23(日) 20:37:40型推論のautoを導入すれば
struct { int a, b, c; } foo() { return { 1, 2, 3 }; }
auto x = foo();
printf("%d, %d, %d\n", x.a, x.b, x.c);
のようなことができる
0378デフォルトの名無しさん
2010/05/23(日) 20:54:340379デフォルトの名無しさん
2010/05/23(日) 21:21:19俺もそれがいいと思う。
0380デフォルトの名無しさん
2010/05/23(日) 21:22:07GCに関する議論がこの辺にありました。
考えてる人は考えているのですね。
0381デフォルトの名無しさん
2010/05/23(日) 21:28:28結局入らなかったけど。
0382デフォルトの名無しさん
2010/05/23(日) 21:53:32ライブラリでも実現できるが、見た目は悪くなる。
0383デフォルトの名無しさん
2010/05/23(日) 22:14:08http://d.hatena.ne.jp/faith_and_brave/20081117/1226913980
結論からいうと、 C++0x に GC は入りません。
C++0x では、透過的な GC の導入が間に合わないので、
最低限の決めごとだけを行います。
なるほど。Hans Boehm 直々のペーパーもある。
0384デフォルトの名無しさん
2010/05/23(日) 22:23:50日付を見ろよ、終わった議論なんだよ(w
0385デフォルトの名無しさん
2010/05/23(日) 22:44:460386デフォルトの名無しさん
2010/05/23(日) 23:03:500387デフォルトの名無しさん
2010/05/23(日) 23:21:49variantの実行時オーバーヘッドってどうなの?
オーバーヘッドの程度によって使える場面は制限されるよね。
0388デフォルトの名無しさん
2010/05/23(日) 23:40:28どれだけオーバーヘッドがあっても、言語仕様上は問題ないでしょ。
コプロがないと浮動小数点演算は整数演算の何百倍もかかるけど、言語仕様上は何の問題もない。
0389デフォルトの名無しさん
2010/05/23(日) 23:42:06オーバーヘッドがどれくらいなのかなって聞いているんだよ。
0390デフォルトの名無しさん
2010/05/23(日) 23:47:27オーバーヘッドがあると何か不都合か?
0391デフォルトの名無しさん
2010/05/23(日) 23:48:08なんのために? 趣味?
0392デフォルトの名無しさん
2010/05/23(日) 23:49:27程度によって使える場面が限られるでしょ?
最内周ループでは使わないようにしようとか。
0393デフォルトの名無しさん
2010/05/23(日) 23:54:42その程度は実装によるから何とも言えないでしょ。
現実場面では、自作の共用体を使っていろいろするよりも高速になることが多いと思うが。
0394デフォルトの名無しさん
2010/05/24(月) 00:03:36例えば、実装によって型情報を保持する分負荷が増えるとか、
定性的な議論ができればと思って聞いたんだけどね。
いいや、別に。
0395デフォルトの名無しさん
2010/05/24(月) 00:17:430396デフォルトの名無しさん
2010/05/24(月) 00:26:300397デフォルトの名無しさん
2010/05/24(月) 01:31:140398デフォルトの名無しさん
2010/05/24(月) 02:09:310399デフォルトの名無しさん
2010/05/24(月) 03:11:110400デフォルトの名無しさん
2010/05/24(月) 03:24:030401デフォルトの名無しさん
2010/05/24(月) 03:43:270402デフォルトの名無しさん
2010/05/24(月) 07:38:32あったら嬉しい → 不要
必要 → まれに必要
どうしても必要 → たまに必要
必ず必要 → もしかしたら必要
0403デフォルトの名無しさん
2010/05/24(月) 08:01:31同意
0404デフォルトの名無しさん
2010/05/24(月) 09:18:390405デフォルトの名無しさん
2010/05/24(月) 09:24:060406デフォルトの名無しさん
2010/05/24(月) 09:28:27http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2507.html
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2869.html
0407取りに行くです ◆JZ1SFn6i7c
2010/05/24(月) 15:11:06名前付き引数は、コンパイル時にオーバーヘッドが解消できる事と、
(コンパイラが呼び出し関数に合わせて順番変えてやれば良いだけ)
関数定義や例外処理を変更したいって言ってる俺としては、有りかもと思う。
0408デフォルトの名無しさん
2010/05/24(月) 17:30:00だからお前コンパイラ作れるの?
0409デフォルトの名無しさん
2010/05/24(月) 17:40:49バカばかりでお前もバカの一員だと思うんだけど、
しつこいから答えると、その質問する奴がバカだと思う。
最適化ぶりぶりのコンパイラ作るのには、物凄いセンスが
必要だけども、コンパイラってようは単純なテキスト置換
処理なんだから、コンパイラを作れないと言う奴は、プログラムを
組めないと言ってるに等しい。つまり質問が無茶苦茶なんだよ。
そんな質問を平気でするのは馬鹿だからバカは黙ってて欲しい。
0410デフォルトの名無しさん
2010/05/24(月) 18:02:16リフレクションが有っても他の機能を阻害することはないから
リフレクションは言語仕様に含めていいと思うよ。
0411デフォルトの名無しさん
2010/05/24(月) 18:18:45シンボルテーブルまで作って単純なテキスト置換処理はないわな
0412デフォルトの名無しさん
2010/05/24(月) 18:27:230413デフォルトの名無しさん
2010/05/24(月) 18:32:360414デフォルトの名無しさん
2010/05/24(月) 18:39:030415デフォルトの名無しさん
2010/05/24(月) 18:45:24つまり 取りに行くです ◆JZ1SFn6i7c はこういう考えの持ち主なわけね
コンパイラ=テキスト置換ツール
OK把握した
0416デフォルトの名無しさん
2010/05/24(月) 18:52:14どこまでヌケサクなの?
そのテキスト置換処理において、膨大な置換ルールを破綻無く実装する能力を持ってるか聞いてるんだけど?
質問が滅茶苦茶なんじゃなく、お前の読解力が滅茶苦茶貧弱なんだよ。
0417デフォルトの名無しさん
2010/05/24(月) 18:59:33バカを重ねるな。
0418デフォルトの名無しさん
2010/05/24(月) 19:03:20特徴的な改行、いつものキチガイ君だろ
0419デフォルトの名無しさん
2010/05/24(月) 19:09:270420デフォルトの名無しさん
2010/05/24(月) 19:11:48私には無理なので貴方が作って下さい
0421デフォルトの名無しさん
2010/05/24(月) 19:41:31黙ってれば良いと思う、君に出来るのはそれだけ。
0422デフォルトの名無しさん
2010/05/24(月) 19:48:26作らないのならあんたも黙ってろ
0423デフォルトの名無しさん
2010/05/24(月) 19:50:570424デフォルトの名無しさん
2010/05/24(月) 20:00:14何かを作らないから書き込んではいけないとか、そういうことは一切ない。
0425デフォルトの名無しさん
2010/05/24(月) 20:09:300426デフォルトの名無しさん
2010/05/24(月) 20:11:02お餅とウンコの区別がつかない人が書き込むから駄目。
>>424
遊び場欲しくてそんなこと書いちゃうバカなんだと思うけど
バカの遊び場じゃないよ。
0427デフォルトの名無しさん
2010/05/24(月) 20:12:220428デフォルトの名無しさん
2010/05/24(月) 20:12:43議論する気も起きない
0429デフォルトの名無しさん
2010/05/24(月) 20:15:170430デフォルトの名無しさん
2010/05/24(月) 20:17:37みんな適当に書き捨ててるだけなんだよ
取りまとめ役と処理系制作者がいないと
進むものも進まない事くらいそろそろ分かれ
0431デフォルトの名無しさん
2010/05/24(月) 20:24:20>6スレにもなって成果が全く無い理由を考えてみたまえ
バカが書き込んでスレを汚すから。
0432デフォルトの名無しさん
2010/05/24(月) 20:24:390433デフォルトの名無しさん
2010/05/24(月) 20:44:100434デフォルトの名無しさん
2010/05/24(月) 20:48:04次は、CとC++でスレを分割すべし。
0435デフォルトの名無しさん
2010/05/24(月) 21:07:12作ったことあるやつばっかじゃないの
普通高校生か大学生あたりで作るだろ
0436デフォルトの名無しさん
2010/05/24(月) 21:07:470437デフォルトの名無しさん
2010/05/24(月) 21:18:49同意。
てか、たぶんCを超えるのは無理だからC++だけでいいんじゃね
0438デフォルトの名無しさん
2010/05/24(月) 21:20:380439デフォルトの名無しさん
2010/05/24(月) 21:25:150440デフォルトの名無しさん
2010/05/24(月) 21:26:31まさに第二のCが目標なら、やることやれることは
そんなに多くないんじゃないかね。それでさえ迷う部分は多いがw
技術の進歩に伴って、いくつかの仕様は削れる
(register指定子、プロトタイプ宣言など)
長い歴史の中でC文法の問題点も明らかになってきた
でも本質的な部分はそれほどいじりようがないはず。Cはよくできてる
スレッド周りのサポートを入れて、あと名前空間とライブラリ?
超高速なんて簡単に言うが、アグレッシブな最適化を期待するなら
言語としての表現力に制約を加えて、処理系が仮定していい条件を増やしてやらないとダメ
プログラマが低水準を精密に操作したいという要求とは、かなり背反してしまう
0441取りに行くです。 ◆JZ1SFn6i7c
2010/05/24(月) 21:32:58お前センス無いなぁ、最適化を強力にするためには言語の表現力を
高めないと駄目なんだよ。ポインターと整数を可換にしたから
ポインター演算と整数演算の最適化に苦労したんだよ。
なので、関数にParametor引数、Result引数なんだよ。
そして関数属性;const関数、pure関数、General関数
0442デフォルトの名無しさん
2010/05/24(月) 21:36:010443デフォルトの名無しさん
2010/05/24(月) 21:40:47FORTRANコンパイラの最適化は神だからなw
Cのrestrictなんてのも結局プログラマ責任だし。
しかし文法的な問題ってさほどなくないか?
0444デフォルトの名無しさん
2010/05/24(月) 21:41:58C++のautoやC#3.0程度の型推論はつけられるだろうし欲しい
個人的にはコルーチンもあると良い
最後らへんはFortranのほうがベクトル演算最適化しやすいとか
純粋関数型のほうが並列化しやすいとか
手書きループより抽象化されたmap/reduceのほうがいいとかいう話だよね?
基本的には同意
0445デフォルトの名無しさん
2010/05/24(月) 21:49:220446デフォルトの名無しさん
2010/05/24(月) 21:53:350447取りに行くです。 ◆JZ1SFn6i7c
2010/05/24(月) 21:54:16レベルが違いすぎて無理だと思うよ。
442の為に、ちゃんとポイントは作ってあげた。
らそこは速攻だったのでその程度人しか今はいないと思う
>>442レベルの人が書き込まなくならないと無理だと思う。
0448デフォルトの名無しさん
2010/05/24(月) 21:55:100449デフォルトの名無しさん
2010/05/24(月) 21:57:410450取りに行くです。 ◆JZ1SFn6i7c
2010/05/24(月) 22:16:30ランタイムを必要しないものと、
型安全性を破壊しないものは
有っても困らないとは思う。
データーの型はプログラマが明示的に破壊しない限り、
破壊できない事変わらないことが大切だと思うんだよね。
なので暗黙の型変換とかautoは禁止が良いと思う。
あと、autoはテンプレートにとっておきたい気もするし。
ともかく、安全に組める、早くできるという方向で行くべきだと思う。
0451デフォルトの名無しさん
2010/05/24(月) 22:19:400452取りに行くです。 ◆JZ1SFn6i7c
2010/05/24(月) 22:21:33プログラマが理解してない場合がありえる、
と言う意味で型安全じゃない。
プログラマが理解してないのにコンパイルが通るので駄目
0453デフォルトの名無しさん
2010/05/24(月) 22:23:280454デフォルトの名無しさん
2010/05/24(月) 22:25:380455デフォルトの名無しさん
2010/05/24(月) 22:27:14コンパイルする人間からプログラマを推定するのが型安全じゃないだろw
0456デフォルトの名無しさん
2010/05/24(月) 22:28:47CPU固有言語君は美的センスを磨いた方がいい
C#とかC++に汚染されてる
中途半端な言語じゃなくLispとSmalltalk勉強しておいで。
0457デフォルトの名無しさん
2010/05/24(月) 22:29:430458デフォルトの名無しさん
2010/05/24(月) 22:34:0620年後もCを使っている気がするな
0459デフォルトの名無しさん
2010/05/24(月) 22:35:500460デフォルトの名無しさん
2010/05/24(月) 22:38:040461取りに行くです。 ◆JZ1SFn6i7c
2010/05/24(月) 22:40:23aa.x86_rot(bit=CF)を提案してのは俺だけど、CPU固有言語という
言葉の元になったのは別人だと思う。
environmentというコテハンは一回使ったかなっておもう
後、継承はともかく、クラス、カプセル化は必須。
0462デフォルトの名無しさん
2010/05/24(月) 22:41:140463デフォルトの名無しさん
2010/05/24(月) 22:45:21名前空間は無用に荒らしたくないよね
0464デフォルトの名無しさん
2010/05/24(月) 22:49:58マクロ、テンプレート
型推論
0465取りに行くです。 ◆JZ1SFn6i7c
2010/05/24(月) 22:51:43お馬鹿な君達の為にあえてああやって書いて、
それじゃあそうなるから、こういう記述が
良いんじゃないかとか言わしてあげられるように
してあげてるのに、ぶーぶー文句言うばかり。
0466デフォルトの名無しさん
2010/05/24(月) 22:55:45どんなに酷くても何か一つでも輝きがあればいいんだけどね。
0467取りに行くです。 ◆JZ1SFn6i7c
2010/05/24(月) 22:57:19マクロ→廃止
型推論→いらない
テンプレート→STLとはまったく別物(記述がわかりにくすぎるよ!!)
テンプレート実現のための型推論は必要。
>>466
なに?俺のこと?俺の提案の魅力を理解できない奴は書き込むなよ。
0468デフォルトの名無しさん
2010/05/24(月) 22:59:12あれほどのvolatileなデータだからやはり特殊変数以外ない
で'.'をキャリー、@をローテートとして
a = b + c
d = e + .
d = e +. f
これでADD/w C
a <<@ でローテート
a <<@. でローテートwC
ただのマクロアセンブラのようだ
0469デフォルトの名無しさん
2010/05/24(月) 23:01:23危険か安全かは関係なく、ただ書かれた通りに計算するだけ。
型=安全という論点を強調するとCの代替案にはなれない。
0470取りに行くです。 ◆JZ1SFn6i7c
2010/05/24(月) 23:03:09そこは哲学が180度ちがう、Cの欠点はそう考えた事だから
C/C++の代替を目指すなら、その欠点は構文が変わろうが
解消するって事だよ。
なので議論しようがない。C使ってろで終わってしまう。
0471デフォルトの名無しさん
2010/05/24(月) 23:03:32そうだね。そういう低レベルな記述は必要だろうね。
0472デフォルトの名無しさん
2010/05/24(月) 23:06:42自作自演するなよ、この頓珍漢。
0473デフォルトの名無しさん
2010/05/24(月) 23:08:00キャリーは演算の副産物だから扱いむずいな
いつ変化するかわからんし
最適化の影響も受けるし。
0474デフォルトの名無しさん
2010/05/24(月) 23:11:420475デフォルトの名無しさん
2010/05/24(月) 23:13:04安全って一体なんなのか誰も定義しないから、定義のない概念は無視するという哲学
と180度ちがう哲学?
0476デフォルトの名無しさん
2010/05/24(月) 23:31:20組み込み型は(あるとしたら)整理しないとね
0477デフォルトの名無しさん
2010/05/25(火) 00:39:10文字列、正規表現、XML、Query、任意精度、
他にある?
0478デフォルトの名無しさん
2010/05/25(火) 00:44:120479デフォルトの名無しさん
2010/05/25(火) 00:52:26SIMDに対応できるようにベクトル、行列はあった方がいいかもな。
0480デフォルトの名無しさん
2010/05/25(火) 00:53:440481デフォルトの名無しさん
2010/05/25(火) 00:58:44プロセス、スレッド、イベント、割込み、シグナル/セマフォ/ミューテックス、タイマー
0482デフォルトの名無しさん
2010/05/25(火) 01:41:44>>481
絞り込むとスレッドかコルーチンと
通信channelとrmc命令があればいいな
0483デフォルトの名無しさん
2010/05/25(火) 01:47:16作るならDくらい越えてくれよ
0484デフォルトの名無しさん
2010/05/25(火) 01:49:52Ken Thompson位超えてくれよ
0485デフォルトの名無しさん
2010/05/25(火) 01:54:51まず高速化は絶対無理。歴史のある巨大プロジェクトのGCCの吐くコードでさえ
VCより30%遅いとか言われてるのにここのメンツじゃVCより数倍遅いのしか作れない。
だから開発効率を売りにして勝負しなかったら判断力のないアホしか使ってくれない。
開発効率を求めるなら
・ライブラリが充実していて自分で書かなくともよい
・高性能なデバッガやIDEが付属
っていうのが最低線だが言語仕様とかどうでもいいこと議論してるようじゃ終わってる。
もちろんCのライブラリがリンクできれば独自に用意しなくていいとかそういうのは論外。
それじゃ言語の新しい機能は使えないしライブラリ付属のサンプルがそのまま動作しない
なら開発効率は最悪になる。
別の言語のデバッガで仕事するとかありえないので、Cのコンパイラは流用できても
Cのデバッガは流用できないから新規に作らないといけないわけだ。
で誰が作るの?テストは?重大なバグが見つかったら誰が直すの?
ここ言語仕様考えるとかWiki立てるとか楽な仕事しかやる人いないじゃないw
その面倒な汚れ仕事やる人いないなら作れないに決まってるよね?
0486デフォルトの名無しさん
2010/05/25(火) 01:57:23間違いない
0487デフォルトの名無しさん
2010/05/25(火) 01:57:36海外のOSSのプロジェクトに投稿してみればわかるけど住所氏名勤務先連絡先
どころか、身分証明と勤務先の上司の承諾書まで要求されるんだぜ。
実は一部にGPLからの盗用されたコードが混ざってましたwではシャレにならないわけ。
2chで匿名の人をいくら集めたって意味ないだろ...
0488デフォルトの名無しさん
2010/05/25(火) 02:04:39pccみたいな。
0489取りに行くです。 ◆JZ1SFn6i7c
2010/05/25(火) 02:04:50俺も実はそう思ってる。ライブラリの中身が不明だから
最適化をかけれない、処理を端折れない、ライブラリが
そもそも遅いってのが、いろんな問題の根っこなんだろうと
思うんだよね。なので、const関数、pure関数の階層化が
必要で、コンパイルエラーではじきまくる所から始まると
思う。なので関数に修飾つけなければconst扱いにして
ブロック変数と戻り値以外を変更したらすかさずコンパイルエラー
という極めて過酷なプログラミング環境が必要だと思うんだよね。
後から指定して矛盾してたら未定義とか、register変数みたいに
コンパイラの気分ってのは駄目だと思う。
>>487 2chでいい加減無理となったら別で始めるわけだ。
別に匿名に拘ってる訳じゃないし。
まともな議論できる人がちゃんと現れたら、fj.comp.lang.cへ移動しよう
と思ってる。
0490デフォルトの名無しさん
2010/05/25(火) 02:17:28コンパイラにたくさん情報を与えて高速化したいってのはわかった。
でも関数定義長すぎだ。短く出来ないのかい?
void f(int a,int b, int c, int* e, int* f, int* g);を
void f Parameter(int e,int f,int g) Result(int* a,int* b,int* c);
と書くより
(int,int,int) f(int e,int f,int g)と書いた結果があなたの言っている構文より
わかりやすいし短く書ける思うのだけど。
左辺は結果で右辺はパラメータとする。
位置によって意味が変わるのでキーワードを2つ消して短く出来る。
あと部分適用はカリー化するのがセオリーだ。
(int,int) f(int a, int b)(int c,int d)
と書いて、a,bがモードにすれば部分適用もして欲しいって意味になっていい。
Param,Mode,Resultのキーワード3つ消せる。
0491取りに行くです。 ◆JZ1SFn6i7c
2010/05/25(火) 02:21:12可読性は重要だよ、書くのが面倒というより、
10000倍可読性が重要。
読みやすくする提案なら聞けるけど記述端折るのは
いただけない。
0492デフォルトの名無しさん
2010/05/25(火) 02:26:12だけど、構文がC言語以下になったら駄目だ。
構文が決まらないうちにライブラリを作っても
構文が変わるたびにライブラリを作り直さなくてはならなくなる。
Cは35年以上使われてるものだから1つ1つ丁寧に作り上げるべきだ。
0493デフォルトの名無しさん
2010/05/25(火) 02:37:07端折ってません。
Haskellならfの型はf:(int,int)->(int,int)->(int,int)と書きます。
Scalaならf(a:Int,b:Int)(c:Int,d:Int):(int,int)と書きます。
カリー化の概念は幾つでも部分適用が可能なことです。
f:int->int->int->int->intというような記述も可能でより一般的な記述方法です。
あなたのいうモードは多値のカリー化が1つだけしか出来ないわけで記述力は
カリー化より劣っています。
0494デフォルトの名無しさん
2010/05/25(火) 03:00:32Param,Result,Mode?なんて雑音がコードに入ったら可読性悪いし
カリー化なんてのは高階な言語でこそ生きる話だと思うんだが。
0495デフォルトの名無しさん
2010/05/25(火) 03:10:25複数のコードを静的に生成すると
サイズがでかくならんの?
0496デフォルトの名無しさん
2010/05/25(火) 03:42:57初めからバックエンドまで自作は諦めるべきでしょ?
中間言語を適当なフレームワークにつなぐか、そもそもターゲットを汎用言語にする
Cへのトランスレータでも十分すぎると思う
0497取りに行くです。 ◆JZ1SFn6i7c
2010/05/25(火) 06:11:20Haskellでも無ければ、Scalaでもないんだよ。
HaskellやScalaつかえば良いじゃん。
>>494
その辺は趣味の違いなので議論に出来るように書いてよ。
趣味の違いを議論しても意味が無いし、不要だと思うのは
勝手だけどで外して失うメリットが多すぎるしね。
0498デフォルトの名無しさん
2010/05/25(火) 06:26:180499デフォルトの名無しさん
2010/05/25(火) 07:10:32最適化とかじゃなくてだな、
ライブラリが貧弱だと単純に作るのが面倒くさいんだよ
0500デフォルトの名無しさん
2010/05/25(火) 08:06:290501デフォルトの名無しさん
2010/05/25(火) 08:09:01共有ライブラリ
0502デフォルトの名無しさん
2010/05/25(火) 08:11:27ならない、あるいは、ならないように気をつけることが出来る。
0503デフォルトの名無しさん
2010/05/25(火) 09:12:14やり方次第でさほどでもないって感じじゃない
0504デフォルトの名無しさん
2010/05/25(火) 10:24:45他の例を挙げたのはそれが使いたいから挙げたわけではないです。
一般的で短いほうが好まれるといってるのです。
あなたの目的にあったことは出来て短く書けるわけだから悪い話じゃないと思うよ。
ScalaやHaskellはC言語の変わりになれないし、
そこで簡単に他の使えばいいじゃんとかいわないほうがいいよ。
カリー化は部分適用の目的があるので、「取ってくる」の話している
modeの役割と変わらないし、一般的だし短く書ける。
部分適用したくなければカリー化しなければいい話だ。
y = cos(a) + sin(a)を
cos Param(a) Result(b);
sin Param(a) Result(c);
y= b + c;
って書けって言われてもなぁ。
Cとアセンブラの中間の高級アセンブラというなら話は別だけど。
0505デフォルトの名無しさん
2010/05/25(火) 10:40:37暗黙変換や算術変換は廃止
符号付右シフトやビット演算や符号付整数のオーバーフローや浮動小数点演算はCPU依存なので標準から排除もしくは仕様で固定する
文字型もコード依存なので排除もしくは仕様で固定する
標準ライブラリの入出力等もOS依存なので排除
0506デフォルトの名無しさん
2010/05/25(火) 10:47:03おまえら一度↑見て頭冷やせ。RAM16KBに収まるコードが書けなきゃCの代替にはなれないぞ?
テンプレートとか言ってる誰かさんはOOPがお好きなようだがw
0507デフォルトの名無しさん
2010/05/25(火) 10:56:24どうせ標準ライブラリは使い物にならないから自前でって現状はわかる。
だがよく使うものを排除するのは最後の手段だろう。
使える(環境の)人にとっては効率が落ちることになるから。
言語仕様で内部の動作までカッチリ固定できればベストと思うけど、
それが無理ならqsort()のようにラッパー型にしてもいい。
ライブラリはできるだけ揃える方向のほうが使う人も増えると思うよ。
0508取りに行くです。 ◆JZ1SFn6i7c
2010/05/25(火) 11:01:25何を定義しとかなきゃ不味いかは、膨大なCのノウハウが
役に立つ。でもそれは言語仕様が固まってから。
0509取りに行くです。 ◆JZ1SFn6i7c
2010/05/25(火) 11:06:53テンプレートでコードが肥大化するのは
テンプレートが悪いと言うより、大きなテンプレートを
使ってもユーザーにそれと感じさせないからで、リストが
必要なら、テンプレート使っても、手組みしても必要な
記述量って物があるので、そうは変わらない。
まぁテンプレートは一般化して組んである分すこし不利だけど
オーバーヘッドはそんなもんだ。
なのでテンプレートという考え方は失いたくないけども
STL的なやり方は絶対に嫌。というまぁ気分段階だけど。
STLじゃなくてM4的な何かっていうのも、プリプロセッサー
止めたいとか言ってる中でどうだかなって思うし。
色々難しいよね。いっそのことIDEに頑張ってもらう事にして
コピペライブラリでも良いんじゃないかとか(w
0510デフォルトの名無しさん
2010/05/25(火) 11:13:48関数型マクロでとっ散らかるのはいや
0511デフォルトの名無しさん
2010/05/25(火) 16:08:21RAM16Kより小さい場合も普通にあるよな
0512デフォルトの名無しさん
2010/05/25(火) 16:20:29彼のセンスはズバ抜けてるからな
普通は記号とか構文で簡潔にしたいもんだが
美的センスもプログラム経験も少なそうだし
COBOL風C++が作りたいんでしょ
カリーとか関数言語みたいな高度な話題はついてこないよw
0513デフォルトの名無しさん
2010/05/25(火) 16:25:100514デフォルトの名無しさん
2010/05/25(火) 18:01:50=========== みんな偉そうなこと言ってるけど、ここまで何の成果物も無し ===========
0515デフォルトの名無しさん
2010/05/25(火) 18:07:02必要じゃなくても何かあった方がいい構文があるとか?
0516デフォルトの名無しさん
2010/05/25(火) 18:29:48高級過ぎると思うが
0517デフォルトの名無しさん
2010/05/25(火) 18:38:130518デフォルトの名無しさん
2010/05/25(火) 18:46:50インラインで展開するならいいだろな
動的にやるとなるといろいろ問題でるが
ありゃ宣言的に話が進む関数型で生きるもんだが
Cでも汎用関数に半固定引数使う場合なんかは同じだな
0519デフォルトの名無しさん
2010/05/25(火) 18:47:210520デフォルトの名無しさん
2010/05/25(火) 19:01:03全部ソートして$でもはさんで名前につなげちまえば
Cからも呼べるしリンクも楽か
0521デフォルトの名無しさん
2010/05/25(火) 19:03:380522デフォルトの名無しさん
2010/05/25(火) 20:30:00だから初めにすべきことは仕様をギリギリまで削ること
安定して動作するようになったら一年に新機能1個とかちょっとづつ追加していけばいい
あれもこれも付けろと作業時間増やすことに熱心な人は早めに追い出すのが吉
現実的な話をしない人(あえて名前は出さない)は絶対役にたたないから無視に限る
ライブラリはある程度までは開発側の言語仕様に詳しい人が作らないといけない
そこを省いて全てユーザーに任せるとGHCみたいに粗悪なラッパーが蔓延ることになる
どこぞの教授なら研究室のメンバーに面倒な仕事を押し付けることもできるけれど
ここで作るなら大量に人材を(できれば資金も)確保する作戦を立てないと
使えるライブラリがないからユーザーが増えない↓↓↓
↑↑↑ユーザーが増えないから使えるライブラリがない
という無限ループに陥って糞言語化する
そうなってしまった新言語の如何に多いことか
0523デフォルトの名無しさん
2010/05/25(火) 20:45:38言語仕様変えれなくなるよ
絞り込むのには全面賛成だが
but not too muchの部分も忘れちゃいかん
0524取りに行くです。 ◆JZ1SFn6i7c
2010/05/25(火) 21:10:42同意。
なので、C/C++の代替を目指すと言うコンセプトからも、
Cライブラリを使える(最大限には使えない)という仕様を
維持したいと思うんだ。
新しい言語altanativeC(仮称)で組まれていない以上、
その有効性は発揮出来ないけども、Cライブラリは使えるよ。
書き直すとこんなに良いよ、そんな方向を目指したいと思う。
バイナリーリンクが無理でもソースリンクが可能が最低限
だと思う。altanativeC(仮称)でコンパイルすると実力は
発揮できないけども使えるっていう感じ?
0525デフォルトの名無しさん
2010/05/25(火) 21:14:000526デフォルトの名無しさん
2010/05/25(火) 21:17:34Cとコーリングコンベンション合わせるか
合わせれたらいい
0527取りに行くです。 ◆JZ1SFn6i7c
2010/05/25(火) 21:23:59ごめん造語した(w
出来ればコーリングコンベンションを合わせたい。
コンパイラでどうとでもなるって言っても多値戻しとかやり始めたら
言語記述との乖離が大きすぎて、ラッパー入れてるのと変わらなくなる
それはちょっと嫌、でも色々考えて言語仕様を設計していく内にどうしても
コーリングコンベンションが違ってくるのなら、再コンパイル、再リンク
でちゃんと動かしたい(C言語のコンパイラも内包しちゃう事になるけど)
という感じ?
old-CでもANSI−Cでもコンパイル出来たようなイメージ.
て感じで。
ソースリンクは、それにしても不適切な言葉だったごめん。
0528デフォルトの名無しさん
2010/05/25(火) 21:35:53取りに行くです。 がコテなの?
0529デフォルトの名無しさん
2010/05/25(火) 21:39:05明確な目標がないから話が発散してるんだよね。
目標が決まってようやく新言語にどんな長所を持たせるのか検討する段階に進める。
そこで例えば「速度面で」他の言語に勝つのを目指すと決まったなら、
「何の速度面で何言語を超えるのよ?」の話をまとめあげ、
「それで本当にユーザー5万人大丈夫?」みたいな話になり、
大丈夫となったらそこで初めて「言語仕様」の話がででくるんじゃないの。
その上で開発にかかわる人数からスケジュールを確定して
各仕様の優先度を議論してギリギリまで削るべき。
勿論、まともなライブラリがなかったらユーザー5万人にも届かないのは言うまでもないし
仮にCのライブラリを流用するとしても機械的にインターフェイスを変換するだけなら
Cから直接扱うより悪くなることはあっても扱いやすくなることはない。
テンプレートが絡むと流用自体が困難だし、まともなライブラリとはとても呼べないよ。
ないよりマシなだけ。
0530デフォルトの名無しさん
2010/05/25(火) 21:56:140531デフォルトの名無しさん
2010/05/25(火) 22:07:290532取りに行くです。 ◆JZ1SFn6i7c
2010/05/25(火) 22:07:53>120 KB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
>取りに行ったけどなかった。次は一時間後に取りに行くです。
の最後の部分をコピペしただけだからあまり気にしないで。
>>529
そういうのは仕事でやってよ(w
ねばならないとは思わないけども、君が思うのは自由かもしれない。
だから駄目とか言われても、困るし、めんどくさいし、
もうさ、これだけ色々な言語があるんだし、Windowsもちゃんと普及してるんだし、
GoogleのGoとかJavaとかあるんだし、C#エトセトラ、エトセトラ。
この辺と戦うのは疲弊するだけだから、Cに変わる使いやすい言語が出来れば良いな
程度の軽さで行こうよ、普及させなきゃ、とか、貢献貢献とか、めんどくさいじゃん。
目玉三角にして、Cより便利ーとかやってもしんどいだけだと思うよ。
20年前ならそういう事も楽しかったんだけど、今はもうそんな時代じゃないから。
0533デフォルトの名無しさん
2010/05/25(火) 22:27:45普段派遣先で「スケジュールはどうした」「目標はどうした」「優先度はどうした」とガリガリやられて縮こまってる日雇いノイローゼ君が、
顔の見えない匿名掲示板で調子にのって普段ヤラれてることをやり返してるだけだろ。
0534デフォルトの名無しさん
2010/05/25(火) 22:44:13違う違うw
いつも新しい言語が出てくるとしばらく試してみるんだが
軒並み開発やコミュの「取りに行く」みたいな言語ヲタのせいで
糞言語化していくんだよね。
新機能いらねーからバグ直せよと思うことあるでしょ。
まあここがダメだということを再確認しただけだった。
0535デフォルトの名無しさん
2010/05/25(火) 23:04:21でも、部分適用するならカリー化的な構文にしたらいいと主張してました。
なぜなら仮に後で新しいC言語を参考にして作った言語で
カリー化を実装しようとしたときも、自然に拡張できるからです。
後々の拡張も考えて構文を決めたほうがいいと思うのですがいかがでしょうか?
0536デフォルトの名無しさん
2010/05/25(火) 23:06:19派遣?のことはしらんが仕事してるならスケジュールと目標は基本だろ
OSSでもUbuntuが後発で信頼を勝ち得たのは
使いやすくするという目標と規則的なリリースを守り続けてるからだよ
0537デフォルトの名無しさん
2010/05/25(火) 23:06:42現状のCがどうなるかって事で、ちょっと構文書いてみ。
0538デフォルトの名無しさん
2010/05/25(火) 23:19:235万行くらい最長不倒関数が10個もあれば十分達成できるぞ
0539デフォルトの名無しさん
2010/05/25(火) 23:25:00原案を出してもらえると嬉しいな。
0540デフォルトの名無しさん
2010/05/25(火) 23:41:41compare_with_foo = strcmp("foo");
compare_with_foo("bar");
こんな感じだよな
・関数オブジェクトの扱いや型はどうするのか
・引数をバインドするときに、その寿命をどうするのか
(クロージャと同じfunarg問題)
といった点が気になる
0541デフォルトの名無しさん
2010/05/25(火) 23:49:20最長不倒関数が5k行なわけないだろw
俺は昔若い頃ifとgotoとグローバル変数しかない10000行位のCのプログラムをみたことあるぜ
数日かけて全面書き直したがw
0542デフォルトの名無しさん
2010/05/25(火) 23:53:17やはり静的、インラインを考慮しないと
Cレベルの言語にはカリーは無理だが
問題はそいつをローカル変数で作って
スコープ外に持ち出す場合だな
0543デフォルトの名無しさん
2010/05/25(火) 23:59:30ぜんぜん確定してないのですけど、こんな感じで考えています。
void main() { printf("hello world\n"); }
struct A { char* name; int x; int y; }
int add(int a, int b) { return a + b }
int fib(int n) { if (a <= 2) return 1; else return fib(n-1)+fib(n-2); }
は
df main:()(void) = printf("hello world\n")
strct A {name:char*;x:int;y:int;}
df add:(a:int,b:int)(int) = a + b
df fib:(n:int)(int) = if (n <= 2) 1 else fib(n-1)*fib(n-2)
見た目はかなりScalaに似ていますが(a:int)(b:int)(int)と括弧を続けて書くのが
関数型言語の a:int->b:int->intのような感じのものに対応できたらいいんではと
考えています。ただ、だめなパターンがあるかもしれません。
だめなパターンがあった場合はScalaに似たようになるでしょう。
自分の希望は、この構文レベルでいろいろと試すことが出来るように
テストケースを用意しておき、よりよい構文を見つけることです。
抽象構文木の下はほかの人が最適化したりしてもらえればと考えています。
このようにして多少長くなりますが、演算子順位法でパーサが書ける様になり、
通常の構文解析も楽に出来るようにできたらと考えています。
0544デフォルトの名無しさん
2010/05/26(水) 00:08:32カリー化が目的になってる。
それをすることによって何のメリットがあるんだ?
って話を聞きたいんだよ。
むしろコンパイル時にカリー化して最適化ってのは
ありえそうだと思うのだが。
構文の不備によるカリー化不可能な定義を避けるために
構文を束縛するってのは判るのだけど、
カリー化不可能な関数っていうのが思いつかない。
存在しちゃ駄目だろそれは。
逆になさそうな気がするんだけど。
0545デフォルトの名無しさん
2010/05/26(水) 00:12:09いや、だから、それは関数型言語が欲しいだろ?
それをアセンブラにしたらどうなるんだ?
書いてみてよ。
0546デフォルトの名無しさん
2010/05/26(水) 00:17:13ありがとう。
とりあえず、ネガティブな反応はあとでまとめて読むことにして、これをベースに練っていこうか。
0547デフォルトの名無しさん
2010/05/26(水) 00:17:42続き。>>540 >>542 >>543
Cでの構文ではこんなアセンブラになるけども、
カリー化(ってなんか物凄い違和感ある)することによって
こんなにも素晴らしいアセンブラになるとか、有るんだろ。
だからスレを潰しまくってるんだろ、それは何よ。
0548デフォルトの名無しさん
2010/05/26(水) 00:22:010549デフォルトの名無しさん
2010/05/26(水) 00:22:150550デフォルトの名無しさん
2010/05/26(水) 00:26:35>>543で書いた例は今のC言語と同じアセンブラで十分です。
>>544
カリー化が目的じゃなくて、カリー化されてもきれいに書けるように考えてるのです。
C言語ではカリー化しないと思うのでしなくていいですけど。
発展性がある文法にしておこうよって考えてるのです。
Scalaではdefのところをdfと書き換えているのはGC拡張を考えてのことです。
>>546
ぜひよろしくお願いします。
0551デフォルトの名無しさん
2010/05/26(水) 00:29:44遅延評価とかも無理だし。
だからコンパイルタイムに処理できる範囲で
静的に定義できるような感じかインラインで展開しかねえんじゃね
0552デフォルトの名無しさん
2010/05/26(水) 00:32:51個人的には関数型言語はいくつか種を残して
いずれまたブームが去ると思ってるが。
0553デフォルトの名無しさん
2010/05/26(水) 00:39:520554デフォルトの名無しさん
2010/05/26(水) 00:40:16それが分かっていれば、ホットスポットでは前者のみを使おうとかそういう指針が出来るよね。
0555デフォルトの名無しさん
2010/05/26(水) 00:42:10綺麗な単語並べてるけど、意味の構築に失敗してるね。
気分は伝わったよ。
>>549
数学者の仕事って言う雰囲気。
0556デフォルトの名無しさん
2010/05/26(水) 00:42:43厳密にスコープに閉じ込めないと。
0557デフォルトの名無しさん
2010/05/26(水) 00:45:53>カリー化でコンパイル時に処理できるものと、それ以外を分けたらどうなるかな?
コンパイル時にカリー化で・・・・
の間違いではなくて?
0558デフォルトの名無しさん
2010/05/26(水) 00:49:50人工無能なのか、すごいなぁ。最近の人工無能は。
0559デフォルトの名無しさん
2010/05/26(水) 00:50:470560デフォルトの名無しさん
2010/05/26(水) 00:51:09マジかよ
0561デフォルトの名無しさん
2010/05/26(水) 00:54:05それが分かっていれば、ホットスポットでは前者のみを使おうとかそういう指針が出来るよね。
(こんな感じかな。>>554)
0562デフォルトの名無しさん
2010/05/26(水) 00:55:590563デフォルトの名無しさん
2010/05/26(水) 00:56:07関数をファーストクラスオブジェクトにするのかとか
レキシカルスコープなのかとか
どう考えてもカリー化よりlambdaのほうが本質的だ
まあGCじゃねーから小手先に走るしかないのかもしれないが
関数がファーストクラスオブジェクトじゃない世界でカリー化とか
吹いたところで出来ることも便利さは高が知れてるぞ
Cの生関数をベースにするなら、データをバインドした関数の型は
生の関数とは別のものにならざるを得ない
従ってC++ではテンプレートのダックタイピングでゴマカしてるんだろ
一体どうしたいんだ
0564デフォルトの名無しさん
2010/05/26(水) 00:57:50それぞれが考えたいところをどんどん考えればいい。
0565デフォルトの名無しさん
2010/05/26(水) 01:04:180566デフォルトの名無しさん
2010/05/26(水) 01:04:40クロージャとかいわなければ静的に処理できるし。
ダックタイピングもアドホックなプログラミングにはいいんだがなー
コンパイルタイムで処理できる範囲ならいいんじゃない
0567デフォルトの名無しさん
2010/05/26(水) 01:05:47上の議論を見るにGCは無し、あるいはオプショナルという流れだから
ファーストクラスな関数があってもレキシカルスコープが完全サポートできずに威力半減
ちょっとそれは困ると思うw
Cの代替って言うからには、低水準を詰めたいんだよなあ
確かに、モダンなものも取り込みたいなあという願望もあるが
うまく風呂敷を畳むのが難しい
0568デフォルトの名無しさん
2010/05/26(水) 01:10:250569デフォルトの名無しさん
2010/05/26(水) 01:12:47だよな
俺もGC無いつってんだからその辺は最初から眼中に無いものと思ってるよ
当然レキシカルスコープなし、クロージャ無し、当たり前だ
なのになんでカリー化なんて話してるのか分からんよ
0570デフォルトの名無しさん
2010/05/26(水) 01:17:09モダンな機能が使えないとつまらないからね。
当然、低レベルでも使えるように、パフォーマンスに影響を与える機能を洗い出して
「Effective 新言語」の中「カツカツに最適化したい部分では、これらの機能は使わないようにしよう」って啓蒙しよう。
(あるいはコンパイラがワーニングを出す)
0571デフォルトの名無しさん
2010/05/26(水) 01:22:55何でこのスレでやるの?
上から下までカバーできる僕の考えた最強の言語なんて、もし出来ても
C++より複雑で使いにくい最悪の言語になるのがオチだ
0572デフォルトの名無しさん
2010/05/26(水) 01:23:40>「既存のXX言語を使えばいい。」という類の発言は無意味である。
0573デフォルトの名無しさん
2010/05/26(水) 01:26:540574デフォルトの名無しさん
2010/05/26(水) 01:27:08レキシカルスコープなくても明示的な束縛がありゃ十分だろ。
面倒臭くはあるけど。
0575デフォルトの名無しさん
2010/05/26(水) 01:30:52レキシカルスコープって構文で制約されるスコープルールだろ?
普通にC系はみなファイル・ブロックなんかで制約されるレキシカルスコープじゃねえのか
俺が話はずしてんのか?
0576デフォルトの名無しさん
2010/05/26(水) 01:32:55基本的にCはグローバルスコープとローカルスコープしかない。
レキシカルかもしれないけれど、あんまり意味はない。
0577デフォルトの名無しさん
2010/05/26(水) 01:33:13束縛を明示させるとしても、型の問題と寿命管理の問題は残る
寿命はdownwordなスコープに限定するとしても、
>>540のようなことをしたいのは、結局は
int (*)(const char*)を引数に取る関数に渡すときにアダプタとして使うような
場合だが
(関数型言語のように)free variableをbindした関数と普通の関数を同一視できるか、
同一視できないので、ダックタイピングで逃げるかという形になる
0578デフォルトの名無しさん
2010/05/26(水) 01:40:410579デフォルトの名無しさん
2010/05/26(水) 01:41:15いや、話からいってレキシカルじゃなく
ダイナミックなスコープのこといってんじゃねえのかとおもってさ
0580デフォルトの名無しさん
2010/05/26(水) 01:53:52関数内関数があるかどうかぐらいの話と考えればいいと思う
0581デフォルトの名無しさん
2010/05/26(水) 02:04:12gcc拡張に欲しそうな機能かなりあんじゃね
関数内関数も静的なやつならいけるし
ブロックは値持つし
0582デフォルトの名無しさん
2010/05/26(水) 02:09:56静的な奴ってのが自由変数を参照していない関数、ということなら
名前をファイルスコープに拡張せずに済むという程度の意味しかないんじゃね
0583デフォルトの名無しさん
2010/05/26(水) 02:17:48ttp://d.hatena.ne.jp/eagletmt/20100306/1267805001
すげえなGCC拡張
0584デフォルトの名無しさん
2010/05/26(水) 03:22:21今のレベルより上は保護されてない限り参照できる
まあ古くはPascalでさえ出来たからな
Cでは意図的に関数内関数は外したっぽいが。
0585デフォルトの名無しさん
2010/05/26(水) 03:54:41かなりの部分がC99にはいったよな
attributeのpackやalignやsectionとinline asmがないと
組み込みではつらい
0586デフォルトの名無しさん
2010/05/26(水) 09:23:590587デフォルトの名無しさん
2010/05/26(水) 11:23:590588デフォルトの名無しさん
2010/05/26(水) 14:57:05同じだよ。結構普通に出来るっしよ
上のレベルのフレームを参照してるのを
外に持ちだしたら危ないし
0589デフォルトの名無しさん
2010/05/26(水) 22:23:12ttp://codepad.org/rsyqsN8a
関数ポインタの概念を拡張すれば
普通の関数ポインタやインスタンス+メンバ関数ポインタもカリー化された関数も同じように扱えるが、
普通の関数ポインタとして使いたい場合にオーバーヘッドが必要な事は言うまでもない
Dみたいにfunctionとdelegateで分けるというのもアリ
0590デフォルトの名無しさん
2010/05/27(木) 02:14:420591デフォルトの名無しさん
2010/05/27(木) 04:28:00「取ってくるです」の部分適用したいとコンパイラに伝える
構文が欲しいという話に応えてカリー化のような構文にすればいいのでは?
と提案しただけです。
C言語は多くの言語に影響を及ぼした偉大な言語です。
偉大な言語ではありますが、現在のように拡張されることを見越した
設計ではなかったと思います。
C言語の置き換えを目指すなら構文が拡張される言語を目指すべきです。
オブジェクト指向な言語に拡張したり、関数型言語への拡張も視野に
入れて構文を考えたものと、そうでないものなら拡張を考えた構文
のほうがいい構文だろうと主張しているのです。
0592デフォルトの名無しさん
2010/05/27(木) 04:36:53カリー化された関数とは関数を返す関数です。
C言語で考えれば関数ポインタを返す関数です。
引数には名前も付けたい。
型推論で型を省略できるところは省略できるようにしたい。
自分の型を返す関数の記述もしたい。
a()()()()()();
と呼び出せる関数の型を綺麗に書きたい。
構文解析は楽したい。
環境を持った関数と環境を持っていない関数は分けて考えたい。
クロージャとメソッドは別に考えたい、あるいは一緒に考えたい。
等あると思うのですが、関数ポインタの記述方法はどのようにしたらいいと思いますか?
0593デフォルトの名無しさん
2010/05/27(木) 07:19:490594デフォルトの名無しさん
2010/05/27(木) 10:19:17カリーは>>589のように合成を遅延する形で作れるなら
コンパイラの最適化のヒントにもなりえて有効かも知れない。
元々可能だった関数(ポインタ)を返す関数とも競合しない。
名前付き引数は f(int a, int b, int c)ならば
f(b: 2, a: 1, c: 3);あるいはf(b: 2)(a: 1)(c: 3);
f(b= 2, a=1, c=3);だと代入と間違うため
0595デフォルトの名無しさん
2010/05/27(木) 12:15:290596デフォルトの名無しさん
2010/05/27(木) 12:49:10デフォルト引数の隠蔽とIDEのインテリセンスで十分で
わざわざ難解にする必要も無い。
0597デフォルトの名無しさん
2010/05/27(木) 16:39:410598デフォルトの名無しさん
2010/05/27(木) 17:41:11数千行→C++で今迄書いてきた行数
数千行強→Javaで今迄書いてきた行数
こんな「ワタシ」にも議論に参加する資格があるでしょうか?
0599デフォルトの名無しさん
2010/05/27(木) 18:14:410600デフォルトの名無しさん
2010/05/27(木) 19:43:17関数型言語であるでしょ
0601デフォルトの名無しさん
2010/05/27(木) 19:47:240602デフォルトの名無しさん
2010/05/27(木) 19:49:37バグ潰しの為に型異常を報告させるので、
型推測の規則を厳しく持っていかないと
駄目だけど、そのルールっての曲者で
単純で明瞭ぽい暗黙の型変換であれだけの
混乱と戸惑いが発生して、もうね全部かけ、
キャストしろって話になったのがCの歴史。
一方LWLは、全部載せ型を基本として何されても
一応行けるぞってのが売りだけど、そのために
物凄いオーバーヘッドが発生してる。
LWLはそういう物だからそれで良いんだけどさ。
0603デフォルトの名無しさん
2010/05/27(木) 19:52:49そんな歴史ねーよ。どこのヤクザ企業だよ。
0604デフォルトの名無しさん
2010/05/27(木) 20:07:050605デフォルトの名無しさん
2010/05/28(金) 00:13:56C++はカス
0606デフォルトの名無しさん
2010/05/28(金) 17:33:28フリーソフト作者の愚痴 38
http://pc11.2ch.net/test/read.cgi/prog/1274799337/
0607デフォルトの名無しさん
2010/05/28(金) 18:19:540608デフォルトの名無しさん
2010/05/28(金) 19:01:40自己中マの巣窟
0609デフォルトの名無しさん
2010/05/28(金) 21:43:16基地外の相手なんかすんなよ
0610デフォルトの名無しさん
2010/05/28(金) 21:59:48カリー化
型推定
Lisp的なマクロ
ファーストクラス関数、正規表現、文字列、スレッド、XML、イベント
0611デフォルトの名無しさん
2010/05/28(金) 22:11:240612デフォルトの名無しさん
2010/05/28(金) 22:42:31正規表現や文字列やスレッドやXMLだって
0613デフォルトの名無しさん
2010/05/28(金) 23:14:220614デフォルトの名無しさん
2010/05/28(金) 23:15:380615デフォルトの名無しさん
2010/05/28(金) 23:16:13Lispでマクロが強力なのはあの単純な構文だからだよ。
0616デフォルトの名無しさん
2010/05/28(金) 23:19:430617デフォルトの名無しさん
2010/05/28(金) 23:20:20http://practical-scheme.net/trans/icad-j.html
それに対する批判「PythonはLispと違って最高、Lispは糞」
http://practical-scheme.net/trans/IsPythonLisp-j.html
0618デフォルトの名無しさん
2010/05/28(金) 23:20:230619デフォルトの名無しさん
2010/05/28(金) 23:22:08ラムダ式とか既にあって当たり前みたいな感じ
0620デフォルトの名無しさん
2010/05/28(金) 23:22:57Cのプリプロセッサマクロはトークンを置換するもの
Lispの構文木を操作するマクロとは別物でしょ
0621デフォルトの名無しさん
2010/05/28(金) 23:25:29でもそんなコードって傍から見たら何をやってるのか分かり辛いと思うんだよ
0622デフォルトの名無しさん
2010/05/28(金) 23:26:420623デフォルトの名無しさん
2010/05/28(金) 23:30:050624621
2010/05/28(金) 23:34:42>>617には無いようだな。前に言ったように、rubyはlispとほぼ同じコード
0625デフォルトの名無しさん
2010/05/28(金) 23:45:59本質的に同じものだよ。
0626デフォルトの名無しさん
2010/05/28(金) 23:46:51本質的に同じものなんだけど、Lispはそのまんまリストだから、ああいう挙動ができるだけ。
0627デフォルトの名無しさん
2010/05/28(金) 23:47:330628デフォルトの名無しさん
2010/05/29(土) 02:25:060629デフォルトの名無しさん
2010/05/29(土) 02:43:540630デフォルトの名無しさん
2010/05/29(土) 02:49:140631デフォルトの名無しさん
2010/05/29(土) 03:00:360632デフォルトの名無しさん
2010/05/29(土) 03:27:04Programmers know what they are doing.
という言葉が好きだ。
重くなるくらいなら安全に関する機能は不要だなあ
0633デフォルトの名無しさん
2010/05/29(土) 03:46:34重くなっても問題がないなら安全に関する機能は欲しい
重くなるか、重くならないか、重くなっても問題がないか、プログラマーは知っている。
0634デフォルトの名無しさん
2010/05/29(土) 03:50:240635デフォルトの名無しさん
2010/05/29(土) 03:58:25ガチガチ {
int x;
x = 1;
}
ゆるゆる {
y = 1;
}
{
/* デフォルトでガチガチ */
int z;
z = 1;
}
0636デフォルトの名無しさん
2010/05/29(土) 04:02:290637デフォルトの名無しさん
2010/05/29(土) 04:34:24演算子以外も構文木の一部だろ
全てがリストしかないlispとは
構文に対する考えが根本的に違う
構文いじるマクロなんて害悪でしかない
0638デフォルトの名無しさん
2010/05/29(土) 08:53:16害悪という根拠は?
0639デフォルトの名無しさん
2010/05/29(土) 08:56:410640デフォルトの名無しさん
2010/05/29(土) 09:05:140641デフォルトの名無しさん
2010/05/29(土) 09:10:15マクロはよっぽど慎重に書かない限り副作用が激しいからな。
0642デフォルトの名無しさん
2010/05/29(土) 09:16:40それは確かにそうだ。マクロは慎重に使うべきだ。
ただ、マクロは時として強力な武器となるのも事実だ。
たとえば、ActionScriptにはマクロがない。
インライン展開をコンパイラに期待しても展開してくれない。
そんな場合にCPPの関数マクロは役に立つ。
0643デフォルトの名無しさん
2010/05/29(土) 09:20:360644デフォルトの名無しさん
2010/05/29(土) 09:24:39議論をするのに本を買えというのがプログラマの仕事なのか?
0645デフォルトの名無しさん
2010/05/29(土) 09:24:40緑化作業をします
インライン 植樹
マクロ ペンキ
0646デフォルトの名無しさん
2010/05/29(土) 09:28:56パズルを利用して有用なことは、パズルにならない構文を用意すればいい。
0647デフォルトの名無しさん
2010/05/29(土) 09:30:01を動かさないようにすべきだったろう。
マクロを使う必要性があるのを認めざるを得なかったから残っているのではないかい?
0648デフォルトの名無しさん
2010/05/29(土) 09:37:54ライブラリ内のクラスや関数の生成でマクロを使っても、ライブラリユーザーには直接にマクロを使わせるべきではないだろう。
ただのタイプ数削減に使うのは避けるべきだろう。
0649デフォルトの名無しさん
2010/05/29(土) 09:41:060650デフォルトの名無しさん
2010/05/29(土) 09:41:49なんて本の何ページの何行についてなんてポインタ指定しても本がなければアクセス違反でクラッシュってことか
0651デフォルトの名無しさん
2010/05/29(土) 09:43:04どんなマクロかkwsk
0652デフォルトの名無しさん
2010/05/29(土) 11:27:010653デフォルトの名無しさん
2010/05/29(土) 14:22:19例えばアセンブラに対してC言語をマクロと考えれば10倍くらいになる。
http://www.vpri.org/html/work/ifnct.htm
SmalltalkをDSLを使って23万行を2万行にするのを目標にしているプロジェクトがある。
倍率が重要なのではない。費用対効果が高ければ使うべきだ。
マクロを使ってDSLを構築し、抽象化することでわかりやすく
行数を削減できるならマクロはいい道具だ。
0654デフォルトの名無しさん
2010/05/29(土) 14:25:55Lispにも構文はある。たとえばSchemeの仕様書、R5RSの7章
http://www.unixuser.org/~euske/doc/r5rs-ja/r5rs-ja.pdf
0655デフォルトの名無しさん
2010/05/29(土) 14:59:34LISPのマクロが強力とかいってる奴はポール・グレアムに洗脳されすぎ
0656デフォルトの名無しさん
2010/05/29(土) 15:01:24えーと、「Smalltalk(でDSL)を使って」ではなくて、
「今、Smalltalkなら23万行で実現できていること(言語処理系込みのGUIベースのOSもどきの環境)を、
パーサージェネレーター(ここでいうマクロ)と連携させたSchemeライクな新言語で2万行で書く」ですね。
http://d.hatena.ne.jp/propella/20091219/p1
0657デフォルトの名無しさん
2010/05/29(土) 15:07:12あるけど大した事ないという意味
0658デフォルトの名無しさん
2010/05/29(土) 15:20:30pythonクックブックにもそんな感じの言葉があった。Lispで作れないものがあるのか疑問とした上で、
ただしあの括弧だらけのコードに我慢出来ればの話だが。と絞められてたと思うけど
まあpythonクックブックはpythonマンセー本だから、pythonではLispに準ずるほど何でも出来て、
しかもコードが綺麗という趣旨の文章だったんだろう。例えばCのマクロなんかよりはよっぽど強力なのは明らか
0659デフォルトの名無しさん
2010/05/29(土) 15:26:25抽象度の高いクールなことを言おうとしてるんだろうけど
0660デフォルトの名無しさん
2010/05/29(土) 15:27:19Smalltalkのコードの20万行に相当すると
0661デフォルトの名無しさん
2010/05/29(土) 15:30:36CのマクロでもLISPと同じことはできるけど、単に構文が複雑だからマクロの扱いも難しいというだけのこと。
LISPが強力だといわれるのは構文が単純だから。
0662デフォルトの名無しさん
2010/05/29(土) 15:31:280663デフォルトの名無しさん
2010/05/29(土) 15:32:07全く同じことを何度も書かせるのは冗長だと思うが、それはエディタでどうとでもなる。
何をやっているのが把握しやすいことが最も重要。
その点でLispは最悪の部類に入る。
0664デフォルトの名無しさん
2010/05/29(土) 15:33:10そんなのは最初から分かってる。グレアムでさえも
0665デフォルトの名無しさん
2010/05/29(土) 15:39:04> CのマクロでもLISPと同じことはできる
> CのマクロでもLISPと同じことはできる
みんなが話してるCとは別のCって名前の言語があるの?
0666デフォルトの名無しさん
2010/05/29(土) 15:40:37機能としての強力さではなくて、
人間理解の点でCより秀でていると言える。
単に相対的な意味でわかりやすいというだけで、
実際に使ってみるとデバッグはものすごくやりにくいし、
とても便利な機能とは言えないと思う。
見た目上はキレイに纏まったように感じるかもしれないけど、
保守の観点からは最悪
0667デフォルトの名無しさん
2010/05/29(土) 15:41:15Lispの構文は、いわば片言の名詞を繋げただけの原始的なもの。
故に、Lispで作られた文の意図を把握するのは(人間にとって)煩わしい。
その反面、規則が単純であるが故に機械には理解しやすい。
0668デフォルトの名無しさん
2010/05/29(土) 15:41:300669デフォルトの名無しさん
2010/05/29(土) 15:42:170670デフォルトの名無しさん
2010/05/29(土) 15:43:05人間にとって、簡単な機械のほうが、複雑な機械より理解しやすい。
Lispを解釈する機械は、Cを解釈する機械より簡単である。
ゆえに、Lispを解釈する機械は、Cを解釈する機械より理解しやすい。
0671デフォルトの名無しさん
2010/05/29(土) 15:54:44コンパイラ製作者以外どうでもいい話
しかしコンパイラ製作者がいないとコンパイラも増えないし普及もしない
ということでコンパイラの作りやすさを主眼に置いたD言語であったのだが
0672デフォルトの名無しさん
2010/05/29(土) 16:02:530673デフォルトの名無しさん
2010/05/29(土) 16:08:300674デフォルトの名無しさん
2010/05/29(土) 16:12:07Dを流行らせたいなら逆効果だぞ
0675デフォルトの名無しさん
2010/05/29(土) 16:42:320676デフォルトの名無しさん
2010/05/29(土) 16:51:11(let loop ((x l) (num 0) (r '()))
(cond
((null? x) `(let ,(reverse r) ,@body))
((pair? (car x))
(loop (cdr x) (+ 1 (cadar x)) (cons `(,(caar x) ,(cadar x)) r))))
(else ; sym
(loop (cdr x) (+ 1 num) (cons `(,(car x) ,num) r))))))
(macroexpand1 '(enum-let (a (b 2) c) (+ a b c)))
=>(let ((a 0) (b 2) (c 3)) (+ a b c))
(macroexpand1 '(let ((a 0) (b 2) (c 3)) (+ a b c)))
=>((lambda (a b c) (+ a b c)) 0 2 3)
>(macroexpand1 '(let* ((a 0) (b 2) (c 3)) (+ a b c)))
=>(let ((a 0)) (let* ((b 2) (c 3)) (+ a b c)))
(macroexpand '(let* ((a 0) (b 2) (c 3)) (+ a b c)))
=>((lambda (a) ((lambda (b) ((lambda (c) (+ a b c)) 3)) 2)) 0)
おわかり頂けただろうか
0677デフォルトの名無しさん
2010/05/29(土) 17:11:09>例えばアセンブラに対してC言語をマクロと考えれば10倍くらいになる。
何だ、マクロの話じゃないのか。
0678デフォルトの名無しさん
2010/05/29(土) 17:19:190679デフォルトの名無しさん
2010/05/29(土) 19:27:59・構文を置き換えるルールを定義できる
・シンボルを置き換えるルールを定義できる
とか?
0680デフォルトの名無しさん
2010/05/29(土) 20:08:370681デフォルトの名無しさん
2010/05/29(土) 20:10:080682デフォルトの名無しさん
2010/05/29(土) 20:13:020683デフォルトの名無しさん
2010/05/29(土) 20:18:000684デフォルトの名無しさん
2010/05/29(土) 20:27:070685デフォルトの名無しさん
2010/05/29(土) 20:43:510686デフォルトの名無しさん
2010/05/29(土) 20:45:370687デフォルトの名無しさん
2010/05/29(土) 20:47:39逐次型の方がさらに歴史があるからだよ
0688デフォルトの名無しさん
2010/05/29(土) 20:48:090689デフォルトの名無しさん
2010/05/29(土) 20:49:330690デフォルトの名無しさん
2010/05/29(土) 20:51:340691デフォルトの名無しさん
2010/05/29(土) 20:53:54コンピューターの制御であれば、手続き型の方が直接的にかけるし、やることをそのまま記述するできて可読性も高い。
0692デフォルトの名無しさん
2010/05/29(土) 20:54:24Lisp級の構文木を操作可能なマクロを作る要件
・マッチングプログラムが簡単に書ける
・マクロの実行時に構文木を返すプログラムを書ける
また、作るのを容易にするには
・単純な式として構文解析が可能
0693デフォルトの名無しさん
2010/05/29(土) 20:55:330694デフォルトの名無しさん
2010/05/29(土) 20:55:50関数型言語は仕様を書く言語
0695デフォルトの名無しさん
2010/05/29(土) 20:55:560696デフォルトの名無しさん
2010/05/29(土) 20:56:01まぁ実際そういうこともあるけど。
0697デフォルトの名無しさん
2010/05/29(土) 20:56:510698デフォルトの名無しさん
2010/05/29(土) 21:01:220699デフォルトの名無しさん
2010/05/29(土) 21:04:360700デフォルトの名無しさん
2010/05/29(土) 21:05:12・逐次実行するプログラムを書きにくいこと
・オブジェクト指向との親和性が低いこと
・文法がメジャーなC言語系統の言語からかけ離れていること
・関数呼び出しをネストするとlispのような見た目になってしまうこと
等があると思います。
Scalaはその点よく出来ていてオブジェクト指向と関数型言語がうまく
融合されているのでScalaのような言語が広まった後
Haskell等の文法にシフトしていくことはあるのかも。
0701デフォルトの名無しさん
2010/05/29(土) 21:05:420702デフォルトの名無しさん
2010/05/29(土) 21:06:480703デフォルトの名無しさん
2010/05/29(土) 21:08:49それに関数型言語で書かれたソースも実機で動くプログラムになるわけだから、
その過程が想像しにくいというのも敬遠される理由かもしれないね。
0704デフォルトの名無しさん
2010/05/29(土) 21:11:40計算機科学者は好みそうだね、関数型
0705デフォルトの名無しさん
2010/05/29(土) 21:12:41CのマクロでLispのマクロをすべて実現することはできないよ。
新しい言語でLisp級のマクロを実現するアイディアはあるけど。
Lispが普及しない理由はLispのマクロにあるのではなくて、
Lispのシンタックス、見た目に問題があるからでしょう。
0706デフォルトの名無しさん
2010/05/29(土) 21:14:230707デフォルトの名無しさん
2010/05/29(土) 21:16:090708デフォルトの名無しさん
2010/05/29(土) 21:16:410709デフォルトの名無しさん
2010/05/29(土) 21:18:52ジョン・マッカーシーはλ計算の記法としてLISPを考えたわけだけど、
その時マクロの事なんて考えていたんだろうか?
そもそもλ計算にマクロという概念はあったっけ?
0710デフォルトの名無しさん
2010/05/29(土) 21:20:320711デフォルトの名無しさん
2010/05/29(土) 21:36:23というのも、ラムダ計算という強力な理論に裏付けされているからだ。
ラムダ計算にはチャーチ・ロッサー性という性質があって、
式の中の部分式をどこから評価しても結果は一緒ということが証明されている。
つまり、部分式を並列に実行しても良いということなんだ。
しかし例えばC言語みたいな言語は状態を持っているから、
必ずしも結果が同じになるとは限らない。
だって、たとえば、もし部分式が同じグローバル変数を操作していたら
最初に実行された部分式の評価が別の部分式にも影響を及ぼすからね。
0712デフォルトの名無しさん
2010/05/29(土) 21:37:57計算理論では、足し算から掛け算を定義したりする
つまり根本的な要素だけを与えられれば、当然可能だわな
マクロという概念があろうがなかろうがそのくらいのことは想定して作ってあるだろ
0713デフォルトの名無しさん
2010/05/29(土) 21:38:12関数型言語が主流にならなければならない十分な理由があるわけさ。
0714デフォルトの名無しさん
2010/05/29(土) 21:45:14LispはListを基本としたから今の見た目になっている。
Listだから構文木を操作するマクロを書きやすいのだ。
>>710
その表現は的を得ている。統一的な理論を作るのは難しい。
0715デフォルトの名無しさん
2010/05/29(土) 21:49:360716デフォルトの名無しさん
2010/05/29(土) 21:54:38ハードのマルチコア化がメインストリームになってきたのはせいぜいここ5年ほどだろ?
そしてマルチコアと並列処理の重要性がまだまだ現場まで浸透していないのが現状。
もし流行するとしたらこれからだよ。
0717デフォルトの名無しさん
2010/05/29(土) 21:57:210718デフォルトの名無しさん
2010/05/29(土) 21:58:12今まで関数型言語が流行しなかったのは目に見えるメリットが無かったから。
でもこれからは違うよね。
0719デフォルトの名無しさん
2010/05/29(土) 21:58:53チャーチ・ロッサー性はないでしょ?
0720デフォルトの名無しさん
2010/05/29(土) 22:01:00でもこれまでは手続き型で対処してきた。
ここ数年で必要性が高まったから再注目されているが
これまでなぜ採用されてこなかったかには理由がある。
再注目の結果関数型からインスパイアされた技術が
いくつか手続き型に組み込まれる流れになると思うよ。
0721デフォルトの名無しさん
2010/05/29(土) 22:01:22と誰かがプロモーションすれば流行るよ
0722デフォルトの名無しさん
2010/05/29(土) 22:05:060723デフォルトの名無しさん
2010/05/29(土) 22:09:46例えば関数型言語だったら、
関数が内部で別の関数を呼んだら、それが勝手に別のスレッドで実行される、
あるいは別のネットワークでつながれたマシン上で実行される、
という処理系を作ることだってできるんだよ。
もしその手続き型言語だったら状態の縛りがあるから
どの処理をどのように並列化するのか全部自分で指示しなきゃいけない。
その違いがあるね。
将来的な言語は並列化も自動でやってくれるようになると思うよ。
0724デフォルトの名無しさん
2010/05/29(土) 22:10:340725デフォルトの名無しさん
2010/05/29(土) 22:13:06JavaScriptのwithをRubyでも使いたい夢をあきらめないで。 - このブログは証明できない。
http://d.hatena.ne.jp/shunsuk/20100420/1271753512
0726デフォルトの名無しさん
2010/05/29(土) 22:39:09勝手に並列分散してくれたらうれしいとか思ったけど
スレ違いな気がしてきた。(汗
0727デフォルトの名無しさん
2010/05/29(土) 23:05:210728デフォルトの名無しさん
2010/05/30(日) 03:10:13Rubyって凄いんだな
0729デフォルトの名無しさん
2010/05/30(日) 04:55:43静的にこれをどう解決するかが問題だな
0730デフォルトの名無しさん
2010/05/30(日) 05:10:13環境って要するに変数の検索順と検索するスコープをいじるってことだろ。
型とdelegateを取って、delegateの環境というか、変数の検索に
呼び出し元の関数のスコープとオブジェクトのスコープを切り替えられる
仕組みがあればいいのか。
0731デフォルトの名無しさん
2010/05/30(日) 08:36:51twitterの裏はRubyから移行してscalaだよな
コンピュータがチューリングマシンをモデルにしていて
人間が逐次的にモノを考えているうちは手続き型がメインだな
両方進化して別物になる頃には関数型が流行るかもしれん
ヘテロな並列について
golangのこないだのblogにはgoroutineをコプロ向けにコンパイルして
GPGPUみたい奴で走らせても面白いってなことが書いてあったな
個人的にはマシンコード、サブプロセッサのマシンコード、HDLを一つの言語から
生成できればとても面白いんじゃないかと。妄想だなw
0732デフォルトの名無しさん
2010/05/30(日) 08:40:18こんなもんPascalでもあったっしょ
別物か?
そんな高度なことしなくてもコンパイル時の
名前検索に機能追加するだけじゃねえの
0733デフォルトの名無しさん
2010/05/30(日) 08:55:29まあ、CとかJavaとかしか知らない人は知らないんだろう
0734デフォルトの名無しさん
2010/05/30(日) 09:34:54withってそんなに便利とも思えないんだが
なくても別に困らない程度の構文だよね
0735デフォルトの名無しさん
2010/05/30(日) 09:53:59プリプロセスで、コンパイラコンパイラを使ってコンパイラを作るか、
コンパイラをDSLで構成すれば可能じゃね?
鬼だ。
0736デフォルトの名無しさん
2010/05/30(日) 10:33:09VMだけ提供するから文法は好きなように設計してくれ、
と言えばぜんぜん鬼ではないな。
だが、VMとコア言語を提供されると、コア言語がしがらみになる。
コア言語の巧拙をもっと議論するべきだ。
構文糖で尻拭いするのは最後の悪あがきであって、嬉々として語るようなことではない。
0737デフォルトの名無しさん
2010/05/30(日) 11:27:590738デフォルトの名無しさん
2010/05/30(日) 11:51:35withが出来ることが重要なのではない。
withを拡張で作ることが出来るのが重要なのだ。
>>735
そのためにはどんな仕組みがあればいいのだろう?
その仕組みを考えることこそが重要だ。>>736と同意見だ。
0739デフォルトの名無しさん
2010/05/30(日) 11:56:03最適化をするそれなりのコンパイラではメリット小さい。
0740デフォルトの名無しさん
2010/05/30(日) 12:06:07コンパイラはプラグインで名前取得用の関数を書き換える機能を提供する?
動的に名前解決の関数のポインタを置き換えることができるようにするのだ。
書き換える関数はその言語で記述し、ダイナミックリンクして置き換えるのだ。
0741デフォルトの名無しさん
2010/05/30(日) 12:18:250742デフォルトの名無しさん
2010/05/30(日) 12:33:02いや、嬉々として語っては無いが?
つーか、λ項とレキシカルスコープの実装から脱線しすぎだ。
もういいや。
0743デフォルトの名無しさん
2010/05/30(日) 12:39:13もうラムダ式からプログラムへ変換できるぐらいで満足していたらいけないんだよ。
プログラムがラムダ式と同等の性質を持つためには純粋関数型言語じゃないとダメ。
ラムダ計算はまだプログラミングの世界で本領を発揮していないからねぇ。
そろそろ次のステップに進まないとね。
0744デフォルトの名無しさん
2010/05/30(日) 12:41:46手続き型に寄生するのがベスト。
0745デフォルトの名無しさん
2010/05/30(日) 12:46:24自動並列化・・というと自動プログラミングみたいな臭いがしてしまうが、
少なくとも理論的可能性は純粋関数型言語の方が有利。
チャーチ・ロッサーの定理って知ってる?
0746デフォルトの名無しさん
2010/05/30(日) 12:49:39だって純粋関数は入力と出力以外に無いんだから。
0747デフォルトの名無しさん
2010/05/30(日) 12:49:540748デフォルトの名無しさん
2010/05/30(日) 12:50:520749デフォルトの名無しさん
2010/05/30(日) 12:52:350750デフォルトの名無しさん
2010/05/30(日) 12:54:22もしあり得るとしたらIOはどんなふうになるのかな。
現存する実装は存在する?
0751デフォルトの名無しさん
2010/05/30(日) 12:54:48純粋関数wって、正規表現かSQLみたいなポジションだよね
0752デフォルトの名無しさん
2010/05/30(日) 12:59:090753デフォルトの名無しさん
2010/05/30(日) 13:00:54apacheより高速で実用的なwebサーバがhaskellで550行程度で作られているが・・・
mighttpd
0754デフォルトの名無しさん
2010/05/30(日) 13:02:13はいはい、software designを読んだ人ね
SQLが関数型言語だ、という主張を真に受けてhaskellもSQLと同じなんだと思っちゃったわけね
0755デフォルトの名無しさん
2010/05/30(日) 13:03:360756デフォルトの名無しさん
2010/05/30(日) 13:05:01http://d.hatena.ne.jp/kryozahiro/20100529/1275143000
0757デフォルトの名無しさん
2010/05/30(日) 13:08:120758デフォルトの名無しさん
2010/05/30(日) 13:09:30どういう制限を加えればいいんですか?
0759デフォルトの名無しさん
2010/05/30(日) 13:09:31関数型にIOを埋め込むかで揉めてるだけ
0760デフォルトの名無しさん
2010/05/30(日) 13:12:04たぶんWorkerパターンを毎回作ってるんだろうな、と思う。
それって自動化できるんじゃない?
0761デフォルトの名無しさん
2010/05/30(日) 13:12:590762デフォルトの名無しさん
2010/05/30(日) 13:17:201つのアプリに複数のコアを占有されるのは正直ウザい
あれは重い処理するアプリがあっても
他のアプリやOSの動作を重くしないためのものだと思ってる
そのアプリだけ動かすような状態になってもいいから
高速化したいようなアプリは例外だけど(画像処理とか、ゲームとか)
普通のアプリはむしろ利用しない方がありがたい
0763デフォルトの名無しさん
2010/05/30(日) 13:20:350764デフォルトの名無しさん
2010/05/30(日) 13:26:280765デフォルトの名無しさん
2010/05/30(日) 13:35:39マルチスレッドでプログラムしとけば
OSが勝手にスケジューリングするだけだろう。
スレッド管理はOSに依存するからライブラリがふさわしい。
0766デフォルトの名無しさん
2010/05/30(日) 13:36:29このスレを占拠しているLISPerにとって、
低レベルってのは、webサーバとかSQLサーバとか程度のレイヤの話で
OSカーネルとか、8bit/16bitマイコンを使った組み込みのことは1msも考えてない。
0767デフォルトの名無しさん
2010/05/30(日) 13:40:450768デフォルトの名無しさん
2010/05/30(日) 13:42:310769デフォルトの名無しさん
2010/05/30(日) 13:45:22抽象化という意味で新言語はそうなるだろう
0770デフォルトの名無しさん
2010/05/30(日) 13:49:10いやGCとかVMとか言ってる連中のレベルが低レベルという意味だろう。
java言語は否定しないがjavaVMでDBサーバとか勘弁してもらいたい。
webブラウザのプラグインくらいに留めておいてほしいものだ。
0771デフォルトの名無しさん
2010/05/30(日) 13:53:22WebサーバーやSQLサーバーを記述できないとね。>関数型
0772デフォルトの名無しさん
2010/05/30(日) 13:56:140773デフォルトの名無しさん
2010/05/30(日) 13:57:29規格で用意されていれば良い
オンオフ可で
0774デフォルトの名無しさん
2010/05/30(日) 14:38:020775デフォルトの名無しさん
2010/05/30(日) 14:41:060776デフォルトの名無しさん
2010/05/30(日) 14:44:560777デフォルトの名無しさん
2010/05/30(日) 14:48:010778デフォルトの名無しさん
2010/05/30(日) 15:10:38だから、コンパイルタイムでいろいろやるとかいうのがいいと思いますよ。
ただ、関数型言語が云々いう人がいて何かを主張しているわけだから
聞きましょうよ。
0779デフォルトの名無しさん
2010/05/30(日) 15:15:270780デフォルトの名無しさん
2010/05/30(日) 15:16:150781デフォルトの名無しさん
2010/05/30(日) 15:30:29低レイヤーの言語でも検討する余地があると思います。
0782デフォルトの名無しさん
2010/05/30(日) 15:34:18優先順位付きのユーザー定義可能な演算子も後から
ライブラリで機能を追加する上で構文を追加したような効果が得られるので有利です。
0783デフォルトの名無しさん
2010/05/30(日) 15:36:01ループを使うことなく、アルゴリズムを再帰を使って
綺麗に記述することが出来ます。
0784デフォルトの名無しさん
2010/05/30(日) 15:37:58必要以上に再帰を使うのは歪んでる
forの代わりにifとgotoで記述するようなもの
コードの意図が不明瞭になる
0785デフォルトの名無しさん
2010/05/30(日) 15:48:050786デフォルトの名無しさん
2010/05/30(日) 15:52:290787デフォルトの名無しさん
2010/05/30(日) 15:53:220788デフォルトの名無しさん
2010/05/30(日) 15:54:090789デフォルトの名無しさん
2010/05/30(日) 15:56:100790デフォルトの名無しさん
2010/05/30(日) 15:58:420791デフォルトの名無しさん
2010/05/30(日) 16:01:550792デフォルトの名無しさん
2010/05/30(日) 16:05:180793デフォルトの名無しさん
2010/05/30(日) 16:05:190794デフォルトの名無しさん
2010/05/30(日) 16:06:180795デフォルトの名無しさん
2010/05/30(日) 16:07:04再帰で書くかループで書くかというその使い分けから
コードの意味を汲み取りやすくなったりするという事を言っている
そりゃ何でも再帰で書けるだろうけど、
それは何でもifとgotoで書けると主張する事と大して違いはない
0796デフォルトの名無しさん
2010/05/30(日) 16:08:180797デフォルトの名無しさん
2010/05/30(日) 16:30:470798デフォルトの名無しさん
2010/05/30(日) 16:36:260799デフォルトの名無しさん
2010/05/30(日) 16:44:460800デフォルトの名無しさん
2010/05/30(日) 16:47:14return (n <= 0 ? 1 : n * factorial(n - 1));
}
を g++ -O2 でコンパイルするとこうなる
__Z9factoriali:
pushq %rbp
movq %rsp, %rbp
movl $1, %eax
testl %edi, %edi
jle L6
.align 4,0x90
L5:
imull %edi, %eax
decl %edi
jne L5
L6:
leave
ret
完全にループになってるっしょ
0801デフォルトの名無しさん
2010/05/30(日) 16:49:250802デフォルトの名無しさん
2010/05/30(日) 16:49:32要はinput/outputの処理をロスが最小限になるようにできる言語が欲しいってことでしょ。
だったら単純にベンチマークで比較すりゃいいんじゃないの?
0803デフォルトの名無しさん
2010/05/30(日) 16:49:550804デフォルトの名無しさん
2010/05/30(日) 16:50:50それってアセンブリ言語的には単純にジャンプループに最適化できることじゃん。
0805デフォルトの名無しさん
2010/05/30(日) 16:51:17関数言語厨は頭湧いてるな
0806デフォルトの名無しさん
2010/05/30(日) 16:52:060807デフォルトの名無しさん
2010/05/30(日) 16:53:01実用のソフトを書いてみれば冷めるんじゃね。
0808デフォルトの名無しさん
2010/05/30(日) 16:53:46漸化式なら手続き型でも再帰で書けばいいじゃない
どうせ末尾再帰最適化されるんだから
漸化式を書くケースなんてほとんどないだろうけど
0809デフォルトの名無しさん
2010/05/30(日) 16:54:56それを処理する場合は必ず最適化される。
0810デフォルトの名無しさん
2010/05/30(日) 16:55:070811デフォルトの名無しさん
2010/05/30(日) 16:55:320812デフォルトの名無しさん
2010/05/30(日) 16:57:41関数型は流行らないということが理解できないのかね
0813デフォルトの名無しさん
2010/05/30(日) 16:58:47まるでダラダラ言い訳続けるヤンデレ少女のようだ
0814デフォルトの名無しさん
2010/05/30(日) 16:59:28まるでループ信者
0815デフォルトの名無しさん
2010/05/30(日) 16:59:56コンパイラの出力が結局はif gotoで記述されてるものになるということが分かってないのかもしれん
0816デフォルトの名無しさん
2010/05/30(日) 17:00:100817デフォルトの名無しさん
2010/05/30(日) 17:01:05じゃあifとgotoだけの言語作ってそればっかり使ってろや
0818デフォルトの名無しさん
2010/05/30(日) 17:01:250819デフォルトの名無しさん
2010/05/30(日) 17:01:27だとしたら実際のコーディングスタイルが関数型だと何が問題のか言ってくれない?
0820デフォルトの名無しさん
2010/05/30(日) 17:02:580821デフォルトの名無しさん
2010/05/30(日) 17:03:26そういう演習あったなあw
0822デフォルトの名無しさん
2010/05/30(日) 17:05:180823デフォルトの名無しさん
2010/05/30(日) 17:06:010824デフォルトの名無しさん
2010/05/30(日) 17:10:40低レベル言語に必要なものとは何かが分かるかもしれないよ。
0825デフォルトの名無しさん
2010/05/30(日) 17:10:580826デフォルトの名無しさん
2010/05/30(日) 17:12:330827デフォルトの名無しさん
2010/05/30(日) 17:13:15何を実装するための言語を作ろうとしているのか。
0828デフォルトの名無しさん
2010/05/30(日) 17:15:540829デフォルトの名無しさん
2010/05/30(日) 17:16:02ラムダ式の中の部分式をどこから評価しても結果は一緒ということ
0830デフォルトの名無しさん
2010/05/30(日) 17:17:31オサレに記述とはどういう意味か詳しく教えてください。
具体的にみんなにもあなたの考えが分かるように伝えてください。
0831デフォルトの名無しさん
2010/05/30(日) 17:19:49その内容をグダグダ言い合うスレだという認識だが
0832デフォルトの名無しさん
2010/05/30(日) 17:20:53目標を立てるからには具体的でないと目標の価値がないよ。
例えばMINIXをタネンバウムバージョンよりも高速、かつ、短く書き直す、
というような明確な目標が欲しいな。
0833デフォルトの名無しさん
2010/05/30(日) 17:25:090834デフォルトの名無しさん
2010/05/30(日) 17:28:51そのうえでグダグダ言ってるのを楽しむスレだろ
0835デフォルトの名無しさん
2010/05/30(日) 17:30:510836デフォルトの名無しさん
2010/05/30(日) 17:32:36ここに玉石混交のネタが集中してる感
0837デフォルトの名無しさん
2010/05/30(日) 17:33:20具体的で明確であり、
公共的であり、
スレ住人の興味を引き、
イノベーションを起し、
競争意識を高めるもの、
でなければならない。
そしてその目標を達成するための言語を作ろう。
その上で、さらに、C/C++より優れた点を一つ以上持つ言語を作ろう。
0838デフォルトの名無しさん
2010/05/30(日) 17:37:010839デフォルトの名無しさん
2010/05/30(日) 17:39:43俺が作る!
0840デフォルトの名無しさん
2010/05/30(日) 17:52:590841デフォルトの名無しさん
2010/05/30(日) 17:57:01さしあたっての目標はC/C++より優れた点を一つ以上持つ言語ということでどうだろう?
0842デフォルトの名無しさん
2010/05/30(日) 17:58:42最初に作る処理系はインタプリタでも構わないと思う。
0843デフォルトの名無しさん
2010/05/30(日) 17:59:36>>800のコードは「末尾再帰」ではないよね
末尾再帰で書くなら、こう
int fact1(int n, int acc) {
return n <= 0 ? acc : fact1(n - 1, n * acc);
}
int factorial(int n) { return fact1(n, 1); }
単純な例では、gccは末尾再帰化→ループ化までやってくれてるってことだね
0844デフォルトの名無しさん
2010/05/30(日) 18:01:080845デフォルトの名無しさん
2010/05/30(日) 18:01:500846デフォルトの名無しさん
2010/05/30(日) 18:03:38そして抽象化されないのがあたりまえという刷り込みが脳みそにあるから。
0847デフォルトの名無しさん
2010/05/30(日) 18:04:46まあね
引数増やすの面倒くさかったし
ちゃんと最適化してくれるからああしたけど
0848デフォルトの名無しさん
2010/05/30(日) 18:17:30どこに配列が?
0849デフォルトの名無しさん
2010/05/30(日) 19:17:45基本的にcallやretは存在しない
全部jmpだ
わかるか
0850デフォルトの名無しさん
2010/05/30(日) 19:20:420851デフォルトの名無しさん
2010/05/30(日) 19:41:20CPSは自動変換できる
どういうことか、わかるか
0852デフォルトの名無しさん
2010/05/30(日) 19:41:35未だにC/C++以外の言語が入りこめてない分野で使える言語でないと
結局C/C++が残ることになって代わることにはならないと思うんだ
だから最初の条件はそういう分野で使える言語であることだと思う
その上でより優れた言語であることかな
つまりC/C++を駆逐可能な言語
0853デフォルトの名無しさん
2010/05/30(日) 20:14:10既存ソフトのメンテナンスを除く新規プロジェクトでC/C++を選ぶ機会は
めっきり減ってしまった。
0854デフォルトの名無しさん
2010/05/30(日) 20:15:50GCとか、VMとか、関数型とか、如何に有り得ない妄想話で盛り上がってたか分かるから。
0855デフォルトの名無しさん
2010/05/30(日) 20:17:420856デフォルトの名無しさん
2010/05/30(日) 20:18:32現実主義者のスレは他にいくらでもあるだろ
0857デフォルトの名無しさん
2010/05/30(日) 20:20:35本気で新言語の仕様を考えようとした結果がこれだろ
0858デフォルトの名無しさん
2010/05/30(日) 20:21:48それはパート1で終わってんだよ。空気嫁
0859デフォルトの名無しさん
2010/05/30(日) 20:22:42OS(メモリ管理、ドライバ)
リアルタイム処理
そのほか
0860デフォルトの名無しさん
2010/05/30(日) 20:25:26完全な妄想よりは現実を基にした妄想の方が面白いでそ
0861デフォルトの名無しさん
2010/05/30(日) 20:26:03誰だよ、あの時次スレ立てたのは。
0862デフォルトの名無しさん
2010/05/30(日) 20:26:17僕の考えた関数型言語ってスレを立てたほうがいいんじゃんね?
0863デフォルトの名無しさん
2010/05/30(日) 20:27:08今やってる制御系の仕事は全部C言語で作ってるわ。
0864デフォルトの名無しさん
2010/05/30(日) 20:27:410865デフォルトの名無しさん
2010/05/30(日) 20:28:20今、一番も今風なのが関数型。
0866デフォルトの名無しさん
2010/05/30(日) 20:29:090867デフォルトの名無しさん
2010/05/30(日) 20:30:18オウム返しは良いけど、新言語に関数型が考慮されない理由は何?
rubyも関数型的な一面があるけど
0868デフォルトの名無しさん
2010/05/30(日) 20:31:010869デフォルトの名無しさん
2010/05/30(日) 20:31:350870デフォルトの名無しさん
2010/05/30(日) 20:33:59コンパイル時に処理されるなら有り。実行時に処理されるならいらない。
0871デフォルトの名無しさん
2010/05/30(日) 20:34:490872デフォルトの名無しさん
2010/05/30(日) 20:35:10有りと考えてるようには見えないが
0873デフォルトの名無しさん
2010/05/30(日) 20:35:480874デフォルトの名無しさん
2010/05/30(日) 20:36:470875デフォルトの名無しさん
2010/05/30(日) 20:37:500876デフォルトの名無しさん
2010/05/30(日) 20:38:13関数型で1スレ消耗してしまった
0877デフォルトの名無しさん
2010/05/30(日) 20:40:260878デフォルトの名無しさん
2010/05/30(日) 20:41:52・ハードウェアを直接操作
・デバドラ
0879デフォルトの名無しさん
2010/05/30(日) 20:43:150880デフォルトの名無しさん
2010/05/30(日) 20:45:160881デフォルトの名無しさん
2010/05/30(日) 20:48:050882デフォルトの名無しさん
2010/05/30(日) 20:52:24・ハードウェアを直接操作
・デバドラ
・直接アドレス参照
・OS
・GCとかVMとか目的のプログラム以外のものが動作しなくても動くこと。
0883デフォルトの名無しさん
2010/05/30(日) 20:53:230884デフォルトの名無しさん
2010/05/30(日) 20:54:100885デフォルトの名無しさん
2010/05/30(日) 20:55:26俺は否定しないな。実際にそうだ。
もっとお爺さんに言うように説明してくれたらわかるかもしれない。
0886デフォルトの名無しさん
2010/05/30(日) 20:56:080887デフォルトの名無しさん
2010/05/30(日) 20:56:110888デフォルトの名無しさん
2010/05/30(日) 20:58:250889デフォルトの名無しさん
2010/05/30(日) 21:00:20当然、お前が考えるものだよ。文脈読め馬鹿
0890デフォルトの名無しさん
2010/05/30(日) 21:00:500891デフォルトの名無しさん
2010/05/30(日) 21:01:170892デフォルトの名無しさん
2010/05/30(日) 21:01:470オーバーヘッド
0893デフォルトの名無しさん
2010/05/30(日) 21:04:530894デフォルトの名無しさん
2010/05/30(日) 21:06:06Javaでできるww
0895デフォルトの名無しさん
2010/05/30(日) 21:06:140896デフォルトの名無しさん
2010/05/30(日) 21:06:210897デフォルトの名無しさん
2010/05/30(日) 21:06:47Javaだな
0898デフォルトの名無しさん
2010/05/30(日) 21:07:25それ以外の意味だと意味がないだろ
現実には無理だとしても、そうじゃなきゃ本当にただのネタでしかなくなる
0899デフォルトの名無しさん
2010/05/30(日) 21:07:36突っ込み入れてる奴の方こそ何も分かってない
0900デフォルトの名無しさん
2010/05/30(日) 21:08:14>「既存のXX言語を使えばいい。」という類の発言は無意味である。
0901デフォルトの名無しさん
2010/05/30(日) 21:09:310902デフォルトの名無しさん
2010/05/30(日) 21:09:59おいおい。そんな五百円もするようなCPUで仕事が取れると思ってるのか?
RAM は128byteからだ
0903デフォルトの名無しさん
2010/05/30(日) 21:10:200904デフォルトの名無しさん
2010/05/30(日) 21:10:360905デフォルトの名無しさん
2010/05/30(日) 21:12:46マの話はマ板でやれ
0906デフォルトの名無しさん
2010/05/30(日) 21:12:55それはPart2を立てるときに、後付けされた理由だろ。
0907デフォルトの名無しさん
2010/05/30(日) 21:13:18ゴメソ
0908デフォルトの名無しさん
2010/05/30(日) 21:13:54だからパート1の流れを引きずってる奴はなんだんだよ
パート1の>>1はそれは無理だと叩かれてどっか行っただろ
そのスレを有効活用してんだよ。今のテンプレに従えカス
0909デフォルトの名無しさん
2010/05/30(日) 21:14:49このスレこそMLかfjでやれ。妄想談義で6スレも伸ばすな。
0910デフォルトの名無しさん
2010/05/30(日) 21:15:20現在のスレはあくまでもこのスレだ。
0911デフォルトの名無しさん
2010/05/30(日) 21:16:300912デフォルトの名無しさん
2010/05/30(日) 21:17:50だったらパート1で終わってろよ。
6スレも俺様言語仕様の妄想合戦して何が楽しいんだ。
マ板のOOスレかここは。
0913デフォルトの名無しさん
2010/05/30(日) 21:18:17お前は何が楽しくてこのスレにいるの?
0914デフォルトの名無しさん
2010/05/30(日) 21:18:460915デフォルトの名無しさん
2010/05/30(日) 21:19:11そういうところで使える今風の言語がほしい
0916デフォルトの名無しさん
2010/05/30(日) 21:19:38お前は何が楽しくてこのスレにいるの?
0917デフォルトの名無しさん
2010/05/30(日) 21:20:16マシン語が想像できないような高機能な言語は
そういう環境じゃ厳しいんじゃ
0918デフォルトの名無しさん
2010/05/30(日) 21:21:400919デフォルトの名無しさん
2010/05/30(日) 21:21:480920デフォルトの名無しさん
2010/05/30(日) 21:22:28マシン語想像できなくても開発出来るけど。
0921デフォルトの名無しさん
2010/05/30(日) 21:22:36どれだけ言語がどれだけメモリ使うか分からないんじゃねえ
0922デフォルトの名無しさん
2010/05/30(日) 21:22:370923デフォルトの名無しさん
2010/05/30(日) 21:24:440924デフォルトの名無しさん
2010/05/30(日) 21:25:00fjなんてもう死に体だろう
0925デフォルトの名無しさん
2010/05/30(日) 21:25:54逆に言うと、わかればいいんだよな
0926デフォルトの名無しさん
2010/05/30(日) 21:26:45超高速でも低級でもC代替でもない言語の話は妄想以前に単なるスレ違い
0927デフォルトの名無しさん
2010/05/30(日) 21:26:45『オレは「fj」を知ってるんだぞ』って言う単なるアピールだから気にしなくていい。
0928デフォルトの名無しさん
2010/05/30(日) 21:28:12このスレの基地外が紛れ込んでいるようだよ
フリーソフト作者の愚痴 38
http://pc11.2ch.net/test/read.cgi/prog/1274799337/
0929デフォルトの名無しさん
2010/05/30(日) 21:28:24だからC代替はCと等価じゃなきゃいけないわけ?
Cとは違うという結論ありきで議論はスタートしてるわけだが
0930デフォルトの名無しさん
2010/05/30(日) 21:29:36昨今の言語のトレンドを取り入れるわけではない。
0931デフォルトの名無しさん
2010/05/30(日) 21:30:12_,,‐─-v‐、,,、
,,-‐'": : : : : : : : : : `ヽ
/: : : : : : : ,,__ : : : : : : \
r': ,、,,.-─''"゛ ミ : : : : : : : 'i、
`/ / ミ_ : : : : : : :,、}
i l _,,..-‐^‐-、 `゙i: : : /l.l|
i、}‐-、 ヽ;;/,rェッ;;'" ゙ー' 9iリ!
| ',tテi ヽ='" ゞ t'
| 'i"´| , -、 ヽ-、,,___
| '}、 !,,tu'" ヽ、 ,l: ‐-‐" }: : : : :
} lヽ、__,,,.-‐ヽ /: : : : : : /|: : : : :
,r/ /: : :ヽー‐' ノ: : : : : : : / .|: : : : :
/: \ /: : : : : 丶,, -''_: : : : : : / |: : : : :
/: : : : :ヽ/: : : : : : : ヾ''‐--‐ヽ |: : : : :
/: : : : : : : : : : : : : : : : : : ヽ\: : / |: : : : :
エフジェー=デ=ヤレー[Fj De Yale]
(1955〜 フランス)
0932デフォルトの名無しさん
2010/05/30(日) 21:30:250933デフォルトの名無しさん
2010/05/30(日) 21:31:51>新たに作るとしたら、Cとは違う言語になるだろう。少なくとも、全く同じにはならないはずだ。
これ文章自体、書いたやつの妄想だから。「結果的にCになりましたwwサーセンwww」って結論もあり。
0934デフォルトの名無しさん
2010/05/30(日) 21:32:15>だからC代替はCと等価じゃなきゃいけないわけ?
当然
今C(C++に非ず)でやっていることができる言語じゃなければ要件を満たさない
0935デフォルトの名無しさん
2010/05/30(日) 21:32:400936デフォルトの名無しさん
2010/05/30(日) 21:32:49出力が等価かそれ以上の効率
記述性も
言語そのものが一致していたら意味がない
0937デフォルトの名無しさん
2010/05/30(日) 21:34:45あれ?Cになっちゃった
お前らが望む結論
0938デフォルトの名無しさん
2010/05/30(日) 21:36:020939デフォルトの名無しさん
2010/05/30(日) 21:37:22最先端の研究成果って何?
0940デフォルトの名無しさん
2010/05/30(日) 21:37:41頭が悪い
0941デフォルトの名無しさん
2010/05/30(日) 21:38:490942デフォルトの名無しさん
2010/05/30(日) 21:39:10大学とか研究所の論文でも漁って来いや。
0943デフォルトの名無しさん
2010/05/30(日) 21:39:430944デフォルトの名無しさん
2010/05/30(日) 21:40:20全く新しい言語じゃないといけないと思ってる、お前は頭が固い
0945デフォルトの名無しさん
2010/05/30(日) 21:40:42そんな些細なノイズに負けてたら、2ちゃんねるに書き込む資格はないよ。
0946デフォルトの名無しさん
2010/05/30(日) 21:41:19全く新しくなくて良いよ?
でもCにはない要素が一つもないじゃん。これでCの代替って笑うしかないんだけど
0947デフォルトの名無しさん
2010/05/30(日) 21:41:320948デフォルトの名無しさん
2010/05/30(日) 21:41:48具合的な実装方法を考えてみれば?
0949デフォルトの名無しさん
2010/05/30(日) 21:41:580950デフォルトの名無しさん
2010/05/30(日) 21:43:03どの論文かポインタ示せよ
0951デフォルトの名無しさん
2010/05/30(日) 21:43:16そもそも並列が(このスレ的に)求められてるの?
HDLとかだと面白いかもだが
0952デフォルトの名無しさん
2010/05/30(日) 21:43:28みんなで笑って大団円を迎えるって流れもありなんだよ。
0953デフォルトの名無しさん
2010/05/30(日) 21:44:09こんな馬鹿げた話がある?
0954デフォルトの名無しさん
2010/05/30(日) 21:46:02そんな話してんのお前だけだよw
0955デフォルトの名無しさん
2010/05/30(日) 21:46:370956デフォルトの名無しさん
2010/05/30(日) 21:47:03ggrks
>>953
馬鹿げた話で終わったら、それはそれで仕方ないだろ。
0957デフォルトの名無しさん
2010/05/30(日) 21:47:06みんなが笑うには成果がなければならない。
有終の美以外は許さないよ。
0958デフォルトの名無しさん
2010/05/30(日) 21:47:38なんでこのスレにいるんだろ
0959デフォルトの名無しさん
2010/05/30(日) 21:47:58このスレで求められているかどうかはわからないけども、
関数型では並列が有利とかいう人の話を最後まで聞いてみたかったなと。
何かしら参考になることがあるのかもなぁと思って。
並列をわかりやすく書けて、高速に動くならありじゃない?
0960デフォルトの名無しさん
2010/05/30(日) 21:48:15理由は>>1
0961デフォルトの名無しさん
2010/05/30(日) 21:48:24パート1の話をしたいやつはスレチと言っても良いね
0962デフォルトの名無しさん
2010/05/30(日) 21:49:120963デフォルトの名無しさん
2010/05/30(日) 21:49:510964デフォルトの名無しさん
2010/05/30(日) 21:50:57EC++はテンプレートがないのが辛い
当時仕様が固まってなかったというのはあるが、テンプレートの方が組み込みには使い道がある気がする
0965デフォルトの名無しさん
2010/05/30(日) 21:51:10そんなこと思ってんのお前だけだよ。
0966デフォルトの名無しさん
2010/05/30(日) 21:51:12スレタイの意図が変わっただけだよ
0967デフォルトの名無しさん
2010/05/30(日) 21:51:26同様に超高速低水準からかけ離れた妄想も一切禁止
0968デフォルトの名無しさん
2010/05/30(日) 21:51:47おれが改良言語発表するから待って
0969デフォルトの名無しさん
2010/05/30(日) 21:54:58http://pc12.2ch.net/test/read.cgi/tech/1275223921/l50
http://pc12.2ch.net/test/read.cgi/tech/1275223999/l50
0970デフォルトの名無しさん
2010/05/30(日) 21:55:19Part1からいるけど、そんな流れどこにも無かったぞ。
0971デフォルトの名無しさん
2010/05/30(日) 21:58:100972デフォルトの名無しさん
2010/05/30(日) 21:58:28言語訓練のために立てたものでした。
アイと研究員とのやり取りに利用するスレッドに書き込まれた、
関係者各位の皆様、ご協力ありがとうございました。
京都大学霊長類研究所
0973デフォルトの名無しさん
2010/05/30(日) 21:59:510974デフォルトの名無しさん
2010/05/30(日) 22:00:290975デフォルトの名無しさん
2010/05/30(日) 22:03:37それどっちも次スレじゃなくて、forkしただけだろ
低水準言語を開発したい
http://pc12.2ch.net/test/read.cgi/tech/1275223999/
新言語を開発したい
http://pc12.2ch.net/test/read.cgi/tech/1275223921/
0976デフォルトの名無しさん
2010/05/30(日) 22:04:470977デフォルトの名無しさん
2010/05/30(日) 22:07:11マダァ-? (・∀・ )っ/凵⌒☆チンチン
0978デフォルトの名無しさん
2010/05/30(日) 22:07:20お互いのためだな。
0979デフォルトの名無しさん
2010/05/30(日) 22:08:02抽象化は結構な、というか重要なことだが
やりすぎてハードウェアから乖離しすぎると
低水準を扱う言語としては問題が出てくる
バランス感覚が必要。GCすら問題視される領域で、
関数型言語の技法がそのまま使えはしないだろう
0980デフォルトの名無しさん
2010/05/30(日) 22:08:13パート1での反応を受けて、本来の意図に適切に沿った議論ができるようにパート2以降の>>1を修正したよ。
表現は変えたけど、元々の思いはそのままだよ。
0981デフォルトの名無しさん
2010/05/30(日) 22:09:190982デフォルトの名無しさん
2010/05/30(日) 22:09:430983デフォルトの名無しさん
2010/05/30(日) 22:10:430984デフォルトの名無しさん
2010/05/30(日) 22:10:483行で要約しろ
0985デフォルトの名無しさん
2010/05/30(日) 22:11:56えーとこの発言って、・・・
実はパート1の>>1は途中で逃げたんじゃなくて、今に至るまでずっと張り付いてたと考えていいのかな?
0986デフォルトの名無しさん
2010/05/30(日) 22:12:32スタートレック風にしないか?
0987デフォルトの名無しさん
2010/05/30(日) 22:13:27少なくとも最初の1のような発言は見つけられないけど
スレを立てたのも別の人間だと思ってた
0988デフォルトの名無しさん
2010/05/30(日) 22:13:330989デフォルトの名無しさん
2010/05/30(日) 22:14:220990デフォルトの名無しさん
2010/05/30(日) 22:16:220991デフォルトの名無しさん
2010/05/30(日) 22:17:21Cは高水準すぎる。
0992デフォルトの名無しさん
2010/05/30(日) 22:18:170993デフォルトの名無しさん
2010/05/30(日) 22:18:17無茶な議論が確かに多いけど。
0994デフォルトの名無しさん
2010/05/30(日) 22:19:27このばあいのGCといったらスマポは指さないと思う
0995デフォルトの名無しさん
2010/05/30(日) 22:19:500996デフォルトの名無しさん
2010/05/30(日) 22:21:140997デフォルトの名無しさん
2010/05/30(日) 22:22:05>>1
そのとおり。
そこで、それは何であるかを明らかにし、
最新のやり方でCよりも優れたやり方でそれを実現したい。
238 :デフォルトの名無しさん[]:2010/03/21(日) 03:19:08
>>234
こんな進化が早い業界で40年前の言語が最適解なわけがない。
C99だとしても10年以上前だ。
現在の知識で一から言語設計すれば、Cよりもっと良い解が必ず存在する。
246 :デフォルトの名無しさん[]:2010/03/21(日) 10:33:45
既存がどうこうではなく、
いま、最高のプログラミング言語研究者が新たに一から新しい言語を作るとしたらどういう言語を開発するか
という観点で考えて欲しい。
Part2立てたのが>>1じゃないとすれば、こいつかな
0998デフォルトの名無しさん
2010/05/30(日) 22:22:15やっぱり
話にならんわ
0999デフォルトの名無しさん
2010/05/30(日) 22:23:43そして次スレ
http://pc12.2ch.net/test/read.cgi/tech/1114223450/
1000デフォルトの名無しさん
2010/05/30(日) 22:23:4710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。