初心者すぎて自力でググってもうまくいかなかったところを、TLの皆さんに助けていただきました。似たようなことで悩むかもしれない人にとーどけ。
0
tricken(手術後復帰チャレンジ中) @tricken

ははあ、なるほど、それでOくんは「PEP343を読めばよかろうもん」と言ったのか。withが出てきた背景を理解するならwith宣言に関する会議と勧告を読め、てことだからか。四半日遅れで理解。> PEP 343 -- The "with" Statement | Python.org python.org/dev/peps/pep-0…

2020-11-19 05:19:31
リンク Python.org PEP 343 -- The "with" Statement The official home of the Python Programming Language 10 users 4
はやし @t_hayashi

@tricken そういうことになるかと思います。ちょっと for 文における in と類比的ですね。(with identified as identifier ≈ for identifier in identified みたいな意味で)

2020-11-19 05:22:00
tricken(手術後復帰チャレンジ中) @tricken

なるほどね、プログラミング言語は「コンピュータに命令をするための言語体系」だから、基本構文がSVではなくてVが最小構成単位だ。そこでVOO構文に対してwith VOOを提唱したところで「with V O as O でないと文法的におかしくね?」と審議になり、その果てにwith open (...) as f が定着した……。

2020-11-19 05:27:09
tricken(手術後復帰チャレンジ中) @tricken

なるほど大きく理解が深まりました。Pythonにおける前置詞の振る舞いに日々めんくらってますが、VO, VO, VO... という命令文の連続に複雑な作業をさせようとする時に、前置詞に色々背負わせてる言語体系なんですねPythonは……。 twitter.com/t_hayashi/stat…

2020-11-19 05:29:07
はやし @t_hayashi

おおう、with のあとの ":" がおちてる……。こういうところに「しみついてなさ」があらわれてるな。 twitter.com/t_hayashi/stat…

2020-11-19 05:33:15
はやし @t_hayashi

@tricken open 単独だとたいてい id = open(file name, opt) (...) id.close という書き方になると思うのですが with を使うと with open(file_name, opt) as id (...) と変数割当てとファイルクローズがパッキングされた処理になります。つまり、こういうふうに書くと必要な処理をとばさなくなる。

2020-11-19 05:03:31
tricken(手術後復帰チャレンジ中) @tricken

確かに最後の方、with構文を使う際に"as f"が登場してる(なぜasでありなぜfなのかは見た感じ明言はないぽいが……)。でも少なくとも with f = hogehoge みたいな語順では処理対象をwithつきでターゲットできないよ、それはなんかこれまでの文脈から見るとおかしいよ、という議論があったことはわかる

2020-11-19 05:41:45
tricken(手術後復帰チャレンジ中) @tricken

この target = V(O) 式の文章にwithがついた時に * with target = V(O) (*は言語学の慣用で「統語的に成り立たない」という意味) がおかしいという話があるの、優れて英語学的だな……Pythonの話なのに……命令文に特化した英語文法学じゃん。

2020-11-19 05:46:27
tricken(手術後復帰チャレンジ中) @tricken

with V(use O) as (target O) みたいなメタ文法用語で構文を掴むとだいぶ面白いな。プログラミングの教本や資料は、関数などについての語法は豊かだけど、SVOCとか前置詞と動詞の並び順とか、メタ視点からみたその言語の構文的なクセとか、少なくとも初学の教科書はあまり話してくれないな。

2020-11-19 05:49:46
tricken(手術後復帰チャレンジ中) @tricken

「VOによってOする」みたいな言葉遣いでもあるわけで、日本語の「和を以て貴しとなす」はwith ... as f 構文だな。十七条憲法はプログラミングだった。日本語の述語中心主義(主語が脱落しても日本語はいけるっていうやつ)、プログラミング言語のお隣にある発想だな。

2020-11-19 05:53:39
tricken(手術後復帰チャレンジ中) @tricken

もちろんVはじまりが「〜しろや」的なキツめの指令があり、日本語の述語は述語だけではその含みはないけれども。「エモい〜」は「エモくなれや」とは読めない。

2020-11-19 05:54:38
おーえす @os_hiroaki

@tricken fileですねー。べつに何書いたっていいです。複数開いていて紛らわしければopen() as file_1とかでもいいし、そのファイルが帳簿ならas tyouboとか書いてもいいし。別にf一文字の意味合いに拘る意味はそれほどないです。プログラムは読まれるより動かす方が多いし、必要なら説明するか直せばいいので。

2020-11-19 08:16:30
おーえす @os_hiroaki

@tricken ここの直接的な変数の説明では無いですが、PEP8の例でも別にそこに拘りは無いです。 python.org/dev/peps/pep-0…

2020-11-19 08:19:00
tricken(手術後復帰チャレンジ中) @tricken

@os_hiroaki 色々ありがとー。未明くらいにやっとopen/close における【任意のオブジェクトid】の位置が、with 構文を採用することで(英語のSVOOとSVO for Oの関係のように)倒置するんだ、と理解できたよ。以下その時のついーと twitter.com/tricken/status…

2020-11-19 08:22:04
tricken(手術後復帰チャレンジ中) @tricken

@os_hiroaki UNIXコマンドにおける $ ls -l みたいなオプションの一字のような重みがあるのかなと誤解してたけど、べつにそんなことはなかったんだねという話でもあった。(fならfileとして、dならディレクトリとして処理します、みたいな……)

2020-11-19 08:23:58
おーえす @os_hiroaki

@tricken よかったです。公式文書のくせに言語仕様やマニュアルじゃないから変な感じしますけど、理由が説明されてるのが気に入ってます。

2020-11-19 08:25:07
tricken(手術後復帰チャレンジ中) @tricken

プログラミング、主語がない英語(或いは、主語=機械であるオヌシ YOU であることが自明である故に主語を省ける)ということの連なりで成り立ってる、という理解を、with open () as f について昨晩考えていた際に得た。従来文法で言うと命令文の連なりだけど、人に話す命令文よりは温度が低い。

2020-11-19 08:29:00
tricken(手術後復帰チャレンジ中) @tricken

VOくらいの連なりならそこまで英語文法との関連は意識しなかったんだけど、前置詞+VO_1+前置詞+O_2 みたいな、主語がないだけでわりと複雑なSVOO構文の一種じゃんこれと思えてからPython文法それ自体も面白いなと思えるようになった。英語を諦めなかったおかげで関心のフックが活きた。

2020-11-19 08:32:13
tricken(手術後復帰チャレンジ中) @tricken

というか、前置詞に対する権能の持たせ方がパワフルすぎる

2020-11-19 08:34:32
@mEGGrim

はたからみてるとやっぱりPythonって別に初学者に優しい言語ではなくね…? と感想になるがじゃあ何やればいいんだろうというと微妙なところだ(jsのいらんところを引き継いでるとか現状はトランスパイルするものであるというのが微妙なことを除けばtypescript x vscodeは悪くない…か?)

2020-11-19 09:03:34