エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

2007-06-01から1ヶ月間の記事一覧

数学ガール

結城浩さんの数学小説。入手しました。冒頭の出会いのシーンだけでわくわくしてきます。Web版でいつも楽しませて頂いていました。一冊の書籍になり、どんな仕上がりになっているのかとても楽しみです。数学ガール (数学ガールシリーズ 1)作者: 結城浩出版社/…

printf

Haskellのライブラリリファレンスを見ていたらprintfを発見。早速試してみる。 import Text.Printf putProd :: PrintfType r => Integer -> Integer -> r putProd m n = printf "%d * %d = %d" m n (m*n) 使い方はいたって簡単なのだけれど、最後の型がよく…

前衛

仕事で。「以前の機種」という意味で「前衛機」ということばを使っているのを目にしました。違和感。 「前衛」ということば、辞書を引くと「本体の前方の守り」あるいは「(芸術で)新しい、実験的な表現方法を用いること」とあります。前衛機なら、前方を守る…

異質なC言語

その昔、行番号のない言語が異質でした。どうやって実行順序決めてるんだろう、と思った。 ある時期、Pascalが異質でした。ブロックを作るのにbegin〜endなんて。英単語が溢れている。 長い間、Perlが異質でした。数値を入れたつもりなのに文字列と連結でき…

思いやり駆動

