プログラミングの勉強

Javaのクラスとオブジェクトについて再度解説を試みる

オブジェクト指向プログラミングの考え方については、今までこのブログでも何度か取り上げてきました。 [オブジェクト指向] - 達人プログラマーを目指して オブジェクト指向プログラミングはプログラミング技法のすべてではないとはいえ、Javaのようなオブジ…

ここぞというときの集中力Upのために、ヘッドフォンで音楽を聴きながらプログラミングしましょう

仕事や趣味でプログラミングしたり技術書を読みながら勉強したりする際には、言うまでもなく集中力を高めて維持することが大切ですね。職業プログラマーに必要な集中力ということには少なくとも二つの意味があるとは思いますが、 単純に正確に繰り返しキーを…

普通の構造化プログラマーがオブジェクト指向の存在意義を理解するコツ

オブジェクト指向言語の存在意義を理解するのは難しい? id:amapetasさんによる、ちょっと興味深い記事がありました。 オブジェクト指向言語が流行した必然性について考える(1) - Programmer’s Log そして、その記事の中で説明されているのですが、やはり、C…

Javaエンジニア必携の「プログラミングGroovy」を献本していただきました

昨日、ポストを確認したところ、執筆陣の皆さんより、献本として送っていただきましたプログラミングGroovyが届いていました。プログラミングGROOVY作者: 関谷和愛,上原潤二,須江信洋,中野靖治出版社/メーカー: 技術評論社発売日: 2011/07/06メディア: 単行…

いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について

正しく意味を理解している方にとっては、まったく常識レベルの話であり、何をいまさらと思われる方々も多いかと思いますが、大規模案件のレガシーコードなど、私が仕事で見かけるJavaのコードを読むと、「このコードを書いたSEやPGの方々は、はたして継承の…

Javaプログラミング能力認定試験の問題がかなり改善されていました

以前、本ブログでJavaプログラミング能力認定試験の1級のサンプルプログラムがあまりにも旧態依然とした設計でひどいという指摘をさせていただきました。 SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラ…

Clojure言語基本の「き」(その2)

前回Clojure言語基本の「き」 - 達人プログラマーを目指してに引き続き、Clojure言語を新しく覚える際にポイントとなる事柄をまとめていきたいと思います。 逐次実行 (do 式1 式2 ... 式n)の形式を使うことで、処理を逐次実行させることができます。最終的に…

Clojure言語基本の「き」

ふと思い立ってClojureの勉強を始めることにしました。 - 達人プログラマーを目指してで書いたように、10日前にClojureの勉強を始めました。まだ勉強を始めたばかりのということもあり、他人に上手く正確に説明できる段階ではないかと思いますが、自分自身超…

ふと思い立ってClojureの勉強を始めることにしました。

最近は並行プログラミングの必要性から、関数型言語の人気が以前にもまして高まってきているという話はいろいろなところで耳にするようになったのですが、普段はJavaしか書かない私のような普通の業務プログラマーにとっては、正直なところHaskellやScalaと…

普通のSI会社では評価されにくいのだけど、多くのシステムは研究熱心な技術者の小さな発見と工夫の積み重ねによって支えられているのでは?

昨晩遅く、id:backpaper0さんの以下のツイートが目にとまりました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = i…

普通の業務系Java PGでなくても一度はハマる?JavaScriptのthisの奇妙な振る舞い

先日書いた普通の業務系PGには意外と知られていないJavaとJavaScriptの相違点10選 - 達人プログラマーを目指してでは、これからJavaScriptを本格的に勉強する層のプログラマーの人を対象に、JavaとJavaScriptの違いを理解する上で重要な10個のポイントにつ…

普通の業務系PGには意外と知られていないJavaとJavaScriptの相違点10選

以前はJava EEの普通のWebアプリケーションで、JavaScriptはあくまでも利便性のために補助的に使うものという認識がありましたが、さすがに最近では普通の業務系のSI案件でもテーブル表示や入力補助などで高度なAjaxライブラリーの使用が当たり前のように求…

Java言語のClassクラスが持つちょっと不思議な性質について

前回のエントリーJava5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる - 達人プログラマーを目指してで、Javaの型システムが総称型の導入によりJava5から大きく拡張されたということを説明しました。ポイントは 総称型により…

Java5の型システムを理解するにはリフレクションAPIを使ってみるのが最短の近道になる

Java5における総称型(generics)の導入に伴い、Javaの型システムは以前と比べて高機能になった反面、理解するためのハードルが高くなっています。もちろん、Javaの型についてきちんと理解するためには言語仕様を勉強すればよいのですが、手っ取り早く理解す…

