タグ

ブックマーク / nowokay.hatenablog.com (9)

  • 簡易Truffle言語に変数を実装する - きしだのHatena

    Truffleで足し算してみたけど、やっぱちょっと変数を実装しておきたい。 Truffleでの言語実装を最小手数ではじめる - きしだのはてな ということで、変数を追加するんだけど、ここでは変数定義はせずに埋め込み変数みたいなものを実装してみます。 変数登録 今回はMathRootNodeでのexecuteのときに変数を登録します。変数名はFrameSlotで表します。FrameSlotはFrameDescriptorからとってきます。このとき、FrameSlotに変数の値の型も設定しておきます。 static class MathRootNode extends RootNode { ... @Override public Object execute(VirtualFrame frame) { setup(frame); return body.executeGeneric(fram

    簡易Truffle言語に変数を実装する - きしだのHatena
    msykt
    msykt 2019/10/20
    FrameSlot の使い方
  • Truffleでの言語実装を最小手数ではじめる - きしだのHatena

    あけましておめでとうございます。 ということで、Truffleで言語実装したい気分なので、まずはJyukutyoの数式処理から始めることにしました。 オレオレJVM言語を作ろう! How to create a new JVM language #Graal #Truffle - Fight the Future けど、APIがだいぶ変わってるようでそのままではできず、あとAntlr使っているのでTruffleのみの部分を切り離して試してみました。 足し算だけの式言語をつくります。 https://github.com/kishida/simplest_truffle_expr 簡易Truffle言語に変数を実装する - きしだのHatena Truffle言語で関数呼び出しを実装する - きしだのHatena Truffle言語をGraalVMで動かす - きしだのHatena 依存関係

    Truffleでの言語実装を最小手数ではじめる - きしだのHatena
    msykt
    msykt 2019/10/20
  • GraalVMはどれだけ遅いか - きしだのHatena

    GraalVM流行ってますね。 そして、多くの人はGraalをAOTとして使うnative-imageのことだけをGraalVMと言ってたりします。 ご安心を。このエントリではGraalをJITとして使うHotSpotモードとGraalをAOTとして使うnative-imageの両方が遅いという話です。 GraalVMは速い、と言われてますが、残念ながらHotSpotモードでC2より速い結果を手元では出せていません。 公式ブログでは1.7倍から5倍速くなると書いてますけど、手元では再現できてません。 Under the hood of GraalVM JIT optimizations - graalvm - Medium native-imageは速い、というのはよくありますが、これはネイティブ化によりJVMの起動時間や最適化の時間、最適化されずに動く時間が省略されるので起動が速い、とい

    GraalVMはどれだけ遅いか - きしだのHatena
    msykt
    msykt 2019/06/28
    GraalVM が OpenJDK の JVM よりも速くなるような見通しってあるのかな? lambda のような小さな関数には効果がある、という話を聴いたような気もするけど…。
  • Java8でのプログラムの構造を変えるOptional、ただしモナドではない - きしだのHatena

    ※ 5/29 3:23 追記:なんかモナドになったかも。最下部参照 さて、Java8での拡張をいろいろ見てきたわけですが、ではアプリケーションプログラムでFunctionを受け取るメソッドをがんがん定義するかというとそういうことはあまりなく、フレームワーク的な部分で数個定義する感じになると思います。もちろん数個でも効果はでかいのですが。 また、おそらくStreamを受け取ったり返したりするメソッドを定義することは、めったにないのではないかと思います。 Mapでの拡張も、メソッド内部での処理記述がかわる話で、メソッドの引数や戻り値はMapのまま変わりありません。 Javaでのプログラムの構造というのは、メソッドの引数や戻り値の型がなんであるかで決まると言うことができます。その意味では、lambdaやStreamというのは処理の記述は変わるけどプログラムの構造は変わらないとなります。 けれども

    Java8でのプログラムの構造を変えるOptional、ただしモナドではない - きしだのHatena
  • Java SE 8でパターンマッチを実装する - きしだのHatena

    Java Advent Calendar 2013の12日目のエントリです。 昨日はtorutkさんでした。 Java Advent Calendar 2013 11日目 - Java SE 8の新クラス・メソッド一覧 - torutkの日記 明日はbitterfoxさんがマニアックな記事を書くんだと思います。 ところでパターンマッチ 実は去年のAdvent Calendarでもパターンマッチを考えていました。 Javaでのパターンマッチを考える - きしだのはてな このときは、Javaの言語機能としてパターンマッチに使えるものはないかと考えました。 今回はJava 8ラムダを利用して、どれだけ型安全に条件分岐しつつ構造を分解できるかということにチャレンジしてみます。b115で確認してます。 値の比較に関しては、型の扱いさえできれば、まあ実装すりゃ実装できるっていう感じなので、今回は省きま

    Java SE 8でパターンマッチを実装する - きしだのHatena
    msykt
    msykt 2014/05/07
    これは面白い
  • Java8で必須のPairとzip - きしだのHatena

    Java8リリースされました! けど、ちょっと足りない。 zipメソッドは一瞬Java8の開発ビルドに入っていましたが、JavaOneのときには外れていました。JavaOneでzipはどうなるの?という質問にもBrianは、ちょっと難しかったからはずしたというようなことを言っていました。 とはいえ、Java8に正式に含まれる品質じゃなくていいから欲しい。 あと、zipならPairも欲しい。 ということで、とりあえず置いておきます。 public class Pair<T, U> { T left; U right; public Pair(T left, U right) { this.left = left; this.right = right; } public static <M, N> Pair<M, N> of(M left, N right){ return new Pair

    Java8で必須のPairとzip - きしだのHatena
    msykt
    msykt 2014/03/24
    Pairは本当に欲しい
  • Java SE 8 lambdaで変わるプログラミングスタイル - きしだのHatena

    JavaOne2013報告会福岡第二段で話したlambdaの資料に加筆して公開しました。 lambdaの詳細な構文は適当に調べてもらうとして、lambdaでどのようにプログラミングスタイルが変わるかということに重点おきました。 追記「用意されたFuncationalInterface」のリンクはここです。 Java8 Lambdaの文法拡張まとめ - きしだのはてな

    Java SE 8 lambdaで変わるプログラミングスタイル - きしだのHatena
    msykt
    msykt 2013/11/22
    ラムダよりも並列処理を書きやすくなっているのが嬉しい。早く使いたい
  • DDD(ドメイン駆動設計)に関する資料 - きしだのHatena

    ちょっとまとめ。 ドメイン駆動設計・開発の実践 Eric EvansがDDD(ドメイン駆動設計)を語る Domain-Driven Designのエッセンス -目次- ドメイン駆動設計 ( DDD ) をやってみよう DDD時代の設計 - DDD-memo エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) 作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子出版社/メーカー: 翔泳社発売日: 2011/04/09メディア: 大型購入: 19人 クリック: 1,360回この商品を含むブログ (131件) を見る エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION) 作者: マーチン・ファウラー,長瀬嘉秀,株式会社テクノロジックアート出版社/メーカー: 翔泳社発売日:

    DDD(ドメイン駆動設計)に関する資料 - きしだのHatena
  • Database Management Systems 8章読み終わった - きしだのHatena

    一日1ページとか2ページとかいうペースで、Database Management Systemsを読んでるのだけど、やっと8章「Overview of storage and indexing」が読み終わった。 Database Management Systems 作者: Raghu Ramakrishnan,Johannes Gehrke出版社/メーカー: McGraw Hill Higher Education発売日: 2002/09/01メディア: ペーパーバック購入: 1人 クリック: 9回この商品を含むブログ (2件) を見る ついでに言うと、8章から読み始めたので、最初の章がやっと終わった感じ。 さらについでに言うと、7章までは普通にリレーショナルモデルとかSQLの説明とか、日語でも読めるような内容なので、読み飛ばしてる。JDBCのAPIの説明とかJSPとか、どうでもいいし

    Database Management Systems 8章読み終わった - きしだのHatena
    msykt
    msykt 2012/03/23
  • 1