最もタメになる「初心者用言語」は Java
なんだか楽しそうだったので・・・
最もタメになる「初心者用言語」は JavaScript。 - IT戦記
最もタメになる「初心者用言語」は Python! - 西尾泰和のはてなダイアリー
最もタメになる「初心者用言語」はC++ - おびなたのはてな日記"
サンプル
まずこいつを見てくれ。こいつをどう思う?
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import sun.nio.cs.ext.MS932; /** * 「hoge.txt」っていうテキストファイルの中身を出力するよ。 */ public class Main { public static void main(String[] args) { // Fileオブジェクトを作る File file = new File( "hoge.txt" ); // Fileオブジェクトからファイル入力ストリームを作る FileInputStream fileInputStream; try { fileInputStream = new FileInputStream( file ); } catch (FileNotFoundException e) { System.err.println( "ファイルがないです><" ); return; } // 「MS932」という文字コードを表す定数オブジェクトを取得する。 Charset ms932 = MS932.defaultCharset(); InputStreamReader inputStreamReader = null; BufferedReader bufferedReader = null; try { // 文字列リーダーを作る。(材料は入力ストリームと文字コード) inputStreamReader = new InputStreamReader( fileInputStream, ms932 ); // バッファリング機能を備えた文字列リーダーを作る。 bufferedReader = new BufferedReader( inputStreamReader ); // BufferedReader#readLine() が null を返すまで // (ストリームの終わりに到達するまで)繰り返し for( String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine() ) { // 標準出力に出力 System.out.println(line); } } catch (IOException e) { System.err.println( "ファイル入力エラーです><" + e.getMessage() ); }finally{ // BufferedReaderを閉じる if( bufferedReader != null ) { try{ bufferedReader.close(); }catch(IOException e){} } // InputStreamReaderを閉じる if( inputStreamReader != null ) { try{ inputStreamReader.close(); }catch(IOException e){} } // ファイル入力ストリームを閉じる try{ fileInputStream.close(); }catch(IOException e){} } } }
すごく・・・長いです。
Javaは長い
長いですね。
読むのもイヤになります。
Rubyなら三行で書けるのに。
f = open( "hoge.txt" ) f.each {|line| print line} f.close
「Rubyならこれだけのコード量でいいのに、あんな冗長なコードを書かないとファイルの中身すら見れないなんてヒドい!とても初心者にはお勧めできない!!」
「そんなことはないよ。逆だよ」
長いのは優しさだよ
Javaのソースコードは長いですが、初心者がソースを追うときに手がかりがいっぱいあるのは良いことです。見たことのないクラスが出てきても、ソースファイルの上の方でimport宣言されているので、JavaDocを引くのが簡単なのです。JavaDocを見れば日本語の説明があるという「安心感」は、初心者にとって一番大切だと思います。
プログラミングを始めてみた頃のことを思い返すと、最初は右も左もわからなくて、本屋に行っても何を買ったらいいのかわからないし、JavaHouseに相談しても質問の仕方が悪いとボコボコにされるしで、もう怖くて怖くて引きこもるしかなかったです。そんな状況で日本語のJavaDocがあったのは本当に心強かったです。
楽しくはないけど
最初のうちは具体的なコードとJavaDocと言語仕様を何回も見て、自分のできる範囲でコツコツと経験値を貯めていくのが一番です。地道にコツコツと勉強したり実践したりするうちに、見たことのあるクラスが増えてきて、レベルが少しずつ上がってきます。はぐれメタルはなかなか出てこないし、地道な積み重ねなので、あまり楽しくはないかもしれません。
仕事でプログラムを書く場合、初心者にとって一番タメになるのは「ぶっちゃけ、プログラミングなんて簡単には覚えらんないし、楽しいことばかりでもないよ。」という現実だと思います。
そんなわけで、入り口だけ優しい言語よりも、見るからに厳しくて大変な道のりなんだけど、コツコツやれば何とかモノにできるし、地道な旅をサポートしてくれる心強い環境が整っているJavaが初心者のタメになるに一票。
最後に
∧_∧ ( ´∀`)< ぬるぽ
追記
間違ってました!
こちらで詳しく書かれていますが
MS932.defaultCharset()はMS932が取得できるとは限らない。
Charset ms932 = MS932.defaultCharset();
って書いても「MS932」は取得できません。MS932の親クラスである Charset.defaultCharset() が呼ばれるだけでした。文字コードを明示的に取得するには
Charset ms932 = Charset.forName("MS932");
ってやるのがいいみたいです。