2016-01-01から1年間の記事一覧

簡易回転計算

その昔、高校の先輩が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つの回…

「ゲーム性」という語の(もしかしたら最古の)用例

ここにスキャンして載せたのは、「物理の散歩道」シリーズという単行本のタイトルで知られる、『自然』誌の「ロゲルギスト」による連載エッセイの一部で、同誌19巻6号(1964年6月号)「コントロールを楽しむゲーム」、筆者はロゲルギスト I2(今井功先生)か…

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

これはハードコピーを見せたほうがインパクトがある、だろうと判断して持っていったところ、興味を持っていただけたのですが、.@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メディア: 単行本(ソフトカバー)この商品を含むブログを見る こちらの本を先日買いました。我々計算機屋などが煙に巻かれがちな哲学のキーワ…