Pythonのお勉強 Part75 (961レス)
1-

632: (ワッチョイ 4954-Dra7) 08/09(土)08:44 ID:DWV4fYZO0(2/4) AAS
copyやmoveはそんな文型取らないけどな

コマンドとしてのcopyやmoveはindirect objectを取って、
それはdirect objectに先行するという類推が働くのだろう

ファイルコピーのcopyは送り側が先
ファイル名やディレクトリを並べただけだと、directやindirectの区別が無い
イミディエイトとレジスタとかだと、レジスタがindirectな雰囲気がある
633: (ワッチョイ 0ff9-kSZg) 08/09(土)09:47 ID:FKLQD73X0(1/2) AAS
代入は「は」
比較は「が」
にしよう
日本語って便利

aが0ならaはb
634: (ワッチョイ 7f2a-Jj3s) 08/09(土)10:30 ID:fxyo4EMd0(1) AAS
「犬が西向きゃ尾は東」みたいな。
635: (オイコラミネオ MMfd-i7aF) 08/09(土)11:26 ID:BSmQSZbLM(1/3) AAS
>>629
BASIC言語やFORTRANでも、
x=5
のように書いていた。
元はと言えば、数学の「定義 x≡5」の記法から来たものだと考えられる。
その流れを素直に踏襲すれば、
mov x,5
となる。
636: (オイコラミネオ MMfd-i7aF) 08/09(土)11:28 ID:BSmQSZbLM(2/3) AAS
定義だけでなく、数学でも「代入」の概念でも同じ記号を使う。
y=a*x^2+b*x+c
に対して、
x=5
を代入するとyの値はどうなるか。
みたいな時の x=5 が、BASICやFORTRANの記法に似ている。
637
(1): (ワッチョイ 4954-Dra7) 08/09(土)11:42 ID:DWV4fYZO0(3/4) AAS
数学からの借用だと思うと
x = x + 1
が説明できないので捨てた方がいい
638
(1): (ワッチョイ bbcc-BoCf) 08/09(土)12:02 ID:x+xCY04P0(1) AAS
数学の記法云々とか言い出したら、記号の内容がきちんと定義されている限りどんな記号を使っても自由という話にしかならんでしょ。=: とか <=>: とかで右辺に定義される対象を持ってくる記法だって普通にあるんだし。引数の順番とか中置二項演算子の被演算子の順番とかは、本質的に恣意的なものだよ。好みの問題とか、多数派に従っておく方が無難じゃないかとか、その程度の話。
639: (オイコラミネオ MMfd-i7aF) 08/09(土)12:49 ID:BSmQSZbLM(3/3) AAS
>>638
数学にも、標準記法みたいなものが有る。
高校数学までにそれを教わる。
それによせているのが右翼だ。それに逆らうのが左翼。
640: (ワッチョイ 0fc3-kSZg) 08/09(土)13:24 ID:FKLQD73X0(2/2) AAS
>>637
プログラムってのは数式を解けって意味は無いから
X=X+1 はおかしいっていうほうがおかしい
641
(2): (ワッチョイ 4954-Dra7) 08/09(土)13:52 ID:DWV4fYZO0(4/4) AAS
x = x + 1に登場する=は、
数学で言う等号ではないし、定義でもないし、代入でもない
let x as x + 1
くらいの意味だけど、もっと即物的に値の入る箱をイメージして
x ← x + 1
xの中身を+1してxに入れる
としか言いようがない

写像なら何か近いのがありそうだけど、やっぱりずれてる
642: (ブーイモ MMf3-VwDZ) 08/09(土)16:31 ID:S08gCjhtM(1/2) AAS
>>641
超初心者だなw
643: (ブーイモ MMf3-VwDZ) 08/09(土)16:32 ID:S08gCjhtM(2/2) AAS
>>641
いまだに数学だと教える先生がいるんだろ?
644: (ワッチョイ 765f-cTHU) 08/10(日)07:20 ID:bJx41RG60(1) AAS
右辺値と左辺値
645: (ワッチョイ 4e10-1ngM) 08/10(日)08:12 ID:5Q2KXoFZ0(1) AAS
アドレスとオブジェクトの違い程度ならいいんだけど、C++でムーブがらみでxvalueとか出てくるとピンと来ないんだよね。
646
(2): (ワッチョイ 0754-mJPu) 08/10(日)08:30 ID:rGiN2SBN0(1/10) AAS
右辺値と左辺値と言うと余計に判らなくなる

