スクールに来る人のかなりがJavaを自習して来ていますが、ほとんどの人がClassの章でつっかかります。
Classがなんとかなっても次はIteratorを始めとする参照を利用したプログラムでつまります。
何十人も教育してきましたけど、自習でできる事はたかが知れているというのが実感です。JDKで独習している人はいますが、Eclipseの利用にいたる人はほとんどいませんし。Eclipseって単語を知らない場合がほとんど。
PCの利用云々でなく、情報収集能力があるかないかでしょう。
PC操作できるからってプログラムできるわけではないです。
(2).Javaはあまり利用されていない。は誤解
Javaはプログラム言語の中ではトップシェアの言語です。取扱金額、および人数においても現在トップに位置しています。
内部資料を出す事ができないため、外部リンクを示します。
あなたが今すぐ学ぶべき10のプログラミング言語:phpspot開発日誌
TIOBE Software - The Coding Standards Company(言語別のシェア)
金額や人数という点ですが、三菱東京UFJ銀行向け大規模リスク管理システムの構築において、オープンソース開発フレームワークSeasar2を採用という記事ではSeasar2というJavaプロダクトの三菱東京UFJ銀行への採用が記事になっています。Javaはエンタープライズと呼ばれる分野で実際に多数利用されており、実績もあります。
エンタープライズ分野は平気で億の単位の仕事が大量にあったりします。必要人員も百の単位がごろごろあります。
C言語やC++言語で億の単位の仕事がどの程度あるのでしょうか?現在億の単位の仕事が普通にある言語はCOBOL、PL/I、Javaぐらいの物です。
(3).スクールでは現場的な体験はできない。は誤解
課題のほとんどは実際の現場で利用されたプログラムを利用します。また卒業課題は非常に厳しいスケジュールの中で実習していただきます。現場にかなり近い感覚でやれるようにしています。
ただ、現場というのは千差万別のためすべての現場を網羅する事は不可能なのは事実です。
それでも現場を再現する事に最大限の努力をしています。
(4).Javaができても就職できない。は誤解
やや痛い所もあります。就職できない方はJava云々の前になんらかの理由がある場合が多いです。Javaを勉強したからと言って本当に就職できるかというのは確実ではない。
しかしながら、当スクールでは極力人間力の育成にもつとめています。基本はコミュニケーションです。スケジュール通りにカリュキュラムをこなしていただく中で、カウンセリングなどし、人格育成の努力をおしみません。
ほかにも誤解があるような気がしますが、スクールで教育する事はプログラム言語だけではありません。他者と話す事その物が教育だと思うのです。
スクールは共の学ぶ友がいて、他者と実地に会話できるというのが大きいと思います。
ぼくの文章がまずいようでうまく伝わらなかったかもしれませんが、ぼくの書いている内容はそのような内容です。同じことをそのままに繰返すだけでは私が想定していた効果は出ません。単なる反復練習なら自分で勝手にやってればいいわけですし。
alternative jiangmin - 理解の仕方の癖は人それぞれかも
ここで同じ事項や同じ範囲って書いたのがまずいのかな?通常プログラムではいくつもの事項があります。例えば、ファイル処理なり、クラスの利用なり。この同じ事項を3回繰替えすように企画してあるという事で、まったく同じ事を繰り返すという意図ではないです。当スクールでは基本的に同じ事項を3回くりかえします。実習、問題集、課題です。実習はオリジナルテキストを利用して問題を問いてもらいます。問題の数は適度にしてあります。問題集は現在市販の物を利用しており、実習でやった範囲とまったく同じ範囲を解きます。課題は実習と問題集の範囲を利用して実際にプログラムを組みます。
IT-Lab. 授業開発研究所(Blog) 反復学習関する事を書いた事でいろいろ学べた
いくらなんでもそんなレベルの低い教育はしてないです。
そのための実習、問題集、課題の3セットなのであって、「実習」では順番に事項を勉強します。「問題集」はJavaの基本文法を知っている前提用の問題集で、「実習」をやってないと解けません。とうぜん「実習」とはまったく別のものです。
「課題」は「実習」と「問題集」をやった前提で教えていない事項を含みます。教えていないですが「実習」と「問題集」に記述のある事項を組合せてかつ一工夫すると課題を達成できるようになっています。
J2SEの範囲だけでこれをやって60時間、1日7時間として9日間程度です。だいたいの人は簡単なバッチプログラム程度なら仕様さえ渡せばプログラム組めるようになります。
最終的には自分で仕様を作成できる所までで280時間(40日)って事になります。
これだけやってもまだレベルは低い教育状態だとおもってます。今後もさらに発展するつもりです。
いずれにしてもBlogというか文章って意図をちゃんと伝えるのが難しいです。生徒との会話でも相手の生きてきた背景を知っているわけではないので、言葉の意味の取り方がかなり人によって違う。
やわらかめに言っても強い調子のように取られたり、強い調子で言ってもやわらかく取られたり。大変に難しいです。
Blog書いて他者にトラックバックを打つのはそういった点を考えるためでもあります。
今回はいろいろとご意見ありがとうございます。大変参考になりました。
以下のBlogの反応は読みました。
green - 反復学習考
遊学塾-興味津々-: 反復練習について
alternative jiangmin - green - 反復学習考
まずいろいろ書く前に、ぼくがこういった事を書くのは議論をしたいのでなくて、とにかく生徒によりよい学習成果を出したいというのが基本的な思い。
当然のように今目の前には日々授業を実施している生徒がいる。その生徒に教育のやり方を変えたり、生徒で教育方法を実験するって事はできない。いままで成果が出ていた(成果が落ちなかった)方法を実施する。
しかしながら、さらに成果の上る方法を模索はすべきです。日々忙しいとどうしても視野が狭くなっているのを感じますので。
そういう視点で書いていますので、議論していると見ると噛み合わない所があるかもしれませんがご了承ください。
まずは alternative jiangmin さんに対してのお返事。
当スクールでは基本的に同じ事項を3回くりかえします。実習、問題集、課題です。実習はオリジナルテキストを利用して問題を問いてもらいます。問題の数は適度にしてあります。問題集は現在市販の物を利用しており、実習でやった範囲とまったく同じ範囲を解きます。課題は実習と問題集の範囲を利用して実際にプログラムを組みます。なんつーか、反復練習がどうのより、カリキュラムの構成が悪い。各段階毎に確実に習得して、一度通過したところは身に付いていることを前提にしているのがいけない。どうせ1回ではわからないんだから、同じ話題が適当な間隔を開けて形を変えながら何度もしつこく出てくる構成にすれば、通り一遍やるだけで自動的に復習もできて、1回目でわからなくても何度もチャンスがあって、休みがちでもなんとかなって、いいと思うんだけどなぁ。
alternative jiangmin - green - 反復学習考
一度では決して覚えない、が基本スタンスです。
しかし例えば中学校とか高校は、時間の制約があるのでこういう事は無理なのではないだろうか?授業時間に制限があり、かつ教える範囲も確定しているので。大学だと教員が教室等で授業を行う時間と学生が事前・事後に教室外において準備学習・復習を行う時間の合計で、標準45時間の学修を要する教育内容をもって1単位とするという設置基準の規定(大学院設置基準15条、大学設置基準21条以下参照)があるから3回くりかえすのが普通という前提なんだろう。
当スクールは授業時間設定がそもそも誰にも制限されず自分達で設定できているのでカリュキュラムを組んでからかかる時間を全部で280時間と算出しているので、あまりカリュキュラム構成上の問題は発生してない。
カリュキュラムは3回は同じ事項を繰り返し実施する事を前提とし、それでも身につかなければ追加で課題を出す。かなり個別指導に近いのでできてます。
で遊学塾さんとgreenさん。まえの記事では比較して以下みたいに書きました。
って書いたけど後で読みなおしてみると、対立はしてないんですね。書き方が違うので違う感じに読めるってだけでした。結構時間ない中で読んでいるので斜め読みになっているみたいです。反省。対立している意見のように見える。明らかに視点が違う。
IT-Lab. 授業開発研究所(Blog) 反復学習に学習効果はあるのか
今回書いてある事は遊学塾さんとgreenさんとも内容が同じに読めます。
暗記術などでも良く言われる、関連付けの思考方法があるって事を教え、それを自分で実施できるようになる事が望ましいという視点だと思います。また一つの手段に限定せず多様に工夫をすべしというのも趣旨のように読めます。
ここでぼくが感想を書くより両者の記事をちゃんと読んでいただいた方がわかりやすい気がします。
考えているとたどりつく結論は結構似てくるのだな、というのがわかったのが一番の収穫かもしれません。
今回いろいろ思いだした事があります。まず記憶の種類について。
記憶には三種類あると言われます。
- 身体記憶
- 繰り返しにより体に覚えさせる記憶。自転車とかはこれに近い。
- 意味記憶
- 本来の意味やその起源としての意味による記憶。New Yorkが世界史的な関連のある名前であるという覚え方。
- エピソード記憶
- 一定のシナリオにより覚える記憶。例えば、アメリカの歴史を物語として覚える事で、登場する人物のエピソードを覚える等。Wikipedia的にリンクをたどる感覚に近く、連想記憶と呼ばれる事もある。
身体記憶以外は結局記憶力頼りなのではないかと思った事もあるのですが、あらためて再度ちゃんと勉強してみるのも参考になるかな、と思いなおしています。やみくもに経験だけにたよったり、思考実験だけにたよるよりはましなので。
まずは目についた以下の本を確認しようとおもってます。
ほかになんかこういった分野で参考になりそうな本があったらどなたか教えていただけるとありがたい。よろしくお願いします。
| 東大生が教える!超暗記術 徳田 和嘉子 (2006/03/03) ダイヤモンド社 この商品の詳細を見る |
| 学習力トレーニング 海保 博之 (2004/04) 岩波書店 この商品の詳細を見る |
| 勉強法が変わる本―心理学からのアドバイス 市川 伸一 (2000/06) 岩波書店 この商品の詳細を見る |
Javaスクールの危険 - The Joel on Software Translation Project
上記の記事において「Javaスクール」というのはJavaのみで授業をしている「大学」をおもに指している。
しかし、「Javaスクール」と書いてあるからには、大学ではないが「Javaスクール」で講義をしているわたしも何らかの感想を書いてみたい。
これは事実だ!否定のしようもない。結論を言うなら、CもSchemeも教えないJavaスクールというのは、本当のコンピュータサイエンスを教えているとは言えないのだ。
Javaスクールの危険 - The Joel on Software Translation Project
ただ当スクールはコンピュータサイエンスを教えるのが目的ではないので、教えていないだけなのだけど。
これも事実だ!しかしJavaは2ヶ月でまあまあの物が実装できるようになるが、SchemeとHaskellとCのポインタは2ヶ月ではまにあわない。SchemeとHaskellとCのポインタが使える人はみな、Javaを使い始めて2日で経験5年のJavaプログラマよりいいコードを書くようになる。
Javaスクールの危険 - The Joel on Software Translation Project
実際わたしもSchemeは10分とかからないで文法は覚えられた。でもアプリケーションを作成するとなると別だ。教育言語のSchemeはとてもシンプルで、この言語を頭のいい学生に教えるのには10分くらいしかかからない。
Javaスクールの危険 - The Joel on Software Translation Project
SchemeとHaskellとCのポインタを利用して実際に動作するアプリケーションを作成するには2ヶ月では不足する。
Schemeを例にすればSRFIを利用しないでアプリケーションを作成するのはどうかと思うし、slibを利用しないのも不便だ。GUIを作成したければ、GTKかQtを覚えなければいけない。
正直基盤として覚えなければいけない事が多すぎる。
Javaであればデータベースと合せて学習しても1ヶ月もあれば動くアプリケーションが作成できる。
2ヶ月もすればLinux上でデータベースを利用してWebアプリケーションが作成できる。フレームワークを利用すればセキュリティも下手に作成するよりは増しな物ができる。(増しなだけで完全ではないが)
「コンピュータサイエンス」を教えるならJavaは不適切だ。あまりに事実すぎる。JavaをComputer Scienceで教えるというのは、誤った「ゆとり教育」にしか見えないのだが。
404 Blog Not Found:Computer Science 向きの言語
それはそうなのだが、「コンピュータサイエンス」を必要とする人がいったいどの程度いるのか。
業務プログラムは通常最先端から10年は遅れており、またエキサイティングな分野ではない。
しかし普通の人がお金を貰えるのは業務プログラムの分野しかない。そして業務プログラムは絶対に必要だ。業務プログラムの分野は遅れている分ツール類がそろっており「コンピュータサイエンス」は正直な所それほど必要には思えない。
「コンピュータサイエンス」などより、日本語読解能力の方がよっぽど必要だ。コミュニケーション能力は「コンピュータサイエンス」などより学ぶのに時間がかかる。人生の全てをかける事項だからスクールではその簡単な部分しか教えられない。
どこまで教えるのか、という事にすぎない。時間に制限があり、お金にも制限がある。物事には常に制限があり、その制限の中でいかに目的のための最大の結果を与える事ができるかが重要なのだ。
さらに言うとJavaで授業をしてもコンピュータサイエンスに関して理解する人は理解するし、Schemeであっても理解しない人は理解しない。理解する割合に本当に変化が生じるのかは疑問だ。
そんなのは自分がJavaを良く知りませんという告白にすぎない。優秀なのどうか知りたいなら、Iteratorでも書かせれば分かる。かつては学生の出来がいいかどうかは、再帰アルゴリズムを数秒で書き出すことができるかとか、連結リストを操作するポインタを使った関数を、ホワイトボードに書くのと同じくらいの早さで実装できるか見れば良かった。しかしJavaスクールの卒業生たちについては、彼らが躓いているのが十分な教育を受けていないためなのか、それとも優れたプログラミング仕事をするために必要な脳の部分を持ち合わせていないためなのか、わからないのだ。
Javaスクールの危険 - The Joel on Software Translation Project
もしくはJavaBeansを作成できるかでもわかる。
JavaBeansをListにつっこみIteratorで回し、順次処理するプログラムの課題を数分で作成できればまあ良いだろう。
あとは意図的にヌルポがでるプログラムを数秒で直せるかとか。いくらでも試験する方法などある。
そういった課題を出せない方に能力の問題があるだけにも見える。
まあコンピュータサイエンスなど知らないでプログラムができるようにして、プログラマのいらない世界が早く来てほしいとわたしは望んでいるのだが。あと何年かかるだろうか。
前のと大分イメージがちがうんですけどね。今後も時々変更するかもしれません。
遊学塾-興味津々-: トレーニングその2
green - 反復学習
対立している意見のように見える。明らかに視点が違う。
けれども絶対に適当なところでは手を打たなかった。そういうことを2,3回繰り返せば、やがて宿題もきっちりやるようになる。
そうした反復で、ある程度力がついて始めて、「面白い」という部分を見出す力がついてくるのだ。
green - 反復学習
運動の基礎トレーニングのように、繰り返し練習する学習トレーニングが、何か違うんじゃないかな?って思っているのは、実際に接してきた子供たちを見ていて、そういう方針の担任だった子と、そうでない担任だった子の間に、顕著な差を感じることができないという経験からきています。
遊学塾-興味津々-: トレーニングその2
どうしてこれほど差がでるのか。一方が塾の講師であり、一方は背景不明の人物だからか。
まったく物事を見ている視点が違う。これは単純に比較してはいけない事なのだろうか?
遊学塾の方では例えで漢字の書き取りを例に挙げている。漢字書き取りを何回もやらせた所で顕著な差が出ないと書いている。しかし何に顕著な差が出ていないのだろうか?
この文章を見るかぎり、応用力もしくは思考能力の差について語っているように見える。初めて出会った出来事にどう対応することができるかという能力を身につけるのが大事だと思います。
遊学塾-興味津々-: トレーニングその2
漢字書き取りを何度もやらせた所で、応用能力や思考能力に差がでないと断言している。それも10数年講師をしているという事は見ている生徒数は100人は越えているはずだ(わたしだって2年程度で40人越えるのだから)。
では他方のgreenのサイトの方はどうか。
この文章は読み方によっては思考能力が付いてくる、といっているように読める。「見出す力」は思考の能力だろうし。見出せるという事は応用能力もいずれつくと言う事だろう。そうした反復で、ある程度力がついて始めて、「面白い」という部分を見出す力がついてくるのだ。
green - 反復学習
そしてここで例にしているのは九九や英単語20の暗記である。あまり漢字の書き取り数回と違うようには見えない。いやそれとも違うのだろうか?
視点の大きな違いの一つはおそらく、一方は耐えさせる事によっての学習効果はないとしており、もう一方は耐えさせる事が精神の成長に良いとしている事だと思う。
の回答はきっと以下の考え方があるからだ。漢字を何回もたくさん書く。
っていう漢字練習方法。
この練習方法は、とても広まっていて、これに頼る人が大勢いました。
遊学塾-興味津々-: トレーニングその2
本当に効果があるのだろうか?いや本当に効果がないのだろうか?ベースの部分はどうしても反復が必要になる。それをやらせるかやらせないか、ぼんやりとやり過ごさせるかきっちりと叩き込むかでその後の歩みは随分と違うものになるだろう。
green - 反復学習
経験というのは常に人を騙す。そして無知も人を騙す。
どちらも不正確だ。であれば数値を示す必要があると思われる。さて、どうやってこれをデータを取得すれば良いのだろうか?
おそらく検証が難しい分野と思われる。そしてデータを取ってもその分析に多大に先入観が入ると思われる。
さて、ちゃんとしたデータはあるのだろうか?
しかし以下のエントリーを読んでいろいろと考える所があります。
遊学塾-興味津々-: トレーニング
遊学塾-興味津々-: トレーニングその2
しあわせのかたち
漢字を何回もたくさん書く。余分なことを考えず、とにかくやれ。
ほとんど同じ事を書いているが観点が違う。一方はとにかくやる事に否定的な観点。一方は肯定的な観点。「ごちゃごちゃ考えているヒマがあったら手を動かしましょう」
そもそも言っているタイミングが違いすぎるから同じには見れないのだが、それでも興味深い。
初めて出会った出来事にどう対応することができるか
やっぱりそれでも繰り返し練習で、すべての問題をパターン化する。 基礎部分に時間をかけなくていいから、応用問題の練習に時間をかけることができる。
プログラムの場合初めて出会う出来事というのはほとんどない。ほとんどのアルゴリズムとデータ構造はすでに公知の事項で、新たに生みだすような機会があるならば、そもそもそれはかなり特殊な事項と言える。
そうとうに高度な事をしていないかぎりありえない。
プログラムの場合は繰り返し練習で、すべての問題をパターン化できる種類の学問になるのではないだろうか?
だから量をこなせばなんとななる。
設計とかも同じで、人間のこなせる業務というのは限界があり、ある一定の形式におさまってしまう。
いままで仕事をしてきておどろくような業務をやっている人間にはであった事がない。
人間が今の形をしている限り、そして多人数で仕事をする限り、おのずと限界がある。
よって設計もパターンをこなせばほとんど問題なくできてしまう。
量が質にそのまま転嫁可能なのです。
漢字書きとり練習で、漢字を100回とか書かせるのが効果があるのか、という疑問にかんしては、回答は難しい。サンプルを見ていないから。


