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

1田杉山脈 ★2019/06/14(金) 15:22:03.32ID: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.76ID:Rd7a0W4g
以下
コロンと忘れてしまいがち禁止
3名刺は切らしておりまして2019/06/14(金) 15:32:12.82ID:LR7QONei
そんなシンタックス上の些細な事は慣れの問題だろうに…
15名刺は切らしておりまして2019/06/14(金) 15:56:49.21ID:WUPojIlL
たしかにFOR文の書式が他と少し違うとかあるけどな

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

16名刺は切らしておりまして2019/06/14(金) 15:57:18.41ID:Hf0mKGn6
だいたいインデント深くなる直前に書くとおぼえとけばいいんじゃね?
17名刺は切らしておりまして2019/06/14(金) 15:57:25.58ID:lAkSUFwD
ころんちゃん
38名刺は切らしておりまして2019/06/14(金) 16:40:12.07ID:hSBWzdRi
>>17
はっぴー
23名刺は切らしておりまして2019/06/14(金) 16:10:49.48ID:WEYQZk5l
トーシローのボヤキかよ
28名刺は切らしておりまして2019/06/14(金) 16:22:46.16ID:IVxo4cH3
やっぱperlは自由に書けてイイネ!
他人のコードを読むのは御免こうむるがw
32名刺は切らしておりまして2019/06/14(金) 16:28:29.25ID:k5NrSISy
つまりコロンぐらいしか突っ込めない言語って記事か
34名刺は切らしておりまして2019/06/14(金) 16:31:07.57ID:bs9Nggit
間違ってました!って手書きの資料レベルだから手元がミスったんであって
モノ作る時はpycodestyle(pep8)走らせるだろ普通。
35名刺は切らしておりまして2019/06/14(金) 16:31:39.81ID:/nd9xVc6
[1:10] で 10 が含まれないのは気持ち悪い。
[1:10) にしてくれ。
56名刺は切らしておりまして2019/06/14(金) 17:26:59.37ID:MXOhSlGC
>>35
それで毎回つまづく
エラーを出してから気がつくのが習慣

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

36名刺は切らしておりまして2019/06/14(金) 16:35:33.32ID:bs9Nggit
気持ち悪いと言えば、内包表記をやたら持ち上げるのが気持ち悪いな。
41名刺は切らしておりまして2019/06/14(金) 16:46:26.01ID:3MKB1UBI
ヤセたんとコロンたん
42名刺は切らしておりまして2019/06/14(金) 16:47:29.42ID:UmLRYsH8
python→車高が低い改造車
C++→プラド
C→カローラ

こんな認識でいい?

43名刺は切らしておりまして2019/06/14(金) 16:48:16.21ID:bs9Nggit
>>42
PythonはATだけど、C/C++はMTな。
46名刺は切らしておりまして2019/06/14(金) 17:05:46.06ID:pvAahxJl
Objective-Cのほうがコロンだらけだろ
47名刺は切らしておりまして2019/06/14(金) 17:07:55.40ID:MTGsdeZN
終わりまで読んで損したわ
49名刺は切らしておりまして2019/06/14(金) 17:10:46.37ID:1UABBGPX
ザ☆アニメージ
101名刺は切らしておりまして2019/06/14(金) 19:43:02.08ID:PLazTQh9
>>49
当時最先端のプラモだったなぁ
52名刺は切らしておりまして2019/06/14(金) 17:17:59.59ID:/nd9xVc6
つまずいてコロンだ。
59名刺は切らしておりまして2019/06/14(金) 17:31:41.70ID:4H/yxfSS
リンク先の本文読んだけど、schemeでプログラム書いてるって何してる人なんだろ?
仕事で書いてるんなら俺もそこに転職したい。
71名刺は切らしておりまして2019/06/14(金) 18:08:55.93ID:r4mpph2R
研究開発やってる人はPython便利だね
機械学習はもちろんちょっとしたデータ処理スクリプト書くのも簡単だし
自分は化学出身だけどとても重宝してる
77名刺は切らしておりまして2019/06/14(金) 18:30:55.24ID:oAf6wkKF
まぁ最終的には関数型言語が最強だと思うんだけど(F#は除く)
誰かScalaをJava freeにしてくれないかな
81名刺は切らしておりまして2019/06/14(金) 18:38:13.23ID:epfJxgyQ
型が緩いのは数十行以上のものを書き出すと途端にデメリットになる
87名刺は切らしておりまして2019/06/14(金) 18:57:09.26ID:0lUzl6Wf
>>81
それな。
何の処理してんだか他人が見て解らんくなる。
それなのに何でjavaが冗長とかなるんだか。
88名刺は切らしておりまして2019/06/14(金) 19:13:02.71ID:QbR3pud5
Excelにpython入れるって話はどうなったんだ
90名刺は切らしておりまして2019/06/14(金) 19:20:15.22ID:BSR/ftjP
普通 python なんて30分で理解できるだろ?
92名刺は切らしておりまして2019/06/14(金) 19:24:32.52ID:BSR/ftjP
python ですら動的型付き言語なので、型が無い言語は相当やばい …
96名刺は切らしておりまして2019/06/14(金) 19:38:41.35ID:Qa4KPGMY
PHPはどっちも選べるんだけど、do-whileだけはエラーになっちゃう。
97名刺は切らしておりまして2019/06/14(金) 19:40:26.39ID:PLazTQh9
型ゆるすぎて頭混乱するわぁ
99名刺は切らしておりまして2019/06/14(金) 19:41:48.54ID:VYuQ272t
A$→文字型
A%→整数型
A!→実数型
A#→倍精度実数型
だったっけ?
103名刺は切らしておりまして2019/06/14(金) 19:43:35.55ID:Qa4KPGMY
整形が壊れたら致命的。エディタを選ぶ言語。
115名刺は切らしておりまして2019/06/14(金) 20:35:01.08ID:N8cpmdUf
話のレベルが低い。

引用元:http://egg.5ch.net/test/read.cgi/bizplus/1560493323/