はてなキーワード: ECMAとは
が見つかって俺が騒然。
TypeScript はバージョン 4.3 で、「オーバーライド」を明示する機能が付いた。
class Base { foo() { } } class Deriv extends Base { override foo() { } }
これは、TypeScript の大きなアキレス腱となる。
例えば、こう
class Base { foo() { } } class Deriv extends Base { foo(): Base { } }
コロンの後ろに基底クラス名を指定し、これでオーバーライドを明示する記法としたらどうだろう?
TS としては「foo() は Base を返すメソッド」に見えるのに……
見た目は同じなのに TS と JS で意味が異なるとなれば、TS はもう「JS のスーパーセット」と名乗れなくなるだろうし
コードを読まされるプログラマにとっても大きな負担となり、TS に身勝手な機能を取り付けていった Microsoft は
似た事は「private」で起こっていた。
TS はプライベートメンバを「private」で表したのに対し、ECMA は「#」記号で表すことにした。
しかしこれは残念ながら TS の都合とバッティングするものではなく、TS はすぐに ECMA に追随してしまった。
TS と MS を Web から追いやるには、ECMA がちょっと工夫をするだけでよい。
ECMA の動きに大いに期待したい。
プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。
JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightとかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScriptに改名されたり、規格を話すときはECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースのオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。
Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。
Javaは初期のころオートボクシング / アンボクシングもなく、ストイックなオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコードも簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である。
PHPはWebネイティブな言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能や初期化していない変数を最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列と数字を臨機応変に切り替える機能もあり(今もそうかは知らん)、数字と文字の比較を比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。
C#はHello Worldくらいしか書いたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。
C++は黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーションで腱鞘炎になることもない。PC Unixにも最初から環境がインストールされているか、簡単にインストールできるので毛嫌いせず使うとよいと思う。
Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。
TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。
Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるから、カーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。
これ以下のランキングのもその気になったら書こうかな。
TypeScript(TS)がJavaScriptの代わりになるだと?確かに型を使えるのは良い。意味不明なオブジェクトを操作しまくって意味不明な動的型付けするJSに型が追加されたら、そりゃバグも減るだろうよ。でもそれは意味不明なオブジェクトを操作し、再代入を繰り返すレベルの低いJSerの責任だ。コーダーの責任なんだよ。Pythonも意味不明なオブジェクトを操作しまくるが、JSほどはひどくならない。Pythonも型ヒントなんてものが導入されたが、誰が使うんだこんなの。果てしなく冗長になって糞だ糞。DocStringを充実させるのと型ヒントを充実させるの、どちらがどれだけメリットが有るっていうんだ。DocStringで十分だろ。全員アホだ。話をTSに戻そう。
散々文句を言ってしまったが、型が使えるのにはこしたことはない。TSを始ようじゃないか。TSをインストールしよう。Node.jsをまずインストールして、TSをインストールしたぞ。ついでにgulp、webpackもいるのか。おいまてよ、ts-loader、webpack-cli、webpack-dev-serverもいるのか。何が何のために必要なのかよくわからないが、node_modulesはすでにパンパンだぜ。tsconfig.jsonを設定してsrcとdistを決め、ECMAのバージョンも決めたぜ。webpack.config.jsってファイルもあるじゃないか。これも設定が必要なのか?俺はいつになったらHello Worldを書けばいいんだ?なめてんじゃねえぞ!!!なんかに似てるんだよ!これはCだ。C言語でプログラムを書こうってときに、コンパイラが必要でインストールして、パスを通して、謎のおまじないを書いて、それでよくわからないままHello Worldを出力したあの頃の思い出がフラッシュバックしたぜ!いや、TSはそれ以上に糞だ。なにせ設定ファイルばっかいじってまだ一行もコードを書けてないくせに、ファイルサイズは70MBを超えてるんだからな。「TS コンパイル」で検索したら、なんで「次にgulpをインストールしましょう」なんて記事がヒットするんだよ!糞か?いや糞だお前は!
プロジェクトに必要なツールをインストールするのは当たり前だって?偉そうなこと言ってんじゃねーぞ!どうせお前なんか先達がすでに準備してくれたプロジェクト環境に後でアサインして、「これとこれが必要だからインストールしてね」って言われてそのまんまインストールしたクチだろうが!どのツールがどのシチュエーションで最適なソリューションなんかわかってねえに決まってら!どのツールがどのシチュエーションで最適なんか誰もわかってねぇんだよ!インターネットに情報は適当に転がってて、お前の先達もDevelopers.IOの記事を読んでなんとなく良さそうだからインストールしてんだよ!全てを正しく把握してるやつなんか日本で3%いたら多いほうだろ。少なくともお前も俺も理解してねぇよ!PHPがRubyを駆逐するって言われて何年たった?今でもPHPは現役で、RubyはPHPの後ろを歩いてるじゃねえか。jQueryが消えるって?同じ理由で消えねえよ!一生やってろばーーか。JavaScriptも消えねぇよ。ECMAのアップデートに従って生で書けば十分だろ。こんなコード書くまでにうんこ行きたくなるような設定ファイルばっかいじらせる言語にとって代わるわけねぇだろ。消えるのはお前だばーか。
いっせーの! Webにのって さあ出かけよう ブラウザとのランデブー ユーザーが大事 実装が大事 JS、マジ大好き ユーザーの痛み それ言語のせい? UIの動き UXのつもり 今までのJSのポジションを 越えた未来は どうなるの? ねぇどうせWebKitでしよ ダメ? ダメ! ECMA標準だけ 油断も隙もない APIとのボーダー越えたい そうもっと! 大胆で ちょっと強引? 俺ワールド全開 優しいJSも いじわるなJSも ひとりじめ 型つけてみて やっぱやめて ウラハラ alt-js Java以上C++未満の JS、マジ最高 V8だけが きらめいて 遠い背中も 追いかけたよ これからの最適化 フローグラフの分まで伝えたい ぎゅってしてPNaClコンパイル ダメ? ダメ! 不埒です CSS3に甘えたい GPUに触れたい どこまで? APIのボーダー教えて おっとっと! 手強い IEの仇 ムキになったら 古いシステムも Flashの将来も 譲れない 実装して やっぱやめて 一方通行プロセス W3C信じて プラグイン書いて No more E4X 動的なの? 静的なの? 型推論好き? 好き! 好きだから 笑わず答えて Ion Monkey 越えよう おっとっと! 大胆で ちょっと強引? prototypeを知ったら JSでの設計や コーディングも変わるの? 答えてよ! ときめき 走り出す わくわくコーディング Self以上 Scheme未満の JS、超愛してる!!