[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 21:04 / Filesize : 136 KB / Number-of Response : 655
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 22:44:02 ]
議論よろしく。

367 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 14:59:26 ]
>>359
誰が書いてもある程度読みやすくなるようにできているのだよ。つまり、書き手よりも読み手を
重視しているんじゃねぇの? (でも、インデントの階層が深くなると、書いていて分かりづらく
なってくる。それも狙いかもしれんが。)

368 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:13:28 ]
>でも、インデントの階層が深くなると、

それは他の言語でも基本的には同じ問題で
そうなったら大抵は何か考え直すべきとされてるでそ

369 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:37:37 ]
Pythonもいろいろ工夫してるけど
へぼが書くとやっぱり読みにくい

370 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 19:38:58 ]
>>367
そんなに強制したいなら変数の命名規則も強制しろ。
そして変数の名前から型が決まるようにすればいい。

371 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 20:59:40 ]
つまり「ネストの深さ」にも「暗黙の制限」が
かかっているような言語仕様なんですね。
いくらでも深くネストできるけど、やりすぎちゃダメ!という…

372 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:00:27 ]
つシステムハンガリアン

373 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:31:40 ]
>>362>>364>>366
www.python.jp/doc/release/ref/indentation.html
この説明ではdedentと言ってる

374 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:50:46 ]
ついでに関数とかメソッドとかブロックの中の行数も制限しようぜ。
5行以内に。

375 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:27:39 ]
「強制すんな!おれは空白を何個入れるかで自己表現してんだ!」って思うか
「これでアホのゴミネストに付き合わなくてすむぜ」って思うかで
プログラマとしての何かが問われるだろう



376 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:45:40 ]
>>370
そんなの強制しなくても命名規則を決めればいいだけ
従わないヤツはチームから除外すれば済むし
それくらいできないヤツはどうせダメなヤツだから
むしろ除外した方がチームのため

377 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:06:19 ]
>>376
だよな。インデントだってコーディングルールを強制すればよいだけで
従わないやつは排除すればいい。インデントを言語仕様で強制する必用
全然ねえよな。Pythonのインデントに関する理屈は屁理屈

378 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:10:52 ]
>>377
>インデントだってコーディングルールを強制すればよいだけで

そうそう。
インデントを廃止するかわりに,ブラケットやendみたいなキーワードを導入すればいいだけの話だよね。
簡単簡単。

379 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:18:06 ]
ブラケットやendみたいなキーワードを強制されるのは嫌だな

380 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:28:23 ]
Ruby書いてるときに

def range(start, end)
..
って書けないのはちょっといやだな

381 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:30:05 ]
ブラケットがキーワードなのか

382 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:50:36 ]
>>375
どちらもアホプログラマにしか思えない

383 名前:デフォルトの名無しさん [2007/12/29(土) 02:12:48 ]
自分たちがちゃんとインデントされてるコードを書いてるかどうかという話と
言語仕様としてインデントでブロックをあらわすということは何の関係も無いわけだけど
>>377>>378は何を言ってるんだ?完璧に意味不明

384 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 07:19:11 ]
378は皮肉だろ。多分

385 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 09:31:12 ]
・378を皮肉だと分からないヤツ
・「キーワード」が「ブラケット」と「end」にかかっていると思っちゃうヤツ

どっちもPythonistaとして失格。
Monty Pythonでも見ながら基本からやり直した方がいい。



386 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 10:32:26 ]
>>379
Python でもかけませんがあにか

387 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 10:38:33 ]
>>385
別にPythonistaとやらになりたくはないがな
静的スコープのない言語なんて願い下げ

388 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 10:53:07 ]
Pythonは思いっきり静的スコープを採用した言語だが…

389 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:06:52 ]
まぁ378は皮肉としてはどうかと思うが

390 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:12:36 ]
そんなこといったら、>>383のもわかってる煽りだろw

391 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:43:48 ]
>>383に食いつくのはプライドが許さない

392 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:17:51 ]
>>386
これできみはしやわせになれると思うよ。

end = 1

393 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 20:22:38 ]
389=391はおれげんごをつくった。
でもだれもつかわなかった。

394 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:28:21 ]
そうですか

395 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:26:33 ]
そうです



396 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 07:34:26 ]
おめでとうございます

397 名前:デフォルトの名無しさん [2008/01/04(金) 23:16:45 ]
end があると、endだけの行が大量に発生するのが、コードが間延びしてる感じがしてダサい
pythonの方がエディタで眺めたときに、均等に情報が並んでる感じがして気持ちいい

398 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 04:29:54 ]
Pythonだとここまでで、インデント終わりってのが明確にわからないのだが、
その辺、どうやってみわけるの?

399 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 07:25:06 ]
>>398
次の命令のインデントでわかる。
インタラクティブモードの場合は空行を入れることでも可。


400 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:34:08 ]
>>399
やっぱそうか・・・
エディタとかブラウザで、どこまでスクロールすればいいんだろとか不安になるもんで

