programming

Python滅ぼす協会に入会したい

バカの言語

なぜ令和にもなって動的型付け言語を使うのか

シフトレフトという概念が生まれたのは二十年以上も前のはずだ。
それにもかかわらず動かしてみるまで答え合わせもできない言語で開発をするという発想自体がどうかしている。

同じ動的型付けといってもJavaScriptはブラウザという事情があるし、型の表現力に優れたTypeScriptがあるからまだよい。
しかし、Pythonはどうだ。他にいくらでも選択肢があるなかで、サーバーサイドにわざわざ選定する言語ではなかろう。

貧弱な型ヒント、しかも書いたところで大した効用もない。
使っている外部ライブラリにひとつでも型ヒントがクソなものがあれば即座に破綻する。

型というガードレールもシートベルトもなしで糞を撒き散らしながらする開発にはうんざりだ。

シンタックスもキモい

動的型付けもさることながら、シンタックスもキモい。とにかく思考を妨げる語順になっている。

  • map(lambda x: y, some_list)
  • 1 if x else 0

まず、mapだ。配列に対して操作を加えていきたいのに、記述位置を戻る必要がある。
戻らずに書き下せるように、適用順を変える演算子だとかモナドだとかHaskellの爪の垢を煎じて飲ませたい。

三項演算子も最悪だ。冗長で、醜く、プログラマのメンタルモデルに一致しない。
Pythonの全てがthen if elseの順ならまだいい。だが、通常のifは他の言語と同様if then elseなのだ。

辞書型もわざわざsome_dict["some_key"]のように書く必要がある。some_dict.some_keyのようには書けない。

a = 10の代入文は「文」であり「式」ではない。
それでわざわざa := 10のような醜い構文がある。しかもトップレベルでは使えない。

引数に直接渡すために短く書きたい即時関数がlambda x:とかいうまだるっこしいシンタックスなのも癇に障る。

&&||ではなくandorだし、とにかく他言語と差別化を図るわりには無駄に記述量が増えているだけでメリットがない。

{foo: number, bar: string}を定義したいだけなのに、

class MyType(TypedDict):
  foo: int
  bar: str

を書かなくてはならない。TypedDictをインポートする必要がある。正気の沙汰ではない。

しかもVSCodeでマウスオーバーしてもMyTypeとしか出ない(foo: intなどの情報は定義部に行く必要がある)。
これに関してはもしかしたら設定でなんとかなるのかもしれないが、出せたところで所詮は型ヒントにすぎないという悲しさが全身を襲う。

もちろん定数なんて定義できない。当然だが、全てにおいて何がどこで書き変わっているか、まったく予測できない。 秩序を求める人間の脳と精神を破壊するために存在しているかのような代物だ。

競プロ以外に正しい使い道がない

こと競プロになるとPythonは素晴らしい言語である。

なにもせずとも整数は多倍長に対応していて、標準入出力がラクである。
実行速度が遅いというデメリットもPyPyを使えばだいたい解決する。

高々30行くらいのコードを書くシーンではたしかに使いやすい。
しかし、そんなノリで通常の開発をしたら早晩詰むだろ。

とくにJupyter Notebookとかいうやつ、あれは最低だ。
あんなものを保守対象として受け取った日には人生が無為な時間で埋め尽くされて朽ち果てること請け負いだ。

教育現場でPythonが選択されているのだとしたら子供達はあまりにも不幸だ

こんなゴミを若い時から掴まされる悲惨さと言ったらない。

国語の教科書の代わりに素人が書いたケータイ小説を渡しているようなものだ。

携帯の画面に収まりきる程度の中身のない文章もどきを書くのならいい。
だが、プログラミング教育で目指すのはそこなのか?

無価値なケータイ小説を多少書ける程度の人材を量産したところでどうなるというのだ。
学ばせるならしっかりと型のある言語を使うべきだ。

素人ケータイ小説の著者が、自ら「小説家」を名乗っていたら滑稽に思うだろう。
Pythonを使ってエンジニアを名乗るというのはそういうことだ。

SOLID原則を守れ

SOLID原則のDはDon’t use Pythonだ。
Pythonを使うのをやめろ。