Open7
プログラミング言語を計測する際の指標リスト
- S: json のパース能力とマッピング能力
- 文字列の json をいかにして class や struct などの型に落とせるか
- PHP は
json_encode
json_decode
が非常に強力だが型マッピングが微妙 - JavaScript も
JSON.parse
JSON.stringify
が強力だが型マッピングが微妙 - golang も struct にメタ貼って展開出来るので優秀
- validation も含めたい
- S: エラー処理の表現力
- PHP は
$context = []
がデフォルトのThrowable
にないので結構つらい - golang は例外を持たないことでエラー処理を explicit にしている
- PHP は
- S: Formatter/Linter/LSP が存在すること
- 現代自動 format や LSP による支援がないことにはコードが書けない
- A: Unit test のしやすさ
- コア機能に搭載されているととても良い
go test
とかdeno test
とか - Ziglang はソースコードとテストコードを同じファイルに置けるので非常に良い
- コア機能に搭載されているととても良い
- A: 日時の表現力
- JavaScript Temporal くらい正確に出来ると良い
- Third-party Library にデファクトがあってもよい
- S: 壊れづらさ
- 失敗した時に致命的に壊れるかどうか
- NullPointerReference があるかどうかなど
- ユーザーが壊れないようにするためにかける労力と書き換えても良い
- PHP はどう書いても壊れづらい
- Rust は壊れづらいが、そのためにかける労力が多い
- C は壊れやすい(生ポインターの扱いなど)
- B: 開発時のコード編集の反映速度
- ホットスワップがあるかどうかなど
- JVM 系はちょっと遅いイメージ
- PHP はF5リロードで済む
- A: パッケージマネージャ―
- hoist するかどうかとか
- lock ファイルがあると良い
- S: エコシステムの繁栄度
- サードパーティライブラリが豊富
- A: 一般的なインターフェースがある程度決まっていること
- golang の Writer/Reader とか良い
- PHP の PSR とか良い
- B: 非同期処理の書きやすさ
- Promise, Future, async/await
- A: パターンマッチング
- match 式など PHP はちょっと改善してきた
- JavaScript はしんどい
- B: 戻り値の表現力
-
Result<T, E>
や golang のタプル返却など
-
- A: モジュール分離
- private, protected, internal, public など可視性で要素を公開するか設定できる
- import が explicit である