401 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:18:36 ]
why?
kwsk

402 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:50:31 ]
要するに「ブロック終了」に相当する単語なり文字が目に見えないから不安な気がするってことじゃないか?
自分もpythonはじめたかなり最初の方はそういう感覚があったような気がする

403 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:41:45 ]
こういうコードに遭遇すると殺意沸くよね

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

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

  # 2008/1/5 追加しました。
  return "こんなところにこんなものが!”
  

404 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:51:11 ]
それはPythonに限らないだろ

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

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

  // 2008/1/5 追加しました。
  return "こんなところにこんなものが!";
}

405 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:30:30 ]
いや、ちがうんだけど、
なんだかとても眠いので寝る。
続きは夢の中で議論しましょう。



406 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:26:02 ]
じゃ、そうしましょう。
おやすみなさい。

407 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:00:56 ]
俺も夢の中で、まってます

408 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:05:14 ]
じゃあ俺はニシキヘビを持って行くね。

409 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 13:23:26 ]
なんで来なかったんだよ!

410 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 13:30:56 ]
ごめん、熟睡しちゃった。テヘ

411 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:01:51 ]
寝て起きたらやり合うのめんどくさくなった

412 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:03:06 ]
Pythonの場合、ブロックを跨いだ場所にカット&ペーストしたら
必ず自分でインデント調整せないかんの?
自動整形とか出来なさそう…まぁ、そういう機能ないエディタだと普段やってることだけどさ

413 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:28:56 ]
ブロックを跨いでるなら自動整形出来るだろ


414 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:24:27 ]
インデント調整ってめんどくさくないんだよ!

415 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:30:36 ]
>>412
>Pythonの場合、ブロックを跨いだ場所にカット&ペーストしたら
>必ず自分でインデント調整せないかんの?

そういう場合、ブロックを関数とかメソッドとかに出来るし
何の関係も無い
カット&ペーストしたら大抵は何か考え直すべき
へぼが書くとやっぱり読みにくい




416 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 08:15:19 ]
考え直して関数・メソッドにする時にカット&ペーストしない?

417 名前:実際に書いたことあれば疑問に思わないんだけどね mailto:sage [2008/01/07(月) 10:42:03 ]
ブロックごとペースとしたらそのブロック全体の
インデントをちょちょいと直せばいいだけ

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



何か疑問でも?

418 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 10:49:10 ]
dakara sorega mendou datte hanasi dattandaro

419 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 10:51:54 ]
ペーストした時点で正しいコードになってるのと
ペースト後インデント直さないと正しいコードにならないのとの違いの話だな

420 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 10:58:26 ]
めんどうじゃないよ

421 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 11:41:19 ]
めんどうだよ

422 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:27:11 ]
めんどうじゃよ

423 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:31:50 ]
めんどうでござる

424 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:32:58 ]
めんどうだったら

425 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 13:18:51 ]
めんどうなんだからねっ



426 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 13:20:16 ]
カッコで照合する言語の場合は尻尾のカッコの数を間違えて
整合性がとれなくなったりコードがおかしくなったりするわけだけど
その際の確認の手間がペーストよりも後ろ側に来てるだけ

面倒もへったくれもないし議論になってねーっつーの

427 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 13:28:32 ]
カッコの数を間違えたらSyntax Erorrだと思うが

428 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:23:17 ]
Pythonもブロックのインデントレベルが違うと構文エラー
大らかなのはアセンブラぐらいかな

429 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:43:28 ]
何言ってんの?

430 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:19:08 ]
Python でインデントレベルが変わるのは : の次と
戻す時だけだから他言語での括弧の不整合と同じく
エラーが出るね

431 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:48:15 ]
よく考えろよ。

432 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:23:20 ]
お金は大事だぞ

433 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:53:07 ]
あふぉらっく

434 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 21:00:00 ]
python 書いたことある人間がうだうだ言うのはともかく
全く書いたり試したりしないで
脳内でイチャモン生成されても的外れだってことさ

435 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:00:38 ]
ていうかエラーが出ない人為的なミスに関して話をしてたのに
なんで「エラーが出る状況ではエラーがでるから同じだなんて」
って話になってるの?



436 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 23:38:37 ]
ネタスレ状態も悪くないと思う俺がいる

437 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 12:45:19 ]
>435 が思っているのもネタに過ぎないしな


438 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:08:03 ]
そりゃエラーが出ない人為的状況はインデントの有る無しと関係ないから
つまりスレタイ読めという事

439 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:43:39 ]
だからその時のミスを防ぐ手だてとかリカバリーの方法だよ。
カッコとかendとかある言語の方がいろいろ手を打てる。
たいていは自動フォーマッタが視覚的にミスに気づかせてくれる。
インデントとブロックを両方プログラマの手にあずけちゃうと、
プログラマがミスしたときの保険が無くなる。

440 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:11:44 ]
括弧やendの辻褄で自動フォーマッタが気づかせるレベルのエラーなら
Python でもインデントのレベルの辻褄が合わないから同様に気づくと思うが

