【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

割り算

Alphaには除算命令がありません。インタプリタ側で計算することで実装は回避しましたが、どうやって実装するのか気になりました。最初は10進数に引っ張られて小難しく考えていたのですが、2進数で考えると、除数をシフトしながら被除数を引いていけば良いと気付きました。ちゃんとした解説は機会を改めることにして、自分用のメモ(これはひどい)を残しておきます。

     _____________
10110) 1011010110
       10110→

コードは以下です。自分が書いたコードなのに、見ても上のイメージは思い浮かびません。そういった溝を埋めることは可能かどうか、いずれ取り組みたいテーマです。

コンパイラを作ってみて

コンパイラ開発(id:n7shi:20090310)を通して物の見方がどう変わったかについて書いてみます。一般的な見解(と私が認識しているもの)、私の見解(過去・現在)などの視点が入り乱れるため、箇条書きを中心に記述します。何かを主張しようとしているわけではないので、特に結論のようなものはないことを、あらかじめ断っておきます。

【追記】私が作成したコンパイラSilverlight上で動作確認できます。 ⇒ id:n7shi:20090727

続きを読む

入出力の自動生成

アセンブラと逆アセンブラは別々に作りますが、そのような一つの仕様に対して反対の動作をするものを、仕様から両方同時に生成できれば便利だと思いました。

背景にある考え方として、抽象度を高めて行けば設計と実装が統合できるのではないか、というものがあります。この辺のアイデアを自由に実験するには、既存の言語のコードを自動生成するのではなく、自前でコンパイルまでするべきだという考えに傾いています。そのため当面はコンパイラ作りに重点を置こうかと思います。冒頭のアイデアも、コンパイラ作りでアセンブラと逆アセンブラが必要になったことと関係しています。

コードのリッチテキスト化

テキストエディタでコードを打ち込むのは嫌いなので、あまりプログラミングを楽しむということがありません。いつまでこんな旧態依然とした状態が続くのでしょうか。画期的な言語と言われても「所詮はプレーンテキスト」と思ってしまいます。かと言って完全にフローやUMLだけでコーディングするわけにもいきません。後者に可能性を賭けたいと思ったこともありますが、現状との溝が埋まらないまま打開できずに来ました。

完全に図形化するのは棚に上げて、もっと現実的な方法はないでしょうか。

続きを読む

方向性

やりたいことが一杯あります。一気に出来ないので小出しにしていましたが、散発的になってまとまりがなくなりました。お手上げです。

ここで整理するとか絞るとか考えるのが普通ですが、それをやったら負けのような気がします。どうしたものでしょうか。

続きを読む