Scribble at 2024-07-10 17:20:56 Last modified: 2024-07-14 08:07:06

添付画像

腰を据えて、丁寧に新しいプログラミング言語を習得したいという欲求があって、これは全く仕事とは関係なく趣味的な動機にすぎないのだが、趣味としては悪くないと思う。還暦を前にして年寄りの手慰みという感はあるが、それでも都内に履いて捨てるほどいる君らのような凡人に比べたら優秀なプログラマだという自覚はあるのでね。

いまのところ、仕事でも使ったことがあって一通り使える言語と言えば、C, Perl, Python, PHP というわけで、あと他に OCaml か Objective-C でも使えていたら "C3PO" になったのだが、冗談はともかく、他のメジャーな言語も学んでおきたいという意欲はある。たとえば、典型として Java だ。もちろん、教養として Black Book は読んだし、手元には Herbert Schildt の Java: The Complete Reference (Osborne, 2007) の第7版もあるが、なにせ SE6 の時代の知識で止まっているのだから、現場では使い物にならないだろう。もちろん現実の仕事の現場で使えない技術なんて、いくら分厚い洋書を読んでいても丘教練でしかなく、そんなものは「スキル」のうちには入らない。

そんなわけで、さきほど 1Z0-818 (Java Bronze SE) 試験のテキストを買ってきたところだ。ほとんどプログラミングの初心者向けだが、どれほど開発者としてのキャリアや実績があろうと、こんなことにつまらないアカデミズムやプライドなど不要である。どれほど優秀でも初心者は初心者以上のものではなく、気取っていきなり Silver や Gold のテキストを買って、ふたたび丘教練だけで終わらせるのは、日曜プログラマのジジイならともかく、われわれプロのエンジニアの勉強としては浪費でしかない。そんな浪費にお金や時間を使うくらいなら、既に習得した Python や PHP の更に高度な知識や、厳密な動作仕様の理解に励むべきであろう。要するに、「色々な言語を使える」なんてことだけならプロの開発者としての価値はないわけだよ。現に、弊社にも山のように送られてくる人材派遣会社の営業メールには、ぞろぞろと扱える言語の一覧が並んでいるだけの、およそどの言語でもロクな案件に従事したこともなければ、案件でもロクな地位で関わっていないであろう、コーダの紹介とかが書かれていたりする。実際、自ら「言語おたく」を名乗る Matz のような人物を例外として、有能なプログラマというのは、そんなにたくさんの言語を扱えるわけでもないし、そもそもそんな必要はないのだ。よって、多くの言語を知ってるなんていうことを目標に習得するのは、完全に「自意識(過剰)」でしかなく、他人から格好良く見えるというだけのポーズにすぎないのであって、エンジニアとしての向上という目標のためにもっと大切なことを避けるための自己欺瞞だと言って良い。もし自覚がないなら、そんな言語おたくになろうとする動機を反省してみて、そんな無益な目標はさっさと捨てることである。

繰り返すが、言語を10も20も(「知っている」くらいならともかく)実務として使ってきたなどという有能なエンジニアなんて殆どいないし、それで転職がしやすくなるわけでもなければ、年収が3,000万円になるわけでもない。

[追記:2024-07-11] ちなみに、自宅の Raspberry Pi Zero W へ JDK を入れるのはやめた。32ビット版の OpenJDK を入れるには、あまりにも面倒な手順が必要だし、そもそも現在の Java は32ビットでの動作を十分にサポートし続けるよう想定しているとは思えない。これは無理に32ビットの Raspberry Pi で動かそうとするのは諦めたほうが健全だ。そういう意味では、Java の理念である "Run anywhere" というのは、"Run anywhere... if JDK (JRE) can be installed" という制約条件があるのは確かなのだ。

なお、Greg Flurry, Java on the Raspberry Pi (Apress, 2021)という本があって、これには Raspberry Pi Zero W へ ARM 版の Java をインストールする方法が書かれている。要するに Azulu がリリースしている armhf 32ビット版のアーカイブを wget で /opt/jdk というディレクトリに入れて展開し、update-alternatives でシンボリック・リンクを作成してパスを通すだけというわけである。ただし、先に入れた default-java (OpenJDK 11) がうまく remove できなくて、パスを Azulu のものへ変更しても "illegal instruction" のエラーが出てしまう。Java 17.0.11+9 を入れたのだが、新しすぎたんだろうか。ともかく、Java を数年おきで試しては止めてしまう一つの理由として、いったん入れてしまうと綺麗に削除できないという点がある。色々なところに依存関係を作ったり必要なツールを追加するため、単独で JDK だけを消してもぜんぜん何にも環境が変わらないという、まるで赤いパッケージで知られているアンチ・ウイルスのソフトウェアみたいだ。この面倒臭さがあって、インストールであれこれと時間や手間がかかり、使い終わっても面倒が多い。Windows 用の PHP なんて、適当なところに展開して Apache の設定を変えるだけだし、不要になったらフォルダごと消せば終わりだ。レジストリも使わないし、まったくシンプルな運用ができる。

なお Java 8 (openjdk-8-jdk) は、apt で特に問題もなく入ったので、どうしても Java を使いたいなら、Java 8 までという条件付きなら簡単に導入できる。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook