2015年3月2日

アンダースタンディングコンピュテーションの感想の続き3

表示的意味論が意味不明
全く意味がわからん
頭の切り替えが全然ついていかない

スモールステップ意味論の感想としては、まず思ったのがなんでこんな回りくどい方法をするんだと思った
再帰的に処理すれば、いちいち式の簡約とかどうでもよくて、特にwhileループなんてなんじゃこりゃの見本みたいでしたけど、解説を読んでよくわかった
スタックを消費しないで実行しようと思うとスモールステップ意味論が最適なんだなと

逆にビッグステップ意味論は馴染み深いと言うか、好みにあっていると思った
やっぱり再帰的に物事を処理するっていうのは直感的にわかりやすいんじゃないかな
しかし、このように理解できるのも関数型言語のOCaml、Haskellで再帰脳を鍛えた賜物かもしれないしね
関数型を訓練する以前だったらビッグステップ意味論の方が理解できなかったかもしれない
でも簡約と言われれば直感的に再帰で処理したくなるような気がするけど
ビッグステップ意味論を実装するときは、まあそうだろうなと納得して実装できた気がします

で、締めの部分で登場したパーサについてですけど、このあたりのパーサとは無縁のCommon Lispっていうのの素晴らしさ、演算子の優先順位的な話もちらっとありましたがこの辺りに対するLispの優位性って本当に素晴らしい
この辺りのことでどうこうしなくていいS式こそ人類の至宝と言ってもいいのではないでしょうか

2015年2月25日

ポール・グレハムの気持ちが

微かに、僅かに、微塵ほど、分かる気がする
defunとかdefmacroとかの理解がいわゆる「関数定義」や「マクロ定義」程度で終わっていると本当にもったいない気がする
もっともっと勉強したほうがいいかもしれない
Common Lispは知れば知るほどその恐ろしいほどの奥深さに戸惑うとともにいままで使ってきた他のプログラミング言語の威力の弱さに驚く
たしかダグ・ホイトだったと思うけど、Lisp以外の言語はLispの機能を削ぎ落したものだと、ある言語はLispのこれを取り除いたもの、別の言語はこの機能を取り除いた、とかそんなようなこと言ってた気がするけど、本当そのとおりだわ
びっくりする
少しづつだけどLisp勉強してよかったと思うよ
こんな素晴らしい言語を使って仕事ができたらなんて素敵なことだろうと思うけどlet over lambdaのキャッチじゃないけどこんなことやっているプログラマってホント何百人に一人とかそんなレベルなんじゃないのかな
頭のなかでこんなことできればいいのにというアイデアが形にできそう、できる言語って他にあるか
否、ない、Common Lispこそ唯一の頂点だと思う
素晴らしい
(読み返してみるとlisp信者丸出しでキモいことこの上ないですね)

アンダースタンディングコンピュテーションの感想の続き2

スモールステップ意味論ひと通り実装してみても結局なにが言いたいか理解できたのが30%くらいかな
少しづつ、一歩づつ評価を繰り返して小さくしていくということが言いたいのか
確かに最後のwhileの繰り返しは少しだけ思っていたことと違うと言うか繰り返しってもっとあっさりと実装できるかと思っていたら意外と手間がかかっていると言うか

まあなんにしても結局普通の会社や仕事ではなんの役にも立たない、こんなことやってるよりもググってコピペでプログラム作ってはいできましたって人のほうが役に立つと思われるんだろうけどさ
さもできる風に装っておいてどっかから拾ってきたプログラムを貼り付けてごちゃごちゃやってごまかしている人たちには無縁の話だろうな

アンダースタンディングコンピュテーションの感想の続き

足し算、掛け算演算を実装して、改めて実感できたことはやっぱり中置記法のアホさというか前後置記法の素晴らしさが際立っておりますね
演算子の優先順位とか結合法則なんて話を複雑にするだけで何一つ良いことないのになんでこんなアホな記法が世に蔓延っているのかまったく理解不能
演算子の左右にしか、しかも左右両方に対象を配置しなければ演算子として成立しないなんて本当にアホ丸出し
せっかく偉大なヤン・ウカシェヴィチが発見してくれたものを生かせない人類ってなんてアホの集まりなんでしょうか
大体さ、式なんて正確に記述できるかどうかだけが重要でさ、記述しやすければもうなんでもいいような気がするのだけど
本当、心の底から思うのだけど優先順位とか結合法則とか余計なもの持ちだして、人類はアホの集まりだからただでさえ悪い頭を余計なことに費やしてさらに悪くしているってなんてアホな集団なんでしょうか
ジョン・マッカーシー、ヤン・ウカシェヴィチこそが人類の希望だったと断言できる

