大量生産される新卒デビューJavaプログラマがぶつかる壁 - GoTheDistance
より。
お決まりのSystem.out.println("HelloWorld")に始まって、for,while,if,switch・・・といったものをまず覚えた。変数についてはintとかStringとかまー色々あるのね的に考えていた。とにかく文法を学ばないとコンパイルに通らない。コンパイルできないと実行できない。それが死活問題だった。コンパイルが何をやっているのかもよく知らなかったし、環境変数のPATHなども知らなかった。
その次に苦労したのがmain以外の関数の書き方だった。何しろ「戻り値」と「引数」が全然わからなかった。returnって何処で書けばいいのだろうかと真剣に悩んでしまったほど、私はプログラムの世界がわからなかった。
(中略)
上記のようなプログラムが書けるまで、1ヶ月ぐらいかかった。
- main関数はstaticのため、newしてオブジェクトを参照してやらないとコンパイル通らない。
- 関数というものが、インプットがあってアウトプットを返すものと体でわかるのに時間がかかった。
- 修飾子とか型とか引数とか一気に覚えたので消化不良を起こした。
などの理由だった。特にstaticのところでは苦労した。
以前、初心者向けの掲示板とか見て回っていた頃には、Javaでメソッドの外側に実行文を書いてしまう人とかをちょくちょく見かけましたし、上の例であるように、mainはstaticメソッドだからインスタンスを作らなくても実行できるけどmainから呼び出されるメソッドは(staticを付けない限り)インスタンスをnewしなければならない、というのは初心者にとってはかなり大きな壁だと思う。
初心者に言語を教えるにあたり、「#include
Diksamにトップレベルがあるのは、crowbarから.yを引き継いだ、という理由もありますが、その辺を考慮したという面もなくはないです。
少なからぬ初心者が、HSPとか行番号つきBASICとかを支持「してしまう」(とあえて書く)事実は、初心者向けの言語を考えるのなら、避けては通れないと思うんですよね。
参考リンク:
おまじない