Programmer's Note

コード読み書きの備忘録。

vimrcメモ(clojure用plugin設定)

vim

vimrcメモ。 Clojureのための設定も追加。 set nocompatible set runtimepath^=~/.vim/bundle/neobundle.vim/ call neobundle#begin(expand('~/.vim/bundle/')) NeoBundleFetch 'Shougo/neobundle.vim' NeoBundle 'guns/vim-clojure-static' NeoBundle 'kien…

Clojureメモ: loopとrecur

プログラミングClojureに乗っていた例を写経実行したメモ。 関数を使わずに、再帰的にループするやり方。 (println (loop [result [] x 5] (if (zero? x) result (recur (conj result x) (dec x))))) 実行結果: [5 4 3 2 1] ループ分の構造としては (loop […

Clojureメモ: 無名関数

「プログラミングClojure」で出てきたサンプル。 user=> (filter (fn [w] (> (count w) 2)) (str/split "A fine day" #"\W+")) ("fine" "day") filter関数は、 (filter pred coll) コレクションcollの各要素に対して、条件をチェックする関数predを適応して…

Clojureメモ: 遅延評価

さて、(for ...)はシーケンスを生成して返すが、これは遅延評価されるので、実際に使用されるまではシーケンスは生成されない。 REPL環境だと入力した式がその場で評価されるので、これが遅延評価されるものとは気づかない。 user=> (for [x (range 1 3)] (p…

Clojureを遊ぶ:括弧とか

「プログラミングClojure」で出てきたforループのサンプル。 (defn indexed [coll] (map vector (iterate inc 0) coll)) (defn index-filter [pred coll] (when pred (for [[idx elt] (indexed coll) :when (pred elt)] idx))) 実行結果: (index-filter #{\…

Clojureメモ:forを使う(その2)

まずは、2次元配列的なものを作ってみる。 user=> (def aa [[1 \a] [2 \b]]) #'user/aa user=> aa [[1 \a] [2 \b]] これを、一個ずつ取り出してみる。 user=> (for [x aa] (println x)) [1 a] [2 b] (nil nil) で、上記[1 a]、[2 b]の第1要素だけをとりた…

Clojureメモ:forを使う

Clojureを始めて1週間ちょいといったところか。 とりあえず本を読んでいる、ちょくちょく試してみている感じ。 ループのまわし方とかも、手続き型プログラミングと勝手が違って戸惑う。 ※Clojureのforは命令型言語のforループとは違うらしい。(リスト内包表…

Clojureメモ:文字列分割

「プログラミングClojure」を読んでClojureを学んでいる。 正直、この本は入門者向けではない…。著者の気持ちが先走りすぎている。 いやいや、面白いのは分かるけど、もうちょっと落ち着いて教えてくれよ。という感じだ。 まあ謎解きしながら読むのも面白い…

Clojureを遊ぶ:リストとマクロ

「7つの言語7つの世界」 を読んでClojureを始めた。 まったく思考がLISPerになってなく、すらすらプログラムが組める状態ではない。が、実に面白い。 Clojureの強力な点は、コレクションに対する操作を、非常に簡潔に書けるところだ。 まずはリスト。 リス…

マコネル本の読書

遅ればせながら、最近やっとCode Completeを読んだ。まだ上巻を読了したばかりだが、この本がこんなに面白いとは思わなかった。ずいぶん前に買って積んでいたが、言わば食わず嫌いだったな。なぜかって一言で言えばMicrosoft Pressだから。 この本は名著とも…

sicpの導入部

MITのプログラミングの授業で使われていた伝説的な教科書、「Structure and Interpretation of Computer Programs」、略してsicpを読み始めた。 いわゆるプログラミングの古典的名著として数えられ、「ハッカーと画家」のポール・グレアムもAmazonレビューで…

vimrcメモ

vim

vimrcメモ。 プラグインも色々入れていたが、使用頻度が低いので思い切って削って、とりあえず必要最小限のものだけを残してみた。 運用していくうちにまた増えたりするかもしれんが。 だいたいがネットで検索した設定をコピペして、ミックスした感じだが。 …

yacc を遊ぶ:パーサーの動き確認

「THE UNIX PROGRAMMING ENVIRONMENT」のチャプター8のhocをサンプルに、yaccのパースの動きを確かめてみる。 この本では、hoc4でパーサーからインタプリタコードを生成するステップに移るが、 生成すべきコードとの結びつきがイマイチ想像できんかったから…

「The UNIX Programming Environment」読了

「The UNIX Programming Environment」読了。1月からコツコツ読んで足がけ4ヶ月。正確には第9章を残しているが、第9章はtroffの紹介で、これはまあ気が向いたら読めばよいかなと思っている。文章整形は1980年代からはもはや隔世の感がありすぎる。恐らく今後…

ハッカーと画家: 言語の力

ちょっと衝撃を受けた。 昨日読み始めたポール・グレアムの「ハッカーと画家」、これはすごい本だ。 結構前に、Matzさんの以下の記事で知ったのだが、 まつもとゆきひろのハッカーズライフ:第3回 ハッカーと仕事 (2/2) - ITmedia エンタープライズ ずっとブ…

Joel on Software読み始める

最近 Joel on Software を読み始めた。 以前、書店でぱらぱら見たときは面白そうに見えなかったが、Kindleで原書のお試し版を読んでみると、楽しいではないか。とても平易な英語で読みやすい。 ということで、原書のペーパーバック古本をAmazonで購入。すこ…

awk / yacc / lex

いかん、忙しさにかまけて更新が滞っている・・・。 さて、コンスタントに読んでいる「The UNIX Programming Environment」は、第6、7章が終わり。8章に入っている。 yaccで簡易計算言語の作成だぜ。さすがはKernighanさんとPikeさん、yaccがこんな風に楽…

The UNX Programming Environment 5章、6章

The UNIX Programming Environmentも、第5章を過ぎて、第6章の「PROGRAMMING WITH STANDARD IO」の終わりに差しかかってきた。 UNIX精神というはつまり、過去の資産を最大限に活用すること、多様性を賞賛すること、なのだなと改めて読んでいて思った。この…

簡単なcalculatorコマンドを作ってみる(Ruby)

たまーにさくっと計算機欲しいときがあるけど、UNIX標準のbcってクセがありすぎて辛い。 探してもシンプルなcalculatorコマンドってないもんだなと、、、。 やりたいことは、単純で $ calc 1024*24-54 24522 0x5fca 057712 結果を、10進、16進、8進て表…

エスケープシーケンスでカーソル移動を使ってみる(Ruby)

ちょい前にエスケープシーケンスで文字装飾を試した。(エスケープシーケンスの文字装飾を試す - Programmer's Dialy) さて、今回はカーソル移動を試してみたい。 (ちょっと文字列処理が入るのでRubyで) Kernighan先生の「Software Tools」の中で、フィル…

Rubyのevalと正規表現で簡単にデータを取り込んでみる

Rubyのeval()を使ってみる。これを使えば、 ファイルから読み込んだ文字列データを、そのままRuby処理系に渡して解釈できる。 今回は、例えば適当に定義したデータ形式のファイルから、 hashテーブルとして読み込むところをやってみたい。 データは例えば下…

vimで単語の置換を一発でやる関数を作ってみる

vim

vimを使い始めて2ヶ月ちょっとか。感覚的には半年くらい使ってる気がするな。 もはや日々の仕事に欠かせないツールになっている。 プラグインの方もも欲しいと思ってたものをいくつか入れて、IDE相当なリッチな環境になってきた。 プラグインも各々使いこな…

shプログラミング覚え書き

shって使いこなせばかなり便利だな。プログラミング言語としても面白い。(※注:Bourne Shell系のshell) 「The UNIX Programming Environment」の第5章の"SHELL PROGRAMMING"を読んでいる途中だが、 いろいろおさらいしときたいTIPSがある。 とありえず手元…

Software Constructとベナー看護論

The Pragmatic Bookshelfのサイトを歩いてたら… 「達人プログラマー」のAndy HuntとDave Tomasが、IEEEに連載してたコラムの一覧が出てきた。IEEEにコラムを書いていたのか、知らんかった。 参照:The Pragmatic Bookshelf | IEEE Articles IEEEて名前だけ知…

とりあえず、目に付いた読みたい記事、本のリスト。

なんとなく面白そうなサイト: Bob Morris 書評とか載ってるっぽい Web記事: http://thinkfaster.co/2015/02/so-you-want-to-be-a-developer-rockstar The Programmer’s Price - The New Yorker 本: The Pragmatic Bookshelf | The Healthy Programmer The…

Dwarf Fortressちょっとやってみる&フォントを変えてみる

ちと電子回路系の英語本が読みたいと思って、ネットで推薦されてたGetting Start in Electronicsを探してたら、 (参照:Getting Start in Electronics) たまたまドット絵の表紙が目についた。→ Getting Started With Dwarf Fortress ぐぐると、なんだこれ…

Zork Iをプレイしてみる

なんとなく英語のテキストアドベンチャーをプレイしたくなった。 文字だけのゲームは読書の延長線上で、なんとなく面白そうだ。 テキストアドベンチャーって、いままでまったくプレイしたことはない。 コンソール機とかにも出ているが、なんか単にいくか示さ…

エスケープシーケンスの文字装飾を試す

エスケープシーケンスを試してみる。 カーソル移動も可能だが、とりあえず文字表示の装飾機能を試す。 文字装飾エスケープシーケンスは、C言語だとprintfで\x1b[制御コードmを出力すればいい。 制御コードは1〜107まであるらしい。0はリセット。 (参照:ANS…

bundleプログラム改

'The Unix Programming Environment'の第3章の「USING THE SHELL」で bundle というツールが紹介されている。 これは以下のような小さなshellスクリプトのプログラムだ。 (作ったのはAlan Hewett, James Gosling.) #bundle: group files into distributio…

Rubyでバッファリングなしのキー入力を試す

Rubyでバッファリングなしのキー入力読み込みを試す。 普通の標準入力の getc を使った場合は、 入力された文字はターミナルに出力されつつ、バッファリングされて、 Enterが押されて初めて文字列がプログラムに送られる。 例: ソース: t_getc.rb while c =…