2010-01-01から1年間の記事一覧

ジェネリクスの代入互換のカラクリ

Javaジェネリクス再入門 - プログラマーの脳みそでは、「変数の型の宣言」の項で「ジェネリクスの<>の中は一般のJavaの型の代入互換性とは異なる。このことはよく覚えておかなくてはいけない。」と言ったものの、深入りはしなかった。このあたりについて深入…

Javaジェネリクス再入門

ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。2004…

再帰的ジェネリクスの代入互換性

Javaのややこしいジェネリクスの話をしよう。*1 再帰的ジェネリクス クラスHogeがあったとして、型変数Tを取る。 public class Hoge<T> {} このHogeの型変数Tがextends Hogeとすると public class Hoge<T extends Hoge> {} すると、T extends Hoge の Hoge が raw型だと警告され</t></t>…

生成系デザインパターンをライブラリ化するには

デザインパターンによる定型的な構造を何度も何度もプログラムしていると、デザインパターンそのものをライブラリ化して再利用してしまいたいと考えるようになる。そんなさなかにジェネリクスのテクニックのような型を使うことで実装クラス自身の型を扱うテ…

Java標準APIのソースコードの謎のjavadocタグ

なんとなくJavaのソースコードを調べていたら不思議なものを見つけた。 java.lang.ThreadクラスのisInterrupted()メソッドだ。 /** * Tests whether this thread has been interrupted. The <i>interrupted * status</i> of the thread is unaffected by this metho…

マインスイーパを解く その2

前回はマインスイーパを解くプログラムを作成する場合、単純なアルゴリズムだけでは解けない、そして工夫して論理的に解くアルゴリズムを作ったところで運任せの要素が強いことを示した。 今回は地雷の配置を推測する、やや難度の高い部分について踏み込んで…

マインスイーパを解く

マインスイーパというとWindows付属のゲームとして有名だ。このゲームはプログラミングの腕試しとして多くの人が独自に実装を試みた、メジャーなテーマでもある。僕も幼い頃に実装を試みたプログラマのひとりだ。僕が実装を試みた中学生(92-94年)の頃と記憶…

プログラマの値崩れ

etc

pixivと仕事の値崩れと - プログラマーの脳みそは「絵を描く」という仕事の値崩れとそれを防ぐにはという話題だった。僕はプログラマなので、当然ながらプログラマの仕事の値崩れについて考えを巡らせる。 需要と供給 プログラマというのは人材不足だ。そし…

pixivと仕事の値崩れと

etc

pixivで安価なイラスト依頼が横行しているみたいな話題があって、業界の人らは怒り心頭の様子。 絵描き業界の価格破壊 - Togetter 日経なんとかのpixiv安価イラ依頼等について - Togetter 絵の報酬が決まることについての話 - Togetter 仕事の値段 僕もクリ…

メソッドの最後でしかreturnを書いてはいけない時

柴田 芳樹 (Yoshiki Shibata):So-netブログに出てくる、「メソッドや関数の最後でしかreturn文を書いてはいけないと、プロジェクトの標準として何らかの方法で強制」された場合、機械的な書き換えを行うことで対応することが出来る。 まずは戻り値がvoidの…

@nagise 結婚記念パーティー

参加してくださる方はATNDで申し込みをしてください。登録の際に連絡先を入力してください。案内を送付するのに用います。手続きの都合もありますので早めの登録をお願いします。締切りは2月末です。 会場 オークス カナルパークホテル富山(富山県富山市牛…

Classless Java

Semicolonless JavaのほかにもJavaのサブセット言語はあって、そのひとつがClassless Javaだ。 public interface HelloWorld { static Object o = new Object() {{ System.out.println("Hello world!"); System.exit(0); }}; } Classless JavaはJava言語仕様…

@nagise 結婚記念パーティー

私の結婚記念パーティーまであと1カ月(5/1)となりました。参加される方には案内を送付します。 5/1同日には富山でLT大会が開催される予定です。みんな何かネタを用意しておいてくださいね。

Semicolonless Java の公式ページ

Semicolonless Java というJava VM上で動作する言語の公式ページが公開されました。言語仕様やチュートリアルが公開されています。セミコロンを踏みつけるdukeがおちゃめですね。 Semicolonless Java はJava VM上で動作するJavaのサブセットです。このシンプ…

アーキテクトと変態は紙一重

etc

「卵をテーブルに立てることができますか?」「そんなのできるわけがない」「こうやるんですよ。グシャッ」「そんなの俺でもできる!」 コロンブスの卵のような話は多々あって、工学の成果の多くはそういうものかもしれない。「こうやればできる」を探し出す…

Javaでセミコロンなしでプログラムを書く

java-ja温泉2日目の夕食。 @yoshiori がpythonのワンライナの楽しさを得々と語っていた。 @yoshiori「Brainf*ck を Python-oneliner にコンパイルする Python-onelinerを書いたけど全ッ然反応がなかった。こんなに面白いのに!」 @yamashiro「だって分かりに…

TDDはテスタビリティの保証をしてくれるのかも

TDD Boot Camp 北陸行ってきました。 TDDはテストドリブンデベロップメントの略で、自働テストを書いてから実装を書くというスタイル。ここでよく誤解されるのだけど、業務でおなじみ単体テストや結合テストといった網羅的なテストを記述してから実装を書く…

画像を1/3ピクセルだけ左に移動しましょうか?

etc

「画像を0.5ピクセル左に移動させてください」 クライアントからのムチャぶり迷言集 | Webクリエイターボックス 画像を0.5ピクセル移動させることは出来ないが、1/3か2/3ピクセルなら移動させることが出来る。 ClearTypeフォントで用いられている手法なのだ…

コードの変態性とは何か

Java変態文法最速マスター - プログラマーの脳みその反応で、そこで取り上げられた文法は別に変態でも何でもない、という意見があったんだけど、そもそも「文法そのものが変態的」か、という話と、「ある文法を利用して変態的なコードを書く」ということを区…

Javaバイトコードの読み方 javapの補足

Javaバイトコードの読み方 - プログラマーの脳みそではEclipseの"Class File Editor"でバイトコードを読む場合のさわりを紹介した。 ブックマークなどの反応をみるとjavapの誤解があるように思う。 b:id:yujiorama デバッグ用途なら javap でもいいとこまで…

Javaバイトコードの読み方

Javaのデバッグをしていて、ステップ実行中にステップインを繰り返したらソースコードのないところに行き当たったことがあるだろう。あるいはEclipseでF3キーでクラスやメソッド・フィールドの宣言元を辿っていってソースコードのないところに行き当たったこ…

Java変態文法最速マスター

Java基礎文法最速マスター - いろいろ解析日記をリスペクト。Javaの変態文法・技法一覧です。Javaの基礎をある程度知っている人はこれを読めばJavaの変態をマスターしてJavaを書くことができるようになっています。簡易リファレンスとしても利用できると思い…

デザインパターンとしての例外ハンドラ - オブジェクト指向と型システムの狭間で例外を考える その4

etc

例外考察シリーズ。 オブジェクト指向と型システムの狭間で例外を考える - プログラマーの脳みそ 契約書に捨印を押す - オブジェクト指向と型システムの狭間で例外を考える その2 - プログラマーの脳みそ try-catch方式・ハンドラ方式 - オブジェクト指向と…

try-catch方式・ハンドラ方式 - オブジェクト指向と型システムの狭間で例外を考える その3

etc

例外考察シリーズ。 オブジェクト指向と型システムの狭間で例外を考える - プログラマーの脳みそ 契約書に捨印を押す - オブジェクト指向と型システムの狭間で例外を考える その2 - プログラマーの脳みそ try-catch方式のおさらい 例外のthrowというのは、コ…

お客様は神様です。牛は神様の遣いです。

etc

河村市長は「人間に番号をつけて国が管理するのは、牛に番号をつけるのと同じ」と主張。 「人間に番号つけるのは牛と同じ」 名古屋市長が「住基ネット」離脱表明 : J-CASTニュース お電話ありがとうございます。サポートセンターです。ワタクシ担当の凪瀬で…

契約書に捨印を押す - オブジェクト指向と型システムの狭間で例外を考える その2

オブジェクト指向と型システムの狭間で例外を考える - プログラマーの脳みその続き。 僕は不勉強なのでメイヤー氏の思想というものをそれほどトレース出来ていない。だから開放閉鎖原則についての哲学のようなもの、というのはデザインパターンから嗅ぎとっ…

オブジェクト指向と型システムの狭間で例外を考える

「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - じゅんいち☆かとうの技術日誌のあんまりな釣りタイトルにやれやれだぜ、と思いつつも非チェック例外多用作戦のトレードオフ認識 - 都元ダイスケ IT-PRESSでツッ…

正しさの証明

etc

日本語はコンパイラによる静的チェックができない Wordとか使えば日本語の表現の誤りは警告してくれるかもしれないが、その日本語が表現するプログラムが正しいかは分からない。 日本語でプログラミングしてはいけない理由 - プログラマーの脳みそ に対する…

日本語でプログラミングしてはいけない理由

etc

詳しすぎる詳細設計書 - SiroKuro Page とか 詳細設計書に何を書くべきか? - Sacrificed & Exploited 関連。 ソースコードと1対1で対応するような仕様書を書いてはならない理由。 日本語は読み上げれるかもしれないが内容を理解できるとは限らない 日本人…

2010年版インスタンス生成考

2010年現在のアクセスレベルの限界 - プログラマーの脳みそではpublic, protected, private, パッケージプライベートという4つのアクセスレベルではうまく行かない事例という視点だったけど、例に挙げたDIコンテナ云々というのはアクセスレベルの不備という…