X



将来性ないプログラミング言語。Delphi含まれず安心

■ このスレッドは過去ログ倉庫に格納されています
0075デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:33:28.98ID:ezZjqxdH
Python信者「関数が長いと見にくいので次第に短い関数を書くようになるから教育的に優れている」
0076デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:38:26.11ID:meO8Vw3B
C/C++ の場合、三回ブロックが終わった後に aaa が書いてあると分かる:
     }
    }
   }
   aaa;

Pythonの場合、以下の様になっていて、画面上のaaaの先頭に「定規」でも付けて
エディタで上にスクロールして、ifやforや内部関数定義の冒頭(defかな?)などを見つけて
どこと一致してるか確認してから、下にスクロールして意味を考えないといけない。


   aaa;
0077デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:41:00.61ID:meO8Vw3B
>>74
でも同じロジックでも、C/C++やC#やJavaやRubyで書いてあれば
ブロックの範囲で悩むことは無かった。だから書き方の問題ではなく、
言語そのものの設計の問題だと考えられる。
0078デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:44:35.53ID:meO8Vw3B
他人のプログラムのロジックの難しさで悩むのはしょうがない。
しかし、ブロックの範囲がそもそも分からなくて悩むのはPython特有で
今までの言語では無かった悩みどころが入ってしまった。
0079デフォルトの名無しさん
垢版 |
2019/08/14(水) 17:06:08.30ID:cbEBER6Y
定規とかアホすぎ

上下移動でカーソル位置は横に移動しないエディタとか
縦に補助線引けるエディタとか使えよ
(もちろんそこまでしなくても読めるが馬鹿には必要な機能なんだろ)
0081デフォルトの名無しさん
垢版 |
2019/08/14(水) 17:19:59.38ID:q3KPXJei
まず、
if
if
for
の入れ子とかおかしいからな
こんな作り方しないよ
0082デフォルトの名無しさん
垢版 |
2019/08/14(水) 17:21:47.62ID:meO8Vw3B
>>81
そんなことないです。
その位は普通に有りますし、悪いプログラムでも汚いプログラムでもは有りません。
問題はソースの方にあるのではなく、Pythonの設計の方にあります。
0083デフォルトの名無しさん
垢版 |
2019/08/14(水) 17:22:35.87ID:q3KPXJei
ないない。悪手すぎる
0086デフォルトの名無しさん
垢版 |
2019/08/14(水) 18:29:24.84ID:ZtJY0HPZ
他のメジャーな言語はだいたいカッコか、そうでなければendとかfiとかキーワードでブロック作るもんな
Pythonだけじゃん
0091デフォルトの名無しさん
垢版 |
2019/08/14(水) 19:44:50.26ID:2bLbN+Zf
>>1で将来性のないプログラミング言語筆頭にRubyが挙げられてることから目を逸らしたい幼稚な工作でしょwww
009444
垢版 |
2019/08/14(水) 23:54:58.98ID:ms62dfnn
VSCode の拡張機能、Bracket Pair Colorizer, indent-rainbow などで、対応関係がわかる

WEB+DBのJulia特集を読んだ
http://medfreak.info/?p=4850

漏れも、同じ意見

Python ではプログラミングしづらいけど、
Julia は、do 〜 end など、Ruby に似てるから、プログラミングしやすい

やっぱり、外人も同じように思ったから、Julia, Elixir などが作られた!

Juliaは、Pythonのライブラリも呼べる

NumPy がいらない。
ベクトル演算・行列積・線形代数・統計処理などが標準装備

LLVM のJIT だから速い

今後は皆、Pythonから、Juliaに流れそう
0095デフォルトの名無しさん
垢版 |
2019/08/15(木) 00:09:10.03ID:LnTn26jl
>>94
>VSCode の拡張機能、Bracket Pair Colorizer, indent-rainbow などで、対応関係がわかる

解決策ありがとです
0096デフォルトの名無しさん
垢版 |
2019/08/15(木) 00:52:59.28ID:lTp6Ihus
>>94
漏れも、同じ、意見。
Rubyは、廃れる!
0098デフォルトの名無しさん
垢版 |
2019/08/17(土) 14:25:07.96ID:1NsbgTmC
>>43 その通りだな。 インデントが無茶苦茶でも通るからロジックのまとまりがどうなってるかわかりづらい。 仕方なく自分でインデントを整理するが。

