5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

急に難しくなったJavascript

Last updated at Posted at 2020-12-13

そう言えば皆さん気が付きましたか。
昔一番簡単だったのがJavascriptでした。
残念ながら一番言語体系がぐちゃぐちゃになったのはJavascriptになってしまいました。
JavaScript Advent Calendar 202013日目です。
#昔はクラスとかオブジェクト指向型言語ではなかった
そうなんですよね。
昔は本当に静的言語で使いやすかったです。
一番はやったのはなぜかというとみんなが一番触りやすく一番手に馴染む言語だったからです。
無茶ができたのも一番の特徴です。

Console.log('Hallow world');

こんな形で書けました。
#なぜここまで難しくしなければいけなかったのか
正直言うとHTMLの進化とも言えましょう。
動的に作れなければいけないという現状が出てきます。
そこで考え出されたのがJavascriptの動的言語化。
クラスやアロー関数を使えるようにしようとする動きが出てきました。
Javascriptはシンプルなクラス構成を狙っていたんでですが。
いろんな派生言語を生む結果になったのです。
#なぜECMAを忌み嫌うのか
正直言うとECMAの登場でガラリと変わったのは現実です。
だがめんどくさいことが発生してしまいました。
クラスの書き方はJavascriptと違う。
フレームワークの組み込み方まで全て変えてしまいました。
そこで生まれたのはBabelというトランスパイラーです。
トランスパイラーはECMAをJavascriptに書き換えると言った動きをやってました。
この部分を早くする前にECMAが変わってしまったりというイタチごっこでした。
#TypeScriptの登場
ECMAが難しい。
ならどうすればいいのか。
Javascriptを進化させるしかないということになります。
それを担ったのがTypescriptとなりました。
TypescriptがECMAとの差を埋めることができたかというと少しどころかECMAが減っていったことになります。
ですがTypeScriptでJavascriptに書き直す作業は出てきますが。
ECMAよりは軽微なもので済みました。
正直言うとECMAの難しさよりTypeScript容易さを選ぶということになりましたが。
とっつきづらい言語Javascriptの脱却はできませんでした。
それはどちらにしてもJavascriptへのTypeScriptからのトランスパイルが必要なので結局babelの世話になると言うことになります。
それはクラスの書き方とアロー関数の書き方を容易化する試みが複雑さを生んでしまっていたのです。
#これからJavascriptはどうあるべきなのか
Javascriptは簡単な言語に戻るべきだと自分は思います。
クラスの書き方の統一とアロー関数の使い方の統一ということが必要だと思います。
各派生言語ごとに書き方が変わるのは痛いです。
正直jQuery・React並に簡単にかける言語を狙えばもっと楽だったかもしれません。
正直一度オブジェクト指向化を失敗するのは自分なりのやり方を多くすればみんながついてきてくれるわけじゃないんです。
一番悩まされたのはクラス・アロー関数・フレームワークの組み合わせがもっと簡単になればもっと人口は増えるはずです。
自分はJavascriptもPHP・C#と同じくらい使っています。
もっと簡単なオブジェクト指向言語になるべきだと思います。

今日なここまでにします。

明日はsaka212さんです。
期待しています。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?