アカウント名:
パスワード:
言語が変われば考え方とかコーディングの流れとかも変わるものなのに、考え方やコーディングの仕方を変えずに新しい言語を使おうとして不一致が生じているだけだと思う。
コピペしてインデント整えようとすると、リファクタツールが使えない
「ペーストした後でインデントを整える」という発想自体、インデントが文法的に意味を持つ言語では不自然。
Python の文法を理解して、ペーストした瞬間に正しいインデントを付与してくれるようなエディターもあると思う。僕は Python を滅多に使わないから知らないけれど、同じくインデントが文法的に意味を持つ Haskell 向けの Eclipse プラグインである EclipseFP では、ちゃんとそれっぽく理解してペーストした時点でインデントを調整してくれる。これに相当するものが Python にないとはとても思えない。
ブロックが沢山終了して大きくインデントが下がる時、どのブロックだが分りにくい
それは } がたくさん並んでいても同じじゃない?
デバッグ用の print を入れる時、後で取り除けるよう目立つように変わったインデントにできない
だからインデントが文法的に意味を持たない言語特有のイディオムを、インデントが文法的に意味を持つ言語に持ち込もうとするなと。目立たせたいなら、コメント等、ほかの方法で目立たせればいいじゃん。
こんな理由で「失敗」とか言われたら、言語を作る人も困っちゃうよ。
たとえば、ガシガシ書いていてインデントが深くなったとする それは問題なので、別の関数に分解しようとおもって移動する で、その後インデントを綺麗にしようと思ったら・・・
だから、移動した「後で」インデントを整形するという発想が、インデントが文法的に意味を持つ言語では間違っているんだってば。移動と同時に正しいインデントを付与するエディターが、少なくとも Haskell の場合はあるし、 Python にないとは思えない。
インデントが分りにくい場合も同様、深くなってしまったから移動しようと思った時に どこが終わりか分りにくいから、コピペ範囲を間違える
だから、それは } があっても同じじゃないのかってば。
どっちも既に #2672249 に書いたことだよ。コメントに反論するなら、読んでからしてよ。お互い時間の無駄だから。
大抵のIDEなら閉じ括弧"}"にカーソルが有れば対応する開き括弧"{"が強調される。vimでもそう。
IDEで整形する前提なら、インデントが文法的に意味を持つ必要がない。実際に必要なのはブロックなんだから、始点と終点を指定する方が簡潔、単なるインデントなら後から整形できる訳で。Lispによくある閉じ括弧だけ1行が省略できる程度、
いくらか特殊なエディタじゃないとまともに開発できないとかいう主張は、スクリプト言語として致命的だと思う。
それが本当にスクリプト言語として致命的なら、 Python はこんなに使われていないと思うよ。
インデントが文法的に意味を持つプログラミング言語が気に入らない、というだけの話なら理解できる。でも、それをもって「失敗」だとか「致命的」だとか言う人には、現実を見ろと言いたい。
自分の主張が否定されてそんなに悔しいのか。メモ帳はともかく、開発に使うことを想定しているエディタでpythonサポートのないエディタがどれだけあるんだ?
MeryとかCrescentEveとか、もろもろ。むしろ上で挙がってるような高度な機能がサポートされてて十二分に問題なく開発できるエディタは星の数ほどある内の手で数えるくらいしか無い。
>開発に使うことを想定しているエディタ
どんだけ悔しいのか分からないけどコメントをよく理解して返信しないと。単に気に食わないってのなら別にそれでいいんだよ。
一応書いておくけど、自分は#2672575=#2673371の飛び入り参加で他のACとは違うから、自分を煽っても仕方ないよ。それに自分はMeryでPythonを書いてるし、それで特に困ってない。そちらこそこちらの主張を理解して欲しい。自分は『そもそも書き方が悪い、エディタの高度なサポートが無くても十分開発できる』ということを主張したいんだよ。
そんなインデントが深くなるまでウナギの寝床みたいなコードを書くな、ということでは。
LL系の言語はそういう綺麗な構造とか気にしないで書き殴りたい時の言語なのに
書き殴りなら、コピペとか再利用とか気にするな。
最近ほとんどpythonでしかプログラミングしていないけど、やればいくらでも読みにくく書けるという印象だな。コーディングの手間って、コピペの範囲とインデントの扱いのことしか言ってないし。emacsのpython-modeで、適当にリージョン指定して python-indent-shift-right|leftして、ブロックの階層識別はtab押すだけで解決すると思うけど。リファクタリングが一日がかりって、言語に合っていないやり方を押し通そうとしてりだけじゃないのかね。
適当にpassを入れてやるとわかりやすくなる気がする
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
Pythonでインデントレベルがブロックを示すこと (スコア:0)
解説を読んだときにはなんて無駄が無いんだ、素晴らしい!!
と思ってたんですが、いざ実際に作りはじめると・・・
コピペしてインデント整えようとすると、リファクタツールが使えない
ブロックが沢山終了して大きくインデントが下がる時、どのブロックだが分りにくい
デバッグ用の print を入れる時、後で取り除けるよう目立つように変わったインデントにできない
これ失敗だよぉ ><
Re:Pythonでインデントレベルがブロックを示すこと (スコア:2)
言語が変われば考え方とかコーディングの流れとかも変わるものなのに、考え方やコーディングの仕方を変えずに新しい言語を使おうとして不一致が生じているだけだと思う。
「ペーストした後でインデントを整える」という発想自体、インデントが文法的に意味を持つ言語では不自然。
Python の文法を理解して、ペーストした瞬間に正しいインデントを付与してくれるようなエディターもあると思う。僕は Python を滅多に使わないから知らないけれど、同じくインデントが文法的に意味を持つ Haskell 向けの Eclipse プラグインである EclipseFP では、ちゃんとそれっぽく理解してペーストした時点でインデントを調整してくれる。これに相当するものが Python にないとはとても思えない。
それは } がたくさん並んでいても同じじゃない?
だからインデントが文法的に意味を持たない言語特有のイディオムを、インデントが文法的に意味を持つ言語に持ち込もうとするなと。目立たせたいなら、コメント等、ほかの方法で目立たせればいいじゃん。
こんな理由で「失敗」とか言われたら、言語を作る人も困っちゃうよ。
Re: (スコア:0)
たとえば、ガシガシ書いていてインデントが深くなったとする
それは問題なので、別の関数に分解しようとおもって移動する
で、その後インデントを綺麗にしようと思ったら・・・
カッコが付いている言語は、ファイル全体で整形処理すればいいけど
python の場合は、ここがペーストした場所だって指定しない訳にはいかないでしょう
インデントが分りにくい場合も同様、深くなってしまったから移動しようと思った時に
どこが終わりか分りにくいから、コピペ範囲を間違える
あなたの指摘は、問題の解決後の話してあって解決中には役立たずですよぉ
手間は増えるよ
Re:Pythonでインデントレベルがブロックを示すこと (スコア:2)
だから、移動した「後で」インデントを整形するという発想が、インデントが文法的に意味を持つ言語では間違っているんだってば。移動と同時に正しいインデントを付与するエディターが、少なくとも Haskell の場合はあるし、 Python にないとは思えない。
だから、それは } があっても同じじゃないのかってば。
どっちも既に #2672249 に書いたことだよ。コメントに反論するなら、読んでからしてよ。お互い時間の無駄だから。
Re: (スコア:0)
大抵のIDEなら閉じ括弧"}"にカーソルが有れば対応する開き括弧"{"が強調される。vimでもそう。
IDEで整形する前提なら、インデントが文法的に意味を持つ必要がない。
実際に必要なのはブロックなんだから、始点と終点を指定する方が簡潔、単なるインデントなら後から整形できる訳で。
Lispによくある閉じ括弧だけ1行が省略できる程度、
Re: (スコア:0)
いくらか特殊なエディタじゃないとまともに開発できないとかいう主張は、スクリプト言語として致命的だと思う。
Re:Pythonでインデントレベルがブロックを示すこと (スコア:2)
それが本当にスクリプト言語として致命的なら、 Python はこんなに使われていないと思うよ。
インデントが文法的に意味を持つプログラミング言語が気に入らない、というだけの話なら理解できる。でも、それをもって「失敗」だとか「致命的」だとか言う人には、現実を見ろと言いたい。
Re: (スコア:0)
自分の主張が否定されてそんなに悔しいのか。
メモ帳はともかく、開発に使うことを想定しているエディタでpythonサポートのないエディタがどれだけあるんだ?
Re: (スコア:0)
MeryとかCrescentEveとか、もろもろ。
むしろ上で挙がってるような高度な機能がサポートされてて十二分に問題なく開発できるエディタは
星の数ほどある内の手で数えるくらいしか無い。
Re: (スコア:0)
>開発に使うことを想定しているエディタ
どんだけ悔しいのか分からないけど
コメントをよく理解して返信しないと。
単に気に食わないってのなら別にそれでいいんだよ。
Re: (スコア:0)
一応書いておくけど、自分は#2672575=#2673371の飛び入り参加で他のACとは違うから、自分を煽っても仕方ないよ。
それに自分はMeryでPythonを書いてるし、それで特に困ってない。
そちらこそこちらの主張を理解して欲しい。
自分は『そもそも書き方が悪い、エディタの高度なサポートが無くても十分開発できる』ということを主張したいんだよ。
Re:Pythonでインデントレベルがブロックを示すこと (スコア:1)
デバッグ用のprintも、インデントで区別つけなきゃ把握出来なくなるくらいならloggingを使うんだ
Re: (スコア:0)
そんなインデントが深くなるまでウナギの寝床みたいなコードを書くな、ということでは。
Re: (スコア:0)
LL系の言語はそういう綺麗な構造とか気にしないで書き殴りたい時の言語なのに
Re: (スコア:0)
書き殴りなら、コピペとか再利用とか気にするな。
Re: (スコア:0)
コーディング中の諸問題へのサポートが無い言語だと言いたい
Re: (スコア:0)
> デバッグ用の print を入れる時、後で取り除けるよう目立つように変わったインデントにできない
Visual Studioとかつかってるとインデントが不意に(コピペとかで)綺麗になったりするので、pythonに限らずその方法自体やめといた方がいい。後で消したいならprintに渡すだけの変な名前の関数とか用意しておいた方が楽なんじゃないかな。
Re: (スコア:0)
さらに、こういう作業に掛かる時間の無駄はどんどんなるなるべきだよ
ツールアシスト可能な部分は全部ツールにやらせちゃうべき
これからは文法もツールに任せる事を前提にしてツールにも判別しやすくして置くべきだよ
C#だと、ものの数分で終わるリファクタリングがpythonだと一日がかりになってしまうので
結局綺麗なソースを作るのは手段なんだ、見通しのよりソースはデバッグも変更もしやすい
ところが、python は綺麗なソースが目的になっている印象がする
ソースが綺麗なのにコーディングが手間とはこれいかに?と
Re: (スコア:0)
最近ほとんどpythonでしかプログラミングしていないけど、やればいくらでも読みにくく書けるという印象だな。
コーディングの手間って、コピペの範囲とインデントの扱いのことしか言ってないし。
emacsのpython-modeで、適当にリージョン指定して python-indent-shift-right|leftして、
ブロックの階層識別はtab押すだけで解決すると思うけど。
リファクタリングが一日がかりって、言語に合っていないやり方を押し通そうとしてりだけじゃないのかね。
Re: (スコア:0)
合うとか合わないとかじゃないレベルだから
Re: (スコア:0)
ブロックが沢山終了して大きくインデントが下がる時、どのブロックだが分りにくい
適当にpassを入れてやるとわかりやすくなる気がする