読者です 読者をやめる 読者になる 読者になる

謎言語使いの徒然

適当に気になった技術や言語を流すブログ。

BeyondJS

日記 勉強

JavaScript の改良に未来はあるのか?

パネルディスカッション。 Caffeine すげー気になる

ClosureCompiler

ClosureTools

サイボウスの天野さん

kintone

non programming でビジネスアプリが作れるそうな。 B2B サービス。 あらかじめ用意された処理をドラッグアンドドロップでロジックを組み、データに対するいくつかのグラフ出力等もできるそうな。

Closure Compiler Closure Library Closure Templates Linter + JSHint

ClosureLibrary

フルスタック クラスベース 型情報等

ClosureCompiler

JS 圧縮, 難読化 JSDoc アノテーションサポートによるチェック等 エラーレポート 高い圧縮率 コンパイル

ツール同士も連携する Closure Tool と一緒に使って最適化とか。

Dart2js

@ntaoo

Google 中心の開発。 DartVM 以外にも JavaScript でも動く言語。

独自なので、デフォルトだと JavaScriptAPI が使えない。

-動的型言語、でも型はつけられる。 -クラスベースOOP -レキシカルスコープとクロージャ -ソースコードVM(コンパイルフリー) -Mixin,Future(Promise), ベースの非同期処理, reflection, isolates, lazy evaluation -UnitTest

JavaSctipt/C# に煮たSyntax Objectは Smalltalk Erlang な非同期機構

IE8 以前はサポートしない。 モダンブラウザは大体動く。 android のデフォルトブラウザだと使えない場合がある。chrome 入れれ。 Firefox for android -> 不明

どっちかというと普通のアプリの方が向く言語か?

事例: Blossom というプロジェクトマネジメントツールが Dart  - Dartendo とかファミコンのエミュが書かれてる  - ゲーム  - ブラウザIDE

如何せん若いので、ライブラリが弱いかな?

GooglrGlass のハッカソンでも出たそうな。

ECMAScript6

鈴木祐介

JavaScript 最新が 5.1 今年中に 6 の仕様が fix される 今日リビジョン 17 出てきた。

新しいもの

  • 新しい構文
  • 新しいセマンティクス
  • 新しいライブラリ
  • 4 で放置された機能の一部リバイバル

でも「互換性は残す」

Class が、extends が入る。

super, this も入る! constructor も

Allow function

this が定義したスコープの参照を持つ。 意味不明な this に悩むことは無い。

Template String

Hello %{name}

とか

BlockScoped

ブロックスコープでしか使われない変数が使える。

Destructuring Assignment

イベントハンドラで、必要な引数だけ貰う

Generators/Iterable

yeld とか使えるようになる

Computed Property

プライベートアクセス等のアクセス制約

その他

Map/Set WeakMap/WeakSet TypedArray/DataView   - WebGL の spec が導入された StructType Proxy  - js object への internal method を handle する

現状

ES6 は少しづつ入り始めてる。 まだ一部なので動くとも限らないけれども、、、、。

Haxe

小泉さん

概要

読み方:hex ActionScript3/4 Like マルチターゲットなコンパイラ 若干最適化 静的型 方推論 代数形、パターンマッチ リフレクション マクロ ビルトインパッケージシステム OCaml で書かれてる

言語構造

ECMA4 クリソツ - enum/class/interface/関数型/匿名/Dynamic/abstract - static method - new キーワードでのコンストラクタ - プロパティ構文 - -> 使って関数形を使う - enum 型、個々のメンバーが型として機能する。しかもコンストラクタもできる   - switch - case でパターンマッチもできる - 匿名型:typedef:{x:Float}; とか var p:{c:Float}; しかもなぜか継承できる - Dynamic 型、Object 型みたいなもんか、キャストなしで好きに呼べる - Dynamic 型に object 突っ込めるけど、 - abstract : これ使って implicit conversion ができたりする abstract 型を用意すると、、、、 - 演算子オーバーロード - 型パラメータ(Generics):共変性と反変性は少しだけサポート - 値型には null 入らない。Null<> 使え

マクロ

AST 注入できる コンパイル時とか、実行時に突っ込める

  • リスト内包表記
  • Cast
  • using
  • JS 利用   - extern でターゲット言語で定義されてるものを使う   - js 生成コードに直接展開されるコードも書ける   - js パッケージを呼べる

NEKO

謎のバーチャルマシン。

JSX

奥さん

altJS ってなんで出たの

ブラウザで動くのは JavaScript だけー でも他のやつで書きたいよねー

  • caffee
  • TypeScript
  • JSX
  • JavaWebToolkit, Haxe, 

JSX

DeNA で書いてる altJS

なんで作った?

専用内製ライブラリが多い 数万行とかいうコードが多いし、、、 頻繁に変更が入る。

こんなときに - JavaScript はテストが難しい - 品質担保しづらい(動かさないとわからん) - ロード時間と使用メモリが多い

JSX では - 静的型 - 最適化コンパイル - 強力な minify

一方 - JavaScript 既存のライブラリと相性が悪い(動的型がなー)

今後: NodeJS 対応 バグフィックス async 属性