私はHaskell処理系であるGHCに趣味で貢献しています。詳しいことは過去の記事を見てください:
今回は、GHCのCIの問題を追求した話をします。前に「GHCデバッグ日誌」という記事を書いたので、今回は「CI編」としました。
続きを読む自分が出している技術系同人誌の執筆の話を書いておく。
続きを読む今度の6月1日に池袋で開催される技術同人誌即売会・技術書典18に、サークル「だめぽラボ」として新刊「作ってわかるTeX言語」を出します。既刊も、在庫のあるものは頒布します。
続きを読むIntelはコンピューターの頭脳、CPUを作っている会社です。CPUで動作するプログラムを書くためには、プログラムを低レベルな命令の列に変換し、その命令の列を特定の規則に従って変換したバイナリー(機械語)を用意しなければなりません。IntelのCPUが提供する命令や機械語について、Intelが用意しているマニュアルがIntel 64 and IA-32 Architectures Software Developer’s Manual、略してIntel SDMです。
Intel SDMの最新版は「Intel® 64 and IA-32 Architectures Software Developer Manuals」から入手できます。全部合わせて5000ページ以上あります。
Intel SDMも人間が書いているマニュアルなので、時々誤植等があります。容易にそれとわかる誤植なら可愛いものですが、時にはわかりにくいものもあります。
December 2024の版における、CVTSS2SI命令の説明を見てみましょう。これは単精度浮動小数点数(Scalar Single-precision)を符号付き整数(Signed Integer)に変換する命令です。
続きを読むブログ等にちょいちょい書いていますが、私はこの数ヶ月ほどGHCのSIMDサポートの改善を進めています。
この3ヶ月間はx86 NCGで整数のSIMD演算を使えるようにするパッチを書いており、数日前にマージされました。一つのマイルストーンだと思うので記事にしておきます。
続きを読む最近、某所で「数学とプログラムはどちらが易しいか」という話題が出ました。その場ではあまり上手い返しができなかったので、ブログ記事の題材にして供養します。
もちろん、この質問の答えは人によって違うでしょうし、人によって違うからこそ質問として意味があると言えるでしょう。この記事に書くのは私の見方、私の意見です。
短い答えが欲しい人向けに2択で答えておくと「私にとってはプログラムの方が易しい」となりますが、以下に長い答えを書きます。
続きを読むTypeScriptにはneverという型があります。先日も記事にしましたが、簡単に言うとこれは「値を持たない型」です。
never型は、あらゆる型に対してその部分型として振る舞います。例えば、never
が number
の部分型であることは次のコードでわかります:
TypeScriptをはじめとするいくつかのプログラミング言語には、never型という型がある。この型は典型的には「制御を返さない関数」の返り値として使われる:
function f(x: string): never {
console.error(x);
throw new Error();
}
never型は型システム的には「値を持たない型」「任意の型の部分型」として特徴づけられる。
他のプログラミング言語、例えば私が作っているLunarMLにもnever型があると便利だろうか?
続きを読むプログラミング言語のインタプリタの説明で「逐次機械語に翻訳する」という説明を見かけることがある。ググればそういう説明がたくさん出てくるので具体例は割愛する。
しかし、「機械語に翻訳する」という説明は好意的に言えば「誤解を招く言い方」で、率直に言うと「デタラメ」である。
そういう説明を書く人は、自分でインタプリタを書いたことがあるのだろうか?誰かが書いた間違った説明文をそのまま引き写しているのだろうか?
もちろん、世の中にはJITコンパイルする言語処理系もあるが、それはインタプリタのように使えたとしても「コンパイラ」なのではないか。
続きを読む背理法による証明の例として、よく「\(\sqrt{2}\)が無理数であること」が挙がる。大まかな流れは以下の通りだ:
「\(\sqrt{2}\)が有理数だったと仮定し、\(\sqrt{2}=p/q\)(\(p\), \(q\)は互いに素)とおく。すると\(2q^2=p^2\)で、左辺が偶数なので右辺も偶数、よって\(p\)は\(p=2p’\)と書ける。すると\(q^2=2p’^2\)が得られて、\(q\)も偶数ということになる。これは『\(p\)と\(q\)は互いに素』という仮定に反する。よって、\(\sqrt{2}\)は有理数ではない(無理数である)。」
さて、数学の一部の流儀では使用する論理を制限することがある。構成的数学というのがその例で、大まかには「排中律を使わないような数学」つまり「直観主義論理に基づいた数学」が構成的数学になる(Brouwerの「直観主義」とは違うので注意されたい。あと、構成的数学の中でも選択公理をどの程度認めるかでバリエーションがあるようだ)。「\(\sqrt{2}\)が無理数である」という上記の証明は、構成的数学では受け入れられるのだろうか?
続きを読む