Magazine

言語の世代交代

PHP・Python・TypeScript・Rust はなぜ似た機能を揃って取り込んだのか。null・失敗・不変性・パターンマッチという共通の軸で言語を横断し、旧世代から現代への変化を読み解く連作。

全 7 記事 · この順で読むことをおすすめします

  1. 1

    現代の言語進化は同じ方向を向いている

    記述量を減らすためではなく、表現できてしまう状態を減らすために構文は変わってきた——言語をまたぐ変化の共通ベクトルを読み解きます。

  2. 2

    「値がない」の表し方で言語は4つに分かれる

    null 許容・nullable 型・Option 型——同じ「null 安全対応」に見えて、実際に違うのは値の欠如が検査されるタイミングです。

  3. 3

    失敗を返り値にするか、投げるか

    例外と Result 型の違いは好みではなく、失敗を型に載せるかどうかの設計判断——処理漏れを誰が検出するかが変わります。

  4. 4

    readonly と frozen は同じ意味ではない

    不変性には「束縛の不変」と「値の不変」、そして浅いか深いかの軸がある——同じ readonly でも守る範囲が違います。

  5. 5

    パターンマッチには強度の差がある

    match と書ければ同じではありません——分岐の網羅漏れをコンパイラが教えてくれるかどうかで、機能としての価値が変わります。

  6. 6

    PHP 7.4 から 8.5 で書き方が変わったところ

    PHP 8 系は動的な書き方を禁じたのではなく、宣言的に書く選択肢を足した——7.4 との差分を型・データモデル・分岐の3点で整理します。

  7. 7

    Python 3.9 から 3.14 の構文的な変化

    動的型言語のまま、型注釈・パターンマッチ・遅延評価が拡張されてきた——3.9 世代のコードが古く見える理由を構文の差分で整理します。