型、ついてますか? - 型の本質を振り返る - に参加してきた #AIAL

aial.connpass.com

2016/7/8に開催された「型、ついてますか? - 型の本質を振り返る」に行ってきました。
会場は品川のマイクロソフトさんです。

大変内容が濃く興味深い話でしたが、時間が短かったこともあって大半は理解できなかった気がします。以下レポート。

型、ついてますか? 高野光弘さん(@takano32)

今日は(古代|近代|現代|原始) * (動的|静的)型付けで分類していく

静的型付け

  • 「型がついている」といえばこれのこと
  • コンパイルでき、静的な解析が可能。変数の型を精査できる
  • コンパイル時に実行はされない

動的型付け

  • 事前に型の精査をしない
  • いきなり実行できる
  • 実行時にはじめて型がわかる

古代静的型付け

  • C言語を代表とする
    • システムと密接な型付け
    • 型が不明だとデータの扱い方がわからない

古代動的型付け

処理の記述へとフォーカスしていく

BASIC

  • 初心者向け
  • 裏ワザ使ってシステムにアクセス出来る(DATE, PEEK,POKE)

シェル

  • システムと対話するための機構を応用

近代動的型付け

古代動的型付けで解決が面倒だった分野の改善

パール(真珠)はシェル(貝)からできているという逸話

  • PHP

    • 適当に書けば動く
    • 多くの問題を解決してきたのは成果
  • Python

    • Perlより洗練されている
    • 癖のあるPerlは読めない...

近代静的型付け

おみやげ話: C++のstructはclassと同じ動きをする

現代動的型付け

パラダイムユースケースで大きく普及

現代静的型付け

システム記述レイヤーからの解脱

原子動的型付け

レジスタ 即値 アドレス

機械語の型付け

  • 実行時に即値かアドレスか判断
  • この時点からは事前処理がない
  • つまり動的型付けといえる

原始静的型付け

  • 起源はラムダ計算
    • 型なしラムダ計算
    • 型ありラムダ計算
  • 原始動的型付け ... ノイマン
  • 原始静的型付け ... 思考実験

なぜ歴史は繰り返すのか

  • 静的型付けと見せかけて動的なのは邪悪

これからのパラダイム

抽象化がさらに進む

個人的に欲しいパラダイム

副作用を考慮したシェル

  • ここでいう「副作用」とは操作がマシンに影響するか
    • ls → 副作用なし
    • mkdir → 副作用あり

「俺が聞きたい話はこんなんじゃなかった」→ イベントやるから来てね

ll.jus.or.jp

Linear Types niryuuさん

資料待ち

Linear Typesとは

  • 1度しか取り出せない値を表す型
    • Uniqueness types(Clean)
    • Ownership(Rust)