441 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:17:25 ]
>>440
書き出すインデントのレベルを勘違するのがミスだろ。
既に勘違いしてるのにどうやって辻褄が合わないことに気づくんだよ。

442 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:30:42 ]
if hige:
  fuga
  fuga
  pass


443 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:32:58 ]
んな奴にぬるい気持ちでコピペさせない、が正しい

444 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:50:15 ]
じゃあ熱く「俺にコピペさせてくれ!オゥイェー!ベイベー!」って言われたらどうするんだよ。

445 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:07:35 ]
コードをコピペすんなよキチガイ



446 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:28:17 ]
じゃぁカットアンドペーストにするよ

447 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:54:46 ]
>>446
天才

448 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 10:28:47 ]
じゃ俺はコードの代わりにコンセントを使うよ

449 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:09:42 ]
【審議中】
      _,,..,,,,_   _,,..,,,,_
   _,,..,,,_/ ・ω・ヽ/・ω・ ヽ,..,,,,_
  ./ ・ω_,,..,,,,_  l _,,..,,,,_/ω・ ヽ
 |   /   ・ヽ /・   ヽ    l
  `'ー--l      ll      l---‐´
     `'ー---‐´`'ー---‐´

450 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:56:52 ]
まずは言語仕様の問題と開発環境の問題を区別しよう。
話はそれからだ。

451 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:41:42 ]
そんなことより449の審議がいつ終わるかのほうが問題だ

452 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:49:01 ]
CM明けなんじゃない?

453 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:00:07 ]
Python 勉強中のヘタレです。
私も昔の >>402 さんのように終了記号が無いのが不安です。
気が緩んでインデントを間違えてしまう
うっかり者は使うな!という言語なんでしょうか…?
前に Python でコード書いてたら、
急に好きなおにゃのこから電話が来て
電話の後インデントしきってないのを忘れて悩みました。

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

皆さんインデントのミスなんてしないんでしょうか?
ネタじゃなくてホントに。


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

欠点としては、自動整形が効かないってことかな。
場合によってはこれだけが痛い。

455 名前:453 mailto:sage [2008/01/26(土) 04:14:51 ]
私も普段からインデントはキッチリ書く、
というか書いてないと気がすまないのですが
コードを移動したり、差分をマージする時にドキドキしてしまいます。
マージとか他の言語だと、
ひとまずペーストしてインデント揃えて、ってできるんですが
Python だとペースト〜揃える間を一息でやらないと怖くて緊張します。




456 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 11:29:03 ]
まずアペンドしてからちまちま直せば良いんじゃないだろうか

% cat code01.py >> code00.py
% vi code00.py

457 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:40:14 ]
#{

#}

というインデントのヒントをコードに埋め込めばいいんだよ。
なんという逆転の発想・・・

458 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 16:35:23 ]
pass でブロック終端を表すのはかったるいとおもったけど、
...(Ellipsis)なら、それほど悪くないかなと思った・・・

459 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 22:43:30 ]
> pass でブロック終端を表す
そんなことしたっけ?

もしかして、空ブロックの代わりにpassって書くのと勘違いしてる?

460 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:22:31 ]
目印としてってことじゃねーの

461 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:10:41 ]
emacs だと pass の行の次はインデントが強制的に1つ引っ込むんだよ
他のエディタはどうなってるか知らんが

462 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 06:10:34 ]
それはEmacs特有のサービス(?)だと思うぞ

463 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 08:46:39 ]
マクロがあればどんなエディタでもできそうな気がする

464 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:19:17 ]
面白い仕掛けだね、pass でインデント終了って

465 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:26:02 ]
do - end
: - pass
文字数は変わらないね



466 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:48:01 ]
pass って書くなら、4回バックスペース押したほうがいいと思う。

つうか、ブロック毎にいちいち pass pass 書いてる python コードなんて
誰も読む気しない

467 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 07:49:50 ]
passなんて空ブロック以外で見たことないぜ

468 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 09:47:35 ]
>>467
>>461

設定次第でバックスペースは1回にできそうだな

469 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 09:54:52 ]
pass じゃなくて1って書けば?

470 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 15:17:47 ]
>>466
そうじゃなくて、自動整形するためのtipsの話じゃなかったのか?

471 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:50:00 ]
個人的な感想だけど、自動整形なんてほとんど使う機会がないな。
そもそも他のソースからのコピペをする機会が少ない。その必要があるときも
ブロックを指定してインデントなりデデント(IDLE なら Ctrl-[ と Ctrl-])すれば一瞬で済むし。
ぶっちゃけ、453さんみたいに苦痛を感じる人がいるのが不思議。

経験的に言って、Python のコーディングをきちんとサポートしてくれるツールを使えば
インデントに起因する問題は何も起こらないよ。あとは慣れの問題。

472 名前:471 mailto:sage [2008/01/30(水) 17:55:50 ]
ふと、インデントに過剰反応する人は考えすぎなのかなーとオモタ。

