【IT】Pythonはコードが書きやすい?ご冗談でしょう

1: 田杉山脈 ★ 2019/06/14(金) 15:22:03.32 ID:CAP_USER

Pythonが大変な人気を集めている。先日、都内の大型書店のプログラミング書籍コーナーに行って驚いた。とにかくPythonの解説書が大量にあるのだ。複数の書架をPythonの解説書が埋め尽くしている。すべてのプログラミング言語の中で書籍数が一番多いように見えた。これほどまでに増えているとは正直、思っていなかった。

自社の近くにある中規模の書店でも確かめてみた。ビジネス書が中心で技術書はあまりないタイプの書店だ。それでも、タイトルにPythonを含む書籍は10冊近くあった。他の言語の書籍は、メジャーな言語でもせいぜい1~2冊程度。対照的な状況である。

Pythonが人気を集めるに従って、Pythonのことを褒めそやす記事も増えている。そうした記事には、例えば「Pythonのコードは書きやすい」と書かれていたりする。Pythonで有名なプログラマーが言えば説得力があるが、あまりコードを書かない人がこんなことを言っていると少しモヤモヤする。

というのは、最近、個人的にPythonのコードを書くようになって、それなりにつまずくところがあったからだ。Pythonのことをあまり知らないと思われる人が「書きやすい」と主張しているのを見ると、「ご冗談でしょう」と皮肉の1つも言いたくなる。

私が具体的にどこでつまずいたのかを紹介しよう。

とにかくコロンを忘れまくる
Pythonのはまりどころと言うと、インデントを想像する人が多いのではないだろうか。他の言語では、「{}(中カッコ)」などでブロックを表現することが多い。これに対し、Pythonではインデントをそろえた部分がブロックと見なされる。コードを書かない人だと、これがネックになると想像するかもしれない。

しかし、少なくとも個人的にはインデントのせいでPythonが書きにくいと感じることはなかった。他の言語でも、ネストのレベルなどをインデントで合わせて整形するのが普通だ。コードの形自体はPythonでも他の言語でもあまり変わらない。インデントが単なる見やすさのためなのか、文法的な意味を持つかの違いだけだ。

ではどこでつまずいたのか。個人的には、何と言っても「:(コロン)」である。Pythonの構文ではコロンを多用する。if文の条件の後にコロン、elseの後にコロン、繰り返し処理を行うfor文でコロン、関数を定義するdef文でコロン、クラス定義でコロン、とにかくコロンだらけだ。

自分が知っている範囲では、他のメジャーな言語でこれほどコロンを多用する言語はない。このため、とにかくコロンを付け忘れる。最初のうちは、正しくコロンを付けていることのほうが少なかったくらいだ。

Pythonに慣れてくると、さすがにコロンを付け忘れることは減ったが、それでもたまに忘れてしまう。実行時のエラーメッセージですぐに分かるので、直すのは簡単だが。

コロンを付け忘れるのは私のような初心者だけではないようだ。

優秀なエンジニアが集まっていることで有名なあるベンチャー企業は、WebでPythonのチュートリアル資料を公開している。この資料を見ていたところ、構文を説明する図でコロンを付け忘れているところがあった。
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00682/061100007/

2: 名刺は切らしておりまして 2019/06/14(金) 15:24:16.76 ID:Rd7a0W4g
以下
コロンと忘れてしまいがち禁止

4: 名刺は切らしておりまして 2019/06/14(金) 15:32:14.98 ID:ym1snHB7
C#の方が書きやすいだろ

6: 名刺は切らしておりまして 2019/06/14(金) 15:37:37.96 ID:DBiRUa3r
; ってPHPですら使うのに・・・恥ずっ

7: 名刺は切らしておりまして 2019/06/14(金) 15:49:08.56 ID:+0AeGiwJ

>>6

ツッコミ待ちだよね? それはセミコロン(;)だって
コロンは(:)こっち

8: 名刺は切らしておりまして 2019/06/14(金) 15:49:56.62 ID:4sxN/2bn
富士通でプログラムの仕事やってたときいきなりパイソンでテスト環境作れって上から言われた、もう6年も前の話だ
当時はシェルで環境作るのが当たり前だったからなあ、あれは疲れた
まあ確かに便利だったよ、あらゆるテスト環境をあっさり作れたからな、まさか人工知能で使うとは思わなかったが

