X



将来性ないプログラミング言語。Delphi含まれず安心
■ このスレッドは過去ログ倉庫に格納されています
0003デフォルトの名無しさん
垢版 |
2019/08/08(木) 00:40:38.25ID:vEtBDp2D
毎日終わってるな
0004デフォルトの名無しさん
垢版 |
2019/08/08(木) 01:24:10.03ID:6RDlsEn9
Objctive-Cはさすがに役目を終えつつあるしな
Rubyは意外に流行らなかったな
Haskellは・・どちらかといえばOcamlの方がやばいと思うんだが
R シラネ
perlはさすがにもうないな
0005デフォルトの名無しさん
垢版 |
2019/08/08(木) 08:48:34.52ID:47HmOZq4
ただ、PythonとRubyなら、後者の方が見やすいと思う。
Pythonはブロックの終わりが分かりにくいことが間違いの原因に
成り易い。上の方のどこかのブロックの中に入っているのか、
それとも関数の基底の部分で書いているのかの判別にとても時間が
かかることがある。特に他の人が作ったソースの場合。
0007デフォルトの名無しさん
垢版 |
2019/08/08(木) 08:50:46.83ID:kZ+216R/
C/C++ や Ruby なら、} や end の個数が一目瞭然なので、余りネストが
深くなければ、今見ている行がどのブロックに入っているのか分かりやすいが、
Pythonだとネストが浅くてもどのブロックに入っているのか分からないこと
がある。
0008デフォルトの名無しさん
垢版 |
2019/08/08(木) 08:54:26.39ID:kZ+216R/
>>6
Pythonで内部関数(?)を大量に書かれているソースの場合は特に、
親の関数の中なのか、内部関数の中なのか側から無いのでかなり
判読に時間がかかる。しかも間違ってもエラーが出ない。
宣言しなくても変数が使えてしまう事と相まって、処理系に
間違いを検出して貰える確率がとても低くなってしまっている。
バグを防ごうと思ったら、結局、ブロックの終わりをコメントで
明示しないといけなくなって、なら最初から { } 方式の方が
記述効率が良い。
0009デフォルトの名無しさん
垢版 |
2019/08/08(木) 08:55:44.55ID:kZ+216R/
>>8
誤:親の関数の中なのか、内部関数の中なのか側から無いのでかなり
正:親の関数の中なのか、内部関数の中なのかが分から無いのでかなり
0010デフォルトの名無しさん
垢版 |
2019/08/08(木) 08:58:06.81ID:l7k6B2kQ
大丈夫。25行程度なら、ひと目で
どこがどこに対応してるかぐらいわかるだろう
0011デフォルトの名無しさん
垢版 |
2019/08/08(木) 09:10:11.93ID:kZ+216R/
>>10
現実のソースは1関数が何百行になっていることが多い。
自分で書いたソースではない。
0013デフォルトの名無しさん
垢版 |
2019/08/08(木) 16:04:52.28ID:YYsAu0ua
>>2
Dのことか
0020デフォルトの名無しさん
垢版 |
2019/08/09(金) 19:09:56.58ID:xLAwVgGE
> 関数と関数の間は〜2行開けるとか、

なぜPythonはそれを強制しなかったのか?
書く人によってばらばらになって読みにくいではないか(笑)


「インデントでブロックを表すという文法」というだけなら
(書きづらいの別として)そういう文法ってだけでいいんだが

「インデントでブロックを表すからコードが統一され可読性が上がるうんぬん」は眉唾
言語で矯正されないとインデントできないレベルのやつがインデントが統一された程度で
コードの可読性が上がるわけ無いだろう
0021デフォルトの名無しさん
垢版 |
2019/08/09(金) 23:53:24.02ID:MQT8Emar
>なぜPythonはそれを強制しなかったのか?

強制ってわけじゃないけどpep8ベースのリンターでチェックしてくれるからそれで十分じゃね
0022デフォルトの名無しさん
垢版 |
2019/08/10(土) 14:01:57.44ID:wCTxBlts
emacsでもブロックを可視化してくれるけど
そこに頼らないといけない時点で問題あるわな
clispなんかは必須だけど
0024デフォルトの名無しさん
垢版 |
2019/08/10(土) 20:56:39.92ID:3XzNpwZg
ギド・ヴァン・ロッスムなんて無名の雑魚が設計し、名前もキモすぎる杜撰言語Pythonが
何でこんなに流行しているのか。

