1年以上前の渋谷JVMの参加メモが下書きのまま放置されていたので、もったいないので晒しておきます。
渋谷JVMのメモです。結構長かったし、楽しい雰囲気なのであんまりメも取らなかったです。いつもどおり体裁すら整えてないけど、メモ書きとして。
I love scala
@takezoen さん
2006年頃Haskellが流行った。 Haskellで書かれたシューティングゲーム:monadius
Monadを必要とはせずに入れる関数型言語。手続き型でも書ける。 このバランス感覚が、Scalaの一番の魅力。 型安全にマクロが書ける。
Scala.jsも結構本気で開発されている。 オダースキーが新コンパイラを開発中。 TASTY:JavaのバイトコードとJSのコードの両方を出力できる。
Clojure
@kawasima さん
2大カリスマ リッチ・ヒッキーとノーレン・デービッド。
Concurency core.async CSP
thread-based coroutine-based core.async はClojureScriptでも。Clojureと全く同じように動く。 ただ、javascriptはシングルスレッドモデルなので、goのみ対応。
もともとポール・グレアムに騙されてAnsiCommonLispを読み始めて挫折した過去がある。 作りたいアプリがあって、それをつくろうとすることが多い。 まず勉強から始める、というパターンではない。 Clojureを始めた時もそうだった。
JGGUG/NTTソフトウェア株式会社 Grails推進室
上原潤二 @uehaj さん
Groovy1.8まではコンパイル時型チェック。 Groovy2.0からは静的型チェック・静的コンパイル。 Javaに準じた静的なコードも吐ける。
2.3 Traitの導入。 動的Trait注入:Java8のデフォルトメソッドとの違い。 Grails3で積極的に使われている。 Hamlっぽいテンプレートエンジンが導入。
2.4 Android対応。
Grails3は SpringBoot ベースになった!起動がすごく早くなった。
Pivotal社が2015・03にGroovy開発社の直接雇用を降りて、 よりOSS寄りになった。
様々なDSLに Spock: 単体テスト用DSL Geb: selenium用DSL Graidle: ビルド用DSL Grails: Webアプリ開発用のDSL
盛り返すJava
オラクル 淡々とマネージメント。Javaリリースに株価が依存していたSunとの違い。 健全にマネージメントされている。
ラムダは匿名クラスのシンタックスシュガー? 違う。 thisの扱いが違う。 匿名クラスだと this は匿名クラスを指す。 ラムダだと this はラムダの外のクラスを指す。
なぜ匿名クラスじゃないのか。 Streamなどを使うとラムダをたくさん使いまくるので、クラスがたくさんできてしまう。 -> 起動時に時間がかかりすぎてしまう懸念。。
Java7で導入されたInvokeDynamic
- もともとは動的型言語のための機能。
- 実行時にメソッドの型を決めつつJavaVMの最適化もかけやすくなる。
Project Valhala
- Specilization
Box
Genericsの型指定に基本型を指定可能にする。
Array
any T でできないこと。
- null との比較
any
問題の1つとしてクラスをいつ作るか。 ClassDynamic * 動的な クラスリンク。 * invokeDynamic のクラス版。
Value Type
- 参照ではない。
- メモリに直接配置される。
- 効率がいい。
パネルディスカッション
maven の安定感たるや凄まじい。 gemでハマる若者。npmでハマる若者。cabal(Haskellのパッケージ管理ソフト)でハマる若者。
子供は10歳くらいから抽象的な思考ができるようになる。 それぐらいまではプログラミングをやるのはきつい?