タグ

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

  • 入門書が教えてくれないJava スコープ編 - プログラマーの脳みそ

    入門書ではあまりとりあげられない部分を解説するコンセプトの「入門書が教えてくれないJava」シリーズの第二弾。前回は変数についてだった。今回はそのスコープについて取り上げたい。 スコープとは スコープとは大雑把に言えば変数やメソッドなどが見える範囲のことを指す。 Javaの変数のスコープで一番簡単なのはローカル変数で、これは{から}まで(これをブロックという)の中で、宣言した位置より後ろで参照することができる。 public void main(String[] args) { int i1 = 0; // i1はここからmainの}までの間で参照できる if (true) { int i2 = 0; // i2はこのifの}までの間で参照できる } // i2はifの}を過ぎると参照できなくなる i2 = 1; // ← コンパイルエラー } なお、Javaの言語仕様では{}のブロックは

    入門書が教えてくれないJava スコープ編 - プログラマーの脳みそ
  • Javaのクラス宣言5種+α - プログラマーの脳みそ

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

    Javaのクラス宣言5種+α - プログラマーの脳みそ
  • ProxyパターンとProxyクラスと黒魔術 - プログラマーの脳みそ

    Java Advent Calendar 2011 の18日目です。 17日目の記事は JavaEE使ってウェブアプリケーションつくろうよ - 水まんじゅう2、 19日目はJavaエバンジェリストの寺田さんですよ。乞うご期待。 プロローグ 後:「先輩、いまさらなんですけど上からSQLの遅いところを調査してくれって依頼がきてて、全クエリの実行時間を実データで集計とれと言ってるんですけど。これ、SQL発行前後で時間計測するしかないですかねー。このプロジェクトどんだけクエリ発行してるところあるんだろ…。簡単にやれないですかね。とりあえず調査に1週間かかるって返答しちゃいましょうか」 先:「まぁまて。全部のクエリにもれなく時間計測のコードを挿し込むとかやってられんし、手作業で漏れも発生するだろ。こういうのはオブジェクト指向で解決するのがスマートだ。あ、とりあえず調査に1週間かかるとは返答しておけ」

    ProxyパターンとProxyクラスと黒魔術 - プログラマーの脳みそ
  • Javaパフォーマンス計測 JITとの闘い - プログラマーの脳みそ

    前回の文字列操作編では適当に文字列操作のパフォーマンスを測定しようとしたらGC様とJITコンパイラ様に阻まれた、という話だった。モヒカン族*1が「てめえの計測はなっちゃいねー!ひゃっはー!」と殴りかかったらケンシロウみたいなのが出てきて「あべしっ」となった、ぐらいのつまらない話だったが、反省してこれらと向かい合ってみたい。 JITコンパイラについての情報 JITコンパイラ(Just In Time compiler)とはインタープリタ方式のプログラム言語のランタイムが実行時に必要に応じて部分的にネイティブコード(CPUが直接実行できるマシン語)に変換することで高速化するというコンパイラである。もともとはもっと狭義のニュアンスだったが、今ではJITコンパイルとHotSpot動的コンパイルを併せて広義にJITコンパイル、それを実施する実態をJITコンパイラと呼んでいる感じだ。*2 ただ、やみく

    Javaパフォーマンス計測 JITとの闘い - プログラマーの脳みそ
  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
  • プログラマの値崩れ - プログラマーの脳みそ

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

    プログラマの値崩れ - プログラマーの脳みそ
  • プログラミング技能の深さと広さとサーチビリティ - プログラマーの脳みそ

    プログラミングの世界にはいろんな技術があるのだけど、深さと広さのどちらを広げるほうがよいのだろう? 広さの需要が多い 業務システム開発の世界というのは、お客さんが求める処理を行うためにはどうしたらよいかを提案し実装し運用する世界で、その多くは画期的なアイデアや難しいテクノロジーを必要としない。既存の技術を組み合わせて「やりたいこと」を実現できればそれでいい。簡単にできるなら、なおいい。 これは、知識の広さを問われる世界。「こういうことしたいんだけど」「XX使ってはどうですかね」そういう引き出しをたくさん持って、状況に合わせて提示するという能力。お客さんは凄いテクノロジーかどうかではなくて「やりたいことができるようになったかどうか」が大事なんだ。 そんなわけで、プログラムで飯をっています、という人は意外なほど技能が浅いことがある。浅い技術でいいからそれを提示するという需要が世の中にはたくさ

    プログラミング技能の深さと広さとサーチビリティ - プログラマーの脳みそ
    Itisango
    Itisango 2009/07/25
  • IT系がスーツを新調する時 - プログラマーの脳みそ

    IT系は四六時中椅子に座りっぱなしの職業なので、スーツはパンツのおしりの部分からほころびてくる。 ケツがすり切れて穴があいたら新しいスーツを買わねばならない。 いつもパンツばかりがほころびる。上着だけあまってもしょうがない。 スーツを仕立てる時はパンツを2つ3つに増やしておくべき。

    IT系がスーツを新調する時 - プログラマーの脳みそ
    Itisango
    Itisango 2009/01/23
  • Eclipseからテキストエディタに戻れない10の理由 - プログラマーの脳みそ

    ソフトウェアはいろいろな作業の効率化に貢献してきた。プログラミングという作業も例外ではない。現代の高度なIDE(統合開発環境)はプログラマが単純でつまらない作業に時間を割かずに済むようにさまざまな機能を提供してくれる。 もうテキストエディタ+コマンドラインでのコンパイルなんて環境には戻れない。以下は自分が仕事でメインに使っているEclipseというIDEを使い続ける理由。 (追記)私は仕事では主にJavaの開発をやっている。C/C++/C#の開発では以下に挙げるメリットを享受できない部分があることを断っておく。 1. コードの自動補完 標準API+フレームワークのAPIで万単位のクラスが存在するので、暗記は無理。クラスに存在するメソッド名、フィールド名までの暗記はもっと無理。よく使う範囲なら暗記しているけど、typo -> コンパイルエラー -> 探して修正 の手間より、自動補完が断然効率

    Eclipseからテキストエディタに戻れない10の理由 - プログラマーの脳みそ
    Itisango
    Itisango 2008/12/21
  • 1