Python のインデントって自転車みたい。
乗れないうちはバランスとか転んだら痛いとかいろいろ考えちゃうけど、それって無駄。
乗れるようになったら意識しなくても快適に乗りこなせるようになる。

473 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:01:49 ]
いや、だから、
いきなり }<改行> を入力すれば、勝手にインデントを1段戻した位置にズレて
次の行ではそのまま書き続けられる位置にカーソルが移るような環境に生きていると、
いちいちインデントを調整しながらコードを書くことが苦痛だと。

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

書くコードの種類にもよるとは思うけど。

474 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:14:51 ]
ブレースだろうがインデントだろうがブロックの把握は行わなきゃいけないものだと思うんだが

475 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:43:40 ]
} 入れるのと Backspace 押すのとじゃ手間に大差ない気がするが



476 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:52:09 ]
勝手に動かされるのキライ

477 名前:デフォルトの名無しさん [2008/01/30(水) 20:41:12 ]
他人のソース見るときが一番不安

478 名前:471 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 22:18:18 ]
インデントでブロックをあらわすと、最小コストで構造を表現できる。
記号でブロックをあらわすと、プログラマの意図の通りの構造になっているか
ダブルチェックすることができる。

480 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 22:23:52 ]
記号でブロックをあらわすと、
見た目と意図が激しく乖離するものが出来上がる現実

481 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:32:28 ]
なんで?

482 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:50:03 ]
>480 は初心者にコード書かせた場合の話だろうな。
確かに、ブロックを正しく書く癖を付けさせるなら、こういう言語かも知れない。

483 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:48:36 ]
インデントブロック無しで書きたいときもあるのだ。たとえば
if (hoge) break;
とか。

switch (var) {
  case A: hoge(); break;
  case B: huge(); break;
  case C: huga(); break;
}
とか。

484 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:22:16 ]
if hoge: break

ってあるよ

485 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:43:53 ]
pythonのインデント構造って、エディタからインタプリタにコードをカットアンド
ペーストするとき、すごくやりにくいよね。
前に、プレゼンのビデオでデモをやってる人がいて、
先頭にスペースが入っちゃったりして、やりにくそうだった。
また、インデントの深いところの複数行をまとめてコピーするのは不可能だよね。

487 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:24:58 ]
先頭に、if 1:
とか入れれば、好きな深さのコード実行できる

>>> if 1:
...           print 1
...           print 2
...           print 4
...
1
2
4

488 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 06:41:54 ]
副作用ワロスw

490 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 09:54:55 ]
> また、インデントの深いところの複数行をまとめてコピーするのは不可能だよね

それはPythonじゃなくてエディタの機能の話だろ。

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

また、インデントの深いところの複数行をまとめて (エディタからインタプリタに)
コピーするのは不可能だよね、という話?
先頭に空白が入っていると、無理。

493 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:11:32 ]
矩形選択できるエディタで先頭の空白をさければいいんじゃないの?
何を無理とか不可能とか言ってるのかよくわからん。

494 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 14:25:29 ]
>487 でほとんどの人は困ってないと思うんだよね…

495 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 14:28:31 ]
そんな石器時代的な方法で我慢しないと駄目なのか。



496 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:53:18 ]
primitive な方法で解決できるのが一番いい

497 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:55:02 ]
ところで、python に else if ってないんだけどさ・・・>>488

498 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 21:29:48 ]
使ってるエディタによりけりかもな。
なんだかLispみたいだ。

499 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 21:34:17 ]
>>485
うわあPython読みにくう・・・。

500 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:35:29 ]
なんで行単位で範囲選択できるエディターを使わないんだろう

501 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 00:53:56 ]
だいたいがだ、インデントに関連したバグで悩まされた経験が
オマエラあるのか。俺は18年のプログラム暦で一度もない。

502 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:01:47 ]
>>501
確かに。俺も 20年位インデント関連のバグ書いて悩んだことはないな。
インデントが見栄えだけしか意味持つ言語使ってないから。

503 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:35:12 ]
アンインデントするときに空行が入っていないソースを
ペーストしようとするとエラーになるんですけど
どうしたらよいのでしょうか?


504 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:35:20 ]
>>502
まともなエディタ使ってたら、インデント起因のバグなんてありえんよ。
むしろコーディングに余計な手間を強いるPythonはクソ。

505 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:41:42 ]
>>500
>行単位で範囲選択できるエディター
ってどんなのがあるんでしょうか。



506 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:45:46 ]
>>505
Vim

507 名前:デフォルトの名無しさん [2008/02/02(土) 01:58:01 ]
ぶっちゃけていえばだ、「インデントに起因するバグ防止のため」とか
「読みやすさのため」という理由は、全然説得力ないのよ。

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

それなのに、これまでエディタで自動で出来ていたインデントを
手動でやる羽目になる手間といったら!Python使いってなに考えてんの?

