パスワードを忘れた? アカウント作成
この議論は、hroko (36763)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。

今年も、OJTでCとC++を教えることに「なりました…」記事へのコメント

  • 機械語がどのように実行されていくのかをじっくりと教える。

    で、その次にCでどのように書くと、どのようなコードが出てくるのかを教える。

    これで完璧さ(ぇ~

    --
    fjの教祖様
    • c/c++に限らず、コンピュータを理解する上で、
      アセンブラやマシンランゲージの学習が、
      非常に有効であることは認めざるを得ません。
      ですが、アセンブラで何事かをしようとすると
      やたら手間隙がかかるのが難点ではないでしょうか。

      // 「あるアドレスから読出した値に、1を加えて
      // 隣のアドレスに書込む」みたいな
      // アセンブラ版ハローワールドから踏み出してしまうと、
      // コーディング無間地獄が待っている、的な意味で。

      時間の限られたojtの場には、アセンブラは
      相応しくないのではないでしょうか。

      //// c/c++の習得は、いっそのこと、片手逆立ちだとか、
      //// 師匠を背負って走る、みたいなトコロから
      //// 始めて見るのも、一つの手段かも知れませんね。

      親コメント
      • ですが、アセンブラで何事かをしようとするとやたら手間隙がかかるのが難点ではないでしょうか。

        それは「何事をするにもやたらと手間隙がかかるデバイス」上で、1から100まで全部作ろうとするからです。
        CやC++で「printf()」などのライブラリを大前提にコーディングをするのに、アセンブラになるとライブラリを前提としないのは間違っています。

        そうですね。私なら……アートディンク の HOW MANY ROBOTS というゲームを知っていますか?
        あのゲームでは、ロボットは繰り返し行動によって行動を学習していきましたが、その行動ルーチンをアセンブラで組ませますね。で、実際にオモチャのロボットに組み込んで、ちゃんと爆弾除去ができるか、実験させる。

        ロボットにはわざとセンサー類を少なくして、問題を解く方法がほぼ一通りしかない状態にする。それをどう見つけて、どう実装するか、が鍵。

        .

        時間の限られたojtの場には、アセンブラは相応しくないのではないでしょうか。

        それは微妙に誤った考え方ですね (^w^)

        OJTだから時間が限られているわけではありません。教育とは常に時間との闘いです。

        その上で。OJT教育においては次のような脅迫は常に有効です。この脅迫に恐怖し、ソースの暗黒面を目にした新人は優秀なソースマスターとなることでしょう (^w^)/

        「心配するな。
          君たちが潰れても、来年になればまた新人がやってくる。

          君たちには1年の猶予が与えられており、その間に次のものを習得することが期待されている。
          1) アセンブラ
                x86-64, PowerPC64, Itanium2 をその範囲とする
                (この3つが理解できれば MIPS も ARM も自由自在だ)
          2) コンパイラの仕組み
          3) リンカの意義と動作
          4) kernel の挙動
          5) HDDならびにSSDの基本動作と、SATA, SAS, FC の動作原理
          6) リアルタイム処理
          7) ACIDとトランザクション
          8) LISP と emacs
          9) Garbage Collection
        10) 正規表現

          なお、以上の内容を『丸暗記』する必要はないが、自分の記憶力不足のためのマテリアルの手配は早急に自らが行うものとする。当然だが、会社の購買で本を買った場合、半年またされた挙句「ブツがない」とか言って平気でいる丸善とかが相手になるので、必要性を熟慮されたい。

          一年後から3ヶ月かけて、これらをきちんと理解していることを確認する。」

        --
        fjの教祖様
        親コメント
      • 最初に習ったのがCASLなので、
        アセンブラ的な知識はとってもありがたいと思います。
        本質的なことを理解するためにも、
        アセンブラをOJTのに入れるように提案すべきかも。

        親コメント
    • えと、「機械語がどのように実行されているのかをじっくりと教える」っていうのは、
      どうやら、前々任者が試したみたいです。

      そして、ほとんどの人が、CPUの仕組みとか、
      そもそも、「フォン・ノイマン型アーキテクチャ」を知らなかったりで、
      「絶望した」みたいです。

      わたしも、自分が最初に習ったのは「CASL」だったので、
      そこから始めようかと思ったのですけど、
      アセンブラっぽい教材を準備しているの上の方に知られて、
      「初歩的なところでいいから」って念押しされたみたいです。

      親コメント
      • そして、ほとんどの人が、CPUの仕組みとか、そもそも、「フォン・ノイマン型アーキテクチャ」を知らなかったりで、「絶望した」みたいです。

        いや、知らないのはしょうがないじゃないですか。だいたい、フォン・ノイマンなどという「ど真ん中」から始めるのが行けない。ちゃんと端のチューリングマシンからはじめて、とっとと「停止決定不能問題」を叩き込まないと。

        これをちゃんと理解すれば、「バグが無いと証明することはできない」という一番大事な事が理解できます。

        アセンブラっぽい教材を準備しているの上の方に知られて、「初歩的なところでいいから」って念押しされたみたいです。

        え? それで C言語を教えるんですか?

        おかしいですね。アセンブラよりも前の初歩は「ブール代数と論理回路」じゃないですか。
        ちゃんと and 回路と or 回路と not 回路から、 xor とか カウンターとか フリップフロップ とかを作り、さらに加算器へとつながなくちゃ。

        そりゃ、PowerPCの eieio 命令とか count leading zero命令とかをいきなり教えるのは難しいでしょうとも。なんのために使うのかよく判りませんからね (^o^)/ 流石に初心者向きとは言えない。

        --
        fjの教祖様
        親コメント

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

処理中...