Skip to content

Instantly share code, notes, and snippets.

@mizchi
Created September 15, 2012 07:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mizchi/3726883 to your computer and use it in GitHub Desktop.
Save mizchi/3726883 to your computer and use it in GitHub Desktop.

JavaScriptを書きたくない話

自己紹介

mizchi

主に python/node

某A社 / 某大学5年

基本LLerなんでネイティブわかりません><

本題

なんかHTML5とか流行ってる

実際に追加されたプロパティ

x あたらしい HTML の タグ

○ JavaScript API

JSで超絶面倒くさいことさせられる

大規模になる

JSで、大規模になる

具体的には、ゲームとか、ゲームとか、業務アプリとか、ゲームとか。

肝心のJSはというと

  • 一般的に言われるほど腐ってはないけど、糞
  • JS GoodParts 読め カバンに入れて100回読め
  • JS書きたくねぇ…

具体的には

  • 超ゆるふわ型 + 比較演算子 1 == "1"
  • 予期せぬundefined => 突然の死
  • プロトタイプベースは人類には辛い!!!!!
  • (知ってりゃ使えるけど全員が黒魔術覚えるの?????)

もうJSにコンパイルしようぜ

生JSは人間の尊厳を損ねる List of languages that compile to JS · jashkenas/coffee-script Wiki https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS

「顧客が本当に欲しかったもの」

  • 書き味がよくて
  • 堅牢で
  • テストコードを書きやすく
  • JS資産(jQueryとか)は活用できて
  • 大規模設計に耐えうるもの

自分の需要

  • 一人でNode/WebSocketでMMO作ってる
  • サーバーもクライアントも一つの言語から生成したい
  • (サーバー/Express/Socket.IO 、クライアント/enchant.js)
  • 仕事で大規模JS(CoffeeScript20000行)書いてるんで、よりまともなやつを提案したい

CoffeeScript

JS知ってれば学習コストは低い

python風のインデントブロックにrubyっぽいフレーバー足した感じ

ダメな点

良くも悪くもJSの悪い点もひきずってる。

コードと実際のエラー行が異なる => source mapで解決するらしい

LiveScript

CoffeeScriptを関数型っぽく拡張した言語

CoffeeScriptに刺激を感じなくなったら手を出すといい

ダメ:

CoffeeScriptの欠点は何も解決していない

Dart

そんなものもあったね(ニッコリ

HaXe

Ocamlで書かれたActionScript風の言語。型はオプショナル(自動類推)。

内部ASTからいろんな言語に出力できる。

Dynamic型というゆるふわ型を使えばJSオブジェクトを自由に取り回せる。

ダメな点

わかってない人と書くとDynamic型だらけに

複数言語対応を謳っている割には一部言語で異常に遅い(C++)

Coffeeや他LLに慣れていると冗長。functionとか末尾セミコロンとか

JSX

Java Inspired感強し

結構触ったけど、まだHaXeでいいんじゃないかな感あった。今後に期待。

JSを使うための言語なのに生JSと相性悪

JS資産を使えないのがちょっとダメぽ

photoshopのアレと拡張子が被っているのは糞

Emscripten

LLVM中間コードからJSを生成する

人間が読めたもんではないが早い

初代Doomとか動いたらしいよ

Haskell風のアレら

Roy

npm install roy 引数が複数取れなかったり微妙 モナドの記述が超微妙(作者以外わかってんのかコレ)

Fay

cabal install fay haskellからJS生成 拡張子.hsって… まんまHaskellであることを目指してるっぽい

Elm

cabal install elm パーサは一番まともにみえる 謎のおせっかいパーツが大量にあって混乱する

アレら

ClojureScript

なんかそのままClojureだった。Clojureいいよね

js_of_ocaml

ocamlから、らしいけど

お恥ずかしながらコンパイルまで辿りつけませんでした

個人的な結論

とりあえずは coffee 使え

限界感じたら

 => もっと自由を => livescript

=> 型ないと不安 => HaXe

=> I am a lisper => clojurescript

これからの展望

次世代JSへのたたき台にするために皆もっとJSに出力される言語つくっていいよ!!! とCoffeeScriptの作者 Jeremy Ashkenas氏がおっしゃっておられます!!!

おわり

参考 livescriptで書いてみたmmo https://github.com/mizchi/node-mmo HaXeでいろいろ試した痕跡 https://github.com/mizchi/haxe-try

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment