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

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

アプリで開く

はてなブックマーク

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

はてなブックマーク

トップへ戻る

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

    猛暑に注意を

『qiita.com』

  • 人気
  • 新着
  • すべて
  • JavaScript で WebAssembly のバイナリを直接書き出してみた - Qiita

    7 users

    qiita.com/takl

    はじめに 趣味の自作言語で WebAssembly を吐いてみようかなと思いました。が、WebAssembly の仕様書を読むだけで理解するのは困難です。そこで手を動かしながら仕様書を少しずつ追いかけていくことで理解しようと思いました。せっかくなので誰か(主に数週間後の自分)の役に立てばなあ、と思い思考の記録を取った次第です。 参考文献 WebAssembly Specification 仕様書です WASM のバイナリの構造 WASM のバイナリは module です(これは正確な言い回しではないかもしれません。Overview の Modulesをよんで)。module の binary encoding はModulesに書いてあります。 ごちゃっとしていて圧倒されますが、以下の3点を押さえると読みやすくなると思います。 module は magic -- version -- se

    • テクノロジー
    • 2020/01/25 12:57
    • WebAssembly
    • JavaScript
    • HTML5
    • techfeed
    • あとで読む
    • VSCodeで俺々言語モードを作る - Qiita

      37 users

      qiita.com/takl

      はじめに 俺々言語を作っていると「やっぱりIDE欲しいよね」ということになります。しかし、IDEを全部作るには人生の余白があまりにも少なすぎます。IDE的なものを作ろうとしたらテキストエディタの拡張を書くのが現実的でしょう。最近流行りのテキストエディタといえば VSCode です(異論はあると思います)。というわけで VSCode で俺々言語モードを作るための最小限の情報とサンプルコードをまとめておこうと思いました。 成果物は https://github.com/usm-takl/vscode-oreore-mode にあります。 スコープ VSCode の拡張の作り方を説明します。 サンプルコードに徹します。 俺々言語の作り方は説明しません。 俺々言語の解析方法は説明しません。 「どうやって VSCode に suggestion を表示させるか」などを説明します。 「どうやって俺々言

      • テクノロジー
      • 2019/06/12 20:13
      • VSCode
      • あとで読む
      • 末尾呼び出し最適化についてあれこれ - Qiita

        4 users

        qiita.com/takl

        Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この記事は「言語実装 Advent Calendar 2018」の22日目の記事です。 はじめに 「関数の最後の処理が関数呼び出しのときは、その関数呼び出しを goto に変換できる」「できねーよ」のやりとりを年一回ぐらいのペースで見かける気がしています。このあたりについて説明しようとすると結構長くなります。何度も同じ話を繰り返すのもなんなので、この手の議論が出てきたら「いろいろあるんじゃよ…いろいろ…」と言えるような記事を残しておこうかと思いました。 というわけで「末尾呼び出し最適化についてあれこれ」です。 言葉の定義 最初に、混乱を

        • テクノロジー
        • 2019/01/15 13:49
        • プログラミング
        • Cはチューリング完全か? - Qiita

          5 users

          qiita.com/takl

          逃げ口上 雑な記事です。 はじめに ときどき「プログラミング言語と呼ぶための条件とは」のような話題が出ることがあります。よくある回答としては「チューリング完全ならプログラミング言語と呼べるんじゃないの」あたりでしょうか。「まあ、それはそうかな」とも思います。しかし、あるときCの言語仕様書を読んでいてふと思いました。 「Cはチューリング完全なんだろうか?」 実は結構怪しいのでは、と思いました。本記事ではなぜ怪しいと思うに至ったか、経緯などをてきとうに書いてみようと思います。 ちなみに自然言語で書かれた701頁に及ぶ仕様書を数学的に厳密に、というのはそもそも無茶な話なので、あまり結論にはこだわってません。というか中途半端な終わり方になっています。「こんなことを考えました」程度のポエムと受け取って頂ければ幸いです。 前提知識 前提知識1. チューリング完全とは チューリング完全 まずチューリング

          • テクノロジー
          • 2018/10/31 23:04
          • あとで読む
          • Menhir と ocamllex のサンプルコードをいくつか - Qiita

            4 users

            qiita.com/takl

            はじめに プログラムを書いていると、ちょっとした言語処理系を作りたくなることがあります。ちょっとした言語処理系を作ろうとしたとき、OCamlは良い選択肢です。何故良い選択肢なのかはよくわかりませんが、実際書いてみて快適でしたし、えらい人もそう言ってましたし、まあいいや、とにかく良い選択肢です。 しかし、素のOCamlで構文解析器や字句解析器を作るのはしんどいです。手を抜こうと思ったら構文解析器生成器Menhirと字句解析器生成器ocamllexを使うのが常套手段でしょう。 が、普通の人はそう頻繁に新しく言語処理系を作ったりしませんので、 Menhir や ocamllex の使い方を忘れがちです。こうなると困ります。例えば「半年ぶりに言語処理系を作りたい気分になっちゃった」というとき、「あれっ? Menhir ってどう書くんだっけ?」となり、こうなると気分が重くなり、結果「言語処理系つくら

            • テクノロジー
            • 2018/06/08 18:17
            • ocaml
            • parser
            • OCamlで動的スコープなLispを作る - Qiita

              4 users

              qiita.com/takl

              はじめに 本記事はOCamlで遊んだ記です。 構文木を直接解釈する方式で動的スコープな変数をもつ Lisp インタプリタっぽいものを作ります。このやり方だと非常に簡単に自作言語ができるので、趣味の自作言語の第一歩としてどうでしょう、という感じの記事です。 ソースコードはこちらにあります。空白行含めて331行です。 https://github.com/usm-takl/dynamic-scoping-lisp-in-ocaml 動的スコープとは 動的スコープというのは、雑に言うと「関数内で定義されてない変数を参照するとき、変数の定義を関数呼び出しの深い方から浅い方に向かって探すやり方」です。関数gでローカル変数aを定義して、gの中から関数fを呼び出すと、f内ではgのローカル変数が見えます。perl 5のlocal変数や、emacs lispの変数がこういう動きをします。例を載せておきます。

              • テクノロジー
              • 2018/03/21 18:20
              • 一日でできるセルフホスティングForthコンパイラ - Qiita

                51 users

                qiita.com/takl

                はじめに これは「言語実装 Advent Calendar 2017」24日目の記事です。 この記事では 64bit版Windows で実行可能な x86_64 のセルフホスティング Forth コンパイラを作ります。 対象読者としては「C言語そこそこわかる」「x64アセンブラに嫌悪感はない」ぐらいの人を想定しています。コンパイラの知識は特に前提としません。 完成品はこちらから取得できます。 bootstrap には C を使います。しかしC言語的にお行儀の悪いことを色々やりますので、バージョンやコンパイルオプション等によっては動かないかもしれません。ご了承ください。一応完成版は以下の環境で動作を確認しています。 Cygwin64 の gcc option: -O3 と -O なし両方 version: 6.4.0 (GCC) target: x86_64-pc-cygwin Msys2

                • テクノロジー
                • 2017/12/24 00:59
                • forth
                • compiler
                • コンパイラ
                • programming
                • Windows
                • paiza10万登録ありがとうゴルフ大会参加報告(Java:375 C#:285) - Qiita

                  3 users

                  qiita.com/takl

                  はじめに この春4月20日(木)~5月21日(日)にpaizaさんで開催された10万登録ありがとうスペシャルWキャンペーンがゴルフ会場として一部で盛り上がりました。ゴルフ大会は無事閉幕したようなのですが、二次会としてコード晒し会が開催されているようですので、私も参加してみたいと思います。 提出コード まずこちらが私の提出コードです。申し訳程度にインデントしてあります。空白を削れば数字は合うはずです。 Java: 375バイト class Main{ public static void main(String[]Q)throws Exception{ byte[]f; int a,t=1,s[]=new int[System.in.read(f=new byte[8820])*6],I=0,i=0,j,k,m; for(;t>0;a=t>47?s[I]=s[I]*10+t-48:I++)t

                  • エンタメ
                  • 2017/05/29 10:13

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

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

                  『qiita.com』の新着エントリーを見る

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

                  j次のブックマーク

                  k前のブックマーク

                  lあとで読む

                  eコメント一覧を開く

                  oページを開く

                  はてなブックマーク

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

                  公式Twitter

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

                  はてなのサービス

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