508 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 02:08:49 ]
>>507
全くそうだよね。
インデントなんか制御構造に使わなけりゃ、
(自分にとっては) pythonほとんど完璧だたったんだか。
これは失敗だったと思うよ。インデントを制御構造に使わないとならない
積極的な理由なんかないんだから。(たぶん)



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

Python で書いてると、コロンもうざい

510 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 11:08:31 ]
ブロックの表現法にどれを採用するかなんて作者の趣味で
積極的な理由なんて無いんじゃないの?
問題が無ければ現状維持で良い。問題があるなら、
問題点と改良案を提案すれば良い。むしろ言語がより良い
方向に行くために提案すべきだ。俺的にインデントでブロックを
表現するのが好きだけど、十分に納得できる理由があるなら
他の方法に変更されても全然OK

511 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:45:18 ]
>>509
うざいとかいうのは気持ちの問題。
ruby信者にはendがいいんじゃないかと言われるだけ。
慣れれてこういうもんだと思えばなくなる問題。

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

個人的には、ネットでなどで見つけてきたコードサンプルなどをカットアンドペーストして
自分のマシンで動かしてみようとするときに、
他の言語ではいきなりインタラクティブシェルに放り込めば動くこともあるが、
まずはインデントを確認してからなど、めんどうだなと思うこともある。
致命的ではないけどね。作業量の問題。

512 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:30:08 ]
バグが起こらない限りソースコードなんか読まねーよって言う奴には
向いてないんだろうね。

513 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:00:14 ]
これからはむしろソースはXMLで、専用エディターを使って見掛けを調整するような言語が求められるのかも
これなら表現は {} だろうが字下げだろうがエディターの選択に拠るのであって言語の仕様とは分離できるし

514 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:04:22 ]
lispの括弧とpythonのインデントは同じ匂いがする
やってることは完全に正反対のはずなんだが…

515 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:33:49 ]
ソースコードが画像っていう言語は見たことあるけど、
ソースコードがXMLって言うのはまだ見たことないなぁ・・・



516 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:49:55 ]

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

そういうときは構造が間違ってるから見直せとか
テンプレ使えって話になるんだろうけど


517 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:52:27 ]
>>515
わかってるとは思うが >>513 の言ってるのは
エディタ上では普通のソースと見分けが付かない
保存したときにXMLになってるっていう話だろ
そういうのを実現してるのは強いて言えば
 Excel2007 の VBA とかじゃないのか

518 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:39:32 ]
構文木がべた書きされた中間コードとして、だったら、S式でもXMLでも
あまり差はなくないか? XMLのほうがむやみに冗長なだけで。

あとはプログラマがプレインテキスト信仰から離れられるか、という
ところだろうけど。

519 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:46:34 ]
S式なんざ一般に受け入れられないでしょ。Lispが受け入れられていないのだから。

520 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 16:55:23 ]
特定のツールがないと編集できない言語なんて絶対流行らないという気がする。
キーワードに非アスキー文字がある言語が絶対に流行らないのと同じように・・w

521 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:24:24 ]
> 構文木がべた書きされた中間コードとして

という部分を見落とされちゃった気がしてしょぼーん

522 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:31:12 ]
S 式 or Lisp という文字が入った書き込みがあった時の
ボットによる定型レスだから気にしないでオケ。

523 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:37:17 ]
hoge.pyc を直接開くとソースコードが出てきて
そのまま編集&保存できるエディタってある?


524 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:09:00 ]
pycからソースコードって復元できないでしょ多分

525 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:16:30 ]
>>520
昔のパソコンBASICは処理系依存の中間言語でセーブしてたよ
でもけっこう流行ってたと思う



526 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 09:17:27 ]
>>525
大抵はアスキーセーブもできたはずだが?

527 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:59:54 ]
ぶっちゃけ今、プログラマの、IDE エディタと専用エディタの使用比率って
どんなもんだろうね?

528 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:15:34 ]
>>527
俺、3つの職場渡り歩いたけど、IDEのエディタ使ってるやつ見たことない。

529 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:33:30 ]
>>526
大抵はアスキーセーブなんてしないし
それにアスキーセーブしなおせるのは「特定のツール」がある環境だよね

530 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:52:30 ]
>>529
処理系自体がIDEなんだから関係ないじゃん。

531 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:54:28 ]
>>530
だから「絶対流行らない」に対する反論だろ
実際普及してたわけだし

532 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:08:41 ]
それしかなかった(一般に入手可能性という意味で)からだろ


533 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:09:17 ]
当時はマシン自体がIDEだったわけだし。

534 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:49:51 ]
同様のもので言えば Smalltalk なんかもパソコンバンドルされてれば普及したかもね

535 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:07:36 ]
>>534
あると
どるふぃん



536 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:12:39 ]
そもそも Smalltalk が無ければ Mac も Win もパソコンは今の姿ではなかったわけだしね。
つか、パソコンって言葉自体が Smalltalk を OS として動作する Alto や NoteTaker の
ためのもの…って話はスルーですか、そうですか。

537 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:27:03 ]
>>536
うん、スルー^^