ま、どんな言語でも作ってるやつがクソならクソなプログラムになってる。 時々イラっときて作り直した方が早い。
0100デフォルトの名無しさん
垢版 |
2019/08/17(土) 14:36:34.50ID:1NsbgTmC
>>86 あのさ、そんな些細な事より、{} で括るとか、
if
fi
とかの方が余程コーディングの手間が多いぞ。
1タッチでも少ない方が良い。

そもそも、Python はスクリプト言語だと言うことを無視して話してる。
その都度実行されないといけないんだぞ。
間違えるわけがない。
0101デフォルトの名無しさん
垢版 |
2019/08/17(土) 14:42:26.89ID:9WAlKegR
書くのは一回、読むのは数十回
たった一回書くのが楽なことよりも
何十回も読むのが楽な方を選ぶ
0102デフォルトの名無しさん
垢版 |
2019/08/17(土) 14:42:48.46ID:Ei4AHYpx
Perlに依存してるパッケージが減りつつあるような気がしないでもない
0108デフォルトの名無しさん
垢版 |
2019/08/17(土) 17:23:42.10ID:uIV5R7Aj
知ったかぶりバカ「perlの開発者は日本人」
0114デフォルトの名無しさん
垢版 |
2019/08/18(日) 16:14:37.05ID:Rnl9Ujwd
まぁ一番将来性無いのは勉強止めた奴だけどな。派閥抗争ごっこする位なら新しい言語の一つでも覚えりゃいい。
0115デフォルトの名無しさん
垢版 |
2019/08/18(日) 22:38:17.85ID:+YUWcM9d
保守はしたくないけどプロトタイピングにはいまでも有用
なんだかんだ文句いいながらも使えるひとが多い
0116デフォルトの名無しさん
垢版 |
2019/08/19(月) 03:04:40.78ID:32wORggh
pythonのインデントでブロック作るのホント嫌い
ちょっとした入力ミスでインデントがズレると死ぬ

あれのせいでワンライナーを半ば強制されてるようなもので
チューニングはしづらいし、可読性は下がる
0117デフォルトの名無しさん
垢版 |
2019/08/19(月) 03:38:01.34ID:ZZoimR+D
>>116に対する反論。
俺の会社の奴らはインデント矯正されないと
インデントめちゃくちゃにする。
可読性はもっと下がる。誰のせいか?
0118デフォルトの名無しさん
垢版 |
2019/08/19(月) 04:14:11.27ID:yIThGu8W
普通のプログラミング言語なら push 時にインデントチェックして拒否したり自動整形するようにできる
python みたいなインデントでブロック作る言語はダメね
0119デフォルトの名無しさん
垢版 |
2019/08/19(月) 12:15:27.59ID:sIPdGD0o
>>117
フォーマッタ使えばよくね???

インデントが狂っても静的チェックでエラー出ないからバグの温床になるし
長くなったコードを改行するときにもインデントが必要になるから区別がつけづらいし
ラムダ式書く場合も内容が複数行に渡る場合は関数内関数を定義する必要が出てきてこれがまた書き難いし読み辛い

インデントブロックは俺も最初は見やすくていいじゃん!って思ってたけど
使い込むうちに不便な側面の方が強くなってきたわ
0120デフォルトの名無しさん
垢版 |
2019/08/19(月) 12:20:48.74ID:W/U4wDij
インデントでブロックを作るやつはデバッグとか
動作検証したいだけってときに面倒だよね

自分で手書きするときはインデントするし
最終的には綺麗にするんだけど、

