タグ

計算機科学に関するrryuのブックマーク (33)

  • 「強いメモリモデル」と「弱いメモリモデル」 - yamasaのネタ帳

    Apple M1についての面白い記事を見かけて、久しぶりにメモリモデル屋(?)の血が騒いだのでブログを書く。 note.com 強いメモリモデル 現代のCPUアーキテクチャでは、x86(64bit, 32bitどちらも)が「強いメモリモデル」を採用しており、それ以外のメジャーなCPUが「弱いメモリモデル」を採用している。この「強いメモリモデル」「弱いメモリモデル」について、まずおさらいしておこう。 以下のように、2つの変数a, bに対して異なるCPUコアが同時にアクセスしたとする。 int a = 0; int b = 0; CPU1: a = 1; b = 1; CPU2: int r1 = b; int r2 = a; (上記はC言語に似た疑似コードを用いているが、実際は機械語命令になっていると考えてほしい。つまり、CPU1は変数a, bの示すメモリアドレスに対するストア命令を実行して

    「強いメモリモデル」と「弱いメモリモデル」 - yamasaのネタ帳
    rryu
    rryu 2020/11/30
    時々見かける書いた順序で命令が実行されなくて動かないというやつ、x86-64では動いていたというやつだったのだろうか。
  • PHPのround関数とは一体なんだったのか - hnwの日記

    (7/3 14:05追記)Javaに関する記述について誤認があったので盛大に書き換えました。Java 6、Java 7、Java 8それぞれで実装が変わっていたようです。 (7/13 23:55追記)記事中ではroundを四捨五入と言い切ってしまっています。これは筆者がC99のroundを基準に考えているためですが、言語によっては偶数丸めになっているround関数も珍しくありません。ご注意ください。 PHPのround関数について、ネット上で次のような記述を見つけました。 PHP 四捨五入の計算を間違える唯一の言語として畏れられていましたが、そのバグは治っているかもしれません(治ってないかもしれません) 主要なプログラミング言語8種をぐったり解説 - 鍋あり谷あり 各言語を面白おかしく紹介する内容とはいえ、ずいぶん雑な理解だなーという印象です。ゆるふわな話だけでPHPがdisられ続けるの

    PHPのround関数とは一体なんだったのか - hnwの日記
    rryu
    rryu 2016/07/03
    真値から近似値への丸めが最近値丸めだと真値よりも大きな値になることがあるという罠に人類は弱い……
  • シンボリック実行に入門しようとした | 一生あとで読んでろ

    はじめにシンボリック実行(symbolic execution)という用語をセキュリティ系の論文でよく見かけるようになった.ここでは,シンボリック実行の基礎となる理論を辿る.筆者はソフトウェアテストの研究には疎く,おそらく稿には若干以上の誤謬と誤解が含まれているだろう.ぜひ識者の教示を乞いたい. 発祥シンボリック実行は主にソフトウェアテストの領域で古くから研究されてきたトピックである.シンボリック実行という用語の初出は遡ること38年前,James C. KingらによるSymbolic Execution and Program Testing [PDF]という論文だ.Dijkstraがgoto文の濫用による大域脱出を批判したのが1968年であり,Guarded Command Languageを提案したのが1975年のことである.この論文が発表された1976年当時はまさに構造化プログラ

    rryu
    rryu 2014/09/29
    『具体値を与えないまま,必ず1つの実行経路を通る制約(path constraints)を求め,条件分岐に影響する入力値の制約を特定する手法がシンボリック実行である』
  • 「Oracleを教えているのよ」: 週記

    研究への予算配分の話が出るたびに、日でやらなくとも各国の成果が論文として公開されるのだから、それを読めばいいじゃないか、日は基礎研究に金など出さなくていいのだ、という意見をよく目にする。私は自分の体験から、そうは思えない。 大学院生だった頃、ICPC(国際大学対抗プログラミングコンテスト)の代表選手たちが国外に向かうとき、コーチとして付いていったことがある。暇な時間には他の大学のコーチたち(多くは、計算機科学を受け持つ教授であり、院生は珍しかった)と話していたのだが、ある国の国立大学の講師の人との会話が軽く衝撃だった。 彼女はcomputer scienceのlecturerと名乗った。学生たちのコーチを務めるには数日の間選手に同行せねばならず、まぁ非常勤講師ということはあるまい。セオリー通り、私はこう切り出した。「何の研究をされてるんですか?」「? ああ、Oracleを教えてるのよ」

    rryu
    rryu 2014/03/20
    オラクルチューリングマシンの方のoracleは知らなかった。
  • プログラムに証明が付く日 | RANDMAX

    この記事は「Theorem Prover Advent Calendar 2013」6日目の記事です。 http://qiita.com/advent-calendar/2013/theorem_prover 神田「野らぼー」にて、地下の薄暗い店内で… 「そう言えばこないだ隣で起こってたポインタオーバーラン、対応大変そうだったですけどちゃんと家に帰れてたんでしょうかね、新婚なのに…」 「ヌルポとかポインタオーバーランとか、どうして無くならないんだろうね。その時はみんな手を抜いてるつもりなんて毛頭なくて、一生懸命考えて大丈夫だと思ってるはずなんだけどね。レビューもして、それでも起こった後でみんなでソース見てみると、なんで気づかなかったんだよ!ってことになる。」 「人間って、そういうの苦手なんでしょうねきっと。ほら、『何かほかにありませんか』って聞かれても出てこないじゃないですか。静的な解析っ

    プログラムに証明が付く日 | RANDMAX
    rryu
    rryu 2013/12/06
    「形式手法」でググるとこの日はすでに来ていることに気付く…
  • うっかりチューリング完全になっちゃったもの

    Accidentally Turing-Complete ― Andreas Zwinkau 来なら、チューリング完全となるべきではなかったものがある。これは、そのようなうっかりチューリング完全になってしまったものの例である。 C++テンプレート 当初はチューリング完全を目指していなかったが、C++テンプレートはチューリング完全になってしまった。その証明は、この論文にある(PDF) x86 MMU x86のpage fault handlingは、単純なマシンの実装に使える。原理としては、page faultが1 wordをスタックに積み、それによりアンダーフローを起こして別のトラップを生成する。この仕組みは、「減算して0以下ならば分岐」処理を実現する。チューリングマシンを実装するには十分である。デモ動画、講演動画 マジック・ザ・ギャザリング マジック・ザ・ギャザリングはカードゲームであ

    rryu
    rryu 2013/10/21
    うっかり八兵衛並みのうっかりさでチューリング完全になるイメージが。sendmail.cfもチューリング完全らしいし。
  • CiteSeerX

    About CiteSeerX is an evolving scientific literature digital library and search engine. @2007-2024 The Pennsylvania State University

    rryu
    rryu 2012/07/05
    構造化定理の論文。
  • はてなブログ | 無料ブログを作成しよう

    わたし的棚ぼた一万円選書 急に千葉さんに手渡された封筒、開けてみたら1万円札が1枚。何ごとかと思えば、同期の出張を代わったお礼をもらったらしい。 「葵はワンオペで育児してくれたから」と半分わけてくれました。 泡銭の1万円 これはもう、わたし的1万円選書をしろという思し召しなのでは……

    はてなブログ | 無料ブログを作成しよう
    rryu
    rryu 2011/11/11
    SICPは1、2章が人間によるプログラムの解釈の理論、4、5章が計算機によるプログラムの解釈の理論だから、1、2章を飛ばすのはどうかと思う。
  • カリー化と部分適用の違いと誤用

    kmizu @kmizu 正直に言うと、Groovy自体は別に好きでも嫌いでもないのだけど、カリー化してないのにcurryとかいうメソッド名付けてたり(標準で)、概念の無理解が目立つ部分があって、その辺がちょっと…という思いがあったり。 #scalajp #groovy 2011-09-04 19:43:37

    カリー化と部分適用の違いと誤用
    rryu
    rryu 2011/09/06
    カリー化は関数を1引数関数の形に正規化する処理と考えれば間違いずらくなると思う。
  • How to Read Floating Point Numbers Accurately

    rryu
    rryu 2011/01/13
    10進指数表記をIEEE形式に正確に変換するアルゴリズムについての解説。
  • 「SICP」の人気イラストやマンガ・画像 | pixiv

    SICPの人気イラストやマンガ、小説。260件のイラストが投稿されています。SICPの関連にらくがき、漫画、LISP、lisp、などがあります。

    「SICP」の人気イラストやマンガ・画像 | pixiv
    rryu
    rryu 2010/09/30
    SICPまんが、ですと!?
  • 翻訳:コンビネータ論理チュートリアル

    このページは、Combinatory Logic Tutorialの翻訳です。 http://homepages.nyu.edu/~cb125/Lambda/ski.html的に超訳です。 訳の正しさは全く保証されません。 訳のおかしい部分は多数あります。 翻訳元サイトの許可を取ったりはしていません。 無認可です。 訳者による前書きと感想コンビネータ論理チュートリアル 訳者による前書きと感想 訳してみたものの、ちょっと、たったこれだけの説明では、はじめてコンビネータ論理を知った人が読んで充分に理解できるとは思えない。 どうも、この文書は、原文の上位ディレクトリにあるLambda tutorialを読んだ後に読むべきものっぽいようだ。 しかし、流石にこっちまで訳す気力は無い。 そういう訳で、これだけを読むよりは、Unlambdaのチュートリアルを読んだ方がずっと、コンビネータ論理を理解

    rryu
    rryu 2010/07/25
    訳した人の感想通り、さすがにこれだけではちょっと。
  • NYU

    Women's basketball Wins NCAA Division III National Championship!

    rryu
    rryu 2010/07/25
    lamda式の簡約(reduction)について。
  • Combinatory logic - Wikipedia

    Combinatory logic is a notation to eliminate the need for quantified variables in mathematical logic. It was introduced by Moses Schönfinkel[1] and Haskell Curry,[2] and has more recently been used in computer science as a theoretical model of computation and also as a basis for the design of functional programming languages. It is based on combinators, which were introduced by Schönfinkel in 1920

  • Combinator Birds

    ((S(K((S((SK)K))(K((S(K(S((SK)K))))K)))))((S(K((S(K((S(KS))K)))((S(KS))K))))((S(K(S((SK)K))))K)))

  • SKK Openlab - SKK = I

    SKK の名前を考えたときに Combinatory Logic での有名な等式 SKK = I が念頭にあったのは事実です.ずい分昔に Henk Barendregt さんにこの話をしたこともありました.Combinatory Logic は一般にはあまり知られていないので簡単に紹介をしてみます. Combinatory Logic は,λ計算と同様,すべての項 (term, 計算機の言葉で言えば,プログラムに相当するもの)が関数であるような体系である.Logic という名前がついているのは,その上に論理を展開することを目的としていたからであるが,論理の体系としては成功しなかった.しかし,λ計算と密接な関係があることから,計算の体系としては重要なものである. Combinatory Logic の項 (combinator) は以下の文法規則で定義される. 項 ::= 変数 | 定数 |

    rryu
    rryu 2009/06/10
    SKKの名前の元ネタがコンビネータだったとは。
  • combinator - Nobuhisa's diary

    コンビネータとは自由変数を含まないλ項のことをいいますが、Yコンビネータ以外あまり取り上げられていない気がするのですが、これも100年に1度の金融危機の影響かとか、WBC楽しみですねだとか、そういえば今年雪祭り行けなかったんですよとか、最近携帯変えましたとか色々あるのですが、自分の練習もかねて、そんなコンビネータ達と戯れたいと思います。 沢山ある! Y以外にも広く知られている(?)コンビネータはいっぱいあるようですが、その中からいくつか。 I ≡ λx.x K ≡ (λx.(λy.x)) //以下、簡単に λx y.x と書きます F ≡ λx y.y M ≡ λx.xx S ≡ λx y z.xz(yz) B ≡ λx y z.x(yz) C ≡ λx y z.xzy L ≡ λx y.x(yy) Y ≡ (λx.xx)(λx.xx) (SLL) (当てるアルファベットが違うのはたまに見

    combinator - Nobuhisa's diary
    rryu
    rryu 2009/06/09
    種類だけではなく役割も書いてほしげ。
  • Don'tStopMusic - メソッドの出口はひとつがいいのか , AdSense がたまに中国語な件

    _ [Ruby] メソッドの出口はひとつがいいのか Ruby初心者スレッド Part 10 と Ruby初心者スレッド Part 11 でメソッドの出口はひとつにしたほうが良いか?という話題が出ています。 結論としては、不用意に call/cc を使ったり例外以外に例外処理を使ったりせず、またメソッドのやる仕事が適切であるならば、読みやすさのために出口を複数にしても良いと思います。また、「出口はひとつ」は「そうできる」といっているだけで、「そうしなければならない」ということではありません。 メソッドの出口が複数であることを気にするよりも前に、メソッドが長すぎないか、条件分岐が不適切で流れがわかりにくくなっていないか、メソッドとして抽出できる部分が存在しないか、ローカル変数がその役割を把握できる名前になっているかなどを気にするべきです。また、例外やガード節を導入すると大抵出口が複数になりま

    rryu
    rryu 2009/06/06
    構造化定理(structure theorem)の「適性プログラム(proper program)」の定義について。
  • はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記

    全体目次: 第1歩:しりとりの圏 (このエントリー) 第2歩:行列の圏 第3歩:極端な圏達 第4歩:部分圏 第5歩:変換キューの圏 第6歩:有限変換キューと半圏 第7歩:アミダの圏 第8歩:順序集合の埋め込み表現 第9歩:基に戻って、圏論感覚を養うハナシとか 付録/番外など: 中間付録A:絵を描いてみた 番外:同期/非同期の結合 中間付録B:アミダとブレイド 番外:米田の補題に向けてのオシャベリ 一部のプログラミング言語の背景として、圏論(カテゴリー論)が使われたりするせいか、以前に比べれば多少は圏論に興味を持つ人が増えたような気がしなくもないような。でも、安直な入門的文書はあまり見かけないですね。もちろん、シッカリした教科書や論説はあるんですが、どうもシッカリし過ぎているような。例えば、圏の例として「コンパクト・ハウスドルフ空間と連続写像の圏」とか言われてもねぇ(この例はいい例なんです

    はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記
  • なぜポイントフリースタイル = コンビネータが重要なのか - 言語ゲーム

    「Joy: Forth の関数なイトコ」 http://d.hatena.ne.jp/propella/20070517/p1 をちゃんとアップしてからとも思ったんだけど、書く勢いが無くなる前に書きます。私が http://www.latrobe.edu.au/philosophy/phimvt/joy/forth-joy.html を読んで超感動したのは最後の Joy Algebra の章です。なぜ感動したかと言うと、メタファを適切に選ぶ事によってこんなに話が単純になるのか!という事を思い知らされたからです。そして、コンビネータがどれだけこれからのプログラミングで重要になるか確信が持てたからです。順を追ってのちゃんとした説明は、もうちょっと勉強してからじゃないと書けないけど、頭の中にある気持ちだけ書きます。 25年前に私がプログラミングを始めた頃、マイコンハッカーは機械語で書いていました

    なぜポイントフリースタイル = コンビネータが重要なのか - 言語ゲーム