538 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:34:26 ]
BASICが載ってた頃のはマイコンだしな

539 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 03:26:17 ]
あんたら何年前のお話をしていらっしゃるのですか?

540 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:07:39 ]
話を戻して、ソースコード寄りの中間言語ってどうよ、という意見についてなのだが、
IDE のプラグインだと IDE 毎につくらにゃいかんので負担が大きいなぁとか考えて
いたのだが、テキストフィルタとして実装するのはどうだろう。

541 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 09:52:02 ]
>>486
矩形コピペできないエディタは死んでいい

>>509
激しく同意

>>523
関係ないけど、io-languageだと逆コンパイルできるよ。
インタラクティブシェルで、メソッドを定義すると、逆コンパイル?して表示してくれる。
自分の書いたのより、良い書き方で返ってきたりしてウケル

542 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 09:56:23 ]
>>541
Smalltalkも逆コンパイルしてくれる。
時々、最適化した結果を見せてくれるから参考になる。

543 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 09:57:45 ]
>>541
矩形コピペできるエディタを使っていながら
その機能を知らないやつ多すぎ。

とりあえずWindows系のエディタなら
カーソルを選択位置に持っていって、
alt押しながら選択してみるといいよ。

544 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:20:06 ]
「プレーンテキストのようなものは何もないのです。」

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

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

そこで次の段階は、構造化テキストですよ。
>>520のような言葉は、10年前にはそうなことも言われていたね、なんてい言われるだろう

545 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:37:52 ]
GUIコンポーネント単位でコードを書くVBは大流行しました



546 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:26:30 ]
ていうかC#とかVS無しでの作成とか想定してない感じだし
時代の問題じゃなくて MS vs UNIX 文化圏の違いという気がする

547 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:41:07 ]
そのUnix文化圏でEclipseがじわじわと勢力を広げつつある件
・vi系
・Emacs系
・Eclipse等
に3分するとして、2:7:1 ぐらい?

548 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:56:47 ]
まぁしかしこんな不見識なな記事もあるな

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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:12:37 ]
例外使わない?

554 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:19:44 ]
>>553
俺も例外使う。例外ならforループどころか関数の壁を越えてbreakできる。

555 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:23:23 ]
ttp://entrian.com/goto/



556 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:55:24 ]
まぁさ、例外あるような言語ではgotoいらないかもしれないけど、
Cとかだと普通に使うよ?

557 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:28:31 ]
いや,普通には使わないわ(ww

558 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:58:34 ]
まぁスコープ抜けるときにデストラクタが呼ばれる言語だったり、
アスペクト指向言語だったら、こんなgotoはいらないのだけどさ。

560 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:00:10 ]
>>559 つーか単にGC付きならそれでいいのでは。

561 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:22:19 ]
>>561
その程度ならtry:finally:があれば十分じゃん…

563 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:25:54 ]
>>562
try:finallyで仕込むのメンドイでしょ。gotoと大して変わらないし。
アスペクト指向が一番楽だけど。

564 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:30:13 ]
>>563
try:finally:がgotoと変わらないって…
gotoでは関数内で例外が発生した時の振舞いがまるで違うんだけど…

565 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:34:17 ]
>>564
いや議論がごっちゃになってるのだけど。ロギングに例外機構を
使用しようとするところもおかしいし、例外の振る舞いとgoto
をごっちゃにするのもおかしい。



566 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:37:56 ]
>>565
> ロギングに例外機構を
> 使用しようとするところもおかしいし、

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

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

例外が発生した時にOUTの記録を残せないトレースなんて
役に立たないと思う。

567 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:39:39 ]
元の議論は、gotoが必要な時があるかどうか。
>>558が提示したケースもgoto無しで十分対応できることが示された以上、
もうその時点で議論の結着はついていると思われ。

568 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:40:28 ]
coreutilsとかLinuxのカーネルとか見ると、gotoって便利だなと思わないか?


569 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:46:29 ]
>>566
try finallyは例外を捕まえるための機構であって、ファンクション
トレースのための機構ではない。

デストラクタでロギングするほうがよっぽどスマート。try finally
に依存したロギングよりも。そしてアスペクト指向のほうが
デストラクタロギングよりももっとスマートだといっているのだよ。

570 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:46:44 ]
>>568
CとPythonでは言語の抽象度がまるで違うんだから、
coreutilsだのLinux kernelだのは参考にならない。

Cでtry:finally:と同等な機構を仕込むのがどれだけ大変かわかるか?

571 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:48:29 ]
>>569
> try finallyは例外を捕まえるための機構であって、

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

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

デストラクタはオブジェクトの解放をする機構であって、
ロギングのための機構ではない。


572 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:50:24 ]
言語に備わっているものは自由に使えばいいじゃん。
(俺)ルールが決まっていれば混乱することもない。

573 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:52:32 ]
558はせっかくPythonが提供している仕組みを無視して
Cの原始的なやり方を押し通そうとしているように見える。