一部のコードをコメントアウトしたり
動きがわからんから、一部分抜き出して動きを見たりとか
そういう作業中のじゃまになる。
0121デフォルトの名無しさん
垢版 |
2019/08/19(月) 15:53:43.94ID:Kn9dUhI/
>>117
emacsならC-c C-qでもいいし他のエディタも整形機能ついてるのあるんじゃないの
pythonはエディタが特化してないとどうしようもない
インデントだけで管理しなきゃいけないってのは悪手だ
0123デフォルトの名無しさん
垢版 |
2019/08/20(火) 17:19:24.55ID:0DHPUJts
経験上、インデント面倒臭いというやつのコードは汚い
0124デフォルトの名無しさん
垢版 |
2019/08/20(火) 17:26:59.88ID:OyLrpvkx
何が経験だ当たり前の話じゃねーかw
0125デフォルトの名無しさん
垢版 |
2019/08/20(火) 17:36:59.00ID:kykP5Tm6
>>123
(上級者は)インデントするのが面倒くさいって言ってるんじゃないからな。
デバッグや動作検証などの一時的なコードまでインデントするのが面倒くさいって言ってるんだからな。
すぐ消すようなコードまでインデントする必要ないし
後で消すときに目立つようにあえてインデントを崩してる。
0126デフォルトの名無しさん
垢版 |
2019/08/20(火) 19:53:51.24ID:aOYKq+L4
インデントと論理構造の一致が不要という人もいるだろうし
コードはすべて大文字で書くべきという人もいるだろう
コーディング規約の一貫性は不要だという人もいれば
レビューは工数の無駄だという人もいるだろう
そういうレベルのお話よね
0127デフォルトの名無しさん
垢版 |
2019/08/20(火) 21:02:08.67ID:QsJJjC9V
インデントとカッコで同じ情報を表してるんだから冗長なのは事実
知能が高いと冗長さは単純に無駄だが、低脳ドカタには冗長さも必要ってことだよ
0128デフォルトの名無しさん
垢版 |
2019/08/20(火) 21:25:25.48ID:ar+OimNr
インデントとカッコが同じ情報だと思ったことがPythonの敗因だろうね
インデントっていうのはスペースと同じなんだよ。

コンピュータからすれば意味はなくて、
人間が見やすくなるように人間のためのもの

意味がある情報だけで言えば、スペースは要らない
カンマや演算子の前後にスペースは要らない
関数の引数だって,のみスペースは禁止にしたってよかったはずだ。

でもそうしなかったのは関数の引数を区切るカンマと
見やすくするためのスペースは別物だから

Pythonは見やすくするためのインデントを意味と共通化してしまったから
見やすい記述に制限ができてしまった。
0130デフォルトの名無しさん
垢版 |
2019/08/20(火) 21:45:07.95ID:lOKfo+mN
>>128
それに、ブロックの終了の記号が何にも無いのは明確さがなく、
ケアレスミスの元となる。レイアウト的なものは、空行を入れたり
少し違う業や関数からコピーして来たりするときにずれ易い。
ずれたときにブロックの終了記号があると助かる。

>>127
逆に助長性は安全性に繋がりやすい。例えば、C/C++の最後のセミコロン";"
は無くてもコンパイラがその都度推定できる可能性はあるが、
有った方が確実だから有る。Rubyなんかは無くても分かるときはなくて良い
仕様ではあるが、大規模プログラムではそれが見つけにくいバグの原因に
なる可能性がある。
0131デフォルトの名無しさん
垢版 |
2019/08/20(火) 21:47:25.12ID:aHZAynoR
>>127
文系の人は、lexical(字面)的な読解力が頭の良さだと勘違いしやすいが、
そうではない。字面ではなく本質的なところが重要。字面的な判別能力
を自慢にしてる人は、短いが見にくい変な書き方をして結局本人も間違う。
0132デフォルトの名無しさん
垢版 |
2019/08/20(火) 21:50:09.95ID:aHZAynoR
>>127
ちなみにおいらは、客観的に見て低脳ドカタではない。
高IQ、高学歴、高実績で評価は高い。
0133デフォルトの名無しさん
垢版 |
2019/08/20(火) 21:50:17.64ID:Y189B2BT
理系の短いは実行する行が少ない(定義文や空行は含めない)
文系の短いは書く量が少ない
0134デフォルトの名無しさん
垢版 |
2019/08/20(火) 21:58:55.64ID:aHZAynoR
>>128
C/C++において、関数の引数を二行以上に渡って書きたいような時、
インデントと意味は、有る意味ではずれる。しかし、それぞれの引数の後ろに
一つずつコメントを書きたいようなときにはそのの書き方は見やすい :
func(
  aaa,   // これこれこういう意味。
  bbb,  // TYPE *pXxxx
);

