Winny初期ノードのエンコーダー

特に役に立つものではないですが、小ネタということで、練習をかねてアプレットを作ってみました。

Winny初期ノードのエンコーダー

プラグインが古いと動かないのでGetJavaリンクもつけてみました。

Javaの感想

まだ1日目ですが、かなりイライラしています。分からないから余計にそうなのかもしれないですけど。

次のところが気に入りませんでした。

配列操作

配列の操作がCよりもストレスです。Dとは比較になりません。たぶんコンテナクラスとか使えば楽になるのでしょうけど、まだよく分かりません。
まず、配列のスライス方法が分かりません。array[2 .. 5]としたい。

unsignedがない

int型やbyte型の符号なしがないので、暗号のアルゴリズムなどビット演算を多用するとかなりのストレスになります。たとえば「(byte)-20」をintへキャストすると上位28ビットが全てONになってしまいます。そんなばかな・・・と思いました。
整数型の最大値の話だけならunsignedの代わりに1つ大きなサイズの型を使えばいいだけですが、桁溢れやビット演算ではどうしようもないほど障害になるので、対象全体を型変換した配列にコピーしたりの処理が必要になってきそうです。たぶん。

型に厳格なのか?

short型変数へint型変数の値を代入すると警告ではなくエラーとなります。これはint型変数の値が0でも1でもです。配列になると面倒ですし、値の管理ぐらい自分でしてるわい!と思ってしまいます。
型に厳格な言語なのかと思わせる反面、コンテナなどObject型でなにもかも扱おうとしているような気がします。テンプレートがなかったからかもしれないですけど、キャストさせるのはよくない結果になる不安があります。

と、System.arraycopyの入力/出力引数がmemcpyと逆なのでややこしい・・・。

言語仕様は、D言語のほうが好みです。