574 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:56:40 ]
いや、もともとCの話だったのだけど・・・。まぁPythonのようなクソ言語使ってないけど。

575 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:59:35 ]
ならpythonスレに来なきゃいいのにw



576 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:05:22 ]
寂しかったんだろ。
こういう態度じゃ,友達もいないだろう。

577 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:07:46 ]
このスレはオフサイドルールについて議論するためのスレであって
たまたま1がPythonしか知らなかったのだと思うわけだが。

しかしオフサイドルールの話題ですらないな。

578 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:43:45 ]
どこか適切なスレを教えてやってくれ誰か

580 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:46:28 ]
>>578
とりあえず
pc11.2ch.net/test/read.cgi/tech/1123726695/
にいけ。

581 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:54:22 ]
書いておいた
pc11.2ch.net/test/read.cgi/tech/1123726695/199

582 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:10:21 ]
まあ結論としてはPythonにもgotoがあってもいいねと。
使いたくなければ使わなければいいんだし

583 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:14:03 ]
gotoイラネ

584 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:14:17 ]
だからPythonのスレじゃねーし

585 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:35:54 ]
selfもなくして欲しい。



586 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:08:19 ]
いまPLSQLの仕事をしているんだけど、
インデントして見やすいように書くと、
文の終わりが深いインデントで唐突に終わってるんだよね。
Pythonってこんな感じのコードになるのかなーと思った、
Pythonを知らないやつのたわごとでした。


587 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:09:56 ]
>>586
つ[null;]

588 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 11:30:22 ]
インデントをスペース1に変更しる

589 名前:デフォルトの名無しさん [2008/02/23(土) 00:53:36 ]
インデントとブレース両方入れるのってそんなにマイナス面が多いことなんだろうか?
ジードのブレース拒否の態度とMatz のインデント拒否の態度は両方とも
合理的な根拠が感じられない。

590 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:08:11 ]
> ジードのブレース拒否の態度

ソースきぼんぬ

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

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


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


PEP3099で、ブレースが入らない理由のところで
何も書かれておらず、「そんなことは明らかだ」
という言い方しかしていない。(議論する気がない

592 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:52:25 ]
ブロックの記述にインデントを用いることがPythonのレーゾンデートルの一つなんじゃね?
いいとか悪いとかじゃない、それを変えてしまったらもはやPythonではない、と。

ぶっちゃけ俺もそう思う。

593 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 04:12:48 ]
ブレースの利点(といわれるもの)は視認性と自動整形だけかね?

594 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 05:07:02 ]
今さらブレース入れろと言われても面倒だし
どっちでもいいという仕様になるのも生理的に嫌

595 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 06:12:09 ]
ブレースで視認性が上がるとは到底思えないのだが



596 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:51:47 ]
>>598
> 「いろんな文法の変更を試している人がいるから、その中のひとつとして考えてみる」という ことであった。

日本語訳:
ウザい東洋人、あっちいけヨ。

600 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:57:53 ]
lambdaで複文使えるようになってうれしがるやつなんて変態だけだろ。
いくつもの分がブレスに所狭しと押し込められたソースなんて汚いだけだよ。
複数の文を書くような場面では、関数定義してオブジェクトにして引き回せばいい。

601 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:24:21 ]
Matzはなんで、Guidoが「lambdaで複文が使えるように」していないのはわざと
だという事に気づかないんだろうか
Matzは「大喜びする人も多い」ならRubyをそういう風に改造するんだろうけど
Guidoは最初から制約を利用しようとして言語デザインしてるんだから
自分とは考えが違うと理解しないかな

602 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:27:36 ]
>>598
> 「いろんな文法の変更を試している人がいるから、その中のひとつとして考えてみる」という ことであった。

日本語訳:
愚問に答えるのは苦労するぜ

603 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:29:56 ]
>終始フレンドリーであったことを報告しておきたい。並んで写真も撮ったしね。

Guidoはおとな


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

日本語訳:
その質問、あなたで百万回目ですから。

605 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:01:24 ]
GuidoとRubyの間には、同じ言語の創始者としての共感のようなものがあるんだろうな。
俺たちみたいに、匿名掲示板で溜飲を下げている一般ピープルには想像もつかないのだけれど。



606 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:04:56 ]
matzから見たGuidoとの関係: 同じ言語の創始者としての共感がある
Guidoから見たmatzとの関係: この手のイベントで握手を求めてくる百万人の1人

607 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:05:54 ]
>>605
GuidoとMatzの間違いじゃね?

608 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:17:29 ]
>>606
禿

609 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:53:20 ]
Guido が松本のせいで日本人を嫌いになりませんように…

610 名前:デフォルトの名無しさん [2008/02/23(土) 18:21:18 ]
>Guidoから見たmatzとの関係: この手のイベントで握手を求めてくる百万人の1人
ジード、自分からRuby1.9について質問しまくってたようだから、そういうわけでもないでしょ

にしても、Matz - Guidoの間でこのスレとおんなじ話題が上ってたって言うのは面白いw

