このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

講座

モジュール

import, require, use, include, load, consult / export, define, provide, advertise など、言葉は多様。あんまり気にしてもしょうがない。適当に使い分けたり使い分けなかったり。 プログラム構成素を保存しておく場所=ファイルとディレクトリ(ファイル…

モジュール

古い話 JS:JSANモジュールシステムを使おう - 檜山正幸のキマイラ飼育記 JSAN vs. Dojo (モジュールシステム) - 檜山正幸のキマイラ飼育記 JSAN vs. Dojo:文化的背景、志向性 - 檜山正幸のキマイラ飼育記 比較的最近の話 node.js: モジュールの使い方 -…

構文解析

なにはともあれ構文木構造が基本、これを想定しないとはじまらない。 構文解析に都合がいいように構文を決める → ポーランド記法、逆ポーランド記法 人が手書きするには再帰降下法が一番楽。 先読みと戻し(pushback, unput)できるバッファはあったほうがい…

プログラミング言語では制御とデータ構造が大事

現在は、整数値だけをデータとしているが、これでは足りないのは明らか。では、どうしたら、ふだん使っているようなデータ構造を実現できるのだろうか?これがかんがえるべきこと。以下、前回のコピー: 「くくる/囲む/名付ける」をサポートすれば図示は有…

制御フローと基本的技法

制御フローは3種しかない。(難しい並列の話をしても4種。) 言葉/言い方は色々あるが、then, or, repeat くくる、囲む 名付けること 付けた名前で呼ぶこと ソフトウェアの歴史で最大の発明 コピーとシェア、シェア=リユース インライン展開とアンローリン…

問題集

与えられた数nからのカウントダウン(表示する) 絶対値を求める 2つの数の大きいほう(厳密には小さくないほう) 3つの数のなかで一番大きい数 n個の数 x1, x2, ..., xn のなかで一番大きい数 最大公約数 最小公倍数 素数判定 素数列挙

小さなプログラミング処理系を作る 機能追加

VMないしはそのUIの機能: 無限走行しないように、リミットを設ける。指定した数のインストラクションを実行したら止まるか、ダイアログを出して聞く。 外部IO。IOポートを設けて、プリント命令(インストラクション)を追加。プリント命令の仕様は考える。 …

小さなプログラミング処理系を作る 言語処理系と周辺ツールへ

まず、 抽象的と具体的、自分の日本語が変で困った - 檜山正幸のキマイラ飼育記 抽象度が足りないと苦労する - 檜山正幸のキマイラ飼育記 すべて具体的に考えよ。できるだけ抽象的に考えよ。抽象的なことも具体的に考えよ。日本語が変なのは承知だが、そうと…

小さなプログラミング処理系を作る インストラクションセット

「オペランド」より「パラメータ」がふさわしいような気がするんで、replaceした。演算の対象物がオペランドで、その意味ではスタック上に載っているデータがオペランドとも言える。 最小限備えるべきインストラクションは、綴りも含めて決めておこう。スタ…

小さなプログラミング処理系を作る

参考: http://d.hatena.ne.jp/m-hiyama/20060711/1152581558 極小なプログラミング言語 http://d.hatena.ne.jp/m-hiyama/20060712/1152667443 あなたの「極小なプログラミング言語」は? http://d.hatena.ne.jp/m-hiyama/20091125/1259117461 JavaScriptで…

タートルグラフィックス 3

童心に戻って、楽しくお絵描き。(事情があって、今日は時間がない)

タートルグラフィックス 2

関数型と手続き型が混じったようなプログラミングが出来て楽しい。楽しさを味わうために、forEach, fold, mapReduceと似たような制御用高階関数を準備しよう。 repeatEach(配列, 最初にやる関数, 毎回やる関数, 最後にやる関数) 「最後にやる関数」は省略可…

タートルグラフィックス

参考サイト: http://ja.wikipedia.org/wiki/LOGO http://www.calormen.com/logo/ http://gihyo.jp/dev/serial/01/enjoy-pg/0003 モナドのサンプルとして:http://d.hatena.ne.jp/m-hiyama/20090804/1249357682 http://d.hatena.ne.jp/m-hiyama-memo/2009080…

Logo in JS

http://www.calormen.com/logo/

自由に考えて自由に試す

リスト処理は定番のデータ構造とアルゴリズムだが、それでも色々な自由度がある。ライブラリとして、どのような関数・メソッドを準備するか? ミュータブルかイミュータブルか? nilをどう扱うか? などなど。既存ライブラリでは、Underscore.js(それと互換…

リスト構造とリスト処理

なぜ、リストの自作は良い練習問題なのか? 典型的なデータ構造とメモリーイメージに慣れる。 ポインタ・参照の操作に習熟できる。 再帰処理が理解できる。 データのミュータビリティ、破壊的変更(上書き)と非破壊的操作(修正しながら転写)を理解できる…

JavaScriptのクラスもどきと、図形のアフィン変換ライブラリ (3)

次がわかればJavaScriptは理解できたことになる。 すべてが Subject-Property-Value 構造。変数、名前、プロパティ、インデックスなどが事実上同じであることを理解する。同じメカニズムに異なる用語を使うのは習慣に過ぎない。 「オブジェクト、Object、obj…

JavaScriptのクラスもどきと、図形のアフィン変換ライブラリ (2)

関数 /* -*- coding: utf-8 -*- */ /* kk.js */ function f1(n) { return (n + 1); } var f2 = function(n) { return (n + 1); } function f3(n) { this.result = n + 1; return this.result; } function f4(n) { this.result = n + 1; } function f5(n) { t…

JavaScriptのクラスもどきと、図形のアフィン変換ライブラリ

継承の話: http://d.hatena.ne.jp/m-hiyama/archive?word=%D3%AE%C6%FD%CE%E0 「哺乳類」で検索 動物→哺乳類→犬 のような例え話は嫌い。「関係ない」というか誤解する事のほうが多いだろう。説明によく使っている例は図形。 http://d.hatena.ne.jp/m-hiyama…

JSONとAjax

JSONは、基本的なスカラー型(null, boolean, number, stringの4種)データと、配列(リスト)、オブジェクト(ハッシュマップ)により構成される複合データだけをサポート。ハイパーリンクハイパーリンクはサポートできてない(しようとしたがうまくいって…

グラフアルゴリズム

http://d.hatena.ne.jp/m-hiyama/20121003/1349230179 有向グラフを表現するデータ形式について http://d.hatena.ne.jp/m-hiyama/20120412/1334193542 すごいグラフ処理ライブラリNetworkXの使い方

JavaScriptで契約駆動プログラミング

http://d.hatena.ne.jp/m-hiyama/20050927/1127790808 JS番外編:これって、アスペクト指向かぁ http://d.hatena.ne.jp/m-hiyama/20080718/1216370414 JavaScript用のアサーションを作ってみる http://d.hatena.ne.jp/m-hiyama/20120406/1333681648 ソフトウ…

簡単なプログラミング言語の構文処理

http://d.hatena.ne.jp/m-hiyama/20060712/1152667443 あなたの「極小なプログラミング言語」は? http://d.hatena.ne.jp/m-hiyama/20091209/1260343463 JavaScriptで言語処理系の勉強をしましょう:構文解析準備編

逆ポーランド仮想マシン

http://d.hatena.ne.jp/m-hiyama/20091125/1259117461 JavaScriptで仮想機械の勉強をしましょう

JavaScriptのモジュールシステム

http://d.hatena.ne.jp/m-hiyama/20120814/1344916537 JavaScriptで少数の大域的名前だけを定義したいとき http://d.hatena.ne.jp/m-hiyama/20120725/1343175517 大域名前空間を汚しまくっているJavaScriptライブラリを単一名前空間に押し込める方法

LOGOのタートルグラフィックス

http://d.hatena.ne.jp/m-hiyama/20090804/1249357682 モナドのサンプルに、JavaScriptで簡易タートル・グラフィックスとか作ってみた

Lisp, LOGO, Prolog, Haskell etc. のリスト処理

図形のアフィン変換ライブラリ

http://d.hatena.ne.jp/m-hiyama/20090616/1245117533 アフィン変換なんて簡単だ http://d.hatena.ne.jp/m-hiyama/20090617/1245210412 アフィン幾何とアフィン変換の補足 http://d.hatena.ne.jp/m-hiyama/20051017/1129510043 プログラマのためのJavaScript…

JSON仕様と、Ajax

JSONサイト: http://www.json.org/ 構文の定義: http://tools.ietf.org/html/rfc4627 ちなみにCSV: http://tools.ietf.org/html/rfc4180 JSOView:https://addons.mozilla.org/ja/firefox/addon/jsonview/ http://d.hatena.ne.jp/m-hiyama/20080728/12172…

DOM操作

HTMLを手で編集してはリロード作業との対比をすれば、以外にDOM操作もわかるみたい。バッドノウハウのinnerHTMLとかは分かりやすい。さすがだ(なにが?)createElementとかが、作ってどこにも入ってない(配置されてない)という概念が少し難しいかも知れな…