ロブ・パイクとケン・トンプソンという大物が入念に設計したGo言語がインタプリタでも
提供されれば、Pythonは終わるだろ。
0025デフォルトの名無しさん
垢版 |
2019/08/10(土) 22:24:48.39ID:6d2gRK68
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0026デフォルトの名無しさん
垢版 |
2019/08/11(日) 10:22:49.42ID:ADOQsQhs
松本ひろゆき
0027デフォルトの名無しさん
垢版 |
2019/08/11(日) 15:27:08.58ID:LNlz7QeX
>>19
Pythonの場合、空行があると余計に分かりにくくなる。
何か文字がないてないと上の行のindentと同じが違うかの
区別が人間は勘違いしやすく、むしろ詰めた方がまだ分かりやすい。
だから、C++などで空行を空けて分かりやすくすることに慣れた人には
困った言語だと思う。
0028デフォルトの名無しさん
垢版 |
2019/08/11(日) 15:27:49.46ID:LNlz7QeX
>>27
誤:何か文字がないてないと上の行のindentと同じが違うかの
正:何か文字が書いてないと上の行のindentと同じか違うかの
0029デフォルトの名無しさん
垢版 |
2019/08/11(日) 15:30:22.31ID:LNlz7QeX
    aaa
    bbb
↑だと同じインデントに書いてあるとすぐ分かるが、
     ddd
    aaa


    bbb
   ccc
↑こんなふうになっていると間違うことがある。
0030デフォルトの名無しさん
垢版 |
2019/08/11(日) 15:34:30.55ID:LNlz7QeX
というか、ここに書いても多分、伝わらない。
実際の他人が書いたPythonのプログラムはブロックの範囲が分かりにくくて
とても困るんだが、実際のソースを提示しないと分かって貰えないと思う。
これに関しては想像と実際で結構違うと思う。想像力の限界というか。
0031デフォルトの名無しさん
垢版 |
2019/08/11(日) 15:39:47.36ID:LNlz7QeX
あと、自分で書いたコードでも、他の場所からコピペして少し修正して
使いたいようなことが良くあるが、その時にインデントの問題が出てきそうだ。
コピペしている途中に、ペースト先の以前のコードのブロックの範囲がどこだった
か非常に混乱してしまいそう。実はC/C++でもペーストした後、ブロックの範囲が
インデントを整え終えるまでの間は、ブロックの範囲の混乱が起きることが多い。
でも { や } の位置を頼りによく見て対処するしかない。

ところが Python の場合は、{や}がなくてインデントだけが頼りなので、
より危険度が増すと思う。
0032デフォルトの名無しさん
垢版 |
2019/08/11(日) 15:54:56.70ID:ADOQsQhs
(一時的な)コピペでインデント変えたくない時は
if True:
使え
0033デフォルトの名無しさん
垢版 |
2019/08/11(日) 15:57:25.10ID:Zz62J71g
そもそもコピペしまくる香具師はセンス無いわ
剥いてないから辞めた方が良いマジで邪魔
0034デフォルトの名無しさん
垢版 |
2019/08/11(日) 16:01:31.54ID:LNlz7QeX
>>33
いや、現実世界では、オイラのプログラミングの能力は物凄く高いと
評されているのであしからず。
0035デフォルトの名無しさん
垢版 |
2019/08/11(日) 16:09:54.77ID:2JPwQqrg
皮肉だろうね
0037デフォルトの名無しさん
垢版 |
2019/08/11(日) 16:14:20.52ID:IA19FhdQ
何で必死な人沸いてるん
0039デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:32:41.71ID:iQakK3S3
>>34
類は友を呼ぶから、お前の周りもお前同様にレベル低いんだよ
ドカタ世界で王様気取りウケるw
0040デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:55:29.67ID:LNlz7QeX
>>39
その会社のその部署には(日本の中で)上辺の非常に一握りの人たちだけがいると
言われていたよ。別の会社からやってきた社長も最高レベルの人材が
集まってきていると言っていた。
0043デフォルトの名無しさん
垢版 |
2019/08/11(日) 19:22:29.54ID:/8B9qyHy
インデントが違ったらブロックのレベルが違うで十分だと思うけど
画面内に{}やendが見えててもインデントがむちゃくちゃみたいなプログラムのほうがよほどわかりにくい
他人が書いたJavaScriptとかいややわ〜
0044デフォルトの名無しさん
垢版 |
2019/08/12(月) 01:05:53.80ID:noRgsanp
Ruby の新しい本が、一杯出てる。
独習シリーズも、Rails 本に参入した

WEB+DB でも、RubyVM の作者、Cookpad の笹田耕一の連載が始まった

WEB+DB Vol.111 号では、Rails 6・Julia の特集

科学技術計算用のJulia は、Ruby に似てる。
Python から、Julia に流れそう
0046デフォルトの名無しさん
垢版 |
2019/08/12(月) 13:41:34.78ID:DfuTdZZ8
len(a)
0047デフォルトの名無しさん
垢版 |
2019/08/12(月) 21:50:36.79ID:55hAY7YH
>>43
{}やendは機械的に正否判定できるけど、インデントだと無理じゃね?
ide支援が拡充していく現在の状況では弱点だと思う
0049デフォルトの名無しさん
垢版 |
2019/08/12(月) 23:58:17.91ID:FEiQT6YL
機械的に成否判断できないから、Pythonにはインデント整形ツールがないんだろ

