タグ

ブックマーク / nagise.hatenablog.jp (19)

  • Javaのクラス宣言5種+α - プログラマーの脳みそ

    Javaのクラス宣言には5種類ある。 トップレベルクラス・ネストしたクラス・内部クラス・ローカル内部クラス・匿名クラス(無名クラスとも言われる)の5種類だ。 今回はこの5種類のクラス宣言のおさらい。 トップレベルクラス これは普段使っているクラス。拡張子が.javaのファイルを作り、そのファイル名とクラス名を合致させなくてはいけない。そのjavaファイルのトップレベルに位置する。 ネストしたクラス 「ネストしたクラス」(Nested class)とはクラスの中にクラスがネストしている状態。トップレベルクラスの内側にstaticキーワードをつけてクラス宣言を行う。 public class Outer { public static class Nested { } } このネストしたクラスは、トップレベルクラスと同等の機能性を持つ。 クラス名はOuter.Nestedという名前で扱われるが

    Javaのクラス宣言5種+α - プログラマーの脳みそ
  • プログラマの値崩れ - プログラマーの脳みそ

    pixiv仕事の値崩れと - プログラマーの脳みそは「絵を描く」という仕事の値崩れとそれを防ぐにはという話題だった。僕はプログラマなので、当然ながらプログラマの仕事の値崩れについて考えを巡らせる。 需要と供給 プログラマというのは人材不足だ。そして頭数は余っている。どういう事かといえば、プログラマの質というのは総じて低いのだ。 SI業界(注文に応じてシステムをフルオーダーで開発する業態)では、「プログラマ≒プログラムを書く人」「SE = システムエンジニア ≒ お客さんの要望を取りまとめる人」ってカテゴライズがされてて、プログラマ < SE という扱いになっていることが多い。 SI業界で必要とされるプログラミング技能は総じて低い。というか、業務用のプログラムってのはその8割はたいした技能が必要ないプログラムで出来ているといっていい。人手がかかり面倒くさい作業を人海戦術でこなしている、とい

    プログラマの値崩れ - プログラマーの脳みそ
  • Javaでセミコロンなしでプログラムを書く - プログラマーの脳みそ

    java-ja温泉2日目の夕。 @yoshiori がpythonのワンライナの楽しさを得々と語っていた。 @yoshiori「Brainf*ck を Python-oneliner にコンパイルする Python-onelinerを書いたけど全ッ然反応がなかった。こんなに面白いのに!」 @yamashiro「だって分かりにくいもん」 西尾先生が通常ワンライナではtry-catchが使えないけど子プロセス立ち上げて例外を出力してパースすればエラー処理ができるとか(http://www.nishiohirokazu.org/blog/2006/08/python_12.html参照)そんな話で盛り上がる中、 @nagise「Javaでセミコロンなしでプログラムが書けるような気がしてきた」 Javaの場合、普通にセミコロン(;)でマルチステートメントにかけるのでただ1行にしようというなら改行

    Javaでセミコロンなしでプログラムを書く - プログラマーの脳みそ
  • TDDはテスタビリティの保証をしてくれるのかも - プログラマーの脳みそ

    TDD Boot Camp 北陸行ってきました。 TDDはテストドリブンデベロップメントの略で、自働テストを書いてから実装を書くというスタイル。ここでよく誤解されるのだけど、業務でおなじみ単体テストや結合テストといった網羅的なテストを記述してから実装を書くわけではない。目の前の1歩分、ひとつだけテストを書き、すぐさま実装を書いて自働テストをグリーンにする、というやり方をするのだ。こればかりは実際にやってみないと誤解は解けないかもしれない。 さて、深夜のテストTL - Togetterや、TDDはテスト手法か否か - Togetterで議論されている「TDDは品質保証の手法ではない」という部分に関する議論。ここでいう「品質保証」はバグがないこと、ソフトウェア品質の12の属性でいう信頼性(reliability)が高いことを指す。 TDDのスタイルには網羅的な検査をしてバグをあぶりだすようなフ

    TDDはテスタビリティの保証をしてくれるのかも - プログラマーの脳みそ
  • Java変態文法最速マスター - プログラマーの脳みそ

    Java基礎文法最速マスター - いろいろ解析日記をリスペクト。 Javaの変態文法・技法一覧です。Javaの基礎をある程度知っている人はこれを読めばJavaの変態をマスターしてJavaを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。 1.基礎 エンクロージング型内部classの作成 外部classのインスタンスに紐付くインスタンスを生成します。外部クラスのインスタンス - 内部クラスのインスタンス間に、クラス - インスタンスのような関係を持たせることができます。 public class Outer { public class Inner { } } というようなクラスを作った場合、 Outer o = new Outer(); Inner i = o.new Inner(); となります。new

    Java変態文法最速マスター - プログラマーの脳みそ
  • デザインパターンとしての例外ハンドラ - オブジェクト指向と型システムの狭間で例外を考える その4 - プログラマーの脳みそ

    例外考察シリーズ。 オブジェクト指向と型システムの狭間で例外を考える - プログラマーの脳みそ 契約書に捨印を押す - オブジェクト指向と型システムの狭間で例外を考える その2 - プログラマーの脳みそ try-catch方式・ハンドラ方式 - オブジェクト指向と型システムの狭間で例外を考える その3 - プログラマーの脳みそ 前回はプログラム言語の例外処理機構としてtry-catch方式の他に、ハンドラによる例外処理方式を考えることができる、という話をした。「考えることができる」がこの2010年現在にそういった例外処理機構をもった言語があるかというと僕は寡聞にして知らない。ああ、僕は当に寡聞なのでただの無知の可能性のほうが高い。メジャーどころではなさそうなんだけどどうだろう。 プログラム言語の機能として、という話だと、プログラム言語を作ろうという人とか、あるいは将来にハンドラ式の例外処

    デザインパターンとしての例外ハンドラ - オブジェクト指向と型システムの狭間で例外を考える その4 - プログラマーの脳みそ
  • try-catch方式・ハンドラ方式 - オブジェクト指向と型システムの狭間で例外を考える その3 - プログラマーの脳みそ

    例外考察シリーズ。 オブジェクト指向と型システムの狭間で例外を考える - プログラマーの脳みそ 契約書に捨印を押す - オブジェクト指向と型システムの狭間で例外を考える その2 - プログラマーの脳みそ try-catch方式のおさらい 例外のthrowというのは、コンパイラあるいはランタイムのレベルで、メソッドの戻り値を拡張することで表現できる。 処理中になんらかの異常事態が発生して、文字列表現じゃない何かを返さざるをえない状況ってのに直面したとする。するとString型の戻り値じゃそんなの表現出来ないから困る。 さてここで、原始的に解決する場合のコードを考えてみよう。 public static class Result { /** 戻り値 */ public Object value; /** 成否フラグ */ public boolean success; } といった型をつくり、

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

    「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - じゅんいち☆かとうの技術日誌のあんまりな釣りタイトルにやれやれだぜ、と思いつつも非チェック例外多用作戦のトレードオフ認識 - 都元ダイスケ IT-PRESSでツッコミたかったことが突っ込まれてしまってるので、しょうがないのでオブジェクト指向と型システムの話でもしよう。 Javaの静的型システム ≠ オブジェクト指向 僕が10年ほど前、Javaを使い始めてからしばらくたってやっとオブジェクト指向プログラミングが掴めて楽しくなってきた頃合、これこそがオブジェクト指向なのだと誤解をしていたころ、オブジェクト指向は型がチェックできてなんぼだと思ってた。 javascriptのプロトタイプ型のオブジェクト指向に憤り、「あんなものはオブジェクト指向ではない」などと思うのがJavaプログラマ的中二病というやつだが

    オブジェクト指向と型システムの狭間で例外を考える - プログラマーの脳みそ
  • 2010年版インスタンス生成考 - プログラマーの脳みそ

    2010年現在のアクセスレベルの限界 - プログラマーの脳みそではpublic, protected, private, パッケージプライベートという4つのアクセスレベルではうまく行かない事例という視点だったけど、例に挙げたDIコンテナ云々というのはアクセスレベルの不備というよりも、コンストラクタの不備と捉えるべきだ。 コンストラクタを使わないインスタンス取得 Javaの場合、インスタンス生成はコンストラクタによって行われる。そのクラスの外部から、インスタンスを得ようとする場合の一番基的なインスタンス取得方法は、new によってインスタンスを新たに生成する方法。 しかし、たとえばGoFデザインパターンのSingletonであるとか、あるいはFlyweightであるとか、返すインスタンスが常にnewされるわけではなく、既存のインスタンスを使い回して返すような作りに使用とした場合、コンストラ

    2010年版インスタンス生成考 - プログラマーの脳みそ
    monjudoh
    monjudoh 2010/01/13
    『DIコンテナを宣言型のコンポーネント生成フレームワークとして捉える、ということができる』
  • 2010年現在のアクセスレベルの限界 - プログラマーの脳みそ

    前提条件を破った場合、どのような挙動をするのか? - 都元ダイスケ IT-PRESSで言及をもらったので 現代は4つのアクセスレベルでの可視性制御の限界が囁かれていて、打破するためにいろいろ模索しているところ はてなブックマーク - Nagiseのブックマーク / 2009年12月24日 についてちょっと具体的な話をしておこう。 このブックマークコメントは可視性と公開APIと非公開(内部)APIと - 都元ダイスケ IT-PRESSに対してつけたものだった。このエントリは設計する際にJavaの4つのアクセスレベルをどう使い分けるかを書いた良エントリだと思う。 privateで困る例:自動テスト JUnitといった自動テストコードを書くことを考えてみよう。クラス内だけで再利用される冗長コードをprivateメソッドとして括り出した。このメソッドが単体独立で動作検証が可能なのであれば、そのI/

    2010年現在のアクセスレベルの限界 - プログラマーの脳みそ
  • ソースコードの心脳問題 - プログラマーの脳みそ

    先のコードコメントに書くべきは「意図」 - プログラマーの脳みその関連でソースコードの心脳問題という話をしよう。 心脳問題というのは脳という分子機械が、いかにして心を持つのかという哲学のような脳科学のようなテーマの話題。*1紀元前にプラトンのイデア論にて意識とは何かという基礎命題は与えられていたわけだけども、古代には哲学の範疇に収まっていた。 ところが現代のコンピュータサイエンスでは、脳みそのシュミレーションがかなりの規模でできるようになってきていて、工学的に脳を作れる時代が近く迫ってきている。2007年の記事になるが 今回、現在世界最速の性能を持つ「BlueGene L」スーパー・コンピューター上に、マウスの脳の半分にあたる800万のニューロンの働きを再現させる事に成功したそうです。 使われたのは、それぞれが256MBのメモリを使用する、4096台のプロセッサを持つ「BlueGene L

    ソースコードの心脳問題 - プログラマーの脳みそ
  • 型に属する情報をジェネリックに扱う試み - プログラマーの脳みそ

    Generics 勉強中 - しげっと! 妥協案 - しげっと! Integer.MAX_VALUE で Integer の最大値をとってくるみたいに、 // このソースはコンパイル通らないので参考にしないでね。 class Values <T> { private T max, min; public Values() { this.max = T.MAX_VALUE; this.min = T.MIN_VALUE; } public T getMax() { return this.max; } public T getMin() { return this.min; } } class ValuesTester() { public static void main(String[] args) { Values <Byte> obj = new Values<Byte>(); Sy

    型に属する情報をジェネリックに扱う試み - プログラマーの脳みそ
  • IT業界の人材不足を憂いたり - プログラマーの脳みそ

    面接というのは、ある種のチューリングテストのような代物で、僕らはあるレベルの知性を持っているかを判別される。*1このテストにマルコフ連鎖のように用語に対する解答パターンを用意して臨むことでクリアしようというのが無謀な試みであることはほどなくわかることだろう。大学受験のようなペーパーテストをクリアできたからといって、いつまでもテストさえクリアできれば実態なんてどうでもいいなんて世の中を舐めていると辛酸を舐めることになってしまう。*2 「無精で短気で傲慢なプログラマ 技術者・SE・プログラマ面接時の技術的な質問事項で挙げられている問題に対して、全部答えを用意して暗記すればいいじゃん」 「お前頭いいな」 そう言って面接に挑んだ二人は、翌日青冷めた表情をしていた。 そんな単純な方法で挑んだところで、面接官にはすぐに化けの皮をはがされてしまう。一問一答であればマルコフ連鎖的な丸暗記でもチューリングテ

    IT業界の人材不足を憂いたり - プログラマーの脳みそ
    monjudoh
    monjudoh 2009/02/25
    id:DustOfHumanよく訓練されたギーク使いがいないからだと思われ>「ギーク」って「使う側にとって都合が悪い」というイメージ
  • Tracに足りない4つの機能 - プログラマーの脳みそ

    ITの地殻変動はどこで起きているのか?: プログラマの思索を読んで思い出したことをまとめておこう。 TracなどのBTS(バグ管理システム)を用いたチケット駆動の開発というスタイルで、アジャイル開発を実践されている方も多いことだろう。 私がTracを使っていて感じた不足をここに挙げておく。 インシデント管理 顧客からの要望などのインシデント票と呼ばれるものと、開発の為のタスク(チケット)は別のものだ。私も当初はこれらを混在してつかっていたのだけど、顧客からの問い合わせや要望といったものと、実際の開発作業の間には大きな溝がある。 例えば「Tracにインシデント管理機能をつけてよ」と言われた段階で「インシデント管理機能を作成」というチケットをあげてはいけない。 XPで言うところの計画ゲームをする際のタスクカードと、TODOであるところのTrac上のチケットは分けた方がいい。アイデアとしては出た

    Tracに足りない4つの機能 - プログラマーの脳みそ
    monjudoh
    monjudoh 2009/01/21
    仕様のバージョン管理とか
  • IDEは成長を阻害するのか? - プログラマーの脳みそ

    さて、IDEをちゃんと活用しようということで書いたEclipseからテキストエディタに戻れない10の理由 - プログラマーの脳みそだが、予想通りIDEを使っていたら成長できない的な意見が出てきた。このあたりは、よく論争になるネタなのだけど、今一度向かい合ってみよう。 高度な機能を使うには訓練がいる ある機能を使えば何も考えずに全自動でことが済んで考える必要性が無いよ、という主張を私は全くしていない。取り上げた10の機能でより高度なプログラミングができるよ、前提が変わるよということを主張していたのだった。車の運転を覚えたら行動範囲が広がった、というような感覚である。 リファクタリング機能のファーストステップたる名前の変更を例に挙げよう。この機能を使うことで適切じゃないなと思った名前を後からでも難なくリネームすることができるようになった。では、どう名付けようか?新しい名前はリネーム機能をつかっ

    IDEは成長を阻害するのか? - プログラマーの脳みそ
  • ジェネリクスを実装するには - プログラマーの脳みそ

    ジェネリクスとは何か、ということをちょっと考えていた。以下、頭の中の思考をそのまま引っ張り出した文章なので読みにくいかもしれないが勘弁してほしい。 メソッドのI/Oに対して、あるプレースホルダを置き、そのメソッドを使う側でそのプレースホルダの部分に対してのキャストを漏れなく行ったのだとしたら、それはジェネリクス足りうる。 このメソッドを使う場所を漏れなく、というのはアスペクト指向だから、アスペクト指向が実はジェネリクスの要件ではないかと着想した。 さて、単にメソッドのI/Oつまるところ、引数と戻り値の型だけ合わせればよいのであれば、さほど難しいわけではないが、JavaやC#のジェネリクスはメソッドの集合であるクラスというものに対してジェネリクス型パラメータを与えることができる。 これは、ある種のメソッドの集合を考えて、プレースホルダが置け、アスペクト指向により該当箇所を網羅すれば済む。 さ

    ジェネリクスを実装するには - プログラマーの脳みそ
    monjudoh
    monjudoh 2008/11/11
    ジェネリックは実はアスペクト指向だという説。
  • プログラミングの道具を考察する - プログラマーの脳みそ

    構造化定理で言われるような順次・反復・分岐というプログラミングの基礎の基礎と言える要素を、たかだか数個組み合わせることで対処できるようなコーディングというのは、設問に対するパターンマッチングで回答することができる。 受験勉強でもそうなのだが、こうした問題のパターンに対して定型の答えを返す、という機械的な対処は、黙々とパターンを暗記することである程度の成果が出るわけだが、応用がまるで効かない。 必要となった時に、応用することができるかどうかがコーダとプログラマの分水嶺のように思う。 プログラマとコーダの狭間 - プログラマーの脳みそ と述べたように、プログラミングの技能というのは応用力の類だということ。 この稿で言う「プログラミングの道具」というのはエディタとかデバッガとかの話ではなく、プログラムを組み立て上で用いるプログラミングパラダイム、つまり思考の道具のことを指す。 道具の獲得と使い方

    プログラミングの道具を考察する - プログラマーの脳みそ
    monjudoh
    monjudoh 2008/09/01
    順次・反復・分岐の制御構文から始まってアスペクト指向とかアノテーションとかまで
  • プログラミングハイウェイ - プログラマーの脳みそ

    プログラミング能力をつけるための高速道路を造りたいという話 - タムケンブログ Re: プログラミング能力をつけるための高速道路を造りたいという話 - タムケンブログ:Geekなぺーじ 実際、IT業界に身を置いていると教育機関の必要性を強く感じる。 情報工学科という学科を置く大学は数あるが、世の中に求められるのは実務としてプログラミングができる能力を持った人間だったりする。*1 情報工学科というのは座学が主体で実習が主体なわけではない。例えるならば、美大や音大のような、入学時に実技試験があり、在学中も実技を多く行うような、そういったカリキュラムの情報大学が求められている、と思う。*2 なんせ、情報工学出だろうが、情報系の専門学校出だろうが、文系大学出だろうが、新人で採るならひとしく無能だと思わなければならない。そんな出身校よりも、ホビーでプログラムするかどうかを問う方が当りの人材を引き当て

    プログラミングハイウェイ - プログラマーの脳みそ
  • IT業界の本当のトコロ - プログラマーの脳みそ

    IT業界の皆様に素朴な質問。に対して、何か書くかと言っておきながらずいぶん時間が経ってしまった。 いまさらだが学生諸氏に向けてIT業界の実態を書いておく。 話がい違うのは会社によってまるで違うから Webで見るIT業界の話というのは、酷いという話と楽しいと言う話の両極端に分かれていると思うが、なぜそんなに分かれるのかといえば、そうした両極端な実態があるからにほかならない。 大雑把には、 技術がいらない会社 技術が必要な会社 技術を生み出す会社 ってのがあって、パーセンテージは90,9,1って感じだと思えばいい。 技術がいらない会社 IT業界技術職だろうに、なんで技術がいらないの?という話になるわけだが、まずは業務システムってのがどんなつくられ方をするのか見てみよう。 いわゆるSIerと呼ばれる大手が何十億とか何百億とかいうスケールのでっかい仕事をうけてきて、それを下請けからひっかき集め

    IT業界の本当のトコロ - プログラマーの脳みそ
  • 1