箱 = 値

というシンプルな理解だけで何も困らない
箱には名前があってアドレスを持っていて参照できる
値は箱に入れ終わったら忘れる
647: (ワッチョイ 232c-1ngM) 08/10(日)09:41 ID:wxvmtlzV0(1/2) AAS
コンピューターのアーキテクチャの理解としてはそういう理解の仕方が本質的だと思うけど、Pythonのように、名前(変数)が束縛されているメモリ領域に格納されているのがポインタであって、そのポイント先のオブジェクトが(明示的な参照外しの構文によることなく)名前参照式の評価結果になるような言語では、表れ方がちょっと屈折してくるよね。
「Pytnonでは、変数は、箱のイメージではなくラベル(名札)のイメージで説明する方が適切」というのはしばしば言われる謂ではあるけれども、自分が初心者の人にPytnonを説明するときにそのスタンスでいくかと言われると、ちょっと躊躇するものを感じるかな。
648
(1): (ワッチョイ 7601-AJBo) 08/10(日)09:54 ID:Rqt3voUn0(1/4) AAS
>>646
x = “foo”
y = x

箱 = 値
箱 = 箱
なのか?
箱 = 箱とは?
みたいな説明が必要になってくる

要は単純な箱と値だけでは説明がつかなくてそれらがどういうコンテキストで使われるかだったり箱から値を取り出して値として使う場合や箱自体を値として使う場合の説明も必要になってくるのでそうシンプルにはならない
649
(1): (ワッチョイ 0754-mJPu) 08/10(日)09:55 ID:rGiN2SBN0(2/10) AAS
イコール記号の意味の説明だよ
箱 = 値
と書くと箱に値を入れるという意味になる

箱や値の具体的な内容は違う章
650: (ワッチョイ 0e46-Fa+d) 08/10(日)10:18 ID:mfIur7J+0(1) AAS
ポインタ アドレス渡しってのを明記しない限り
すべて値渡しでいいでしょ

それをいつまでたっても値なのかアドレスなのか毎回混同するやつって
トイレの男女マークはそれでいいのか?っつってるのと被って見える
実にうっとおしい
651: (ワッチョイ 2357-XAuV) 08/10(日)10:24 ID:w6PHgqLv0(1) AAS
箱は大昔のBASICのような基本コピーな言語でしか通用せんよね
dictの中身がなぜ書き換わるのかイメージするには実体を意識したいし矢印かな
652
(3): (ワッチョイ f66d-1ngM) 08/10(日)10:26 ID:wmWYPlFf0(1/9) AAS
648の例で言うと、x = "foo"は(C言語レベルでは)名前(変数)xが束縛されているメモリ領域(646風にいえばxという箱)にオブジェクト"foo"のアドレス情報を入れるという形で処理されるし、y = x は(C言語レベルでは)名前(変数)yが束縛されているメモリ領域(646風にいえばyという箱)にオブジェクト"foo"のアドレス情報を入れるという形で処理されることになる。したがって、(C言語レベルでは)646の箱=値という説明で一応一貫した説明ができる。ただし、そこでいう「値(オブジェクト)」はPythonレベルの値(オブジェクト)ではないので、その点に説明・注釈が必要になる。
ラベル(名札)のイメージによる説明というのは、名前x, y が束縛されているメモリ領域を特には観念せず、x, y をオブジェクト"foo"に貼り付けられるラベルとして捉えるということで、Pytnonレベルのみで考えるならこれはこれで1つの説明にはなっていると思う。ただ、listとかのコレクション・コンテナを理解するためには、結局どこかの段階でC言語のポインタの概念を大雑破にでもマスターせざるを得ないと思うんだよね。最初だけポインタの概念を回避してもあまり意味がないように思うので、それが、ラベル(名札)イメージによる説明にあまり乗りたくない個人的な理由。
ちなみに、648の逆パターンの例(x = 2 x = 5 のような再代入のパターン)も同様に考えることができる。
653: (ワッチョイ 5a4e-a/Iv) 08/10(日)10:32 ID:RtPBWHAF0(1) AAS
Pythonは全て参照の値渡し
654: (ワッチョイ 0754-mJPu) 08/10(日)10:51 ID:rGiN2SBN0(3/10) AAS
難しいこと考えなくても、オブジェクト渡しという理解でいい

