アカウント名:
パスワード:
小学生の算数は非常に具象的なものから始まり、大学の数学では非常に抽象的なものに進みます。
それと一緒で、最初はアルゴリズム論のような抽象論より、もう少し環境依存でもいいから具体的なものからはじめたほうが知識が身につくのではないかと思います。
プログラミングのノウハウ [namazu.org]の最後のほうにある、高林さんの友人のコメント、「大学では 1(普遍的なノウハウ)や 2(システムのノウハウ)の「奥義」を教えられるが、中国拳法と 同じで、いきなり奥義を教えられても何もできない」には唸らされました。
大学でてても全然使えないプログラマばかりな理由の一端はこの辺にあるんだと思ってます。
小学生の算数は非常に具象的なものから始まり、大学の数学では非常に抽象的なものに進みます。 それと一緒で、最初はアルゴリズム論のような抽象論より、もう少し環境依存でもいいから具体的なものからはじめたほうが知識が身につくのではないかと思います。
アルゴリズムだけ習っても実際には全然生かせないのが世の常。
でもアルゴリズムを習ってなかったり軽視してる人の書くプログラムは基本的に屑ばかり。アルゴリズムをよく知らなくても性能に影響が出ないようなプログラムなら、そもそもどんな人間でも書けるし。
大学でてても全然使えないプログラマばかり
小
それよりも先に、ものの調べ方とか、質問のしかたとか ちゃんと出来るようになって欲しいです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
環境依存 (スコア:1)
それに、MS-Windows 以外の環境もあるということも知って、独善的なプログラマにはならないでほしいのだ。
学生以前のプログラミング原始体験ならば、ガチガチにプラットホーム依存で、アルゴリズム無視でも、とにかく動く、という環境の方がむしろ大切でしょうが。
Re:環境依存 (スコア:3, 興味深い)
.NET はそれ以前のMSのフレームワークよりはだいぶすっきりした気がして,教育にも使ってみてもいいかなと考えています.アカデミックアライアンスプログラムを使えば低コストで導入できますしね.C#も悪い言語じゃないし.ただしこれでも現状のGUIフレームワークはまだ「お約束」ごとが多くて,初級レベルの教育に向いているかどうかは疑問です.
個人的には本当に最初のプログラミング「経験」は Squeak がよさそうで,その後に .NET 上で手続き型や関数型のプログラミングも悪くないと思います.電気・情報系の学科ならどっかで(仮想マシン上じゃない)機械語プログラミングの経験をしてもらいたいところですが.
Re:環境依存 (スコア:2, 興味深い)
機械語とC言語ソースの関係(ポインタや静的/動的変数の使い分けがどのように機械語に落ちるのかとか・・・)を概念すら理解しないでコーディングされちゃうので、大変です。
まあ、Windowsなんかのソフト屋さんとしてならいいんでしょうけど、組み込みでPCのような環境を前提にされちゃうと困ります。(普通、仮想記憶/メモリ保護機構もない、スタック領域も限られる、なんかの制約が多いです。また、マルチタスク環境でmalloc/freeを繰り返されちゃうと・・・(^^;;;;)
moonbearさんは教育関係の方のようですが、ぜひとも学生さんにC言語+アセンブラの混在プログラムを経験させてやってくださいな。(できればソフトウェアがどうやってハードウェアにアクセスするのかも含めて・・・)
『メモリが化けるっ!』とクレームを受けて結局ソフトのポインタ関連バグとかタイプミスを追い回させられている組み込みハード屋の切実なお願いでした。
#まあ、必要は発明の母ともいうように、学生さんが必要性も感じない状況で教育されるのもすごく難しいことだと思いますが・・・。
Re:環境依存 (スコア:1, 余計なもの)
便利な道具が「何も」ない環境での開発もまたナンセンスなので、問題は、
便利な道具が、GUI(笑)の世界「にしかない」などという残念な状況が
生じてしまっていないか?という点にあるように思います。
言ってしまえば、例えばテキスト端末用のSqueak(笑)みたいなものが有ればいいのかな、と。
つまりOOPばりばりを自分でも書けるし恩恵にも与れるような、テキスト環境、ってこと。
#elispでいいじゃん、と言えるのは達人の証かも(笑)。
#OOPとLispとはそんなに遠くない世界なんだけど、それに気付くまでが遠い道だったりしませんかね?
うーん。というわけで、Eclips(だっけ)はどうなんだろう?と最近気になってるところ。
GUIなんざはっきり言って(GUIアプリのビルダーが欲しい時以外は)要らないんだけど、
なんか色々なプラグインが開発効率を上げるうえで便利だそうじゃないですか。
しかもそれらの中の幾つかはきっと、単にテキスト環境でも既に出来てることのラッパ(or再実装)だけじゃなくて
あの世界の中で初めて生まれたものだって、幾つかあるわけですよね。
>機械語とC言語ソースの関係(ポインタや静的/動的変数の使い分けがどのように機械語に落ちるのかとか・・・)を概念すら理解しないで
そりゃそうと、こっちとしては、静的/動的変数の違いと、それらが機械語に落ちるときの違いと、もまた
区別して理解して欲しいと切実に思っています。
だって、静的と動的の変数の差って、機械語に縁が無ければ無視できるもの、では決してナイんだもの。
両者は抽象概念である「寿命」が違う、ってのが話の発端であって、機械語への落ちかたの問題は
いわば副作用でしかない(笑)わけです。
だから、機械語に縁のない人でも、「寿命」という概念はきちんと把握していて貰わないとね。
逆に言えば、機械語に縁の有る人でも、「寿命」と「落ちかた」という二段構えの理解の仕方
をしておくことは、きっと重要だと思います。
まさかCPU乗り換えるたびに静的/動的変数の理解のしかたまで変化するわけじゃないですよね?
変化するのは落ち方の理解のほうですよね?
>学生さんにC言語+アセンブラの混在プログラムを経験させてやってくださいな
というわけで、俺が教育者諸兄お願いしたいことはちょっと違うようです(^^;
アセンブラとかの超実装よりの部分よりもむしろ抽象概念のほうで
駄目な奴らに悩まされてますんで…
Re:環境依存 (スコア:0)
> 変化するのは落ち方の理解のほうですよね?
落ち方に関しても、CPUが変わっても基本的な考え方は変わりません。
最適化の過程でレジスタへの割り付けが行われたりはしますが、どれか素直な(別にややこしいCPUでもいいですが)CPUで理解ができていれば、別なCPUでもそのアセンブリ言語さえ理解してしまえばほ
Re:環境依存 (スコア:0)
これは確かにそうかもしれないですね。
windowsでも本気でデバックしようと思うと結局アセンブラレベルの知識が要求されますし。バイナリデータ扱ったりするとエンディ
そういえば (スコア:1)
Re:環境依存 (スコア:1)
プロでも理論のみではしんどいですよ (スコア:1)
やっぱり動くものが作れた方が楽しいものです。
動く=GUIというのは御幣があると思いますが、
少なくとも、I/F部分ぐらいは何かあったほうがいいと思います。
(デバッグとかにも便利ですし)
ぼくも最初にJAVA(アプレット)を勉強したときは、
2,3日でシューティングゲームみたいなモノを作ってました。
UNIXを作ろうとしたのも、MULTIXで作った連打ゲームを
個人の端末でやりてぇ!という欲求からだったと聞いてます。
本当に単純なものでいいので、ゲーム仕立てのものを作らせたり
したほうがいいのかなぁ?とも思います。(好みにもよりますが)
実際に動くものを作るということが大変だという認識させつつ、
動いたときの喜びを教えてあげることが第一歩だと思います。
Re:環境依存 (スコア:3, 参考になる)
小学生の算数は非常に具象的なものから始まり、大学の数学では非常に抽象的なものに進みます。
それと一緒で、最初はアルゴリズム論のような抽象論より、もう少し環境依存でもいいから具体的なものからはじめたほうが知識が身につくのではないかと思います。
プログラミングのノウハウ [namazu.org]の最後のほうにある、高林さんの友人のコメント、「大学では 1(普遍的なノウハウ)や 2(システムのノウハウ)の「奥義」を教えられるが、中国拳法と 同じで、いきなり奥義を教えられても何もできない」には唸らされました。
大学でてても全然使えないプログラマばかりな理由の一端はこの辺にあるんだと思ってます。
-- Takehiro TOMINAGA // may the source be with you!
Re:環境依存 (スコア:2, 興味深い)
確かに算数は「りんごが3つとミカンが2つ」から入りますが、すぐにそれが「男の子が3人と女の子が2人」というように、個別の事例にとどまらないように注意深くカリキュラムされています。
プログラミングも同じように具体例からはいってもらってかまわないのですが、環境に依存しないよう、初期から複数の環境を経験すべきように思います。
自分の経験でも、ある言語・環境から別の言語・環境に移行したときに、元の言語や環境の理解が深まったことが多々あるので。
Re:環境依存 (スコア:0)
1 print "test"
が
10 print "user"
に変わった程度でしかないと思うが…。
少なくとも「環境」と呼べるレベルではない。
どちらもprint文には変わりない。
強いて言えば「1+1+1=3」が「1×3=3」になって初めて「環境が変わった」と言わないかな?
#BASICなんて久しぶりだ…。
Re:環境依存 (スコア:0)
print "user"; REM with BASIC
と
printf("user"); /* with c */
と
println("user"); # with perl,
みたいに、他言語ではどのようにやるのかを言っていると思うのですよ。
# ネタにマジレス?
Re:環境依存 (スコア:0)
> print "user"; REM with BASIC
PRINT "user"; :REM with BASIC
原体験がSB-5520なのでAC
Re:環境依存 (スコア:0)
じゃないのかな?
BASICって;必要あった?
Re:環境依存 (スコア:1)
の
Re:環境依存 (スコア:0)
ではないかと。
や、?で入力してもLISTすると展開されてますが ;-)
#MSX-BASICだったりするのでAC
Re:環境依存 (スコア:2)
vyama 「バグ取れワンワン」
Re:環境依存 (スコア:1)
実際に組んだ上で、方法を思いつかないこと、遅いこと、特定条件下で動作が安定しないことを体験した上でないと、アルゴリズム、オーダー、仕様考察のありがたさって、判らんと思うんです。
喩えるなら、自国語くらいは自由に扱えないと、文学も哲学もできないでしょう。そんな関係じゃないのかな。
Re:環境依存 (スコア:1)
自分でソースを書けない人が多いから問題なのでは。
main() {
}
だけ書いて、あとは参考書のコピーじゃだめなんです。
#人のコピーもダメよ・・・。
Re:環境依存 (スコア:0)
「学生は50人くらいいるはずなんだけど、実験レポートって3パターンくらいしかない。」
・・・と。
Re:環境依存 (スコア:0)
でもアルゴリズムを習ってなかったり軽視してる人の書くプログラムは基本的に屑ばかり。アルゴリズムをよく知らなくても性能に影響が出ないようなプログラムなら、そもそもどんな人間でも書けるし。
小
Re:環境依存 (スコア:0)
案外覚えているだけで~って事かも(と邪推してみる
今あるアルゴリズムをさらに改良できなければ意味が無いと思います。
あれとこのアルゴリズムを適当に混ぜ合わせて
今回使えそうなアルゴリズム完成ー とか。
だから、古典的アルゴリズムは知っていて当然( 詳しく載ってる本を手元に置いてあるだけでOKだけど
そこから現状にあった
Re:環境依存 (スコア:0)
一部分で、それを考えるのは学者先生に任せておけばいいように思います。
アルゴリズムはあくまで覚える対象で、必要なのはそのアルゴリズムを
書き下せること、性能、
Re:環境依存 (スコア:0)
Re:環境依存 (スコア:1)
やっぱりある程度勉強してと言うよりも、
感覚として言語を取り込んでからでなければ難しいですよね。
でも、やっぱり最初はプラットフォームは何でもいいので、
ディスプレイの前でうんうんうなりながら数行のコードを
趣味で書き直してほしい(笑
INT24Hがっと徹夜した昔が懐かしい。
ただ、やっぱりそのプラットフォーム(と、言うか言語依存な)
プログラマになってしまうと、それはコーダーですので、
気張って前に進む努力が必要かなと。
#長くプログラムしていてもtemplateの強力さに感動したり
#Javaのclass loaderに感動したり、先はいっぱいある訳よ。
kusanagi shin
Re:環境依存 (スコア:0)
>#Javaのclass loaderに感動したり、先はいっぱいある訳よ。
言語のバグに苦労したり、
言語の規格通りで正しい書式と思ってたコードが不安定の元だったり(スクリプ
Re:環境依存 (スコア:0)
Re:環境依存 (スコア:0)
>アルゴリズムやなんかを、まず学んで欲しいと思う。
それよりも先に、ものの調べ方とか、質問のしかたとか
ちゃんと出来るようになって欲しいです。
最近痛烈に感じます。
Re:環境依存 (スコア:0)
「検索したけど英語の情報しか見つかりませんでした」って言う人も多いよね。