Java総称型のワイルドカードを上手に使いこなすための勘所

Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラ…

普通の(業務)Javaアプリケーションでは配列をなるべく使用しない方がよい

以前、業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指してにて、Java言語の配列はListなど他のコレクションとの不統一が顕著であるという点を説明しました。Java言語の配列は 要素に[ ]演算子を使って簡単に…

Groovyのオーバーロードメソッドの解決はユニークなところがある

Java、C#、C++などを含めて現代のほとんどの静的な型付けのプログラミング言語では、異なる型を取る複数のメソッドを同じクラス中に多重定義することができます。これはメソッドのオーバーロード(overload)*1として知られています。たとえば、以下のように同…

よりGroovyらしいプログラムへのリファクタリングに挑戦してみました

先日認定試験問題のリファクタリング結果をGroovyにとりあえず移植してみました - 達人プログラマーを目指してにてJavaプログラミング認定試験のサンプルプログラムのGroovy化について紹介しました。その記事を書いた時点では、とにかくGroovyとJavaとの親和…

認定試験問題のリファクタリング結果をGroovyにとりあえず移植してみました

最近Groovyから遠ざかっていたため、勘を取り戻す練習も兼ねて、先日Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その3) - 達人プログラマーを目指してでご報告したサーティファイJavaプログラミング認定試験のリファクタリ…

Developers Summit 2011参加メモ(2日目)

Developers Summit 2011参加メモ(1日目) - 達人プログラマーを目指してに続いて、2日目のレポートです。 【18-B-1】プログラマが知るべき、たったひとつの大事なことがら タイトルはもちろん、以前もすべてのプログラマーに読んでもらいたい本 - 達人プロ…

Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その3)

少し間が開いてしまいましたが、前回のJavaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その2)に続いて、試験問題のリファクタリングについて説明します。 Template Methodデザインパターンを使った制御の反転 前回までのリファ…

いまさらだけど、Java言語にはクロージャーがない

Java言語でメソッド中で内部クラスを作る時、そのメソッドのパラメーターやローカル変数に内部クラスのメソッド中からアクセスできます。しかし、この場合にはこれらの変数にfinalを付けないとコンパイルエラーになってしまいます。 public void test(int pa…

Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その2)

前回のJavaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その1)に引き続き、試験問題のリファクタリングについて考えます。 画面入出力処理の抽象化とカプセル化 前回はこの試験問題でもっともコーディングが面倒なファイル入出…

Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その1)

昨日書いたSI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指してが予想以上に大きな反響があり驚いています。特に、あの有名なひがさんにもSI業界の現状と未来に関してコメントをしていただきま…

SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている?

私自身は10年以上も前(JDK1.1の頃)にSJC-Pの認定を取って以来、Javaプログラミング関連の認定試験は受けていないのですが、昨日たまたまネットを検索して、SJC-Pとは別にJavaプログラミング能力認定試験という試験が存在していることを知りました。結構メ…

すべてのプログラマーに読んでもらいたい本

ネット上で「97きのこ本」として既にいろいろとうわさになっているようですが、私も書店で購入して読み始めました。プログラマが知るべき97のこと作者: 和田卓人,Kevlin Henney,夏目大出版社/メーカー: オライリージャパン発売日: 2010/12/18メディア: 単行…

次世代のモックフレームワークであるJMockitの基本的な使い方

以前のモックフレームワークの技術的制約 今まで私が担当してきたプロジェクトにおいては、モックオブジェクトを使ったJUnitの単体試験はjMockとEasyMockのいずれかのフレームワークを利用して行ってきました。しかし、これらのフレームワークはJavaプラット…

Apache Ivyの紹介と基本的な使い方

Apache Ivyについては本ブログでも何回か用語自体は取り上げてきましたが、現状日本語での情報が限られるためか、AntそのものやMavenに比べるとユーザーが少ないように思われます。ここで基本的な使い方やMavenとの違いについて簡単に紹介させていただきたい…

アバンダンウェアで懐かしい過去の時代にタイムスリップしてみる

皆さんはアバンダンウェア(Abandonware)という用語をご存知でしょうか? wikipedia:アバンダンウェアにあるように、 著作権者が既に販売をやめたりサポートしていないソフトウェア、あるいは様々な理由により、誰が著作権者であるか不明なソフトウェアを指す…

達人プログラマーを目指すための素質

http://1yg.net/archives/554という記事がはてブで相当話題になっているみたいです。 そんな感じで、自分の考える「プログラミングの出来る人と出来ない人の決定的な違い」は 文字の羅列に興味を持つ事が出来、理解しようと真剣に取り組めるか否か だと思う。…