はじめに
11/26日に松竹スクエアにて行われました
Kotlin Internal 勉強会に参加してきました。
https://connpass.com/event/40360/
開催、設備など用意してくださったkmizuさんありがとうございました!
当日の流れ
kmizuさんのKotlinのsmart castに関する発表
KotlinのSmart Castを探る僕の発表
Kotlinソースコード探訪RyotaMurohoshiさんの発表
KotlinとJavaとnullのライトな話 by RyotaMurohoshikmizuさんのKotlin字句解析をその場で読むやつ
https://github.com/JetBrains/kotlin/blob/1.0.5/compiler/frontend/src/org/jetbrains/kotlin/lexer/Kotlin.flex
これを読みながらその場で解説されていました。kmizuさんの開発しているJVM言語Klassicについての紹介
プログラミング言語Klassic
その後少人数で懇親会でしたが、懇親会も含め、全部学びがありました。
あと、発表中に質問があったり、補足が入ったりとかそういう雰囲気になったのが良かったなぁと思います。
あまり、参加者が多すぎるとそういうことはなかなかやりにくくなってしまう。
RyotaMurohoshiさんとkmizuさんがそういう流れをつくってくれたのがとても良かったです。
KotlinのSmart Castを探る
主にsmart castの動きを予測して実験するという内容でした。
実験のやり方が鋭いなぁというかさすがだなぁと個人的には思います。
僕はsmart castってなかなか不思議な動きをするんだけど、その場その場で書いてみてこういう挙動なのかぁ、、、ぐらいにしか思ってこなかったのです。
仮説を立てて、実験して結果検証という、バグの解析とかもこうあるべきだなぁというかなんか色々勉強になりました。
smart castのソースに関しては、多分結構込み入ったソースコード(原理がめちゃくちゃ高度というより、こんがらかったような)ものになっているんじゃないかと思っていたので、多分読み解くのは難しいんだろうなと思います。
ただ、kmizuさんならサラッと読んでくれるかという展開を期待していただけに残念w
Kotlinソースコード探訪
僕の発表です。
ただ単に、中身を全部眺めた結果をまとめた資料という感じです。
まぁ、これを読めば多少のとっつきやすさが出るのではないかということで、あんまり発表向きなドキュメントではないかもしれませんが、横断的に全部のモジュールの概要をまとめるようなことをしました。
自分としてはやってよかったかなぁというのはこのあたりです。
compilerにfrontend、backendがあるという話は適当に堀当てた感じかあるので割と一般的であると言われてちょっと驚いた
— やんく������ (@yy_yank) 2016年11月26日
KotlinとJavaとnullのライトな話
Platform Typeの名前だけなんとなく覚えていて、
あまりに存在感がなかったので忘れていたのですが、
しっかり振り返ることが出来て良かったです。
むろほしさんも、仮説と実験と調査みたいな流れが良く出来ているなぁという感じで、前日でつくったとは思えないクオリティですね。羨ましい。
色々発表を聞いた上で、JetBrainsのKotln Blogとかを振り返りつつ自分なりに整理した解釈としては
- 元々KotlinからJavaを呼び出す時に全てNullableな型として扱うほかなかった。
- 解決方法としてはKAnnotatorやExternal Annotationというもの(いわゆる@NotNull @Nullableを後からxmlなどで定義していく方法)だけだった
- KotlinのM9でPlatform Typeを導入することによって、Kotlinのコード実装時にnotnullでもnullableかを実装者が決定出来る
- Platform Type(String!とかBigDecimal!とか!型)はnotnullかnullableを実装者に委ねるもの
こんな感じです。
白でもなく黒でもないGLAYみたいなやつですね。
Kotlin.flexのコードリーディング
これも勉強になりました。
レキシカルアナライザーとして、Lexというものがあり、これのJava版がJFlexだそうです。
で、KotlinもJFlexを利用していると。
先程も掲載しましたが、実際に利用しているのが以下の部分。
https://github.com/JetBrains/kotlin/blob/1.0.5/compiler/frontend/src/org/jetbrains/kotlin/lexer/Kotlin.flex
これをその場で読んでいったわけですが、
字句解析の背景知識があるから流れが追っていけるんだろうなァと思いました。ただ、一緒に読んでいくと段々理解が深まっていき、TLとか眺めてても参加者が徐々に理解する人が増えてきていたのが面白かったです。
自分としてはなんかそういえば我流で字句解析チックなことをやっていたことと、Kotlin自体の機能は知っているので、今説明されている字句解析がどういうソースコードに対してのものか想像しながら話を聞けたので分かりやすかったです。
omochimetaruさんが適切にツッコミを入れていて、はっきりしていなかったところが明確になったりとかすげぇなぁと思いました。
発表はされてませんが各発表の随所でomochimetaruさんが質問とかされていて、なんとなくこの人がomochimetaruさんかな?と思っていたらアタリでした。
プログラミング言語Klassic
率直に言って趣味?で作っている自作言語なのに機能がすごい豊富だしスゴイ、、という感想です。
「発表しますが別に聴かなくても良いです」みたいなゆるい感じで発表されていましたが、よく作り込まれているなぁと思いました。
Starつけました。
懇親会
色々おもしろい話が飛び交った気がします。
自分の知らない情報がいっぱい出たのでまだあんまり整理付いてない感がありますが。
- Rustは初めて書く時にハゲそうになるかもしれない、と公式ドキュメントに書いてある
- LLVMは元々大学でChris Lattnerが考案したもの
- Chris LattnerはAppleにいる
- Swiftが出来た裏にはChris Lattnerがいる?
- Javaのlambdaの初期の提案機能の方が良かった
とかそんな話などがされました。
感想
久しぶりに勉強した感じのする勉強会で良かった#kotlin_internal
— やんく������ (@yy_yank) 2016年11月26日
0 件のコメント:
コメントを投稿