9: 名刺は切らしておりまして 2019/06/14(金) 15:50:02.77 ID:uJEiAXUK
: はウザいが、日経にドヤ顏で描くかね

10: 名刺は切らしておりまして 2019/06/14(金) 15:52:33.85 ID:sIu4yqif
インデントしないのは許せいないけど、インデントがシンタックスとして意味があるというのはもっと許せないなあ

14: 名刺は切らしておりまして 2019/06/14(金) 15:55:51.73 ID:3apf3jar
>>10
c系と全く別文化だよね。
phpのが全然書きやすいわ。

13: 名刺は切らしておりまして 2019/06/14(金) 15:55:41.37 ID:ZGiaUKcd
忘れたら自動で入力してくれるようにエディタで設定すればいいじゃん

15: 名刺は切らしておりまして 2019/06/14(金) 15:56:49.21 ID:WUPojIlL

たしかにFOR文の書式が他と少し違うとかあるけどな

でもそんな文法的なことは慣れればいいだろう

16: 名刺は切らしておりまして 2019/06/14(金) 15:57:18.41 ID:Hf0mKGn6
だいたいインデント深くなる直前に書くとおぼえとけばいいんじゃね?

191: 名刺は切らしておりまして 2019/06/15(土) 13:28:45.63 ID:tNR4q5di
>>16
これ

21: 名刺は切らしておりまして 2019/06/14(金) 16:05:43.14 ID:3Ylzznw/

Python は書きやすくて好きだね。

書きやすくするための構文・文法も多彩でいい。

25: 名刺は切らしておりまして 2019/06/14(金) 16:15:33.47 ID:Glw3ZqhO
:もそうだが、いろんな言語を使いすぎて
A.tostr()なのかA.toString()なのかstr(A)なのかsprintf(“312”,A)なのか
単純な文字列化ですらわけわからなくなってくる。

68: 名刺は切らしておりまして 2019/06/14(金) 17:54:42.96 ID:TAztK0Z2
>>25
IDEにアシストしてもらってばかりだと一向に覚えられないよねw
覚えなくても困らないけど……
IMEばかり使ってると漢字が書けなくなるのと同じ現象

26: 名刺は切らしておりまして 2019/06/14(金) 16:16:25.72 ID:3hQpEuA9
Pythonよりも英語が読めなくて難儀する。

151: 名刺は切らしておりまして 2019/06/15(土) 05:25:23.86 ID:KWKmnljE
>>26
わかる

27: 名刺は切らしておりまして 2019/06/14(金) 16:20:57.40 ID:FC4tM83z
枝葉末節でしか批判できないのは、本質に問題がないから

135: 名刺は切らしておりまして 2019/06/15(土) 00:15:52.18 ID:G0RwSnME
>>27
本質に問題があったら言語として使い物にならない以前の問題

30: 名刺は切らしておりまして 2019/06/14(金) 16:24:43.91 ID:qEAiH9iA
なんの言語やるかより 一つの言語で徹底的になんでもできるように極めたほうがいいだろ

39: 名刺は切らしておりまして 2019/06/14(金) 16:40:40.69 ID:Hf0mKGn6
>>30
何でもできるようにということになると、CとかC++とかしか選択肢がなくなる

40: 名刺は切らしておりまして 2019/06/14(金) 16:45:37.73 ID:jX57ckWL
>>39
ブラウザの表示どないすんねん
と思ったが、cgiとかあったなぁ
死ねる

89: 名刺は切らしておりまして 2019/06/14(金) 19:18:06.17 ID:uD6W7LPW
>>39
素早く書き上げるのはできないから C系統はスクリプト言語であらかた速度が問題になったところだけ書き換えてる
エキスパートはC系でもいろいろ素早く試せるのだろうか?(そのためのC++ だとは思うが、本当にいろいろなアイデアを
早く書けるか?早く試せるか?)

33: 名刺は切らしておりまして 2019/06/14(金) 16:30:56.82 ID:u7v3fCEe
F#erから見るとなんでインデントに文法的な意味を持たせるのをそこまで嫌うのかわからん。
PHPで書かれたソースをメンテさせられることがよくあったけど、逆になんでこんなにインデントに無頓着でいられるのか理解に苦しむ。
正しくないインデントつけるぐらいならインデントしてない方がよほどマシだし、それならインデントが正しくないと動かない方がマシ。