オブラブイベントのトリを飾るライトニングトークスのベストトーカー賞を受賞した思いやり駆動開発。ハレの場から日常の開発の現場に戻ってきて、改めて相手を思いやって作業を進める大事さを実感。 さらに。ドキュメントを書くときにも思いやりを(読まれな…

DRY

DRY --- Don't Repeat Yourself. もう原則中の原則と自分では認識しているんですが、まだまだリピートしている設計やコードをいくつも見かけます。きーっ!もっとプログラミングの腕を磨けっ!…とか、声を上げたくなったり愚痴ったりしたくなるわけですが。少…

無限入れ子の値をHaskellで表現すると…

先日の問題をHaskellで表現する。 mugen_ireko = map valueAt [1..] where valueAt 1 = sqrt 2 valueAt i = sqrt $ 2 * valueAt (i-1) そのまま表現すればいいのに、なんで悩んだんだろ? Prelude> mugen_ireko !! 1000 1.9999999999999998

2007/06/26追記

コメントで教えて頂きました。あまりの稚拙なコードに書くか書くまいか迷ったんですが、書いてよかった。ありがとうございました。 mugen_ireko = tail $ iterate (sqrt.(2*)) 1 ひとつの道具に固執する罠に、まともにはまっていました。個人的にはtailがも…

自由自在

イベントは「帰郷」というテーマで開催されました。最後に「あなたにとっての帰郷とは?」という問い。だいぶ考え抜いた末出てきたのが、「コンピュータで自分の思い通りに動かす」コンピュータすげー、コンピュータおもしれー、と思ったのはこの「思い通り感…

オブラブイベント2007夏 帰郷

以前、「トラックバックするまでがイベントだ」と言われたことがありましたので、トラックバック。 そんなわけで。簡単ながらイベントの感想。 基調講演「アジャイル開発元年」 これからの価値創造の形。 このアイディアは平鍋さんのブログでも読ませて頂い…

オブラブイベント参加

オブジェクト倶楽部のイベントに参加してきました。今回もまた、たくさんの元気を頂きました。講演者の方、懇親会でご一緒させて頂いた方、本当にありがとうございました。しかし…。 しばらくお酒を飲んでいなかったせいか、たいして飲んでいないつもりなの…

分断されるコンテクスト

先日、コードレビューで不思議なコードを見ました。再現してみるとこんな感じです。 if(! running) { start(); // (A) } if(running) { // (B) } 最初に見たとき、本当になにが起こっているのかわかりませんでした。コードを見れば明らかに(A)と(B)は排他に…

質問を質問として受け取ってもらえるか

レトリカル・クエスチョンに気をつけよう(コミュニケーションのヒント) ( ソフトウェア ) - 結城浩のYahoo!日記. - Yahoo!ブログ レトリカル・クエスチョンの話。できるだけ使わないように気をつけているつもりなんですが、つい使ってしまうことが。気付い…

Foreign

便利なんですが、なんとなくズルをしている気分になります。Haskellっぽくないと。 import Foreign.Marshal.Array import Foreign.Ptr import Foreign.Storable import Data.Word main = do a <- mallocArray 10 :: IO (Ptr Word32) peekElemOff a 0 >>= pri…

デバイスの表現に適したプログラミング

FPGAの記事を見て、「C++とかでこうゆう表現できないかな」と感じてしまいました。組み込みをやっているとビット列操作が多いのですが、思いのほかC++と相性がよくありません。符号付き/符号なしとかを厳密にしていくと結構面倒。プログラミングする側で管理…

ルートの無限入れ子クイズ

結城さん提供の問題、今回はわかりそうでしたので挑戦。 ということは、 ということで、 となり、 で、指数部は1に収束するので、 …答えは「2」、ではないかと。微妙に間違ってる気がする。というか、説明手抜きすぎ。というか、を使いたかっただけのような…

わからない、ことは問題か

ソフトウェア開発を始め開発業務をしていて、わからないことがあるのは、それほど問題ではありません。そもそもわからないこと…解決しなければならない問題があるから、新たに開発をするわけでして。 問題なのは、わからないことを放置すること。そんなこと…

感情力

思い出したので忘れないうちにメモしておこうと、元ネタになった本を引っ張り出し、思い出したことが書かれた場所を探してみたけれど…あれ?ない。思い出したフレーズは「気付く/認める/表現する/行動する/反応する...感情力」というもの。すっかり思い違いを…

整数型変換

import Data.Word -- 32ビット符号なし整数型へ変換 toWord32 :: (Enum a) => a -> Word32 toWord32 = toEnum.fromEnum -- 16ビット符号なし(ry toWord16 :: (Enum a) => a -> Word16 toWord16 = toEnum.fromEnum -- 8ビット(ry toWord8 :: (Enum a) => a ->…

仕事じゃないんだから

プロジェクトの成果物とは別に、担当技術者が書いたちょっとしたツールのスクリプトが雑なのを見て。 「仕事じゃないんだから、もっと気合い入れて書いてもいいのに」 と思ったわたしは、会社員失格かもしれません(苦笑)。 わたしは、仕事でないなら、そりゃ…

文章力がないから

とあるメールに、「文章力がないからうまく伝わらないかもしれませんが…」という書き出しの文章があったんですが、それって「技術力がないからうまく作れていないかもしれませんが…」という書き出しに匹敵するんじゃないか?と思った。 なんでそう思ったかと…

どこまでも手続き的

わたしには珍しくPerlの話題。仕事で、とある人が作った、ログを整形するコードを見て「おや?」と思った次第。 コードは、時分秒ミリ秒をあらわす9桁の数字の列があって、それをHH:MM:SS.mmmの形に整形するというもの。気になった部分を抜き出してみるとこん…

計画と目標、その2

わたしの担当部分ではないのですが。今日も作業の追加があり、新たな見積もりが出てきたのですが。マージンいりで。担当の人物は、昨日の今日なので、マージンなしの見積もりも出させてました。不謹慎ながら、この機会に結果としてどちらの見積もりが有効だ…

計画と目標

計画したよりも仕事に時間がかかった場合、問題視されることしばしば。というか、計画より遅れたわけで、その後の影響も考えれば、すごく問題視されてしまうのはいたしかたない部分も。 計画よりも早く仕事が終わったら? 今日、計画よりも早く仕事が終わった…

なにをいまさらICFP

おおよそ一年前、いまさらICFP Programming Contest - エンジニアのソフトウェア的愛情、でC++で書いていたのを、去年のお題をなにをいまさらHaskellで再挑戦。3日ほど悩んでいる。配列をどう扱っていいんだかわからず…もう頭から煙が出そう。

IOArray

Haskellで使う配列。Arrayもあるけれど、効率が悪い(らしい)のでIOArrayを使ってみる。ghciにて。 Prelude> :m Data.Array.IO IOArrayを使うためにData.Array.IOを読み込み。 Prelude Data.Array.IO> a :t a a :: IOUArray Int Int newArrayで新しい配列を作…