1 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 22:44:02 ] 議論よろしく。
12 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 04:45:25 ] >>10 言語作者がめんどくさがることは各ユーザーがやればいいというわけですね。なるほど。
13 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 04:49:26 ] >>11 あそこはself以外の単語入れてボケるのが面白いのに
14 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 17:57:01 ] >>1 インデントは「制御構造」とは言わないのでは。 制御構造と言ったら普通は順構造(並んでいる順に実行)、分岐構造、反復構造のことを指す。 Python のインデントは「ブロック」を定義するための仕組みだ。
15 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 21:58:16 ] 好きだが、diffフレンドリーでないのが困る。 ブロックをtry-exceptで囲って、さらにブロックの中のバグを取ったりする。 その差分を後で別のブランチにマージするときに、本当に大丈夫かどうか 不安になる。 >11 僕はあそこにselfを入れてくるのがわかりやすくて好きだなぁ。 まぁ、好みの問題だけど。javaのインスタンス変数への暗黙アクセスは 元々嫌いで、毎回thisって打ってたタイプなので尚更。
16 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 22:29:49 ] あれは言語側でメンバ変数と仮引数の名前が同一なら this. 打つように強制して欲しかったと思う。 もしくはコンパイル時に警告を出すとか。デフォで。
17 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 08:05:12 ] >>15 >>16 java知らないけど、その状況って解釈不能じゃね?w
18 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:16:18 ] en.wikipedia.org/wiki/Off-side_rule 思ったより数少ないね。
19 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 04:59:32 ] pythonもどきのBoo言語てのもある
20 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 17:11:56 ] 俺自分でインデントするのめんどくさくてテキトーに書き散らして :%!perltidy する人なので、pythonは使えないと思った。
21 名前:デフォルトの名無しさん [2007/03/04(日) 21:34:51 ] 悔い改めよ
22 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:09:27 ] アーメン
23 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:16:35 ] GNUのキモイインデントが見られないというデメリットがあります
24 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:09:34 ] ンギモヂイイ!に見えた
25 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 14:25:34 ] 何のエロマンガだよ。
26 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 15:56:37 ] 東北人?
27 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 06:02:44 ] これって普通のコンパイラコンパイラツールで出来るの?
28 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 14:39:52 ] これってどれ?
29 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:10:02 ] Pythonに見られるインデントによる制御構造
30 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 14:57:54 ] LL(1)
31 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:15:23 ] 是。
32 名前:デフォルトの名無しさん [2007/07/18(水) 06:38:05 ] パッと見たときにブレースの方が視認性よくね? この良さわからんわ
33 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 07:45:36 ] 二次元映像の認識能力は人によってばらつきがあるからな。 俺はブレースを書かなくてもブロックを表現出来るのであれば積極的に省略したい。
34 名前:デフォルトの名無しさん [2007/07/18(水) 08:26:12 ] >>32 慣れの問題かもしれん
35 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 08:40:10 ] 是
36 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 09:31:08 ] 非
37 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 08:09:51 ] 俺は是 エディタがインデントレベルに応じて色分けとか サポートがあるとさらに良い。
38 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:08:12 ] >>32 > パッと見たときにブレースの方が視認性よくね? > この良さわからんわ 箇条書きした文章だと思うんだ!!
39 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:27:08 ] > ブレースの方が視認性よくね ブレースを使った言語で、みんな視認性を良く書いてくれてるならね
40 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:12:01 ] 方向音痴に地図を描かせてはいけないのと同じだ
41 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 20:55:08 ] Pythonは編集中にインデントレベルを変えると、周辺のレベルが思い出せなくて困ることがある。 C言語ライクな言語だとEmacsで M-x indent-region 一発で済むだけにPythonは書きづらい言語だ。(ただし読む分にはおk
42 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:15:05 ] 矩形選択して一気にインデントレベルを変更するんじゃダメなの?
43 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:37:26 ] エディタの高水準なサポートを前提にした仕様だよね。
44 名前:デフォルトの名無しさん [2007/07/19(木) 23:57:35 ] >>42 Emacs使った事無いのか?
45 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:02:52 ] 俺は Vim 使ってるから Emacs は使わないけど、何で?
46 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:21:04 ] ちなみに Vim の矩形選択は Ctrl-V で出来る。Emacs でどうやるかは知らないけど、 今時のエディタなら当然可能だろう。俺がインデントを削る時はまず手で打って、j. で 行数分繰り返すけどね。
47 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:57:29 ] "<"涙目。
48 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 07:00:38 ] 皮肉が通じんのか…
49 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 13:59:36 ] なぜ矩形選択なのかと
50 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 14:22:18 ] >>41 python-modeってそんなに不便なの?!
51 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 21:34:31 ] >43 一応エディタ無しでも組めないことはないだろ エディタ前提のLisp系に比べればまだマシな方じゃね?
52 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 22:15:52 ] Lisp は紙と鉛筆がデフォルトだよ
53 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 22:27:49 ] ブロックの頭にカーソルを置いてC-M-qじゃダメなの?
54 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 22:34:53 ] Pythonだと制御構造を変えるとそれに合わせてインデントも修正しなくちゃならん。 問題はその時にどこからどこまでどの程度インデントをずらすのか、修正してる途中で忘れちまうことがあるんだな。 C言語系だとブレースをいじるだけで済む。インデントはエディタが自動で揃えてくれるが、それは必須でもない。
55 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 22:47:47 ] アホ過ぎる……
56 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 22:49:31 ] 話題がループし始めたな
57 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 23:13:11 ] >>54 Python 付属の IDLE なら C-] と C-[ Emacs の python-mode なら C-c > と C-c < でブロック全体をインデント/デインデントできるんだが、 そういうエディタの支援を利用しないと云々という話?
58 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 00:59:27 ] >57 そういう話なんじゃね? >51 も >53 ができるエディタが必要って話だろ。 メモ帳で組めなきゃダメなのかよ。
59 名前:58 mailto:sage [2007/07/21(土) 01:03:55 ] って…C-M-qは字下げだったかorz 普段Emacs使わないから覚えてないな…
60 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 02:36:52 ] >>57 制御構造を変えるということはブロックの範囲や位置を変えたりとか色々なわけで、 それはエディタの機能じゃなくて人間の脳味噌でする仕事。 Pythonだとそういうエディタの機能ではカバーできない部分が煩わしいなぁ、と。
61 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 05:25:39 ] >>60 具体例きぼんぬ
62 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 07:33:20 ] みんな普段どんだけ低機能なエディタ使ってるんだよ。
63 名前:自分が勘違いしていることに気づいてなさそうだな… mailto:sage [2007/07/21(土) 09:48:42 ] プログラマがアルゴリズムを考えずに エディタにアルゴリズムを決めて貰うスレはこちらですか?
64 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 18:17:49 ] Python知らないが、こういうことだろ? 仮に if (foo) { proc1; proc2; } と言うロジックがあったときに、proc2を条件から外したいとする。 その場合、当然proc2の行を次の行を入れ替えて if (foo) { proc1; } proc2; とすればいい。しかし、インデント依存言語だとproc2のインデントを変えるだけで済んでしまう。 このように一個の条件式だけなら未だいいが、ループ内の条件式をループ外に出すといった場合には インデントレベルの把握と操作が煩わしい。
65 名前:なんでこんな奴が来てるんだ? mailto:sage [2007/07/21(土) 21:59:01 ] >インデントレベルの把握と操作が煩わしい。 脳内妄想は日記内でおながいしまつ
66 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 22:22:21 ] >>64 「ループ内の""文""をループ外に出すといった場合には」 が カット->ペースト->手作業でインデント揃え カット->ペースト->コマンド一発で勝手にインデントが揃う の差って言いたいんじゃないか?
67 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 00:16:41 ] >>64 { } を使う言語もどうせ可読性のためにインデントしてるんだから Pythonの方が表記や操作の無駄がなくてよい
68 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 03:52:21 ] >>64 なんてproc2のインデントレベルがそのままだったら露骨に糞コードだろ。
69 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 09:39:23 ] >手作業でインデント揃え はエディタの支援で "一発でインデントを揃える" ことが出来るのに >コマンド一発で勝手にインデントが揃う と何が違うのか意味が分からない
70 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 09:43:52 ] Phython厨が意図的に理解できない振りをしているのか、それとも本当に理解できないのか、どっちなんだろ。
71 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 11:00:29 ] >>69 「コマンド一発で勝手にインデントが揃う」 は { { { なんとか } } } をコマンド一発で { { { なんとか } } } にしてくれる事
72 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 11:45:34 ] >70 いい加減飽きたからこの辺で放置しとくけど... カッコをどこにいれるかと考えている段階&作業に相当するのが 「どのブロックをインデントさせようか」と考えてインデントする作業 なので >71 の「コマンド一発で勝手にインデントが揃う」は そもそも比較対象が存在しないと言うか そういう考え方が無意味なんですけどね… python 使ったことないひとには理解できないかもしれません
73 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 12:28:23 ] リファクタリングしたことないひとには理解できないかもしれません
74 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 14:14:53 ] >>71 例えば Emacs の場合、「コマンド一発」って具体的にどうすんの?
75 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 14:50:48 ] >>74 >>53
76 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 16:42:15 ] C なら indent-region の類いだし python-mode なら↓とかで。 C-c > py-shift-region-right C-c < py-shift-region-left C-c C-r py-shift-region-right C-c C-l py-shift-region-left インデントの意味もこまんど一発の意味合いも違うけど
77 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:08:38 ] 1:1 でマップ出来ないというのはその通りだよね。 この場合は、一部を切り出して比較しても意味が無い。
78 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 00:17:09 ] >>74 ブロックの終端に必ずreturnかpassを付けてから整形する
79 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 00:23:14 ] おお、気づかなかったよ
80 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 00:45:46 ] >>78 それは・・・・・・
81 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 01:03:47 ] それじゃあ、rubyのendのほうがマシw
82 名前:デフォルトの名無しさん [2007/10/11(木) 11:14:00 ] キモイ
83 名前:デフォルトの名無しさん [2007/10/11(木) 11:39:30 ] FORTRAN 最強! 1〜5桁目 行番号を書く。1カラム目にCを書くとその行はコメント行になる。 6桁目 継続行であるときはここに任意の文字(空白又は0以外)を書く 7〜72桁目 本文を書く 73〜80桁目 シーケンシャル番号を書く(行を識別するための番号、本文には影響しない) 123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789- +---+-+----------------------------------------------------------------+-------+ 行番号 コード DO 10 I = 1, 100 WRITE(6,200) I 200 FORMAT(1H ,I3) 10 CONTINUE END
84 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:24:36 ] HASKELL !!!!!!
85 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:46:27 ] 関数の最後にはreturn を書くクセをつければ def A(): .... return の行頭空白がなくなったとしてもどうにか復元できるけど たとえば for i in range(10): if data[i]==3: break else: print "NOT FOUND" で空白がなくなったらもう復元できないよね それが怖い for の最後には必ず continue をつけるとか。
86 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 20:35:40 ] >>85 何をお仰りたいかわかりませんが つ{} もしくは つ他言語
87 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:22:48 ] 行頭の空白が無くなったのを復元しなくてはいけない というシチュエーションは殆ど無いから無問題かと... 2ch に慌てて貼付けた時くらい?
88 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 22:21:36 ] その行頭の空白も、専ブラによっては見れるからなぁ…
89 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:56:43 ] 最悪ソース見ればちゃんと残ってる
90 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:13:43 ] wxGladeが吐いたコードみてみたら if hoge : hage fuga hige # end if みたいになってた
91 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:15:10 ] >>83 パンチカードの時代に作られた言語だから
92 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:20:17 ] >>85 for i in range(10): if data[i]==3: break # end if else: print "NOT FOUND" # end for なんかださいけど
93 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:58:11 ] そんなもんいちいちつけてコードを醜くするなら別の言語を使え、 とか言い放つPython原理主義者などはいないものか。
94 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 02:19:32 ] >93 ノ endとか書くぐらいならRubyでもやってろと思う
95 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 08:41:21 ] Pythonって実は for i in range(10): { if data[i]==3: break }else: { print "NOT FOUND" } って書いても動く?
96 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 09:12:22 ] 残念なことに構文エラーだ
97 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 00:24:01 ] >>85 >>78 for i in range(10): if data[i]==3: break pass else: print "NOT FOUND" pass
98 名前:デフォルトの名無しさん [2007/11/18(日) 00:11:00 ] インデントが文法的に意味を持たなくたって、 どうせ、一秒でも保守する気のあるコードは必ずインデントして書くわけだから、 どうせだったら、インデントを文法に利用して、不要なブレースだの、endだの を省けたほうが、合理的だし、無駄がなくて美しい。
99 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:18:51 ] 不要なselfもなくしてください
100 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 01:11:44 ] 変な記号をつけるよりselfの方がまし selfは不要じゃないよ
101 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 02:11:57 ] つうか、その話とインデントはまったく独立なわけで・・・
102 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 02:21:08 ] インデントあれば「:」も不要だと思うけど あれは何でのこっているんだろう?
103 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 03:19:07 ] >>100 スコープで文脈ってものを既に導入しているのだから、 selfくらいは省略したときに文脈から判断したっていいんじゃね?
104 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:49:06 ] >>103 インタプリタの判断ミスによる副作用を防ぐために、ピリオドを含めてたった 5 文字の self くらい明示的に指定しても良いんじゃね?
105 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 10:11:23 ] コードを書き捨てるだけなら面倒だと思うかもしれないが、 selfが常にあるほうがずっと読みやすいコードになるよ。
106 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 10:14:23 ] メンバ関数定義の最初の仮引数として常にselfを自分で書かなければならない ことだけは、冗長だと感じる
107 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 10:28:53 ] >>102 コロンは,英語の表記習慣から来てるんだと思う。 PEP8のImportsセクションあたり見てみ。項目を列記する前の行にコロンを使う。 ttp://www.python.org/dev/peps/pep-0008/ たとえばこんなの。 Imports should be grouped in the following order: 1. standard library imports 2. related third party imports 3. local application/library specific imports
108 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:30:54 ] インタプリタの判断ミス(笑) ミスするのは人間だろう。ミスを防ぐためにselfが 必用だというならインデントをミスった場合の 防波堤としてブレースだって必用だ。
109 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 13:33:41 ] ブレースミスったときの対策も必要だ!
110 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:03:16 ] 括弧の閉じ忘れ対策も必要じゃね?
111 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:59:30 ] コロンに関して言えば あると見やすいだろってだけの話で深い理由はない。
112 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:04:53 ] コロン無いと一行に書けないじゃん if pred: body みたいにさ