また、ターゲット別に #if #endif などでコードを変えたいような場合は、
インデントの関係がどうしても崩れる場合があるし、その場その場で
マクロに対するインデントを重視するか、C/C++言語に対するインデントを
重視するか、どちらがいいかは一概には決まらない。

#if xxx
TYPE aaa;
・・・
#else
・・・
#endif

↑TYPE aaa; の部分に、#if ブロックのインデントを付けた方がいい場合と、むしろ、その場の
C/C++ のブロック宣言としてのインデントの位置を維持した方が分かりやすい場合とが有り、
どちらも優劣付けがたい。
0135デフォルトの名無しさん
垢版 |
2019/08/20(火) 22:01:08.71ID:aHZAynoR
>>133
文系の人は、文章そのものの雰囲気的な美しさに美学を見出す傾向がある。
芥川龍之介の「表現技巧(?)」が素晴らしいとか、○○氏の詩的表現は
真似できないとか。

しかし、それをプログラミングに持ち込んで欲しくない。ここでもそういう
表面的な美しさばかりにとらわれている人が多い気がする。
0136デフォルトの名無しさん
垢版 |
2019/08/20(火) 22:03:19.33ID:Y189B2BT
上級者はコードの書き方に拘って
見やすいように、意味が伝わりやすいよに書くんだが

低級者は無意味に見づらく書く(本人は見づらいことがわかってない。そこまで気が回らない)


そういう低級者にインデントのみ、書き方を押し付けることが出来るが
どちらにしろ低級者なので、クソコードにしかならない
低級者には補助輪程度の役目にしかならず、上級者には足かせとなる
0137デフォルトの名無しさん
垢版 |
2019/08/20(火) 22:25:28.11ID:lOKfo+mN
そういえば、プログラミングにおいても>>134の場合のように、関数の
引数を折り返して書く場合、どの程度引数の前に空白やタブを入れるべきかは
人間が見たときの「見易さ」で決まる。それは関数名 func 部分の長さに
よっても変化し得る。そして、何が美しいかは「美学」「美術」の領域に
入ってきてしまう可能性がある。だからプログラミングは芸術とも言われる。

その意味で、インデントに論理的な意味を与えすぎると、芸術的な
美しさが得られなくなってしまう可能性は高い。
0139デフォルトの名無しさん
垢版 |
2019/08/21(水) 03:52:34.88ID:jDiMObB6
ここでやる話じゃないな
0140デフォルトの名無しさん
垢版 |
2019/08/21(水) 08:31:45.31ID:DZT6aay9
まるで自分が将来性が無いって言われてるように感じてしまって必死なんよ
0143デフォルトの名無しさん
垢版 |
2019/08/21(水) 15:30:57.62ID:zqKd/4GT
インデントで話を散らかしてRubyの将来性>>1から意識を逸らしたいだけw
0144デフォルトの名無しさん
垢版 |
2019/08/21(水) 21:17:39.84ID:6KJaGV9b
デルファイは言語じゃ無くて、IMEの名前じゃね?
あれ、中身言語はpascalだよな?
0148デフォルトの名無しさん
垢版 |
2019/08/22(木) 18:29:20.75ID:k0K3XsJW
pythonはインデントガーとか言ってる人ってメモ帳でソースでも書いてるの?w
0149デフォルトの名無しさん
垢版 |
2019/08/22(木) 18:37:54.75ID:jM8tCXZ0
メモ帳以外で書いたら、勝手にインデント揃えてくれるんか?
例えば、他から持ってきた複数行のコードをコピペしたときに

インデント=ブロック構造というコードの意味になってるんだから
勝手に整形してくれるわけないな
0153デフォルトの名無しさん
垢版 |
2019/08/22(木) 20:46:16.23ID:UjFyi9ja
>>150
無理だろ?

例えばこういうコードに

def repeat_msg(msg, repeat=3):
  for i in range(repeat):
    print msg

他のコードで使われてる、インデントが異なるこの2行をコピペして

      print foo
      print bar

def repeat_msg(msg, repeat=3):
  for i in range(repeat):
    print msg
  print foo
  print bar

に勝手にインデント揃えてくれるエディタなんて思いつかん

