■
RubyKaigi 2日目: Comming soon...
Future
未来について話します
- Ruby conf 2001
- Virtual Machine -> 1.9 2007
Yet anotherとつけたものは生き残る。Rubyもご多分にもれず
- Ruby conf 2003
- Local variable scope
- Multiple assignment -> 1.9 2007
- Method visibility
- Keyword argument -> 2.0 2013
- Method combination -> 2.0 2013
- Selector namespace -> 2.0 2013
- as refinement
- Optional static type
- Ruby conf 2004
未来についての話はなし
笹田さんがYARVの話をした
- Ruby conf 2005
- Stabby lambda -> 1.9 2007
- Real multi-value
- Traits
- Ruby conf 2006
bikeshed argument encouraged
自転車置場の屋根の色をどうするかということはみんな乗ってくるけど、原子力班伝書どうするのみたいな大きな話だとみんな乗ってこないという話。
そんな感じで特になし
- Ruby conf 2009
- Complex literal -> 2.1 2013
- Rational -> 2.1 2013
- True division
- Bitmap making -> 2.0 2013
- Symbol GC -> 2.2 2014
- Ruby conf 2010
- Mix
- Module#prepend -> 2.0 2013
- Refinement -> 2.0 2013
- mruby -> 2012
7/22入った
わたしたちはサメのように泳ぎ続けなければならない
そろそろ燃料を投入しようじゃないか
Ruby 3.0
10年くらいのスパンになるかもしれないけど
ここ最近出てくる言語は静的型付けの言語ばかり
Scala, TypeScript,Go
Why not Ruby?
Type Annotation
Feture #9999 by Davide D'Agostino
def connect(r -> Stream, c -> Client) -> Fiber
...
end
Function Annotations
Python REP:3107
def connect(r: Stream, c: Client) : Fiber
...
end
ruby の場合キーワード引数になっちゃうから:はつかわないけどだいたいいっしょ。
ただし、ドキュメント的な意味、言語としてはチェックしない
why static?
- Performance
- Compile-time check
- Documentation
JIT
誰もRubyがはやくなることには文句はない
でも、それによるトレードオフとしてほんとにstatic typingが必要なのか?
LuaJITがあるのでdynamic typing はJITの妨げにならない。
スピードのためにstatic typingは必要ない。
Compile Time check
まあこれは確かにあるといいよね
- Static analysis
- Refactoring
Documentation
コメントのなかにぼんやり書いてあったり、変数名から推測したりするけど型があるほうがより明確。ソースとコメントの乖離もない。
why not static typing?
Static typingはRubyと相性がよくない?
- Duck typing
- Optional
- DRY
Duck typing
アヒルのように歩き、アヒルのようになくならそれはアヒルとみてよい
Dave Thomas
型情報がある世界から型のない世界にもっていくと型情報が失われてしまい、二度と戻ってこない
Optional
TypeScriptの場合、全体的には静的な型だけど動的な型も使える。
どこかの言語みたいにv5とv6とは違う言語とかそういうことはしたくない
Dry原則
Don't Repeat Yourself
(これもDave Thomas?)
Avoid duplication
プログラミングはコンピューターに何をさせたいかを書くこと、 型情報としてあれ書いてこれ書いてって指示することはもうさっき書いたじゃんってなる。型書きたくない。
soft typing
型を明示的に書かなくても推論でなんとかできるところはあるのではないか
best-effort
お行儀のいいプログラムを書いているとだいたいうまくいくくらいな感じでよい
型というものをメソッドの集合と捉えればいい
Subset
サブセットというと、機能縮小版みたいに思えるけど、対象となるクラスの範囲がせまいといういみ
IDEの補完ができたりしたらよい
日経Linux 2014年9月号/10月号に記事書きました
10月号/11月号だったかも…
サブセットの範囲内であれば、いいことがあるけど、それを外れたらSuper-setにフォールバックすればいい。
今でもRuby良い言語ですよねw
コミュニティとして死なないように次のわくわくする未来に