将来性ないプログラミング言語。Delphi含まれず安心
■ このスレッドは過去ログ倉庫に格納されています
5 Programming Languages That Are Probably Doomed
https://insights.dice.com/2019/07/29/5-programming-languages-probably-doomed/
Ruby
Haskell
Objective-C
R
Perl Objctive-Cはさすがに役目を終えつつあるしな
Rubyは意外に流行らなかったな
Haskellは・・どちらかといえばOcamlの方がやばいと思うんだが
R シラネ
perlはさすがにもうないな ただ、PythonとRubyなら、後者の方が見やすいと思う。
Pythonはブロックの終わりが分かりにくいことが間違いの原因に
成り易い。上の方のどこかのブロックの中に入っているのか、
それとも関数の基底の部分で書いているのかの判別にとても時間が
かかることがある。特に他の人が作ったソースの場合。 Pythonは1関数、50行の制限をつけるべきだろう C/C++ や Ruby なら、} や end の個数が一目瞭然なので、余りネストが
深くなければ、今見ている行がどのブロックに入っているのか分かりやすいが、
Pythonだとネストが浅くてもどのブロックに入っているのか分からないこと
がある。 >>6
Pythonで内部関数(?)を大量に書かれているソースの場合は特に、
親の関数の中なのか、内部関数の中なのか側から無いのでかなり
判読に時間がかかる。しかも間違ってもエラーが出ない。
宣言しなくても変数が使えてしまう事と相まって、処理系に
間違いを検出して貰える確率がとても低くなってしまっている。
バグを防ごうと思ったら、結局、ブロックの終わりをコメントで
明示しないといけなくなって、なら最初から { } 方式の方が
記述効率が良い。 >>8
誤:親の関数の中なのか、内部関数の中なのか側から無いのでかなり
正:親の関数の中なのか、内部関数の中なのかが分から無いのでかなり 大丈夫。25行程度なら、ひと目で
どこがどこに対応してるかぐらいわかるだろう >>10
現実のソースは1関数が何百行になっていることが多い。
自分で書いたソースではない。 RはPythonに置き換わったしな
てかググれないのが致命的w バイオインフォマティクスでは Bioconductor のおかげで
R もよく使われてる >>13
Dは1.*の時代に今の仕様にあがってればいけてたと想うんだが... >>8
関数と関数の間は〜2行開けるとか、
結局のところ書き方しだいじゃね。 > 関数と関数の間は〜2行開けるとか、
なぜPythonはそれを強制しなかったのか?
書く人によってばらばらになって読みにくいではないか(笑)
「インデントでブロックを表すという文法」というだけなら
(書きづらいの別として)そういう文法ってだけでいいんだが
「インデントでブロックを表すからコードが統一され可読性が上がるうんぬん」は眉唾
言語で矯正されないとインデントできないレベルのやつがインデントが統一された程度で
コードの可読性が上がるわけ無いだろう >なぜPythonはそれを強制しなかったのか?
強制ってわけじゃないけどpep8ベースのリンターでチェックしてくれるからそれで十分じゃね emacsでもブロックを可視化してくれるけど
そこに頼らないといけない時点で問題あるわな
clispなんかは必須だけど > そこに頼らないといけない時点で問題あるわな
どんな問題? ギド・ヴァン・ロッスムなんて無名の雑魚が設計し、名前もキモすぎる杜撰言語Pythonが
何でこんなに流行しているのか。
ロブ・パイクとケン・トンプソンという大物が入念に設計したGo言語がインタプリタでも
提供されれば、Pythonは終わるだろ。 ∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ / >>19
Pythonの場合、空行があると余計に分かりにくくなる。
何か文字がないてないと上の行のindentと同じが違うかの
区別が人間は勘違いしやすく、むしろ詰めた方がまだ分かりやすい。
だから、C++などで空行を空けて分かりやすくすることに慣れた人には
困った言語だと思う。 >>27
誤:何か文字がないてないと上の行のindentと同じが違うかの
正:何か文字が書いてないと上の行のindentと同じか違うかの aaa
bbb
↑だと同じインデントに書いてあるとすぐ分かるが、
ddd
aaa
bbb
ccc
↑こんなふうになっていると間違うことがある。 というか、ここに書いても多分、伝わらない。
実際の他人が書いたPythonのプログラムはブロックの範囲が分かりにくくて
とても困るんだが、実際のソースを提示しないと分かって貰えないと思う。
これに関しては想像と実際で結構違うと思う。想像力の限界というか。 あと、自分で書いたコードでも、他の場所からコピペして少し修正して
使いたいようなことが良くあるが、その時にインデントの問題が出てきそうだ。
コピペしている途中に、ペースト先の以前のコードのブロックの範囲がどこだった
か非常に混乱してしまいそう。実はC/C++でもペーストした後、ブロックの範囲が
インデントを整え終えるまでの間は、ブロックの範囲の混乱が起きることが多い。
でも { や } の位置を頼りによく見て対処するしかない。
ところが Python の場合は、{や}がなくてインデントだけが頼りなので、
より危険度が増すと思う。 (一時的な)コピペでインデント変えたくない時は
if True:
使え そもそもコピペしまくる香具師はセンス無いわ
剥いてないから辞めた方が良いマジで邪魔 >>33
いや、現実世界では、オイラのプログラミングの能力は物凄く高いと
評されているのであしからず。 >>34
類は友を呼ぶから、お前の周りもお前同様にレベル低いんだよ
ドカタ世界で王様気取りウケるw >>39
その会社のその部署には(日本の中で)上辺の非常に一握りの人たちだけがいると
言われていたよ。別の会社からやってきた社長も最高レベルの人材が
集まってきていると言っていた。 まこなり社長が「とりあえずRubyやっとけ」とか言ってたの笑ってしまうw インデントが違ったらブロックのレベルが違うで十分だと思うけど
画面内に{}やendが見えててもインデントがむちゃくちゃみたいなプログラムのほうがよほどわかりにくい
他人が書いたJavaScriptとかいややわ〜 Ruby の新しい本が、一杯出てる。
独習シリーズも、Rails 本に参入した
WEB+DB でも、RubyVM の作者、Cookpad の笹田耕一の連載が始まった
WEB+DB Vol.111 号では、Rails 6・Julia の特集
科学技術計算用のJulia は、Ruby に似てる。
Python から、Julia に流れそう >>43
ブロックを識別するのにインデントと{}は、両方必要。
どちらが欠けても駄目。 >>43
{}やendは機械的に正否判定できるけど、インデントだと無理じゃね?
ide支援が拡充していく現在の状況では弱点だと思う 機械的に正否判定できるからPythonが動くんだろ 機械的に成否判断できないから、Pythonにはインデント整形ツールがないんだろ
の間違いでは? インデントだけでも機械には判断できても、人間は間違いやすい。 まあ、人並みの知能があれば間違えないけど、こればっかりは地頭の差がでるからねぇ
あ、もしかして、Pythonが知能の高いAIやってる連中に流行ってて
底辺ドカタにいまいち人気が無いのは、インデントの所為? >>52
ライブラリを作る側の地頭が良い連中は気にしないから
ライブラリがどんどんリッチになって行くんですね、分かります >>53
な?お前の話から大部分のライブラリを使う人の話が消え去ったやろ? そんなもんやで
ライブラリやフレームワークが有るからその言語を使う。
Rubyを使うのはRailsがあるからやし、
Pythonを使うのはAI関連のライブラリが有るからやし。
Unityとか.NETとか、ウェブで使えるのはJavaScriptしかないとか
言語の良し悪しで決めることなんて無いんやで >>51
一応、メンサ会員になれる程度を遥かに超えるIQは持っていますが、Python
のブロックの記法は間違いやすいと思っています。 >>55
Pythonなんて今のAIブーム来るずっと前からシステム周りのツールで使われてるやん JSのインデントというかブロックがわかりにくいのは、コールバック関数を多用するからだと思う JSはコードのフォーマット次第でコールバック関数のインデントがずれる ずれるという証拠を見せてください
beforeとafterを書いて SQLもインラインテーブル使うと中のインデント狂うな 普通、C/C++などで関数呼び出しで引数が多くなったりすると、二行に
書くことになる。
そういった場合、Pythonのインデントの問題がトラブルの原因になったり
しないのだろうか。
少なくとも、関数の中に内部関数を定義すると、物凄くPythonは読みにくく
なることを他人のソースで経験した。 >>66
そうか?
その辺の読みにくさはJavaの方が酷いぞ >>67
Javaでブロック範囲が分からないと思った事は一度も無い。
Pythonだと関数やブロックが立て続けに終了した場合、見た目で
訳が分からなくなり、解読に間違いが入り込みやすい。
ある命令が子関数の中に対するものだと思っていたら、親関数の
中だったり、逆だったりする。
ループのブロック、ifのブロックとの混乱も生じる。
ifブロックの中だと思っていたら、既にそれは終わっていたりする。
また、もうifブロックは終わっていると思っていたら、まだ
続いていたりする。
ifブロックの中に、さらに入れ子に何らかのブロックが入って、
それらも何個かが続けて「終了」した場合も、非常に混乱して
他人のソースの解読が難しくなる。 忘れたけど、実際にはもっと空行が入っていたり、命令数も多かったり、
内部関数も何段にも入っていたりするが、以下を見れば分かりにくさが分かって
もらえるかもしれません:
if ・・・
if ・・・
for ・・・
aaa
bbb
ccc >>70
実際には、もっと行数が多くて if や for 命令が画面内には表示
できなくて、エディタでは(見えない)画面の上の方にある。
上記の例だとまだ画面内に表示されているので良く見ると分かるが、
画面外にあるとずっと解読が難しくなる。
ロジック以前にブロックの範囲の読み間違えが生じてしまう。 C/C++ だと、画面範囲より上の方に if や for の始まりの部分があっても、例えば
}
}
aaa();
・・・
}
bbb();
のようになってくれるので、aaa(); という命令がどのブロックに入っているのかは
分かりやすい。ところが、Pythonだと、以下の様にようになる。
aaa();
bbb();
これでは、ブロックが何回「終了」したのかも分かりにくい。 >>66
そりゃその他人の問題だろw
わかりにくく書くのはどんな言語でもできるし Python信者「関数が長いと見にくいので次第に短い関数を書くようになるから教育的に優れている」 C/C++ の場合、三回ブロックが終わった後に aaa が書いてあると分かる:
}
}
}
aaa;
Pythonの場合、以下の様になっていて、画面上のaaaの先頭に「定規」でも付けて
エディタで上にスクロールして、ifやforや内部関数定義の冒頭(defかな?)などを見つけて
どこと一致してるか確認してから、下にスクロールして意味を考えないといけない。
aaa; >>74
でも同じロジックでも、C/C++やC#やJavaやRubyで書いてあれば
ブロックの範囲で悩むことは無かった。だから書き方の問題ではなく、
言語そのものの設計の問題だと考えられる。 他人のプログラムのロジックの難しさで悩むのはしょうがない。
しかし、ブロックの範囲がそもそも分からなくて悩むのはPython特有で
今までの言語では無かった悩みどころが入ってしまった。 定規とかアホすぎ
上下移動でカーソル位置は横に移動しないエディタとか
縦に補助線引けるエディタとか使えよ
(もちろんそこまでしなくても読めるが馬鹿には必要な機能なんだろ) >>79
ちなみに、自分の IQは、メンサ会員になれるよりだいぶ上です。 まず、
if
if
for
の入れ子とかおかしいからな
こんな作り方しないよ >>81
そんなことないです。
その位は普通に有りますし、悪いプログラムでも汚いプログラムでもは有りません。
問題はソースの方にあるのではなく、Pythonの設計の方にあります。 じゃあPythonを改善したスゴい言語でも作れば?
IQ高いんだろ 他のメジャーな言語はだいたいカッコか、そうでなければendとかfiとかキーワードでブロック作るもんな
Pythonだけじゃん キスしてイチャイチャしたいだけでしょ
スルーでいい >>1で将来性のないプログラミング言語筆頭にRubyが挙げられてることから目を逸らしたい幼稚な工作でしょwww Rubyの未来は
ウォウウォウウォウウォウ
世界が羨む
パイパイPython >>80
統合失調症かよ
ム板って何でこんなやつが多いんだ 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に流れそう >>94
>VSCode の拡張機能、Bracket Pair Colorizer, indent-rainbow などで、対応関係がわかる
解決策ありがとです >>94
漏れも、同じ、意見。
Rubyは、廃れる! VB6までが無い
Perlが挙がってるのが個人的には不思議 >>43 その通りだな。 インデントが無茶苦茶でも通るからロジックのまとまりがどうなってるかわかりづらい。 仕方なく自分でインデントを整理するが。
ま、どんな言語でも作ってるやつがクソならクソなプログラムになってる。 時々イラっときて作り直した方が早い。 >>66 () {} などで括られた中はインデントを気にしなくても良い。 >>86 あのさ、そんな些細な事より、{} で括るとか、
if
fi
とかの方が余程コーディングの手間が多いぞ。
1タッチでも少ない方が良い。
そもそも、Python はスクリプト言語だと言うことを無視して話してる。
その都度実行されないといけないんだぞ。
間違えるわけがない。 書くのは一回、読むのは数十回
たった一回書くのが楽なことよりも
何十回も読むのが楽な方を選ぶ ■ このスレッドは過去ログ倉庫に格納されています