そもそも実現可能なのか?やる方法があるにしても、どこからコピペを
開始して、どこに移動してから貼り付けるとかパッと出てくる?
0154デフォルトの名無しさん
垢版 |
2019/08/22(木) 20:57:13.82ID:oZbspsSs
コピー先の最初の行のインデントの深さだけ決めてコピーしたら
残りの行のインデントも自動的に揃えられるだろ
0156デフォルトの名無しさん
垢版 |
2019/08/22(木) 21:21:37.03ID:UjFyi9ja
>>154
残念ながらそれは無理。


def repeat_msg(msg, repeat=3):
  for i in range(repeat):
    print msg
  | ここで貼り付けをすると

こうなる。

def repeat_msg(msg, repeat=3):
  for i in range(repeat):
    print msg
        print foo
        print bar
0158デフォルトの名無しさん
垢版 |
2019/08/22(木) 22:42:18.87ID:6Stfv2pG
>>153>>156
ここでPythonのインデント云々って言ってる人はこんなレベルだったの?
0159デフォルトの名無しさん
垢版 |
2019/08/22(木) 22:57:39.80ID:bojKrn/j
WEB+DB vol.111 は、Ruby on Rails 6, Julia 特集だけど、
Python から、Julia へ流れそう

Julia は、do 〜 end が使えて、Ruby風に改良されてる!
Jupyter Notebook(JN)でも使える

Windows で、RubyをJNで使っている人は、日本語でバグらないの?
irb では、バグるけど

RubyをVSCode で使っているけど、JNでも日本語でバグらないかどうか、知りたい
0160デフォルトの名無しさん
垢版 |
2019/08/22(木) 23:13:01.91ID:6ipmKUpK
>>156
自分の周りにコピペプログラマーがいないからちょっとびっくりなんだけど
こういうレベルの人が世の中に結構いたりするの?!
0161デフォルトの名無しさん
垢版 |
2019/08/22(木) 23:16:34.88ID:427lMmCu
>>156
しかもそれ他の言語でも同じだよね例えばcならこうなるけどカッコで対応とれてるからってそのままこういう風に書き続けるのかキミは?w

void repeat_msg(char *msg, int repeat){
  for (int i = 0; i < repeat; i++){
    printf("%s\n", msg)
  }
        printf("%s\n", foo)
        printf("%s\n", bar)
        printf("end.\n")
        }
0164デフォルトの名無しさん
垢版 |
2019/08/23(金) 16:14:51.02ID:Zx6EO+xk
敢えてやるなら
def repeat_msg(msg, repeat=3):
  for i in range(repeat):
    print msg
  if True:
   print foo
   print bar
こんな感じ
コピペの方がインデント浅い時とか長い時は別関数造って呼ぶ
0165デフォルトの名無しさん
垢版 |
2019/08/23(金) 19:10:11.80ID:T9lcDaB4
とりあえずpythonで書き慣れると他の言語が鬱陶しくて仕方ないねインデントに限らず
プログラミング言語の完成形に近いと思うわ
恒常的に動くシステムのソフトとかでもない限りpython一択だと思うわ
あ、GUIアプリは知らん
0167デフォルトの名無しさん
垢版 |
2019/08/23(金) 23:11:02.04ID:LHN2h0YB
pythonの何が完成系なんだよ。
変数のスコープがあいまいだし、
参照かコピーかあいまいだし、
ライブラリと同じ名前のファイル名つけたら悲惨だし

結局あいまいだからちょっと複雑なものを作るとうんざりする。
完成されたライブラリにちょっとパラメータ変えて流すには便利ってだけの代物
0169デフォルトの名無しさん
垢版 |
2019/08/23(金) 23:27:33.46ID:DZMYtvox
>>167
ちょっと複雑なものなんてお前には作れないだろ
モッサリ鈍重ウンコwebサイトは複雑でもなんでもないからね?
0170デフォルトの名無しさん
垢版 |
2019/08/24(土) 01:31:25.28ID:dr4oD/Ll
あいまいではないな。
仕様どおりだ。
仕様が変だという話かな。
0174デフォルトの名無しさん
垢版 |
2019/08/24(土) 09:22:56.58ID:+nNIwdjo
>>167
まあ無能な奴は厳しい規則設けて檻に入れとくしか飼いならす方法ないもんなあ
プログラミング言語も同じで草
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況