Javaこれは、Javaに限った話ではないが、最近の流れとして、プログラミング言語がどれもこれも似てきてしまっているように思う*1。あまりに言語が似すぎてしまうと、何を選んでも大差ない、選ぶ基準は動かせるプラットフォームとか、動作速度とか、そういった部分になってきてしまう。言語を選ぶ基準がその言語の特徴的な機能や、その言語でしか出来ないことでなくなってしまうことに、ワクワク感が薄れてしまうのは私だけだろうか。AltJava言語達このブログの読者の皆さんならきっとご存知と思うが、JavaはJava8でついに重い腰を上げて関数型の構文が取り入れた。そのあたりから進化のスピードが加速してきており、その後はJava10で型推論が導入されたり、Java12ではSwitch式が取り入れられたりと枚挙にいとまがない。Java8が世に出る以前から、AltJava言語*2では既に取り入れられていたものが多くある。諸事情により、Java6で長い間更新が滞ってしまっていたこともあり、その間に多くのAltJavaが栄えたのではないかと思う。その機能をよこせさて、このように「公式がなかなかやってくれないから俺がやるぜ!」と名乗りを上げた多数の言語達が、その当時Javaがまだ持っていなかった先進的な機能をどんどん繰り出すことによって優位性を誇示していた。現在、Javaは貪欲にそれらの機能を吸収し続けていっており、どんどん複雑になってきている*3。こんな状況だから、心無い開発者から「もうその機能はJava自体で使えるんだから、AltJavaはいらないよねー」と言った声が聴こえてくると、とても悲しい。誤解しないで欲しいのは、公式に採用されたことは非常に喜ばしいことであることに違いはない。世の中に広く普及するための第一歩を踏み出したのだ。それでAltJavaのことを忘れないであげて欲しいのだ。牙を抜かれたライオンのような扱いはやめてあげて欲しい。削る上であげたようなJavaの貪欲さとは対照的な美しさ、それはシンプルであることだと思う。JavaはJVMというシンプルなスタックマシンで動いている。コアはシンプルな方が美しい。本当に必要な機能だけを卒なく美しく提供してくれればそれでいい。Javaもかつては無駄な*4機能は削ぎ落す選択をしていた。プロパティ*5を扱えなかったり、演算子もオーバーロードできないし、もちろんポインタ*6も使えない。この状況だから、そのうちJavaでもプロパティが使えて、演算子もオーバーロードできて、そしてついにはポインタが使えるようになってしまうかもしれない。そんなJavaはたぶんつまらない。私はJavaをJava1.4の頃から使っているのだが、あの頃の不自由さが今思うと非常に懐かしい*7。多様性の海にとりとめもなく書いてきたが、Javaに限らず、プログラミング言語は他の多種多様な言語の様々な機能に囲まれ、影響され、磨かれて進化してきたのだ。AltJavaが衰退しようとも、太りすぎたJavaがシンプルな新言語に将来もしかしたら駆逐されようとも、それはそれで。この弱肉強食のプログラミングの多様性を最後まで見届けようと私は思う。ZGCの改善やSwitch式の実現など新機能。Tumblr広告を非表示にするもっと読むコメントを書く2019-12-18Windows環境にRustをインストールするRust突然、RustをやりたくなったのでWindows環境にインストールしてみた。その時のインストール手順をメモしておく。環境やバージョンなどは以下の通り。最近インストールばっかりしてるなー。2019の方から入れてみた。startedのハローワールドまでやってみた。Codeで開いてみたところ。runで実行できたおしまい。VBAでUTF-8でパーセントエンコードされた文字列をデコードする必要があり、ちょっと調べてみたらADODB.Streamを使うと出来そうだったのでやってみた。Library」を追加してください。Function使い方PercentDecodeがパブリック関数になっているので、こちらをExcelの数式などとして利用するだけ。引数はパーセントエンコードされた文字列を受け取り、戻り値はデコードした文字列となる。デモ注意なお、すべての文字が3バイトにパーセントエンコードされていた場合しか想定していません。例外処理なども省略しています。テスト用ということで利用する際はもうちょっとアレンジが必要。Tumblr広告を非表示にするもっと読むコメントを書く2019-12-11Windows環境にElixirをインストールするElixir突然、ElixirをやりたくなったのでWindows環境にインストールしてみた。その時のインストール手順のスクリーンショットを貼っておきます。環境やバージョンなどは以下の通り。公式サイトからインストーラーのexe1をダウンロード。Erlangおしまい。Tumblr広告を非表示にするもっと読むコメントを書く2019-12-10Logbackで開始時に出るLogback自身のログの出力をやめたいLogbackLogback自身のログが最初に大量に出るlogbackを導入したときに、プログラム開始時にlogback自身のログが大量に出ることがあります。いうのを指定するだけで、消せるみたい。Tumblr広告を非表示にするもっと読むコメントを書く2019-12-07Kotlinで二つのリストの要素をペアにしたリストやマップにまとめるKotlinzipメソッドKotlinでzipはどうやるのかな?と思って調べた内容です。ありそうだけど、とりあえずシンプルなものをメモしておく。型となっているようです(ところでoutってなんだ?勉強不足)。これでペアのリストが得られた。"a"associateメソッドさて、次はマップにまとめたい。