パスワードを忘れた? アカウント作成
13412756 story
プログラミング

CoffeeScript 2リリース 53

ストーリー by hylom
生存確認 部門より
insiderman曰く、

JavaScriptを拡張したプログラミング言語であるCoffeeScript 2がリリースされた。

CoffeeScriptは「JavaScriptにコンパイルして使える言語」としては比較的古参であり、数年前にはCoffeeScriptを使っているnpmモジュールもそこそこみられたが、最近ではMicrosoftのTypeScriptに推され気味で存在感が薄い感じになっている。そもそもECMAScriptの仕様強化でこうしたトランスパイル系言語は微妙なポジションになりつつある気もするが、なにげにJSXサポートなんかも入っていてまだまだやる気はありそうだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by ikotom (20155) on 2017年09月20日 17時53分 (#3282734)

    ちょうどこないだ調べたところだったので。

    http://qiita.com/akameco/items/3f3e551cdc4eff1a44f9 [qiita.com]
    ・軽く使うなら Babel 一択
    ・強い型つけによる安全性とIDEのインテリジェンス向上(リファクタ等)を狙うなら TypeScript

    というのが2017年9月、今の今のトレンドだそうですよ。

    • by Anonymous Coward on 2017年09月20日 18時39分 (#3282762)

      Babel は言語じゃないけどそれはさておいて、
      なぜそれが人気かというと将来的に資産が無駄にならないからだと思う。

      つまりいま ES6(ECMAScript6) で書いてもそのままじゃ動かないブラウザがあるから、
      旧世代の ES5 にトランスパイルしてくれるのが Babel なわけだ。

      いずれ全てのブラウザが ES6 ネイティブに対応したとき、晴れて Babel の役割が終わる。
      そのとき CoffeeScript や TypeScript は ES6 にトランスパイルする必要がある。

      親コメント
      • by Anonymous Coward

        ES6にする機能を取り込んだのが今回のCofeeScript2、って事のようで。
        2年前にやってるべきだった感強いですが。

      • by Anonymous Coward

        Babelがもろに「6to5」とかいう名前だった時代は本当にそれだけの役割だったかもしれませんが、
        今のBabelはそれだけの存在ではないので、完全に要らなくなることは当面はない気が。

        まあでもNode.jsとかのアプリを書くときはモジュール周りと object-rest-spread 以外のプラグインはほぼ無しで困らないですね。

      • by Anonymous Coward

        babel はes2017 es2018と追い続けるので、永遠になくならないとオモフ。

      • by Anonymous Coward

        >全てのブラウザが ES6 ネイティブに対応
        それはないな。だってIE11がまだ使えるからね。

    • by Anonymous Coward

      そのページで一番驚くべきは、CoffeeScriptのダウンロード数ではないだろうか。
      TypeScriptとタメを張ってるじゃないか。
      グローバルでは元気なのか?

    • by Anonymous Coward

      TypeScriptが結構頑張っているか。
      なんか自分の周りだとMicrosoft発というだけで使うに値しないと断じる方々ばかりで残念な気持ちになることが多いのです。
      プロジェクトの規模や性質で向き不向きがあると考える人が少なくて残念。

    • by Anonymous Coward

      どこでつかうかによるかと。
      ElectronアプリとかChrome拡張、Nodeでサーバーサイドならもう直接ES6でもいいじゃんて思う。

      入門系だとサーバーサイド+ブラウザでも動くのでBabelとかWebpackとかbrowserifyが出て来たり。
      そこはjavascriptのモジュール化をどうしたいかによる。

      Babelに関して言えば、TypeScriptをBabel使ってトランスパイルこともあるからなんともなぁ。

      勉強だけで軽く使うならVSCodeもあるしTypeScriptの方が楽な気もするけど。

  • by Anonymous Coward on 2017年09月20日 21時37分 (#3282900)

    JSやCSSでこの手のプリプロセッサ作る|使うのは処理系に容易に手を入れられない事情があるから仕方が無しにやってる訳で、
    決して最善の策ではないと若い人たちにちゃんと伝えていきたい。
    うちの会社ではrails3系でcoffeescriptが入ったとき素で書くより便利でしょ?で済ませてしまってそのあたりをちゃんと言わなかったら、
    後にnode使うようになってビルドプロセス含め更にaltjs周りが煩雑になってもこれが当たり前と思われてしまった。

    • by Anonymous Coward on 2017年09月20日 21時57分 (#3282913)

      いや、むしろ若い人たちに学ぶべきだよ貴方は

      親コメント
    • by Anonymous Coward

      前処理を煩雑だと思うなんて、今の若者はすっかりインタプリタに溺れちまってるなあ。

      • by Anonymous Coward

        C/C++でもコンパイラの前に入るプリプロセッサもそれでアレコレするのは邪悪と呼ばれる傾向にあるような
        まぁそんなんよりもC++のテンプレート周りでメタプログラミングする黒魔術のほうが段違いにヤバイんだが
        まぁテンプレートの展開もコンパイルの中心部よりは若干前に入ってくるし邪悪になるのも仕方がない(大嘘)

        • みんなRubyとかPythonとかよく使えるよね
          古い人間だからN88BAISICアセンブラC言語なんだけど
          C++,JAVA、javascript、PHPなら読めるし書ける
          必要に迫られてPerlも描いたけど後で自分で読めない
          プログラミング言語全部C言語っぽい文法にしたら世界中のIT幸せになれるだろ
          emacsの色分けも綺麗だぞ!

          親コメント
          • Cがイケるなら、python でTypeHintsを使うと、割と読みやすくなると思います。コメント扱いなので見た目だけで実行時には何もしませんが、mypyとかのツールを使えば事前チェックもできるようになるので、ミスも減らせるかと。

            Ruby や python は、充実したライブラリ群が容易に使えるのが肝だと思います。その辺、Cは極めて貧弱(C++は11/14/17と充実してきたけどまだまだ)なので、作業効率を考えるとCではできるだけやりたくないなぁ、と思ってます。Cの代替としてrustもオススメ。Core部分だけ使えばKBytes単位のプログラムサイズになります。Dはなんかマイナー確定状態ですが、C++でウンザリしたら代替になりえます。

            --
            ほえほえ
            親コメント
          • by Anonymous Coward on 2017年09月21日 9時00分 (#3283065)

            俺も古い人間だがTurbo Pascalを常用してたので、begin end には違和感がない。

            親コメント
            • by Anonymous Coward

              俺も古い人間だがawkを常用してたので、begin endには違和感がない。

              # なんか違う
              # そしてほんとはむしろ常用してたのはperl

          • by Anonymous Coward

            >古い人間だからN88BAISICアセンブラC言語なんだけど
            機械語、FORTRAN、LISP、COBOLあたりが並ばないとは、実は新しい人ですね!

          • by Anonymous Coward

            あなたと同じような経験をしてきたけれどPythonが一番簡単だと思うよ。

            > プログラミング言語全部C言語っぽい文法にしたら世界中のIT幸せになれるだろ

            これは流石に時代錯誤。

          • by Anonymous Coward
            ML、Haskellあたりの関数型とか Prolog みたいなのと違って Ruby も Python も Cや Java と同じような構造でプログラム書くんだから普通に読めるだろう。
            関数型と比べたら Smalltalk だって、似たような構文で読めるんだし。
            • by Anonymous Coward
              prologのプログラムはネストした構造がメタ述語以外にないので、極めて特異といえましょう
              ほかに非構造的な言語というと逐次処理的な古いBASICやステートマシン的なSNOBOLなどが有名どころ
    • by Anonymous Coward
      今はプリプロセッサというよりは、コンパイラの位置付けじゃないのかね。
      あんまりプリプロセッサという意識で使ってる人はいないと思うが。
      • by igax (36801) on 2017年09月21日 11時58分 (#3283172)
        altjsの厳密な定義って何なんだろって感じはあるが
        TypeScriptはコンパイラっぽい気がしているが
        CoffeeScriptはプリプロセッサな印象がある
        親コメント
        • by Anonymous Coward

          コンパイラでもぷりぷせったでもなくてトランスパイらだと思う

          • by Anonymous Coward

            遙か昔はC++でさえC言語にトランスレートしてからコンパイルしていたものです

        • by Anonymous Coward

          自分的には実行時エラーのエラー発生場所の情報が変換前ソース基準になってくれるならコンパイラって感じですね。

          • by Anonymous Coward

            逆に、実行時エラーの発生位置が「特別な工夫をしなくても」ソースの行番号で求まる実行環境こそインタプリタであり、
            「特別な工夫をしなくても」ソースとアウトプットのマッピング情報を出力出来る変換系こそプリプロセッサ的だと思う。

            C/C++とかはソースとのマッピング情報を構文木の段階でも保持した上でデバッグ用メタ情報としてわざわざ別途出力し、
            その上デバッガ上で実行時エラーの発生位置をトラップしてマッピング情報を解析した場合にしか行番号出ないのが元々だし。
            そのくせはC/C++のプリプロセッサ部分は#LINEディレクティブを埋め込む位で楽勝に変換前行番号を埋め込めている。

            altJSでも同じで単純な変換であればあるほど行番号のマッピング情報を作りやすいが、
            がっつり構文解析して出力し直してると解析済みの状態から最適化その他の過程までずっと行番号保持するとかいう処理が必要になる。

      • by Anonymous Coward

        機械語を吐くのしかコンパイラと認めないってやつでしょ
        彼らにとってはJavaやC#もインタプリタ言語

        • by Anonymous Coward

          機械語だけ派とVMまでOK派はあるべ。
          まぁ高級言語を吐こうが機械語吐こうがトランスパイラ(トランスコンパイラ)も一応コンパイラの区分ではあるけどな。

          ただ、字句解析から構文解析までして構文木なりなんなりから出力を吐いてないとコンパイラにはならないと思う。
          CoffeeScriptはどの程度までやってるんだろう?

    • by Anonymous Coward

      >プリプロは本来邪悪
      Pro*Cのことですね。

    • by Anonymous Coward

      (ぼそ)Ratfor…

  • by Anonymous Coward on 2017年09月20日 17時19分 (#3282712)

    っていうそんな印象

    • by Anonymous Coward

      もう見たくない、そんな印象

  • by Anonymous Coward on 2017年09月20日 17時20分 (#3282713)

    これは0xcafeな言語の呪いであると!

    # べっ別に「○racle憎けりゃJ○vaまで憎い」だなんて思ってないんだからねっ!!!

    • by Anonymous Coward

      ボラクルになる前からJavaニクい

  • by Anonymous Coward on 2017年09月20日 18時33分 (#3282757)

    昔、Rubyライクにかけるというのを見かけて、
    まーたそっち界隈で騒いでるのかと
    スルーした記憶が…

    • by Anonymous Coward

      インデントによるブロック化、なんでpythonライクでは...

      • by Anonymous Coward

        使ったことない人の意見だな。ちょっとでも書けば Coffee は JavaScript を Ruby みたいに書きたい人のための言語だということはすぐわかると思う。Underscore も合わせて、 Rails 脳が作った JavaScript という感じ。 Ruby の dogmatic な感じがして僕は馴染めなかったし、Coffee で書かれた script は tech debt 化が早かった。

        • by ktmizugaki (46208) on 2017年09月21日 12時16分 (#3283182) 日記

          Rails の既存コードの保守で、CoffeeScript を少し触ったことあるけど、つい if ~ end と書いてしまって、「Rails に CoffeeScript 導入したやつはあほだ」としか思えなかった。
          Rubyがそもそも好きじゃないから、「JavaScript を Ruby みたいに書きたい人のための言語」といわれてもぴんとこない。

          --
          svn-init() {
            svnadmin create .svnrepo
            svn checkout file://$PWD/.svnrepo .
          }
          親コメント
        • by Anonymous Coward

          Ruby というより Rails のためという印象だったな。

  • by Anonymous Coward on 2017年09月20日 19時40分 (#3282808)

    ステマ?

    • by Anonymous Coward

      言いたい事があるならはっきり言ったらどうなの?

      • by Anonymous Coward

        > はっきり言ったらどうなの?

        M$は悪である。
        したがってTSも悪である。

    • by Anonymous Coward

      CoffieScript「えっと、友達のTypeScriptが勝手にミスコンに申し込んじゃってぇ」

typodupeerror

人生unstable -- あるハッカー

読み込み中...