- 1 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 19:45:18 ]
- プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 前スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ 4 pc5.2ch.net/test/read.cgi/tech/1100097050/ 5 pc8.2ch.net/test/read.cgi/tech/1106129164/ 6 pc8.2ch.net/test/read.cgi/tech/1115335709/ 7 pc8.2ch.net/test/read.cgi/tech/1129287390/ 関連リンクは多分 >>2-10 あたり
- 792 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:10:36 ]
- >>783-784
知識の垂れ流し、結構なことです。 が、ここはお前の落書き帳じゃねーんですよ。 各言語の歴史的経緯についてなんかは言語仕様書の冒頭にでも 書いてありそうなことだし、こんな所で長々と解説されても信憑性も 疑わしいわでだんだん話が薄っぺらくなっていくだけですよ。 こちらとしては、そんなものより要点だけ数行でまとめて書いてくれると 読みやすいわ疲れないわでとてもありがたいわけですよ。
- 793 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:12:53 ]
- ウザス
2、3行で要約しろよ
- 794 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:14:04 ]
- >>793
一行で要約できますた。 「ここはお前の落書き帳じゃねーんですよ。 」
- 795 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:25:20 ]
- つまり過剰な冗長さは悪し、という例ですな。
- 796 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:29:39 ]
- 長くなると(読解力が不足がち人には)ウザイってのはそうだろうけど
(なら読み飛ばせば?とも思うのではあるけども 読み飛ばしてもくれずわざわざウザイと書いてしまう 不思議な心理があるようですね。) 信憑性が薄くなるってのはよくわからないな。信憑性は内容の問題でしょ? 読解しきれないと内容が理解できないからそういう読み手にとっては 信憑性が薄く「感じられる」というなら納得。 ちなみに要約、要約と言ってるけど 要約というのも情報処理だから当然情報量が減るわけですが、 そこはわかってますか? 要約された梗概ばっか読んでたら そりゃ目は楽だろうけども身のある話はできませんぜ? 要約なんてのは言わば骨格標本みたいなもので肉はないんだから。 それにこの程度のことで知識の垂れ流しと言われるのも心外。 議論のためのほんのとっかかりのつもりだし、 ちょっと年寄りの言語屋なら別に知るともなしに知ってるような話であって 自慢するほどの知識じゃない。 …と>>792を見た瞬間に思ったけども、>>794にある要約が>>792の真意なら あまり意味はない単なる煽りなわけで無視したほうがいいのかな?
- 797 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:32:08 ]
- >>795みたいな茶々いれの冗長性はどんなもんすかね?
- 798 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:37:55 ]
- >>796
一行で要約できますた。 「無視したほうがいいのかな?」
- 799 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:42:58 ]
- 梗概が読めなかった。「こうがい」って読むのか。
- 800 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 16:53:40 ]
- >>796
>自慢するほどの知識じゃない。 そう。 あなたの知識の垂れ流しは、言わばほとんど無駄な情報=ノイズなわけですよ。 あなたの言う骨と肉で例えると、見るに耐えないブヨブヨです。 すなわち骨が入ってるのかどうかさえ確認するのは困難です。 それをいちいち探りながら読んでいると時間も掛かり頭痛も絶えないわけでして、 長文をお書きならもうちょっと読ます文章を心掛けて書いて頂けませんか? ということですが、お分かりになられませんかね。
- 801 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:00:51 ]
- よし、10行縛りにしようぜ
- 802 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:08:25 ]
- >>797
丸ごと読み飛ばされる冗長性に比べると、一行コメントぐらいの冗長性ですな。
- 803 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:15:34 ]
- 3人の旅人がおりました。
ホテルを見つけて、そのホテルのオーナーに宿泊料金をたずねると、オーナーは「3人部屋で30ドルです」と答えました。 そこで、旅人はひとり10ドルずつ払って、そのホテルに泊まることにしました。 しばらくして、オーナーは3人の旅人の泊まっている部屋の料金は、本当は25ドルだったということに気付きました。 そこで、ボーイを呼んで「あの3人の旅人に、この5ドルを返してきておくれ」と頼みました。 ボーイは、3人に5ドルを返しても割り切れないと思い、自分のポケットに2ドルしまい込み、残りの3ドルを、3人の旅人に1ドルずつ返しました。 3人の旅人は、ボーイから1ドルずつ返してもらったので、9ドルずつ払ったことになり、9ドル×3人で27ドルです。ボーイのポケットの中の2ドルを足すと、29ドル。 さて、残りの1ドルはどこへいったのでしょうか?
- 804 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:33:35 ]
- >9ドルずつ払ったことになり、9ドル×3人で27ドルです。
問題が間違ってますよ。30-5+3で3人で28ドルですが。 端数切捨てですか?
- 805 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:37:43 ]
- いや3人が払ったのは27ドルでしょ。27-2=25ドルがオーナーの受け取った金で。
と、おいらも釣られてみましたよ。
- 806 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:38:31 ]
- >>784
いや、一番最初のLISPの目標は計算モデルを記述すること(チューリングマシンの代替)だろ。 それはまた、自分自身の処理系を簡潔に記述できる構造であることを意味する。 だからメタな機構はLISPの根本だと思うよ。メタサーキュラーな処理系があれば それを種にして何でも出来るんだから。マクロやMOPは使い勝手の上で 追加されたおまけみたいなもん。
- 807 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:40:19 ]
- >>781
このスレ6から読み始めたので、2〜5のdatどれかしら持ってたらうpしてもらえませんか?
- 808 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:43:32 ]
- 論争 Rubyで大規模プロジェクト 採用企業4割拡張ライブラリ使わず
www.toyama.hokkoku.co.jp/_today/T20051210002.htm あるチーフプログラマーは「日本人なら、Ruby。大規模プロジェクトでも拡張ライブラリは必要ない」と言い切り、 今後も拡張ライブラリとの併用はしない考えだ。
- 809 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:46:47 ]
- 掲示板は書き手同士のコラボレーションで成り立ってるから、
そういうTPOとか特性を考えた上て書けってことだろ そろそろこのスレの趣旨の話に戻せよ
- 810 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:53:38 ]
- >>808
この業界では技術に保守的なだけでもクズだというのに、 ついにナショナリストまで登場しているのか(笑)
- 811 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 17:59:31 ]
- >>808
ネタのつもりなんだろうけど、そういうまるっきりウソ流し続けてると コミュニティ過激派から訴えられるかも知れんぞ
- 812 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 18:01:50 ]
- おれは2が欲しい
- 813 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 18:14:18 ]
- おれはお前が欲しい
- 814 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 19:13:58 ]
- >>803
真相をお話します。 オーナーはご想像の通り、物忘れが酷い人物ですが慈悲深く、 ボーイもまた欲深いという欠点を持つ人物ですが、それでも ボーイはオーナーの人格を信頼して付き従っておりました。 さて、実はこのホテルのシステムは後払い方式なのですが、 オーナーの物言いにボーイは素直に頷き、オーナーから 預かった5ドルを欲深さからそのまま着服しました。 翌日オーナーは例外なくそのことを忘れており、 チェックアウトした旅人へ謝罪し25ドルを受け取りました。 結局その時ホテルで5ドルの損失が発生したのですが、 オーナーはそれに気づかず運営を続け、やがて倒産してしまいました。 しかしその後ボーイは着服で貯めた金で大成し、 路頭に迷った元オーナーを雇ってあげたという話です。 経営者としてはボーイの方が格上だった、が正解です。
- 815 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 19:42:02 ]
- ヒソ(´д)(д`)ヒソ
- 816 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 22:26:28 ]
- 3人の言語オタがおりました。
このスレを見つけて、そこの住人に最高と思う言語をたずねると、 「RubyとLisp以外です」と答えました。
- 817 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 22:28:14 ]
- eagerな言語は使う気がしない
- 818 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 22:42:51 ]
- クロージャまわりのメモリ管理ってどうやってます?
・基本はスタック上で、捕捉されたらヒープにコピー ・コンパイル時にスタックに置くかヒープに置くか決めて、コピーしなくて良いように ・めんどいので全部ヒープに取ってGCまかせ ・その他 と、ネタ投下してみる。
- 819 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 23:13:26 ]
- >>807
makimo.to/cgi-bin/search/search.cgi?q=%83R%83%93%83p%83C%83%89%81%40%83X%83N%83%8A%83v%83g&andor=AND&sf=0&H=&view=table&D=tech&shw=2000
- 820 名前:デフォルトの名無しさん mailto:sage [2005/12/14(水) 23:57:16 ]
- >>818
全部ヒープでやってる。速度は今のところ考えてない。 いずれはスタック使いたいんだけどね。 とりあえず論文読み中。 www.cs.indiana.edu/~dyb/pubs/3imp.pdf
- 821 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 01:12:12 ]
- >>818
>・基本はスタック上で、捕捉されたらヒープにコピー 捕捉されたらとは?生成のこと? >・コンパイル時にスタックに置くかヒープに置くか決めて、コピーしなくて良いように クロージャの生成構文を別々に設けるということ? これらの意味は? おれの見解ではクロージャを使うだけであればスタック、 クロージャを生成する際、親フレーム以下があれば ヒープに落としてフレーム参照を繋ぎかえる、 この時既にヒープに落ちていれば何もしない、 という戦略がスマートというか、一般的じゃないかと。 使用回数>生成回数という場合ね。 CPSやジェネレータみたいな使い方しかしない場合は コピーが連続して不利になるけど、こんなことは やろうと思わなければめったにない。
- 822 名前:807 mailto:sage [2005/12/15(木) 01:28:06 ]
- >>819
どもありがと。さいこー
- 823 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 02:53:00 ]
- >>818ではないですが面白そうな話題ですね。
>クロージャの生成構文を別々に設けるということ? エスケープ解析とか? >おれの見解では(略 すまん、理解不能。 といってもクロージャ変換で実装したことしかない俺の知識が足りないだけ。 興味あるので「一般的」の参照をくれるとうれしい。
- 824 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 04:31:04 ]
- >>803
○○○○○.○○○○○/○○○○○.○○○○○/○○○○○.○○○○○ 最初に支払ったお金30ドル ↓ ●●●◎◎.○○○○○/○○○○○.○○○○○/○○○○○.○○○○○ 3ドル返す 2ドルくすねる └┼┘└┤└───────────┬─────────────┘ │ │ └ 主人の手元に25ドル │ └ ボーイの手元に2ドル │ └ お客の手元に3ドル 支払ったお金は27ドル 9×3=27 9ドルずつを3人で払った 30−3=27 30ドル払って3ドル返してもらった 25+2=27 主人に25ドル、ボーイに2ドル払った ボーイがくすねたお金2ドルは、客が支払ったお金(25+2)の一部 だから支払った27ドルにさらに2ドルを足すことが間違い(25+2+2・・・×) 最初の金額30ドルを求めるには、実際に支払ったお金27ドルに 戻ったお金3ドルを足さなければならない
- 825 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 04:51:17 ]
- エスケープ解析というのを知らなかったのでぐぐってみたのですが、
関数等のスコープの中で定義した変数やクロージャの 利用がスコープの中だけで完結し、外には持ち出されないことを 調べるということでしょうか。
- 826 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 13:44:56 ]
- そうです。
- 827 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 17:01:53 ]
- >>783-784
おもしろい。長くてもいいからやってくれ。 くだらん短い書き込みより、長くてもおもしろいほうがいいや。 長いのがいやなら読まなきゃいいだけ。 >JavaはCが存在していて必要ならば使うことができることが前提だから >比較的汎用指向の言語でありながら >Cで書くことが適切であるようなハードウェアレベルの記述機能を >潔くスッパリ切り捨てた設計ができている。 ここらへんはたぶん違ってて、Javaに低レベルの記述がないのは単にJavaがバイトコードインタプリタを採用したからであって、Cがあるから云々は関係ないと思う。 ポインタをなくしたのもGCを導入しやすくするためで、やっぱりCとは関係ない。
- 828 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 18:15:07 ]
- >>827
そのへんは、鶏が先か卵が先かみたいなもんじゃね? >>780 >人の認知科学的な処理特性を無視することはできない。 認知科学的には、冗長だとミスが増える法則もあるので トレードオフだよね。 >ユーザが把握しやすい動作モデルを提供する 同じ物でも「把握しやすさ」はユーザによって ばらつきが大きいんだよね。 ここを意識しないと宗教戦争になる。
- 829 名前:デフォルトの名無しさん [2005/12/15(木) 21:03:36 ]
- >>827
ポインタはあるよ。 論文ばかり読んでる○○研究者か?
- 830 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 21:05:42 ]
- >818
継続も使いたいから >めんどいので全部ヒープに取ってGCまかせ かね……
- 831 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 21:35:49 ]
- >>823
>興味あるので「一般的」の参照をくれるとうれしい。 図にすると下みたいなイメージだけど、その辺は「クロージャ」が 出てくる速い処理系のソースかドキュメントでも読んでよ。 今の所これ以外に速い実装は思いつかないが。 ※ |****| はフレームの変数とかの中身 ※ (矢印)はフレームポインタ スタック |******親1******|(←)|******親2******|(←)| ★クロージャ生成直前 ヒープ ヒープはまだ空の状態 ↓ ヒープに落としてフレーム参照を繋ぎかえる スタック | 親1 |(↓)| 親2 |(↓)| ★クロージャ生成完了 ヒープ |******親1******|(←)|******親2******|(←)| エスケープ解析までするなら特定の親のみしかヒープのコピーは発生しない。 例えば親1のフレームしか参照しないのであれば親2のフレームは そのままスタックに残しても良い。 スタック | 親1 |(↓)|*******親2*****|(←)| ★クロージャ生成完了 ヒープ |******親1******|(←)| ←─── 生成されたクロージャは直接親1を参照
- 832 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 22:12:03 ]
- >>829
参照のことをポインタだって言い張ってる人はいますね。
- 833 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 22:43:17 ]
- Javaでポインタがあるっていう人間は低脳。バイトコードの仕様書読み直してから来い
- 834 名前:818 mailto:sage [2005/12/16(金) 01:44:55 ]
- >>821
>>・基本はスタック上で、捕捉されたらヒープにコピー >捕捉されたらとは?生成のこと? 「生成されたクロージャが、 子孫のスタックフレームでないフレームに捕まえられたら。」かな。 例えばforeach的な関数にクロージャを渡してそのまま捨てるような状況なら コピーは要らないわけです。 これをやると破壊的な処理がやたらと高くついたり、 いざコピーとなったときにやたらと高くついたり、 その他色々と面倒なことになったりしそうですが。 >>・コンパイル時にスタックに置くかヒープに置くか決めて、コピーしなくて良いように >クロージャの生成構文を別々に設けるということ? コンパイル時に絶対にコピーが要らないとわかったときのみ、 フレームはスタック上に置いて、 それ以外は最初から親フレームはヒープに置いておこうと。 「関数aはクロージャを引数に取るが、それはどこにも保存されない」 ということになればa以外を呼ばない関数のフレームはスタック上に置いて良いでしょう。 が、やっぱり色々あって面倒なことになったりしそうです。 どっちもクロージャより親フレームが長生きなら問題ないよねという方針。
- 835 名前:デフォルトの名無しさん [2005/12/16(金) 18:53:57 ]
- Javaでポインタが無いと信じているアフォども、
せいぜい、振り込め詐欺やワンクリ詐欺に用心しておくこったなw 言われてることを、そのまま単純に信じているようでは、 おまえらいい鴨だよ。
- 836 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 19:38:44 ]
- 個人的な主観かもしれないけど、
ポインタ演算が無いものは参照と呼ばないか?
- 837 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 20:21:09 ]
- 例えば、Cのポインタをタンイポと呼ぶように2006年から改正したら、
2006年からポインタが無いことになるぞ。 ポインタだのタンイポだのと言われてることが全て。
- 838 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 20:41:20 ]
- ポインタをタンイポと呼ぶためには法改正が必要なわけだが、2006年からというのは早急すぎるな。
まずは有識者を集めた小委員会の設置を図った上で、再来年以降の国会提出でも十分だと思う。
- 839 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 20:44:35 ]
- 配列のイテレーターと参照と参照ポインタとメモリアドレスのポインタとを
一括してポインタと呼ぶべきでない。
- 840 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:04:11 ]
- >>835
Javaでポインタが有ると信じているアフォども、 せいぜい、振り込め詐欺やワンクリ詐欺に用心しておくこったなw 言われてることを、そのまま単純に信じているようでは、 おまえらいい鴨だよ。
- 841 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:05:31 ]
- え、ポインタと参照の違いは常識だと思ってたのですが。
またトンデモ本の誕生ですか。
- 842 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:06:01 ]
- >>840
ほんたまですか?
- 843 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:06:22 ]
- 塗るタンイポえくせぷしょん
- 844 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:06:32 ]
- 懐かしい名前を出さないでください。せっかく忘れていたのに。
- 845 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:07:45 ]
- Pascalのポインタは演算できないけどポインタと呼ぶな
だから正解は>>837
- 846 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:10:09 ]
- でも一般的に見たら、参照とポインタの一般像みたいなもんはあるだろ。
Pascalは例外じゃないか?
- 847 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:12:33 ]
- PascalはInc, Decができるじゃん。
- 848 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:12:34 ]
- たしかにポインタの演算はできないけど数値にキャストできるから同じ事では。
- 849 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:21:12 ]
- みんなそんなにボロカスに言うなよ。
Mさんが可哀想じゃないかw
- 850 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 21:22:33 ]
- まあ少なくともJavaの参照はポインタではないことは確かだ。
名前が参照だから。
- 851 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:35:58 ]
- そんなの実際どうとかじゃなくて、
設計者がどう定義したかと、その思想によるだろう。 だから>>850が正しい。
- 852 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:41:17 ]
- 名前はともかくとしても、実際の内容を素直に受け止めれば
いいと思うけど。なので >>835 が正解。
- 853 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:42:47 ]
- >>835とか>>852は、ポインタと読んでCのポインタを連想した上で書いてるわけっしょ?
だったらやはりCの言葉の定義に(ry
- 854 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:44:40 ]
- 実際の所、Rubyにはポインタは存在するがLispには存在しない。
- 855 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:46:11 ]
- >>853 ポインタという言葉の定義or使用はCが最初ですか?
- 856 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:48:01 ]
- RubyもLispもPascalも、同じ太陽を感じ、同じ月を見て. 同じ空気を吸っているのだから
ポインタの有無くらいで区別するのはよくないと思います。
- 857 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:50:26 ]
- しかし、ポインタの有無は実用性を大きく左右するんだよ。
- 858 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:51:20 ]
- うむ。
- 859 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:52:51 ]
- 結局は宗教論争。
和平への道はアセンブラ原理主義しかない。
- 860 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:53:34 ]
- >>855
ALGOL60にPOINTERという型は既に存在したらしいぞ ttp://www.99-bottles-of-beer.net/language-algol-60-24.html
- 861 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:55:01 ]
- Java ポインタ の検索結果 約 197,000 件中 1 - 10 件目 (0.03 秒)
www.google.co.jp/search?hl=ja&q=Java+%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF&lr= Java 参照 の検索結果 約 2,830,000 件中 1 - 10 件目 (0.24 秒) www.google.co.jp/search?hl=ja&q=Java+%E5%8F%82%E7%85%A7&lr= この様にJavaポインタ派は、Java参照派と比較するとごく少数です。 どうやら集団で勘違いされているみたいです。 >>856 Rubyにはポインタはありません。 ポインタに相当する機能は持ってますが、 それはポインタではありません。
- 862 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 22:58:05 ]
- 実にくだらない話題に収束したな。
- 863 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 23:29:43 ]
- ポインタ演算とか、インクリメントとかデクリメントとか、数値へのキャストとかそういうのを
わざと制限したものは普通、ポインタじゃなくて参照って言わない?
- 864 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 23:33:18 ]
- >>857
同意。ポインタのある言語は領域破壊のバグが頻繁に紛れ込むが、 Javaのようにポインタのない言語はそうしたバグは非常に少なくなる。
- 865 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 23:33:48 ]
- いわないね。
Delphiだと明確に区別されてるし。
- 866 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 23:34:56 ]
- >>865
Delphiは言うじゃん。参照って。
- 867 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 23:37:26 ]
- つまり、865は「ポインタとは言わない」と言いたいちゃうんかと。
- 868 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 23:40:25 ]
- あぁ、863へのレスのつもりなのね。
- 869 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 23:52:19 ]
- >>857
つまりLispは実用的でない証明ってこと言いたいわけ?w
- 870 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:05:20 ]
- lispにポインタはありません。ポインタの無い言語は実用性で勝ります。864を参照。
- 871 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:10:12 ]
- Cにはポインタがあります。ポインタのある言語は自由度と汎用性で勝ります。864参照。
- 872 名前:デフォルトの名無しさん [2005/12/17(土) 00:10:39 ]
- Lispにポインタはあるが、そういえば、Lispのポインタって完全にJava、Rubyなどで言う参照だよな。
結局その言語でそれをなんと呼ぶかってことだな。
- 873 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:11:26 ]
- >>871
確かにバグを出す自由度で勝りますねw
- 874 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:19:31 ]
- ようやくLispが出てきたか
やっぱこのスレの主役はLispだよな!
- 875 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:20:01 ]
- Lispこそがすべての源流であるということは認めざるを得ない。
- 876 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:23:32 ]
- そもそも「Javaでポインタ」って話は、C++使いにJavaの参照を教えるときに「C++の参照と違ってポインタみたいなもんですよ」って説明するだけの話じゃなかったっけ?
それ以外の時に普通Javaの参照はポインタとは言わない罠。 まあ「何かを指し示す」って意味に限定すればJavaの参照とCのポインタは一緒だから「存在しない」とまでは言う気ないけど。 ポインタ演算ができるかどうかなんてポインタの本質じゃないでしょ。
- 877 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:25:38 ]
- >>876
一般に参照とポインタの区別を云々する場合、ポインタ演算の有無こそが本質のうちの1つです。
- 878 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:26:56 ]
- >>877
そうなの?ポインタキボンヌ。
- 879 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:27:45 ]
- ポインタ演算があるのと無いのとではバグの量と種類に大きな違いが出るのだよ。
- 880 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:29:26 ]
- Cのポインタは、演算によって「値をずらす」ことができるだろ。
int a; int *p = a; p += 1; //←これ 参照はそれができない。
- 881 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:30:15 ]
- それはポインタ演算の有無の話であってポインタの有無の話ではないですね
- 882 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:31:08 ]
- 間違った。
int a; int *p = &a; //アドレスを代入 p += 1; //←これ *p = 1; // 任意のアドレスのデータを破壊 参照はこれができない。
- 883 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:32:00 ]
- ポインタの有無の話ですよ。今や、それが出来ないものをポインタではなく参照とよぶことが多いんですから。
- 884 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:32:51 ]
- ポインタは任意のハードウェア例外を引き起こす。
*(int *)(0) = 0; // 不正なアドレスへの書込み 参照ではこれはできない。
- 885 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:33:23 ]
- これぐらいか?
●同じ点 Javaの参照もCのポインタも、どちらも間接参照を表すためのものである。 ●異なる点 Javaの参照はヒープ上にあるオブジェクトしか指す事ができない。 Cのポインタはどこにあるオブジェクトも参照できる。 Javaで参照されているオブジェクトは決して消滅しない。 Cで指されているオブジェクトはいつの間にか消滅している可能性がある。 (そして、消滅したオブジェクトへの参照をたどった場合の動作は未定義である) Javaの参照にはCのポインタ演算のような機能はない。 Cのポインタ演算は、配列の要素を指すポインタのみに使う事ができる。 それ以外の場合の動作は未定義である。 Javaの参照の動作はかなり厳密に定義されている。 Cのポインタに対する操作には「未定義である」という部分が多い。 それを利用して環境依存の色々な技が使えたりする。
- 886 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:34:20 ]
- Cのポインタが安全性を保証してないだけの話じゃん
- 887 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:35:50 ]
- クロージャの話しようぜ
- 888 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:37:11 ]
- >>887
まずクロージャを定義してださい。
- 889 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:38:20 ]
- ポインタは本来、「何かを指し示すもの」という意味でした。
この言葉は、アドレスやそれを格納した変数などにたいして用いられてきました。 しかし、時代が移り変わるにつれ、ポインタ演算によって、頻繁に深刻なバグが 発生することがわかってきました。ポインタ演算の有無が非常に重要だという ことがわかってきたのです。 かくして、本来は本質でなかったポインタ演算の有無が、時代とともに重要視 され、ポインタの本来の意味が変わってきたわけです。
- 890 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:38:34 ]
- ださいとかいうなや
- 891 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 00:42:25 ]
- ポインタ演算を適用できる変数やアドレスの数値と、参照との区別を明確にするため、
前者のことを特にポインタと呼ぶようになったのです。 特に言語として、Cがダントツで有名になったこともこの背景にあります。
- 892 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 01:05:55 ]
- ・ポインタ演算を元に考えればJavaやその他の言語にポインタはない。
・そうでなければいわゆる参照(C++の参照を除く)はポインタみたいなもん。 ってことでFA?
|

|