1: 田杉山脈 ★ 2019/06/14(金) 15:22:03.32 _USER
545421
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/
引用元: http://egg.5ch.net/test/read.cgi/bizplus/1560493323/


3: 名刺は切らしておりまして 2019/06/14(金) 15:32:12.82
そんなシンタックス上の些細な事は慣れの問題だろうに...

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

5: 名刺は切らしておりまして 2019/06/14(金) 15:37:31.14
ぴそん

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

7: 名刺は切らしておりまして 2019/06/14(金) 15:49:08.56
>>6

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

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

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

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

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

12: 名刺は切らしておりまして 2019/06/14(金) 15:55:33.87
時代はForth

15: 名刺は切らしておりまして 2019/06/14(金) 15:56:49.21
たしかにFOR文の書式が他と少し違うとかあるけどな

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

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

17: 名刺は切らしておりまして 2019/06/14(金) 15:57:25.58
ころんちゃん

38: 名刺は切らしておりまして 2019/06/14(金) 16:40:12.07
>>17
はっぴー

18: 名刺は切らしておりまして 2019/06/14(金) 15:58:27.16
俺は標準の2次元配列が気に食わない

19: 名刺は切らしておりまして 2019/06/14(金) 16:00:51.15
Pythonで嫌なのは2次元配列の初期化するとき
なんであんな書き方なんだよ

21: 名刺は切らしておりまして 2019/06/14(金) 16:05:43.14
Python は書きやすくて好きだね。

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

23: 名刺は切らしておりまして 2019/06/14(金) 16:10:49.48
トーシローのボヤキかよ

24: 名刺は切らしておりまして 2019/06/14(金) 16:12:14.25
諸君!私はPaipanの方が好きだ!

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

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

28: 名刺は切らしておりまして 2019/06/14(金) 16:22:46.16
やっぱperlは自由に書けてイイネ!
他人のコードを読むのは御免こうむるがw

29: 名刺は切らしておりまして 2019/06/14(金) 16:24:13.21
Python のコロンなんて、
構造化前の COBOLのピリオドの深刻さに比べれば、
全然無問題

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

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

32: 名刺は切らしておりまして 2019/06/14(金) 16:28:29.25
つまりコロンぐらいしか突っ込めない言語って記事か

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

34: 名刺は切らしておりまして 2019/06/14(金) 16:31:07.57
間違ってました!って手書きの資料レベルだから手元がミスったんであって
モノ作る時はpycodestyle(pep8)走らせるだろ普通。

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

56: 名刺は切らしておりまして 2019/06/14(金) 17:26:59.37
>>35
それで毎回つまづく
エラーを出してから気がつくのが習慣

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

41: 名刺は切らしておりまして 2019/06/14(金) 16:46:26.01
ヤセたんとコロンたん

42: 名刺は切らしておりまして 2019/06/14(金) 16:47:29.42
python→車高が低い改造車
C++→プラド
C→カローラ

こんな認識でいい?

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

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

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

48: 名刺は切らしておりまして 2019/06/14(金) 17:10:08.29
インデントでブロックにするなら
わざわざコロンを書かせるのは冗長だとは思ってる。

53: 名刺は切らしておりまして 2019/06/14(金) 17:18:02.59
>>48
なんとなくパーサーが簡単になるようにという仕様な気がする
pythonのソースコード見たことないからわからんけど

50: 名刺は切らしておりまして 2019/06/14(金) 17:10:58.64
つまずいた理由がコロンなのは笑うわ(´・ω・`)

55: 名刺は切らしておりまして 2019/06/14(金) 17:23:25.58
Pythonが流行ってる云々は、昔フリーターがもてはやされてフリーターになった末に人生詰んだ人のパターンと似ている。

58: 名刺は切らしておりまして 2019/06/14(金) 17:30:19.17
>>55
Pythonがフリーターとか笑えるなおまえは
圧倒的なライブラリの豊富さで
IT以外の業種からも使われるPythonの方が断然つぶしが利くぞ

61: 名刺は切らしておりまして 2019/06/14(金) 17:34:11.70
>>58
まるで昔のperlだなw
イキるのは程々にしておけ

66: 名刺は切らしておりまして 2019/06/14(金) 17:50:58.18
>>58

ってえか、データ嬲る仕事やる人なら便利な道具だわ。
文系出身の俺様でもファイル操作であんまり苦労しなかったからな。

経済&経営学系の現役大学生ならAI云々以前に統計やら解析処理で厭でも使わにゃならんのでは?

(´・ω・`)を踊らせるアホなプログラムが俺様でも気楽に描けたのにはビックリした。
その昔、gtkを独習しようとして3日で挫折したレベルだから、まあ御参考迄。

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

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

65: 名刺は切らしておりまして 2019/06/14(金) 17:41:45.63
_name_とかがようわからん
あと変数宣言しないからどれが変数かわからなくなる

67: 名刺は切らしておりまして 2019/06/14(金) 17:52:34.84
Pythonを書きにくいとか言う奴は
C言語とかJavaとかJavaScriptとか他の言語に触れたら発狂するんだろうな。

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

69: 名刺は切らしておりまして 2019/06/14(金) 17:56:55.92
琴奨菊「オレの登録商標だかんな」

71: 名刺は切らしておりまして 2019/06/14(金) 18:08:55.93
研究開発やってる人はPython便利だね
機械学習はもちろんちょっとしたデータ処理スクリプト書くのも簡単だし
自分は化学出身だけどとても重宝してる

74: 名刺は切らしておりまして 2019/06/14(金) 18:19:51.34
最近は言語二の次でライブラリで言語を選ぶ事が多いんだが、
ライブラリの呼び出しが上手く行かずにハマる事が多い。
皆どうやって動かしているんだろう。

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

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

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

78: 名刺は切らしておりまして 2019/06/14(金) 18:33:41.00
>>76
例えばPythonの標準ライブラリで言えばなんて関数?
分からないってことは具体的に分からなかった事があったんだろ?

80: 名刺は切らしておりまして 2019/06/14(金) 18:36:12.43
>>78
標準ライブラリではないな。
俺の理解を超えた数学のライブラリとか。
すぐには例が出せない。

82: 名刺は切らしておりまして 2019/06/14(金) 18:38:13.97
>>80
それはライブラリが理解できないんじゃなくて、
そのライブラリが取り扱ってる数学が自分の理解を超えているだけなのでは…

83: 名刺は切らしておりまして 2019/06/14(金) 18:39:45.71
>>82
流石に入れるものと出てくるものは理解出来るんだが、
数字の並べ方みたいなもん。

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

スポンサード リンク