JavaScriptに関するお知らせ

SINCE2019
>
【JS】JavaScriptを書いてる人が思うPythonの若干嫌なところ

【JS】JavaScriptを書いてる人が思うPythonの若干嫌なところ


こんにちは!今日は普段JSばかり書いている私がたまに仕事でPythonに遭遇した際に思うPythonの嫌なとこを腹いせに書いていきます。ごめんなPython。

ラムダ式がなんか汚い

これみて

数字に1足して返すだけの関数plus1です。上がJS下がPythonね!

const plus1 = n => n + 1
plus_1 = lambda n: n + 1

なんかこう、Pythonは野暮ったいというか...

JavaScriptは矢のようにシュッとしてるのに、Pythonは何、棍棒?みたいな。

まあ見た目の話は良いんですよ。個人的に辛いのは改行できないところ...これは良いのに

const plus1 = n => n + 1

これは駄目なの...

plus_1 = lambda n:
  n + 1

後にも書きますが、**Pythonは「改行していいか?」がとてもわかりにくい。**わかりにくい。

mapとfilterが超使いにくい

戻り値が配列じゃない。これに尽きます。イテレーターって何!?

しかも昔(v2)は戻り値が配列だったんですって。どうして...

mapで返ってきたやつをまたmapとか、そういうのができないのがつらい。

const three = [0, 0, 0]
  .map(n => n + 1)
  .map(n => n + 1)
  .map(n => n + 1)

console.dir(three) // [3, 3, 3]

こんな感じに(これはちょっと極端だけど)

reduceに至っては標準でない

reduceは標準じゃないんだって... 仲間はずれ...

これないと駄目みたい↓コンパイラ言語かよ。

import functools

まあこの1行足せばいいんだけどな別に

あとreduceは大丈夫だけどimport from とかの順番おかしない?英語の文法的にはJSがおかしいのかな?

改行していいかわかんない

インデントでブロックを作るってのはそれはもう、 とても良いアイデアだと思います。綺麗ですしね。

でも今はPrettierとかあるし。

Prettier

こうなるとおちおち改行もできないというインデントブロックの負の側面がどうしても気になってしまう... コメントまでインデントに気を遣うのがなー:(

Python書ける人はどこで改行してokとか分かるんかな?

三項演算子がない

これも三項演算子使う派としてはつらい。Pythonはif elseになるし順番わかりにくい...ネストできない...

1 + 1 === 2 ? true : false // true
True if 1 + 1 == 2 else False # True

余談ですがスクリプト言語の三項演算子ってJS以外はどれもクセがあるって思います。

Pythonは勿論のことPHPは評価の順番おかしいしRubyは記号の前で改行できない、 LuaとPerlは知らないけど。

4スペ

2スペ派としてはつらいけどこれはいいや!

おわりに

むしろ嫌な点が6つしかない!Python最高!とはいかんけどまあ好き!

個人的にはJSの次に好きだし今後間違いなく伸びるので、末永くお付き合いしたい言語です。以上。



PREV
2019-05-05
【JS】Pontaの実質還元率をJavaScriptで求める

NEXT
2019-05-09
【JS】握手会で例えるJavaScriptのループにおけるreturn、continue、breakの違い