Javaに触れるたび辛くなる

JavaとC、飛行機と車のよう

理解できているつもりだが、実のところ分かってない。誰しも1つや2つはそんなテーマを抱えて生きているのだろうか。学生の頃でいうところの苦手科目、というやつだ。

わたしにとってそれはJava。Javaとはプログラミング言語の1種で、C言語に慣れ親しんできた身にとってはやや扱いづらく感じる。

C言語が車の操縦だとすると、Javaは飛行機の操縦のようだ。地上を走る車に対し、飛行機には高さという軸が存在する。車の運転は前後左右にだけ気を付けていればよいのだけれど、飛行機の操縦はそうもいかない。ある程度の高さを保たないと前進しないし、高い建造物にぶつかる危険もある。その反面、いずれは着地する必要があるので、目的地に向かって徐々に高度を下げることも時に必要となる。Javaに含まれるオブジェクト指向という要素は、私にとっては地上から見上げる飛行物体のようなものなのかもしれない。

じゃあCはカンタンなのかというと、車も決して侮れない。煩雑な交通ルールを頭に入れておかないと、初めて走る道で身の振り方に困ったり、思わぬところで交通違反の落とし穴にはまったりもする。自分のことは自分でどうぞ、という自由主義を謡いつつ責任の所存を明確にする態度は、ときに冷たさを感じる。

少し前にjavaで苦しんだ話を少し 

少し前のある日、私は既存のアプリにちょっとだけ手を加えてログを出力しようとしていた。その際、配列を用意しようとしたのだが、Javaシロウトである私はまず配列の定義方法を記憶していなかった(ちなみに、「配列」というのはデータの連なりのこと。「定義」というのは、「いまからこういうものを使いますよ」というソースコード上の挨拶である)。しかし、インターネットが普及した現代では、記憶していないことは決して大きな問題ではない。私は「java 配列 定義」などという言葉で検索した。するとArrayListというクラスを使ったサンプルコードが出てきたので、それをありがたく拝借することにした。

しかし、javaには上記とは別に「配列」も存在する。それなのにArrayListという類似した仕組みもあり、さらにはListなる別物も存在する。C言語だと配列一択なのに、なんだこのバリエーションは? 私は少し混乱し、いったん業務を脇に置いて「Java ArrayList 配列 違い」などでこれらのことを再度Googleに質問することになった。結果、以下のような違いがあることを知った。

配列:C言語でいうところの配列とほぼ同じ。要素の数はあらかじめ決められている。
ArrayList:要素数が可変。更に並び順の変更が容易であるなど、柔軟性に富んでいる
List:インターフェース

出たよ、インターフェイス。こういうところがJavaのJavaたる所以だな、とディスプレイを睨みながら思った。つまりListはあくまで概念のようなもので、ArrayListはそれを実際に使えるようにするために、実体を与えられた存在というわけだ。このように概念だけの存在が、javaには存在する。プログラマーにとってはしたり顔で話したいポイントであり、ノンプログラマーには「ざけんなボケ」案件だろう。

辛くなる話をもっと書いてみたい

今回はJavaに対する私の苦手意識を吐露してみた。プログラマーとして三下以下である私のささやかな苦しみである。テクニカルにまつわる話は、正確に伝えなければならないという側面があり、なかなか私のような不得手な人間の声とは巡り合えない。日々の辛みを柔らかく発信し、「私みたいな人もいるんだな」となんとかテクニカルにしがみついている同士に思ってもらえれば幸いである。

この記事が気に入ったらサポートをしてみませんか?