611 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:22:13 ]
グ・・・Guido

612 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:22:14 ]
>>610
君にいい言葉を教えてあげよう。
「社交辞令」

613 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:24:31 ]
>>609
guidoってオランダ人だろ?
なら元から(ry

614 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:26:04 ]
ttp://www.youtube.com/watch?v=oEkJvvGEtB4

これ?

615 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:29:05 ]
>>612
ヨーロッパ人はそういう社交辞令的な質問が得意だよね。



616 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:35:15 ]
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance

617 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:37:48 ]
Matz「こんな機能どう!凄いよ!」
Guido「そういうのを試してる人もいるよ」(それは10年前に通り過ぎた場所だよ)

618 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 07:55:37 ]
Rubyの人って独善的でいや。


619 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:12:31 ]
リーダーに独善的でないやつなんていない

620 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:16:16 ]
独善的であることを自覚している人と、
無自覚なまま他者を攻撃し続ける人がいるよね。

621 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:13:09 ]
いいかげんスレ違い

622 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:35:10 ]
>>620 は無自覚なまま他者を攻撃し続ける人

623 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:37:33 ]
>>622はスレ違いに無自覚なまま他者を攻撃し続ける人

624 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:34:06 ]
寛容な終身独裁者だったっけ

625 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:45:42 ]
まあ lambda で複文云々はさておくとしても
「なんでも機能をとりいれる」ではなく
「ほどよいバランスで適切な要素だけを適切に配置」
っていうのが一番重要なんだよね…

perl のワケワカメで不要な暗黙機能満載を体験すれば
誰でも気づきそうなものだが



626 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:03:42 ]
その辺に関しては Python の開発陣は大丈夫そうだな

627 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 06:25:46 ]
まあ lambda で複文云々を言うのならProcの仕様なんとかしろと…

628 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 07:46:15 ]
スレ違い止めれ

629 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 15:13:44 ]
RubyはごちゃごちゃしててPerlとあんまり変わらん

630 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:00:53 ]
そのうちPerlでRubyのコードが動きそうだしな

631 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:27:00 ]
Perl よりは Ruby の方が俺はずっと読みやすいけどな…
どうも Perl とっつきにくい。

632 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:00:29 ]
Perlよりマシかもしれないがそんなに大差ない
二者で比較するのでなく他の多くの言語を考慮すれば
Rubyも読みにくい方に分類される

633 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:07:43 ]
ここは off-side rule について議論するスレですよ?
ttp://foldoc.org/?off-side+rule

634 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 15:51:13 ]
> Rubyも読みにくい方に分類される
釣りにもなってない

635 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:14:44 ]
事実を書いているんだ
ミクとは違うのだよミクとは



636 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:53:03 ]
オレもRubyは読みにくいと思う。
スクリプトの中ではPHPが一番読みやすい。

637 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:24:48 ]
それだとなでしこ最高?

638 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:45:57 ]
ECMAScript 4 が最強

639 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:56:25 ]
>>638
でもまともに使える実行環境が無いよね

640 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:01:01 ]
ActiveECMAScriptやIronECMAScriptなんてのを期待

641 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 01:05:46 ]
ECMAScript って、generatorの中に、文字列書いてたり、
var がいるのかいらないのかわからんかったり、()の省略ができるときと
できない時が混ざってて気持ち悪かったり、足し算で意味わからないcoerceがおこったり
するウンコ的な言語のこと?

642 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 04:48:08 ]
>>636
               .|   |  | |   |    |  | |   |   |   || | |
               .|   |  | レ  |    |  | |   |  J   || | |
    ∩___∩    |   |  |     J    |  | |  し     || | |
    | ノ\   ,_ ヽ  .|   レ |      |  レ|       || J |
   /  ●゛  ● |   .J      し         |     |       ||   J
   | ∪  ( _●_) ミ             .|    し         J|
  彡、   |∪|   |              .J                レ
 /     ∩ノ ⊃  ヽ
 (  \ / _ノ |  |
  \  "  /  | |
   \ / ̄ ̄ ̄ /
      ̄ ̄ ̄ ̄

643 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:03:41 ]
誤爆?



646 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:43:53 ]
>>644
sortとsortedの違いは判る?

647 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 12:49:23 ]
>>646
解決しました。
ありがとうございました。
hage = lambda a: sorted(a, lambda x,y: x - y)

648 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 14:04:06 ]
>>644
入門書嫁。

649 名前:デフォルトの名無しさん [2008/03/30(日) 12:23:46 ]
age

650 名前:デフォルトの名無しさん [2008/05/22(木) 04:00:43 ]
水干

651 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 17:35:04 ]
for i in xrange(3):
  p i
for i in xrange(4):
 p i
それぞれスペースの数が違ってても大丈夫なんですか?



652 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 17:39:04 ]
p "それぞれブロックが閉じているので大丈夫です"


653 名前:デフォルトの名無しさん [2008/12/31(水) 11:59:02 ]
age

654 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:16:13 ]
sage






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<136KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef