CoffeeScript
■ このスレッドは過去ログ倉庫に格納されています
次世代言語X 正式名称はTypedCoffeeDartedScriptX >>127 それ、欠点にしか思えないんだけどw 変換しても可読性があるということは 単純なコードの置き換えしかしていない。 最適化やブラウザ依存対策なんかしてないということだ。 それによって得られるのは、わずか数文字、タイプ数を減らせるだけ。 タイプスピードどれくらい? 100文字/分? 200文字/分? Javascriptは読み難いんだよ タイプ数とか言ってるアホは論外 知らんけど、若い言語で信者着いてるもんなんだね。立派立派。 line number mapping for debug https://github.com/jashkenas/coffee-script/issues/558 Possible to add line number to debug output? (undefined @) (very minor) https://github.com/jashkenas/coffee-script/issues/2507 https://github.com/jashkenas/coffee-script/pull/2483 ソースコード変換系全般にいえるけど コンソール上でデバックしやすい エラー箇所の行番号の表示とか その辺もうちょい改善できるとこだとは思う ただ source map で対応関連の情報が取れても その先にある node 本体がまぁゆるい try catch の連続とデバック文埋め込みと ブラウザのデバッガ機能(これはjsオンリー) で凌がないといけないのは変わらないんではないかと > 変換系(coffee, typescriptなとなど goとかはセグフォで落ちる 使ってない変数とかあるとコンパイルが確実に止まる で問題の特定はしやすい… cの利点か。(ruby, pythonとかのc拡張系もスタックトレースは読み易い傾向はあるか 6.55 Built-in Functions Specific to Particular Target Machines http://gcc.gnu.org/onlinedocs/gcc/Target-Builtins.html#Target-Builtins An Introduction to GCC Compiler Intrinsics in Vector Processing http://www.linuxjournal.com/content/introduction-gcc-compiler-intrinsics-vector-processing >Fourth, don't re-invent the wheel. Intel, Freescale and ARM all offer libraries and code >samples to help you get the most from their processors. These include Intel's Integrated >Performance Primitives, Freescale's libmotovec and ARM's OpenMAX. ハード側での対応というのもそれなりに大切だわな 『TypeScriptが世に出てきてしまった以上、CoffeeScriptは「型付けのできないTypeScriptの出来損ない」みたいな存在になってしまったかなぁと。 >>140 それは全然違うでしょ TypeScriptはCoffeeとは大分毛色の違う物だよ でも今後はTypeScriptの方が流行りそうだね ・別の言語の一部だけから変換するもの ・JSに変換する目的で簡潔な構文のみ使えるもの ・上位互換(+静的型チェック)でJSの文法も使えるもの CoffeeScriptはPython風の構文と簡潔な文法(しか書けなくしてる)が特徴だけど、 IDEサポートの充実期待やjsのライブラリが開発環境でも同期できるなら、TypeScriptでもいいかなと思ってしまうな。 # 名前付き引数みたいなの(構造的部分型かな) User = (Id: id, Name: name) -> &nbsp;&nbsp;alert id + ' ' + name User Name: 'Mochi', Id: '000' # 引数を省略したときの既定値 User = ( &nbsp;nbsp;{Id: id, Name: name} = {Id: '001', Name: 'Tarou'} ) -> &nbsp;&nbsp;alert id + ' ' + name User() 慣れてる人にとっては必要ないかもしれないけど、 Chromeのデベロッパーツールで、CoffeeScriptコードをそのままデバッグできる方法があった。 (下の記事の真ん中よりちょっと下らへんに書いてある) ttp://blog.happyelements.co.jp/2012/09/coffeescript84source-map-livescript.html CoffeeScriptReduxっていう非標準のCoffeeScriptコンパイラを使わないといけないのだけど、本家coffeeでも対応しないかなこれ。 いろいろと対応無理だから新しいコンパイラを作ったんだよ >>149 そうなのか……。まだ、一部のコードがコンパイルできなかったりして、バグが多いんだが。開発は活発そうだし、頑張って欲しいね。 詳しい人教えてください。 子クラスのあるメソッドから、親クラスの別の名前のメソッドを呼ぶにはどうすればいいんでしょうか? class Animal name: "名無しちゃん" constructor: (name) -> if name? @name = name func: -> console.log "#{@name}「親クラスのメソッドです」" class Cat extends Animal func: -> console.log "#{@name}「子クラスのメソッドです」" callSuperClassFunc: -> Animal.prototype.func() # 親クラスのメソッドを呼ぶ? tycho = new Cat "タマ" tycho.callSuperClassFunc() ちなみに上のコードだと、出力結果が 名無しちゃん「親クラスのメソッドです」 になってしまいます。これを タマ「親クラスのメソッドです」 という出力にしたいのですが……。 うお、インデントがなくなってしまった。 でも一応、分かりますよね? >>152-153 Javascriptの__super__は分かるよね? Coffeeの場合は、親クラスのメソッド同じ名前の子クラスのメソッドの中で super と書くだけ(引数がある場合は関数と同じように「super x」) 子クラスで独自処理を呼ぶかsuperを呼ぶか切り替えたい場合は、 func: (flag = false) -> if flag super else console.log "#{@name}「子クラスのメソッドです」" callSuperClassFunc @func true とか書くと良い ちなみにCoffeeScriptのコーディングスタイルでインデントはスペース2つが推奨だからtabは使わない方が良いよ >>154 レスありがとうございます。 super は分かるんです。 でも、それだと子クラスのメソッドと「同名の」親クラスのメソッドしか呼べませんよね。 ではなく、子クラスのメソッドと「名前が違う別の」親クラスのメソッドを呼びたいんです。 ちなみにその別の名前のメソッドは子クラスにもあって、でも親クラスの方のを呼びたい、という状況です。 あんまり需要がある呼び出し方かどうかわかりませんが、ちょっと気になっちゃって。 >ちなみにCoffeeScriptのコーディングスタイルでインデントはスペース2つが推奨だからtabは使わない方が良いよ ご指摘ありがとうございます。気をつけます。 Animal::func.apply(this) これでいけるけどほかにも書き方があるかもしれん >>156 ありがとうございます! こんな書き方知りませんでした。勉強になります。 奥が深いなぁ。 Cat.__super__.func.call(this) >>158 なるほど。その書き方が一番良いかもしれませんね。 ありがとうございます! node.jsやrails以外にこの言語の使いどころってあんの? GreaseMonkeyとかのUserScriptsをCSで書いてるよ CoffeeScript > pythonをjsでやってみたらこんなんでました って認識でおk? pythonに影響を受けてるのはインデントブロックぐらいで それ以外はrubyの影響が強いな とくにclassシンタックスまわり ruby に良く似てるね どちらかというと node.js が python に似てると思う 最近はTypeScriptの方が言語的に優れてていいって巷では言っているが、 どうなんだろ……。 Unix派(coffee) vs MS派(typescript) または静的型付け派 vs 動的型付け の代理戦争っぽいところもある JSクソといってたMSベッタリな知り合いは TypeScript出た瞬間いやーJS未来ありますねって言ってて笑った 乱立した挙句デファクトが決まらないまま、別に素のJSでいいという流れになりそう 数年後、そこにはTyped CoffeeScriptの元気な姿が… いずれ実現するんじゃないかな CoffeeScriptの評判がいい点て軽量言語らしいゆるふわシンタックスで TypeScriptはコンパイラレベルの型があってIDEに統合に強い 現状TypeScriptをCoffeeScriptみたいなシンタックスで書けるコンパイラ出たら俺はそれに乗り換える コンパイラっていうかプリプロのプリプロだけどな で、現状 heap.coffee ってのが一番近いんだけどなんか目指してるものが微妙で、そんで動かん (x) -> (y) -> x+y とか書けるから楽ちん Ruby利用者が減ってCoffeeScript利用者が増えると予想 まだまだクライアントでコールバックチェーンをちゃんと書ける人が少ない sourcemap対応きたな typescriptに先んじられてた部分に追いついた TypeScript -> PHPなやつが出たよ Pratphall http://pratphall.org/ >>177 ようやく来たかー。 これでCoffeeScriptRedux使う理由はなくなったな。 名前を付けない、それがクロージャ javascriptと同じで変数に割り当てるんじゃ >>180 普通に f(1)(5) #=> 6 だろ jsのカリー化や部分適用はJavaScript: The Good Parts にも載ってる >>184 なるほど!ありがとう! カリー化ってなに? どーせカリーとか言ってるだけでほんとは意味知らない人多いんでしょ 野菜をいちどきに鍋にぶちこむのではなく火の通りにくい順に入れていくこと CoffeeScriptからExcelで迷路を描く方法を教えてください CoffeeScriptはJScriptでも動くんですか? Objective-○ みたいなの、、、 うごかないけどorz @implementation = (obj) -> @[k] = obj[k] for k of obj @implementation CSObject: (obj) -> # not implementation. @implementation Test: CSObject constructor: -> alert "Hello,World!" test = [[Test alloc] init] railsの公式サポートにあってcoffeescript使い出したら普通のjsが書けなくなるほどドップリはまった ある程度書ける人からしたらおせっかいなのかもしれないけど、自分みたいなDOM操作ばかりの人間には非常に使いやすい Webのフロントエンド書く仕事でCoffeeScript、趣味でTypeScriptだけど 結局、サーバーサイドを何で書くか次第な気がしてきた。 サーバ側がRubyやPythonで書かれていれば、サーバ側技術者が馴染みやすいのはCoffee。 サーバ側がJavaやC#だったら、TypeScript。 Pythonの人やRubyistに書かせると綺麗になる(作者のAshkenasがそうなので) PHP/JavaScript上がりの人に書かせると破綻しそうではある 大規模プロジェクトならやっぱTypeScriptなんだろうけど、5000行ぐらいまではcoffeeでいい Haxe「(/ω・\)チラッ」 JSX「|冫、)ジー」 基本、括弧を書かなくていいのは地味にラクなんだけど 後から見にくいんだよな >>204 実際のプロジェクトで使うとそうなんだよな・・ ただオブジェクトリテラルのネストがすごい見やすくなるのはでかい 自分はGrunt.jsの設定ファイルだけにcoffee使ってる これは使わないと損するレベル 関数実行時のカッコが省略できるのは見にくいので カッコを省略しないで書こう github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS/_history javaのひとは groovy のほうが馴染むだろうか grail もあるし というかインデント記法の言語というので全部書くのは なかなか辛いケースもありそうだな… やっぱ型あるほうがいいわ CoffeeScriptで作ったのをTypeScriptやHaxeにそのまま手作業でコンバートしたら とんでもない潜在的バグが発覚ってケースが何度も何度も。マジで 同じインデント記法でもPythonは読みやすいよ 変に弄らないでPythonの猿真似でよかったのにな ただ一番の問題はシンタックスじゃなくて、JSやRubyに合わせて インデント幅を2にしてると浅すぎてわかりにくいことだと思うけどね Pythonだと規約でインデント幅4推奨だからな var宣言とかあった方が良くない? どこのスコープで宣言してる変数なのか 何が使われているのかとか、分かりにくすぎる >>213 Pythonはそれでうまくいっているという事実がある ただインデントの話もそうだけど、最初からそれを大前提にして一から設計されたPythonとは違って JavaScriptの仕様や慣習に縛られているので、その兼ね合いでいろいろと綻びが出ている 皆さん、JavaScriptで以下みたいなforループがあったとして for (var i=0; i<max; i++) { console.log(i); } CoffeeScriptでは同等のforループをどう書いてます? for i in [0..max-1] console.log i ってやったら、max=0 の時に案の定うまくいかなかった。 すごい初歩的な質問でスミマセンorz あ、自己解決しました。 for i in [0...max] console.log i ってやればいいだけですね。スレ汚しすまんでしたorz http://js2coffee.org みてると双方向で変換できるのは利点なんだな typescirptもhaxeも一度出力したら元に戻すのはだいぶ困難だという… なかなか上手くいかんな いや上の使っても綺麗には変換できないか…うーんorz コード片を突っ込んでから目視で確認して直す分には便利 ライブラリまるごと突っ込むにはちょっと無理かな coffeescript使う意味ってあるんですか? エディタの補完じゃだめなんですか? Coffeeが要らないと感じるくらい強力な補完が出来るエディタを使っているのだとしたら、別に無理してCoffee使う理由は全く無いと思うよ でもfunctionとreturnと括弧の補完さえできれば CoffeeScriptのメリットの9割がなくなったも 同然だと思う。 fでfunction %1(%2){%3}って置換してるしCoffeeScriptを書くのが苦痛 %nのところはtabで移動できるやつ、いわゆるvimのアレ 強力な補完の定義がないからいまいち何を言いたいのか分からない functionとreturnと括弧の補完ができても 読むときにfunctionとreturnと括弧が邪魔で ロジックに集中できず読み難い >>227 いちいち、functionやreturnを読んでるの? 読み飛ばしてロジックだけ見ろよ。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる