CoffeeScript 2リリース 53
ストーリー by hylom
生存確認 部門より
生存確認 部門より
insiderman曰く、
JavaScriptを拡張したプログラミング言語であるCoffeeScript 2がリリースされた。
CoffeeScriptは「JavaScriptにコンパイルして使える言語」としては比較的古参であり、数年前にはCoffeeScriptを使っているnpmモジュールもそこそこみられたが、最近ではMicrosoftのTypeScriptに推され気味で存在感が薄い感じになっている。そもそもECMAScriptの仕様強化でこうしたトランスパイル系言語は微妙なポジションになりつつある気もするが、なにげにJSXサポートなんかも入っていてまだまだやる気はありそうだ。
今は babel らしいですよ (スコア:3)
ちょうどこないだ調べたところだったので。
http://qiita.com/akameco/items/3f3e551cdc4eff1a44f9 [qiita.com]
・軽く使うなら Babel 一択
・強い型つけによる安全性とIDEのインテリジェンス向上(リファクタ等)を狙うなら TypeScript
というのが2017年9月、今の今のトレンドだそうですよ。
Re:今は babel らしいですよ (スコア:1)
Babel は言語じゃないけどそれはさておいて、
なぜそれが人気かというと将来的に資産が無駄にならないからだと思う。
つまりいま ES6(ECMAScript6) で書いてもそのままじゃ動かないブラウザがあるから、
旧世代の ES5 にトランスパイルしてくれるのが Babel なわけだ。
いずれ全てのブラウザが ES6 ネイティブに対応したとき、晴れて Babel の役割が終わる。
そのとき CoffeeScript や TypeScript は ES6 にトランスパイルする必要がある。
Re: (スコア:0)
ES6にする機能を取り込んだのが今回のCofeeScript2、って事のようで。
2年前にやってるべきだった感強いですが。
Re: (スコア:0)
Babelがもろに「6to5」とかいう名前だった時代は本当にそれだけの役割だったかもしれませんが、
今のBabelはそれだけの存在ではないので、完全に要らなくなることは当面はない気が。
まあでもNode.jsとかのアプリを書くときはモジュール周りと object-rest-spread 以外のプラグインはほぼ無しで困らないですね。
Re: (スコア:0)
babel はes2017 es2018と追い続けるので、永遠になくならないとオモフ。
Re: (スコア:0)
>全てのブラウザが ES6 ネイティブに対応
それはないな。だってIE11がまだ使えるからね。
Re: (スコア:0)
そのページで一番驚くべきは、CoffeeScriptのダウンロード数ではないだろうか。
TypeScriptとタメを張ってるじゃないか。
グローバルでは元気なのか?
Re: (スコア:0)
TypeScriptが結構頑張っているか。
なんか自分の周りだとMicrosoft発というだけで使うに値しないと断じる方々ばかりで残念な気持ちになることが多いのです。
プロジェクトの規模や性質で向き不向きがあると考える人が少なくて残念。
Re: (スコア:0)
どこでつかうかによるかと。
ElectronアプリとかChrome拡張、Nodeでサーバーサイドならもう直接ES6でもいいじゃんて思う。
入門系だとサーバーサイド+ブラウザでも動くのでBabelとかWebpackとかbrowserifyが出て来たり。
そこはjavascriptのモジュール化をどうしたいかによる。
Babelに関して言えば、TypeScriptをBabel使ってトランスパイルこともあるからなんともなぁ。
勉強だけで軽く使うならVSCodeもあるしTypeScriptの方が楽な気もするけど。
プリプロは本来邪悪 (スコア:1)
JSやCSSでこの手のプリプロセッサ作る|使うのは処理系に容易に手を入れられない事情があるから仕方が無しにやってる訳で、
決して最善の策ではないと若い人たちにちゃんと伝えていきたい。
うちの会社ではrails3系でcoffeescriptが入ったとき素で書くより便利でしょ?で済ませてしまってそのあたりをちゃんと言わなかったら、
後にnode使うようになってビルドプロセス含め更にaltjs周りが煩雑になってもこれが当たり前と思われてしまった。
Re:プリプロは本来邪悪 (スコア:1)
いや、むしろ若い人たちに学ぶべきだよ貴方は
Re: (スコア:0)
前処理を煩雑だと思うなんて、今の若者はすっかりインタプリタに溺れちまってるなあ。
Re: (スコア:0)
C/C++でもコンパイラの前に入るプリプロセッサもそれでアレコレするのは邪悪と呼ばれる傾向にあるような
まぁそんなんよりもC++のテンプレート周りでメタプログラミングする黒魔術のほうが段違いにヤバイんだが
まぁテンプレートの展開もコンパイルの中心部よりは若干前に入ってくるし邪悪になるのも仕方がない(大嘘)
Re:プリプロは本来邪悪 (スコア:2)
みんなRubyとかPythonとかよく使えるよね
古い人間だからN88BAISICアセンブラC言語なんだけど
C++,JAVA、javascript、PHPなら読めるし書ける
必要に迫られてPerlも描いたけど後で自分で読めない
プログラミング言語全部C言語っぽい文法にしたら世界中のIT幸せになれるだろ
emacsの色分けも綺麗だぞ!
Re:プリプロは本来邪悪 (スコア:3)
Cがイケるなら、python でTypeHintsを使うと、割と読みやすくなると思います。コメント扱いなので見た目だけで実行時には何もしませんが、mypyとかのツールを使えば事前チェックもできるようになるので、ミスも減らせるかと。
Ruby や python は、充実したライブラリ群が容易に使えるのが肝だと思います。その辺、Cは極めて貧弱(C++は11/14/17と充実してきたけどまだまだ)なので、作業効率を考えるとCではできるだけやりたくないなぁ、と思ってます。Cの代替としてrustもオススメ。Core部分だけ使えばKBytes単位のプログラムサイズになります。Dはなんかマイナー確定状態ですが、C++でウンザリしたら代替になりえます。
ほえほえ
Re:プリプロは本来邪悪 (スコア:1)
俺も古い人間だがTurbo Pascalを常用してたので、begin end には違和感がない。
Re: (スコア:0)
俺も古い人間だがawkを常用してたので、begin endには違和感がない。
# なんか違う
# そしてほんとはむしろ常用してたのはperl
Re: (スコア:0)
>古い人間だからN88BAISICアセンブラC言語なんだけど
機械語、FORTRAN、LISP、COBOLあたりが並ばないとは、実は新しい人ですね!
Re:プリプロは本来邪悪 (スコア:1)
> 機械語、FORTRAN、LISP、COBOLあたりが並ばないと
LISPではなく、PL/I でお願いします [ipa.go.jp]。
#機械語がCAP-Xだったら古い人、CASLだったら新しい人。
さすがにALGOLは知りません…
Re:プリプロは本来邪悪 (スコア:1)
わたしの大学時代、学生部長から学長になった先生は
PL/Iは使える、ALGOLは使ったことないが似たようなものだろ
と講義中の雑談であっさり片付けてました。FORTRANとCOBOLも使えるとの由。
LISPは当時の経済学分野ではまだまだ及びでなかったので名前が挙がっていない。
Re: (スコア:0)
機械語 c9
アセンブラ ret
Re: (スコア:0)
あなたと同じような経験をしてきたけれどPythonが一番簡単だと思うよ。
> プログラミング言語全部C言語っぽい文法にしたら世界中のIT幸せになれるだろ
これは流石に時代錯誤。
Re: (スコア:0)
関数型と比べたら Smalltalk だって、似たような構文で読めるんだし。
Re: (スコア:0)
ほかに非構造的な言語というと逐次処理的な古いBASICやステートマシン的なSNOBOLなどが有名どころ
Re: (スコア:0)
あんまりプリプロセッサという意識で使ってる人はいないと思うが。
Re:プリプロは本来邪悪 (スコア:1)
TypeScriptはコンパイラっぽい気がしているが
CoffeeScriptはプリプロセッサな印象がある
Re: (スコア:0)
コンパイラでもぷりぷせったでもなくてトランスパイらだと思う
Re: (スコア:0)
遙か昔はC++でさえC言語にトランスレートしてからコンパイルしていたものです
Re: (スコア:0)
自分的には実行時エラーのエラー発生場所の情報が変換前ソース基準になってくれるならコンパイラって感じですね。
Re: (スコア:0)
逆に、実行時エラーの発生位置が「特別な工夫をしなくても」ソースの行番号で求まる実行環境こそインタプリタであり、
「特別な工夫をしなくても」ソースとアウトプットのマッピング情報を出力出来る変換系こそプリプロセッサ的だと思う。
C/C++とかはソースとのマッピング情報を構文木の段階でも保持した上でデバッグ用メタ情報としてわざわざ別途出力し、
その上デバッガ上で実行時エラーの発生位置をトラップしてマッピング情報を解析した場合にしか行番号出ないのが元々だし。
そのくせはC/C++のプリプロセッサ部分は#LINEディレクティブを埋め込む位で楽勝に変換前行番号を埋め込めている。
altJSでも同じで単純な変換であればあるほど行番号のマッピング情報を作りやすいが、
がっつり構文解析して出力し直してると解析済みの状態から最適化その他の過程までずっと行番号保持するとかいう処理が必要になる。
Re: (スコア:0)
機械語を吐くのしかコンパイラと認めないってやつでしょ
彼らにとってはJavaやC#もインタプリタ言語
Re: (スコア:0)
機械語だけ派とVMまでOK派はあるべ。
まぁ高級言語を吐こうが機械語吐こうがトランスパイラ(トランスコンパイラ)も一応コンパイラの区分ではあるけどな。
ただ、字句解析から構文解析までして構文木なりなんなりから出力を吐いてないとコンパイラにはならないと思う。
CoffeeScriptはどの程度までやってるんだろう?
Re: (スコア:0)
>プリプロは本来邪悪
Pro*Cのことですね。
Re: (スコア:0)
(ぼそ)Ratfor…
まだあったのか (スコア:0)
っていうそんな印象
Re: (スコア:0)
もう見たくない、そんな印象
あえて言おう (スコア:0)
これは0xcafeな言語の呪いであると!
# べっ別に「○racle憎けりゃJ○vaまで憎い」だなんて思ってないんだからねっ!!!
Re: (スコア:0)
ボラクルになる前からJavaニクい
Rubyらいく (スコア:0)
昔、Rubyライクにかけるというのを見かけて、
まーたそっち界隈で騒いでるのかと
スルーした記憶が…
Re: (スコア:0)
インデントによるブロック化、なんでpythonライクでは...
Re: (スコア:0)
使ったことない人の意見だな。ちょっとでも書けば Coffee は JavaScript を Ruby みたいに書きたい人のための言語だということはすぐわかると思う。Underscore も合わせて、 Rails 脳が作った JavaScript という感じ。 Ruby の dogmatic な感じがして僕は馴染めなかったし、Coffee で書かれた script は tech debt 化が早かった。
Re:Rubyらいく (スコア:2)
Rails の既存コードの保守で、CoffeeScript を少し触ったことあるけど、つい if ~ end と書いてしまって、「Rails に CoffeeScript 導入したやつはあほだ」としか思えなかった。
Rubyがそもそも好きじゃないから、「JavaScript を Ruby みたいに書きたい人のための言語」といわれてもぴんとこない。
svn-init() {
svnadmin create .svnrepo
svn checkout file://$PWD/.svnrepo .
}
Re: (スコア:0)
Ruby というより Rails のためという印象だったな。
Re: (スコア:0)
Rails知らないなら黙ってなよ…
Re: (スコア:0)
それ、自分の日本語能力を反省した方がいいよ。いや、真面目に。
推され気味 (スコア:0)
ステマ?
Re: (スコア:0)
言いたい事があるならはっきり言ったらどうなの?
Re: (スコア:0)
> はっきり言ったらどうなの?
M$は悪である。
したがってTSも悪である。
Re: (スコア:0)
CoffieScript「えっと、友達のTypeScriptが勝手にミスコンに申し込んじゃってぇ」