noop の概要を読む
http://code.google.com/p/noop/
の wiki を読んで、言語仕様を確認してみる。
というかそれ以外に選択肢が無い。
名前順に上から見ていく。以下は気になった箇所だけメモ。訳しなくても楽勝そうなのはそのまま転記。()内は僕のコメント。
マズは概要を読む
http://code.google.com/p/noop/wiki/Features
Fundamentals
- プリミティブ型はなし,すべてがオブジェクト.
- 強い型付け
- 余計な書式は増やさない: セミコロンと()は要る。
- プロパティを持つ(Javaでいうgetter, setter)
- static の設置を許さん
- 実行可能、かつコンパイル可能なドキュメント構文
- クラスのメタデータ保持
- 常にテストとクラスのペアをつなげられる
Readability
- 変数やメソッドコールに、簡易書式や糖衣構文を使わない。
Good stdlib
- 他言語からのいいものを継承する。
- Date/Time の API に JodaTime を使う。
- 並列処理のために util.concurrent を使う。
Injection
- GuiceかPicoContainerを根っこで使う。
(いかんな、この辺のライブラリ触ったことねーぞ。)
Immutability
- final (継承不可能)がデフォ,参照が変わるような変数にゃ mutable キーワードを使え
Strong inferred typing
- null らめぇ, 型はデフォルトでは null を許容しない。
- だから Option
を使って nullable な T を作る。
Exceptions
- Only unchecked exceptions
Class parameters and properties
class Foo(Bar bar) {} defines the default constructor, has a read-only property bar, like Scala.
Testing
- test キーワードは、テストスイートと内包されたテストをコンパクトに記述できる構文。
- テストブロックを製品コードに突っ込める,。
- tests はクラスに対し "friend" 関係で接続できる, ホワイトボックステストやプライベートメソッドのテストのためだ
Literals
- String is a type literal
- "Hello" is a string literal
- """line1\nline2""" is a multi-line string literal
- /.*/ is a pattern literal
- { "a": "b", "c": "d" } is a hash literal (should evaluate to most specific type possible)
- [1,2] is an array literal
- `http://google.com` is a URI literal (like Fan, is it useful?)
うーん文法とか無いのね(汗