さーて、Javaでの実装、
Azureusのソースコードを見てみますか。しかし、フォルダやファイルが多すぎて、どこにbencode関連のファイルがあるのやら。。。Azureusのフォルダに移動してから(cd Azureus_2.3.0.2_source)、grepしてみましょう!
grep -r bencode .
.....
.....
./org/gudy/azureus2/core3/util/BDecoder.java
なるほどー。すごい奥深くにbencode関連のファイルが隠されてますな。BDecoder.java階層まで移動すると、BEncoder.javaというファイルもあるのがわかります。2つのファイルにわかれているようです。さて、その内容は。。。
if (object instanceof ...) {...}で分岐させるようです。PythonのオリジナルBitTorrentのソースコードを見ていなければ、大波に飲まれてしまい、すぐにファイルを閉じてしまいそうです。。。飲まれました。
どの言語が優れている云々ではない。ウェブアプリでもなければ、書く方(実装)は、JavaやC++が望ましい場合も多い。しかし、読む方(コード・リーディング)から言えば、同じプロトコルやソフトウェアのPython(Ruby)実装を読んだ方が、全体像がつかみやすい。コード・リーディングこそ、PythonやRubyで始めるべき。Pythonには比較的大きなソフトウェア、プロジェクトがある。BitTorrentのソースコードを読むなんて、それだけでわくわくしませんか?