並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 347件

新着順 人気順

setjmpの検索結果1 - 40 件 / 347件

  • 自作CPU向けCコンパイラをつくってOS動かした話 (CPU実験まとめ) - kw-udonの日記

    僕の学科では伝統的に3年の後期に半年かけてCPU実験というものをおこなう。 班で自作のアーキテクチャを設計・実装し、FPGA基板上でMinCaml(OCamlのサブセット)でかかれた課題用レイトレーシングプログラムが動けば単位がもらえるというものである。 レイトレ完動後には、その高速化にはげむもよし、余興としてゲームをつくるもよしで、自作CPU上で色々あそんだりする。 今年は有志で班を結成し、自作CPU上でxv6というOSを動かした。 僕はその班にCコンパイラ係として参加したので、そのことについてかく。 あと、OS移植班全体の成果についても触れる。 わりと長くなってしまったので、結局なにができたんだっていう人は、とりあえず先にこっちに飛んでほしい。 動機 期間は4ヶ月程度、配布されたFPGA基板のうえで動かしたいという制約のもとで移植するOSはxv6を選択した。 このOSはシンプルであるが

      自作CPU向けCコンパイラをつくってOS動かした話 (CPU実験まとめ) - kw-udonの日記
    • Practical Scheme

      Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を紐

        Practical Scheme
      • 第5章 ガ-ベージコレクション

        プログラムの実行時イメージ 突然だが、本章を始めるに先立ち、プログラム実行時のメモリ空間の状態につ いて予習をしておこうと思う。この章ではコンピュータの低レベルな部分にか なり踏み込んでいくことになるので、あらかじめある程度の知識を仕入れてお かないと太刀打ちできないのだ。それにこの後の章になればいずれ必要になっ てくる。ここで一回やってしまえば後が楽だ。 セグメント 一般的なCプログラムではメモリ空間の中に以下の部分を持つ。 テキスト領域 スタティック変数やグローバル変数の置場 マシンスタック ヒープ テキスト領域はコードが置いてあるところ。二番目は見ての通り。マシンスタッ クには関数の引数やローカル変数が積まれる。ヒープはmalloc()で割り当てて もらうところだ。 三つめのマシンスタックについてもう少し話そう。マシン「スタック」と言う くらいだから当然スタック構造をしている。つまり

        • Ruby 2.6にJITコンパイラをマージしました - k0kubun's blog

          The English version of this article is available here: medium.com 2/4(日)に、去年のRubyKaigiが終わった直後の新幹線で開発を始め10月に公開したJITコンパイラをRubyのtrunk (2.6.0-dev) にマージし、昨日TD Tech Talk 2018で以下のような内容の発表をしました。 speakerdeck.com まだそれほど速くできていないということもあり、私はTwitterでのみ共有して満足していたのですが、海外の方がいくつか記事を書いてくださいました。 Playing with ruby's new JIT: MJIT - John Hawthorn Ruby’s New JIT – Square Corner Blog – Medium とても丁寧に書かれているので、私の記事がわかりにくければ

            Ruby 2.6にJITコンパイラをマージしました - k0kubun's blog
          • Rubyの呼び出し可能オブジェクトの比較(1) - 世界線航跡蔵

            Rubyにはコード片を表すオブジェクトが複数ある。 Method , UnboundMethod , Proc である。 Continuation は少し違うけど、実行コンテキストを記憶しているオブジェクトという意味では近いものがあるか。『 Ruby Way 』にはこういういろいろがあることについて「驚くほどのことではありません」と書いてあるけれども私は驚いた。で、これらが微妙に違うのだ。困ったもんだ。いや、便利なのかもしれないが。 それで今回はこれらの概要を眺めてみたいと思う。 普通のメソッド defでメソッドを定義するのが一番普通だやな。 class C def greeting(arg) puts "C#greeting reveived #{arg}" end def iterator yield 'iterator 1st' yield 'iterator 2nd' yield

              Rubyの呼び出し可能オブジェクトの比較(1) - 世界線航跡蔵
            • ls のソースを読んでプログラマになりました - ablog

              タイトルは釣りですw*1 とあるテキストファイルを加工してCSVファイルを出力する Perl スクリプトがあり、ディレクトリ内のファイルをリストアップしてCSVファイルに出力しているのだが、なぜファイル名でソートされていないのか聞かれたので調べてみた。 その Perl スクリプトは File::DosGlob::glob でファイルリストを取得していたので、 yazekats% mkdir tmp yazekats% cd tmp yazekats% ls yazekats% touch 3 yazekats% touch 2 yazekats% touch 1 yazekats% ls 1 2 3 yazekats% perl -MFile::DosGlob -e 'map{print qq/$_\n/} File::DosGlob::glob(q/*/)'; 1 3 2 試してみると確

                ls のソースを読んでプログラマになりました - ablog
              • なんでも継続

                Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を

                • bkブログ

                  bkブログ プログラミングやバッドノウハウについてのブログ 2004-2011年に書いていたブログのアーカイブです。 机の上のもののワイヤレス化 - Microsoft Arc Keyboard の導入 iPodは何を変えたのか? 人が問題にぶち当たったときには、どうするか? ソフトウエアの肥大化について、の続き ソフトウェアの肥大化について ある程度の年齢を迎えたプログラマが抱える悩み Unicode の雪だるま 設定ファイルの整理 - Emacs 編 設定ファイルの整理 - zsh 編 パターン、Wiki、XP ~時を超えた創造の原則 マッキントッシュ物語 - 僕らを変えたコンピュータ GNU diff の地味だけど便利な機能 C++ の string と vector の reserve() の挙動 暗号化 - プライバシーを救った反乱者たち Best Software Writin

                  • C/C++ 迷信集 | 株式会社きじねこ

                    C/C++ を使うプログラマは大勢います。しかし、その多くは OJT を通して言語を学んだのではないでしょうか? 実はそこに大きな落とし穴があります。 コンピュータや工学のことをよく知らない人たちは、時代の先端を歩むプログラマには「迷信」など無関係だと信じて疑わないかも知れません。しかし、迷信や誤解はどんな世界にも常に存在しています。 というわけで、ここでは C/C++ にまつわる迷信、誤解、よくある間違いを採り上げていきます。非常に後ろ向きな企画ですが、暇つぶし気分転換に読んでみてください。もしかすると、ご自身が迷信にとらわれていたことに気付くかもしれません。 追記(2009/03/15) このコーナーでは、C/C++ にまつわる迷信、誤解、よくある間違いを扱っています。決して「迷信」だけではないのですが、タイトルにはすべて[迷信]を付けています。 これは、主に検索エンジンでタイトルを見

                    • Lua 5.1 リファレンスマニュアル

                      by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2006 Lua.org, PUC-Rio. All rights reserved. 0 - 日本語訳について この文書は、 Lua 5.1 Reference Manual を原著者に無断で日本語に訳した、非公式の Lua 5.1 リファレンスマニュアルである。 誤訳の指摘は歓迎するので、yuno@users.sourceforge.jp へよろしく。 1 - 概要 Luaは拡張プログラミング言語である。 データ記述機能を持ち、汎用の手続き型プログラミングをサポートするようデザインされた。 オブジェクト指向プログラミング、関数型プログラミング、データ駆動型プログラミングもサポートしている。 Luaは、パワフルで軽いスクリプト

                      • C++ Reference Project

                        C Library The elements of the C language library are also included as a subset of the C++ Standard library. These cover many aspects, from general utility functions and macros to input/output functions and dynamic memory management functions: <cassert> (assert.h)C Diagnostics Library (header)<cctype> (ctype.h)Character handling functions (header)<cerrno> (errno.h)C Errors (header)<cfenv> (fenv.h)F

                        • WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)

                          WebブラウザでOS動かしてどうすんだよ という根源的な疑問に回答が無いままとりあえずできちゃった。。 ※ コマンドが終了してもプロンプトが出ません。Enterを空打ちする必要があります (バグ) WasmLinuxは、WebAssembly "ネイティブ" なLinux環境です。カーネルもユーザーランドも、WebAssemblyのツールチェインでコンパイルされたWebAssemblyモジュール(をwasm2cでCにしたもの)です。 前回はカーネルしか動いていなかったんですが、今回はブラウザ上で ifconfig lo up して ping 127.0.0.1 したり top したり vi したりできます。BusyBox入ってるので。 ただしまだ実用性は皆無 です。Proof of Conceptって奴ですね。 前回の記事: 今回はMUSL libcを移植してBusyBoxが動くようになっ

                            WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)
                          • Super Technique 講座~longjmpと例外

                            プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは Java や C++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp

                            • ((Pythonで) 書く ((さらに良い) Lisp) インタプリタ)

                              ((Pythonで) 書く ((さらに良い) Lisp) インタプリタ) Peter Norvig / 青木靖 訳 前のエッセイでは、90行のPythonコードでシンプルなLispインタプリタを書く方法を示した(lis.py)。このエッセイでは、3倍込み入っているが、より完全なlispy.pyを実装しよう。それぞれの節で1つの機能追加を扱っている。 (1) 新しいデータ型 - 文字列、論理型、複素数、ポート Lispyへの新しいデータ型の追加は3つの部分からなる。データの内部表現、それを扱う手続き、読み書きのためのシンタックスだ。ここでは4つの型を追加する(入力ポート以外はPythonのネイティブ表現をそのまま使う)。 文字列 文字列リテラルはダブルクォーテーションで囲まれる。文字列の中で \n は改行を、\" はダブルクォーテーションを意味する。論理型  構文 #t と #f はTrue

                              • Using and Porting the GNU Compiler Collection (GCC) - GCCコマンド・オプション

                                GCCを起動すると、 通常は、 前処理(preprocessing)、 コンパイル、 アセンブル、 リンクが行われます。 「全体的(overall)オプション」によって、 この一連の処理を中途の段階で停止することができます。 例えば、 `-c'オプションはリンカを起動しないよう指示するものです。 この場合、 アセンブラによって生成されるオブジェクト・ファイルが出力となります。 他のオプションは、 一連の処理の中の1つの段階に渡されるものです。 オプションの中には、 プリプロセッサを制御するものもあり、 コンパイラ自体を制御するものもあります。 また、 アセンブラやリンカを制御するオプションもありますが、 それらのほとんどは、 ここではドキュメント化されていません。 というのは、 このようなオプションを使うことが必要になることはめったにないからです。 GCCにおいて使うことのできるコマンドラ

                                • Linuxプログラミングインタフェース

                                  Linuxのmanページプロジェクト主催者によるLinuxプログラマ必携のリファレンス。Linux開発者(主にシステムプログラマとアプリケーションプログラマ)にとって、プログラミングする上で必要な情報を一冊で網羅。本書で扱う内容は広範囲にわたり一冊でLinuxプログラミングのほぼすべての情報を知ることができます。Linux/UNIX開発者のバイブルとなる一冊です。 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。 第3刷正誤表 1270ページ、「59.6 inet_pton() とinet_ntop()」1行目 【誤】 inet_p

                                    Linuxプログラミングインタフェース
                                  • GNU コンパイラ集(GCC) の使い方と移植について

                                    Node:Top, Next:G++ and GCC, Previous:(dir), Up:(dir) Introduction このマニュアルでは、GNU コンパイラの使い方、インストール方法、移植方法や、新しい機能や互換性の無い部分、それにバグレポートの方法などについて説明している。GNU CC のバージョン 2.95 に対応している。(日本語版ドラフト-17 July 2001) G++ and GCC: C や C++ のプログラムがコンパイル可能Invoking GCC: gcc のコマンド行オプションInstallation: GCC のインストール方法C Extensions: C 言語の GNU の拡張C++ Extensions: C++ 言語の GNU の拡張Gcov: gcov: GCC のテストカバレージプログラムTrouble: GCC のインストールで問題が起

                                    • comp.lang.objective-C FAQ listing 日本語訳

                                      The comp.lang.objective-C FAQ listing 日本語訳 目次 メタFAQ あなたは誰ですか comp.lang.objective-c FAQはすでにあるのではないですか このFAQの最新版はどこにありますか 日本語訳について Objective-C言語 Objective-Cとは何ですか Objective-Cの標準規格はどこにありますか Objective-Cにはどのような種類がありますか。それらはどれくらい使われていますか Objective-C 2.0とは何ですか Objective-C開発ツール Objective-Cのソースファイルにはどのような名前をつけるのですか どのようなコンパイラを利用できますか どのような開発環境を利用できますか クラスライブラリ クラスライブラリとは何ですか どのようなクラスライブラリを利用できますか Objective

                                      • Gotoサンの話。結局のところ「goto禁止」はどういう話だったのか? - 新・日々録 by TRASH BOX@Eel

                                        C言語で書かれた大量のソースファイルをサンプルとして、現実でのgoto文の利用方法について調査した研究の結果が発表されたようだ。 C言語の開発者によるgoto文の使い方を対象とした実証研究の結果、「goto文は無害だと考えられる」 | スラド Empirical Study On How C Devs Use Goto In Practice Says "Not Harmful" - Slashdot An empirical study of goto in C code [PeerJ Preprints] とりあえず、歴史的経緯的に非常に重要だろう指摘をしておくと、ダイクストラの「Go To Statement Considered Harmful」が出たのが1968年で、C言語の初期の設計・開発が行われたのは1969〜1973年だ。C言語は、ダイクストラの論文が大きな話題となった後に

                                          Gotoサンの話。結局のところ「goto禁止」はどういう話だったのか? - 新・日々録 by TRASH BOX@Eel
                                        • 詳解UNIXプログラミング[第3版] | SEshop.com

                                          UNIXと真剣に関わる人のための重要な1冊 UNIXシステムの標準Cライブラリが提供するシステムコールをはじめ、膨大な関数について詳細に解説し、「UNIXでプログラミングを行う者すべてが読むべき1冊。読んでないヤツはモグリだ」とまで言わしめたUNIXプログラマ必読の書籍です。 もちろん非プログラマにとっても、UNIXという環境や仕組みを、その“考え方”のレベルから説き起こし豊富な演習問題で理解させてくれる、名実ともに剛毅な大著です。これまで日本語で読めたのは1992年に刊行された原書初版でしたが、本書は最新版(第3版)を翻訳したものです。訳者はその初版から携わっていた大木敦雄先生です。 【注意:本書第1刷は原書のエラータサイト(http://www.apuebook.com/errata3e.html)のうち、第17項までを取り込んでいます。】 1 UNIX システムの概要 1.1 はじめ

                                            詳解UNIXプログラミング[第3版] | SEshop.com
                                          • 教科書として書かれた一冊- 書評 - 例解Unixプログラミング教室 : 404 Blog Not Found

                                            2008年05月18日11:00 カテゴリ書評/画評/品評iTech 教科書として書かれた一冊- 書評 - 例解Unixプログラミング教室 著者より献本御礼。 例解Unixプログラミング教室 冨永和人 / 権藤克彦 内容が「Unix/Linuxプログラミング 理論と実践」のだけど、こちらはこちらで良著。「Unix/Linuxプログラミング 理論と実践」がクックブック的なら、こちらは「リャマ本」的な一冊となっている。 本書「例解Unixプログラミング教室」は、UnixプログラムをCで書くための教科書を目指して書かれた一冊。 目次 - 例解UNIXプログラミング教室 - 書籍紹介【和書】 Pearson Education Japanより。 第1章 C の復習(1):マニュアルの読み方,エラー処理,構造体,共用体 第2章 C の復習(2):ポインタ,バイトオーダ,複雑な型 第3章 低水準入出力

                                              教科書として書かれた一冊- 書評 - 例解Unixプログラミング教室 : 404 Blog Not Found
                                            • Scheme:使いたい人のための継続入門

                                              使いたい人のための継続入門継続渡し形式call/ccは普通の関数call-with系関数call-with-procedurecall-with-continuation-procedurecall-with-current-continuation評価順序と継続call/ccパズルお手元マルチスレッド部分継続reset/pcとcall/pc環境破壊と部分継続部分継続の使用法PRINT-AND-NEXT-REPL議論質問お手元マルチスレッドのサンプルプログラムについて 使いたい人のための継続入門 とりあえず殴り書き。 くどかったり冗長な文章になってたり、重複してたり、間違ってたり、 おおいなる勘違いをしてたり、恥をカいてたりするかもしれないけどご愛敬。 藁をもつかみたい気持ちで継続を使えるようになりたい人は読んでみてください。 ただし所詮は藁です。(w 継続渡し形式 例によって階乗fa

                                              • 標準Cライブラリ - Wikipedia

                                                診断機能 assert.h[編集] ヘッダ assert.h がインクルードされる時点における NDEBUG マクロの定義状態により、実行時診断機能の有効・無効を切り替えることができる。 assert — NDEBUG マクロが定義されていない場合に実行時診断を行う。 C11で、翻訳時に確定する式を対象にアサーションする static_assert が追加された。 複素数 complex.h[編集] 複素数の演算、虚数単位の定義、実部と虚部の分離機能などが含まれている。 complex — 複素数型 I — 虚数単位 cabs — 絶対値 carg — 偏角 cacos — 逆余弦 cacosh — 逆双曲線余弦 casin — 逆正弦 casinh — 逆双曲線正弦 catan — 逆正接 catanh — 逆双曲線正接 ccos — 余弦 ccosh — 双曲線余弦 cexp — 指数

                                                • 第19章 スレッド

                                                  rubyスレッド スレッドは「みんな一斉に動く」というのが建前だが、実際には少しの時間ず つ順番に動いているわけだ。厳密に言えばマルチCPUのマシンでそれなりに工 夫すれば同時に二つ動いたりもできるが、それでもCPUの数以上のスレッドが あればやはり順番に動かなければならない。 つまりスレッドを作り出すためにはどこかで誰かがスレッドを切り替えてやら ないといけないわけだが、その手法には大きく分けて二種類ある。 カーネルレベルスレッドと ユーザレベルスレッドだ。これはどちらも読んで字の如く、ス レッドというものをカーネルで作るかユーザレベルで作るかという違いである。 カーネルレベルならマルチCPUを生かして複数のスレッドを同時に動かしたり もできる。 ではrubyのスレッドはどうなのかと言えば、これはユーザレベルスレッドで ある。 そして(それゆえ)同時に動けるスレッドは厳密にただ一つと制限

                                                  • RubyKaigi2017参加レポート(全日分)とスライドまとめ - ZOZO TECH BLOG

                                                    こんにちは、VASILYのバックエンドエンジニアの塩崎です。 9/17〜9/20にかけて広島で開催されたRubyKaigi2017に、VASILYから4人が参加しました。 3日間で約50個の講演があり、参加者も数百人を超えるであろう大変大規模なカンファレンスでした。 たくさんの講演の中で、VASILYのエンジニアが興味を持ったものを、この記事でいくつか紹介いたします。 The many faces of module Ruby Lauguage Server Ruby and Distributed Storage System Progress of Ruby/Numo: Numerical Computing for Ruby Improve extension API: C++ as better language for extension An introduction and

                                                      RubyKaigi2017参加レポート(全日分)とスライドまとめ - ZOZO TECH BLOG
                                                    • WasmLinux: LinuxカーネルをWebAssemblyにする

                                                      LinuxカーネルがWebブラウザで動いたらどう考えても面白い んだけど、そこに至るまではなかなか難しい道のりになる。その第一歩として、Linuxカーネルのユーザーランド版であるLKL( https://github.com/lkl/linux )をWebAssemblyにコンパイルして、wasm2cでC言語に変換した上、Visual Studio 2022でコンパイルしてWindows上で実行してみた。 まだWebブラウザでは動いていないが、思ったよりは簡単にWasmに移植できた(個人の感想です) ウケが良ければMUSL libc移植編 → デバイスドライバ活用編 → Webブラウザ上動作編と続ける感じで。。 EDIT: Visual Studioのスクリーンショットを撮りなおし。 memory-control はanonymousなmapしか救えないので、ここ数年スパンではエミュレーシ

                                                        WasmLinux: LinuxカーネルをWebAssemblyにする
                                                      • BusyBox

                                                        About About BusyBox BusyBox in VM Screenshot Announcements Documentation FAQ Command Help Get BusyBox Download Source Download Binaries License Products Development Browse Source Source Control Mailing Lists Bug Tracking Use less RAM Contributing Links Related Sites Tiny Utilities Sponsors Developer Pages Rob Bernhard Denys - resume - kernel inlines - kernel size - mboot - linld - init must die -

                                                        • Coro::Intro和訳 - Logical and Creative i18n

                                                          ちょっと波に乗り遅れた感じもしていますが,Coroの5.2もリリースされたことだし,今まで勉強してきたことの復習も兼ね, Coro::Introを訳してみる. http://search.cpan.org/~mlehmann/Coro-5.2/Coro/Intro.pod 訳やそもそもの理解が間違っていたら是非コメントとかで教えてくださいm(__)m どうでもいいけどマジでインデントがスペース3つだ...w Coroの紹介 これはCoroとCoroのサブモジュールの重要な機能について紹介するチュートリアルです. まず基本的なコンセプトを紹介し,その後にそれらの簡単な使い方を紹介します. Coroって何? Coroは初期の段階ではコルーチン*1と呼ばれるファーストクラスの継続の特定の要件を実装したシンプルなモジュールとして作られ始めた. これは基本的には,現在の実行ポイントを保ったまま他のポ

                                                          • 詳解UNIXプログラミング 第3版 | 翔泳社

                                                            UNIXと真剣に関わる人のための重要な1冊 UNIXシステムの標準Cライブラリが提供するシステムコールをはじめ、膨大な関数について詳細に解説し、「UNIXでプログラミングを行う者すべてが読むべき1冊。読んでないヤツはモグリだ」とまで言わしめたUNIXプログラマ必読の書籍です。 もちろん非プログラマにとっても、UNIXという環境や仕組みを、その“考え方”のレベルから説き起こし豊富な演習問題で理解させてくれる、名実ともに剛毅な大著です。これまで日本語で読めたのは1992年に刊行された原書初版でしたが、本書は最新版(第3版)を翻訳したものです。訳者はその初版から携わっていた大木敦雄先生です。 【注意:本書第1刷は原書のエラータサイト(http://www.apuebook.com/errata3e.html)のうち、第17項までを取り込んでいます。】 1 UNIX システムの概要 1.1 はじめ

                                                              詳解UNIXプログラミング 第3版 | 翔泳社
                                                            • Lisp500

                                                              [up] | news license installation usage bugs features Is your program large and complex? Are you tired of Greenspunning? Now, in only 500 lines, here we have an informally-specified bug-ridden implementation of Common Lisp, ready to meet your needs. -- Christophe Rhodes Lisp500 is a 500-line implementation of an informally specified dialect of Lisp. It attempts to be not too bug-ridden. Unfortunate

                                                              • Scheme:使いたい人のための継続入門

                                                                使いたい人のための継続入門継続渡し形式call/ccは普通の関数call-with系関数call-with-procedurecall-with-continuation-procedurecall-with-current-continuation評価順序と継続call/ccパズルお手元マルチスレッド部分継続reset/pcとcall/pc環境破壊と部分継続部分継続の使用法PRINT-AND-NEXT-REPL議論質問お手元マルチスレッドのサンプルプログラムについて 使いたい人のための継続入門 とりあえず殴り書き。 くどかったり冗長な文章になってたり、重複してたり、間違ってたり、 おおいなる勘違いをしてたり、恥をカいてたりするかもしれないけどご愛敬。 藁をもつかみたい気持ちで継続を使えるようになりたい人は読んでみてください。 ただし所詮は藁です。(w 継続渡し形式 例によって階乗fact

                                                                  Scheme:使いたい人のための継続入門
                                                                • 継続 - Wikipedia

                                                                  のようになる[3]。この式はすなわち、値 v を引数に取り、それに4を足した値を返す関数である。実際、この後 (+ 1 2) の計算結果が v に代入されて、4を足した値が最終的に計算結果が求められるため、この関数は確かに (+ 1 2) を評価する段階での「残りの計算」の表現である。 call/cc[編集] Schemeの call-with-current-continuation (call/cc と省略される) は、その時点での継続を引数として関数を呼び出す手続きである。Schemeの言語仕様書(R7RS[4])には「もっとも単純な例」として次のコードが載っている: このコードは、真正な(終端が空リストである)リストが渡された際にはそのリストの要素数を数えて返し、そうでない場合はfalse値を返す。 goto文を持つ言語の意味論[編集] 継続の概念はgoto文を持つ言語に意味論を与

                                                                  • mruby を Linux カーネル内で動作させる(2017 ver) : DSAS開発者の部屋

                                                                    このエントリは KLab Advent Calendar 2017(兼 mruby Advent Calendar 2017)の 12 日目の記事です。 今年は(前半は)Keepalived にフルタイムでコントリビュートしていたり(後半は)ひたすら mruby をいじっていたりと、実に OSS 充な一年だった @pandax381 です。 タイトルにある試みについては、2015 年の時点で東京大学の品川先生が「mruby を Linux カーネル内で動作させる」という素晴らしい記事を書かれていて、Kernel module に組み込んだ mruby が動作することを実証されています。 mruby をカーネル内で動作させるために大きく問題となるのが、浮動小数点演算です。mruby は Float を標準的なクラスとして提供していると共に VM 内部でも浮動小数点演算を行っている一方で、Ke

                                                                      mruby を Linux カーネル内で動作させる(2017 ver) : DSAS開発者の部屋
                                                                    • Ruby 3.2.0dev にマージされた Rust YJIT をビルドする - koicの日記

                                                                      YJIT の Rust 実装がマージされました。いまのところ今年の Shopify からの代表作ではと見ています (YJIT 自体は Ruby 3.1 で C 実装導入されている機能です) 。 github.com そういうわけで、現在の Ruby 3.2.0dev で YJIT を有効にする場合は、Rust の処理系 (1.60.0 1.58.1 以上) が必要になります。Rust のインストールに使う rustup については以下の公式ページなどを参照してください。 www.rust-lang.org YJIT はデフォルトではビルドされません (なので YJIT を使わないビルドであれば Rust 処理系は不要です) 。 デフォルトの YJIT なしの Ruby をビルドしている場合は --yjit オプションを渡しても、ruby: warning: Ruby was built w

                                                                        Ruby 3.2.0dev にマージされた Rust YJIT をビルドする - koicの日記
                                                                      • Manpage of GCC

                                                                        Section: GNU Tools (1) Updated: 1998/12/16 Index JM Home Page roff page 名称 gcc, g++ - GNU プロジェクト C および C++ コンパイラ (gcc-2.95.3) 書式 gcc [ option | filename ]... 注意 このマニュアルに書かれた情報は GNU C コンパイラの完全な ドキュメンテーションからの抜粋であり、オプションの意味の記述にとどめます。 このマニュアルはボランティアのメンテナンスが行なわれた時にのみ更新され るもので、常に最新の情報を示しているわけではありません。 もしこのマニュアルと実際のソフトウェアの間に矛盾点があれば、 正式なドキュメントである Info ファイルのほうを参照して下さい。 このマニュアル中の古い記述が重大な混乱や不具合をきたすことになれば、 このマ

                                                                        • Yuta Saitoさん「RubyはWebAssemblyと出会った」 〜RubyKaigi 2022 1日目キーノート | gihyo.jp

                                                                          RubyKaigi 2022 キーノートレポート Yuta Saitoさん「RubyはWebAssemblyと出会った」 〜RubyKaigi 2022 1日目キーノート 9月8日から9月10日までの3日間RubyKaigi 2022が三重県津市で開催されました。今年はRubyKaigi 2019以来、3年ぶりの現地開催で非常に盛り上がったカンファレンスとなりました。 初日のキーノートではRubyコミッターのYuta Saitoさんが「Ruby meets WebAssembly」というタイトルで発表しました。 Saitoさんはインターネット上では主に@kateinoigakukunという名前で活動しており、Swiftコミッターとしてもよく知られたエンジニアです。CRubyのWebAssembly移植を進め、2022年1月にRubyコミッターとなっています。今回のキーノートはCRubyのW

                                                                            Yuta Saitoさん「RubyはWebAssemblyと出会った」 〜RubyKaigi 2022 1日目キーノート | gihyo.jp
                                                                          • プログラミング言語処理

                                                                            プログラミング言語処理 講義資料 一覧 全講義資料 pdf版(version 1.1, 108ページ)は、 こちら 言語処理系とは インタプリタとコンパイラ 言語処理系の基本構成 例題:式の評価 BNFと構文木 解釈実行:インタプリター コンパイラとは ソースコード 字句解析の基礎:正規表現によるパターンマッチ 字句解析と正規表現 自動字句解析生成プログラム:lex 数式の構文解析:top-down parserの作り方 構文規則 top-down parser の作り方 構文解析の基礎 top-down parserとbottom-up parser 上向き構文解析と還元 演算子順位構文解析法 LR構文解析法 構文解析生成プログラムyacc tiny Cについて tiny Cの言語仕様 tiny Cの文法 ソースコード tiny C 処理系のデータ構造 構文木(AST)のデータ構造 AS

                                                                            • Announcing WASIX · Blog · Wasmer

                                                                              Back to articlesAnnouncing WASIXWASIX extends the WASI proposal to build useful and productive applications today with full POSIX compatibility Today we are very excited to launch a new initiative that will start shaping the future of WebAssembly on both the browser and the server. WASI was announced about 4 years ago and was a great push to move the Wasm community forward. It got everyone so exci

                                                                                Announcing WASIX · Blog · Wasmer
                                                                              • いやなブログ - RAII と setjmp/longjmp

                                                                                RAII と setjmp/longjmp C++ には RAII (Resource Acquisition Is Initialization) というイディオムがあります。これはリソースの開放を確実に行うためのテクニックとして C++ のプログラムで広く用いられています。しかし、RAII も setjmp/longjmp という落とし穴があります。 RAIIの基本 次のプログラムはメモリリークを起こします。 #include <string> using namespace std; int main() { string *p = new string; return 0; } このプログラムをビルドして valgrind でテストすると次のようなエラーメッセージが表示されます。4バイトのメモリリークが検出されました。 % g++ test.cc % valgrind ./a.ou

                                                                                • 空想具現化プログラミング [Lua] スタックレスってどういうこと?

                                                                                  管理人(はむ!)は最近スクリプト言語Lua(るぁ)に入れ込んでいます。と思ったら「ARカプセル」とかやってます。 ※iPhoneの方は右上の「PC」ボタンでPC用表示のほうが良いと思います。 eguoさんの日記(無断でアンテナ捕捉させて頂いてます m(_ _;m )でstackless pythonに触れているのを見て、そういえばスタックレスって何だっけな、と思って再度調査。まとめることにしました。 MLなどを見ていると、Lua5.0(5.1)はスタックレス(stackless)であるそうです。Lua4.0はスタックレスではなく、Lua5.0でコルーチンを実装するためにスタックレスにしたのだそうな。参考までに、pythonは公式のものはスタックレスではなく、傍流であるstackless pythonはその名の通りスタックレスのようです。 そんでそんで、スタックレスって結局何よ、というわけで