ブックマーク / nowokay.hatenablog.com (8)

  • プログラムの難しさの階層 - きしだのHatena

    プログラムを理解するのは、まあ難しいです。 でも、その難しさには階層があります。 よく、変数は箱だとか箱じゃないとか議論になりますが、何人か初心者に教えた感じでは、変数自体でつまづくことはあまりないので、実際はそんな例えをしなくても「変数は変数だ」で充分だったりします。 デバッガでステップ実行しながら変数の内容を見ればいい。 で、条件分岐くらいは結構つまづくことはなくて、単純な演算と条件分岐だけが必要なプログラムであればまあそれなりに書けるようです。 ぼくも、一番最初に自分の意図で作ったプログラムは input "ワカレミチガアル。ドウスル? 1:ミギ 2:ヒダリ"; a if a = 1 then print "ガケニオチテシニマシタ" else print "ライオンニカマレテシニマシタ" みたいなものでした。こういった条件分岐をたくさん並べてアドベンチャーゲームっぽいものを作った人は

    プログラムの難しさの階層 - きしだのHatena
    vid
    vid 2014/04/28
    ステートマシンか(違
  • 組み込みソフトウェア業界というナゾの裏世界の話 - きしだのHatena

    ここまでのあらすじ 我々の住むソフトウェア業界は、SI、サービス・パッケージ、ユーザー企業という大小3つの大陸にわかれ、時々いさかいがありながらも平和に暮らしていた。 そして、我々の住む世界とは別に、同規模の技術者が暮らす、組み込み業界という世界の存在も知られていた。 組み込み業界は、存在はすることは確かなのだが技術者の姿は見えず、そのプロダクトの存在も、わかるものにしかわからないのであった。 我々は、組み込み業界と交信できる唯一の手段、C言語を使って、その世界の住人と交信するしかなかった。 しかしあるとき、FPGAという次元ホールをみつけたワカモノ達が、組み込み業界に迷い込んでしまう。ワカモノ達の前に立ちはだかる屈強な組み込み技術者。彼らの前にワカモノたちは、あるものは倒され、あるものは捕らわれ、そして、命からがら表の世界に逃れてきたワカモノも「べり・・・ろ・・ぐ・・・」というナゾの言葉

    組み込みソフトウェア業界というナゾの裏世界の話 - きしだのHatena
    vid
    vid 2014/03/15
    よかった。OS層は裏世界じゃなかったんだ。一時期FPGAに足突っ込んでたけど(w
  • JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由 - きしだのHatena

    lombokは、JavaでのアクセッサやtoString、equalsなどボイラープレートなコードをコンパイル時に生成してくれるライブラリです。 ただ、こういったコードの生成は、IDEを使えば自動で行えるので、わざわざlombokを導入するまでもないと考えることもできますが、ぼくはlombokを導入するべきだと考えて、lombokを使うようにしました。 このとき「lombokを導入するべき」と考えた理由を書いておきます。 lombokとは lombokは冒頭でも書いたように、Javaのアクセッサなどを生成してくれるライブラリです。 Project Lombok import lombok.*; @Setter @Getter @AllArgsConstructor @NoArgsConstructor @ToString public class LombokSample { privat

    JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由 - きしだのHatena
    vid
    vid 2013/07/30
  • FPGAのおすすめ教材 - きしだのHatena

    ここ最近のエントリを見て、モテたくてFPGAを触りたくなったという人もいるだろうと思います。 ただ、FPGAを触るといっても、どこから始めればいいのか、何を買えばいいかわからない人も多いのではないでしょうか。 そこで、FPGAを触るために用意するもので、おすすめのものをまとめてみます。下書きでずっと放置していたのですが、ばたばたと公開しておきます。 前提としては、今までハードウェアを触ったことのないソフトウェア技術者が、今後FPGAでデータ処理をしてモテるための準備をするということを想定してます。 「まず3万円用意します」 最初に、FPGAの評価ボードが必要です。 いろいろ安い評価ボードもありますが、ある程度最初からデバイスがついていないと楽しくないし、勉強もやりにくいです。また、その評価ボードを使ったテキストも必要になります。 そういう点で考えると、いまはDE0一択になると思います。 D

    FPGAのおすすめ教材 - きしだのHatena
    vid
    vid 2013/04/07
  • CPUはオワコン - きしだのHatena

    FPGACPUを組んでると、フェッチ部やデコーダ部で足し算や掛け算をしようとして、そんなことしたらCPUの意味ないなーと思ってしまうことがありました。 で、よく考えたら、FPGAでロジックを組むならCPUの意味はないんです。 だいたい、ひとつの処理実行するのに何クロックかかってんですか!と。 CPUでは、計算効率をよくするためにパイプラインという仕組みが使われています。 最近では、18段とかのパイプラインもあるようです。 ここで、18段のパイプラインのうち、実際に計算を行うのは2段か3段だったりします。残りの15段くらいは、命令や計算結果を読んだり書いたりしているだけです。 このパイプラインも、ほとんどはメモリの読み書き、それも命令の読み込みに多くが使われます。 であれば、CPUにしなければ、18段全部計算に使えるんじゃね?という話になりますね。 決まりきった計算を行うのに、いちいちメモ

    CPUはオワコン - きしだのHatena
    vid
    vid 2013/02/20
    FPGA 自体のクロックも結構上がってたりするってのがあるんだろうなぁ。ゲート増えたり。書き換え速度がすさまじく速くなったり。技術が進化すれば、担当範囲も都度変わるか……隔世。
  • おねえさんを組み合わせ爆発から救う:完結編おねえさんは星になった - きしだのHatena

    おねえさんを組み合わせ爆発から救うために、経路をZDDとして表したら、すっきりと経路情報が扱えました。 http://d.hatena.ne.jp/nowokay/20121018#1350528607 あとは、このZDDを効率よく構築できれば、おねえさんを救えそうです。このZDDの構築には、クヌース先生の開発したSimpathアルゴリズムを使うと非常に効率よく構築できます。 前回生成したZDDを見ると、同じノードにまとまっているものがいくつかあることがわかります。特に後半になるとどんどん同じパターンになるものがまとめられていきます。 つまり、この経路問題のZDDを構築するときには、いかに同じパターンになるものをまとめるかが鍵になるということです。 Simpathでは、辺の端だけに注目して、同じパターンになっていればそれ以降のノードを使いまわすという考え方で、ノードをまとめていきます。 つ

    おねえさんを組み合わせ爆発から救う:完結編おねえさんは星になった - きしだのHatena
    vid
    vid 2012/10/19
    おねえぇぇぇさぁぁぁぁぁぁん
  • プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな

    プログラマというのは、道具に慣れることが、実力があがることにならないのですよね。だから、勉強せず業務経験だけだとレベルが低いままということになってしまう。 Javaを10年さわり続けて、Strutsを5年さわり続けても、それだけでは、与えられた画面を手際よく作成できるようになるだけで、たとえばStrutsすらよりよく使えるようになるわけではなかったりする。 Javaにしても、「volatileってなんですか?」という問いに、まあ知らないのはしかたないとしても、解説を見ながらですら答えられない可能性がある。 プログラムの反復生産は、プログラミング能力の向上にあまりつながらない。設定や記述に慣れるだけだ。そして、この「慣れ」というのには「難しいからそもそも実装を回避する」というようなものも含まれる。実力の向上は、作業ができるレベルで止まってしまう。 プログラマとしての実力をあげるための勉強が自

    プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな
    vid
    vid 2012/10/10
  • 作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな

    さて、アルゴリズムの勉強のしかたと、ラムダ計算の勉強のしかたの目星をつけました。 アルゴリズムの勉強のしかた - きしだのはてな ラムダ計算の勉強のしかた、プログラム意味論 - きしだのはてな これでここで書いたプログラムの理論の基礎は勉強できたことになるんじゃないかと思います。 プログラムの理論とはなにか - きしだのはてな ところで、プログラムの勉強地図としてこういう図を書きました。 で、ハードウェアまわりについても、プロセッサを支える技術やネットワークはなぜつながるのかでひととおり勉強したとしましょう。 じゃあ次は、アジャイルか?テストか?UIデザインか?となるわけですが、やはりプログラマなら、プログラムの作り方や使いやすさの前に、作るプログラムの機能や性能で勝負したいじゃないですか。 いい感じに関数が分割できるよとか、読みやすい名前がつけれるよとか、効率よく仕事して定時に帰れるよと

    作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな
    vid
    vid 2011/09/28
    切り捨てられたコンパイラとかOSとかマシン語とかも十分面白いですにょ。ちょっと上げられてるものと方向が違うか(w
  • 1