nodejsコミュニティは狂っており、2016-2017年にさまざまな評価でJavaScriptがJavaをわずかなマージンで混雑させることで人気で第1位になったという事実から判断すると、狂気は本当に最近大きくなっています。 食べたくない場合は、好きなElixir / Erlang / Lisp / Haskell /他の良いデザインの言語で書き、吹き飛ばさないでください。しかし、残念ながら、現在の状況では、このルールは機能しなくなります。 。
JavaScriptのような本当に悪い言語の人気の理由は何ですか? 原則として、ジャワの人気の同じ理由、そして実際に文化と社会のほとんどすべての現象 -生地の中。 Facebook、Google、Microsoft、Twitterなどの巨人が、数百万ドルの巨額のストリームをJavaScriptインフラストラクチャに系統的に注入し、フレームワーク、ライブラリを作成し、標準やアーキテクチャを考案すると、それを無視するのは本当に難しくなります。 生地のこのような強力な注入は、必死の誇大宣伝のドライブ開発を引き起こします。 雇用主は、React、Redux、Relay、Realm、Flux、Babel、Webpack / Grunt / Brunch、および私が知らない私たちのお気に入りの企業からの数十の流行語を見たいと思っています。 そして、これらはすべて、同じテクノロジー向けのプラグインの束で味付けされており、私たちの最愛のnpmからのすべての種類と色です。 企業からのテクノロジー。これにより、企業からのテクノロジーと、単純なSPA用の縮小された15 MBのjsバンドルが得られます。
ある時点で、本当にひどい言語での開発に対する大きな需要が、他のより受け入れやすい言語から、時にはかなり奇妙なJavaScript コンパイラを大量に生み出しました。 開発者が最も強力な認知的不協和音(私はお金が欲しいがJSは望まない)に苦しめられたのは、JavaScriptでの開発の苦痛を軽減するために何らかの形で試みた(そして試みた)ことは非常に論理的です。 個人的に、私はこのリストからかなりの数の言語を試し、しばらくの間CoffeeScriptで同様の言語を書きました。最も成功したLiveScriptの例は、カレーボックス、パイプ、愚かな括弧、セミコロン、ループ、return sの欠如です。 Haskellコード(イミュニティ、モナド、強力な型のすばらしいシステム)をJavaScriptでコンパイルする例であるPureScriptを試しました。 実際、当然のことながら、これらすべての言語は明らかな理由で商業的に要求されているわけではありません-インフラストラクチャの開発において企業から何百万もの注入がありません。 もしあれば、私は歯を与え、誰もがHaskellに書いて、スムージーのカップをお互いにスピナーを回転させてFacebookからの新しいモナドと適用ファンクターについて話します。
バックエンド開発者として、これはまったく気にしないはずです-フロントエンドでnpmの不明瞭さをさせてください、私はここに少し注文します、1986年のようなコーシャチューブOTP。しかし、それはリラックスするには早すぎました-彼らはブラウザからJSエンジンを引き出して彼の顔に絶対に真剣な表情でバックエンド。 この言語でSPAを作成することと、非常に重要な請求がもう1つあります。 しかし、JavaScriptは現在バックエンドにあります。
- シングルスレッドランタイム(2017年!!!)
- モジュールの実装のための統一システム/標準の欠如(再び、2017年にヤードで)
- プロジェクト構造に対する統一された標準の欠如(誰もが望むように動作するため、ソースコードを把握することは非常に困難です)
- 暗黙の(そして時には奇妙な)変換を伴う弱い型
- 通常のクラスの欠如/ OOP
- 単一の正気と動作する静的コードアナライザーの欠如( 未定義のような愚かなエラーの素晴らしい世界へようこそ) は機能ではありません
- 言語自体またはツールに型推論がない
- この素晴らしいこのコンテキスト(これはコードのこの時点で何を意味しますか?オブジェクト?関数?)
- パターンマッチングの絶対に愚かな実装(空のリスト/オブジェクトと一致します-問題ありません、そこから未定義になります、あなたは正確にそれを意味しますか?)ここで再びhi は未定義のプロパティfooを読み取ることができません
- 非同期コードを操作するための統一技術の欠如-コールバック、プリム、フューチャー、非同期(プロジェクトがnpmから複数の依存関係を持っている場合、それらがすべてコードに混在して表示されることが保証されます)
- const(実際にはconstではありません)
- 「兄弟が私に何か食べるものを持ってきた」品質のパッケージで絶対に狂気のnpm(そしてこれでさえ)
また、これは、可変性、中括弧、セミコロン、戻り値、データ構造を扱うための統一された標準の欠如、マクロまたはカスタム挿入演算子/ファンクターの欠如など、個人的に私を悩ませる機能の主観的な見方については黙っています。
一般的に、JavaScriptはどのように言ってもひどいものですが、生地と低いエントリーしきい値のために大人気です。 緑のメモのパケットが鼻の前に持ち込まれたとき、抵抗するのは難しいですが、私は待ちます。 メンタルヘルスはもっと高価です。 ところで、最近私はOcaml言語の分野でのFacebookの活動について読みました。したがって、トンネルの終わりに光がある可能性がありますが、これは正確ではありません。