2015年2月24日

アンダースタンディングコンピュテーションを読んで

アンダースタンディングコンピュテーションを読んで早速感化されてcommon lispでsimpleを実装してみました

githubで公開しております

https://github.com/andomasaharu/simple

しかし、この本を読んでいる人って日本に何人くらいいるのだろうか
オライリーで売れた数とかわかるのかしら
出版物だと印税の関係でどれだけ売れたか正確に把握する必要があると思うのだけど公表はされないだろうな

「スモールステップ意味論」と翻訳されておりますが実際、原始的と言うか単純な言語を実装してみてつくづくコンパイラの有り難みが身にしみてわかった気がしますね

やっぱり改めてですけどCommon Lispは偉大だなと思った
って言うかやっぱり中置演算うざいよ
ポーランド記法最高と再認識できたことが良かったです、とりあえず
Lispの文法って圧倒的に偉大だよな

2015年2月23日

CLOSについて

もちろん:accessorで生成される関数も多態させられるんだな
やっぱりもちろんだよね、当たり前だよね
:accessorが多態させられなかったとしたらとんでもないことだよな
CLOSってなんなんだよって感じになっちゃうもんね

ドット対って「.」の左右にスペースが必要なんだと今更知りました
ごめんなさい、もっと勉強します

2015年2月22日

CLOSを使った感想

defmethodと組み合わせると多態性が表現できて素晴らしい
いまのところ継承とか登場しないから快適
多態性のみ利用できるので素晴らしい