35: 名刺は切らしておりまして 2019/06/14(金) 16:31:39.81 ID:/nd9xVc6
[1:10] で 10 が含まれないのは気持ち悪い。
[1:10) にしてくれ。

56: 名刺は切らしておりまして 2019/06/14(金) 17:26:59.37 ID:MXOhSlGC

>>35
それで毎回つまづく
エラーを出してから気がつくのが習慣

Pythonのいいところは
ミスってもインタープリターだから簡単に治せるところだと開き直っている

42: 名刺は切らしておりまして 2019/06/14(金) 16:47:29.42 ID:UmLRYsH8

python→車高が低い改造車
C++→プラド
C→カローラ

こんな認識でいい?

43: 名刺は切らしておりまして 2019/06/14(金) 16:48:16.21 ID:bs9Nggit
>>42
PythonはATだけど、C/C++はMTな。

44: 名刺は切らしておりまして 2019/06/14(金) 16:50:54.85 ID:/nd9xVc6
Cは F1 だな。
安全装備も付いてない。

45: 名刺は切らしておりまして 2019/06/14(金) 16:52:18.51 ID:bs9Nggit
>>44
昔、Oh!Xで祝一平が「公道用ゴーカート」って書いてた。

59: 名刺は切らしておりまして 2019/06/14(金) 17:31:41.70 ID:4H/yxfSS
リンク先の本文読んだけど、schemeでプログラム書いてるって何してる人なんだろ?
仕事で書いてるんなら俺もそこに転職したい。

62: 名刺は切らしておりまして 2019/06/14(金) 17:35:12.42 ID:iunSGBgf
解説書なんて必要かなあ
これほどオフラインヘルプのマニュアルが充実してる言語もそう無い

73: 名刺は切らしておりまして 2019/06/14(金) 18:19:49.57 ID:bs9Nggit
>>62
他のプログラム言語を何か習得済の人は不要。
全くの初心者の場合は、そもそもpythonで入門しないほうがいいんじゃないかな…

64: 名刺は切らしておりまして 2019/06/14(金) 17:38:38.09 ID:7UVcQUlS
日本では、Ruby全盛期は、Pythonなんて糞扱いだったんだがな。 どうしてこうなった?

100: 名刺は切らしておりまして 2019/06/14(金) 19:42:00.71 ID:Qa4KPGMY
>>64
日本ではそのころ、Pythonはまだ海の向こうの存在だった。
クソかどうかも議論されない、Pythonにとって日本はまだ未踏の地だった。

161: 名刺は切らしておりまして 2019/06/15(土) 08:27:23.49 ID:pxFcmhmd
>>100
グーグルが採用したって話で一瞬話題になった
けど日本語ダメだったからPerlやるか生まれたばかりのrubyやるかだったんだよ
2000年になるかならないかくらいか?もっちっとまえか?

201: 名刺は切らしておりまして 2019/06/15(土) 14:07:10.02 ID:jNssUSkp
>>64
個人的な感想になるが、言語仕様としてはRubyの方が好きだなあ

210: 名刺は切らしておりまして 2019/06/15(土) 16:06:26.42 ID:jbPmeHj2
>>201
思想がPythonの方が良い

67: 名刺は切らしておりまして 2019/06/14(金) 17:52:34.84 ID:dM+spBWh

Pythonを書きにくいとか言う奴は
C言語とかJavaとかJavaScriptとか他の言語に触れたら発狂するんだろうな。

Javaに触れたら、
なんでこんなに冗長なの?HelloWorld!だけで何でこんな冗長なの?
なんでこんな長ったらしい名前ばっかりてでくんの?
そもそもこんな短いコードにクラスなんで必要ないだろ。
オブジェクト思考な書き方強要してくんなよ、うぜーな。
ってなるし、
JavaScriptに触れたら、
文法が自由&カオスすぎて他人が書いたコードとか読みたくねえ!!
なんでこんなに括弧だらけで何重にも入れ子になっているの?
バカなんじゃないの?もっとスマートに書けないの?
読みづらいし、書きづらい何なのこれ?可読性悪すぎだろ。
しかもフレームワークは新しいのポコポコでてきて覚えるのクソ面倒臭えし
ってなるし、
C言語に触れたら、ポインタって何だよ、これ、クソうぜーな。
毎回毎回なんで自分で開放しないといけないんだよ!
しかも一つ一つの手続きが簡単に書けなくてすげえめんどくせえ。
もっと簡単に書けねえのかよ!
しかもVisualStudioのバージョン変わるごとに
いちいちコードに手入れたり設定変えないと
コンパイル通らねえしクソ面倒くせえ!開発環境に依存しすぎなんだよ、クソが!
ってなるだろうな。

