はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena
  • Hatena

    はてなブックマーク

    トップへ戻る

    • 総合
      • 人気
      • 新着
      • IT
      • 最新ガジェット
      • 自然科学
      • 経済・金融
      • おもしろ
      • マンガ
      • ゲーム
      • はてなブログ(総合)
    • 一般
      • 人気
      • 新着
      • 社会ニュース
      • 地域
      • 国際
      • 天気
      • グルメ
      • 映画・音楽
      • スポーツ
      • はてな匿名ダイアリー
      • はてなブログ(一般)
    • 世の中
      • 人気
      • 新着
      • 新型コロナウイルス
      • 働き方
      • 生き方
      • 地域
      • 医療・ヘルス
      • 教育
      • はてな匿名ダイアリー
      • はてなブログ(世の中)
    • 政治と経済
      • 人気
      • 新着
      • 政治
      • 経済・金融
      • 企業
      • 仕事・就職
      • マーケット
      • 国際
      • はてなブログ(政治と経済)
    • 暮らし
      • 人気
      • 新着
      • カルチャー・ライフスタイル
      • ファッション
      • 運動・エクササイズ
      • 結婚・子育て
      • 住まい
      • グルメ
      • 相続
      • はてなブログ(暮らし)
      • 掃除・整理整頓
      • 雑貨
      • 買ってよかったもの
      • 旅行
      • アウトドア
      • 趣味
    • 学び
      • 人気
      • 新着
      • 人文科学
      • 社会科学
      • 自然科学
      • 語学
      • ビジネス・経営学
      • デザイン
      • 法律
      • 本・書評
      • 将棋・囲碁
      • はてなブログ(学び)
    • テクノロジー
      • 人気
      • 新着
      • IT
      • セキュリティ技術
      • はてなブログ(テクノロジー)
      • AI・機械学習
      • プログラミング
      • エンジニア
    • おもしろ
      • 人気
      • 新着
      • まとめ
      • ネタ
      • おもしろ
      • これはすごい
      • かわいい
      • 雑学
      • 癒やし
      • はてなブログ(おもしろ)
    • エンタメ
      • 人気
      • 新着
      • スポーツ
      • 映画
      • 音楽
      • アイドル
      • 芸能
      • お笑い
      • サッカー
      • 話題の動画
      • はてなブログ(エンタメ)
    • アニメとゲーム
      • 人気
      • 新着
      • マンガ
      • Webマンガ
      • ゲーム
      • 任天堂
      • PlayStation
      • アニメ
      • バーチャルYouTuber
      • オタクカルチャー
      • はてなブログ(アニメとゲーム)
      • はてなブログ(ゲーム)
    • おすすめ

      WWDC25

    『ブートストラッピングでコンパイラを作る日記』

    • 人気
    • 新着
    • すべて
    • プログラミング言語Amberの紹介(その1) - ブートストラッピングでコンパイラを作る日記

      14 users

      nineties.hatenadiary.org

      3年ぶりに更新します。この3年間にも(途中1年以上別の事をやっていましたが)自作の言語とその処理系の開発は続けていました。そろそろ紹介記事を書き始めようと思います。ホームページは既にありますが、こちらは昨年の夏から更新していないので内容が古くなっています。本記事を元にして後で更新します。 言語の名前はAmberと言います。Amberとは日本語で琥珀という意味です。実は同名の言語処理系がいくつか存在するのですが(larsivi / amber / wiki / Home — Bitbucket, GitHub - eknkc/amber: Amber is an elegant templating engine for Go Programming Language, inspired from HAML and Jade, The Amber Programming Languageなど

      • テクノロジー
      • 2014/04/19 19:13
      • Amber
      • language
      • プログラミング
      • programming
      • 「末尾最適化」を正しく理解する - ブートストラッピングでコンパイラを作る日記

        49 users

        nineties.hatenadiary.org

        以下の記事でPythonやRubyの末尾再帰関数をループに変換する手法が「末尾再帰最適化」や「末尾呼び出し最適化」として紹介されているのですが、これらの用語を使うのは間違いです。 紹介されている手法(動的束縛を利用して制御フローを変形する手法)自体は大変面白いですね。 Pythonで末尾再帰最適化をする。 Rubyで末尾再帰最適化をする。 参考文献として以下を挙げておきます。 William D. Clinger "Proper Tail Recursion and Space Efficiency" ちゃんと読み直していないので、以下の説明に間違いがあるかも知れません。その場合はご指摘お願いします。 まず「末尾呼び出し(Tail Call)」は関数の一番最後の式(末尾式)であって、関数呼び出しであるものを指します。 void foo() { bar(); baz(); /* 末尾呼び出し

        • 暮らし
        • 2011/01/24 22:30
        • 末尾再帰
        • 最適化
        • python
        • コンパイラ
        • programming
        • プログラミング言語
        • プログラミング
        • 母関数を使って括弧のパターンを求めてみた - ブートストラッピングでコンパイラを作る日記

          4 users

          nineties.hatenadiary.org

          n個の対応する括弧のパターンの数を母関数を使って求めてみました。 これはid:nobsunさんが指摘なさっているようにカタラン数という数になるんですが、そういう前提知識なしで機械的に解きたいような場合に使えます。 いろんな教科書があると思いますが、私は以下の本で学びました。 参考書籍: コンピュータの数学 作者: ロナルド・L.グレアム,オーレンパタシュニク,ドナルド・E.クヌース,Ronald L. Graham,Oren Patashnik,Donald E. Knuth,有沢誠,萩野達也,安村通晃,石畑清出版社/メーカー: 共立出版発売日: 1993/08メディア: 単行本購入: 5人 クリック: 224回この商品を含むブログ (38件) を見るまず求めるパターンを全て書きだした形式的なべき級数を考えてみます。式の中の1は括弧を一個も使わないパターンのつもり。 T = 1 + ()

          • テクノロジー
          • 2010/12/17 15:36
          • Math
          • 最適化コンパイラ屋がHaskellの副作用について考えてみる - ブートストラッピングでコンパイラを作る日記

            30 users

            nineties.hatenadiary.org

            Haskellに副作用があるのか?というのは難しいテーマだと思いますが、少なくとも最適化理論での一般的な「副作用」の定義ではHaskellは全く副作用がない言語と言えると思います。 理論的に美しいという点がHaskellの設計の一番重要なところだと思うのですが、バックエンドの泥臭い話も面白いかもと思ったので書いてみます。 私は主に手続き型言語の最適化をやっていて関数型言語は詳しくありませんので、見当違いな事を書いていたら指摘して下さい。 まずは副作用の定義の為に「データ依存関係」(Wikipedia:依存関係)の説明をします。 ある変数xを使用・定義する二つの文を考える時、その評価順序関係には以下の4種類があり、それぞれの関係を以下のように呼びます。 真の依存 x = ... ... ... = x 逆依存 ... = x ... x = ... 出力依存 x = ... ... x =

            • テクノロジー
            • 2010/11/23 08:44
            • Haskell
            • programming
            • *programming
            • 研究
            • *あとで読む
            • Rubyで書いたレイトレーサー - ブートストラッピングでコンパイラを作る日記

              7 users

              nineties.hatenadiary.org

              ベンチマーク用途を目的としてRubyで書いたレイトレーサーを公開します。 http://github.com/nineties/raytracer 以下をPart3まで実装したものです。 http://www.devmaster.net/articles/raytracing_series/part1.php PPM形式の画像を生成するので適当に変換してください。 また、より良い書き方があれば教えて下さい。 たった300行に満たないスクリプトで以下の様なレンダリングができて、Rubyの記述力の高さに驚かされました。 私の環境(Core 2 Duo + Windows 7 + VMPlayer + Debian + Ruby 1.9.1)でのレンダリング時間は 1枚目:4分43秒 2枚目:41分12秒 でした。ちなみにオリジナルのC++コードはどちらも数秒という話です。

              • テクノロジー
              • 2010/08/30 02:59
              • ruby
              • graphics
              • 3d
              • c++
              • ブートストラッピングでコンパイラを作る日記

                9 users

                nineties.hatenadiary.org

                3年ぶりに更新します。この3年間にも(途中1年以上別の事をやっていましたが)自作の言語とその処理系の開発は続けていました。そろそろ紹介記事を書き始めようと思います。ホームページは既にありますが、こちらは昨年の夏から更新していないので内容が古くなっています。本記事を元にして後で更新します。 言語の名前はAmberと言います。Amberとは日本語で琥珀という意味です。実は同名の言語処理系がいくつか存在するのですが(larsivi / amber / wiki / Home — Bitbucket, GitHub - eknkc/amber: Amber is an elegant templating engine for Go Programming Language, inspired from HAML and Jade, The Amber Programming Languageなど

                • テクノロジー
                • 2010/07/31 11:43
                • Ruby
                • blog
                • プログラミング言語の最適化のしやすさについて - ブートストラッピングでコンパイラを作る日記

                  4 users

                  nineties.hatenadiary.org

                  プログラミング言語の高級化はえてしてプログラムを複雑化し最適化を阻害してしまいます。 rowlの開発ではこのトレードオフについて神経質になろうと思っています。 最適化の基本 最適化には命令数削減・並列化・パイプライン最適化・レジスタ割り当て・スケジューリング・キャッシュ最適化・・・とさまざまな対象・手法が存在しますが、いずれにも共通する事は 元のプログラムをより良いものに変形する という事で、その際に重要なのは プログラムの意味を変えてはならない という最適化の基本原則です。プログラムの意味を変えない為にはプログラムの解析が必要で、その為の手法は大きく分けると フロー解析 型解析 です。最適化がしやすい言語とはこれらを精度よく行う事が出来る言語と言う事ができます。 また、Haskellの様な参照透過性が完璧に保たれている言語ではこれらの解析をすることなくプログラムの変形が可能です。 型解析

                  • テクノロジー
                  • 2010/07/08 10:50
                  • programming
                  • コンパイラの実装言語にあると良い機能 - ブートストラッピングでコンパイラを作る日記

                    8 users

                    nineties.hatenadiary.org

                    構造体とか配列とかどんな言語にも大体あるものは除きます。あくまで私の主観です。 lex/yacc/gperfなどのツール 特にyaccがないと複雑な言語のパースは大変。 バリアント 構文木の表現に一番適していると思う。 パターンマッチ コンパイラ内部はパターンマッチだらけ。 テーブルジャンプを用いた高速な実装ならなおよし。 ハッシュテーブル 名前の管理。必須。 バイナリ処理 バイナリファイル触るならもちろん。 ビットベクトル・ビット行列 フロー解析で必須。フロー解析に基づく最適化をするなら。 高速な集合演算があると良い。 SetやDisjoint Setなどのコンテナ 最適化の実装で使う。Disjoint Setはエイリアス解析で主に使う。もしやるなら。 グラフ 主にフローグラフ。値グラフでも使ったりする。 フローグラフはまばらなので基本的にAdjacency List表現。 Predec

                    • テクノロジー
                    • 2010/06/29 14:20
                    • compiler

                    このページはまだ
                    ブックマークされていません

                    このページを最初にブックマークしてみませんか?

                    『ブートストラッピングでコンパイラを作る日記』の新着エントリーを見る

                    キーボードショートカット一覧

                    j次のブックマーク

                    k前のブックマーク

                    lあとで読む

                    eコメント一覧を開く

                    oページを開く

                    はてなブックマーク

                    • 総合
                    • 一般
                    • 世の中
                    • 政治と経済
                    • 暮らし
                    • 学び
                    • テクノロジー
                    • エンタメ
                    • アニメとゲーム
                    • おもしろ
                    • アプリ・拡張機能
                    • 開発ブログ
                    • ヘルプ
                    • お問い合わせ
                    • ガイドライン
                    • 利用規約
                    • プライバシーポリシー
                    • 利用者情報の外部送信について
                    • ガイドライン
                    • 利用規約
                    • プライバシーポリシー
                    • 利用者情報の外部送信について

                    公式Twitter

                    • 公式アカウント
                    • ホットエントリー

                    はてなのサービス

                    • はてなブログ
                    • はてなブログPro
                    • 人力検索はてな
                    • はてなブログ タグ
                    • はてなニュース
                    • ソレドコ
                    • App Storeからダウンロード
                    • Google Playで手に入れよう
                    Copyright © 2005-2025 Hatena. All Rights Reserved.
                    設定を変更しましたx