make-instance 〜〜って言うのがイチイチ面倒だからインスタンス生成の補助関数が必須か
って言うかいわゆるメンバ変数の参照が本当に面倒だ
いわゆるメンバ関数の呼び出しもグローバルな関数呼び出しだから
オブジェクト->メンバ
的な呼び出し方ができるといいのに
リードマクロでやるなら
(#@インスタンス->アクセサ)
とかになるんでしょうか
幸いCommon Lisp使っているので、マクロでなんとかできないもんかね
普通の人(OOPは実装の継承とカプセル化がすべてだと思っている、世の多数派のこと)がCLOSのdefclassとdefmethod見たらなんじゃこりゃって思うだろうな
Common Lispでカプセル化だったら高階関数使ったほうが圧倒的に便利だろうし


CLOSで多態させたときのデバッグと言うかどのdefmethodが呼ばれてエラーになっているか分かりづらかった印象がある
これはCLISPのデバッガの使い方がイマイチわかっていないところが大きな原因だと思うけど



まあでも不満点はIDE的なサポートがあれば別にどうってことないような
インスタンスから呼び出せるdefmethodリストも列挙するのは簡単だろうし
VC++のように背後でコンパイラが動きまくってdefmethodされているオブジェクトのテーブルでも作っていま記述しているインスタンスから呼び出されるであろう関数のリストを作るのは容易にできそう


defmethodのいいところは、特定のクラスで判別して呼び出す関数を振り分けられるのと合わせてhaskellのガードのotherwise的なその他を設定できるところだな
この動作は素晴らしいとしか言いようがないです
c#では真似のできない芸当、本当に素晴らしい
defmethod作った人は本当に頭がいい人なんだろうなと思う

2015年2月3日

common lispをどうやっているか

hyper spec参照
めちゃくちゃ充実しているリファレンス
(microsoft系の人へ:msdnなみの充実度)

clispのreplでお試し
hyper spec参照してそれを試す
引数の順番とかすぐ忘れるから

実践common lispで勉強
入門に向いていると思う

land of lispは指向が違うかな
プログラミンが好きになるためのとっかかりや、他の言語やっていてcommon lispスゲーってなるためには向いているかもしれませんが入門には向いていないかも
いわゆる「common lispにしかできないこと」が書いてある感じ
だから事前に他の言語を知っておいた方が楽しめる本だと思う

on lispでモチベーションアップ
これを読むと、とりあえずマクロが作ってみたくなる
けど、実用的なマクロは作れない
マクロも実践common lispのマクロの方が理解しやすいものが多いと思う
って言うかこれを読むためにはcommon lispがそれなりに使いこなせないと理解するのはなかなか難しいと思う

let over lambdaで混乱する
on lispより強烈な本

armでなにかcommon lispがまともに動かせるといいな




なにに使っているか
プログラミングコンテスト系の問題を解くためのみ

使い心地は?
IOがないならHaskellの方がいいかな
HaskellはIOがあると大変苦労するので
(問題の回答とIOで半々くらいの時間を使うので)

2015年1月19日

昨日YSP天白へMT-07の試乗にいきました

曇時々晴
とても丁寧な対応でした
素晴らしいお店、皆さんもお気軽に訪問してみてください
昨日は真冬の寒さにもかかわらず非常にたくさんの人が訪れておりました
実物のMT-07を間近で見たのは初めて
サイズは思っていた通りの印象
大型に属しますが車体サイズは中型に分類されてもいいのではないでしょうか
(下記印象について補足
筆者は現在WR250Xに乗っています
ですので下記は基本的にWR250Xとの比較と思ってください)
まず引きお越し、サイドスタンドを払う際に少し起こしましたが見た目よりも軽い感じがしました
ハンドル位置も適度に高いので引き回しもあまり苦にならない印象を受けました
乗車姿勢ですが、MT-07のステップは足の真下にあります
真下と言うのはシートに座って足を素直に引き上げたらステップに足が乗せられるという場所です
ネットの記事でよく見かける足つき性の良さについては少し疑問です
シート、タンクは足つき性を考慮されていると感じましたが、そのまま足を付こうとするとステップがじゃまです
ステップが真下にあるので走行中の乗車姿勢は非常に自然なのですが、その自然さの犠牲として停車時の足つき性が悪化していると思います
まあ、バイクは走行中の姿勢の方が圧倒的に重要なのでこの点は許容すべき点だと思います
ハンドル位置については上体が適度に寝る印象でしょうか
起きているわけでもなく、かといって寝すぎているわけでもない印象
シートについてですが、一番印象的だったのがシートです
とにかく「久しぶりにシート座った」と思いました
WR250Xのはあれは一体なんなんでしょうか
エンジンの印象は適度なドコドコ感があっていい味だしているといった感じです
走りだしは非常にスムーズMTと言っているだけあって低回転から適度にトルクが出ていると思います
四気筒と違ってもっとクセがあるかと思ったらそうでもない感じがしましたが、ゼロ発進は少し慣れが必要に感じました
乗車姿勢は比較的楽な姿勢を取ることができます
ですので高速道路などは少し辛いかもしれません
低い速度行で風を受けながら走ることを狙っている感じですね
かっ飛ばすバイクでもないですからね
かっ飛ばすことが目的ならMT-07は初めから対象にならないと思いますから
そんなにスピードを出していないのですが、街乗りは非常に乗りやすいバイクだと思います
軽い、低回転トルクの出方この二点はいいですね
曲がり方は交差点を二、三曲がっただけですがもっとピーキーな曲がり方をするかと思ったらこちらも滑らかな味付けになっていると感じました
WR250Xがピーキーすぎるので普通の人にはMT-07もピーキーに感じるかもしれません
曲がり始めにフロントサスがすごく沈む印象がありました
ターンインの際にすこしフロントブレーキをかけましたがそれに反応してグっとフロントが沈むのを感じました
それに比べてリアの方はそんなに沈むとか動く感じを受けませんでした
フロントが動く動作がお好みならオススメですがフロントが暴れていると感じるなら不快に思う動きです
あとはブレーキが安心できるような印象
ブレーキ効くなって感じ
せっかくなのでついでにMT-09も試乗させてもらいました
こちらもよく記事などで「07と09は別物」みたいなものを見かけて「本当か?」と疑問に思うと思うんですよ
一緒なんじゃないのってどうせエンジン違うだけでほとんど一緒じゃないのかと思うんですけど乗ってみたらびっくりするくらい違っていましたね
ホンダのみたいにカウルつけただけやちょっと見た目を変えましたみたいなものじゃなくてかなり性質が違う、狙っている層が違うと思います
MT-09は全然レーシーな感じMT-07は、まあ普通に「スポーツ」を狙っている感じなんですけどMT-09は明らかにスポーツは狙っていなくて「サーキットやレース」を意識している感じがしました
SSっぽい、いわゆるストリートファイター系ですかね
SSはいやだけどレーシーを求めている人にはばっちりだと思います
逆にスポーツやツーリング派はMT-09は過激に感じるだろうな
MT-09はステップがかなりバックステップ
バックでアップなステップでした
ハンドルも少しだけですが低く感じるので姿勢ははっきりうつ伏せ状態ですね
MT-09は見た目をもっと激しくレースに寄せてもいいくらいな印象を与えてもいいのではないかと思います
MT-07は見た目のとおりと言えばそうなるかな
あんな見た目で乗り味もそんな感じですよね
で、結局なんですけど試乗してみて後悔したというか買い換えたくなくなってきたと言いましょうか
WR250Xの良さを改めて認識できたというかWR250Xがとにかく良く出来すぎているんじゃないかなと
違うバイクを乗る度に思うんですけどWR250Xって相当良いバイクなんだなと
本当にすごい性能、エンジンも足回りも車体も全て良い
唯一ダメだと思うのは、エンジンに対してフロントブレーキが効かないところかな
あとは何と言っても圧倒的にチューブタイヤってところが曲者だよね
難点欠点
チューブタイヤって何一つ良いことがないんじゃないかな
オフロード走る場合は岩があったりなんだかんだいってもいろいろあってのオフロードって感じがしますがオンロードでチューブの必要性が全くないですよね
本当に百害あって一利なし
ハブが使いまわせるだけか
チューブタイヤのバイクには二度と乗りたくないと言うことが分かってまあ良かったというかこの世にチューブレスタイヤがあって良かったと思えるところかな

pitftが映らなくなった

raspbianをアップデートしたりファームウェアをアップデートしたらpitftが光るだけで映らなくなりました
再度設定を行うシェルスクリプトを実行したら無事映るようになりました

2015年1月18日

raspberry piでhaskell

せっかくraspberry piを購入したので利用しています
主な用途がlinux環境として利用しています
haskellやlispを動かす環境として利用していますがlispはclispが調子悪いしsbclも動きが悪いしでちょっと困っています
arm環境での動作は基本的にイマイチなのかな
なんか「ghci 7.4.2 is finally working on arm」って言うエントリーがあるのですがraspberry piで動かないのよね
ghciが使えないとちょっと不便なのでhugsを入れてみたらこれまた微妙に古いしghciに比べて使い辛い感じがします
arm環境でうまいことhaskellを実行する方法はなにかないものだろうか

2014年12月21日

Haskellリンク

https://www.haskell.org/hoogle/

https://hackage.haskell.org/


2014年11月10日

素晴らしいバイク屋さんです

http://baikukoubou.jimdo.com/

ヤマハのWR250Xに乗っています
岐阜の方を走っていた時に、パンク、釘を拾ってしまいましてタイヤがベコベコになってしまった時に修理してもらったバイク屋さんです
チューブタイヤの修理も快く引き受けていただき大変助かりました
本当にどうしようかと途方に暮れていましたが、不幸中の幸いと言いましょうか、こういうことはご縁と言うのでしょうな
ありがとうございます

2014年9月27日

raspberry pi

http://www.raspberrypi.org/

初期設定
ユーザー名:pi
パスワード:raspberry

Raspbianをインストール
インストールしている時に言語とキーボードを選択
ターミナルで文字化けするのでEnglish(US)を選択

パスワード変更

sudo apt-get update
sudo apt-get upgrade

カメラモジュールをインストールする
sudo raspi-config

固定IPアドレス
sudo nano /etc/network/interfaces
iface eth0 inet static
address [設定したい固定IPアドレス]
netmask [サブネットマスク]
gateway [デフォルトゲートウェイのIPアドレス]

pitft
https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/easy-install

SSHで接続

RPi.GPIO
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio

vim

CLISP

Haskell

sudo apt-get install hugs

Erlang

OCaml

エミュ

fbterm

w3m

smbfs

イメージバックアップ
Win32 Disk Imagerを利用する

runhaskell
rehash
ghc ––interactive
where runhaskell might be runhugs, runghc or runnhc
as パターン
xs@(y : ys)

ML

2014年9月11日

CodeIQ解答できた

数日前、一週間前くらいだったけかな
なんか解けそうで解けない問題があって、問題の雰囲気も面白そうなのでしばらく考えてあれこれ思考していましたが、その日や次の日はまったく解決に至らなかった問題があって、他の問題に手を出したりしていたらすっかりそのことを忘れていて、今日、面白そうな問題ないかと出題を眺めていたら「こんなのあったなー」って「とちゅうで投げ出していたな」と思いちょっと考えてみたけどやっぱりダメで、前はどこまでやったっけかなとか思い返してトイレ行ったりお茶飲んだりしていたらひらめきましたね
この瞬間がなんともいえない瞬間ですよね
色々とあーでもないこーでもないとこねくり回していた量の1/10程度の労力で解けた
やっぱりアルゴリズムの力は偉大だな
力技で解答しようなんて野蛮だよな

2014年6月18日

マクロマクロマクロ、そしてマクロ

とにかくマクロに興味がある
LET OVER LAMBDAのdefmacro/g!やdefmacro!ってなんてスゴイんだろう
スゴすぎて頭がクラクラしてくる
いままで書いてきたプログラムって一体なんだったんだろうかと無力感にさいなまれるといっても過言ではないと思えるほどの内容だ
文章のなかで何回もふれられているけどマクロって言っても要は関数なんだと
別に普通にあるプログラムが実行されているだけなのだけど、その実行されているプログラムも別にたいしたことない数行にしかならない極短いプログラムなのに内容の濃さ、密度の異常さと言ったらこれに匹敵するようなプログラムはC++以外では見たことないような気がするな
C++って言ってもテンプレートでのことだからどっちにしてもマクロ
とにかくマクロマクロマクロ
「マクロ」と書いてくれるプログラムを書くプログラムとでも言えばいいのだろうか

ゲーデル、エッシャー、バッハで触れられている、というか全体のテーマとなっている自己言及に通じるものがあるマクロ
ホフスタッターもきっとマクロがお好みのはずだろうな
プログラムを書くプログラムなんて自己言及以外のなにものでもない
絶対あの亀がプログラムを書くならCommon Lisp以外選択することはありえないだろうな

LET OVER LAMBDA

この本を読むと常に疑問がわいてくるのだけど、果たしてここまでのことを実際にやっている開発の現場ってこの世に存在するのだろうかと
空想世界のようなオトギバナシの世界のような現実離れしたお話を読んでいるようだ
例えば落語の時そばなんか聞いているとワザワザ一文ちょろまかすために屋台でそばを食べようとすることに似ているような
だけど屋台でそばを食べるということは全く現実的な行動だと思うようにプログラムを書くと言う行為もまた現実にあるわけなんだけど、gensymを書く手間を減らすためにdefmacro/g!なんてわざわざ定義するようなことがこの世のどこかでおこなわれているのだろうかと考えてしまう
すごく不思議だ
もし、そんな世界がこの世に実際に存在しているのなら是非死ぬまでにこの目で見てみたいものだし、実際にそんな現場に参加させてもらえたらと思う

しかしこの本を読むと本当に0.01%に相当するプログラマの頂点に到達できるのだろうか
って言うかこの本を読んでいる人が全プログラマ人口に対する0.01%の存在なのではないのだろうか
0.01%って言うと一万人に一人ってことだから、とりあえず日本に何人くらいプログラミングを仕事にしているかわからないけど数十万人、PHPやiphone系の人達も数えてさらにJavaScriptでスライドやらなんやらやってる人達も入れると百万人くらい居そうだけど百万人居たとして0.01%って言うと100人か
って言うか日本でLET OVER LAMBDA読んでる人は100人
百部、ひゃくぶしか売れない本って一体どんな本だよ
そんな本、どっかの学会とかの本当に本当の専門誌というか月刊ガソリンスタンドの方がよっぽど発行部数多そうだな
内容が内容だけに百部って言うのも案外近い数字だったりして

2014年4月23日

ドメイン特化言語2

って言うか、ほとんどコンパイラの話みたいだな
コンパイラの本を読んでいるようだ
DSLって要は自分用の小規模の言語を作ることだから、コンパイラ的な話になっても当然と言うか必然なんだな
小規模簡易言語設計手法の話だから難しいのは当たり前か

2014年4月18日

読書感想:JavaScriptで学ぶ関数型プログラミング

この本の内容のような話題は大変興味深く、読んでいてもこんなことできたら面白いだろうなとなんか勝手にむずむずしてくるような内容でした
実際にこの内容を活かせることができるかどうかは分からないけどやりたいと思っていればそのうちできるようになりそう

特にカリー化と部分適用が面白かったな
意味というかもっと根本的なところでの理解の助けになったと思います

なんか久しぶりに本を読んで面白かったと思えたな
なんか最近読書が義務のような感じになってきていてイヤイヤ無理やり詰め込みで読んでる傾向にあったのだけどやっぱり新しい知識を得ることは素晴らしいことだと思えたことが素晴らしかったです
またこんな体験がしてみたいので読書を続けようと思います

ドメイン特化言語

読書記録

第10章まで読んだ

基本的に意味分からないです
セマンティックモデルがなんなのかいまいちピンと来ません
なんのことなのでしょうか

DSLって主にコード生成のことだと思ってたけど、内部DSLって言うのがあるんだなというのが感想
DSLについて考えるきっかけになったので、とにかくプログラムを書くんじゃなくて他になにかできることがあるんじゃないかと思うきっかけになったと思いますが自分の技術として物にできるかというと難しいですね