253: 名刺は切らしておりまして 2019/06/17(月) 09:47:05.76 ID:ow2Ft9vG
>>67
そーそーw
Pythonで苦戦するならはじめから才能ないって話だよな。
まーコロンはなくてもいいと思うけど。

74: 名刺は切らしておりまして 2019/06/14(金) 18:19:51.34 ID:i/c/4CZp

最近は言語二の次でライブラリで言語を選ぶ事が多いんだが、
ライブラリの呼び出しが上手く行かずにハマる事が多い。
皆どうやって動かしているんだろう。

型の概念が無かったりすると、パラメタに何をどうやって設定すれば良いのか分からない。
ググってサンプルがあるようなのはともかく、
ライブラリのコードを見たりしているんか?

75: 名刺は切らしておりまして 2019/06/14(金) 18:25:50.73 ID:bs9Nggit
>>74
ライブラリのドキュメントに書いてあるだろそんなの。
ドキュメントも無いのだとソースコード当たるしか無いのかもしれんが、わざわざそんなの拾ってくるか?

76: 名刺は切らしておりまして 2019/06/14(金) 18:30:33.10 ID:i/c/4CZp
>>75
ドキュメントには何を設定するかの名前は書いてあるんだけど、
どんなフォーマットで渡すのか俺には理解出来ないんだよね。
俺だけなのか?
型があればそれに合わせてデータを並べる必要がある事が分かるんで、
組み合わせがかなり絞れる訳なんだが。

81: 名刺は切らしておりまして 2019/06/14(金) 18:38:13.23 ID:epfJxgyQ
型が緩いのは数十行以上のものを書き出すと途端にデメリットになる

87: 名刺は切らしておりまして 2019/06/14(金) 18:57:09.26 ID:0lUzl6Wf
>>81
それな。
何の処理してんだか他人が見て解らんくなる。
それなのに何でjavaが冗長とかなるんだか。

106: 名刺は切らしておりまして 2019/06/14(金) 19:47:41.11 ID:Qa4KPGMY
英語圏のフォーラムではVisual Basicの代替として
Pythonをすすめている投稿をよく見かけた。

108: 名刺は切らしておりまして 2019/06/14(金) 19:58:21.56 ID:D9s/3JXf
Cとpython行ったり来たりしてると、
pythonに行ったら、括弧やセミコロン書いちゃったり、
Cとかに行くと、括弧やセミコロン忘れちゃったりが多い。

112: 名刺は切らしておりまして 2019/06/14(金) 20:24:35.89 ID:W9uRisQ/
>>108
.NETやってるとそれはない。
「これはVB」、「これはC#」って最初に自分に言い聞かせるから。

132: 名刺は切らしておりまして 2019/06/15(土) 00:06:24.52 ID:xwY5+xzP
pythonはさ、リストの短縮が特殊すぎてわかりにくい
numpyとかpandas使うて更に短縮形使われた式見ると「はぁ?」ってなる

133: 名刺は切らしておりまして 2019/06/15(土) 00:08:38.64 ID:UWtamF67
アセンブラをちゃんと書ければ、pythonだろうと
cだろうと、3日あれば仕事で使える程度には使える
ようになる

134: 名刺は切らしておりまして 2019/06/15(土) 00:10:55.72 ID:XMtbwakN
>>133
どういう仕事するかによる。

136: 名刺は切らしておりまして 2019/06/15(土) 00:16:24.84 ID:7oAqQQt5
>>133
3日は言い過ぎじゃない?
最初は仕事場の規約や作りに準拠するのが一番大変なイメージだね。

152: 名刺は切らしておりまして 2019/06/15(土) 05:37:04.47 ID:k1Vy9JQx
こんなレベルの低い「書き易い/難い」記事は初めて見た。
中学生が書いたのか?それとも知恵遅れの大人かな?

150: 名刺は切らしておりまして 2019/06/15(土) 04:25:30.12 ID:yI2+gUC0
COBOL最強!

引用元

管理人からひと言

どの言語も大差ない気がする

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

入門Python 3 [ ビル・ルバノビック ]
価格:3996円(税込、送料無料) (2019/7/8時点)

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

フォローする