読者です 読者をやめる 読者になる 読者になる

SICPと、6.001の話

調べていたところ、「弱LisperがMITでSICP(シクピー)を受講した結果」( http://qiita.com/kaz-yos/items/d1ecd4bfe9989c290e99 )というQiita記事を見つけたのでリンクしておきます。噂の(?)SICPを懐かしむチューターたちによって実施されている特別授業に…

ARMの設計(デザイン)

Oral History of Sophie Wilson( http://www.computerhistory.org/collections/catalog/102746190 )から、ARMの設計(デザイン)に関することのメモ(主に、6502との関係について) ARM以前のほとんどのマシンで6502を使用しており、6502での経験はあった …

Rubyスクリプト中からアセンブラを呼んでアセンブルして .so 作って動的ロードして実行するサンプル

Rubyスクリプト中からアセンブラを呼んでアセンブルして .so 作って動的ロードして実行するサンプル

Macr055発表の反省

プロシンでいただいたコメントとかに対するメモ 再帰的なマクロの例が欲しい (言い訳: 「マクロに展開されるマクロ」がちゃんと再帰的に扱えれば、あとはそのマクロが自分自身でも同じことだ、と思っていたのですが)質疑応答のかなり最後のほうで、「再帰…

簡易回転計算

その昔、高校の先輩が8ビットマシンで背景が回転するゲームを作るにあたり、sinθ=1/8、cosθ=127/128として、Z80の機械語でいとも簡単に回転行列の計算をしてしまっていたのを見て、この人には追い着けないなあ、と感じたものです。どうやったらこんなの思…

process reaperの実験

procctlという、プロセスの属性の一部を制御するAPIはFreeBSD 10で追加されたものですが、10.2 でそれに reaper facility と呼ばれている機能が追加されました。基本的な機能性はLinuxを参考に(Linuxでは prctl(2) というAPIです)、APIの設計はDragonflyBS…

総和の計算は、なぜどのように難しいのか

プログラミング入門で、forループを使う例題としてよく出てきたりするように、総和計算は一見簡単そうですが、実はどのように難しいのか、という点を書いてみます。まず、対象が整数であれば、大きな問題はありません。昔のようにintが16ビットの場合は、160…

Ruby 2.4 の新機能, Array#sum

Ruby 2.4 で追加されている新機能のひとつに Array#sum があります。(参: ドキュメントは http://ruby-doc.org/core-2.4.0_rc1/Array.html#method-i-sum )共立『アルゴリズム辞典』でも「総和計算」を立項しているように、情報落ち*1*2による「積み残し」…

拡張ライブラリでキーワード引数を処理する定番プラクティス(ベストじゃないかも)

ruby 2.4 リリースおめでとうございます。つい先日まで「拡張モジュール」と「拡張ライブラリ」の、どちらの呼称がobsoletedなのかいまいちはっきり認識していなかったきしもとです(ClassクラスのスーパークラスであるModuleのほうのモジュールがあるので、…

移植性が(ほとんど)あり性能問題が無い(かもしれない)、負の値に対応した算術右シフトのCコード

普通は、自分のマシンでどのようなコードが生成されるかを確認して、うまくいっていればそれで良しとする所ですが、右シフトは凝ったコードを書こうとするCプログラマにとって悩みの種です。しかし、手元の環境( FreeBSD clang version 3.4.1 )で、次のよ…

SICP的な状態を共有する複数のクロージャをJavaScriptでどう書くか

某展示会の学術系ブースで、このようなSICP的な状態を共有する複数のクロージャをJavaScriptで書きたいわけだが、"use strict" var [getVal, setVal] = (function () { var v return [function () { return v }, function (new_v) { v = new_v }] })() setVa…

「Trusting Trust」攻撃に対抗する

シュナイアーさんによるblogエントリ( https://www.schneier.com/blog/archives/2006/01/countering_trus.html )は、もう10年も前ですので、その世界では特に新しい話題というわけではないようですが、私が知ったのは今年のはじめのことでしたので*1、この…

POSIXとのつきあいかた

コンピュータ関係の技術的なものや技術的でないもの(標準規格とかいったようなものの半分は技術仕様ですが、もう半分は業界政治で出来ていると言えるでしょう)との「つきあいかた」にはいろいろあります。私のこれまでの経験などから、POSIXとのつきあいか…

numo-lapack というブロジェクトを作りました(始めました)

numo-lapack というブロジェクトを作りました(始めました)。 https://github.com/metanest/numo-lapack Numo::Linalg( https://github.com/ruby-numo/linalg )からのフォークをベースに、column-major ←→ row-major 相互の変換をライブラリ側では行わな…

同名だが(違う場所にあって)異なるダイナミックリンク(共有)ライブラリの問題(適切な解決法を求む)

FreeBSDにおいて、プログラムの起動時に次のようなエラーで起動に失敗することがあります。/lib/libgcc_s.so.1: version GCC_4.6.0 required by /usr/local/lib/gcc48/libgfortran.so.3 not found(GCC に gcc-4.8 を使っている場合)原因は、libgcc_s.so.1 …

「ISLISPを使うべきでないたった1つの理由」に関して

「ISLISPを使うべきでないたった1つの理由」( http://d.hatena.ne.jp/Isuzu_T/20130623/1372003378 )が誤解している点について、簡単にまとめておこうと思います。 要点 上記はてなダイアリーから引用しますが、 マクロは,実行準備時に展開される,いかな…

crubyのFloatにFast inverse square rootを(モンキーパッチで)追加する話

Fast inverse square root自体については「30のプログラミング言語でFast inverse square rootを実装してみました!」( http://itchyny.hatenablog.com/entry/2016/07/25/100000 )を参照してください。せっかくの高速な手法ですから、高速な実装を考えてみ…

4004のブートストラップキャパシタ

この記事で言及する「ブートストラップ」は、電気(電子)回路の技法のそれであり、コンピュータの電源投入時やリセット時などの起動シーケンスのことではありません。 (回路技法の)ブートストラップとは 既にご存じの方は飛ばしてください。以下の2つの回…

情報処理学会発足の頃の話

これはハードコピーを見せたほうがインパクトがある、だろうと判断して持っていったところ、興味を持っていただけたのですが、.@ksmakoto さんからこんな文献を見せていただきました。情報処理のvol1, no.1、つまり創刊号に載ってる論文。著者は、工業技術院…

Gauche の util.stream の stream-delay はなぜあるのか、どういう場合にどのように使うものなのか?

All problems in computer science can be solved by another level of indirection. (David John Wheeler)But that usually will create another problem. これは、デビッド・ホイーラーさん*1(wikipedia:デビッド・ホイーラー)による格言ですが、遅延デ…

Macr055で順列の生成

続き。 http://parametron.blogspot.jp/2015/04/christopher-stracheygpm_27.html にある、順列の生成。{m55_define|p2|$1$2$3 }{m55_dnl} {m55_define|p3|`{p2|$1|$2|$3}{p2|$1|$3|$2}'}{m55_dnl} {m55_define|p4|`{p3|$1$2|$3|$4}{p3|$1$3|$2|$4}{p3|$1$4|…

Macr055でNクイーン

前回の4クイーンを元に一般化して「マクロを生成するマクロ」によるNクイーン問題( http://parametron.blogspot.jp/2015/04/christopher-stracheygpm.html )。エスケープが妖しいことになってて、もしかしたら無駄な展開とか起きてるかもしれませんが、一…

Macr055で4クイーン

カレンダーは面倒そうな割にマクロ内で完結しなくてあまり面白くなさそうだったので、その次の http://parametron.blogspot.jp/2015/04/4.html 4クイーンから。{m55_define|1+|`{1|2|3|4|5|6|7|8|9|10| {m55_define|1|$$$1}}'}{m55_dnl} {m55_define|1-|`{-1…

Macr055でクリスマスの詩

次の http://parametron.blogspot.jp/2015/03/christopher-stracheygpm.html の記事に移って、クリスマスの詩。 "$:" が10番目の引数に置換されるようにM55を改造。文字と文字コードの相互変換は chr と ord という名前の関数とするのが定番ですが、GNU awk …

Macr055でアッカーマン関数他

次の http://parametron.blogspot.jp/2015/02/christopher-stracheygpm_22.html の記事に移って、アッカーマン関数他。アッカーマン関数{m55_define|1+|`{1|2|3|4|5|6|7|8|9|10| {m55_define|1|$$$1}}'}{m55_dnl} {m55_define|1-|`{-1|0|1|2|3|4|5|6|7|8| {m…

Macr055で二進化他

次の http://parametron.blogspot.jp/2015/02/christopher-stracheygpm_8.html の記事に移って、二進化他。二進化{m55_define|1+|`{1|2|3|4|5|6|7|8|9|10| {m55_define|1|$$$1}}'}{m55_dnl} {m55_define|1-|`{-1|0|1|2|3|4|5|6|7|8| {m55_define|-1|$$$1}}'}…

Macr055でフィボナッチ他

次の http://parametron.blogspot.jp/2015/02/christopher-stracheygpm.html の記事に移って、フィボナッチ他。フィボナッチ数{m55_define|1+|`{1|2|3|4|5|6|7|8|9|10| {m55_define|1|$$$1}}'}{m55_dnl} {m55_define|1-|`{-1|0|1|2|3|4|5|6|7|8| {m55_define…

Macr055でハノイの塔

引き続いて http://parametron.blogspot.jp/2015/01/cristopher-stracheygpm.html にある「ハノイの塔」。(ハノイの塔は高機能テキストマクロプロセッサの標準課題らしく m4 にも hanoi.m4 というテストサンプルが付いています) {m55_define|1-|`{-1|0|1|2…

Macr055で基本演算

拙作のテキストベースマクロプロセッサMacr055( https://github.com/metanest/macr055 )で、和田先生のブログにあるマクロの例題( http://parametron.blogspot.jp/search/label/Christopher StracheyのGPM )をやってみたので、情報共有などのため記録と…

『アポロ計画でプログラムコードを開発した女性エンジニア「マーガレット・ハミルトン」がソースコードの隣に立っている写真』について

「コーディング教育」とか言われるようになってきたためか、最近時々バズるこの話題について。マーガレット・ハミルトンさんが、グレース・ホッパーさんやフラン・アレンさんとともに、偉大なコンピュータ黎明期のパイオニアのお一人であることは確かですし…

チューリングマシンはどう偉大なのか、チューリングはどう偉大なのか

現代哲学キーワード (有斐閣双書キーワード)作者: 野家啓一,門脇俊介出版社/メーカー: 有斐閣発売日: 2016/01/14メディア: 単行本(ソフトカバー)この商品を含むブログを見る こちらの本を先日買いました。我々計算機屋などが煙に巻かれがちな哲学のキーワ…

OS X で NASM を使っている人は、バージョン 2.11.08 を回避してください

こちらのバグ、Bug 3392306 - Issue with relative addressing and data section ( http://bugzilla.nasm.us/show_bug.cgi?id=3392306 )のために、OS X で NASM 2.11.08 はまともに使えません。Homebrew を使っている場合は nasm21106 で 2.11.06 が入りま…

松屋ジェネレータジェネレータによる、よりカオスなメニューの生成

この記事は(略 松屋の思い出 学生時代、東小金井駅前の松屋ができる前から、武蔵小金井の松屋まで歩いて行ってはよく食べていたものでした。食券制に慣れてしまいうっかり宝華で無銭飲食(勘定忘れ)をやりかけたことが一度あります。ですが国分寺ではスタ丼…

温故知新話

この記事は Independent Advent Calendar 2015 の記事です。古い本を読んでいると、ひょんな記述に出会うことがあります。そんな話をひとつ。高橋秀俊先生編の岩波『パラメトロン計算機』という本があります( http://www.iwanami.co.jp/.BOOKS/00/7/0058200…

Rubyのファイバーは遅いか?

この記事は Independent Advent Calendar 2015 の記事です。ruby fiber で検索すると「遅い」というサジェストが出てきたりするようですが、実際にそれほど重いものでしょうか?そもそも比較対象がよくわからない点もありますが、コルーチン的な「並列には動…

マクロプロセッサ(の自作)のすすめ

「マイクロプロセッサ自作のすすめ」、ではありません(宣伝 http://tatsu-zine.com/books/fpga )この記事は Independent Advent Calendar 2015 の記事です。 前提 杉浦 K. さんによる「m4 チュートリアル」や、拙作「M4入門」といった、テキストマクロプロ…

Visulan、その可能性

この記事は Independent Advent Calendar 2015 の記事です。Visulan 自体の解説については id:dagezi さんによる「マイナー言語 Advent Calendar 2013」の参加エントリー「Visulanを実装している話」( http://dagezi.hatenablog.com/entry/2013/12/15/04042…

CSP Over NSL

この記事は HDL Advent Calendar 2015( http://qiita.com/advent-calendar/2015/hdl )の記事です。パルテノン研究会( http://www.parthenon-society.com/ )あたりに出そうかなぁと思っていたら塩漬けになってしまっていたものです(いくつか問題があるこ…

Common Lispで実装する非再帰eval

この記事はLisp Advent Calendar 2015( http://qiita.com/advent-calendar/2015/lisp )の記事です。まずそこそこの分量がありますが、コード全体を示します。 タイミングが合えばShibuya.lispで発表しようかと思っていたのですが、色々あってそのままにな…

『日本沈没』に見られる科学用語の濫用

およそ学術においては、自らの分野の専門用語を正確に使うことと同様に、慣れない他分野の専門用語を間違えて使わない注意は重要であろう。コンピュータ科学においても、近年の「学際共同」とやらで他分野にご迷惑をお掛けしていることも多々ありそうに想像…

Mechanizeを使うサンプル

シヤチハタのネーム印、既製品か特注品か500件分判断しなきゃいけないのです。 https://t.co/joQoRg3HWV ここで調べられるんだけど、こんなのいちいちやってられないから、Excelで自動で判別させる関数作ったんですよ。 んで完成して、張り切ってテストした…

Rubyの多重代入をモデル&コード化する

魔境と言われることもあるRubyの多重代入ですが、再帰的に記述すればそんなにややこしくもないのではないか、という気がしていたので、コードを書き下ろしました。 そんなに徹底的に実インタプリタの挙動をチェックしてはいないので、抜けがある可能性もあり…

縮小された影

このようなツイートがあったのですが、CMやPVで時々見掛ける映像にスパン10mぐらいの旅客機の影がゆっくり地上を移動していくシーンがある。せいぜい100m程度のグランド横断に3秒も要したら、アメリカまで4、5日もかかってしまう。続く…— sshinohe (@sshin…

学校の階段

このようなツイートがあったのですが、音ノ木坂高校って複雑な校舎の造りだな pic.twitter.com/C2MUW6Nn8O— 佐倉にーまるきゅ♪ことのぞ推しSNU団 (@sakura_dd51) 2015, 10月 11 よく見てみると、騙し絵になっているわけではなくて、たまに見るぐらいには見ら…

リテラルの意味、の話

Ruby 3.0 における immutable string literal なるものの話が出ているわけですが( http://www.atdot.net/~ko1/diary/201510.html#d5 http://d.hatena.ne.jp/ku-ma-me/20151004/p1 )、その焦点の直接の話題ではないですが、その周辺の話。いわゆる意味論の…

patchのパッチの話

次のような2つのFreeBSD SAがありました。 FreeBSD-SA-15:14.bsdpatch https://www.freebsd.org/security/advisories/FreeBSD-SA-15:14.bsdpatch.asc FreeBSD-SA-15:18.bsdpatch https://www.freebsd.org/security/advisories/FreeBSD-SA-15:18.bsdpatch.asc…

線形リストっぽい配列「Rotcev」

とりあえずGitHubに置きました( https://github.com/metanest/rotcev )。 どういうものかというと、LispやHaskellのリストのような、「先頭に追加する」という操作だけができ、可能な限りその内容は共有する、というような配列です。 先頭に要素を追加する…

「ループの検出」の木への拡張

単方向リンクトリストがループしていることを検出する巧妙なアルゴリズムとして、ポインタを2個用意し、片方をひとつずつ、もう片方はふたつずつ進めてゆき、同じノードを指すようなことが起きたらループしている、というものがあります。 これを木に対して…

実装言語と被実装言語の界面

(一応、他人のツイートを見て思いついたことなのですが、元のツイートではどちらかというとインタラクティブな環境を実現することに主眼がある感じで、ここに書く話ではそれには触れないのでそのへんは省略します) Lispの評価器(インタプリタ)をLispで書…

メモ

ダラーラ(Dallara)SF14のモノコック、エンジンマウント-コクピットシェル部分 (エコパで撮影)