Pythonに見られるインデントによる制御構造の是非

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
議論よろしく。
2デフォルトの名無しさん:2007/01/22(月) 22:46:31
過疎スレだ?ボコボコにしてやんよ
 ∧_∧
 ( ・ω・)=つ≡つ
 (っ ≡つ=つ
 /   ) ババババ
 ( / ̄∪
3デフォルトの名無しさん:2007/01/23(火) 00:47:09
4デフォルトの名無しさん:2007/01/23(火) 02:09:24
Haskell は 2 次元文法と括弧付きの文法を簡単に切り替えられるらしいね。
5デフォルトの名無しさん:2007/01/23(火) 02:09:44
6デフォルトの名無しさん:2007/01/23(火) 07:01:34
7デフォルトの名無しさん:2007/01/23(火) 18:03:50
8デフォルトの名無しさん:2007/01/23(火) 20:52:04
>>4
切り替えるというか混在OKでしょ

他の言語もブレースとインデント両方サポートしてほしい。
ブレースだから、インデントだから、endがうざいから
とかが言語選択の理由になってしまうのはつまらんと思う。
9デフォルトの名無しさん:2007/01/23(火) 20:59:39
これって単に好みの問題?
10デフォルトの名無しさん:2007/01/23(火) 23:27:21
ぶらさがり問題が起きないって言う利点が大きい。
どっちみちインデントが揃ってないプログラムは読みにくいし。
エディタが完璧に整形してくれるのが一番なんだけど。

>他の言語もブレースとインデント両方サポート
機械的に選択可能ならエディタにでも組み込めばいいじゃないかな。
11デフォルトの名無しさん:2007/01/24(水) 04:32:33
python はこれだから気に入ったけど
メソッド第一引数 self で(ノ∀`)アチャーだったので
GroovyかPnutsに渋々移行した。
12デフォルトの名無しさん:2007/01/24(水) 04:45:25
>>10
言語作者がめんどくさがることは各ユーザーがやればいいというわけですね。なるほど。
13デフォルトの名無しさん:2007/01/24(水) 04:49:26
>>11
あそこはself以外の単語入れてボケるのが面白いのに
14デフォルトの名無しさん:2007/01/24(水) 17:57:01
>>1
インデントは「制御構造」とは言わないのでは。
制御構造と言ったら普通は順構造(並んでいる順に実行)、分岐構造、反復構造のことを指す。

Python のインデントは「ブロック」を定義するための仕組みだ。
15デフォルトの名無しさん:2007/01/27(土) 21:58:16
好きだが、diffフレンドリーでないのが困る。

ブロックをtry-exceptで囲って、さらにブロックの中のバグを取ったりする。
その差分を後で別のブランチにマージするときに、本当に大丈夫かどうか
不安になる。

>11

僕はあそこにselfを入れてくるのがわかりやすくて好きだなぁ。
まぁ、好みの問題だけど。javaのインスタンス変数への暗黙アクセスは
元々嫌いで、毎回thisって打ってたタイプなので尚更。
16デフォルトの名無しさん:2007/01/27(土) 22:29:49
あれは言語側でメンバ変数と仮引数の名前が同一なら
this. 打つように強制して欲しかったと思う。
もしくはコンパイル時に警告を出すとか。デフォで。
17デフォルトの名無しさん:2007/02/01(木) 08:05:12
>>15>>16
java知らないけど、その状況って解釈不能じゃね?w
18デフォルトの名無しさん:2007/02/25(日) 23:16:18
http://en.wikipedia.org/wiki/Off-side_rule

思ったより数少ないね。
19デフォルトの名無しさん:2007/02/26(月) 04:59:32
pythonもどきのBoo言語てのもある
20デフォルトの名無しさん:2007/03/01(木) 17:11:56
俺自分でインデントするのめんどくさくてテキトーに書き散らして
:%!perltidy する人なので、pythonは使えないと思った。
21デフォルトの名無しさん:2007/03/04(日) 21:34:51
悔い改めよ
22デフォルトの名無しさん:2007/03/04(日) 22:09:27
アーメン
23デフォルトの名無しさん:2007/03/04(日) 22:16:35
GNUのキモイインデントが見られないというデメリットがあります
24デフォルトの名無しさん:2007/03/05(月) 01:09:34
ンギモヂイイ!に見えた
25デフォルトの名無しさん:2007/03/05(月) 14:25:34
何のエロマンガだよ。
26デフォルトの名無しさん:2007/03/05(月) 15:56:37
東北人?
27デフォルトの名無しさん:2007/03/11(日) 06:02:44
これって普通のコンパイラコンパイラツールで出来るの?
28デフォルトの名無しさん:2007/03/12(月) 14:39:52
これってどれ?
29デフォルトの名無しさん:2007/03/13(火) 11:10:02
Pythonに見られるインデントによる制御構造
30デフォルトの名無しさん:2007/03/13(火) 14:57:54
LL(1)
31デフォルトの名無しさん:2007/03/13(火) 23:15:23
是。
32デフォルトの名無しさん:2007/07/18(水) 06:38:05
パッと見たときにブレースの方が視認性よくね?
この良さわからんわ
33デフォルトの名無しさん:2007/07/18(水) 07:45:36
二次元映像の認識能力は人によってばらつきがあるからな。
俺はブレースを書かなくてもブロックを表現出来るのであれば積極的に省略したい。
34デフォルトの名無しさん:2007/07/18(水) 08:26:12
>>32
慣れの問題かもしれん
35デフォルトの名無しさん:2007/07/18(水) 08:40:10
36デフォルトの名無しさん:2007/07/18(水) 09:31:08
37デフォルトの名無しさん:2007/07/19(木) 08:09:51
俺は是
エディタがインデントレベルに応じて色分けとか
サポートがあるとさらに良い。
38デフォルトの名無しさん:2007/07/19(木) 15:08:12
>>32
> パッと見たときにブレースの方が視認性よくね?
> この良さわからんわ

箇条書きした文章だと思うんだ!!
39デフォルトの名無しさん:2007/07/19(木) 15:27:08
> ブレースの方が視認性よくね

ブレースを使った言語で、みんな視認性を良く書いてくれてるならね
40デフォルトの名無しさん:2007/07/19(木) 18:12:01
方向音痴に地図を描かせてはいけないのと同じだ
41デフォルトの名無しさん:2007/07/19(木) 20:55:08
Pythonは編集中にインデントレベルを変えると、周辺のレベルが思い出せなくて困ることがある。
C言語ライクな言語だとEmacsで M-x indent-region 一発で済むだけにPythonは書きづらい言語だ。(ただし読む分にはおk
42デフォルトの名無しさん:2007/07/19(木) 22:15:05
矩形選択して一気にインデントレベルを変更するんじゃダメなの?
43デフォルトの名無しさん:2007/07/19(木) 22:37:26
エディタの高水準なサポートを前提にした仕様だよね。
44デフォルトの名無しさん:2007/07/19(木) 23:57:35
>>42
Emacs使った事無いのか?
45デフォルトの名無しさん:2007/07/20(金) 06:02:52
俺は Vim 使ってるから Emacs は使わないけど、何で?
46デフォルトの名無しさん:2007/07/20(金) 06:21:04
ちなみに Vim の矩形選択は Ctrl-V で出来る。Emacs でどうやるかは知らないけど、
今時のエディタなら当然可能だろう。俺がインデントを削る時はまず手で打って、j. で
行数分繰り返すけどね。
47デフォルトの名無しさん:2007/07/20(金) 06:57:29
"<"涙目。
48デフォルトの名無しさん:2007/07/20(金) 07:00:38
皮肉が通じんのか…
49デフォルトの名無しさん:2007/07/20(金) 13:59:36
なぜ矩形選択なのかと
50デフォルトの名無しさん:2007/07/20(金) 14:22:18
>>41
python-modeってそんなに不便なの?!
51デフォルトの名無しさん:2007/07/20(金) 21:34:31
>43
一応エディタ無しでも組めないことはないだろ
エディタ前提のLisp系に比べればまだマシな方じゃね?
52デフォルトの名無しさん:2007/07/20(金) 22:15:52
Lisp は紙と鉛筆がデフォルトだよ
53デフォルトの名無しさん:2007/07/20(金) 22:27:49
ブロックの頭にカーソルを置いてC-M-qじゃダメなの?
54デフォルトの名無しさん:2007/07/20(金) 22:34:53
Pythonだと制御構造を変えるとそれに合わせてインデントも修正しなくちゃならん。
問題はその時にどこからどこまでどの程度インデントをずらすのか、修正してる途中で忘れちまうことがあるんだな。

C言語系だとブレースをいじるだけで済む。インデントはエディタが自動で揃えてくれるが、それは必須でもない。
55デフォルトの名無しさん:2007/07/20(金) 22:47:47
アホ過ぎる……
56デフォルトの名無しさん:2007/07/20(金) 22:49:31
話題がループし始めたな
57デフォルトの名無しさん:2007/07/20(金) 23:13:11
>>54
Python 付属の IDLE なら C-] と C-[
Emacs の python-mode なら C-c > と C-c <
でブロック全体をインデント/デインデントできるんだが、
そういうエディタの支援を利用しないと云々という話?
58デフォルトの名無しさん:2007/07/21(土) 00:59:27
>57
そういう話なんじゃね?
>51 も >53 ができるエディタが必要って話だろ。

メモ帳で組めなきゃダメなのかよ。
5958:2007/07/21(土) 01:03:55
って…C-M-qは字下げだったかorz
普段Emacs使わないから覚えてないな…
60デフォルトの名無しさん:2007/07/21(土) 02:36:52
>>57
制御構造を変えるということはブロックの範囲や位置を変えたりとか色々なわけで、
それはエディタの機能じゃなくて人間の脳味噌でする仕事。
Pythonだとそういうエディタの機能ではカバーできない部分が煩わしいなぁ、と。
61デフォルトの名無しさん:2007/07/21(土) 05:25:39
>>60
具体例きぼんぬ
62デフォルトの名無しさん:2007/07/21(土) 07:33:20
みんな普段どんだけ低機能なエディタ使ってるんだよ。
プログラマがアルゴリズムを考えずに
エディタにアルゴリズムを決めて貰うスレはこちらですか?
64デフォルトの名無しさん:2007/07/21(土) 18:17:49
Python知らないが、こういうことだろ?

仮に
if (foo) {
proc1;
proc2;
}
と言うロジックがあったときに、proc2を条件から外したいとする。
その場合、当然proc2の行を次の行を入れ替えて
if (foo) {
proc1;
}
proc2;
とすればいい。しかし、インデント依存言語だとproc2のインデントを変えるだけで済んでしまう。
このように一個の条件式だけなら未だいいが、ループ内の条件式をループ外に出すといった場合には
インデントレベルの把握と操作が煩わしい。
65なんでこんな奴が来てるんだ?:2007/07/21(土) 21:59:01
>インデントレベルの把握と操作が煩わしい。

脳内妄想は日記内でおながいしまつ
66デフォルトの名無しさん:2007/07/21(土) 22:22:21
>>64
「ループ内の""文""をループ外に出すといった場合には」
が 
カット->ペースト->手作業でインデント揃え
カット->ペースト->コマンド一発で勝手にインデントが揃う
の差って言いたいんじゃないか?
67デフォルトの名無しさん:2007/07/22(日) 00:16:41
>>64
{ } を使う言語もどうせ可読性のためにインデントしてるんだから
Pythonの方が表記や操作の無駄がなくてよい
68デフォルトの名無しさん:2007/07/22(日) 03:52:21
>>64なんてproc2のインデントレベルがそのままだったら露骨に糞コードだろ。
69デフォルトの名無しさん:2007/07/22(日) 09:39:23
>手作業でインデント揃え

はエディタの支援で "一発でインデントを揃える" ことが出来るのに

>コマンド一発で勝手にインデントが揃う

と何が違うのか意味が分からない
70デフォルトの名無しさん:2007/07/22(日) 09:43:52
Phython厨が意図的に理解できない振りをしているのか、それとも本当に理解できないのか、どっちなんだろ。
71デフォルトの名無しさん:2007/07/22(日) 11:00:29
>>69
「コマンド一発で勝手にインデントが揃う」


{
{
{
なんとか
}
}
}

をコマンド一発で

{
 {
  {
   なんとか
  }
 }
}

にしてくれる事
72デフォルトの名無しさん:2007/07/23(月) 11:45:34
>70
いい加減飽きたからこの辺で放置しとくけど...

カッコをどこにいれるかと考えている段階&作業に相当するのが
「どのブロックをインデントさせようか」と考えてインデントする作業
なので >71 の「コマンド一発で勝手にインデントが揃う」は
そもそも比較対象が存在しないと言うか
そういう考え方が無意味なんですけどね…

python 使ったことないひとには理解できないかもしれません
73デフォルトの名無しさん:2007/07/23(月) 12:28:23
リファクタリングしたことないひとには理解できないかもしれません
74デフォルトの名無しさん:2007/07/23(月) 14:14:53
>>71
例えば Emacs の場合、「コマンド一発」って具体的にどうすんの?
75デフォルトの名無しさん:2007/07/23(月) 14:50:48
76デフォルトの名無しさん: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デフォルトの名無しさん:2007/07/23(月) 22:08:38
1:1 でマップ出来ないというのはその通りだよね。
この場合は、一部を切り出して比較しても意味が無い。
78デフォルトの名無しさん:2007/09/13(木) 00:17:09
>>74
ブロックの終端に必ずreturnかpassを付けてから整形する
79デフォルトの名無しさん:2007/09/13(木) 00:23:14
おお、気づかなかったよ
80デフォルトの名無しさん:2007/09/13(木) 00:45:46
>>78
それは・・・・・・
81デフォルトの名無しさん: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デフォルトの名無しさん:2007/10/17(水) 23:24:36
HASKELL !!!!!!
85デフォルトの名無しさん: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デフォルトの名無しさん:2007/10/26(金) 20:35:40
>>85
何をお仰りたいかわかりませんが
つ{}
もしくは
つ他言語
87デフォルトの名無しさん:2007/10/27(土) 17:22:48
行頭の空白が無くなったのを復元しなくてはいけない
というシチュエーションは殆ど無いから無問題かと...

2ch に慌てて貼付けた時くらい?
88デフォルトの名無しさん:2007/10/27(土) 22:21:36
その行頭の空白も、専ブラによっては見れるからなぁ…
89デフォルトの名無しさん:2007/11/12(月) 07:56:43
最悪ソース見ればちゃんと残ってる
90デフォルトの名無しさん:2007/11/12(月) 20:13:43
wxGladeが吐いたコードみてみたら

if hoge :
  hage
  fuga
  hige
  # end if

みたいになってた

91デフォルトの名無しさん:2007/11/12(月) 20:15:10
>>83
パンチカードの時代に作られた言語だから
92デフォルトの名無しさん: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デフォルトの名無しさん:2007/11/13(火) 00:58:11
そんなもんいちいちつけてコードを醜くするなら別の言語を使え、
とか言い放つPython原理主義者などはいないものか。
94デフォルトの名無しさん:2007/11/13(火) 02:19:32
>93

endとか書くぐらいならRubyでもやってろと思う
95デフォルトの名無しさん:2007/11/13(火) 08:41:21
Pythonって実は
for i in range(10): {
if data[i]==3:
break
}else: {
print "NOT FOUND"
}
って書いても動く?
96デフォルトの名無しさん:2007/11/13(火) 09:12:22
残念なことに構文エラーだ
97デフォルトの名無しさん: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デフォルトの名無しさん:2007/11/18(日) 00:18:51
不要なselfもなくしてください
100デフォルトの名無しさん:2007/11/18(日) 01:11:44
変な記号をつけるよりselfの方がまし
selfは不要じゃないよ
101デフォルトの名無しさん:2007/11/18(日) 02:11:57
つうか、その話とインデントはまったく独立なわけで・・・
102デフォルトの名無しさん:2007/11/18(日) 02:21:08
インデントあれば「:」も不要だと思うけど
あれは何でのこっているんだろう?
103デフォルトの名無しさん:2007/11/18(日) 03:19:07
>>100
スコープで文脈ってものを既に導入しているのだから、
selfくらいは省略したときに文脈から判断したっていいんじゃね?
104デフォルトの名無しさん:2007/11/18(日) 09:49:06
>>103
インタプリタの判断ミスによる副作用を防ぐために、ピリオドを含めてたった 5 文字の self くらい明示的に指定しても良いんじゃね?
105デフォルトの名無しさん:2007/11/18(日) 10:11:23
コードを書き捨てるだけなら面倒だと思うかもしれないが、
selfが常にあるほうがずっと読みやすいコードになるよ。
106デフォルトの名無しさん:2007/11/18(日) 10:14:23
メンバ関数定義の最初の仮引数として常にselfを自分で書かなければならない
ことだけは、冗長だと感じる
107デフォルトの名無しさん: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デフォルトの名無しさん:2007/11/18(日) 12:30:54
インタプリタの判断ミス(笑)

ミスするのは人間だろう。ミスを防ぐためにselfが
必用だというならインデントをミスった場合の
防波堤としてブレースだって必用だ。
109デフォルトの名無しさん:2007/11/18(日) 13:33:41
ブレースミスったときの対策も必要だ!
110デフォルトの名無しさん:2007/11/18(日) 15:03:16
括弧の閉じ忘れ対策も必要じゃね?
111デフォルトの名無しさん:2007/11/18(日) 15:59:30
コロンに関して言えば
あると見やすいだろってだけの話で深い理由はない。
112デフォルトの名無しさん:2007/11/18(日) 16:04:53
コロン無いと一行に書けないじゃん
if pred: body
みたいにさ
113デフォルトの名無しさん:2007/11/18(日) 16:25:05
誰が書いても同じ書き方になるのが売りのひとつじゃなかったの?
114デフォルトの名無しさん:2007/11/18(日) 17:03:56
>>113
んなもん、本当に同じになるわけねーじゃんよ
115デフォルトの名無しさん:2007/11/18(日) 17:29:58
>>112
行末の「;」が省略可能なんだから
同様に1行に書く時だけ「:」つけるんで
いいんでないか?
116デフォルトの名無しさん:2007/11/18(日) 17:31:18
self じゃなくて s で済ませば3文字減るな
117デフォルトの名無しさん:2007/11/18(日) 17:40:57
ifとかforやめて全部 ? にすればすごく減るよね。違いは文脈で判断。
118デフォルトの名無しさん:2007/11/18(日) 18:03:47
一番重要なのは可読性であって、打鍵数を減らすことじゃないと思うんだが、と言ってみるテスト。
119デフォルトの名無しさん:2007/11/18(日) 18:23:18
キーワードの短さだけを考えるんじゃねえよ。
可読性もいっしょに考えるんだ。
120デフォルトの名無しさん:2007/11/18(日) 18:28:15
self、selfってうるさいのも可読性を落とすよ
121デフォルトの名無しさん:2007/11/18(日) 18:29:09
>>114
だからってわざわざ複数の書き方を許すような文法にしなくてもいいじゃん
122デフォルトの名無しさん:2007/11/18(日) 18:40:08
self、self ってあって下がるのは読み手のモチベーション。可読性の低下に関しては間接的な影響しか与えないんじゃないかな?
123デフォルトの名無しさん:2007/11/18(日) 18:44:58
わざわざself省略とかなんでそんな無駄なことしなきゃいけないんだ
124デフォルトの名無しさん:2007/11/18(日) 18:57:28
まあぶっちゃけselfには利点の方が多いのだが。
selfをいやがる奴に限って「めんどい」とかそういう低レベルなことしか言わないな。
そういうアホはPythonを使わなくて結構。
125デフォルトの名無しさん:2007/11/18(日) 19:04:50
>>124
禿同。そういうヤツらって実は Python どころか、きちんと機能するコードを書けるかすら疑問。
126デフォルトの名無しさん:2007/11/18(日) 19:18:53
ぶっちゃけとかいうくせに全然ぶっちゃけた話ししてないじゃん。
さっさと利点の方が多いというところをぶっちゃけてみろよ。
単に論破されるのが怖くて隠し玉をださないくせに、出せば勝てる
という根拠の無い自信ででかい態度を取ってるだけに見えるぞ。
127デフォルトの名無しさん:2007/11/18(日) 19:33:41
>>124
むしろselfがキーワードでないのは半端に思えるんだが。

呼び出すときには
obj.method(arg)
と書けるのに
定義では
def method(self, arg):
と書かなければならないのも、汚い。selfがキーワードでないために
こう書かなければならないのだとしたら、それこそバカげている。

メンバアクセスを self.member のように書かせること自体は、
可読性のために良いと思えるんだが。
128デフォルトの名無しさん:2007/11/18(日) 19:44:45
>>127
class.method(obj,arg)
129デフォルトの名無しさん:2007/11/18(日) 19:49:32
>>128
常にそう書かせるのであれば一貫性はある。だが、実際にはそうではない、でしょ。
限定的に
obj.method(arg) にだけ第一引数省略の特権を与える合理的な理由があるとは
思えない。
130デフォルトの名無しさん:2007/11/18(日) 19:52:57
関数がファーストクラスオブジェクトでない言語しか
知らないゆとりカワイソス
131デフォルトの名無しさん:2007/11/18(日) 19:56:34
>>130
それ、全然関係ないだろ
OCamlでクラスのメソッドを定義する時に、いちいち第一引数の
selfなんて書かせないぞ

Pythonがそうであるのは単に実装都合であり、要は手抜きだ
132デフォルトの名無しさん:2007/11/18(日) 20:08:48
第一引数のself書かせないと。それは不便だな。
133デフォルトの名無しさん:2007/11/18(日) 20:12:38
君らの脳内の解釈より、他人が見た時の可読性が重要なんだよ。
134デフォルトの名無しさん:2007/11/18(日) 20:12:52
それがインスタンスメソッドなら第一引数がレシーバであるのは自明で、
定義に明示的にselfを書かせないとしても、レシーバを第一引数にして
クラスメソッドとして呼び出せるようにすることも出来る。

インスタンスメソッドにわざわざ常にselfを明示的に書かせるPythonは
センスが無い。
135デフォルトの名無しさん:2007/11/18(日) 20:13:47
>>133
レシーバのselfをわざわざ書かせることも、それが実はキーワードでも
何でもなくて、sと書いてもいいことも、可読性の向上に何ら貢献しないのだが。
136デフォルトの名無しさん:2007/11/18(日) 20:18:47
>>135
それは、あなたが賢いからなのでしょうね。私には少なくとも可読性の向上に貢献しています。
137デフォルトの名無しさん:2007/11/18(日) 20:18:59
1) メソッドには第一引数が必要という割り切った仕様。欠点より利点が多いことは,ゆとりプログラマ以外には説明不要なほど自明なこと。
2) 暗黙に第一引数の名前が決まっていた方がみんな便利。
3) だからselfと書く。

これが分からない奴は他の言語使えばいいと思うよ。

ぶっちゃけクラスメソッドの場合の第一引数はclsだぜ。
文盲でない奴はPEP8を読もうな。日本語訳もあることだし。
138デフォルトの名無しさん:2007/11/18(日) 20:22:52
>>137
「欠点より利点が多い」理由を説明してくれ。
obj.memfunc()
だけを省略可能にする合理的理由についてもな。

決まっていたほうが便利というのなら、それこそコンベンションでなく
キーワードにしろ、と。

あんたはPythonが現にそうである、という説明をしているだけだ。
それが良いものであるかどうかという説明にはなっていないぞ。
139デフォルトの名無しさん:2007/11/18(日) 20:27:39
 
140デフォルトの名無しさん:2007/11/18(日) 20:30:15
929 名前: デフォルトの名無しさん [sage] 投稿日: 2006/10/18(水) 23:39:44 
(´-ω-`) 

Guidoは疲れ切っていた 
煩雑な構文、人によって違うスタイル、そして見えない変数に。 



(´-ω-`)Zzz 

そして眠ってしまった。しかし…… 



ヒラメキ━━━━(゚∀゚)━━━━!! 

単純な構文!スタイル強制!変数はすべて明示!! 



俺言語デキタY⌒Y⌒Y⌒Y⌒Y⌒Y⌒(。A。)!!! 

switch...case欲しいだと? (゚Д゚ )ヤダ!! 
インデント構文がSM? (*´д`*)ハァハァ 
クラスの記述が面倒? ( ´_ゝ`)フーン Javaでもやれよ 
変数を暗示で使えるようにだと? (^A^)っPerl 


俺言語ヽ(´ー`)ノバンザーイ 
141デフォルトの名無しさん:2007/11/18(日) 20:30:49
obj.memfunc() が本当に省略なのかについて
142デフォルトの名無しさん:2007/11/18(日) 20:32:38
欠点:
 ゆとりが理解不可能なこと。
利点:
 それ以外全部(wwww

>obj.memfunc()
>だけを省略可能にする合理的理由についてもな。

意味不明。ゆとりなりに頭を使って,丁寧に説明してくれよ。
それが礼儀ってものだろ(wwwwww

>決まっていたほうが便利というのなら、それこそコンベンションでなく
>キーワードにしろ、と。

嫌だね。たまにはselfというローカル変数を作りたくなることもあるし(www

>あんたはPythonが現にそうである、という説明をしているだけだ。

そして,お前はまずPythonの現状をよく調べろ。
作者タソがみずからselfの存在意義について言及している文章がたくさん見つかるよ。
あ,ごめん,日本語もできないゆとりが英語なんて読めるわけないよな(wwwwwwwwwww
143デフォルトの名無しさん:2007/11/18(日) 20:34:30
>>138
>決まっていたほうが便利というのなら、それこそコンベンションでなく
>キーワードにしろ、と。

キーワードは主にパーサーのためにあるのであって,ゆとり脳のためにあるのではないのだが。
144デフォルトの名無しさん:2007/11/18(日) 20:34:47
説明できない人は要りません
145デフォルトの名無しさん:2007/11/18(日) 20:37:01
Python信者発狂。
インスタンスメソッドのレシーバにselfだのthisだの書かせない
大半のオブジェクト指向言語よりPythonの方法のほうが「いいものだ」
と無根拠に主張して、その理由は説明できんらしいな。
146デフォルトの名無しさん:2007/11/18(日) 20:38:08
>>142
あまりイジめちゃ可哀想だよ。この議論、ゴールドセイントにスティールセイントが戦いを挑むようなモンなんだから。
147デフォルトの名無しさん:2007/11/18(日) 20:38:38
>>145
いやいや信者かどうかは微妙だぞ。
ここぞとばかりに荒そうとしているのかもしらん。
かなり頭悪そうだからなあw
148デフォルトの名無しさん:2007/11/18(日) 20:38:42
> 嫌だね。たまにはselfというローカル変数を作りたくなることもあるし(www

Python信者は自分の都合に応じて「可読性」と言い、
時にはselfというローカル変数を作ってコードの読者を罠にはめるわけか。

で、classだのwhileだのforだのinだのというローカル変数を作りたくなることは
ないのかい?
149デフォルトの名無しさん:2007/11/18(日) 20:41:38
他の予約語がもっと多い言語を使っているヤツがゴチャゴチャ言うな。
150デフォルトの名無しさん:2007/11/18(日) 20:43:32
何だその煽りにもなってない煽り。
151デフォルトの名無しさん:2007/11/18(日) 20:44:31
>>145
逆に大半のオブジェクト指向言語の方法のほうが「いいものだ」という、あなたの根拠を聞きたいものだね。
152デフォルトの名無しさん:2007/11/18(日) 20:44:48
喧嘩すんなよ。というか、self云々はスレ違いだろ。
selfはウゼーってことで終了しようよ。
153デフォルトの名無しさん:2007/11/18(日) 20:46:08
>>148
>で、classだのwhileだのforだのinだのというローカル変数を作りたくなることは
>ないのかい?

ぶっちゃけないよ(wwwwwwwwwwwwwwwwwwwwwwwwwww
154デフォルトの名無しさん:2007/11/18(日) 20:46:41
>>153
selfはあるのに?

論理破綻はなはだしい。
155デフォルトの名無しさん:2007/11/18(日) 20:47:33
>>148
高々20数個の予約語も覚えられず,予約語と同名の変数を作りたくなることがあるとは!!!
ゆとり脳恐るべし!!!!!!!
156デフォルトの名無しさん:2007/11/18(日) 20:48:06
>>151
インスタンスメソッドの第一引数は自明なのだから、その定義において
毎回それを書かせるのは、obj.mem(obj)が冗長であるのと同じ理由で
冗長であり、可読性にも貢献しない。それで十分では?
157デフォルトの名無しさん:2007/11/18(日) 20:48:09
>>155
お前は文盲か。
158デフォルトの名無しさん:2007/11/18(日) 20:49:10
>>154
155が言っているとおり,予約語と分かっているキーワードを変数名として使いたくなることなんてねえよ(wwwwwwwwwwwwwwwwwwwww
159デフォルトの名無しさん:2007/11/18(日) 20:49:44
>>152
全てのselfがウザいと言っているのではない。
インスタンスメソッド定義にわざわざ「常に」selfと書かせるのが
ウザいと言っている。

「常に」書くってどういう意味かわかるか?
場合わけがそもそも存在しないんだから、それは自明なんだ、自動化できるんだ。
それをわざわざ人手でやらせてるんだ。
馬鹿馬鹿しいことこの上ない。
160デフォルトの名無しさん:2007/11/18(日) 20:50:10
>>158
文盲がお前とアイツと二人いるってことか
161デフォルトの名無しさん:2007/11/18(日) 20:51:21
>>158
つまりselfがもともとキーワードとして設計されていれば、文句を
言わないわけだ。
自分のバカさ加減、論理矛盾に全く気づいていないようだねえ。
162デフォルトの名無しさん:2007/11/18(日) 20:52:21
>>159
>インスタンスメソッド定義にわざわざ「常に」selfと書かせるのが
>ウザいと言っている。

self書かない方が逆にまぎらわしくね?(wwwww
163デフォルトの名無しさん:2007/11/18(日) 20:54:11
>>162
メソッドのプリフィックスにm_つければおk
164デフォルトの名無しさん:2007/11/18(日) 20:56:11
(w

で抽出すると、バカが浮き彫りになりますな。
165デフォルトの名無しさん:2007/11/18(日) 20:57:29
>>164
164が抽出されました(wwwwwwwwwwwwwwwwwwwwwww
166デフォルトの名無しさん:2007/11/18(日) 20:58:04
で、別にselfはもういいでしょ。
見る人によって利点でもあり欠点でもあるってことで。
すれ違いのことで喧嘩するとか、まともな大人とは思えませんよ。
167デフォルトの名無しさん:2007/11/18(日) 20:58:57
>>165
小学生ですかあなたは。
168デフォルトの名無しさん:2007/11/18(日) 20:59:14
だいたいさあ、Python全肯定しちゃう人ってなんなの?Pythonと自我が融合してんの?
169デフォルトの名無しさん:2007/11/18(日) 21:00:17
しかしキーワード増やせなんてプログラマの発言とは思えんな
170デフォルトの名無しさん:2007/11/18(日) 21:01:18
ようするにですね、僕がselfを持ち出したのは、>>166の結論を
selfに対してではなく、ブレースvsインデントの議論に対して
導ければと思ってなのです。ですからスレ違いではありません。
171デフォルトの名無しさん:2007/11/18(日) 21:01:38
selfに欠点があるのは認めるよ。
そして星の数ほどの人間が、selfをなくす提案をしてきたんだ。
でもそのたびに、self不要論者は論破されて負け続けてきた。
そして誰も、selfなくせと言わなくなりましたとさ。
172デフォルトの名無しさん:2007/11/18(日) 21:02:05
別にselfをキーワードにしなくても、省略可能にすることは可能だろうけどね。
173デフォルトの名無しさん:2007/11/18(日) 21:06:35
もう俺言語を作るしかない。基本は型無しのC#。これ。
174デフォルトの名無しさん:2007/11/18(日) 21:08:55
>>171 からすると、
ここでselfについて議論しているヤツらはソースが英語だからと言ってチェックを怠ったヤツらの集まりということで終了。
175デフォルトの名無しさん:2007/11/18(日) 21:17:14
残念。2chはその英語のソースをチェックしない人たちの集まりなのです。
176デフォルトの名無しさん:2007/11/18(日) 21:18:24
まあFAQなんだけどな。

http://www.python.org/doc/faq/general/#why-must-self-be-used-explicitly-in-method-definitions-and-calls

ゆとり脳のためにFAQを翻訳してやるけど,「よくある質問」ってやつだよ。
英語を勉強して5年後くらいに読んでみれば?(wwwwwwwwwwwwwwwwwww
177デフォルトの名無しさん:2007/11/18(日) 21:21:42
虎の威を借る狐だな
178デフォルトの名無しさん:2007/11/18(日) 21:25:14
頭のないゆとりよりはマシだろう
179デフォルトの名無しさん:2007/11/18(日) 21:25:27
>>176
理由の1および3は、メソッド定義の第一引数のselfが好ましい理由の説明に
なってないな。
常にself.memberと書かせたほうがいい理由にしかなっていない。そしてそれは
別に否定はしない。

理由の2については、clazz.mem(obj, arg)と書けていいよ、と言っているわけだが、
別にメソッド定義でわざわざselfを手で書かせなくとも、そう呼び出せるように
設計することは可能なわけで、理由としては非常に弱いと言わざるを得ない。
180デフォルトの名無しさん:2007/11/18(日) 21:30:41
ところで159は自分が場合分けしてる事に気づいてない模様
181デフォルトの名無しさん:2007/11/18(日) 21:31:43
バカがひとりいると、バカを納得させるために細かいルールを作る必要がある。
バカは大抵暇だから、バカほど声が大きい。バカには仕事をさせない方が組織の能率が上がるから。
それがウザイので、他の言語に行ってくれていいよ。
182デフォルトの名無しさん:2007/11/18(日) 21:34:53
>>176
次からは、生半可な自分の知識で煽って壮絶に敗北する前に、そのURLを提示するんだ。

今回の経験を生かせば、お前もようやくゆとり脱出の足がかりが出来たことになるよ。
183デフォルトの名無しさん:2007/11/18(日) 21:36:31
>>180
Pythonは第一引数のselfのありなしでインスタンスメソッドかどうかを
判別しているのではない、でしょ。
つまりselfは冗長で余計。
selfをsとか書けたからといって、Python信者が好きな可読性とやらが損なわれるだけ。
184デフォルトの名無しさん:2007/11/18(日) 21:37:25
>>182
問題提起する前にFAQを先に読んどけよ(wwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwww
185デフォルトの名無しさん:2007/11/18(日) 21:38:16
草はやし過ぎ
>>179に自分で回答できるぐらいの頭はないのか
無いんだろうな
186デフォルトの名無しさん:2007/11/18(日) 21:38:46
>>181
今ここに実例がいますしね(あなたのことではありません。念のため)
187デフォルトの名無しさん:2007/11/18(日) 21:40:47
あえて言おう、ググレカス、と(wwwwwwwwwwww
188デフォルトの名無しさん:2007/11/18(日) 21:41:10
>>184
知ってる?
2chで煽りに使われるwの数は、自身の悔しさ度が反映されるんだよ?

実際どんどん多くなってるでしょ?イライラしすぎでみてらんない。
189デフォルトの名無しさん:2007/11/18(日) 21:42:09
>>186
そう、あなたのことです。(念のため)
190デフォルトの名無しさん:2007/11/18(日) 21:45:44
自分のことを言われていると思ったのか…
191デフォルトの名無しさん:2007/11/18(日) 21:47:19
こういう時のために2ch先人たちは「オマエモナー」という予約語を用意してくれているようですね。
192デフォルトの名無しさん:2007/11/18(日) 21:48:14
>>190
Pythonのルールに従えないバカに言われたくないだけ
193デフォルトの名無しさん:2007/11/18(日) 21:49:31
Pythonを使う際にルールに従うのは当たり前ってか、そうじゃなきゃ使えない
言語設計に疑問を持つのは別の次元の話

Python信者は頭が良すぎて感心するわ
194デフォルトの名無しさん:2007/11/18(日) 21:51:36
じゃあ、宴も酣ですし、そろそろ>>170に、ここらインデントの議論に導いてもらいましょうか。
195デフォルトの名無しさん:2007/11/18(日) 22:14:00
170は逃げたようです
196デフォルトの名無しさん:2007/11/18(日) 22:34:23
逃げたんじゃないよ、
FAQを読んでるんだよ(wwwwwwwwwwwww
197デフォルトの名無しさん:2007/11/18(日) 22:37:32
(w クンは黙っててください。息が草臭いです。
198デフォルトの名無しさん:2007/11/18(日) 22:38:32
(wも予約語にすればいいんじゃね?ww
199デフォルトの名無しさん:2007/11/18(日) 22:41:32
    _, ._
  ( ・ω・) んも〜
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)wvwwWWwvwwWwwvwwwwWWWwwWw
200デフォルトの名無しさん:2007/11/18(日) 23:40:38
草刈りなんてしてないでインデントの議論に導いてくれよ>170
201デフォルトの名無しさん:2007/11/18(日) 23:48:24
私は170ではありませんまので、その問いは意味が不明です。
202デフォルトの名無しさん:2007/11/19(月) 00:42:35
個人的にself以外の文字列をselfに使ってる人居ませんか?
203デフォルトの名無しさん:2007/11/19(月) 00:48:31
myがいいね。my希望
204デフォルトの名無しさん:2007/11/19(月) 02:52:07
まず、Pythonにあるのは関数で、メソッドではない。
obj.method という式は、 class.method の第一引数に obj をbindしている。
なので、
m = obj.method
m()
とするだけで delegate になる。
205デフォルトの名無しさん:2007/11/19(月) 03:01:04
次に、selfを省略できないワケ。
動的言語は、オブジェクトのメンバがコンパイル時に決まらない。
変数の参照で、その変数がローカル変数なのかメンバ変数なのかが
関数の定義を見るだけで区別できないのは非常に危険なので、メンバ
変数への参照はローカル変数への参照から区別しなければならない。

Rubyはメンバ変数を区別するのに専用の記号とルールを用意したが、
それはあまりPythonicでは無いだろう。
206デフォルトの名無しさん:2007/11/19(月) 10:43:59
>>204
@classmethodとか書かせるし、チュートリアル等のドキュメントで
しっかり「メソッド」と書いてあるのに、
>Pythonにあるのは関数で、メソッドではない。
というのはどういう意味で言ってるんだ?
207デフォルトの名無しさん:2007/11/19(月) 11:53:41
↓こういう風に書けるってことだと思うが、
本当のところは本人に聞いてけろ。

class ClassA:
    def __init__(self):
        self.x = "hello"
    def methodB(self):
        print "B:", self.x

def funcC(self):
    print "C:", self.x

ClassA.methodC = funcC
funcB = ClassA.methodB

a = ClassA()

a.methodB()
funcB(a)

funcC(a)
a.methodC()
208デフォルトの名無しさん:2007/11/19(月) 12:18:17
なるほど、意図は理解した。
JavaScriptでもそのように書けるが、JavaScriptでは引数のthisは書かなくていいな。
209デフォルトの名無しさん:2007/11/19(月) 15:16:26
>Rubyはメンバ変数を区別するのに専用の記号とルールを用意したが、
>それはあまりPythonicでは無いだろう。

オレはこれが嫌いでRubyやる気無くした(ww。

関数っつーか,厳密に言うと「呼び出し可能オブジェクト(callable object)」だと思う。
ゆとり脳に理解不能な話題はやめてさ,そろそろインデントの議論に戻らないか?
210デフォルトの名無しさん:2007/11/19(月) 19:34:17
>Rubyはメンバ変数を区別するのに専用の記号とルールを用意したが、
>それはあまりPythonicでは無いだろう。

privateなメンバはアンダーバーを二つつける、という、割とよく似た性質のルールがPythonにもありますけど。

Pythonicでは無いから、とか意味不明な理由を持ち出すのは止めといたほうが。
211デフォルトの名無しさん:2007/11/19(月) 19:36:35
>>202
Python3.0になったら「俺」にする予定
212デフォルトの名無しさん:2007/11/19(月) 23:18:06
>>210
そのルール知らなくても、private使わないでプログラム書くのは簡単。
そのルール知らなくても、他の言語のプログラミング経験があれば
そのルールを使ったプログラムを読むことが可能。
それがRubyやPerlの「知らなきゃ読めない」ルールとの差。

Python方式でもRuby方式でも実現できることを、Python方式で
実現しているということに、「Pythonicだから」という以上の理由が
何故必要?
213デフォルトの名無しさん:2007/11/21(水) 00:26:15
>>212
あのさぁ、その「知らなきゃ読めない」とかも意味不明だってことに気づいてないでしょ。

例えば、"リストの内包表記"を知らなくて読むことが書くことが出来るか?
出来ないんだよ。

もし「それぐらい推測出来る」とかバカ言うなら、Rubyの@つけるルールだって推測できるだろ。



>Rubyはメンバ変数を区別するのに専用の記号とルールを用意したが、
>それはあまりPythonicでは無いだろう。

第一、210のレスは↑に対するレスだって理解できてる?

Rubyのようにメンバ変数を区別するのに専用の記号とルールを用意するりはPythonicじゃないとかアホ言ってる奴に
Pythonにも既に似たようなルールがあることを教えてやってんだよ。わかる?
お前のレスの意味不明さが。

次はせめて中学校卒業してからレスしてな。
214デフォルトの名無しさん:2007/11/21(水) 00:31:15
インデントは・・・
215デフォルトの名無しさん:2007/11/21(水) 00:33:40
インデントはとても合理的だけど、
ブレースによる制御構造も混在しててもいいんじゃないかと思う。
216デフォルトの名無しさん:2007/11/21(水) 00:41:45
>>213
イタタタタ(wwwwwwwwwwwwww
217デフォルトの名無しさん:2007/11/21(水) 04:22:38
関数の右とかifやwhileの右とかの「:」も知らなきゃ書けん罠
218デフォルトの名無しさん:2007/11/21(水) 07:43:36
>>213
Java系言語一つでも知ってたら、 self.foo を見て、これは this.foo だと気づく。
@foo を見ても判らんだろ?

self.__foo を見て、private変数だと判らなくてもプログラム読めるだろ?
しかも、なんとなく他人が気軽に触っちゃいけない雰囲気かもしだしてるだろ?

内包表記も、他の言語で内包表記見たことあるなら一瞬で判るし、
そうでなくても後でリストとして利用している部分を見れば雰囲気で判るはずだ。

それでもって、private変数もリストの内包表記も、使わなくても普通に
プログラム書けるだろ?なら特殊ルール導入しても良いのがPythonic
なんだよ。
論点は特殊ルールの存在自体ではなくて、その特殊ルールを知らなくても
プログラムが読める&使わなくても普通に書けるって事。
219デフォルトの名無しさん:2007/11/21(水) 09:38:00
三行でおk
220デフォルトの名無しさん:2007/11/21(水) 10:55:11
>>218
> Java系言語一つでも知ってたら
メジャーな言語との類似性から来る類推性、分かりやすさ、
習得しやすさおよび学習・移行の容易さを重視するんなら、
現状では好む・好まざるに関わらず、C系のシンタクスがベストだよ。
そういう意味ではself.fooではなくthis.fooのがずっといい。
selfをmeとか書いてもいいなんてのは論外だ。

__init__だの__call__だのが@と大して違いがあるとも思えんな。
単にPerlチックな記法が嫌いなだけじゃないのか。
221デフォルトの名無しさん:2007/11/21(水) 10:59:04
既存の言語に似せていないのに無根拠に「こっちのが分かりやすいだろ」と
Pythonicという名前の宗教を押し売りするんだよねえ

既存のメジャーな言語に似ているものが多くの人にとって読みやすく
理解しやすいことは、自明なわけだが
222デフォルトの名無しさん:2007/11/21(水) 11:06:23
メジャーな言語ってこうですか?わかりません><

<main>
    <print>Hello, world!</print>
</main>
223デフォルトの名無しさん:2007/11/21(水) 11:17:36
SGML系はプログラミング言語じゃねえし、
プログラミング言語じゃない言語で一番メジャーなのは英語だろw
224デフォルトの名無しさん:2007/11/21(水) 11:27:21
XSLTはプログラミング言語と言って差し支えない気がする
225デフォルトの名無しさん:2007/11/21(水) 17:26:10
メジャーなのに似てるかとか読みやすいとかどうでもいいが
_と@が同じとか言う奴はヤバい
226デフォルトの名無しさん:2007/11/21(水) 18:22:11
なんか>>218を見て、作って欲しいプログラムの要件を説明するときに
「ここをこうやって (画面の前でぐっと握り拳を握る) ぐーっといろいろやって
(拳に力を込めてゆっくり動かす) ぱーっと結果を出すだけ (力を抜いて掌を開く)
でいいんだけど、簡単にできるよね」

とやってくれたオヤジを思い出した。
いや思いこみはわかるけど、わからんてばw
227デフォルトの名無しさん:2007/11/21(水) 20:29:51
>>220
>__init__だの__call__だのが@と大して違いがあるとも思えんな。
だーかーらー、コンストラクタというものを知っている人なら __init__ を見て
それがコンストラクタだって推測しやすいだろ? @ で何を推測しろと?
228デフォルトの名無しさん:2007/11/21(水) 20:39:27
>>227
コンストラクタならクラスと同名のが多くのプログラマにとっては
分かりやすいに決まってるだろうに

__init__()と__new__()という一見似ているが違うものがあって……なんちゅうことを
何にも知らない奴が読んで「推測」できるかw
229デフォルトの名無しさん:2007/11/21(水) 20:48:21
そもそも、Pythonicってのが宗教だから意味ないと言うのなら、
Perl, Python, Ruby が平行して存在している意味がない。

end がイヤならPythonにすれば良いし、self. がイヤなら Ruby にすれば良いし、
どっちもイヤなら自分で新しい言語作ればいい。
230デフォルトの名無しさん:2007/11/21(水) 21:03:18
>>228
そこまで細かい部分推測しなくても読めるじゃん。
__new__知らなくてもクラス書けるじゃん。

クラスもオブジェクトな言語でコンストラクタをクラス名と同じにすると、
クラス名が変わったときにコンストラクタで混乱するじゃん。

それに、他の言語のマネルールをいろんな言語から持ってきたら結局
判りにくくなる。それなら最初からC++なりJava使えば良い。
__init__とか__call__とか、言語にとって特殊な意味のある名前は__foo__の
形をしているというメタルールを一つ導入するだけで、覚えないと
いけない予約語を大幅に減らせる。
231デフォルトの名無しさん:2007/11/21(水) 22:14:35
んだから、__fooだの__bar__だのの意味、あんたの言うメタルールは、
教わらなきゃわからんだろ
@と何の違いがあるんだ?
232デフォルトの名無しさん:2007/11/21(水) 22:28:05
>>225
>_と@が同じとか言う奴はヤバい

激しく同意。まったく意味不明。
233デフォルトの名無しさん:2007/11/21(水) 23:10:33
>>221
メジャーな言語に似せるつもりならインデントなんてやらねーよ。
234デフォルトの名無しさん:2007/11/21(水) 23:25:43
#!/bin/env ruby
def class Hage
  fuga = 2

  def hoge
    fuga = 1
  end

  def hige
    p fuga
  end
end

h = Hage
h.hige
f = Hage
f.hoge
f.hige
235デフォルトの名無しさん:2007/11/21(水) 23:41:06
Ruby って色んな所で躓くよな
まったく初心者向けじゃない
236デフォルトの名無しさん:2007/11/21(水) 23:48:42
RubyのことはRubyのスレでやっとくれ
237デフォルトの名無しさん:2007/11/25(日) 15:08:57
しばらくぶりに来てみたらスレが伸びてるw
238デフォルトの名無しさん:2007/11/25(日) 19:47:32
>>231
こういうやつは、マニュアルとかは読まないで全て始めるのか?
分かんないもの出てくりゃ調べればいいじゃん。
自分が最初にPythonの__やRubyの@に馴染めませんでしたって、
過去の恥を晒してるだけじゃん。
239デフォルトの名無しさん:2007/11/25(日) 20:09:43
バカがいるとスレが伸びる(wwwww
バカが居なくなったからスレが沈静化した(wwwwwwwwwwwwwwwwwwwwwwww
240デフォルトの名無しさん:2007/11/25(日) 22:36:44
延ばすな馬鹿
241デフォルトの名無しさん:2007/11/29(木) 23:57:38
止まっちゃった・・・
242デフォルトの名無しさん:2007/12/01(土) 00:09:47
本当に止まっちゃったね。

インデントについての話じゃなく、selfの是非とか話題がそれると盛り上がるところを見ると、
Pythonのインデントによる制御構造って言うほど悪くないんじゃない?どっかの専門家が
言った意見を素人がそのまま自分の意見として言っているようにしか感じないね。
243デフォルトの名無しさん:2007/12/01(土) 00:42:40
慣れの問題でしかないからな
要は構造が示せればいいだけなわけだし
括弧でもインデントでもフローチャートでも

インデント使うと括弧の対応を自動でチェックしたりしてくれない
素のエディタでもさほど問題にならない、程度の事じゃないかな
244デフォルトの名無しさん:2007/12/01(土) 06:12:37
実際 Python 使ってみると
インデント崩れで起こるトラブルよりも
それ以外の原因でいっぱいトラブルからなぁ
245デフォルトの名無しさん:2007/12/01(土) 08:13:34
>>244
ウンウン、頭が悪いといろいろ大変だよね。
246デフォルトの名無しさん:2007/12/01(土) 09:28:34
一番トラブルのはcopy忘れだな
247デフォルトの名無しさん:2007/12/02(日) 01:06:30
悪くはないけど良いとも思わないってのが正直なところ
実際にはどうでもいい
248デフォルトの名無しさん:2007/12/02(日) 01:17:37
インデントは全然苦にならないんだけど式と文が区別されてて
代入したものをすぐ次の用途に使うときとかに面倒なのが気になる
249デフォルトの名無しさん:2007/12/02(日) 09:29:59
>>248
>代入したものをすぐ次の用途に使うときとか

そんなuglyなコードを書く人とは一緒に仕事したくありませんね。
250デフォルトの名無しさん:2007/12/02(日) 09:50:37
一度代入したら十年は寝かさないとね
251デフォルトの名無しさん:2007/12/02(日) 10:03:28
そうじゃなくてさ。
たとえば、代入と評価は分けて書いた方がいいよね。
252デフォルトの名無しさん:2007/12/02(日) 10:18:16
おめーの次のセリフはこうだ
「ワンライナーを侮辱するなJOJO」
253デフォルトの名無しさん:2007/12/03(月) 23:37:47
ワンライナーを侮辱するなJOJO!・・・ハッ!
254デフォルトの名無しさん:2007/12/04(火) 10:05:16
どうも。インデントは、どうせ言われなくてもやるから、それほどは
違和感を感じてない初心者です。

でも文法的にインデントをブロックの識別に利用しているのなら、
IF 文の末尾に : (コロン) を付けなくても、次の行がインデントして
るならブロック開始なんだから : はいらない子なんじゃないの?
……という疑問が拭えません。

どうして : があるのか、どなたかすっきりさせてください。
255デフォルトの名無しさん:2007/12/04(火) 10:11:15
if condition == True: break;

みたいな書き方をしたい場合はある。こういう場合はコロンがないと超不便。
256デフォルトの名無しさん:2007/12/04(火) 10:29:49
でもそれは : じゃなくて ; でも同じだからな
次の行に回した時にも省略できない理由にはならないし
257デフォルトの名無しさん:2007/12/04(火) 11:43:00
必要か必要でないかだけを言えば必要ない。

でもこの二元論は、
forいらねwhileだけでいいだろとか、
他の言語いらね真のプログラミング言語Lispが既にあるとか(w
そういうたぐいのものに近い。

コロンが使われている理由を探すとすれば、
ABC言語の影響を受けているというのと、ある方が見やすいだろっていう辺りになる。
ttp://mail.python.org/pipermail/python-list/2000-December/063055.html
258デフォルトの名無しさん:2007/12/04(火) 21:07:17
コロンが付いている理由はエディッタのオートインデントの実装が楽だからだと Guido がどっかで言ってた記憶が
259デフォルトの名無しさん:2007/12/04(火) 21:07:39
if の : はなんとか納得できるんだけど
else の : はなくてもいいような気がする
260デフォルトの名無しさん:2007/12/04(火) 21:15:38
あーその話で思い出したけど、
forにelse使えるなんて、最初何かの間違いかと思ったよ
261デフォルトの名無しさん:2007/12/04(火) 21:20:26
>>257
>forいらねwhileだけでいいだろとか、
>他の言語いらね真のプログラミング言語Lispが既にあるとか(w

小さい悩みだなw
そんな事言われて気にしてるなよ…
262デフォルトの名無しさん:2007/12/04(火) 21:23:27
>>260
forとかwhileを抜けたあとで
全部の要素ループして抜けたのか
途中で中断して抜けたのか
知りたいときって結構あるんだよね
Pythonは痒いところに手が届きますな
263デフォルトの名無しさん:2007/12/05(水) 01:18:44
>>262
>Pythonは痒いところに手が届きますな

細かいところまで練られている感じがするよね。
Pythonの良いところだと思う。
264254:2007/12/05(水) 09:43:14
>>255
そういう書き方が出来なくても、Python 的には困らない気がします。

>>257
良いポインタの紹介ありがとうございます。やはり冗長だと思ってる
人はいるのですね。

それにしても、キータイプ数を減らすのではなく、冗長性を減らすの
でもなく、見易さを求めるのが Pythonic ってことなんだと受け取って
よいのでしょうか。

Python を触り始めて、面白いとは思っていますが、そのコンセプトが
まだ掴めなくて……ちょっともどかしいカンジの初心者です。
265デフォルトの名無しさん:2007/12/05(水) 11:10:26
悟れ。
266デフォルトの名無しさん:2007/12/05(水) 13:18:56
import this
267デフォルトの名無しさん:2007/12/05(水) 21:51:41
かゆい所に手が届くくらい練られてるならswitchを作れ!
手が届く範囲だけ痒いって言ってるだけだろ自己満足だ!
268デフォルトの名無しさん:2007/12/05(水) 22:10:29
switchはelseifで大抵代用可能だが
elseifはswitchで代用不可能なケースが多い
269デフォルトの名無しさん:2007/12/05(水) 22:45:56
>>267
目の玉がかゆいのなら
目の玉を取り出さないと掻けないぞ(wwwwwwwww
270デフォルトの名無しさん:2007/12/05(水) 22:49:44
271デフォルトの名無しさん:2007/12/06(木) 12:32:15
:が見やすいかどうかはフォントによるな。
次はエディタのフォントも言語仕様になるのかな。
272デフォルトの名無しさん:2007/12/06(木) 12:42:02
>>268
代用できるっちゃできるが、
if c == 1:
elif c == 2:
elif c == 3:
とかいうif〜elifの羅列は、switchのほうがずっと綺麗に書けるでしょ。
if〜elifだと、変数名を変えたら分岐の数だけ直さなければならなくなる。
「他で代用できるものは要らない」と言うのなら、Pythonは要らないものだらけだよ。
273デフォルトの名無しさん:2007/12/06(木) 12:53:00
Pythonっていろいろ理由付けてるけど、
最終的にはGuidoの好みだからなぁ。
まともに反論してると馬鹿を見る
274デフォルトの名無しさん:2007/12/06(木) 13:47:59
>>272
それをswitchで書き換えてずっと綺麗になった!と言うのはセンスを疑う
275デフォルトの名無しさん:2007/12/06(木) 13:48:20
>>271
>次はエディタのフォントも言語仕様になるのかな。

なるわけないだろバカじゃね???(wwwwwwwwwwwwwwwwww
276デフォルトの名無しさん:2007/12/06(木) 14:07:44
>>272
> 変数名を変えたら

そういう状況は、分岐の形式以前の問題になると思う
277デフォルトの名無しさん:2007/12/06(木) 16:10:05
>>273
ソースが公開されているんだし、作者の意向に反してこうした方が良いと思える点があるんなら、自分で改良すればいいんじゃないかな?
278デフォルトの名無しさん:2007/12/06(木) 22:58:53
>>277
それならPythonベースにする必要はないんじゃないかな?
十分ストレスがない言語が別にあればそれを使えばいいんじゃないかな?
279デフォルトの名無しさん:2007/12/06(木) 23:06:48
>>274
まぁ結局センスの問題だわな
280デフォルトの名無しさん:2007/12/06(木) 23:08:23
たいてい
if c == 1:
elif c >= 2 and c <= 8:
elif c == 9:
みたいな使い方することの方が多いからなぁ
rubyのswitchはそれが出来るけど
281デフォルトの名無しさん:2007/12/06(木) 23:24:01
>>273
>Pythonっていろいろ理由付けてるけど、
>最終的にはGuidoの好みだからなぁ。

Guidoの理由付けに反論できるくらいなら、
Pythonを越える言語をデザインできるセンスがあるってことだと思う。

せいぜいがんばって。
282デフォルトの名無しさん:2007/12/07(金) 00:10:50
それくらいは割と誰でも出来そうだな。
その後のモチベーションをキープするのが一番面倒なんだよ。
283デフォルトの名無しさん:2007/12/07(金) 00:23:39
安奈お前の愛の火はまだ燃えているかい
284デフォルトの名無しさん:2007/12/07(金) 01:04:58
>>280
それがswitchでできてもswitchの意味ないわな。
285デフォルトの名無しさん:2007/12/07(金) 04:14:01
if c == 1:
elif c == 2:
elif c == 3:

これってかなりダサいプログラムだよ
普通は関数テーブル作ってcでdispatchだろ
286デフォルトの名無しさん:2007/12/07(金) 08:06:57
エディタのマクロに「行末セミコロンの後はアウトデント」という俺ルールを仕込んでみた
287デフォルトの名無しさん:2007/12/07(金) 08:53:31
じゃあpassのあとに(ry
288デフォルトの名無しさん:2007/12/07(金) 09:33:09
じゃあオレは
セミコロンキーに改行+アウトデントを割り当てときますね
289デフォルトの名無しさん:2007/12/07(金) 10:09:41
>>282
>それくらいは割と誰でも出来そうだな。

がんばって俺言語作れよ。
言いっぱなしは と て も 恥ずかしいぞ(www
290デフォルトの名無しさん:2007/12/07(金) 12:08:50
>>289
恥ずかしいのはお前だよ。本当に丸出しだな。
そんなの大抵のプログラマなら一度は通る道だぜ。
291デフォルトの名無しさん:2007/12/07(金) 12:21:53
というか、俺言語を作った事が無いプログラマってそんなに多いのか?
292デフォルトの名無しさん:2007/12/07(金) 12:43:08
俺言語を作っても、多くの人に受け入れられるものは少ないんじゃない?それができるのならRubyやPythonの開発者のように、それで食っていけるだろうし。
まぁ、できなくてもプログラマとして食ってるヤツは嫌というほど見てきたし、そんなムキになるほどのことでもないような気がするんだけど。ボクはできない方だな (自爆)
293デフォルトの名無しさん:2007/12/07(金) 12:56:52
> それで食っていけるだろうし

えっ、他の仕事もしてるんじゃないの?
294デフォルトの名無しさん:2007/12/07(金) 13:13:43
ぼくちんはただいまヒキコモリちうなんですが、
ぱいそんをべんきょうしているので
いずれはGoogleにはいって、
いちねんくらいでいっしょうつかいきれないくらいのおカネをかせぐつもりでいます!!!
こんなぼくちんをおうえんしてくださいね!!!!!!
295デフォルトの名無しさん:2007/12/07(金) 14:05:11
> えっ、他の仕事もしてるんじゃないの?
「それで食っていける」と「それだけで食っていける」は意味が違うと思います。
296デフォルトの名無しさん:2007/12/07(金) 16:20:46
Pythonに文句あるなら俺言語作れw
297デフォルトの名無しさん:2007/12/07(金) 16:30:32
>>292
この流れでは多くの人に受け入れられるかどうかは話してないだろう。
ユーザ多い=良いとか言ってる奴はPerlあたりの真似しまくって結果Perl以下になって
売りは日本製だけ〜みたいなもん平気でつくりそうだ

あとユーザ数で語るならRubyじゃなくてPerlを出さないとお里が知れちゃうゾ懿」?
298デフォルトの名無しさん:2007/12/07(金) 18:32:33
俺言語の話になってることがアホすぎwww
299デフォルトの名無しさん:2007/12/07(金) 19:29:16
>>295
この場合は、
「それで食っていける」=「それで食えるだけの収入がある」=「それだけで食っていける」
じゃないか?
300デフォルトの名無しさん:2007/12/07(金) 21:33:16
switch文でbreak無しのcaseで制御が下に落ちていくようなのは
どうやってelseifで書くの?どうせそんな糞プログラム書くなとか
言って正当化されるのがオチだろうけど!
301デフォルトの名無しさん:2007/12/07(金) 21:34:21
>>293

「それだけで食っていける」!=「その仕事しかしていない」
じゃないかな?
302デフォルトの名無しさん:2007/12/07(金) 22:21:28
>>300

if hoge == 1:
  HOGE
elif hoge == 2:
  FUGA
elif hoge == 3 OR hoge == 2:
  if shine:
    SHINE
  else:
    IKIRO
else:
ORZ
303デフォルトの名無しさん:2007/12/07(金) 22:29:45
>>300

if case1:
 CASE1
if case2:
 CASE2
if case3:
 CASE3
...

ということじゃなくて?
304デフォルトの名無しさん:2007/12/07(金) 23:31:44
>300
結局その記法ってバグなのか意図なのかが
分かりにくくなることが多いし
できるようにするメリットが少ないって判断じゃなかったか?
305デフォルトの名無しさん:2007/12/07(金) 23:34:17
>>303
いや、いちいち break で脱出するコードにしないと次の case もそのまま
実行される仕様の糞言語があるんだ
306デフォルトの名無しさん:2007/12/08(土) 01:15:59
>>300はアレだが>>302もちょっとどうかと思うのは俺だけではないはずだ
307デフォルトの名無しさん:2007/12/08(土) 01:30:55
>>302
それで納得できるのかお前は
308デフォルトの名無しさん:2007/12/08(土) 03:02:42
やっぱRubyだな
309デフォルトの名無しさん:2007/12/08(土) 03:36:02
このタイミングでこういうコメントを入れるから、「こういう書き方もできます」というシンタックスシュガーに踊らされてばかりで
きちんとしたドキュメントも書けない上に、生産性がないのが日本のRubyユーザだと思われるんじゃないかな?
310デフォルトの名無しさん:2007/12/08(土) 08:39:02
Rubyはソースがドキュントだからってことになってるからなぁ
生産性も糞もないよなぁ
311デフォルトの名無しさん:2007/12/08(土) 09:40:24
趣味で作ったプログラムを
1年以上経ってからも
保守する気になる言語

ソレがPythonだっただけだ
312デフォルトの名無しさん:2007/12/08(土) 10:05:22
どの言語で書いても保守する気になるけど?
313デフォルトの名無しさん:2007/12/08(土) 10:12:35
俺はドMなのでRubyで小汚く書いたソースコードでも泣きながら保守するぜ!
314デフォルトの名無しさん:2007/12/08(土) 10:25:27
今まで見た中でこれは酷いと思ったのがZopeなんだが・・・・
315デフォルトの名無しさん:2007/12/08(土) 11:23:17
>>310
Rubyの生産性がないと言っているんじゃない。日本のRubyユーザの生産性がないと言っている。
316デフォルトの名無しさん:2007/12/08(土) 11:42:59
python厨って困るとruby叩きに走るよな。
それも必ず「糞」とか「汚い」とかの言葉が入る。
317デフォルトの名無しさん:2007/12/08(土) 12:42:48
>>316
自惚れるなよ
318デフォルトの名無しさん:2007/12/08(土) 13:14:09
Rubyの話題はどうでもよくね?
319デフォルトの名無しさん:2007/12/08(土) 14:13:59
そろそろインデントの話に戻ろうぜ
320デフォルトの名無しさん:2007/12/08(土) 14:32:22
ム板でインデントのないコードを書き込む奴はDQN

それと、全角インデントにする野郎は氏んでいいよ^^
321デフォルトの名無しさん:2007/12/08(土) 14:34:49
>>320
そういう話だっけw
322デフォルトの名無しさん:2007/12/08(土) 14:35:52
それは、行頭の空白文字列を nbsp に変更するプログラムを
Python と Ruby と Haskell で書いて比較するというお題と
考えてよろしいかな?

↓じゃあ、まず Python から
323デフォルトの名無しさん:2007/12/08(土) 15:46:07
しーん。。。
324デフォルトの名無しさん:2007/12/08(土) 15:54:58
s/^[ ]*/&nbsp;/g
325デフォルトの名無しさん:2007/12/08(土) 16:39:31
話しそれるけど、これって行頭だけでなく全部やっちゃってOKじゃね?
326デフォルトの名無しさん:2007/12/08(土) 16:43:54
>>324
TAB は良いんだっけ?
327デフォルトの名無しさん:2007/12/08(土) 16:53:37
>>326
その前にスペース4個でも8個でも1個の になるって問題点が>>324にはあるぞ
328デフォルトの名無しさん:2007/12/08(土) 16:53:52
お楽しみ中のところ申し訳ないが
ソースを追試する側としては迷惑だからやめてくれ
半角空白でも画面に出ないだけでデータは残ってるから
こぴぺするだけで直るんだが
&nbsp;にされると復元操作が必要になる
復元プログラムをセットで提示してもらわにゃ
329デフォルトの名無しさん:2007/12/08(土) 18:06:47
ほえ?
330デフォルトの名無しさん:2007/12/08(土) 21:20:23
>>328のコピペ環境

&lt; → <
&gt; → >
&amp; → &
&nbsp; → &nbsp; (←何故か変換されない)
331デフォルトの名無しさん:2007/12/09(日) 03:06:42
かちゅーしゃ使ってると、全角インデントが一番読みやすいんだけど
332デフォルトの名無しさん:2007/12/09(日) 03:08:12
>>324は[ ]*が0回以上の繰り返しだから結論としてインデント消えてないか?
あと、キャレット付いてるからgオプション意味ない
333デフォルトの名無しさん:2007/12/09(日) 03:09:39
>>332
いろいろ間違ってる
334デフォルトの名無しさん:2007/12/09(日) 03:22:36
>>271
3.0でバッククオートがなくなる理由は`フォントによっては見づらいから`らしい
335デフォルトの名無しさん:2007/12/09(日) 03:35:15
>>334
フォント、マジだったのかwwww
確かにそこは見にくいことがあるw
336デフォルトの名無しさん:2007/12/09(日) 03:46:38
>>333
うちの環境のsedで試したところ、インデント消えて一律行頭&nbsp;になったけど?
ただし&をエスケープする必要があったけど
337デフォルトの名無しさん:2007/12/09(日) 03:52:26
>>336
sed知らんがな。
結果うp。
338デフォルトの名無しさん:2007/12/09(日) 12:28:44
>>332,336
すまん。酔っぱらって勘違いしてた。
339デフォルトの名無しさん:2007/12/24(月) 01:15:37
self 論議乗り遅れた('A`)

Pythonじゃなくて失礼。
Delphi だと、Selfはかけるけど、with Hoge do 内くらいしか使わないんだよね。

Pythonみたいに、宣言が必要ない言語だと、Self相当は必須なんだね。
よくわかった。

とはいえ、Self必須は面倒だな。
スクリプト言語なのに字数が明らかに多くなる・・・。(perlみたいなのも勘弁だが)
わかりやすい点がいいけどさ・・・


:のつけ時は、いっつも、忘れてわからなくなる。
340デフォルトの名無しさん:2007/12/24(月) 01:31:57
>>3
($#9737◇$#9737)
341デフォルトの名無しさん:2007/12/24(月) 01:32:44
$#9737;
342デフォルトの名無しさん:2007/12/24(月) 08:54:54
selfやな奴は普通に s とか _ とか使えば良いと思う。
とくに、人が書き足したりするようなコードでなければ、好き勝手書けば良いと思う。
343デフォルトの名無しさん:2007/12/24(月) 22:37:26
>>342
それじゃあインデントでわざわざ記法を強制するような
Pythonの思想に反するんじゃね??なんでもいいなら
そもそもインデントだっていらなくね?
344デフォルトの名無しさん:2007/12/24(月) 22:39:38
凄い論理だ
345デフォルトの名無しさん:2007/12/24(月) 23:08:44
>>339
何か勘違いしてるような…。

使う使わないは兎も角、大概のOOPLにおいて
self や this みたいな「自身」を参照するものは
何らかの形で存在してる。

Pythonの場合の self 議論は
「メソッドの仮引数に self を明示的に書かなければならない」
ってところじゃないかと。
346デフォルトの名無しさん:2007/12/24(月) 23:12:56
だから "書けば" それでいいじゃん



.... 終了
347デフォルトの名無しさん:2007/12/25(火) 01:21:10
WindowsAPI
hoge(hWnd, xxx);
fuga(hWnd, yyy);
348デフォルトの名無しさん:2007/12/25(火) 01:45:19
それはハンドル
そしてAPIは言語じゃない
349デフォルトの名無しさん:2007/12/25(火) 04:45:10
WindowsAPIは、C言語レベルのAPIだからな。
ハンドル≒OOPのインスタンス=self という解釈なら正しいが、
そうすると、Python が、C言語レ(ry
350デフォルトの名無しさん:2007/12/25(火) 05:50:23
タイトル:Pythonに見られるインデントによる制御構造の是非
【糞スレランク:D】
直接的な誹謗中傷:0/349 (0.00%)
間接的な誹謗中傷:19/349 (5.44%)
卑猥な表現:2/349 (0.57%)
差別的表現:16/349 (4.58%)
無駄な改行:0/349 (0.00%)
巨大なAAなど:16/349 (4.58%)
同一文章の反復:1/349 (0.29%)
by 糞スレチェッカー Ver1.12 http://kabu.tm.land.to/kuso/kuso.cgi?ver=112

Dって微妙だな・・
351デフォルトの名無しさん:2007/12/25(火) 10:38:10
巨大なAAなど:16/349 (4.58%) ってソースコード貼り付けが誤判定されてる気がする
352デフォルトの名無しさん:2007/12/25(火) 22:01:58
タイトル:Pythonのお勉強 Part22
【糞スレランク:E】
直接的な誹謗中傷:0/488 (0.00%)
間接的な誹謗中傷:11/488 (2.25%)
卑猥な表現:8/488 (1.64%)
差別的表現:1/488 (0.20%)
無駄な改行:0/488 (0.00%)
巨大なAAなど:6/488 (1.23%)
同一文章の反復:2/488 (0.41%)
by 糞スレチェッカー Ver1.12 http://kabu.tm.land.to/kuso/kuso.cgi?ver=112
353デフォルトの名無しさん:2007/12/25(火) 22:07:42
>>352
またひとつ糞レスをつけおって・・・
354デフォルトの名無しさん:2007/12/25(火) 22:28:04
if hoge == fuga:
HOGE
else:
FUGA

if hoge == fuga: HOGE
else: FUGA

if hoge == fuga:
HOGE
elsif hoge == hemi:
FUGA
else:
HEMI

if hoge == fuga: HOGE
elsif hoge == hemi: FUGA
else: HEMI
355デフォルトの名無しさん:2007/12/27(木) 02:28:13
結局インデントでブロック指定するのは
たいして利点は無くて欠点が大きいでOK?
356デフォルトの名無しさん:2007/12/27(木) 06:10:08
欠点が無くて利点が大きい
357デフォルトの名無しさん:2007/12/27(木) 06:44:11
ONE WORD, FORCED INDENTATION OF THE CODE, THREAD OVER!!!!!!!!!!!!!!!!!!!
358デフォルトの名無しさん:2007/12/27(木) 09:11:04
インデントはともかくとして
pythonで書くとコードが綺麗になるのが好き
359デフォルトの名無しさん:2007/12/27(木) 21:12:06
言語仕様に頼らないときれいなコードを書けないおとこの人って・・・
360デフォルトの名無しさん:2007/12/27(木) 23:23:04
そうだね。Perl使いはみんな綺麗なコードを書くよね。
361デフォルトの名無しさん:2007/12/28(金) 03:39:25
インデント否定派の人はエディターで自動ディデントできないからって言うのが主な理由?
362デフォルトの名無しさん:2007/12/28(金) 09:38:20
ディデントって何?
ポリデントみたいな物か?
363デフォルトの名無しさん:2007/12/28(金) 09:47:07
インデントの逆
364デフォルトの名無しさん:2007/12/28(金) 10:53:19
アウトデント?

オフデント
バックデント
モドリデント
365デフォルトの名無しさん:2007/12/28(金) 10:57:03
デデンドモリ
366デフォルトの名無しさん:2007/12/28(金) 14:44:59
マジレスするとアンインデントだろ
367デフォルトの名無しさん:2007/12/28(金) 14:59:26
>>359
誰が書いてもある程度読みやすくなるようにできているのだよ。つまり、書き手よりも読み手を
重視しているんじゃねぇの? (でも、インデントの階層が深くなると、書いていて分かりづらく
なってくる。それも狙いかもしれんが。)
368デフォルトの名無しさん:2007/12/28(金) 16:13:28
>でも、インデントの階層が深くなると、

それは他の言語でも基本的には同じ問題で
そうなったら大抵は何か考え直すべきとされてるでそ
369デフォルトの名無しさん:2007/12/28(金) 16:37:37
Pythonもいろいろ工夫してるけど
へぼが書くとやっぱり読みにくい
370デフォルトの名無しさん:2007/12/28(金) 19:38:58
>>367
そんなに強制したいなら変数の命名規則も強制しろ。
そして変数の名前から型が決まるようにすればいい。
371デフォルトの名無しさん:2007/12/28(金) 20:59:40
つまり「ネストの深さ」にも「暗黙の制限」が
かかっているような言語仕様なんですね。
いくらでも深くネストできるけど、やりすぎちゃダメ!という…
372デフォルトの名無しさん:2007/12/28(金) 21:00:27
つシステムハンガリアン
373デフォルトの名無しさん:2007/12/28(金) 21:31:40
374デフォルトの名無しさん:2007/12/28(金) 21:50:46
ついでに関数とかメソッドとかブロックの中の行数も制限しようぜ。
5行以内に。
375デフォルトの名無しさん:2007/12/28(金) 22:27:39
「強制すんな!おれは空白を何個入れるかで自己表現してんだ!」って思うか
「これでアホのゴミネストに付き合わなくてすむぜ」って思うかで
プログラマとしての何かが問われるだろう
376デフォルトの名無しさん:2007/12/28(金) 22:45:40
>>370
そんなの強制しなくても命名規則を決めればいいだけ
従わないヤツはチームから除外すれば済むし
それくらいできないヤツはどうせダメなヤツだから
むしろ除外した方がチームのため
377デフォルトの名無しさん:2007/12/28(金) 23:06:19
>>376
だよな。インデントだってコーディングルールを強制すればよいだけで
従わないやつは排除すればいい。インデントを言語仕様で強制する必用
全然ねえよな。Pythonのインデントに関する理屈は屁理屈
378デフォルトの名無しさん:2007/12/28(金) 23:10:52
>>377
>インデントだってコーディングルールを強制すればよいだけで

そうそう。
インデントを廃止するかわりに,ブラケットやendみたいなキーワードを導入すればいいだけの話だよね。
簡単簡単。
379デフォルトの名無しさん:2007/12/29(土) 01:18:06
ブラケットやendみたいなキーワードを強制されるのは嫌だな
380デフォルトの名無しさん:2007/12/29(土) 01:28:23
Ruby書いてるときに

def range(start, end)
..
って書けないのはちょっといやだな
381デフォルトの名無しさん:2007/12/29(土) 01:30:05
ブラケットがキーワードなのか
382デフォルトの名無しさん:2007/12/29(土) 01:50:36
>>375
どちらもアホプログラマにしか思えない
383デフォルトの名無しさん:2007/12/29(土) 02:12:48
自分たちがちゃんとインデントされてるコードを書いてるかどうかという話と
言語仕様としてインデントでブロックをあらわすということは何の関係も無いわけだけど
>>377>>378は何を言ってるんだ?完璧に意味不明
384デフォルトの名無しさん:2007/12/29(土) 07:19:11
378は皮肉だろ。多分
385デフォルトの名無しさん:2007/12/29(土) 09:31:12
・378を皮肉だと分からないヤツ
・「キーワード」が「ブラケット」と「end」にかかっていると思っちゃうヤツ

どっちもPythonistaとして失格。
Monty Pythonでも見ながら基本からやり直した方がいい。
386デフォルトの名無しさん:2007/12/29(土) 10:32:26
>>379
Python でもかけませんがあにか
387デフォルトの名無しさん:2007/12/29(土) 10:38:33
>>385
別にPythonistaとやらになりたくはないがな
静的スコープのない言語なんて願い下げ
388デフォルトの名無しさん:2007/12/29(土) 10:53:07
Pythonは思いっきり静的スコープを採用した言語だが…
389デフォルトの名無しさん:2007/12/29(土) 14:06:52
まぁ378は皮肉としてはどうかと思うが
390デフォルトの名無しさん:2007/12/29(土) 14:12:36
そんなこといったら、>>383のもわかってる煽りだろw
391デフォルトの名無しさん:2007/12/29(土) 14:43:48
>>383に食いつくのはプライドが許さない
392デフォルトの名無しさん:2007/12/29(土) 20:17:51
>>386
これできみはしやわせになれると思うよ。

end = 1
393デフォルトの名無しさん:2007/12/29(土) 20:22:38
389=391はおれげんごをつくった。
でもだれもつかわなかった。
394デフォルトの名無しさん:2007/12/30(日) 00:28:21
そうですか
395デフォルトの名無しさん:2007/12/31(月) 12:26:33
そうです
396デフォルトの名無しさん:2008/01/01(火) 07:34:26
おめでとうございます
397デフォルトの名無しさん:2008/01/04(金) 23:16:45
end があると、endだけの行が大量に発生するのが、コードが間延びしてる感じがしてダサい
pythonの方がエディタで眺めたときに、均等に情報が並んでる感じがして気持ちいい
398デフォルトの名無しさん:2008/01/05(土) 04:29:54
Pythonだとここまでで、インデント終わりってのが明確にわからないのだが、
その辺、どうやってみわけるの?
399デフォルトの名無しさん:2008/01/05(土) 07:25:06
>>398
次の命令のインデントでわかる。
インタラクティブモードの場合は空行を入れることでも可。
400デフォルトの名無しさん:2008/01/05(土) 16:34:08
>>399
やっぱそうか・・・
エディタとかブラウザで、どこまでスクロールすればいいんだろとか不安になるもんで
401デフォルトの名無しさん:2008/01/05(土) 18:18:36
why?
kwsk
402デフォルトの名無しさん:2008/01/05(土) 18:50:31
要するに「ブロック終了」に相当する単語なり文字が目に見えないから不安な気がするってことじゃないか?
自分もpythonはじめたかなり最初の方はそういう感覚があったような気がする
403デフォルトの名無しさん:2008/01/05(土) 20:41:45
こういうコードに遭遇すると殺意沸くよね

def ふにゃふにゃ
  ぴっぽろ
  ぱっぽろ

  # 以下不要なのでコメントアウト
  # ぷんぱか
  # ほにゃらら
   (20行続く)

  # 2008/1/5 追加しました。
  return "こんなところにこんなものが!”
  
404デフォルトの名無しさん:2008/01/05(土) 20:51:11
それはPythonに限らないだろ

String ふにゃふにゃ() {
  ぴっぽろ;
  ぱっぽろ;

  // 以下不要なのでコメントアウト
  // ぷんぱか;
  // ほにゃらら;
   (20行続く)

  // 2008/1/5 追加しました。
  return "こんなところにこんなものが!";
}
405デフォルトの名無しさん:2008/01/05(土) 21:30:30
いや、ちがうんだけど、
なんだかとても眠いので寝る。
続きは夢の中で議論しましょう。
406デフォルトの名無しさん:2008/01/05(土) 22:26:02
じゃ、そうしましょう。
おやすみなさい。
407デフォルトの名無しさん:2008/01/06(日) 00:00:56
俺も夢の中で、まってます
408デフォルトの名無しさん:2008/01/06(日) 01:05:14
じゃあ俺はニシキヘビを持って行くね。
409デフォルトの名無しさん:2008/01/06(日) 13:23:26
なんで来なかったんだよ!
410デフォルトの名無しさん:2008/01/06(日) 13:30:56
ごめん、熟睡しちゃった。テヘ
411デフォルトの名無しさん:2008/01/06(日) 15:01:51
寝て起きたらやり合うのめんどくさくなった
412デフォルトの名無しさん:2008/01/06(日) 17:03:06
Pythonの場合、ブロックを跨いだ場所にカット&ペーストしたら
必ず自分でインデント調整せないかんの?
自動整形とか出来なさそう…まぁ、そういう機能ないエディタだと普段やってることだけどさ
413デフォルトの名無しさん:2008/01/06(日) 18:28:56
ブロックを跨いでるなら自動整形出来るだろ
414デフォルトの名無しさん:2008/01/06(日) 19:24:27
インデント調整ってめんどくさくないんだよ!
415デフォルトの名無しさん:2008/01/06(日) 19:30:36
>>412
>Pythonの場合、ブロックを跨いだ場所にカット&ペーストしたら
>必ず自分でインデント調整せないかんの?

そういう場合、ブロックを関数とかメソッドとかに出来るし
何の関係も無い
カット&ペーストしたら大抵は何か考え直すべき
へぼが書くとやっぱり読みにくい
416デフォルトの名無しさん:2008/01/07(月) 08:15:19
考え直して関数・メソッドにする時にカット&ペーストしない?
ブロックごとペースとしたらそのブロック全体の
インデントをちょちょいと直せばいいだけ

直すインデントの量は先頭を見れば自明



何か疑問でも?
418デフォルトの名無しさん:2008/01/07(月) 10:49:10
dakara sorega mendou datte hanasi dattandaro
419デフォルトの名無しさん:2008/01/07(月) 10:51:54
ペーストした時点で正しいコードになってるのと
ペースト後インデント直さないと正しいコードにならないのとの違いの話だな
420デフォルトの名無しさん:2008/01/07(月) 10:58:26
めんどうじゃないよ
421デフォルトの名無しさん:2008/01/07(月) 11:41:19
めんどうだよ
422デフォルトの名無しさん:2008/01/07(月) 12:27:11
めんどうじゃよ
423デフォルトの名無しさん:2008/01/07(月) 12:31:50
めんどうでござる
424デフォルトの名無しさん:2008/01/07(月) 12:32:58
めんどうだったら
425デフォルトの名無しさん:2008/01/07(月) 13:18:51
めんどうなんだからねっ
426デフォルトの名無しさん:2008/01/07(月) 13:20:16
カッコで照合する言語の場合は尻尾のカッコの数を間違えて
整合性がとれなくなったりコードがおかしくなったりするわけだけど
その際の確認の手間がペーストよりも後ろ側に来てるだけ

面倒もへったくれもないし議論になってねーっつーの
427デフォルトの名無しさん:2008/01/07(月) 13:28:32
カッコの数を間違えたらSyntax Erorrだと思うが
428デフォルトの名無しさん:2008/01/07(月) 15:23:17
Pythonもブロックのインデントレベルが違うと構文エラー
大らかなのはアセンブラぐらいかな
429デフォルトの名無しさん:2008/01/07(月) 15:43:28
何言ってんの?
430デフォルトの名無しさん:2008/01/07(月) 17:19:08
Python でインデントレベルが変わるのは : の次と
戻す時だけだから他言語での括弧の不整合と同じく
エラーが出るね
431デフォルトの名無しさん:2008/01/07(月) 17:48:15
よく考えろよ。
432デフォルトの名無しさん:2008/01/07(月) 18:23:20
お金は大事だぞ
433デフォルトの名無しさん:2008/01/07(月) 18:53:07
あふぉらっく
434デフォルトの名無しさん:2008/01/07(月) 21:00:00
python 書いたことある人間がうだうだ言うのはともかく
全く書いたり試したりしないで
脳内でイチャモン生成されても的外れだってことさ
435デフォルトの名無しさん:2008/01/07(月) 22:00:38
ていうかエラーが出ない人為的なミスに関して話をしてたのに
なんで「エラーが出る状況ではエラーがでるから同じだなんて」
って話になってるの?
436デフォルトの名無しさん:2008/01/07(月) 23:38:37
ネタスレ状態も悪くないと思う俺がいる
437デフォルトの名無しさん:2008/01/08(火) 12:45:19
>435 が思っているのもネタに過ぎないしな
438デフォルトの名無しさん:2008/01/08(火) 15:08:03
そりゃエラーが出ない人為的状況はインデントの有る無しと関係ないから
つまりスレタイ読めという事
439デフォルトの名無しさん:2008/01/08(火) 16:43:39
だからその時のミスを防ぐ手だてとかリカバリーの方法だよ。
カッコとかendとかある言語の方がいろいろ手を打てる。
たいていは自動フォーマッタが視覚的にミスに気づかせてくれる。
インデントとブロックを両方プログラマの手にあずけちゃうと、
プログラマがミスしたときの保険が無くなる。
440デフォルトの名無しさん:2008/01/08(火) 21:11:44
括弧やendの辻褄で自動フォーマッタが気づかせるレベルのエラーなら
Python でもインデントのレベルの辻褄が合わないから同様に気づくと思うが
441デフォルトの名無しさん:2008/01/08(火) 21:17:25
>>440
書き出すインデントのレベルを勘違するのがミスだろ。
既に勘違いしてるのにどうやって辻褄が合わないことに気づくんだよ。
442デフォルトの名無しさん:2008/01/08(火) 22:30:42
if hige:
  fuga
  fuga
  pass
443デフォルトの名無しさん:2008/01/08(火) 22:32:58
んな奴にぬるい気持ちでコピペさせない、が正しい
444デフォルトの名無しさん:2008/01/08(火) 22:50:15
じゃあ熱く「俺にコピペさせてくれ!オゥイェー!ベイベー!」って言われたらどうするんだよ。
445デフォルトの名無しさん:2008/01/08(火) 23:07:35
コードをコピペすんなよキチガイ
446デフォルトの名無しさん:2008/01/08(火) 23:28:17
じゃぁカットアンドペーストにするよ
447デフォルトの名無しさん:2008/01/08(火) 23:54:46
>>446
天才
448デフォルトの名無しさん:2008/01/09(水) 10:28:47
じゃ俺はコードの代わりにコンセントを使うよ
449デフォルトの名無しさん:2008/01/09(水) 19:09:42
【審議中】
      _,,..,,,,_   _,,..,,,,_
   _,,..,,,_/ ・ω・ヽ/・ω・ ヽ,..,,,,_
  ./ ・ω_,,..,,,,_  l _,,..,,,,_/ω・ ヽ
 |   /   ・ヽ /・   ヽ    l
  `'ー--l      ll      l---‐´
     `'ー---‐´`'ー---‐´
450デフォルトの名無しさん:2008/01/15(火) 16:56:52
まずは言語仕様の問題と開発環境の問題を区別しよう。
話はそれからだ。
451デフォルトの名無しさん:2008/01/15(火) 22:41:42
そんなことより449の審議がいつ終わるかのほうが問題だ
452デフォルトの名無しさん:2008/01/15(火) 22:49:01
CM明けなんじゃない?
453デフォルトの名無しさん:2008/01/26(土) 00:00:07
Python 勉強中のヘタレです。
私も昔の >>402 さんのように終了記号が無いのが不安です。
気が緩んでインデントを間違えてしまう
うっかり者は使うな!という言語なんでしょうか…?
前に Python でコード書いてたら、
急に好きなおにゃのこから電話が来て
電話の後インデントしきってないのを忘れて悩みました。

おにゃのこよりインデントを大事にしろ!
おしゃべりしててもインデントを忘れるな!って言語なんでしょうか。
コードを見ていると綺麗だとは思うのですが、
書くときは正しくヘビのように絡み付いて
縛り付けられる感じがして辛いです。

皆さんインデントのミスなんてしないんでしょうか?
ネタじゃなくてホントに。
454デフォルトの名無しさん:2008/01/26(土) 03:26:47
>453
俺は他の言語の出身だが、他でもインデントはキッチリ書くよ。
経験上、そうでないと自分がミスリードするし
インデントをキッチリ書くことは「当たり前のことを当たり前にやってるだけ」と思ってる。

欠点としては、自動整形が効かないってことかな。
場合によってはこれだけが痛い。
455453:2008/01/26(土) 04:14:51
私も普段からインデントはキッチリ書く、
というか書いてないと気がすまないのですが
コードを移動したり、差分をマージする時にドキドキしてしまいます。
マージとか他の言語だと、
ひとまずペーストしてインデント揃えて、ってできるんですが
Python だとペースト〜揃える間を一息でやらないと怖くて緊張します。
456デフォルトの名無しさん:2008/01/26(土) 11:29:03
まずアペンドしてからちまちま直せば良いんじゃないだろうか

% cat code01.py >> code00.py
% vi code00.py
457デフォルトの名無しさん:2008/01/27(日) 13:40:14
#{

#}

というインデントのヒントをコードに埋め込めばいいんだよ。
なんという逆転の発想・・・
458デフォルトの名無しさん:2008/01/28(月) 16:35:23
pass でブロック終端を表すのはかったるいとおもったけど、
...(Ellipsis)なら、それほど悪くないかなと思った・・・
459デフォルトの名無しさん:2008/01/28(月) 22:43:30
> pass でブロック終端を表す
そんなことしたっけ?

もしかして、空ブロックの代わりにpassって書くのと勘違いしてる?
460デフォルトの名無しさん:2008/01/28(月) 23:22:31
目印としてってことじゃねーの
461デフォルトの名無しさん:2008/01/29(火) 00:10:41
emacs だと pass の行の次はインデントが強制的に1つ引っ込むんだよ
他のエディタはどうなってるか知らんが
462デフォルトの名無しさん:2008/01/29(火) 06:10:34
それはEmacs特有のサービス(?)だと思うぞ
463デフォルトの名無しさん:2008/01/29(火) 08:46:39
マクロがあればどんなエディタでもできそうな気がする
464デフォルトの名無しさん:2008/01/29(火) 16:19:17
面白い仕掛けだね、pass でインデント終了って
465デフォルトの名無しさん:2008/01/30(水) 03:26:02
do - end
: - pass
文字数は変わらないね
466デフォルトの名無しさん:2008/01/30(水) 03:48:01
pass って書くなら、4回バックスペース押したほうがいいと思う。

つうか、ブロック毎にいちいち pass pass 書いてる python コードなんて
誰も読む気しない
467デフォルトの名無しさん:2008/01/30(水) 07:49:50
passなんて空ブロック以外で見たことないぜ
468デフォルトの名無しさん:2008/01/30(水) 09:47:35
>>467
>>461

設定次第でバックスペースは1回にできそうだな
469デフォルトの名無しさん:2008/01/30(水) 09:54:52
pass じゃなくて1って書けば?
470デフォルトの名無しさん:2008/01/30(水) 15:17:47
>>466
そうじゃなくて、自動整形するためのtipsの話じゃなかったのか?
471デフォルトの名無しさん:2008/01/30(水) 17:50:00
個人的な感想だけど、自動整形なんてほとんど使う機会がないな。
そもそも他のソースからのコピペをする機会が少ない。その必要があるときも
ブロックを指定してインデントなりデデント(IDLE なら Ctrl-[ と Ctrl-])すれば一瞬で済むし。
ぶっちゃけ、453さんみたいに苦痛を感じる人がいるのが不思議。

経験的に言って、Python のコーディングをきちんとサポートしてくれるツールを使えば
インデントに起因する問題は何も起こらないよ。あとは慣れの問題。
472471:2008/01/30(水) 17:55:50
ふと、インデントに過剰反応する人は考えすぎなのかなーとオモタ。

Python のインデントって自転車みたい。
乗れないうちはバランスとか転んだら痛いとかいろいろ考えちゃうけど、それって無駄。
乗れるようになったら意識しなくても快適に乗りこなせるようになる。
473デフォルトの名無しさん:2008/01/30(水) 18:01:49
いや、だから、
いきなり }<改行> を入力すれば、勝手にインデントを1段戻した位置にズレて
次の行ではそのまま書き続けられる位置にカーソルが移るような環境に生きていると、
いちいちインデントを調整しながらコードを書くことが苦痛だと。

そういうことじゃないかと思うわけだけど。

書くコードの種類にもよるとは思うけど。
474デフォルトの名無しさん:2008/01/30(水) 18:14:51
ブレースだろうがインデントだろうがブロックの把握は行わなきゃいけないものだと思うんだが
475デフォルトの名無しさん:2008/01/30(水) 19:43:40
} 入れるのと Backspace 押すのとじゃ手間に大差ない気がするが
476デフォルトの名無しさん:2008/01/30(水) 19:52:09
勝手に動かされるのキライ
477デフォルトの名無しさん:2008/01/30(水) 20:41:12
他人のソース見るときが一番不安
478471:2008/01/30(水) 21:23:09
>>473
> 勝手にインデントを1段戻した位置にズレて 
> 次の行ではそのまま書き続けられる位置にカーソルが移るような環境

すくなくとも IDLE や Emacs の Python モードはそういう環境だよ。
if foo is True: [Enter]
で1段インデントされるし
    return [Enter]
で1段デデントされる。return, break, continue, pass 等で終わらないブロックの場合は
Backspace の入力が必要だけど、475さんの言うとおり、C 等で } の入力が必要なのと同じ。

そういえば Emacs の C モードで複数行にわたるマクロを書いてて行末の \ が
あるのとないのとで自動インデントの振舞いが変わって難儀するのを思い出した。
あとで \ をつけてそろえようと思ってても、自動インデントで思わぬ位置までカーソルが飛んでいく。
まあ善し悪しだね。万能じゃない。
479デフォルトの名無しさん:2008/01/30(水) 22:18:18
インデントでブロックをあらわすと、最小コストで構造を表現できる。
記号でブロックをあらわすと、プログラマの意図の通りの構造になっているか
ダブルチェックすることができる。
480デフォルトの名無しさん:2008/01/30(水) 22:23:52
記号でブロックをあらわすと、
見た目と意図が激しく乖離するものが出来上がる現実
481デフォルトの名無しさん:2008/01/30(水) 23:32:28
なんで?
482デフォルトの名無しさん:2008/01/31(木) 18:50:03
>480 は初心者にコード書かせた場合の話だろうな。
確かに、ブロックを正しく書く癖を付けさせるなら、こういう言語かも知れない。
483デフォルトの名無しさん:2008/01/31(木) 20:48:36
インデントブロック無しで書きたいときもあるのだ。たとえば
if (hoge) break;
とか。

switch (var) {
  case A: hoge(); break;
  case B: huge(); break;
  case C: huga(); break;
}
とか。
484デフォルトの名無しさん:2008/01/31(木) 23:22:16
if hoge: break

ってあるよ
485デフォルトの名無しさん:2008/02/01(金) 00:42:51
Python に switch はない。
if var==A:
 hoge1()
else if var==B:
 hoge2()
else if var==C:
 hoge3()

もし A,B,C が 0, 1, 2 というふうに序数になっているなら
(hoge1, hoge2, hoge3)[var]()
だな
486デフォルトの名無しさん:2008/02/01(金) 00:43:53
pythonのインデント構造って、エディタからインタプリタにコードをカットアンド
ペーストするとき、すごくやりにくいよね。
前に、プレゼンのビデオでデモをやってる人がいて、
先頭にスペースが入っちゃったりして、やりにくそうだった。
また、インデントの深いところの複数行をまとめてコピーするのは不可能だよね。
487デフォルトの名無しさん:2008/02/01(金) 01:24:58
先頭に、if 1:
とか入れれば、好きな深さのコード実行できる

>>> if 1:
...           print 1
...           print 2
...           print 4
...
1
2
4
488デフォルトの名無しさん:2008/02/01(金) 06:41:17
if var==A:
 hoge1(a+b)
else if var==B:
 hoge2(c-d)
else if var==C:
 hoge3(e/f)

もし A,B,C が 0, 1, 2 というふうに序数になっているなら
(hoge1, hoge2, hoge3)[var]((a+b, c-d, e/f)[var])
ということか
489デフォルトの名無しさん:2008/02/01(金) 06:41:54
副作用ワロスw
490デフォルトの名無しさん:2008/02/01(金) 09:41:51
俺だったらこうかなあ。

    def case_A():
        hoge1(a+b) 
    def case_B():
        hoge2(c-d) 
    def case_C():
        hoge3(e/f)
    f = (case_A, case_B, case_C)[var]
    f()
491デフォルトの名無しさん:2008/02/01(金) 09:54:55
> また、インデントの深いところの複数行をまとめてコピーするのは不可能だよね

それはPythonじゃなくてエディタの機能の話だろ。
492デフォルトの名無しさん:2008/02/01(金) 11:00:13
>> 491
> それはPythonじゃなくてエディタの機能の話だろ。

また、インデントの深いところの複数行をまとめて (エディタからインタプリタに)
コピーするのは不可能だよね、という話?
先頭に空白が入っていると、無理。
493デフォルトの名無しさん:2008/02/01(金) 12:11:32
矩形選択できるエディタで先頭の空白をさければいいんじゃないの?
何を無理とか不可能とか言ってるのかよくわからん。
494デフォルトの名無しさん:2008/02/01(金) 14:25:29
>487 でほとんどの人は困ってないと思うんだよね…
495デフォルトの名無しさん:2008/02/01(金) 14:28:31
そんな石器時代的な方法で我慢しないと駄目なのか。
496デフォルトの名無しさん:2008/02/01(金) 16:53:18
primitive な方法で解決できるのが一番いい
497デフォルトの名無しさん:2008/02/01(金) 16:55:02
ところで、python に else if ってないんだけどさ・・・>>488
498デフォルトの名無しさん:2008/02/01(金) 21:29:48
使ってるエディタによりけりかもな。
なんだかLispみたいだ。
499デフォルトの名無しさん:2008/02/01(金) 21:34:17
>>485
うわあPython読みにくう・・・。
500デフォルトの名無しさん:2008/02/01(金) 23:35:29
なんで行単位で範囲選択できるエディターを使わないんだろう
501デフォルトの名無しさん:2008/02/02(土) 00:53:56
だいたいがだ、インデントに関連したバグで悩まされた経験が
オマエラあるのか。俺は18年のプログラム暦で一度もない。
502デフォルトの名無しさん:2008/02/02(土) 01:01:47
>>501
確かに。俺も 20年位インデント関連のバグ書いて悩んだことはないな。
インデントが見栄えだけしか意味持つ言語使ってないから。
503デフォルトの名無しさん:2008/02/02(土) 01:35:12
アンインデントするときに空行が入っていないソースを
ペーストしようとするとエラーになるんですけど
どうしたらよいのでしょうか?
504デフォルトの名無しさん:2008/02/02(土) 01:35:20
>>502
まともなエディタ使ってたら、インデント起因のバグなんてありえんよ。
むしろコーディングに余計な手間を強いるPythonはクソ。
505デフォルトの名無しさん:2008/02/02(土) 01:41:42
>>500
>行単位で範囲選択できるエディター
ってどんなのがあるんでしょうか。
506デフォルトの名無しさん:2008/02/02(土) 01:45:46
>>505
Vim
507デフォルトの名無しさん:2008/02/02(土) 01:58:01
ぶっちゃけていえばだ、「インデントに起因するバグ防止のため」とか
「読みやすさのため」という理由は、全然説得力ないのよ。

「インデント起因のバグに悩まされた」ことなんてないし、「インデント
がそろってないために読みづらい」ソースなんて、小学生ならいざ知らず
普通のソースコードで見たことない。

それなのに、これまでエディタで自動で出来ていたインデントを
手動でやる羽目になる手間といったら!Python使いってなに考えてんの?
508デフォルトの名無しさん:2008/02/02(土) 02:08:49
>>507
全くそうだよね。
インデントなんか制御構造に使わなけりゃ、
(自分にとっては) pythonほとんど完璧だたったんだか。
これは失敗だったと思うよ。インデントを制御構造に使わないとならない
積極的な理由なんかないんだから。(たぶん)

509デフォルトの名無しさん:2008/02/02(土) 08:37:44
かっこうざい、というのは積極的な理由にならない?
(endうざい、も可)

Python で書いてると、コロンもうざい
510デフォルトの名無しさん:2008/02/02(土) 11:08:31
ブロックの表現法にどれを採用するかなんて作者の趣味で
積極的な理由なんて無いんじゃないの?
問題が無ければ現状維持で良い。問題があるなら、
問題点と改良案を提案すれば良い。むしろ言語がより良い
方向に行くために提案すべきだ。俺的にインデントでブロックを
表現するのが好きだけど、十分に納得できる理由があるなら
他の方法に変更されても全然OK
511デフォルトの名無しさん:2008/02/02(土) 13:45:18
>>509
うざいとかいうのは気持ちの問題。
ruby信者にはendがいいんじゃないかと言われるだけ。
慣れれてこういうもんだと思えばなくなる問題。

>>510
インデントで致命的な問題があるわけではないよ。
自分も読むだけならインデントも読みやすいと思うけど。
ただ、自分で書く場合、インデントの自動整形ができないとか、
カットアンドペーストするとき、余計な作業をしないといけないとかは、
作業が増える、これは慣れて解決する問題ではない。

個人的には、ネットでなどで見つけてきたコードサンプルなどをカットアンドペーストして
自分のマシンで動かしてみようとするときに、
他の言語ではいきなりインタラクティブシェルに放り込めば動くこともあるが、
まずはインデントを確認してからなど、めんどうだなと思うこともある。
致命的ではないけどね。作業量の問題。
512デフォルトの名無しさん:2008/02/02(土) 14:30:08
バグが起こらない限りソースコードなんか読まねーよって言う奴には
向いてないんだろうね。
513デフォルトの名無しさん:2008/02/02(土) 15:00:14
これからはむしろソースはXMLで、専用エディターを使って見掛けを調整するような言語が求められるのかも
これなら表現は {} だろうが字下げだろうがエディターの選択に拠るのであって言語の仕様とは分離できるし
514デフォルトの名無しさん:2008/02/02(土) 15:04:22
lispの括弧とpythonのインデントは同じ匂いがする
やってることは完全に正反対のはずなんだが…
515デフォルトの名無しさん:2008/02/02(土) 15:33:49
ソースコードが画像っていう言語は見たことあるけど、
ソースコードがXMLって言うのはまだ見たことないなぁ・・・
516デフォルトの名無しさん:2008/02/02(土) 15:49:55

SQL埋め込んだりHTML埋め込んだりすると
見た目にインデントが混乱するので嫌
ちゃんとしたエディタならどっちも文字列だから
プログラム自体のインデントには影響しないんだけど
読むのがきつい

そういうときは構造が間違ってるから見直せとか
テンプレ使えって話になるんだろうけど
517デフォルトの名無しさん:2008/02/02(土) 15:52:27
>>515
わかってるとは思うが >>513 の言ってるのは
エディタ上では普通のソースと見分けが付かない
保存したときにXMLになってるっていう話だろ
そういうのを実現してるのは強いて言えば
 Excel2007 の VBA とかじゃないのか
518デフォルトの名無しさん:2008/02/02(土) 16:39:32
構文木がべた書きされた中間コードとして、だったら、S式でもXMLでも
あまり差はなくないか? XMLのほうがむやみに冗長なだけで。

あとはプログラマがプレインテキスト信仰から離れられるか、という
ところだろうけど。
519デフォルトの名無しさん:2008/02/02(土) 16:46:34
S式なんざ一般に受け入れられないでしょ。Lispが受け入れられていないのだから。
520デフォルトの名無しさん:2008/02/02(土) 16:55:23
特定のツールがないと編集できない言語なんて絶対流行らないという気がする。
キーワードに非アスキー文字がある言語が絶対に流行らないのと同じように・・w
521デフォルトの名無しさん:2008/02/02(土) 17:24:24
> 構文木がべた書きされた中間コードとして

という部分を見落とされちゃった気がしてしょぼーん
522デフォルトの名無しさん:2008/02/02(土) 17:31:12
S 式 or Lisp という文字が入った書き込みがあった時の
ボットによる定型レスだから気にしないでオケ。
523デフォルトの名無しさん:2008/02/02(土) 18:37:17
hoge.pyc を直接開くとソースコードが出てきて
そのまま編集&保存できるエディタってある?
524デフォルトの名無しさん:2008/02/03(日) 02:09:00
pycからソースコードって復元できないでしょ多分
525デフォルトの名無しさん:2008/02/03(日) 02:16:30
>>520
昔のパソコンBASICは処理系依存の中間言語でセーブしてたよ
でもけっこう流行ってたと思う
526デフォルトの名無しさん:2008/02/03(日) 09:17:27
>>525
大抵はアスキーセーブもできたはずだが?
527デフォルトの名無しさん:2008/02/03(日) 15:59:54
ぶっちゃけ今、プログラマの、IDE エディタと専用エディタの使用比率って
どんなもんだろうね?
528デフォルトの名無しさん:2008/02/03(日) 16:15:34
>>527
俺、3つの職場渡り歩いたけど、IDEのエディタ使ってるやつ見たことない。
529デフォルトの名無しさん:2008/02/03(日) 21:33:30
>>526
大抵はアスキーセーブなんてしないし
それにアスキーセーブしなおせるのは「特定のツール」がある環境だよね
530デフォルトの名無しさん:2008/02/03(日) 21:52:30
>>529
処理系自体がIDEなんだから関係ないじゃん。
531デフォルトの名無しさん:2008/02/03(日) 21:54:28
>>530
だから「絶対流行らない」に対する反論だろ
実際普及してたわけだし
532デフォルトの名無しさん:2008/02/03(日) 22:08:41
それしかなかった(一般に入手可能性という意味で)からだろ
533デフォルトの名無しさん:2008/02/03(日) 22:09:17
当時はマシン自体がIDEだったわけだし。
534デフォルトの名無しさん:2008/02/03(日) 23:49:51
同様のもので言えば Smalltalk なんかもパソコンバンドルされてれば普及したかもね
535デフォルトの名無しさん:2008/02/04(月) 00:07:36
>>534
あると
どるふぃん
536デフォルトの名無しさん:2008/02/04(月) 01:12:39
そもそも Smalltalk が無ければ Mac も Win もパソコンは今の姿ではなかったわけだしね。
つか、パソコンって言葉自体が Smalltalk を OS として動作する Alto や NoteTaker の
ためのもの…って話はスルーですか、そうですか。
537デフォルトの名無しさん:2008/02/04(月) 01:27:03
>>536
うん、スルー^^
538デフォルトの名無しさん:2008/02/04(月) 02:34:26
BASICが載ってた頃のはマイコンだしな
539デフォルトの名無しさん:2008/02/04(月) 03:26:17
あんたら何年前のお話をしていらっしゃるのですか?
540デフォルトの名無しさん:2008/02/04(月) 11:07:39
話を戻して、ソースコード寄りの中間言語ってどうよ、という意見についてなのだが、
IDE のプラグインだと IDE 毎につくらにゃいかんので負担が大きいなぁとか考えて
いたのだが、テキストフィルタとして実装するのはどうだろう。
541デフォルトの名無しさん:2008/02/05(火) 09:52:02
>>486
矩形コピペできないエディタは死んでいい

>>509
激しく同意

>>523
関係ないけど、io-languageだと逆コンパイルできるよ。
インタラクティブシェルで、メソッドを定義すると、逆コンパイル?して表示してくれる。
自分の書いたのより、良い書き方で返ってきたりしてウケル
542デフォルトの名無しさん:2008/02/05(火) 09:56:23
>>541
Smalltalkも逆コンパイルしてくれる。
時々、最適化した結果を見せてくれるから参考になる。
543デフォルトの名無しさん:2008/02/05(火) 09:57:45
>>541
矩形コピペできるエディタを使っていながら
その機能を知らないやつ多すぎ。

とりあえずWindows系のエディタなら
カーソルを選択位置に持っていって、
alt押しながら選択してみるといいよ。
544デフォルトの名無しさん:2008/02/05(火) 16:20:06
「プレーンテキストのようなものは何もないのです。」

Servlet Garden ≫ Unicode and Character Sets (Translation)
http://www.t3.rim.or.jp/~yoko-k-h/java/servlet/2008/01/31/unicode-and-character-sets-translation.html

くだらない文字コード問題を解決しようとしただけで、
もうすでにプレーンテキストなんてなくなっているわけだよ。
しかし、その差異はエディタが吸収した。
ごく一部の人間以外は問題なく扱えている。

そこで次の段階は、構造化テキストですよ。
>>520のような言葉は、10年前にはそうなことも言われていたね、なんてい言われるだろう
545デフォルトの名無しさん:2008/02/05(火) 18:37:52
GUIコンポーネント単位でコードを書くVBは大流行しました
546デフォルトの名無しさん:2008/02/06(水) 02:26:30
ていうかC#とかVS無しでの作成とか想定してない感じだし
時代の問題じゃなくて MS vs UNIX 文化圏の違いという気がする
547デフォルトの名無しさん:2008/02/06(水) 09:41:07
そのUnix文化圏でEclipseがじわじわと勢力を広げつつある件
・vi系
・Emacs系
・Eclipse等
に3分するとして、2:7:1 ぐらい?
548デフォルトの名無しさん:2008/02/06(水) 23:56:47
まぁしかしこんな不見識なな記事もあるな

http://www.atmarkit.co.jp/fwcr/rensai/freeauthoring06/freeauthoring06_1.html
549デフォルトの名無しさん:2008/02/09(土) 03:59:36
for〜elseで2重ループ抜けはやっぱフラグ使うこれかな。
break時にも書けるけど共通の処理をここで確実にできるからミスがおきにくいし
elseを書くことで普通の言語のendを明示できる。
2重ループを抜ける場合じゃなくても
else:
pass
と書けるし。

for i in range(5):
a = True
for j in range(3):
if j == 2:
break
else:
a = False
if a:
break
コード見るのは>>549で。


それはそうと、selfってelifの書き間違いかと思った。

>>486
>>541
WindIDE無料版使ってるけど、インデントは強制だから絶対間違わないよ。
コピペしても挿入部分については適切にインデントされる。
挿入部分下も、ページの最後まで選択してTABで全部が適切にインデントされる。
コメントは微妙に残るかもしれないが。
550デフォルトの名無しさん:2008/02/09(土) 07:44:22
こうやるのが素直じゃないの?

a = False
for i in range(5):
  for j in range(3):
    if j == 2:
      a = True
      break
  if a:
    break

そういうテクニカルな else は読みにくくなるだけ。
551デフォルトの名無しさん:2008/02/09(土) 08:15:06
内部関数にしてreturnで抜けるのがスマートかな。
552デフォルトの名無しさん:2008/02/09(土) 09:35:34
>>550
a の定義位置が間違ってるよ。
breakの有無の判定は一つのループにつき一度しかできないから。

複数のbreakがあってもフラグのセット忘れに関係なくループを抜けれるから確実で良いと思った
けど、まあそうかもしれない。

Basicみたいな、単文ならif、複数ならifb〜endifとかになるやつならbreakだけで短く書く意味があるけど。
でもループが長くなるとどーしても分からなくなっちゃうな・・・
どこまで復帰するべきかが。
しかも深くなると、何段のインデントになってるかすら分からない。
タブならタブコードを表示するエディタでいけるけどなぜか半角スペースにされちゃってるし。
そういう意味ではelse:passは書かないとやばい。

普通の言語なら最初と最後の文字があるからそれを強調してくれれば見やすいけど、
pythonの場合はカーソルのある段全体に色をつけてくれないと範囲が分かりにくいな。
553デフォルトの名無しさん:2008/02/09(土) 10:12:37
例外使わない?
554デフォルトの名無しさん:2008/02/09(土) 12:19:44
>>553
俺も例外使う。例外ならforループどころか関数の壁を越えてbreakできる。
555デフォルトの名無しさん:2008/02/09(土) 12:23:23
556デフォルトの名無しさん:2008/02/09(土) 13:55:24
まぁさ、例外あるような言語ではgotoいらないかもしれないけど、
Cとかだと普通に使うよ?
557デフォルトの名無しさん:2008/02/09(土) 14:28:31
いや,普通には使わないわ(ww
558デフォルトの名無しさん:2008/02/09(土) 14:35:39
>>557

そう?ファンクショントレース埋め込むときとか、以下のように
エラーの場合、リソース開放して戻るときとか頻繁に使うなぁ。
{
  A *a = NULL; B *b = NULL; C *c = NULL; int result = E_UNKNOWN;

  if ((a = A_new()) == NULL) {
    result = E_MEM; goto END_FUNC;
  }
  if ((b = B_new()) == NULL) {
...

END_FUNC:
  if (a !=NULL && result != E_SUCCESS) {
    A_free(a);
  }
  ...
}
559デフォルトの名無しさん:2008/02/09(土) 15:58:34
まぁスコープ抜けるときにデストラクタが呼ばれる言語だったり、
アスペクト指向言語だったら、こんなgotoはいらないのだけどさ。
560デフォルトの名無しさん:2008/02/09(土) 16:00:10
>>559 つーか単にGC付きならそれでいいのでは。
561デフォルトの名無しさん:2008/02/09(土) 16:11:47
>>560
ファンクショントレースしこむには、スコープぬけるときにデストラクタ
よばれるか、アスペクト指向じゃなければ難しいんじゃない。
アーキテクチャに依存しないように仕込むには。

2007/07/11 10:10:10:[TRACE]FuncA IN (args=...)
2007/07/11 10:10:10:[TRACE]FuncA out (result=0)

てな感じに。
562デフォルトの名無しさん:2008/02/09(土) 16:22:19
>>561
その程度ならtry:finally:があれば十分じゃん…
563デフォルトの名無しさん:2008/02/09(土) 16:25:54
>>562
try:finallyで仕込むのメンドイでしょ。gotoと大して変わらないし。
アスペクト指向が一番楽だけど。
564デフォルトの名無しさん:2008/02/09(土) 16:30:13
>>563
try:finally:がgotoと変わらないって…
gotoでは関数内で例外が発生した時の振舞いがまるで違うんだけど…
565デフォルトの名無しさん:2008/02/09(土) 16:34:17
>>564
いや議論がごっちゃになってるのだけど。ロギングに例外機構を
使用しようとするところもおかしいし、例外の振る舞いとgoto
をごっちゃにするのもおかしい。
566デフォルトの名無しさん:2008/02/09(土) 16:37:56
>>565
> ロギングに例外機構を
> 使用しようとするところもおかしいし、

全然おかしくない。
try:finally:はtry:句から抜ける時を捕まえるという、
まさにトレースにぴったりの機構だろ。

> 例外の振る舞いとgoto
> をごっちゃにするのもおかしい。

例外が発生した時にOUTの記録を残せないトレースなんて
役に立たないと思う。
567デフォルトの名無しさん:2008/02/09(土) 16:39:39
元の議論は、gotoが必要な時があるかどうか。
>>558が提示したケースもgoto無しで十分対応できることが示された以上、
もうその時点で議論の結着はついていると思われ。
568デフォルトの名無しさん:2008/02/09(土) 16:40:28
coreutilsとかLinuxのカーネルとか見ると、gotoって便利だなと思わないか?
569デフォルトの名無しさん:2008/02/09(土) 16:46:29
>>566
try finallyは例外を捕まえるための機構であって、ファンクション
トレースのための機構ではない。

デストラクタでロギングするほうがよっぽどスマート。try finally
に依存したロギングよりも。そしてアスペクト指向のほうが
デストラクタロギングよりももっとスマートだといっているのだよ。
570デフォルトの名無しさん:2008/02/09(土) 16:46:44
>>568
CとPythonでは言語の抽象度がまるで違うんだから、
coreutilsだのLinux kernelだのは参考にならない。

Cでtry:finally:と同等な機構を仕込むのがどれだけ大変かわかるか?
571デフォルトの名無しさん:2008/02/09(土) 16:48:29
>>569
> try finallyは例外を捕まえるための機構であって、

いいえ、全然違います。ひょっとしてtry:except:と勘違いしている?

> デストラクタでロギングするほうがよっぽどスマート。

デストラクタはオブジェクトの解放をする機構であって、
ロギングのための機構ではない。
572デフォルトの名無しさん:2008/02/09(土) 16:50:24
言語に備わっているものは自由に使えばいいじゃん。
(俺)ルールが決まっていれば混乱することもない。
573デフォルトの名無しさん:2008/02/09(土) 16:52:32
558はせっかくPythonが提供している仕組みを無視して
Cの原始的なやり方を押し通そうとしているように見える。
574デフォルトの名無しさん:2008/02/09(土) 16:56:40
いや、もともとCの話だったのだけど・・・。まぁPythonのようなクソ言語使ってないけど。
575デフォルトの名無しさん:2008/02/09(土) 16:59:35
ならpythonスレに来なきゃいいのにw
576デフォルトの名無しさん:2008/02/09(土) 17:05:22
寂しかったんだろ。
こういう態度じゃ,友達もいないだろう。
577デフォルトの名無しさん:2008/02/09(土) 17:07:46
このスレはオフサイドルールについて議論するためのスレであって
たまたま1がPythonしか知らなかったのだと思うわけだが。

しかしオフサイドルールの話題ですらないな。
578デフォルトの名無しさん:2008/02/09(土) 17:20:17
>>570
>556 名前:デフォルトの名無しさん [sage]: 2008/02/09(土) 13:55:24
>まぁさ、例外あるような言語ではgotoいらないかもしれないけど、
>Cとかだと普通に使うよ?
>557 名前:デフォルトの名無しさん [sage]: 2008/02/09(土) 14:28:31
>いや,普通には使わないわ(ww

ここから始まった話題なので、
今に限ってはCのgotoの話をしている。pythonは今のトピックにおいて関係なし。
Cは例外ないから>>558がgotoなしで書けるという話も決着がついてない。
ここで例外使えばいいという指摘自体が的外れ。
まあ実際gotoは無くてもいいが、あると遥かリソース開放とかは便利。
むろんGCとか例外とかがあればそっちのが便利だが。
579デフォルトの名無しさん:2008/02/09(土) 17:43:45
どこか適切なスレを教えてやってくれ誰か
580デフォルトの名無しさん:2008/02/09(土) 17:46:28
581デフォルトの名無しさん:2008/02/09(土) 17:54:22
582デフォルトの名無しさん:2008/02/09(土) 21:10:21
まあ結論としてはPythonにもgotoがあってもいいねと。
使いたくなければ使わなければいいんだし
583デフォルトの名無しさん:2008/02/09(土) 21:14:03
gotoイラネ
584デフォルトの名無しさん:2008/02/09(土) 21:14:17
だからPythonのスレじゃねーし
585デフォルトの名無しさん:2008/02/09(土) 21:35:54
selfもなくして欲しい。
586デフォルトの名無しさん:2008/02/10(日) 10:08:19
いまPLSQLの仕事をしているんだけど、
インデントして見やすいように書くと、
文の終わりが深いインデントで唐突に終わってるんだよね。
Pythonってこんな感じのコードになるのかなーと思った、
Pythonを知らないやつのたわごとでした。
587デフォルトの名無しさん:2008/02/10(日) 10:09:56
>>586
つ[null;]
588デフォルトの名無しさん:2008/02/15(金) 11:30:22
インデントをスペース1に変更しる
589デフォルトの名無しさん:2008/02/23(土) 00:53:36
インデントとブレース両方入れるのってそんなにマイナス面が多いことなんだろうか?
ジードのブレース拒否の態度とMatz のインデント拒否の態度は両方とも
合理的な根拠が感じられない。
590デフォルトの名無しさん:2008/02/23(土) 01:08:11
> ジードのブレース拒否の態度

ソースきぼんぬ
591デフォルトの名無しさん:2008/02/23(土) 01:48:41
以下のような特殊なエラーがわざわざ入っている。

>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance


python3000の議論が始まったときに、ブレースが入らないことだけは
最初っから完全に決まっていた。そもそもまともに議論・検討しようという態度がない。


PEP3099で、ブレースが入らない理由のところで
何も書かれておらず、「そんなことは明らかだ」
という言い方しかしていない。(議論する気がない
592デフォルトの名無しさん:2008/02/23(土) 02:52:25
ブロックの記述にインデントを用いることがPythonのレーゾンデートルの一つなんじゃね?
いいとか悪いとかじゃない、それを変えてしまったらもはやPythonではない、と。

ぶっちゃけ俺もそう思う。
593デフォルトの名無しさん:2008/02/23(土) 04:12:48
ブレースの利点(といわれるもの)は視認性と自動整形だけかね?
594デフォルトの名無しさん:2008/02/23(土) 05:07:02
今さらブレース入れろと言われても面倒だし
どっちでもいいという仕様になるのも生理的に嫌
595デフォルトの名無しさん:2008/02/23(土) 06:12:09
ブレースで視認性が上がるとは到底思えないのだが
596デフォルトの名無しさん:2008/02/23(土) 12:01:58
>595
んだんだ
597デフォルトの名無しさん:2008/02/23(土) 12:31:10
>>595
パーサー実装するのが面倒。
ブレースつけてもどうせみんなインデントするからいいじゃん。
598デフォルトの名無しさん:2008/02/23(土) 12:48:04
ttp://www.rubyist.net/~matz/20080220.html
最後に、「Haskellみたいなブレースの使い方を採用する気ない?」と尋ねたら、
「いろんな文法の変更を試している人がいるから、その中のひとつとして考えてみる」
ということであった。これが実現したら大喜びする人も多いように思うけど
(lambdaで複文が使えるようになるし)、それほど乗り気であるようにも見えなかったので
過大な期待は禁物である。
599デフォルトの名無しさん:2008/02/23(土) 12:51:47
>>598
> 「いろんな文法の変更を試している人がいるから、その中のひとつとして考えてみる」という ことであった。

日本語訳:
ウザい東洋人、あっちいけヨ。
600デフォルトの名無しさん:2008/02/23(土) 12:57:53
lambdaで複文使えるようになってうれしがるやつなんて変態だけだろ。
いくつもの分がブレスに所狭しと押し込められたソースなんて汚いだけだよ。
複数の文を書くような場面では、関数定義してオブジェクトにして引き回せばいい。
601デフォルトの名無しさん:2008/02/23(土) 13:24:21
Matzはなんで、Guidoが「lambdaで複文が使えるように」していないのはわざと
だという事に気づかないんだろうか
Matzは「大喜びする人も多い」ならRubyをそういう風に改造するんだろうけど
Guidoは最初から制約を利用しようとして言語デザインしてるんだから
自分とは考えが違うと理解しないかな
602デフォルトの名無しさん:2008/02/23(土) 13:27:36
>>598
> 「いろんな文法の変更を試している人がいるから、その中のひとつとして考えてみる」という ことであった。

日本語訳:
愚問に答えるのは苦労するぜ
603デフォルトの名無しさん:2008/02/23(土) 13:29:56
>終始フレンドリーであったことを報告しておきたい。並んで写真も撮ったしね。

Guidoはおとな
604デフォルトの名無しさん:2008/02/23(土) 13:35:24
>>598
> 「いろんな文法の変更を試している人がいるから、その中のひとつとして考えてみる」という ことであった。

日本語訳:
その質問、あなたで百万回目ですから。
605デフォルトの名無しさん:2008/02/23(土) 14:01:24
GuidoとRubyの間には、同じ言語の創始者としての共感のようなものがあるんだろうな。
俺たちみたいに、匿名掲示板で溜飲を下げている一般ピープルには想像もつかないのだけれど。
606デフォルトの名無しさん:2008/02/23(土) 14:04:56
matzから見たGuidoとの関係: 同じ言語の創始者としての共感がある
Guidoから見たmatzとの関係: この手のイベントで握手を求めてくる百万人の1人
607デフォルトの名無しさん:2008/02/23(土) 14:05:54
>>605
GuidoとMatzの間違いじゃね?
608デフォルトの名無しさん:2008/02/23(土) 14:17:29
>>606
禿
609デフォルトの名無しさん:2008/02/23(土) 14:53:20
Guido が松本のせいで日本人を嫌いになりませんように…
610デフォルトの名無しさん:2008/02/23(土) 18:21:18
>Guidoから見たmatzとの関係: この手のイベントで握手を求めてくる百万人の1人
ジード、自分からRuby1.9について質問しまくってたようだから、そういうわけでもないでしょ

にしても、Matz - Guidoの間でこのスレとおんなじ話題が上ってたって言うのは面白いw
611デフォルトの名無しさん:2008/02/23(土) 18:22:13
グ・・・Guido
612デフォルトの名無しさん:2008/02/23(土) 18:22:14
>>610
君にいい言葉を教えてあげよう。
「社交辞令」
613デフォルトの名無しさん:2008/02/23(土) 18:24:31
>>609
guidoってオランダ人だろ?
なら元から(ry
614デフォルトの名無しさん:2008/02/23(土) 18:26:04
615デフォルトの名無しさん:2008/02/23(土) 18:29:05
>>612
ヨーロッパ人はそういう社交辞令的な質問が得意だよね。
616デフォルトの名無しさん:2008/02/23(土) 18:35:15
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
617デフォルトの名無しさん:2008/02/23(土) 19:37:48
Matz「こんな機能どう!凄いよ!」
Guido「そういうのを試してる人もいるよ」(それは10年前に通り過ぎた場所だよ)
618デフォルトの名無しさん:2008/02/24(日) 07:55:37
Rubyの人って独善的でいや。
619デフォルトの名無しさん:2008/02/24(日) 08:12:31
リーダーに独善的でないやつなんていない
620デフォルトの名無しさん:2008/02/24(日) 08:16:16
独善的であることを自覚している人と、
無自覚なまま他者を攻撃し続ける人がいるよね。
621デフォルトの名無しさん:2008/02/24(日) 09:13:09
いいかげんスレ違い
622デフォルトの名無しさん:2008/02/24(日) 11:35:10
>>620 は無自覚なまま他者を攻撃し続ける人
623デフォルトの名無しさん:2008/02/24(日) 13:37:33
>>622はスレ違いに無自覚なまま他者を攻撃し続ける人
624デフォルトの名無しさん:2008/02/24(日) 14:34:06
寛容な終身独裁者だったっけ
625デフォルトの名無しさん:2008/02/24(日) 22:45:42
まあ lambda で複文云々はさておくとしても
「なんでも機能をとりいれる」ではなく
「ほどよいバランスで適切な要素だけを適切に配置」
っていうのが一番重要なんだよね…

perl のワケワカメで不要な暗黙機能満載を体験すれば
誰でも気づきそうなものだが
626デフォルトの名無しさん:2008/02/25(月) 00:03:42
その辺に関しては Python の開発陣は大丈夫そうだな
627デフォルトの名無しさん:2008/02/25(月) 06:25:46
まあ lambda で複文云々を言うのならProcの仕様なんとかしろと…
628デフォルトの名無しさん:2008/02/25(月) 07:46:15
スレ違い止めれ
629デフォルトの名無しさん:2008/02/25(月) 15:13:44
RubyはごちゃごちゃしててPerlとあんまり変わらん
630デフォルトの名無しさん:2008/02/25(月) 21:00:53
そのうちPerlでRubyのコードが動きそうだしな
631デフォルトの名無しさん:2008/02/25(月) 22:27:00
Perl よりは Ruby の方が俺はずっと読みやすいけどな…
どうも Perl とっつきにくい。
632デフォルトの名無しさん:2008/02/27(水) 14:00:29
Perlよりマシかもしれないがそんなに大差ない
二者で比較するのでなく他の多くの言語を考慮すれば
Rubyも読みにくい方に分類される
633デフォルトの名無しさん:2008/02/27(水) 14:07:43
ここは off-side rule について議論するスレですよ?
ttp://foldoc.org/?off-side+rule
634デフォルトの名無しさん:2008/02/27(水) 15:51:13
> Rubyも読みにくい方に分類される
釣りにもなってない
635デフォルトの名無しさん:2008/02/27(水) 20:14:44
事実を書いているんだ
ミクとは違うのだよミクとは
636デフォルトの名無しさん:2008/02/27(水) 20:53:03
オレもRubyは読みにくいと思う。
スクリプトの中ではPHPが一番読みやすい。
637デフォルトの名無しさん:2008/02/27(水) 22:24:48
それだとなでしこ最高?
638デフォルトの名無しさん:2008/02/28(木) 21:45:57
ECMAScript 4 が最強
639デフォルトの名無しさん:2008/02/28(木) 21:56:25
>>638
でもまともに使える実行環境が無いよね
640デフォルトの名無しさん:2008/02/28(木) 22:01:01
ActiveECMAScriptやIronECMAScriptなんてのを期待
641デフォルトの名無しさん:2008/02/29(金) 01:05:46
ECMAScript って、generatorの中に、文字列書いてたり、
var がいるのかいらないのかわからんかったり、()の省略ができるときと
できない時が混ざってて気持ち悪かったり、足し算で意味わからないcoerceがおこったり
するウンコ的な言語のこと?
642デフォルトの名無しさん:2008/02/29(金) 04:48:08
>>636
               .|   |  | |   |    |  | |   |   |   || | |
               .|   |  | レ  |    |  | |   |  J   || | |
    ∩___∩    |   |  |     J    |  | |  し     || | |
    | ノ\   ,_ ヽ  .|   レ |      |  レ|       || J |
   /  ●゛  ● |   .J      し         |     |       ||   J
   | ∪  ( _●_) ミ             .|    し         J|
  彡、   |∪|   |              .J                レ
 /     ∩ノ ⊃  ヽ
 (  \ / _ノ |  |
  \  "  /  | |
   \ / ̄ ̄ ̄ /
      ̄ ̄ ̄ ̄
643デフォルトの名無しさん:2008/02/29(金) 10:03:58
ここは off-side rule について議論するスレですよ?
ttp://foldoc.org/?off-side+rule

ECMAScriptはLLスレか?
644デフォルトの名無しさん:2008/03/24(月) 09:51:15
def hoge(a):
  a.sort(lambda x,y: x - y)
return a
このhoge自体をlambdaで定義しようとして
hage = lambda a: a.sort(lambda x,y: x - y)
としてもsort後のaの値は返せないんですよね
hage = lambda a: a.sort(lambda x,y: x - y), return a
みたいに複文にすると怒られるし・・・
645デフォルトの名無しさん:2008/03/24(月) 10:03:41
誤爆?
646デフォルトの名無しさん:2008/03/24(月) 11:43:53
>>644
sortとsortedの違いは判る?
647デフォルトの名無しさん:2008/03/24(月) 12:49:23
>>646
解決しました。
ありがとうございました。
hage = lambda a: sorted(a, lambda x,y: x - y)
648デフォルトの名無しさん:2008/03/24(月) 14:04:06
>>644
入門書嫁。
649デフォルトの名無しさん:2008/03/30(日) 12:23:46
age
650デフォルトの名無しさん:2008/05/22(木) 04:00:43
水干
651デフォルトの名無しさん:2008/10/13(月) 17:35:04
for i in xrange(3):
  p i
for i in xrange(4):
 p i
それぞれスペースの数が違ってても大丈夫なんですか?

652デフォルトの名無しさん:2008/10/13(月) 17:39:04
p "それぞれブロックが閉じているので大丈夫です"
653デフォルトの名無しさん:2008/12/31(水) 11:59:02
age
654デフォルトの名無しさん:2009/01/01(木) 00:16:13
sage
655デフォルトの名無しさん:2009/02/08(日) 23:15:16
python3の資料見たら相変わらずindent問題が直ってないのな。
後方互換性がなくなると聞いてワクワクしながら見てみたらがっかりだった。
656デフォルトの名無しさん:2009/02/08(日) 23:41:43
インデントに問題なんてあったっけ?
657デフォルトの名無しさん:2009/02/09(月) 07:08:19
>>656
インデントレベルのヒューマンエラーでブロックが変わる
結果作業量増加要因になってる。
(この式は本当はどのブロックに束縛されたいのか?等々・・)
{}でも()でもいいんだけどブロックは明示してくれないと困る。
python3ではちゃんと直すものだと思ってただけにがっかり。
658デフォルトの名無しさん:2009/02/09(月) 07:20:37
そもそもインデントでブロックを明示する言語なんだからそんなの導入するわけないじゃん

エディタの機能でどうにでもなるしな
emacsだと指定範囲のインデントを1段下げるとか上げるとかいうキーバインドがあって
これで俺は不便を感じたことはない
659デフォルトの名無しさん:2009/02/09(月) 07:31:37
レベルが低い。5点。
次どうぞ。
660デフォルトの名無しさん:2009/02/09(月) 07:55:06
>>658
emacsでインデントの調整はできるけど、逆に言えば調整だけの支援機能なんだよね。
人のコードもさることながら、自分のコードでもこれってどっちに束縛なのかと悩まざるを得ないことがある。
mergeする時などは最悪だねえ。

まあ手間のかかる体系だよ。
661デフォルトの名無しさん:2009/02/09(月) 08:11:23
どっかからコピーしてきたらすぐにインデントの段数を合わせればいいだけじゃないの?
662デフォルトの名無しさん:2009/02/09(月) 08:22:33
2tab 4tab混在ソースとかなんの罰ゲームかと思う時があるねw
663デフォルトの名無しさん:2009/02/09(月) 12:32:09
エディタの置換機能も満足に使いこなせない奴は何使っても苦労するだろ?
664デフォルトの名無しさん:2009/02/09(月) 12:56:43
置換機能で解決する問題じゃないだろ
665デフォルトの名無しさん:2009/02/10(火) 01:01:52
普通に解決するし(w
666デフォルトの名無しさん:2009/02/10(火) 11:28:18
スーパータイヤ人に直してもらえ
667デフォルトの名無しさん:2009/02/10(火) 11:35:51
while
 if
  処理
 //if
//while

こんな表記すればいいんじゃね?
668デフォルトの名無しさん:2009/02/10(火) 12:56:40
なるほど
ありがとうございました
669デフォルトの名無しさん:2009/02/10(火) 13:37:21
ほ ん と う に ありがとうございました
670デフォルトの名無しさん:2009/02/10(火) 14:45:36
670
671デフォルトの名無しさん:2009/02/10(火) 17:53:10
>>1
否、というか全く、くだらん。
私はProlog。インデントなどすることはない。
672デフォルトの名無しさん:2009/02/11(水) 05:40:26
>>657
そういうあなたには、こんなソース

void func(void) {
  if (expr1) {
    ....
    if (expr2) {
      ...
    }} else {
      printf("バーカ\n");
  }
}
673デフォルトの名無しさん:2009/02/11(水) 10:04:41
>>672
問題はそういうソースは、エディタやlintみたいなのでインデントを自動的に修正できる。
だが、Pythonはできない(意味がかわってしまうから)
674デフォルトの名無しさん:2009/02/11(水) 14:02:52
冗長なほうが優れているというのならXML風だよな
675デフォルトの名無しさん:2009/02/13(金) 04:30:58
>>673
開発環境が自動的に修正する機能を持っていたとしても、
そんな機能「ウザ」と言ってOFFにしちゃう奴が大多数。
676デフォルトの名無しさん:2009/02/13(金) 07:59:33
そうなん?オートインデントとか使わないのかな・・・(冗談だよ)

スニペットの自動補完みたいなのとか慣れると便利だよ
if 書いてENTERで endおぎなったり、{ ENTER で } 書いてくれたりする奴
多分、emacsとかvimとかは昔からあるんだろうけどさ
677デフォルトの名無しさん:2009/02/13(金) 20:03:40
indentが壊れるのを気にする暇があったら、svnかgitに突っ込んどけ。
678デフォルトの名無しさん:2009/02/13(金) 22:54:08
オートインデントは俺マジで切ってるけど
というか勝手にソースに手をつけるようなエディタ機能は全般的に嫌い
679デフォルトの名無しさん:2009/02/14(土) 13:05:18
それだと、今のIDEとか切れそうになるぞw
680デフォルトの名無しさん:2009/02/14(土) 13:35:08
インデント付けないと読み難い制御構造ということ自体、
問題というか「恥ずかしい」ことなのではないかな。
681デフォルトの名無しさん:2009/02/14(土) 16:07:27
あーよくいるよな大学とかに。
まったくインデントしないでCやJavaを書く人。
682デフォルトの名無しさん:2009/02/15(日) 06:57:44
俺はcatでCを書くが何か?
683デフォルトの名無しさん:2009/02/15(日) 09:27:07
echoで書くよりマシ。
684デフォルトの名無しさん:2009/02/15(日) 11:44:22
>>683
今どきのシェルだと、catよりecho(つーか、"")のほうが多機能だぞ。
685デフォルトの名無しさん:2009/02/17(火) 22:06:00
コード投稿しようとしたらサイズ制限に引っかかって泣く泣く先頭のスペース消しました
686デフォルトの名無しさん:2009/03/17(火) 23:31:53
C以来、プログラムは自由構文が当たり前だと思っていたが、
まさかFORTRANみたいなインデントを強制される言語が使われるようになるとは思わなかった。
Pythonに慣れると変な癖が付きそうなので触る気はない。OOPやるならRubyで十分。
687デフォルトの名無しさん:2009/03/17(火) 23:38:04
Haskell、Clean、F#(の#lightモード)あたりもインデントでブロックを
表現するんだけどね(オフサイドルールって奴)

ぶっちゃけPythonのインデント如きにガタガタ言ってる人は認識が古いんで
改めたほうがいいよ
688デフォルトの名無しさん:2009/03/17(火) 23:43:42
COBOLでもやっとけ
689デフォルトの名無しさん:2009/03/17(火) 23:45:18
関数型のかの字も知らずに出てくるのはFORTRANやCOBOLか
老害って哀れだね
690デフォルトの名無しさん:2009/03/17(火) 23:50:24
numpy/scipyでblasには大変世話になってるので、
Fortranを馬鹿にすんな
691デフォルトの名無しさん:2009/03/18(水) 02:01:55
FORTRANやCOBOLの桁強制とPythonやHaskellのインデントはちと性質が違うと思うなぁ
692デフォルトの名無しさん:2009/03/18(水) 02:56:43
インデントは強制されてもいいけど、尻切れトンボみたいにインデントがついた形のまま終わるのがとにかく嫌いだ。
コメントで}とかendとか書いておけばいいことだけど、どうせ強制するならインデントの終わりも
きちんと書かないといけないように強制するなら許せる。
とにかくソースが美しくないから使いたくないし見たくない。
693デフォルトの名無しさん:2009/03/18(水) 03:18:35
>>692 あー俺逆。馬鹿みたいにendendendendendendendendって書くのだめ。
Lispで超カッコ作った人の気持ちが半分だけわかるというか。
まあendないとパンツ履いてないような心もとなさがあるのもわかるけどね。
694デフォルトの名無しさん:2009/03/18(水) 11:04:40
オフサイドルールは、数学の記法から ISWIM で取り入れられたもので、
>>691 の言う通り COBOL や Fortran とは別物。
てかひさしぶりにこのスレが伸びたのを見た気がする。
695デフォルトの名無しさん:2009/03/18(水) 11:14:04
>>687
それの中で一番メジャーなのPythonなのに、Pythonごときでっていいかたわないかとw
696デフォルトの名無しさん:2009/03/18(水) 11:15:38
YAMLはオフサイドルールでブロックを表現するんだが
endマンセーでオフサイドルールに我慢できないという
RubyユーザはYAMLを使わないのだろうか
697デフォルトの名無しさん:2009/03/18(水) 11:16:26
>>695
Python「のインデント」如き
とPython「如き」では日本語として意味が違うよ
698デフォルトの名無しさん:2009/03/18(水) 11:37:12
RubyだとYAMLにするよりも直接書いてしまうほうが多いような気もする。
699デフォルトの名無しさん:2009/03/18(水) 12:54:55
それはRubyのリテラル表記で書くってこと?
ヤメテクレー
700デフォルトの名無しさん:2009/03/18(水) 13:19:39
読む分には是、書く場合は非
701デフォルトの名無しさん:2009/03/18(水) 15:17:54
YAML は一見すると簡単そうなのに構文規則が複雑すぎる。
一刻も早く滅んでほしい。

702デフォルトの名無しさん:2009/03/18(水) 16:07:21
生きのこるのはJSONか?
703デフォルトの名無しさん:2009/03/18(水) 18:19:39
JRubyです
704デフォルトの名無しさん:2009/03/19(木) 04:25:09
>692-693
俺はC系から入ってLispに行ってからPython、Rubyと覚えたからどっちの気持ちも解るw
C→Lispの時は驚いたよ。「括弧は最後の行に纏めるのが良いスタイル」なんだもん。
だが慣れてしまうとRubyのendendendendに辟易。
…でも結局、そのendendendendにも慣れ始めている俺が居る。
705デフォルトの名無しさん:2009/03/19(木) 07:10:03
>>696
つ、つられてやるぞ!
元々XMLはRubyにもまして、end臭くて、冗長すぎるからああなったという経緯がある

>>701
そうか?HashとArrayしかないと考えたら全然難しくないよ
706デフォルトの名無しさん:2009/03/19(木) 07:32:34
妙なエスケープが多いってことじゃね?
707デフォルトの名無しさん:2009/03/19(木) 10:33:19
スルー推奨
708デフォルトの名無しさん:2009/03/19(木) 19:24:41
>>704
692だけど、確かに今のLISPのソースはカッコを最後にまとめてるね。
大昔LISPを勉強したとき、これでえらく苦労したのを覚えてる。
当時はソースを紙に打ち出して赤ペンでカッコの対応をチェックしてた時代で、
目視でカッコの対応をチェックするのはとても大変だった。
今はエディタでカッコ対応チェックしてくれるから楽だけどね。
PythonをRubyの親戚と見ると違和感あるけど、LISPに似てると思って見ればアレルギーも少しはおさまるのかな。
でも、Cで関数の最後に}が並んでたらやっぱり嫌だな。
709デフォルトの名無しさん:2009/03/19(木) 19:57:55
Lispのコードを読むときはカッコなんて見ない(特に閉じカッコは)
インデントだけ見る
EmacsなしでLispのコードを書く気はしない
かな

そういう意味ではオフサイドルールはそれなりに合理的だ
見ないものは最初から無いし書く必要が無い
高機能エディタのサポート無しでも書くのに困らない
逆に自動整形が効かない弱みがあるが

まあLispの場合は全てがS式であることが言語の力だから、あれは仕方が無い
710デフォルトの名無しさん:2009/03/20(金) 00:08:20
Lisp系はある意味清々しいよな
演算子の優先順位も、構文解析の結合度も、全て自分で書くんだから
人間がパーザやってる感じがするが、それ故に優先順位の間違いは無い
711デフォルトの名無しさん:2009/03/20(金) 14:49:41
スルーパス出すために
pass文があるんですね
712デフォルトの名無しさん:2009/03/20(金) 14:51:54
>>705
hash と array しかないんだったら JSON で充分
713デフォルトの名無しさん:2009/04/17(金) 07:08:09
結局pythonのコードはインデント狂わすウィルス出てきたら終りだね
空白だと一見気付かないから
なぜか上手く動かない
で対策も遅れる
714デフォルトの名無しさん:2009/04/17(金) 07:29:42
空白文字部分を表示するエディタ使ってますが何か?
715デフォルトの名無しさん:2009/04/17(金) 07:38:55
じゃあインデント狂わすウィルスが出てくるまでPython最強だね。
716デフォルトの名無しさん:2009/04/17(金) 07:54:55
それなら、かっこ、コンマ、改行とかを狂わすウィルス作る方が効果的だろ
717デフォルトの名無しさん:2009/04/19(日) 14:52:52
知らぬ間に意味が変わってるのがいいんじゃないか
718デフォルトの名無しさん:2009/04/21(火) 20:04:00
そういうバグが一番たちが悪い。自分で間違ってるはずがないと思い込んでるところが一番発見しにくいからね。
719デフォルトの名無しさん:2009/07/27(月) 11:51:10
メソッド内でself強制なのはわかるが、引数にselfは要らない
720デフォルトの名無しさん:2009/07/27(月) 12:20:53
スレタイ
721デフォルトの名無しさん:2009/08/04(火) 16:17:40
ただ、変に書きすぎると右にずれてきて見辛くなる
722デフォルトの名無しさん:2009/08/04(火) 16:45:34

そういうときはモジュールか関数に吐き出す時期
723デフォルトの名無しさん:2009/08/05(水) 14:18:13
改行抜けただけで崩壊w
724デフォルトの名無しさん:2009/08/05(水) 17:25:51
その危うさが楽しいw
725デフォルトの名無しさん:2009/08/05(水) 20:14:03
Lispは括弧1個間違えると読み込み終了時に初めてエラーだとわかる。
最初に出てくるエラーはS式として括弧が足りない、多いというもの。
まず括弧の数を合わせないと構文が正しいかのチェックすらできない。
つまり修正に2工程掛かる。

Cはセミコロンが抜けたらその付近で構文エラーになり止まる。
これは文と式を分けている効果であり、良く考えて作られていると言える。

Pythonも文と式に分かれている以上、ある範囲内で何かおかしい、
ぐらいは判るんじゃないかと。
726デフォルトの名無しさん:2009/08/05(水) 20:16:48
Lispには及ばないが、むしろC言語のセミコロン抜けは解りにくい部類
セミコロン抜けは抜けた行じゃなくて、次の行のエラーになるからね
727デフォルトの名無しさん:2009/08/05(水) 20:19:31
次の行というか、文の終端記号ごとだよ。
728デフォルトの名無しさん:2009/08/06(木) 01:19:49
HTMLから脈々と続くネットデファクトとも言えるデータ形式で
複数スペースを解釈しないんだから、pythonは不幸なんじゃないか。
python説明するWebページ作るのって苦労しない?
729デフォルトの名無しさん:2009/08/06(木) 01:23:00
730デフォルトの名無しさん:2009/08/06(木) 01:25:17
731デフォルトの名無しさん:2009/08/06(木) 06:42:00
>728
2chのPythonスレでは&nbsp;や全角スペース、専ブラのレス参照を活用してることが多いね。
俺はスペース2つ→&nbsp;で置換してから投稿することにしてる。
732デフォルトの名無しさん:2009/08/06(木) 12:16:45
ネットデファクト(笑)

PRE要素使えよ。
733デフォルトの名無しさん:2009/08/06(木) 22:05:24
インデントのせいで2chにソース貼りにくいから、
宿題厨が沸かないのがいいな。
734デフォルトの名無しさん:2009/08/06(木) 23:04:09
735デフォルトの名無しさん:2009/08/08(土) 20:59:59
Web 頁作る件なら PRE でいいだろうし、python に限った話でもない
だだブログで記事を編集しなおしたら勝手に行頭スペースが詰められて焦ったことがある
736デフォルトの名無しさん:2009/08/09(日) 05:22:51
掲示板とかでタグ認識しないところは<PRE>じゃどうしようもないんだけど…
737デフォルトの名無しさん:2009/08/09(日) 12:03:11
だけど何
738デフォルトの名無しさん:2009/08/09(日) 12:47:14
だからpython世界では、宿題のコードください(^q^)はいあげます(^p^)みたいなやりとりはNGってこった。

必要な情報だけ書けば問題ないだろ。
739デフォルトの名無しさん:2009/08/09(日) 14:49:34
>737
どうしようもないんだけど、そういう場合にもPREって言うのか?と
740デフォルトの名無しさん:2009/08/09(日) 18:10:00
んなことでいちいち思考停止してたら、AA職人の足下にも及ばねぇだろ。
741デフォルトの名無しさん:2009/09/19(土) 00:23:27
>>738
ヒット
742デフォルトの名無しさん:2009/10/17(土) 15:54:55
というか、self強制の件については我らが偉大なるGuidoパパ自ら回答してくれているので、まずこれを読め。
http://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay

foo = C()
のとき、
foo.meth(arg) == C.meth(foo, arg)

である。
743デフォルトの名無しさん:2009/12/19(土) 12:07:22
age保守
744デフォルトの名無しさん:2010/04/07(水) 09:07:59
744
745デフォルトの名無しさん:2010/04/08(木) 14:49:14
>>721
> ただ、変に書きすぎると右にずれてきて見辛くなる

そんな初心者カスコードを書けないように抑制する仕様だから。
746デフォルトの名無しさん:2010/04/08(木) 15:22:36
右にずれすぎないようにするだけのために不自然な書きかえをするのは本末転倒だね。
747デフォルトの名無しさん:2010/04/08(木) 16:35:09
つまらんこと気にする香具師は Python 使っていないで文句言うという法則
748デフォルトの名無しさん:2010/04/09(金) 00:06:05
>>746
処理自体が不自然だから見直せって意味だろ。
749デフォルトの名無しさん:2010/04/09(金) 11:55:13
処理はまちがっていない。まちがっているのは、本来なら正しい処理を
文法にあわせるためにいじる必要のある Python の方。

IF の後ろにひとつしか文が書けなかった昔の BASIC でプログラムを
書くために条件をひっくりかえしたりしていたのと同じこと。


750デフォルトの名無しさん:2010/04/09(金) 12:02:02
正しい処理って何よ
ひっくり返しても正しく動くなら正しい処理だろ
751デフォルトの名無しさん:2010/04/09(金) 20:42:52
>>749
ばか?
752デフォルトの名無しさん:2010/04/10(土) 05:58:15
ネストを深くする方が正しいって、具体的にはどんな処理?
753デフォルトの名無しさん:2010/04/10(土) 14:05:30
>>749
合ってる間違ってるの話じゃない。
それに、pythonに限らずほとんどのメジャーな言語ではネストが深くなると分かり辛くなる。
754デフォルトの名無しさん:2010/04/10(土) 14:14:57
>>752
ブロック外の多くの変数を参照せざるを
得ないコード。

関数化したら引数の設定に一苦労。
755デフォルトの名無しさん:2010/04/10(土) 14:15:46
class使えばいいじゃん
馬鹿なの?
死ぬの?
756デフォルトの名無しさん:2010/04/10(土) 14:52:52
例えばWin32APIの各戻り値の判定コードをまじめに書くとifだらけになる
正常系をネストするか、逆転してエラーに落としていくか。
そういうことじゃないかと
757デフォルトの名無しさん:2010/04/10(土) 17:34:24
アレ絶対APIの設計狂ってるよなぁw
ハンガリアンとかも狂気の沙汰だし
758デフォルトの名無しさん:2010/04/10(土) 18:34:03
>>754
classの他にも、ブロック内に関数作る方法もある。
759デフォルトの名無しさん:2010/04/10(土) 19:22:05
>>757
正しい設計だとどうなるの?
760デフォルトの名無しさん:2010/04/10(土) 21:25:04
>>759
正しい設計を求め続けて、しかし商品としては売れない。
761デフォルトの名無しさん:2010/04/10(土) 22:34:18
どうせCOMのような代物ができるだけだから諦めろ
762デフォルトの名無しさん:2010/04/11(日) 00:12:01
>>759
fork, open, creat, brkみたいな最低限なシステムコールしか作らない。
システムコールだけではウィンドウ作ったりはサポートしない。

その結果、サーバクライアントモデルを採用した複雑奇っ怪なウィンドウシステムが出来上がり、
Win32APIでGUIアプリ作るよりもずっと悲惨な事になる
763デフォルトの名無しさん:2010/04/11(日) 14:12:14
>ただ、食わず嫌いなんだろけど、pythonのインデントで〜っていう仕様が好きになれない。

python 使ったことが無い人はそう言うね
だけど python 使ってる人はそんなことは言わない
なぜだかわかるね?

764デフォルトの名無しさん:2010/04/11(日) 14:45:01
仕様に付き合う覚悟が出来ているからであります!
765デフォルトの名無しさん:2010/04/11(日) 18:11:20
>>763
うーん、宗教だからか?
入信者が学習すべき教義の文献は多いみたいだしね。
766デフォルトの名無しさん:2010/04/11(日) 21:28:19
それならブレースだって宗教だな
信者多すぎ
767デフォルトの名無しさん:2010/04/11(日) 21:46:39
インデントはするが、それを制御構造にすることに反感を抱いている人は、ブレース教の洗脳が解けない人。

もともとインデント教とブレース教両方の信者だったのなら、Pythonに移行するときに新しい宗教に入信する必要はない。
768デフォルトの名無しさん:2010/04/11(日) 22:13:42
誤爆にすごい人気だ
769デフォルトの名無しさん:2010/04/11(日) 22:21:26
やっぱり begin〜end が人気なんだな
770デフォルトの名無しさん:2010/04/13(火) 20:28:05
pythonのインデントとlispの括弧は好きだが他は苦手
771デフォルトの名無しさん:2010/04/13(火) 23:22:19
見た目とか書き易さとかはエディタでなんとかすべきじゃね?
っていつも思う
772デフォルトの名無しさん:2010/04/14(水) 10:13:25
そろそろ3Dでソースを(ry
773デフォルトの名無しさん:2010/04/25(日) 23:42:25
最終的にコードは常にインデントしてるからそれはいいんだけど
debug 中にインデントのレベルを変えて実行してまた戻すとかするのは珍しくない
ちょっとその辺は煩わしいと思うけどPythonメインに使ってる人は
その辺は気にならないって感じなのかな
774デフォルトの名無しさん:2010/04/25(日) 23:51:58
>debug 中にインデントのレベルを変えて実行してまた戻すとかするのは珍しくない

初めて聞いた
775デフォルトの名無しさん:2010/04/25(日) 23:54:06
意味は分かる
デバグや実験目的で一時的なコードを挟んだり除去したりするときには
インデントとかどうでもいいので、整えるのがうざいということだろう
776デフォルトの名無しさん:2010/04/25(日) 23:58:12
関数にすればええやん
777デフォルトの名無しさん:2010/04/26(月) 07:27:14
それよりも、別のところからコピペで持ってきたのをインデント整えるのがめんどくさい
778デフォルトの名無しさん:2010/04/26(月) 09:41:28
if 1:
  コード
でいいじゃん同じレベルは同じインデントが必要なだけで
レベルが違ったらインデント深すぎな分には大丈夫だよ
ハードタブはソフトタブx4でカウントされてるみたいだけど
779デフォルトの名無しさん:2010/04/26(月) 09:56:53
何それ、こわい。
780デフォルトの名無しさん:2010/04/26(月) 12:54:44
> ハードタブはソフトタブx4でカウントされてるみたいだけど

8だよ
781デフォルトの名無しさん:2010/04/26(月) 13:04:56
ソフトタブってふつーインデントレベル1段分のことを言うんじゃないの?
ハードタブを計るのはふつー空白の個数だと思うけど。
782デフォルトの名無しさん:2010/04/26(月) 21:46:02
>>776
debug 中にテストするの一々新しい関数作れっていうのはもっとウザいな
783デフォルトの名無しさん:2010/09/11(土) 16:09:37
インデントに文句言ってる香具師のほとんどは
食わず嫌い
784デフォルトの名無しさん:2010/10/10(日) 11:52:42
俺は、インデントで制御構造を表せられるから、
python使ってる。
じゃなきゃ使わない。
785デフォルトの名無しさん:2010/10/10(日) 13:17:08
Cが登場した頃に、構文が記号的すぎると言われた。
主に++, --, ?:, *, &などだが、{ }もその中に含まれていた。
begin endじゃまずいのかと…
786デフォルトの名無しさん:2010/10/10(日) 14:19:17
そりゃCが登場した頃のALGOL系はBEGINやDO〜ENDでブロック表すのがほとんどだったからだろ
787デフォルトの名無しさん:2010/10/10(日) 14:22:05
そりゃPythonの登場した頃のC系は{ }でブロック表すのがほとんどだったからだろ
788デフォルトの名無しさん:2010/10/10(日) 14:24:27
結局そんなところなんだよね、反発なんて
慣習から色々言われるんだけど、最終的には割とどうでもいい
789デフォルトの名無しさん:2010/10/10(日) 20:43:23
俺は蛇使いだが、しかし、インデントで制御構造表現するデメリットもあると思うぞ。

やっぱり、if-elseや、for/whileとかで、ブロックが長くなると、構造が把握しづらい。
そうならないように書くのが理想だけど、仕事のプログラムとかになるとやっぱり
そうもいかないってところも散見されるわけで。

あとからソースを整理、なんてときに、インデント間違って、エンバグしちゃうとか
ってしばしばあるw
790デフォルトの名無しさん:2010/10/10(日) 20:54:11
そんな酷い職場でもPythonは使われるようになったんすね
791デフォルトの名無しさん:2010/10/13(水) 00:00:48
>あとからソースを整理、なんてときに、インデント間違って、エンバグしちゃうとか
>ってしばしばあるw

引退しろ
同じプロジェクトに居たら首にする
792デフォルトの名無しさん:2010/10/13(水) 09:02:09
>>791
それくらいのミスでクビにしてたら、
すぐに誰もいなくなる。w

自分もちゃんとクビにするようにな。
793デフォルトの名無しさん:2010/11/01(月) 14:42:58
http://twitter.com/yukihiro_matz/statuses/29317109670

yukihiro_matz: 英語圏でRubyとPythonを比較する記事を見ることが少なくなってきた
のは、RubyとPythonでクラスタが分離してきたからか。逆に日本語でRubyとPythonを
比較 する記事を見かけるのは国内でのPythonの地位が向上したからか。

               ∩_
              〈〈〈 ヽ
      ____   〈⊃  }
     /⌒  ⌒\   |   |
   /( ●)  (●)\  !   !
  / :::::⌒(__人__)⌒:::::\|   l
  |     |r┬-|       |  / <こいつ最高にアホだお
  \     ` ー'´     //
  / __        /
  (___)      /
794デフォルトの名無しさん:2010/11/01(月) 15:08:54

               ∩_
              〈〈〈 ヽ
      ____   〈⊃  }
     /⌒  ⌒\   |   |
   /( ●)  (●)\  !   !
  / :::::⌒(__人__)⌒:::::\|   l
  |     |r┬-|       |  / <こいつ最高にアホだお
  \     ` ー'´     //
  / __        /
  (___)      /
795デフォルトの名無しさん:2010/11/11(木) 21:26:31
>>95
やってみたらSyntax Errorになった
796デフォルトの名無しさん:2010/11/12(金) 01:24:45
>>795
こうしたら動いたお!

result = []
indent = 0
for c in """
for i in range(10): {
if data[i]==3:
break
}else: {
print "NOT FOUND"
}
""":
    if c == '\n':
        continue
    elif c == '{':
        indent += 1
        result.append('\n' + '\t' * indent)
    elif c == '}':
        indent -= 1
        result.append('\n' + '\t' * indent)
    else:
        result.append(c)

exec(''.join(result))
797デフォルトの名無しさん:2010/11/12(金) 20:03:28
ちょw
798デフォルトの名無しさん:2011/01/24(月) 09:08:14
ttp://hibari.2ch.net/test/read.cgi/tech/1288342460/921

> for a in b:
>   while a < 100:
>     print '''なんとかかんとか
> ああだこうだ
> どうしたこうした
> '''
> このインデントの掻痒感はどうにかならないの?

こんな話題があったよオだが
799デフォルトの名無しさん:2011/01/24(月) 22:16:57
>>798
その部分だけインデントが崩れるから、下記のように書きたいってことだろ?
俺も同じ理由でトリプルクォートは使わずに、文字列を1行ずつリストに入れて"\n".join(ls)してる

> for a in b:
>   while a < 100:
>     print '''なんとかかんとか
>     ああだこうだ
>     どうしたこうした
>     '''
800デフォルトの名無しさん:2011/01/24(月) 22:26:17
一行ずつlstripする関数でも書けば?
801デフォルトの名無しさん:2011/01/25(火) 23:36:55
いやそれでも良いんだけどね
ただ、それだけのために1こ関数書くのもなんだかなあって思うから
リストにしてjoinするって形のがよく使うかな
802デフォルトの名無しさん:2011/01/26(水) 06:53:11
>>800
必要なスペースとそうじゃないスペースの区別はどうやって?
803デフォルトの名無しさん:2011/01/26(水) 10:08:17
print re.compile('^ +', re.M).sub('',
         u'''なんとかかんとか
         ああだこうだ
         どうしたこうした
         ''')
804デフォルトの名無しさん:2011/01/26(水) 11:47:53
print re.compile('^\s*\|', re.M).sub(
   '', """|
   |そんなもの
   |   どうとでも
   |  """)
805デフォルトの名無しさん:2011/01/26(水) 16:25:34
for a in b:
    while a < 100:
        print('''なんとかかんとか\n'''
              '''ああだこうだ\n'''
              '''どうしたこうした\n''')
806デフォルトの名無しさん:2011/01/26(水) 18:03:28
for a in b:
while a < 100:
print 'なんとかかんとか'
print 'ああだこうだ'
print 'どうしたこうした'

てかソースを綺麗に見せるためにreモジュールを使うなんて愚の骨頂
うとぅくすぃソースのためにパホーマンスを犠牲にしてんじゃねぇよw
807デフォルトの名無しさん:2011/01/26(水) 18:04:41
>>806
やっちまったなw

こういうことになるからインデントに反対 ならちょっと納得
808デフォルトの名無しさん:2011/01/26(水) 18:05:42
たかだか数行のコードにパフォーマンスとか(笑)
809デフォルトの名無しさん:2011/01/26(水) 18:10:48
>>806
みんな、気を遣って全角スペースを入れていたのに…
810デフォルトの名無しさん:2011/01/26(水) 18:11:39
パフォーマンス云々の前に>>803-804は読みにくいだけで
エレガントな書き方だとは思えない

>>798がpythonに特有の問題みたいになってるけど
どの言語で書いても暗黙的にインデントを使うわけだから
大概そうなるわな
811デフォルトの名無しさん:2011/01/26(水) 18:15:27
py豚スレだけスペース削除を廃止してくだpy m(_ _)m
812デフォルトの名無しさん:2011/01/26(水) 19:35:00
HTMLのソース見れば分かると思うが、スペースが削除されるのは
あなたが使っている表示用ソフトウェアの仕様の問題だ。
813デフォルトの名無しさん:2011/01/26(水) 19:47:26
>>812
それは知らんかった
ところでちゃんと に置き換わってるレスもあるけどどういう仕組み?
814デフォルトの名無しさん:2011/01/26(水) 19:55:38
&nbsp;だろ
  foo
815デフォルトの名無しさん:2011/01/26(水) 20:06:52
&nbsp;
816デフォルトの名無しさん:2011/01/26(水) 20:08:53
&amp;と&nbsp;
↑使えたんだこれ
ねらー歴10年目の衝撃
817デフォルトの名無しさん:2011/01/26(水) 21:07:25
㈱㍊㊾
このへんは板の設定による。
818デフォルトの名無しさん:2011/01/26(水) 22:39:29
print '''|
   |そんなもの
   |   どうとでも
   |  '''.replace('^\s*\|', '')
819デフォルトの名無しさん:2011/01/26(水) 22:57:03
専ブラでV2Cとか使うとコンテキストメニュー使って&nbsp;に変換できる
820デフォルトの名無しさん:2011/01/27(木) 00:35:16
>>798
Cで書かれたオープンソースのコードを読んでみると
printfをゴリゴリ書き連ねてるのが割と多いよ
オレはこの書き方が一番読みやすいと思う。ソースと実際の
表示が視覚的に同じようになるから↓
>>804あたりのはネタとしても実際にどんな表示になるのか
わかりにくいのがよろしゅくない

print "ドラえもん"
print " ・2112年9月3日生まれ"
print " ・ドラ焼きが好き"
821デフォルトの名無しさん:2011/01/27(木) 00:37:54
print "ドラえもん"
print "    ・2112年9月3日生まれ"
print "    ・ドラ焼きが好き"
822デフォルトの名無しさん:2011/01/27(木) 01:40:26
ム板なんて無い方がいいと思うんだけどね。
ここを見ると、2ちゃんねるの悪い面が凝縮していて
気分が悪くなってくるよ・・・
前はたまに見てたけど、今はこのスレ見るのやめたよ。
823デフォルトの名無しさん:2011/01/27(木) 02:15:00
http://yuzuru.2ch.net/test/read.cgi/ana/1293674248/394
> 394 :名無しがお伝えします:2011/01/26(水) 22:36:40 ID:1RQz8hyq0
> ラウンジなんて無い方がいいと思うんだけどね。
> あそこを見ると、2ちゃんねるの悪い面が凝縮していて
> 気分が悪くなってくるよ・・・
> 前はたまに見てたけど、今はあのスレ見るのやめたよ。
824デフォルトの名無しさん:2011/01/27(木) 03:43:32
ネタ元わかるのかw
825デフォルトの名無しさん:2011/01/27(木) 06:58:16
re 使うやつが一番読みやすい俺。

インデントのためだけに print たくさん書く奴は DRY とか知らんのか。
826デフォルトの名無しさん:2011/01/27(木) 07:05:26
まああんまり長くなるようなら普通にtemplateだよな
827デフォルトの名無しさん:2011/01/27(木) 11:18:00
>インデントのためだけに print たくさん書く奴は DRY とか知らんのか。
printを書き連ねるのがDRYに反するという主張なら
嘲笑を超えて爆笑だなwww
828デフォルトの名無しさん:2011/01/27(木) 11:23:05
>>827
頭の悪い奴って覚え立ての言葉を盾にする傾向があるよね
829デフォルトの名無しさん:2011/01/27(木) 13:50:38
コピペでプログラミングする層と
やたらとprintを書き連ねる層はほぼ一致する
830829:2011/01/27(木) 13:56:59
ソースはオレの脳内統計ね
831デフォルトの名無しさん:2011/01/27(木) 13:58:14
               ∩_
              〈〈〈 ヽ
      ____   〈⊃  }
     /⌒  ⌒\   |   |
   /( ●)  (●)\  !   !
  / :::::⌒(__人__)⌒:::::\|   l
  |     |r┬-|       |  / <こいつ最高にアホだお
  \     ` ー'´     //
  / __        /
  (___)      /
832デフォルトの名無しさん:2011/01/27(木) 14:01:17
妄想を根拠に断定するとはけしからんヤシじゃ
833デフォルトの名無しさん:2011/01/27(木) 14:05:34
sageでちちくりあってじゃねーよ
834デフォルトの名無しさん:2011/01/27(木) 14:06:54
>あってじゃねーよ
>あってじゃねーよ
>あってじゃねーよ
>あってじゃねーよ
>あってじゃねーよ

www
835デフォルトの名無しさん:2011/01/27(木) 14:07:16
なにこれ?
琴線に触れたの?
836デフォルトの名無しさん:2011/01/27(木) 14:08:53
>sageでちちくりあってじゃねーよ
ならその誤字レスをageればぁ?w
837デフォルトの名無しさん:2011/01/27(木) 14:09:19
>>818>>820は新しくスレッドを立てて、
そっちでやってね。
838デフォルトの名無しさん:2011/01/27(木) 14:10:01
pass
839デフォルトの名無しさん:2011/01/27(木) 14:10:53
>sageでちちくりあってじゃねーよ
なにこれ?
キーボードからnのキーが外れたの?
840デフォルトの名無しさん:2011/01/27(木) 14:16:00
reを使うくらいなら、

print("abc\n"
    "def\n"
    "ghi\n")

の方がよくないかと思ったが、
既に出てたな。
841デフォルトの名無しさん:2011/01/27(木) 14:34:31
./django/utils/termcolors.py
36 print colorize('first line', fg='red', opts=('noreset',))
37 print 'this should be red too'
38 print colorize('and so should this')
39 print 'this should not be red'
./django/contrib/gis/utils/ogrinfo.py
25 print "data source : %s" % data_source.name
26 print "==== layer %s" % i
27 print " shape type: %s" % GEO_CLASSES[layer.geom_type.num].__name__
28 print " # features: %s" % len(layer)
29 print " srs: %s" % layer.srs
./django/core/servers/fastcgi.py
106 print >> sys.stderr, " Unable to load the flup package. In order to run django"
107 print >> sys.stderr, " as a FastCGI application, you will need to get flup from"
108 print >> sys.stderr, " http://www.saddi.com/software/flup/ If you've already"
109 print >> sys.stderr, " installed flup, then make sure you have it in your PYTHONPATH."

reを使う奴は正規表現を覚えたての初心者だろw
どうしてもprint1個ですませたいなら変数を使って文字列を連結して
最後にprintすればよろし
842デフォルトの名無しさん:2011/01/27(木) 20:49:51
個人的には最初ので慣れてるけど

print u"""
111
 222
  333
"""[1:]

とか。
843デフォルトの名無しさん:2011/01/28(金) 18:22:15
そもそも、その手の文字列はリソースファイルとして独立させておくか、
せめてモジュールグローバル変数で定義しとけ。
ソース中に直値で埋め込んだりするから、そういう姑息な手が要るんだYO!

BLAME_MESSAGE="""アホ
こうやってグローバルで書けば
インデント気にせずに済むだろが"""

class Trash:
  def say():
   print BLAME_MESSAGE
844デフォルトの名無しさん:2011/01/28(金) 20:03:46
ネ申あらわる
845デフォルトの名無しさん:2011/01/29(土) 09:05:06
俺ならこう書くな
MESSAGE = ["おはよう",
      "こんにちは",
      "こんばんは"]

for i in MESSAGE:
  print i
846デフォルトの名無しさん:2011/01/29(土) 15:58:30
>>845
せめて、こうしろ。
MESSAGE = '\n'.join([
  "こうすりゃ",
  "joinは一度だけしか",
  "評価しなくてすむ"])

if you.dontUnderstand(this.way):
  print MESSAGE
847デフォルトの名無しさん:2011/01/29(土) 21:13:35
こういう、すぐ捨てる、変更の必要もないiterable作るとき、tupleかlistどっちがコスト少ないんだろ?
848デフォルトの名無しさん:2011/01/29(土) 21:15:21
むしかえすけどメソッドの第一仮引数にわざわざselfを書くことが強要されていることを
神扱いしてるひとってなんなの?
849デフォルトの名無しさん:2011/01/29(土) 22:13:02
>>848
神扱いしてる人は、見たことないが、いたら俺もなんなの?って思うだろうなぁ。
けれど、あれは、書かない方が不自然だよ。 そしてこのスレはインデントのスレだからスレ違いだよ。
850デフォルトの名無しさん:2011/01/29(土) 22:19:07
引数はともかく
メソッド内でインスタンス変数を使うときにself.付けてるうちに
ソースがself.だらけになって気持ち悪くなることがある
インスタンス変数にしなくてよい変数にまでself.付けてしまったり
特にGUIのフレームワーク使ってるときにその症状が出る傾向が強い
851デフォルトの名無しさん:2011/01/29(土) 22:45:48
>>846
これ書き込んだすぐに、思いついたんだが、
こういう最適化っていちいち気にしながら
みんな書いてるの?

とりあえず、ざっとつくって必要そうなとこだけC言語で作り直すんだが。
パフォーマンスとか気にするなら最初からC言語で書くな。
852デフォルトの名無しさん:2011/01/29(土) 22:46:24
>>848
おかげでメソッドと関数を相互変換できる。
853デフォルトの名無しさん:2011/01/30(日) 00:45:02
>>851
そうすることでコンマ何ミリ秒遅くなるとか、そういうことは考えてないし、何度も呼び出される処理でもない限り、考えるのは不毛だと思う。
パフォーマンスの低下ってより、明らかに無駄なものがコード中に転がってたら気持ち悪いから排除したいだけ。
854デフォルトの名無しさん:2011/01/30(日) 00:54:49
リストよりタプルの方が生成コストが小さいとわかっていても
よほどデータが多くなければ,()を使うタプルより[]を使うリストをよく使う
同じ理由でジェネレータ式よりリストの内包表記
855デフォルトの名無しさん:2011/01/30(日) 01:38:17
>インスタンス変数にしなくてよい変数にまでself.
self明示しない言語の方が手間がかからない分、
無駄にインスタンス変数作ってしまいがちのような気がするんだが
856デフォルトの名無しさん:2011/01/30(日) 02:05:14
へ?
857デフォルトの名無しさん:2011/01/30(日) 09:23:34
変数の話はよそでやれ
858デフォルトの名無しさん:2011/01/30(日) 15:12:02
Pythonってワンライン記述できる?
コマンドラインだけで簡単な処理を行いたい場合ってどうするわけ?
859デフォルトの名無しさん:2011/01/30(日) 16:02:53
860デフォルトの名無しさん:2011/01/30(日) 21:58:32
できるけど向かない。
execとエスケープシーケンスがある限り、Pythonでできることは全部、一行でもできるが。
861デフォルトの名無しさん:2011/01/31(月) 20:48:20
>>798
今さらかもしれないけど、inspect.cleandoc()使えば楽だよね、これ

>>> from inspect import cleandoc
>>> cleandoc("""abc
...          def
...          ghi
...          """)
'abc\ndef\nghi'

先頭行もインデントするならtextwrap.dedent()も使える
(こっちは先頭と末尾の改行を保持する)

>>> dedent("""
...        abc
...        def
...        ghi
...        """)
'\nabc\ndef\nghi\n'
862デフォルトの名無しさん:2011/01/31(月) 22:32:07
すっきりしないね
863デフォルトの名無しさん:2011/02/05(土) 14:00:55
きもいな
864デフォルトの名無しさん:2011/02/05(土) 18:40:09
>>846のほうが30倍ぐらいマシに見えるのは何故だろう?
865デフォルトの名無しさん:2011/02/07(月) 05:11:22
cleandocの方はdocstringと解釈が一緒なので、そんなに違和感ないけどなー
数箇所くらいじゃimportしてまで使う気にならないので、あんまり使う機会はないけど
インデントが気になっても、ほとんどの場合>>840>>843で間に合う
866デフォルトの名無しさん:2011/04/30(土) 16:59:13.08
インデント強制ってなんだよと思っていたが、慣れると結構良い物だ。
867デフォルトの名無しさん:2011/05/02(月) 16:03:00.41
後から外側にループを追加するのが面倒くさい
868デフォルトの名無しさん:2011/05/02(月) 19:13:05.07
漏れはタブ文字ではまった
869デフォルトの名無しさん:2011/05/03(火) 04:19:33.63
俺はエディタの設定でタブ文字表示させてる
870デフォルトの名無しさん:2011/05/03(火) 05:02:35.25
>>867
そんなのエディタの工夫でどうにでもなる。
emacsのpython-mode楽だぞ。
871デフォルトの名無しさん:2011/05/03(火) 09:35:03.36
emacsって早く滅びないかな?
872デフォルトの名無しさん:2011/05/06(金) 00:18:45.64
ブロックがカッコだと、vimで%押したら対応するカッコまで飛ぶからv%>でブロックごとインデントあげられるんだが。
Pythonの場合、どうすればいいの? vim使うのやめるとかそういうのなしで。
873デフォルトの名無しさん:2011/06/03(金) 08:35:53.98
end
874デフォルトの名無しさん:2011/06/20(月) 01:52:18.19
オフサイドルールは、

・ワンライナーと相性が悪い
・ウェブページのテンプレートライブラリと相性が悪い
・プログラムサイズの圧縮ツールと相性が悪い
・プログラムの難読化ツールと相性が悪い
・プログラムの自動整形ツールを頼る事が出来ない
・老眼と相性が悪い
875デフォルトの名無しさん:2011/06/20(月) 01:58:00.89
・コピペが面倒
・後から大外にブロックを追加するのが面倒
・エディタを選ぶ
876デフォルトの名無しさん:2011/06/20(月) 16:59:35.33
・構文が BNF で表現できない
・BNF 用のパーサーが利用できない
877デフォルトの名無しさん:2011/06/21(火) 21:19:53.17
・言語開発者の頭が悪い
・言語利用者の頭も悪い

実際PythonってOOP理解できない低能の逃げ道に使われてるんだよな
おまえらの書いたゴミと一緒に氏んでくれって思うわ
878デフォルトの名無しさん:2011/06/21(火) 21:44:21.38
>>876
これ困るのって限られるだろw
879デフォルトの名無しさん:2011/06/21(火) 22:44:18.15
>>877
Rubyなんとかと違ってむしろモジュール化とかクラス化とか後からリファクタリングし易い言語なんだぜ
880デフォルトの名無しさん:2011/06/21(火) 23:06:17.74
Python 使いってやたらと Ruby を意識するよなw
世の中もっと沢山言語があるのに...
881デフォルトの名無しさん:2011/06/21(火) 23:10:13.14
Ruby 使いってやたらと Python を意識するよなw
世の中もっと沢山言語があるのに...
882デフォルトの名無しさん:2011/06/21(火) 23:13:12.24
それは無理があるわw

皮肉は筋が通ってないと意味無いんだぜ
883デフォルトの名無しさん:2011/06/21(火) 23:18:58.33
>>877
バカに、バカでも使えるものが作れるとは思えないし、
スレタイも読めない奴に、人がバカか否か見抜けるとは思えない。
884デフォルトの名無しさん:2011/06/21(火) 23:21:10.40
掲示板でバカ、バカ書いてる人は、どのくらい頭が良いのかな?
885883:2011/06/21(火) 23:25:34.11
>>884
もし、僕のことを言いたいのであれば。
「頭が悪い」と「低能」を使い分ける意義が分からなかったし、めんどくさいので「バカ」に統一しただけだよ。

言葉尻だけ捉えてどうこう言うようなバカにはなりたくないものだ。
886デフォルトの名無しさん:2011/06/21(火) 23:28:34.44
言葉尻w
887デフォルトの名無しさん:2011/06/21(火) 23:30:23.65
「バカって言うやつがバカなの」って子供の頃に聞いた気がするが、何だかんだで上手い言葉だよな
888デフォルトの名無しさん:2011/06/21(火) 23:30:48.01
人がバカと言わずにはいられない時って、どんな時だろうな...
889デフォルトの名無しさん:2011/06/21(火) 23:34:02.21
またruby厨の荒らしか
890デフォルトの名無しさん:2011/06/22(水) 02:37:41.34
角電池
891デフォルトの名無しさん:2011/06/22(水) 06:31:37.81
煽るだけしか能が無いやつにゃ、制御構造なんてあったもんじゃないから、カッコでもendでもインデントでも何でも一緒だな。
892デフォルトの名無しさん:2011/06/22(水) 08:50:28.69
実際掲示板にいる馬鹿な奴は馬鹿だからな。

そしてそういう馬鹿ほど >>887 みたいに思ってるが、実際のところ馬鹿だ。
893デフォルトの名無しさん:2011/06/22(水) 09:17:42.45
恋人に耳元で囁かれてみろよ。「バ、カ。」もいいもんだ。
894デフォルトの名無しさん:2011/06/22(水) 20:57:05.20
愛情表現ならいいけど、罵倒はちょっとな・・
しかも直接的な言葉を使った罵倒は、大人になると自分へのダメージの方が大きい
895uy ◆KOAgYBL/Xg :2011/06/23(木) 03:06:54.28
pyてょんがRuby様より優れているところって何?
896デフォルトの名無しさん:2011/06/23(木) 05:12:06.76
正直2.0の完成度を高める為なら、1.9.9xxとか900回以上リリースしまくってもいいとは想うw
897デフォルトの名無しさん:2011/06/23(木) 19:41:14.76
中学生のコミッタがいないところかな
898デフォルトの名無しさん:2011/06/23(木) 20:31:52.65
つまり、特に無いって事?
899デフォルトの名無しさん:2011/06/23(木) 21:26:33.12
エディタを半角70文字で右で折り返す設定にすると
900デフォルトの名無しさん:2011/06/23(木) 21:34:49.78
「右に折り返す」って、左から右に書く言語では難しくないか
901デフォルトの名無しさん:2011/06/23(木) 21:39:36.16
「右に折り返す」なんてどこにかいてあるんだ
902デフォルトの名無しさん:2011/06/23(木) 22:11:25.73
インド人禁止
903900:2011/06/23(木) 22:32:13.45
読み間違えました、本当にごめんなさい
904デフォルトの名無しさん:2011/06/23(木) 22:49:52.46
一行が長いと折り返されるからインデントが崩れるというか見辛くなる
みんな全画面表示で書いてるの?
905デフォルトの名無しさん:2011/06/23(木) 23:17:16.41
適当に折れば
906デフォルトの名無しさん:2011/06/23(木) 23:51:15.74
見辛き コードかな
907デフォルトの名無しさん:2011/06/24(金) 02:47:43.49
長い行ってそんなにあるかな?
適切に処理を分けて、モジュールを分けて、としてれば
たまーにしか出てこないと思うんだが
908デフォルトの名無しさん:2011/06/24(金) 21:56:02.48
print("スライムがなかまにはいりたそうにこちらをみているけどどうするよ...")

print("スライムがなかまにはいりたそうに\
こちらをみているけどどうするよ...")

msg0 = "スライムがなかまにはいりたそうにこちらをみているけどどうするよ..."
print(msg0)
のどれが良いですか?
909デフォルトの名無しさん:2011/06/24(金) 22:26:22.69
print('''
スライムがなかまにはいりたそうに
こちらをみているけどどうするよ...
'''.replace('\n', ''))
910デフォルトの名無しさん:2011/06/24(金) 23:04:00.69
print('''
______スライムがなかまにはいりたそうに
______こちらをみているけどどうするよ...
______'''.replace('\n', ''))
のようにすることは出来ますか?
911デフォルトの名無しさん:2011/06/24(金) 23:15:03.72
print("スライムがなかまにはいりたそうに"
      "こちらをみているけどどうするよ...")
912デフォルトの名無しさん:2011/06/25(土) 01:49:01.69
PEPに従うなら、あんまり長い行はないな。
913デフォルトの名無しさん:2011/06/25(土) 07:49:02.74
インデントでしかブロックを表現できない言語で、インデントが崩れたら致命的だからな。
914デフォルトの名無しさん:2011/06/25(土) 11:54:21.43
pythonのインデントに文句言う香具師はpython使ったことが無いアホがほとんど
915デフォルトの名無しさん:2011/06/25(土) 13:02:53.13
セリフとか長くなるものは別に書いておいて、
それをインデックスで参照するようにすればいいのかな?
916デフォルトの名無しさん:2011/06/25(土) 15:28:48.39
Pythonに限らず、別の言語でも普通そうなるんじゃないか?
917デフォルトの名無しさん:2011/06/25(土) 16:00:35.85
918デフォルトの名無しさん:2011/06/25(土) 19:10:32.62
>>908
一番下
919デフォルトの名無しさん:2011/06/25(土) 20:20:04.47
外国で人気があるようだけどUSキーボードでコロンを入力する時に
シフトキーを押すの面倒じゃないのかな
920デフォルトの名無しさん:2011/06/26(日) 00:51:43.31
perlみたいに$%&いらんからな
921デフォルトの名無しさん:2011/06/26(日) 01:37:27.64
だからコロンを使ってみたくなっちゃったのか
922デフォルトの名無しさん:2011/06/26(日) 01:41:53.49
一方rubyは@を使った
923デフォルトの名無しさん:2011/06/26(日) 01:41:55.77
924デフォルトの名無しさん:2011/06/26(日) 01:55:55.79
パーサはコロンなんて必要としてないもんな
925デフォルトの名無しさん:2011/06/26(日) 02:05:11.67
926デフォルトの名無しさん:2011/06/26(日) 02:50:18.71
if a == b: print 'true'
else: print 'false'
みたいに書くときもコロン無しを許可したらインデントと混在出来なくなったってことじゃないのかな
927デフォルトの名無しさん:2011/06/26(日) 08:04:25.68
何かそれ Python らしくない
928デフォルトの名無しさん:2011/06/26(日) 09:14:11.25
Python 的には
print 'true' if a == b else 'false'
929デフォルトの名無しさん:2011/06/26(日) 11:45:07.50
Python3000は惜しかったな、次の4000に期待か
930デフォルトの名無しさん:2011/06/26(日) 14:28:42.20
>>928
つまりコロンなんて無くても良かったって事か
931デフォルトの名無しさん:2011/06/26(日) 14:40:43.09
動作が先にきて条件が後にくるのは後出しじゃんけんみたいで嫌だな
結論を先に書くのは英語っぽいけど
932デフォルトの名無しさん:2011/06/26(日) 21:10:04.10
>>928
print a == b
で良くね?
933デフォルトの名無しさん:2011/06/28(火) 19:02:22.20
a = 0
b = 1

if a == b:
print("フラグが勃った")
else:
print("バッドエンド")

print("フラグが勃った") if a == b else print("バッドエンド")

print(a == b)
↑これだといつまで経っても「フラグが勃った」と表示されないよ。
934デフォルトの名無しさん:2011/06/28(火) 21:59:56.61
えろげでも作ってるの?
935デフォルトの名無しさん:2011/06/29(水) 18:07:50.51
t
e
s
t
936デフォルトの名無しさん:2011/06/29(水) 20:46:49.29
結論は出たみたいだから埋めてくかな
937デフォルトの名無しさん:2011/06/30(木) 05:46:11.47
ume
938デフォルトの名無しさん:2011/06/30(木) 06:05:36.01
python最強
939デフォルトの名無しさん:2011/06/30(木) 06:07:30.38
ume
940デフォルトの名無しさん:2011/06/30(木) 17:35:26.75
hara
941デフォルトの名無しさん:2011/06/30(木) 18:31:01.70
うめ
942デフォルトの名無しさん:2011/06/30(木) 20:25:17.58
千里め
943デフォルトの名無しさん:2011/06/30(木) 22:05:34.56
.
944デフォルトの名無しさん:2011/07/01(金) 00:54:20.32
なんだここは
945デフォルトの名無しさん:2011/07/01(金) 01:09:59.80
このスレが埋まったら、オフサイドルールの問題点の話が本スレに持ち込まれる気がするんだが
946デフォルトの名無しさん:2011/07/01(金) 09:57:28.93
次スレ立てればいいだろ
947デフォルトの名無しさん:2011/07/01(金) 12:31:19.28
勢いが1月で終ってるから誰も来ないでしょ
きのこスレとか再利用すればいいよ
948デフォルトの名無しさん:2011/07/01(金) 12:35:21.02
つ 【オフサイドルール】プログラミング言語文法総合スレ【ダングリングエルス】
949デフォルトの名無しさん:2011/07/01(金) 19:08:28.46
そのスレどの板にあるの?
950デフォルトの名無しさん:2011/07/01(金) 19:17:52.28
次スレの名前候補だろ。
多分長すぎで無理。
【Python】オフサイドルール【Haskell】
ぐらいでいいんじゃね?
951デフォルトの名無しさん:2011/07/01(金) 21:08:16.15
いやまて、スレ立てられる人いるのか?
このまえ全員の忍法帖焼かれたでよ
952 忍法帖【Lv=40,xxxPT】 ●:2011/07/01(金) 22:34:44.65
>>950
継続スレだとわかるようにする方が良いと思います。

【Python】オフサイドルール Part2【Haskell】

オフサイドルール(字下げによってブロックを示す規則)について議論するスレです。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%95%E3%82%B5%E3%82%A4%E3%83%89%E3%83%AB%E3%83%BC%E3%83%AB

前スレ
Pythonに見られるインデントによる制御構造の是非
http://hibari.2ch.net/test/read.cgi/tech/1169473442/


>>951
●持ちならテストスレでLv=10にレベルアップするのに30分しかかかりません。
953デフォルトの名無しさん:2011/07/02(土) 04:01:36.53
【Python】オフサイドルール tab2【Haskell】
954 忍法帖【Lv=24,xxxPT】 :2011/07/02(土) 11:55:09.81
>>951
普通に毎日カキコしてたらこのくらいにはなってるよ
955 忍法帖【Lv=24,xxxPT】 :2011/07/02(土) 12:41:19.92
この前たぶん別のスレ立てたせいかしばらく立てられない
どのスレ立てたのかすら覚えていない
956デフォルトの名無しさん:2011/07/02(土) 13:18:38.52
>>953
【Python】オフサイドルール 2桁【Haskell】

のが短くて良くね?
957デフォルトの名無しさん:2011/07/02(土) 17:22:42.85
俺は年寄りだからオフサイドルールというと Python でも Haskell でもなくて
Occam なんだが……

Occam は Python とちがって、文の途中でも演算子などのあとで改行していいし、
ここでしょっちゅう話題になっている複数行にわたる文字列もインデント可能。
オフサイドルールに関しては Python よりよく考えられていると思う。

958デフォルトの名無しさん:2011/07/02(土) 20:40:23.13
オフサイドルールというのは標準的な用語なんでしょうか?
このスレではじめて知ったものですから。
959デフォルトの名無しさん:2011/07/02(土) 20:44:21.64
プログラミング言語 文法 オフサイドルール でググると良いよ。
自分で調べる事が出来る内容ですから。
960デフォルトの名無しさん:2011/07/02(土) 21:03:31.05
MSDN の F# のところに詳しく書いてありました。
961天使 ◆uL5esZLBSE :2011/07/03(日) 05:34:28.76
これ ; デリミタっていうんだけどさ、よく打ち忘れるよね
Rubyだとつけなくてよくなるんだけど
土方が何をいっても
962デフォルトの名無しさん:2011/07/03(日) 07:01:10.95
天使さん戻っておいでよ
963デフォルトの名無しさん:2011/07/03(日) 08:18:55.87
>>957
しかし、ここではPythonやHaskellのが有名だからスレタイとしては入れにくい
別に、PythonやHaskellに限ったスレじゃないから、一言入れればその言語の話をしたっていいのよ
964デフォルトの名無しさん:2011/07/03(日) 15:22:55.54
Haskell はオフサイドルール強制じゃないのよね
965デフォルトの名無しさん:2011/07/05(火) 18:29:04.60
そうしたら Python 特有のオフサイドルールを扱うべきということ?
966デフォルトの名無しさん:2011/07/05(火) 20:41:34.21
是非が問われるのは Python だけじゃないかな
Haskell はインデントに縛られている訳じゃないから
967デフォルトの名無しさん:2011/07/08(金) 12:34:27.30
Python 専用オフサイド part2
968デフォルトの名無しさん:2011/07/10(日) 20:00:19.39
ume
969デフォルトの名無しさん:2011/07/11(月) 01:10:10.07
てか次なんて立てずともLLバトロワ辺りでやればよくね
970 忍法帖【Lv=7,xxxP】 :2011/07/11(月) 02:25:31.62
python最強
971デフォルトの名無しさん:2011/07/11(月) 06:46:10.12
気にしてるのは Python 使いだけだからね
他の人からすればどうでも良いこと
972デフォルトの名無しさん:2011/07/12(火) 20:15:29.46
タブ文字あかんのか...
973デフォルトの名無しさん:2011/07/13(水) 00:24:05.14
スペースを使えばいいよ
974デフォルトの名無しさん:2011/07/13(水) 19:32:29.17
そろーり
975デフォルトの名無しさん:2011/07/13(水) 21:14:37.22
潜行中
976デフォルトの名無しさん:2011/07/13(水) 23:04:34.81
さげ
977デフォルトの名無しさん:2011/07/14(木) 05:25:27.64
すーっ
978デフォルトの名無しさん:2011/07/14(木) 09:39:16.11
979デフォルトの名無しさん:2011/07/14(木) 09:40:02.43
まん
980デフォルトの名無しさん:2011/07/14(木) 09:40:44.61
981デフォルトの名無しさん:2011/07/14(木) 09:43:20.71
〓∋ ((i))
982デフォルトの名無しさん:2011/07/14(木) 11:32:33.77
pass
983デフォルトの名無しさん:2011/07/14(木) 14:46:20.96
(A∪B)
984デフォルトの名無しさん:2011/07/14(木) 15:51:32.54
A⊇B
985デフォルトの名無しさん:2011/07/14(木) 16:38:02.49
True || False
986デフォルトの名無しさん:2011/07/14(木) 18:24:06.51
A B
987デフォルトの名無しさん:2011/07/14(木) 19:02:14.87
で、次スレのスレタイは、
【Python】オフサイドルール 2桁【Haskell】
で異議ありませんか?
988デフォルトの名無しさん:2011/07/14(木) 19:05:37.18
ええんじゃないの?
989デフォルトの名無しさん:2011/07/14(木) 20:38:41.87
〓∋ *
990デフォルトの名無しさん:2011/07/14(木) 22:23:59.67
いらないでしょ
991デフォルトの名無しさん:2011/07/14(木) 22:27:52.18
あったほうがいいな
992デフォルトの名無しさん:2011/07/14(木) 22:46:10.97
Haskellを入れる入れないの話はどうなったの?
この問題って Python 特有なんでしょ?
993デフォルトの名無しさん:2011/07/14(木) 22:49:31.58
994デフォルトの名無しさん:2011/07/14(木) 23:42:35.69
【Python】オフサイドルール 2桁【Haskell】
http://hibari.2ch.net/test/read.cgi/tech/1310654456/
995デフォルトの名無しさん:2011/07/15(金) 08:49:55.66
> インデントでプログラムの意味が変わる offside rule はいらないですよ。

実際使ってみると気にならないレベルだとわかる
いらんと言う香具師は素人
996デフォルトの名無しさん:2011/07/15(金) 08:50:31.99
●持ちならテストスレでLv=10にレベルアップするのに30分しかかかりません。
997デフォルトの名無しさん:2011/07/15(金) 08:50:55.58
998 忍法帖【Lv=11,xxxPT】 :2011/07/15(金) 08:52:14.96
うめ
999デフォルトの名無しさん:2011/07/15(金) 09:43:56.59
ume
1000デフォルトの名無しさん:2011/07/15(金) 09:45:20.13
【Python】オフサイドルール 2桁【Haskell】
http://hibari.2ch.net/test/read.cgi/tech/1310654456/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。