同じオブジェクトは渡された先でも同じものを指す
内部実装的には同じアドレスを見てるからだけど、
別に別アドレスだったとしても同じ挙動をすればアドレスはどうでもいい
数値とか、対応するアドレスが存在しないものもある
655
(2): (ワッチョイ 7601-AJBo) 08/10(日)10:55 ID:Rqt3voUn0(2/4) AAS
>>649
イコール記号の意味だけなら「代入」で十分じゃないの?
代入という概念を知らない人向けの説明なら余計に「箱」が後でどう使われるのかも一緒に説明する必要がある

>>652
y = xではxという箱の中に入ってる値を一端取り出してからそれを複製してyという箱に入れないとダメだよね?
箱から取り出したり複製したりする状況(コンテキスト)も説明できなければ内部知識を知ってる人にだけなんとなく通じる説明方法でしかないと思う
656
(1): (ワッチョイ f66d-1ngM) 08/10(日)11:16 ID:wmWYPlFf0(2/9) AAS
>>655
y = x という代入構文において、①右辺のx という名前参照式の評価(名前xが束縛されているメモリ領域に格納されているポインタのポイント先のオブジェクトを得ること)、②それを名前yに代入すること(C言語レベルでは652に書いたとおり、名前yが束縛されるメモリ領域に上記①で得られたオブジェクトのアドレス情報を格納するという形で処理される)という処理が行われるわけだけど、このプロセスに状況(コンテキスト)による違いなんてあるかな? 状況(コンテキスト)如何に拘らず、上記①②の処理がなされると思っていたんだけど。

まぁ、内部実装についてある程度知識がないと分かりづらいというのはそうだと思う。自分も非常に大雑把な知識しかないしね。
657
(1): (ベーイモ MM06-ZDX3) 08/10(日)12:21 ID:rZf5P+kFM(1) AAS
Pythonの場合は、numpyの配列のようにPythonオブジェクトの実体すらもPythonの世界の外に存在する物に対する荷札的な役割を果たしているケースがとても多く、
しかも初心者は学習を始めてすぐにそういうイレギュラーなものに触れることになる
なので内部実装を元に説明するのは辛すぎるんだろう
荷札のアナロジーは致命的な矛盾なくだいたいうまく説明できるし実際の動作とそんなにかけ離れてもいない、悪くない説明だと思うよ
658
(1): (ワッチョイ 7a0a-WVpU) 08/10(日)12:27 ID:swuUdv2c0(1/11) AAS
>>655
代入という言葉は、数学の変数に値を入れるという意味に引きずられるのでよくないんだよ
659
(1): (ワッチョイ 0754-mJPu) 08/10(日)12:35 ID:rGiN2SBN0(4/10) AAS
荷札って箱に付けるものでしょ
そうじゃなくて、実体とは別に存在するコピー可能な何かでないと
そんな都合の良いものは自然界に存在しないので、いいアナロジーも見つからない
660: (アウアウウー Sac7-Kgix) 08/10(日)12:43 ID:YgXeJoCWa(1) AAS
数学からの借用だと思うと
x = x + 1

x[n] = x[n-1] + 1
を意味する
661
(1): (ワッチョイ 7601-AJBo) 08/10(日)12:49 ID:Rqt3voUn0(3/4) AAS
>>656
(Pythonの)(y = x という)(代入構文における)(右辺の)x
のxを修飾する部分がコンテキスト

それにその説明だと>>646の言うシンプルな理解からは程遠い気がする
1-
あと 300 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.014s