gnuのコードは糞コード
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGだけど、コードは腐っていませんか?
ex.gccのインラインアセンブラのシンタクスは何よ?
思想面での大いなる感謝はしつつも、コードがアレじゃね、のスレッド。
0002デフォルトの名無しさん
NGNG「動けばいいや。ソース公開しとくから、気になった奴は直せよ」
の精神です。
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGインラインアセンブラを使わざるを得ない部分があることを
もしかして知らないのか?
0005デフォルトの名無しさん
NGNG議論する人は、本当にgnuのソースを見て言っているの?
0006デフォルトの名無しさん
NGNGシンタクスについていっているわけじゃねーだろ。
コードだよ、コード。
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGgcc のインラインアセンブラの文法は、良いと思うぞ。使うレジスタを
指定しないで済む(32bit 汎用レジスタのどれか、みたいな書き方が
できる)ので、コンパイル時に最適なレジスタ割り当てが行えるわけ
だし。
ただソースコードに関しては、ホントにダメなものが多いよな。binutils
とか読むと目が腐るよ。
>>2
正解。Linux も同じノリを受け継いでるので、コードはぐちゃぐちゃ。少
しは Solaris とか 4.4BSD を見習って欲しいものだ。
0010デフォルトの名無しさん
NGNG直接読んだことはないが、どっかの本に、
「Stallmanはアーキテクト(として一流)だ。
狭義のプログラマ(として一流)かどうかはさておき」
みたいなことが書いてあったけど、ほんと?>ソース読んだ人
あ。GNUといってもStallman一人じゃないな。
あそこって今何人くらいで書いてるんでしょう?
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGあんたら、あたま良いかもしれんけど、あたしゃ理解できんね。
ex...linux/arch/i386/traps.c
#define _set_gate(gate_addr,type,dpl,addr) \
do { \
int __d0, __d1; \
__asm__ __volatile__ ("movw %%dx,%%ax\n\t" \
"movw %4,%%dx\n\t" \
"movl %%eax,%0\n\t" \
"movl %%edx,%1" \
:"=m" (*((long *) (gate_addr))), \
"=m" (*(1+(long *) (gate_addr))), "=&a" (__d0), "=&d" (__d1) \
:"i" ((short) (0x8000+(dpl<<13)+(type<<8))), \
"3" ((char *) (addr)),"2" (__KERNEL_CS << 16)); \
} while (0)
この、"3"とか言うのは位置オペランド?
0013デフォルトの名無しさん
NGNGって気持ちがあるんなら綺麗に書きなおしてフィードバックしろや
ガタガタ文句言ってるだけでスキル無いんだろ?
0014デフォルトの名無しさん
NGNGLinux kernel じゃなくて、
4.4bsdとか、見たほうが良いのかな?
(それって、今じゃ netbsd?)
0015デフォルトの名無しさん
NGNG遥かに腐っているような気がするなあ。
あーゆーサンプルソースを元に育った人間が書くコードが恐ろしい。
0016sageる
NGNG0017デフォルトの名無しさん
NGNGconfig.hで吸収されるんじゃない?>16
それ以外は機能の有無や互換性とかだと思うけど
0018デフォルトの名無しさん
NGNGあれが「オープン」?
0019デフォルトの名無しさん
NGNG目的にもよるが、カーネルの勉強したいなら Linux より NetBSD の方
が良いと思うよ。Linux は設計も実装も、ちょっと……ね。
ただ最近の UNIX カーネルは規模が大きく、慣れないと見通しが効か
ないかも。もしカーネルを読むのが初めてなら、もっと小さいコードで慣
らしておくことを勧める。
Lions' Commentary on UNIX を買ってきて UNIX Version 6 のソース
を読むとか、インターネットからマイクロカーネルのソースを探してきて
読むとかね。有名どころのマイクロカーネルだと、誰かしか内部構造を
解説する論文を書いてるので、それとソースコードを合わせて入手す
るのが吉。
……ぜんぜん、このスレッドと関係ないな。sage だ。
0020デフォルトの名無しさん
NGNGせめて info ぐらいは読んで下さいな。
http://docs.freebsd.org/info/gcc/gcc.info.Extended_Asm.html から抜粋
asm ("combine %2,%0" : "=r" (foo) : "0" (foo), "g" (bar));
The constraint `"0"' for operand 1 says that it must occupy the same
location as operand 0. A digit in constraint is allowed only in an
input operand, and it must refer to an output operand.
しかし、典型的に汚いコードを持ってきたね。なんで Linux のヒトって
マジックナンバーを多用して、バイナリのパックもマクロなどで隠蔽せ
ずに直接シフト演算で解決しようとするかな。読みにくくてかなわん。
0021デフォルトの名無しさん
NGNGGNU思想をあれこれ言うためのスレは既にあるので、
そっちへ逝って語りましょう。
0022デフォルトの名無しさん
NGNGきっと芸術作品なんでしょ。
素人には壺やら絵画の良し悪しが分からないのと似ているのではないかと。
0023デフォルトの名無しさん
NGNGLinuxのコードがぐちゃぐちゃなのはGNUのノリ関係なく
Linus君がヘボってだけじゃないのですか?
>>10
StallmanやGNUに雇われてる人が書いたコードってGNUのコード全体の半分もないでしょ。
0024デフォルトの名無しさん
NGNGいやいや、それは違うと思うぞ。
ほんとに糞だったりもするのだ。
0026デフォルトの名無しさん
NGNGすごい好意的な捉え方だね(笑
0027デフォルトの名無しさん
NGNG一般人が、
#define PLUSONE(a) ((a)+1)
とはしないのと同レベルだろう。
0028デフォルトの名無しさん
NGNGシフトでキャリー拾って飛ぶのが早いとかって感覚。
癖ってついちゃうと落とすのが大変だな。(w
0029デフォルトの名無しさん
NGNG思った。
0030デフォルトの名無しさん
NGNG卓上のオブジェクト指向など足元にも及ばない。
0031デフォルトの名無しさん
NGNG卓上ってなんだ?机上のことか?
まぁいいけど、一応混じれ酢するなら、
そんな寝言を「常に」言う奴には未来は任せられないってのは確かだ。
今時全部を汗で書く奴はほぼ絶滅したってのと同様に。
それにOOなんてとっくの昔に、世間に定着した技術になってる。
未だにそれに頓着しない奴なんて一部の老年ドキュだけ。
0033デフォルトの名無しさん
NGNG>卓上ってなんだ?机上のことか?
新しい2ch養護老人ホーム
0034デフォルトの名無しさん
NGNGそりゃそうだが、それ以前に、誰が動かないと言った?
まぁ、指向に動くも動かないも無い(動くものを実装すりゃいいんだ)けどさ。
あとは、机上って何なのかが永遠(藁)の謎だな。
0036デフォルトの名無しさん
NGNG一瞬、意味無いじゃんって思ったのだが
同じ意味を持ったコードをマクロで括っとけば
後で変更することになった時に楽って話?
bit演算をマクロで隠すのはコードを見やすくする意味もあるが
あなたの挙げた例には、その意味とは違うよね?
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG世の中にないと思ってるやつがいるようだな。
0039デフォルトの名無しさん
NGNG多くの環境に対応するには汚くなっても仕方ない気がするけど
望ましい、じゃなくて現実ってそんなもんかなって感じ。
gnu のコード見てると、良くも悪くもハッカーライクな匂いがする。
0040デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG俺は「きれいだけど動かないコード」のほうがいいなぁ。
これは「なぜ動かないのか分かるコード」と「なぜ動くのか分からないコード」
と言い換えてもいいんだけれど。
どう?
0044デフォルトの名無しさん
NGNGそれはおまえが馬鹿なだけ。
コードが綺麗とか汚いとか言ってる人って、Pentium系のニーモニック体系の汚さも文句言うのかな?
0045デフォルトの名無しさん
NGNG動かないと意味なし
0046デフォルトの名無しさん
NGNG大規模な場合は俺も「きれいだけど動かないコード」のほうがいい。
何年も付き合わされるわけだから、理解できないほど汚いコードだったら
作り直したほうがいい。
0047デフォルトの名無しさん
NGNG簡単にこっちの方がいいなんて言えるわけないよ。
0049デフォルトの名無しさん
NGNGあるいは無責任つー感じだな。
0050デフォルトの名無しさん
NGNG44はあほSEかドキュソクライアントだろ?
0051デフォルトの名無しさん
NGNG納期になっても完成しないプログラムの方がいいとでも?
0052デフォルトの名無しさん
NGNG汚いコードを書くヤツがいたら注意したいと思います。
0053デフォルトの名無しさん
NGNG長期にわたる開発だったら納期が遅れたほうがいいだろうね。
開発側にとっては。ひいてはクライアントにとっても。
0054デフォルトの名無しさん
NGNGそうしたいのは山々だけど、今からじゃ規模がでかくてどっから手を付けてイイかわからんジャン。
不具合にその場しのぎの対処を、じゃなくて、根本からあの汚いソースをどうにかしたいって事なんだから。
つーかみんなでdiffを1から書きなおさんか?cvsで日本語使ってるとマージで落ちるんだけど……
ソース覗いてビビタよ。
0055デフォルトの名無しさん
NGNG「Linuxの革命」読んだ感じでは、
結局納期って奴がソフトのレベルを下げる元凶の1つ、
だと読めなくもないっす。まぁ当然なんだけどさ。
糞プログラムで地上を埋めたいかどうか、ってことだな。
ところでGNUおよびLinux。Raymondによると
それぞれ伽藍およびバザールの代表選手らしいが、
比較するとどっちがどれくらいコード汚いの?
0056デフォルトの名無しさん
NGNGcygwin上のRCSで、まともに動くのを見たことがない気がする
んだけど、もしかして理由はソレ?
cygwin環境だと、改行とか文字コードでなにかと色々いじめる羽目になるんでさ。
0057デフォルトの名無しさん
NGNG継ぎ接ぎで汚いけどセキュリティーホール塞がれたプログラム>綺麗だけど実は穴だらけのプログラム
0058デフォルトの名無しさん
NGNG「なぜ動くのか理解できないコード」なら、担当者の知能レベルで納得できるけどさ。
「保守しやすい」ってさ、「怠慢こける」と同意語??
0059デフォルトの名無しさん
NGNGそのとおり
0060デフォルトの名無しさん
NGNG俺も「きれいだけど動かないコード」のほうがいいな。
デバグと仕様変更のときに困っちゃうんだよね、「汚いけど動くコード」って。
>>58
>馬鹿だなぁ〜「なぜ動くのかわからないコード」なんて、あるわけないじゃん。
よ〜く調べないと分からないという意味ならゴロゴロあるね。
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG>>54
diffは差分生成アルゴリズムを調べていたときに読んだよ。
というか読めなかったよ。
0063デフォルトの名無しさん
NGNG「汚いけど動くコード」は、一度動かなくなったとき大変だ。
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG大元のソースはどこから落せますか?乞うULI。
有志のみんなでソースコードを見てみようじゃないですか。
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGヘタレは本当にヘタレなコードしか書きませんね。
それを修正する工数なんて認められるわけないので、
ストレスたまりっぱなしです。はい。
0069デフォルトの名無しさん
NGNGGNUdiffのどこが腐ってるって?
コードを見ながら議論しよう。
0070デフォルトの名無しさん
NGNG調べるっていうか、パクろうとしたわけね。
「参考にする」と「コピー」は、別の意味だぞ。
で、自分で diff 書いてみて、それを、オープンソースに
反映させる気は全然ないんでしょ?
0071デフォルトの名無しさん
NGNGまあ、あわよくばパクろうとは思ったけどね。
使われているアルゴリズムの論文を読んだものの、
実際にどうコードに落とすかぴんと来なかったのでソースを読んだ。
結局はdiff解読は諦めてxyzzyの作者のサイトにある説明とサンプルコードを元に、
差分生成プログラムを書いたよ。
>自分で diff 書いてみて
ごめん。
研究で使い捨てるプログラムだったのでdiffほど高度なものは必要なかった。
それに、diffは使う分には申し分ないので、僕は書き直す意味はないと思う。
diff上位互換のソフトを作るならいいけどね。
使われているアルゴリズムは違うけど、
PerlでAlgorithm::diffというdiffもどきの動作をするプログラムがあるので、
参考になるかも。
0072デフォルトの名無しさん
NGNG参考にしても、パクってもいいんだよ..GNU
自分でスクラッチで diff を書くんじゃなくって、みんなが見れる、
diffのどこが悪くって、あんたはどういうふうに直せば
好いんだって、って話をしてるのよ。
0073デフォルトの名無しさん
NGNGGNU diff のどの辺がダメなのかな?
ソースを落して見てみたけど、あたいの技倆ぢゃ見切れない。
確かに、頭のほうは case 文が多いけど、これは
仕様から来ているもんで、コードが腐っているかどうか
とはまったく無関係でしょ?
うだうだ言ってないでコードを見て発言したらどう?
0074デフォルトの名無しさん
NGNG>うーみゅ。
デブヲタ確定。
0075デフォルトの名無しさん
NGNGstatic char *option_list PARAMS((char **, int));
とかANSI以前のコンパイラでも動作させようとしてるのが伺える。
多分、ANSI以前のコンパイラをサポートしないようにすれば
もう少し奇麗になると思う。
0076@
NGNG>>うーみゅ。
>デブヲタ確定。
どことなく某氏に似た感じだ。
彼は内科医の超ナイスガイだったと記憶している。
0077デフォルトの名無しさん
NGNG時間と暇さえあれば誰でも小さいものなら書ける。質はこの際問わない。
だがよ、労力かけて作ったものについてあーだ、こーだ言うのは、
自分が作り直す気があるものだけにしてくれ。
コードを公開してくれていることをもう少し考えろ。
0078デフォルトの名無しさん
NGNGいや、あーだこーだ言うのは悪くはないだろ。
むしろいいことだ。
0079デフォルトの名無しさん
NGNG意味無し。別に言ってもいいけど、大抵価値なし。
0080デフォルトの名無しさん
NGNG1:現状じゃ駄目であり、
2:有効な代案もとりあえず見つからない、
という場合においては、批判する(あそこが駄目だと言う)
ことしか出来ないんじゃないか?
その批判を読んで(読まなくてもいいが)、
もっと有能な人が有効な代案を成してくれるのを
待つ(しかない)という状態は、
無いわけじゃないだろう。残念ながら。
それとも、そういう場合にすら黙秘してろ、とでも?
008178
NGNG言ってても増えるかもしれん。
しかし言ったほうが減るのは確かだ。
0082デフォルトの名無しさん
NGNGだから。「gnuのコードはクソ派」の人は、具体的に例を挙
げて「こういう風に書いた方が解りやすい!」って書いてく
れない?抽象論ならオレにだって出来るぞ(笑)
0083デフォルトの名無しさん
NGNGここでいう抽象論ってなんだ?
そもそも抽象とはなんなのかを理解してるか?(藁
言葉が足りないことを抽象と呼ぶのは止せ。
それこそが(抽象だかなんだか知らぬが)問題をぼやけさせる元凶だ。
で、改善案(笑)。そういうのは抽象じゃなくて厨房って呼ぶんだよ(藁
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNGオマエモナー!
そういう訳で、語りまくりコードのアプ希望!
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGデブオタうぜぇ
0088デフォルトの名無しさん
NGNGvoid omaemona(void){
if(RES_NO>999)return;
printf(">>%d\nオマエモナー\n",RES_NO - 1);
omaemona();
}
int main(){
printf(">>%d",RES_NO - 1);
omaemona();
return 0;
}
0089結局、
NGNG読んでも良いか悪いかをわかるほどのスキルもないって事だよ。
0090名無しさん
NGNGそれをregexでやりましたが、
やった後気持ちよかったです。
「抜いた」って気分。
0091デフォルトの名無しさん
NGNGうん。
ソースは読んだけど、良いか悪いかはわかりませんでした。
0092デフォルトの名無しさん
NGNGうん。
ソースは読んだけど、良し悪しはわかりませんでした。
009391-92
NGNG0094デフォルトの名無しさん
NGNGで?
君の書いたコードはどうなったの?
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGftp://ftp.dnsbalance.ring.gr.jp/pub/GNU/
0097デフォルトの名無しさん
NGNGftp://alpha.gnu.org/
0098デフォルトの名無しさん
NGNGCで書いててもまともに構造化プログラミングしてないじゃん。
動けばいい、ってレベル。
こんなソース書く奴と一緒に仕事したくないね、って感じ。
0099デフォルトの名無しさん
NGNGまぁ俺にはそんなスキルはないが。
0100名無しさん
NGNGひとからげにはできんのです。
flexなんかだともともとはbsdだし。
ここではRMSとかMIKEとかGNUでは多く見かける署名の
ソースを論じるとすれば、
案外セオリーに忠実なソース多いよ。
ファイル名なんかもどこぞの名著の章立てにほぼ忠実に
対応しそうなくらい。
マイナーな技法とかでちょっと悩むけど関数の分け方とか
は行数で分けるって言うより章立てっぽく素直に分けてるし。
0101デフォルトの名無しさん
NGNG具体的にダメな箇所をきぼーん。
私もスキル無いけど、勉強になると思うので。
0102デフォルトの名無しさん
NGNGダメなコード読むより、いいコードを読んだほうが勉強になるって。
0103デフォルトの名無しさん
NGNGいいコードある場所おしえてちょ。
どんなのがいいコードかよくわからないので
0104デフォルトの名無しさん
NGNGたいていは簡単に理解出来ないものさ。
010598
NGNG具体的なプログラム名称あげてみりん。
>>101
tarをライブラリ化しようとしてソース見たけど、
tarのプログラム用のデータ構造べったりでアルゴリズム書いてるから、
とても切り出せるシロモンじゃなかったよ。
ほかのプログラムにも言えるけど、エラー発生時もprintf系関数で直書きしてるしね。
俺だったら、tarの機能を持つライブラリを作り、
それを使ってstdio用のフロントエンドを作るね。
tarのアルゴリズム自体にOS依存性なんかはないから、
それを切り出せないソースはあまり有用でない。
それよりもアルゴリズムを解説した文書の方が欲しい。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG>とても切り出せるシロモンじゃなかったよ。
それはObject指向っていうんじゃないのか?(藁
データ構造とアルゴリズムが切り離せるとは限らんだろ。
0109デフォルトの名無しさん
NGNG「オマエも使ってみ」
みたいなノリで公開してきた歴史があるからね。
自分が読めればそれでよしってのも納得できる。
よりよいプログラムにしようとか、みんなで一本のプログラムを
書こうってのは最近の話でしょ。
で、なかなかそういう流れにならないのは、相変わらず自分勝手(笑)な
年寄りの書いたコードがまだまだ現役で、若い人に元気がないから
じゃないのけ?
0110デフォルトの名無しさん
NGNGライブラリ単位ではなくプロセス単位でのオブジェクト指向なのだ。
0111デフォルトの名無しさん
NGNGデータ構造とアルゴリズムをセットにして、関連のないものは別のモジュールにしましょう、
ってなことを強く言い始めたのはオブジェクト指向だね。
オブジェクト指向の場合、モジュール=クラスかな。
でも、そんなことは構造化プログラミングでも意識すれば書けます。
gnuのコードは、「時代に合わせてよりよりコードに変えていく」という
ことをしてないから、明らかに時代遅れなんだろうね。
今の時代、「システムにはコンソールがあります」という前提のC標準ライブラリは逝って良しなんだけどさ。
0113デフォルトの名無しさん
NGNG継承問題 >>110 もある(OSがそれをサポートすれば別だが)し、
あとプロセス単位だと重すぎるんで、汎用性が無く却下な場合が多い。
あと、これ重要だが、実行主体であるプロセスという単位だと
「メソッドを呼ぶ」つまりObjectから見ると「メソッドが呼ばれる」
という雰囲気をやりにくいってのもある。
唯一のメソッドは「プロセス起動」(笑)。
シグナル呼ぶって手も無いでもないが、メソッドの数が
最初から決められて変えられないなんてのは
OOPとしては結構寒いので大抵却下。
プロセスの「起動」って実は、Constructと
デフォルトメソッド(藁)のスタートとが
癒着してて分離できないんで、結構辛い。
main()に余計(藁)な処理をできるだけ書かずに
なんでもかんでもシグナルハンドラに書くという手も
あるだろうけど、それって嫌でしょ?
元よりOOPが似合わないモデルなんだよ、プロセスって。
0114デフォルトの名無しさん
NGNG,§、 プラーン
,ー./ハ,§
〈:://二§_
/ヽ ヽ ヽ
|:: |::.. | |
. |:: |:::. | | 死んでお詫びします・・・
〈:: 〉:: | / |
. |:: |:: l |
. |:: |____∧_,|
(((〈::: _ / /)
|:::: |:: |
|:::: |:: |
. |:: =|::: =|
|:::: |:: |
. |::: ||:::: |
|__,||__|
/::__) /::__)
/ / /ノ,/ ))
~^~ ~^~
____
0115( ´∀`)
NGNG>ライブラリ単位ではなくプロセス単位でのオブジェクト指向なのだ。
主語がよくわからない。
・オブジェクト指向はプロセス単位であるべきだ
・tarはプロセス単位のオブジェクト指向だ
前者なら知らん。俺は拒否(できる場合には拒否)。
後者なら、コンポーネント指向のほうがしっくりくる。
パイプで接続するってことだよね?オブジェクトとして扱っているが、
設計がオブジェクト指向だとは思えない。
0116116
NGNG>あとプロセス単位だと重すぎるんで、汎用性が無く却下な場合が多い。
重い→汎用性がない?
ここの論理展開がわかんない。どうして?
>あと、これ重要だが、実行主体であるプロセスという単位だと
>「メソッドを呼ぶ」つまりObjectから見ると「メソッドが呼ばれる」
>という雰囲気をやりにくいってのもある。
「雰囲気をやる」ってどういう意味?
ってのはおいとくとしても、全体的に意味わかんない。
プロセスをオブジェクトと見てソケットでメッセージパスするのは
なんでダメなの?
0117116
NGNG>デフォルトメソッド(藁)のスタートとが
>癒着してて分離できないんで、結構辛い。
>main()に余計(藁)な処理をできるだけ書かずに
>なんでもかんでもシグナルハンドラに書くという手も
>あるだろうけど、それって嫌でしょ?
ここもよくわかんない。例外処理以外のIPCにシグナル使う人って
気が狂ってない?普通ソケット使うと思うけど。
0118Login:Penguin
NGNG性能が出ないんで一気にreadしてタイムアウトなどの
中断をalarmやiteimerでやる。
signalハンドラは空リターン。
あ、これも例外的な処理かもしれない。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG0121Login:Penguin
NGNGAT&Tの有料ライセンス。
行儀よくはないけど、すらすらすらすら。
なんか奇麗。
0122デフォルトの名無しさん
NGNG有料ライセンスっていくらくらいですか?
0123Login:Penguin
NGNG0124デフォルトの名無しさん
NGNG闇ルートって、どこで手に入るんですか?
0125デフォルトの名無しさん
NGNG闇ルートって、どこで手に入るんですか?
0127デフォルトの名無しさん
NGNGそれ、何に付いてきました?
手元には System III のソースがあるんだけど、これは悪名高い Bourne
氏の書いた C だか Modula だか分からんコード。コードの質自体は悪く
ないが、C のソースとしてはちょっと……という代物。
>>119
BSD のソースは、わりと洗練されてる。
0128デフォルトの名無しさん
NGNG素のプロセスモデルそのままだと、辛いやね。
でもまぁ Java の RMI とか RPC みたいに、ライブラリやら何やらの手厚い
サポートがあれば、それなりにイケルと思うがどうよ?
0129111
NGNGWebでいくつか公開してるから探してごらん。
って、ヒントなしだと無理か〜。
そうだなぁ、時計みたいなライブラリとか〜。
0130デフォルトの名無しさん
NGNG単に、見立てを楽しんでいるだけなのでそのつもりで。
プロセスをオブジェクトに見立てると無理があるかもしれないけど、プロセスをメソッドに見立てるとどう?
Unixというクラスにlsやpwdのメソッドがある感覚。
呼び出しは重いけど、そこは富豪的ということで。
基本的なインターフェースは継承している(SolarisでもLinuxでもlsは使える)。
0131116
NGNG>素のプロセスモデルそのままだと、辛いやね。
>>130
>プロセスをオブジェクトに見立てると無理があるかもしれないけど
辛いとか無理があるとかってどうしてなのー?解説きぼん
継承だってコードをラップして起動すればできると思うがどうか。
実行時性能にかかわることは将来的に無視してよいファクターに
なりつつあるし、むしろコードの生産性からしたらプロセスごとに
実行環境を維持したまま単体テストができてうれしいと思うんだけどな。
ウェブサービスな雰囲気だし。
0132デフォルトの名無しさん
NGNG> 継承だってコードをラップして起動すればできると思うがどうか。
それを毎回一から実装してたら大変でしょ、って話。せめて COM 並のフレー
ムワークがないと、足回りの実装だけで疲れてしまうよ。あとはプロセス境界
を超えて動作するデバッガもね。
> 実行時性能にかかわることは将来的に無視してよいファクターに
> なりつつあるし、
それは、さすがにダウトだな。
今時の CPU は、キャッシュヒット率を高く保つことで高速動作を実現している
わけだが、プロセスを切り替えるとなるとキャッシュを別プロセスとカーネルに
侵食される(アーキテクチャによっては、プロセス切り替え時に TLB をフラッ
シュして命令キャッシュも破棄する必要アリ)ので、覿面に遅くなる。
関数呼び出しに比べたら現状 fork() & exec() は 3 桁は遅いし、RAM の動作
速度向上は CPU に比べると極めて緩やかなため、今後数年間で 3 桁の速度
差を補えるほど急激な改善が見られるとは考えにくいしね。
……とかマジレスするのは野暮ってものか。スレ違いなんで sage。
0133116
NGNGではsage進行で。
>それを毎回一から実装してたら大変でしょ、って話。せめて COM 並のフレー
>ムワークがないと、足回りの実装だけで疲れてしまうよ。あとはプロセス境界
>を超えて動作するデバッガもね。
これは一回作ればいいだけの話でしょう。毎回作る必要はないよね?
現在の環境が整っていないだけの話で、実行時効率・コード生産性
という長期的な観点からは直接関係ないよね。
>今時の CPU は、キャッシュヒット率を高く保つことで高速動作を実現している
>わけだが、プロセスを切り替えるとなるとキャッシュを別プロセスとカーネルに
>侵食される(アーキテクチャによっては、プロセス切り替え時に TLB をフラッ
>シュして命令キャッシュも破棄する必要アリ)ので、覿面に遅くなる。
今時のMPUにはTLBを複数セット持てるイカしたアーキテクチャのものも
あるようだが、それはさておき。
>関数呼び出しに比べたら現状 fork() & exec() は 3 桁は遅いし、RAM の動作
>速度向上は CPU に比べると極めて緩やかなため、今後数年間で 3 桁の速度
>差を補えるほど急激な改善が見られるとは考えにくいしね。
関数呼出→コンテクストスイッチ、コンストラクタ→fork&execという対応から
すると、関数呼出とfork&execを比較するのはちょっと違うような気がするが、
まあそれも置いておくとして、
実際問題としてDBとか科学技術計算とかがコンピューティングパワー・
インテンシヴなことはわかるんだが、アプリケーション比でいったら
圧倒的に多いはずのビジネスアプリケーションの分野でそこまで
コンピューティングリソースを使うものってある?
むしろJavaとかがはやるご時世、生産性に超重いスタンスを置いた
開発手法を考えてみるのも面白いと思うんだがどうか。
0134116
NGNGもちろんDBがビジネス用途でないとは言わない。
DBMSは気合を入れてチューンしてもらって結構。
上で言ってるビジネスアプリってのはそれを呼び出す側の
アプリケーションのことね。
0135130
NGNG>> プロセスをオブジェクトに見立てると無理があるかもしれないけど
> 辛いとか無理があるとかってどうしてなのー?解説きぼん
無理があると、頭から否定した表現はまずかったようですね。
プロセスと言うかコマンド呼び出しをメソッド呼び出しに見立てるのはどう?という提示をしてみただけ。
プロセス起動の重さは、リモートの関数呼び出しと比較すれば問題ないでしょう。
0136111
NGNGlsがメッセージだとして、送り先が常にシェル一つとかいうんだったら全然ありがたくないよ。
0137デフォルトの名無しさん
NGNG> これは一回作ればいいだけの話でしょう。毎回作る必要はないよね?
汎用的なフレームワークを一回作ってしまえば、後は使いまわしできるけど、
その「汎用的なフレームワーク」を作るのが大変なんだよなぁ。とりあえず、
目の前の問題を解決するだけの仕組みなら簡単なんだが。
> 今時のMPUにはTLBを複数セット持てるイカしたアーキテクチャのものも
> あるようだが、それはさておき。
あと、プロセス識別子を TLB のエントリに突っ込んでおけるアーキテクチャ
も多いね。これだとプロセス切り替え時に TLB をフラッシュする必要がない
ので、効率的。
0138毒
NGNG汚いコードからのほうが早いこともある>原因:bug
重箱の隅つつくようなこと言うな。
もしかしたらきれいなコードにしたら同じ筈なのに動かんマシン出てきたりして。
0139デフォルトの名無しさん
NGNGそれはバグって言うんだよ。
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGネタ?
0142デフォルトの名無しさん
NGNGknuthが書いたコードって意味?
それともTeXに読ませるコード?
0143中途半端に速度を気にすると
NGNG0144デフォルトの名無しさん
NGNG>重い→汎用性がない?
確かに変な言い草だたかも。
その重さのペナルティを甘受できる限られた状況でしか
Objectと見なして使いたくはないよなぁという程度。
>プロセスをオブジェクトと見てソケットでメッセージパスするのは
>なんでダメなの?
それで渡されたMessageを、誰がどう処理します?
受けたOjbectもといProcessの、main()(から呼ばれた任意の関数)「が」
ポーリングする羽目になるんと違う?
ポーリング(Callbackモデルに対する一種のエミュレーション)を許すなら
まぁそれでもいいんだけど、ちょっとダサいよね。
それともwaitだかselectだか(詳しいことは知らぬ)で
Messageが来るまでポーリングのLoopを停止することにする?
まぁそれでもいいけど、やっぱりなんかダサイな。
こういう部分をラップするのをフレームワークにやらせる、
ってのはまぁ常套手段だけど、どうせmain()をmain()として使わないなら
最初から OSのモデルがそうなってくれても良いはず。
main()じゃなくてKernelがやってくれても良いはず。
>>130
ProcessがMethodなら、Instanceは何だと思います?
FileSystem全体が「1つの」Objectだ、くらいに考えないと
おかしなことになると思うけど、それって使い難くないっすか?
メンバ変数(藁)の数や量が天文学的に多すぎ。
やっぱりInstanceは適当に小さくないと使い難いっすよ。
ま、ディレクトリ1つを1 Instanceと見なす、っていう系を
想像してみたことなら有る(藁
ポインタはSymLinkね。リモートObjはNFS。
でもあんまり冴えた案じゃないとは思う。Toyプログラムには使えるかもだが。
>>135
>プロセス起動の重さは、リモートの関数呼び出しと比較すれば
そんなに重いのNetって?
一緒にするのは不味いだろけど、mLanなんてものが存在するらしい。
MIDI messageとかのリアルタイム音楽データをNetwork(普通のTCPの世界じゃないけど)で
やりとりしちゃう代物らしい。音楽Studioで機材間を繋ぐのに使うらしい。
つまりミリ秒オーダー。
で、それに匹敵する速さのProcess起動って、
どのOSでも見たこと無い(って俺は厨房だが)んですけど…。
0145デフォルトの名無しさん
NGNGあの文法は糞だけど、数式書くには他に方法ないからなぁ。
0146135
NGNGinstanceはOSそのもの。
POSIXインターフェースを継承した、LinuxやSolarisというクラス。
ファイルがメンバ変数、コマンドがメソッド。
すごいfatクラスなのは、その通り。
インターネットが、巨大オブジェクトのコレクション。
リモート呼び出しもLANなんてケチなことは言わずに、地球の裏側のサーバとかの話。
まあ、見立てを楽しんでいるだけで、バカじゃないと言われれば、その通りと応えるような話です。
ディレクトリをオブジェクトに見立てるのも悪くないね。
使えるとか使えないとかいうレベルに持ち込む部分が貧乏くさいけど。
0147デフォルトの名無しさん
NGNGAmaya + MathML でどうよ?
印刷がしおしおなので、TeX か PDF へのコンバータがあればなあ。
0148116
NGNG>それともwaitだかselectだか(詳しいことは知らぬ)で
>Messageが来るまでポーリングのLoopを停止することにする?
>まぁそれでもいいけど、やっぱりなんかダサイな。
日本の将来を担うかもしれない厨房君に一つアドバイスを。
自分があまり知らない分野について自信満々な態度で語るのは
痛いことになる確率が非常に高いので控えた方がよろしい。
ネットワークプログラミング全般について勉強してから
もう一度いらっしゃい。
0149デフォルトの名無しさん
NGNGへりくだっていても駄目な内容なら駄目(藁
それに控えたら厨房は厨房のままだから
十分に殴ってあげとけ。
それで生き残った奴だけ相手にすればよい。
>ネットワークプログラミング全般
「あんたが言う」それって、OldType技術か?(藁
っていうかあんた(名前を信じるならば)116なのか?
>プロセスをオブジェクトと見てソケットでメッセージパスする
っていう眠い話を書いてた当人なのか?(藁
いや、話自体は眠くはないんだけどね。アメーバとかの話だと思えば。
■ このスレッドは過去ログ倉庫に格納されています