Submit Search
Upload
言語設計者が意味論を書くときに考えていたこと
•
5 likes
•
4,050 views
T
Taku Miyakawa
Follow
All about Kink semantics
Read less
Read more
Technology
Report
Share
Report
Share
1 of 11
Download now
Download to read offline
Recommended
コルーチンの実装について
コルーチンの実装について
Taku Miyakawa
Kotlinこんなん出ましたけど
Kotlinこんなん出ましたけど
yy yank
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
豊明 尾古
KuromojiをKotlinで動かす
KuromojiをKotlinで動かす
yy yank
Kotlinソースコード探訪
Kotlinソースコード探訪
yy yank
Kotlin as an AltJS
Kotlin as an AltJS
Shinya Mochida
Kotlinメジャーver リリースを前に
Kotlinメジャーver リリースを前に
yy yank
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
Hiroshi Kikuchi
Recommended
コルーチンの実装について
コルーチンの実装について
Taku Miyakawa
Kotlinこんなん出ましたけど
Kotlinこんなん出ましたけど
yy yank
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
豊明 尾古
KuromojiをKotlinで動かす
KuromojiをKotlinで動かす
yy yank
Kotlinソースコード探訪
Kotlinソースコード探訪
yy yank
Kotlin as an AltJS
Kotlin as an AltJS
Shinya Mochida
Kotlinメジャーver リリースを前に
Kotlinメジャーver リリースを前に
yy yank
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
Hiroshi Kikuchi
KotlinでWebアプリ開発
KotlinでWebアプリ開発
Ryo Nakagawa
Kotlinあるある言いたい
Kotlinあるある言いたい
yy yank
Humble Object Patternな話
Humble Object Patternな話
Hiroto Imoto
Spring boot劇的ビフォーアフター
Spring boot劇的ビフォーアフター
orekyuu
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
Middleman Guides & How to Learn
Middleman Guides & How to Learn
Yuya Matsushima
「やっぱり怖かったPerl」In Kichijoji.pm #2
「やっぱり怖かったPerl」In Kichijoji.pm #2
民人 青山
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
shinnosuke kugimiya
IM飲み会2010 Sekka開発秘話
IM飲み会2010 Sekka開発秘話
Kiyoka Nishiyama
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
宏治 高尾
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
Kazumi IWANAGA
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
azuma satoshi
Graph Algorithms Part 1
Graph Algorithms Part 1
Taku Miyakawa
入門core.async
入門core.async
sohta
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
エスイーのしごと
エスイーのしごと
Yoshitaka Kawashima
やっとわかったタイピングスピード向上のコツ
やっとわかったタイピングスピード向上のコツ
Ryosuke Yamazaki
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
More Related Content
What's hot
KotlinでWebアプリ開発
KotlinでWebアプリ開発
Ryo Nakagawa
Kotlinあるある言いたい
Kotlinあるある言いたい
yy yank
Humble Object Patternな話
Humble Object Patternな話
Hiroto Imoto
Spring boot劇的ビフォーアフター
Spring boot劇的ビフォーアフター
orekyuu
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
Middleman Guides & How to Learn
Middleman Guides & How to Learn
Yuya Matsushima
「やっぱり怖かったPerl」In Kichijoji.pm #2
「やっぱり怖かったPerl」In Kichijoji.pm #2
民人 青山
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
shinnosuke kugimiya
IM飲み会2010 Sekka開発秘話
IM飲み会2010 Sekka開発秘話
Kiyoka Nishiyama
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
宏治 高尾
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
Kazumi IWANAGA
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
azuma satoshi
What's hot
(14)
KotlinでWebアプリ開発
KotlinでWebアプリ開発
Kotlinあるある言いたい
Kotlinあるある言いたい
Humble Object Patternな話
Humble Object Patternな話
Spring boot劇的ビフォーアフター
Spring boot劇的ビフォーアフター
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Middleman Guides & How to Learn
Middleman Guides & How to Learn
「やっぱり怖かったPerl」In Kichijoji.pm #2
「やっぱり怖かったPerl」In Kichijoji.pm #2
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
IM飲み会2010 Sekka開発秘話
IM飲み会2010 Sekka開発秘話
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
CLR/H #clrh104 あなたのアプリにスパイスを! ~ コグニティブと対話 Botのプチレシピ
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
Viewers also liked
Graph Algorithms Part 1
Graph Algorithms Part 1
Taku Miyakawa
入門core.async
入門core.async
sohta
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
エスイーのしごと
エスイーのしごと
Yoshitaka Kawashima
やっとわかったタイピングスピード向上のコツ
やっとわかったタイピングスピード向上のコツ
Ryosuke Yamazaki
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
エスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのこと
Yoshitaka Kawashima
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
Kink の宣伝
Kink の宣伝
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
Taku Miyakawa
良いコードとは
良いコードとは
Nobuyuki Matsui
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
JVM言語を使ってみようの歌
JVM言語を使ってみようの歌
YujiSoftware
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
Java でつくる低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧
Ryosuke Yamazaki
Viewers also liked
(20)
Graph Algorithms Part 1
Graph Algorithms Part 1
入門core.async
入門core.async
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
エスイーのしごと
エスイーのしごと
やっとわかったタイピングスピード向上のコツ
やっとわかったタイピングスピード向上のコツ
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
エスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのこと
Hadoop jobbuilder
Hadoop jobbuilder
Kink の宣伝
Kink の宣伝
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
良いコードとは
良いコードとは
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
擬似乱数生成器の評価
擬似乱数生成器の評価
JVM言語を使ってみようの歌
JVM言語を使ってみようの歌
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Java でつくる低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧
More from Taku Miyakawa
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Java Quine Golf
Java Quine Golf
Taku Miyakawa
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Taku Miyakawa
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Taku Miyakawa
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Taku Miyakawa
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Taku Miyakawa
More from Taku Miyakawa
(9)
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Java Quine Golf
Java Quine Golf
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Recently uploaded
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Recently uploaded
(7)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
言語設計者が意味論を書くときに考えていたこと
1.
@miyakawa_taku JJUG幹事
SI屋で賃労働 オレオレJVM言語Kinkを作っています https://bitbucket.org/kink/kink 尾上部屋の里山関のファンです 自己紹介 1
2.
2 Kinkとは! こんなの↓ プロトタイプベースのオブジェクト指向 言語 JVM上で動く言語処理系だ!
仕様策定者: 宮川 拓 実装者: 宮川 拓 ユーザ: 宮川 拓
3.
言語設計者が意味論を書く時に 考えていた事 2015-04-18 渋谷JVM LT 宮川
拓
4.
4 はいけい 去年の7月から12月ごろに掛けて、 Kinkの意味論を一通り書き直しました 例示によるゆるふわ意味論では無理が出 てきた 何が正しいか分からない……
5.
5 Kinkの意味論 http://doc.kink-lang.org/kink/manual- ja/language/semantics.html
6.
言語の意味論の分類 表示的意味論 プログラムの項の集合を他のなにかの 集合にマッピングする意味論
操作的意味論 あるプログラムがどんな風に動くか、を 記述する意味論 公理的意味論 なんか難しくてよく分からん 6
7.
7 Kinkのプログラム意味論(にゅー) 二段階に分けてます 1. 表示的意味論 2. 操作的意味論
8.
表示的意味論の部分 8 :Var = 42 ¥env::Var.op_set(42) env;
varref Var; dup;emptylist; num 42; add; flip; deref op_set; call 正規化 仮想的なスタックマシン (KSM) の命令列に変換
9.
env 環境をpush varref Var popした値の変数参照を作って push dup
popした値をpush, push emptylist 新しい空のリストをpush num 42 数値をpush add 値をpop, リストをpopして末尾 に値を追加したリストをpush 操作的意味論の部分 9
10.
10 意味論書いてみて分かったこと Kinkのことがよく理解できた! 「ブロックから関数を生成」は、よりプ リミティブなふたつの命令に分解できる
処理系のバグが見つけられた! 最適化前と最適化後で、関数呼び出しの 処理順序が変わってしまっていた
11.
11 教訓 みんなもプログラム意味論を書こう!
Download now