の間違いでは?
0051デフォルトの名無しさん
垢版 |
2019/08/13(火) 09:45:33.43ID:/tYhWlnk
まあ、人並みの知能があれば間違えないけど、こればっかりは地頭の差がでるからねぇ

あ、もしかして、Pythonが知能の高いAIやってる連中に流行ってて
底辺ドカタにいまいち人気が無いのは、インデントの所為?
0053デフォルトの名無しさん
垢版 |
2019/08/13(火) 10:19:25.70ID:/tYhWlnk
>>52
ライブラリを作る側の地頭が良い連中は気にしないから
ライブラリがどんどんリッチになって行くんですね、分かります
0055デフォルトの名無しさん
垢版 |
2019/08/13(火) 10:26:26.63ID:sNnRKo7d
そんなもんやで

ライブラリやフレームワークが有るからその言語を使う。
Rubyを使うのはRailsがあるからやし、
Pythonを使うのはAI関連のライブラリが有るからやし。
Unityとか.NETとか、ウェブで使えるのはJavaScriptしかないとか

言語の良し悪しで決めることなんて無いんやで
0056デフォルトの名無しさん
垢版 |
2019/08/13(火) 10:44:21.79ID:oXPAD0KH
サーバーサイドでjs使いたがるやつの気が知れん
0057デフォルトの名無しさん
垢版 |
2019/08/13(火) 12:16:05.80ID:rjuNmU8i
>>51
一応、メンサ会員になれる程度を遥かに超えるIQは持っていますが、Python
のブロックの記法は間違いやすいと思っています。
0059デフォルトの名無しさん
垢版 |
2019/08/13(火) 12:45:19.35ID:evPHQM6+
>>55
Pythonなんて今のAIブーム来るずっと前からシステム周りのツールで使われてるやん
0060デフォルトの名無しさん
垢版 |
2019/08/13(火) 16:56:34.41ID:UcHcEb9y
JSのインデントというかブロックがわかりにくいのは、コールバック関数を多用するからだと思う
0066デフォルトの名無しさん
垢版 |
2019/08/14(水) 15:40:39.64ID:meO8Vw3B
普通、C/C++などで関数呼び出しで引数が多くなったりすると、二行に
書くことになる。
そういった場合、Pythonのインデントの問題がトラブルの原因になったり
しないのだろうか。

少なくとも、関数の中に内部関数を定義すると、物凄くPythonは読みにくく
なることを他人のソースで経験した。
0067デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:03:46.80ID:cbEBER6Y
>>66
そうか?
その辺の読みにくさはJavaの方が酷いぞ
0069デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:17:27.37ID:Ic9mkGye
>>67
Javaでブロック範囲が分からないと思った事は一度も無い。

Pythonだと関数やブロックが立て続けに終了した場合、見た目で
訳が分からなくなり、解読に間違いが入り込みやすい。
ある命令が子関数の中に対するものだと思っていたら、親関数の
中だったり、逆だったりする。
ループのブロック、ifのブロックとの混乱も生じる。
ifブロックの中だと思っていたら、既にそれは終わっていたりする。
また、もうifブロックは終わっていると思っていたら、まだ
続いていたりする。
ifブロックの中に、さらに入れ子に何らかのブロックが入って、
それらも何個かが続けて「終了」した場合も、非常に混乱して
他人のソースの解読が難しくなる。
0070デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:21:09.06ID:meO8Vw3B
忘れたけど、実際にはもっと空行が入っていたり、命令数も多かったり、
内部関数も何段にも入っていたりするが、以下を見れば分かりにくさが分かって
もらえるかもしれません:

  if ・・・


   
   
   if ・・・
    

    for ・・・

   aaa


  bbb


   ccc
0071デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:23:50.76ID:meO8Vw3B
>>70
実際には、もっと行数が多くて if や for 命令が画面内には表示
できなくて、エディタでは(見えない)画面の上の方にある。
上記の例だとまだ画面内に表示されているので良く見ると分かるが、
画面外にあるとずっと解読が難しくなる。

ロジック以前にブロックの範囲の読み間違えが生じてしまう。
0072デフォルトの名無しさん
垢版 |
2019/08/14(水) 16:27:57.58ID:meO8Vw3B
C/C++ だと、画面範囲より上の方に if や for の始まりの部分があっても、例えば
   }
  }
  aaa();
  ・・・
 }
 bbb();

のようになってくれるので、aaa(); という命令がどのブロックに入っているのかは
分かりやすい。ところが、Pythonだと、以下の様にようになる。



  aaa();


 bbb();




これでは、ブロックが何回「終了」したのかも分かりにくい。
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
書くのは一回、読むのは数十回
たった一回書くのが楽なことよりも
何十回も読むのが楽な方を選ぶ
■ このスレッドは過去ログ倉庫に格納されています

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