アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
俺が教えた時 (スコア:1)
教材はまずはバブルソート、それから数当てゲーム(mooとかHit&Blowとかいわれるやつ)とオセロをやらせた。
でもいまやるなら仕事がSIだから、B系ShellかPerlのスクリプトだな。
C反対 (スコア:0)
C++の問題でもあるんだけど、標準ライブラリが今のOSの「あたりまえ」について行ってない。例えばネットワークとかスレッドを使おうとするとすぐにsocketとかpthreadが必要になる。でもWindowsだとWinSockやWin32 APIが必要だし、標準が弱い。結果的に入門書に書いてあることは昔ながらのアルゴリズムとデータ構造なんかになる。printf()が使えないCの処理系はないだろうからね。Boost threadとかasioはそれに対する一つの解ではあるんだけど、いきなり初心者をboostの海に放り込むかというとちょっと戸惑う。
オブジェクト指向だって、標準のフレームワークがないから抽象的な説明になる。Humanクラスを継承してManとWomanを作り、同じSayHello()でもほーら動作が異なる・・・云々というような話になる。自分も昔そうだったんだけど、やれカプセル化とか多態性とか語ることはできるんだけど、実際にプログラムを書く段階になるとC++的なものはSTLくらいしか使っていなかった。C++でまともにオブジェクト指向でプログラムを書くようになるには、デザインパターンというか、設計思想を会得する必要があると思う。
いいか悪いかは別にして、JavaとかC#とか、もともとフレームワークのある環境に放り込んでしまうと、否応なく「そういうもの」としてフレームワークの設計者の思想に染まる。そうすると、オブジェクト指向とはこうして設計するんだなと理解して、あとになって「あれが○○パターンだったのか」という理解になる。
現在のGUIが当たり前の環境では、多くの子供はGUIでない環境になじんでいないと思う。ネットワークも当たり前だし、すぐにウィンドウを出して絵を動かせるとか、ネットから色々クロールするとか、そういったことができる言語の方がいいと思う。これは機能の面でもそうだし、フレームワークの面でもそう。
昔もアセンブラとかマシン語をやらないと真にコンピュータを理解できないという意見はあったけど、いま最初の言語がC言語というのもそれに近いものがあると思う。
即席 (スコア:1)
int main(void)
{
MessageBox(NULL, "WindowsのGUIが使えますよん", "この程度ならCでも数ステップで", MB_OK);
return 0;
}
Re:C反対 (スコア:1, 興味深い)
年寄りは自分の歩んできたのと同じ道を若者に歩ませようとするが、それは有害だと思う。
悪気があってのことではなく、年寄りはそれしか知らないから、それしか教えられないのだとは思うが。
人間の脳の処理能力と、使える時間には限りがあるので、
スタート地点が同じで、同じ道を、同じ速度で歩んだら、いつまでたっても先人に追い付けない。
若い人は同じ道を歩む必要はなく、もっと進んだ場所からスタートしてもいいと思う。
先人が歩んだ道のりは、コンピュータの歴史の教科書か何かで1日で早足で知っておくだけでいいと思う。
基礎から積み上げて我流の変な癖をつけてしまうくらいなら、
多くの優れたコードをコピペしまくって動くものをでっち上げるほうが、
スタンダードな作法が身についてよいと思います。
どんなに詳細に物事を把握して完全に理解していても、
目的の機能を実装する前にタイムオーバーになるような人は使い物にならないし。
どうでもいいことですが、
> printf()が使えないCの処理系はないだろうからね。
組込みマイコン等では、標準ライブラリすらないこともあります。
学習しない人に未来はない (スコア:2, 興味深い)
>先人が歩んだ道のりは、コンピュータの歴史の教科書か何かで1日で早足で知っておくだけでいいと思う。
例えばニュートン力学や相対性理論を「再発明」する必要はないと思うけれど、
それらを「理解」していない人は物理学者とは言えない。
E=MC^2 などの式をコピーして、意味も分からずそれに数値を当てはめている限りは、
いつまでたってもニュートンやアインシュタインを超えられない。式を理解せず、
その意味も応用もできない人間は、先人の通った道をただなぞってるだけ。
そんなのは物理学者ではない。
>スタート地点が同じで、同じ道を、同じ速度で歩んだら、いつまでたっても先人に追い付けない。
今も昔もプログラマーになるのに必要となる「知識」や「技能」にはさほど大きな違いは
ない。ただし今の人達は昔に比べてそれを遙かに簡単に学習する環境が与えられている。
十分な書籍も、強力な個人用コンピューターも、インターネット環境さえ用意されている。
洋書だってamazonで簡単に手に入る。
あとはただ学習するだけじゃないか。
なんと簡単なことだろう!
これで文句を言ってたらバチがあたるぞ。
>基礎から積み上げて我流の変な癖をつけてしまうくらいなら、
>多くの優れたコードをコピペしまくって動くものをでっち上げるほうが、
>スタンダードな作法が身についてよいと思います。
それじゃ身につかないんだってば.
見るだけじゃなくて、考えて、理解して、実践しないと。
#コンピューターだと写本のように「書き写す」必要さえない。
そして考えるためには、その基礎となる知識が必要。
無知な人間には考える自由さえ与えられない。
電卓を叩いたりExcelに数値を書き込んだり、意味も分からずサンプルコードを繋ぎ合わせることが
「コンピューターを使うこと」だと思ってる人なら勝手にすればいい。いつまでたってもお遊びの
似非プログラマーから抜け出せないだろうけど、それも本人の選んだ道だ。
ただし、邪魔はしないでねと。
Re:学習しない人に未来はない (スコア:2, すばらしい洞察)
工学技術の多くは理解しなくても使えるための技術だ。
理学系の発想と工学系の発想はバランスが大切
Re: (スコア:0)
そういえば、オープンソース版のT-Kernel(TRON)ではprintf()使えなかった思い出が。それに代わるものはあるのですけどね。
Re: (スコア:0)