ProgI/プログラミング演習I
\ProgI/TAのページ

TA橋本のページ(仮)

このページは,プログラミング演習IのTA橋本のページです.



橋本とは…

アクセス

正直,一から「プログラミング演習I」の内容を授業時間だけでマスターしようというのは少々困難だと思います。
当然、自主学習が必要になると思います(特に後半)
なので、授業時間だけでなくほかの時間にも頑張ってください。
と、言うだけっていうのもひどいので自分がみられる時間にはできるだけ協力いたします。 主に

には対応できるかと思います。
メールくだされば対応します。
当たり前ですが突然の場合には行けない可能性があります。
可能な限り事前にお願いします。
土日も事前に言っておいてくれれば大丈夫ですが…誰も来ないかな?

感想とか、なんとか

9/13(木)

今日は次週の都合により交換させていただきました。
と、言っても交換したはずのレボウィッツさんも来ていましたが…。
金曜日が先週休みだったので今日のTAが演習の二回目で
明日の金曜日に演習の初回をやるという変なことに。
私の都合で木曜クラスの方にはご迷惑おかけしました。

質問してくれた方、ありがとうございます。
基本的には木曜日に顔を出すことは無いと思いますが
何か質問等あれば気軽にメールしてください。
それでは。

TAとしてのスタンス

そもそもTAとは何か?

授業は「プログラミング演習I」であるから“授業の補佐”をする前に
「プログラミング演習I」の授業の本質を考える必要がある.

以上が「プログラミング演習I」の授業概要である。 分からない言葉もあると思うがおいおい分かっていくだろう。 この目標を授業の履修者が達成するためには

だけでは勿論達成されない。
それは、ただ英語の本の文字を写した文章を提出して、
英語を理解したつもりになるのに近い。
やらないよりはましかも知れないが、
それでは意味も分からず,当然自分の手で文章を作ることなど出来ようも無い。
そもそも、それだけで済むならばTAどころか先生も要らなくなってしまう。
大変だ。

では、どうしたら良いのか?

と、いうのが自然な流れかと思う。
TAなどの力が必要となるのは主に「再度意味を考える」時だ。
ここまできてどうしてもわからないときはTAに聞こう。

それまでには聞いてはいけないのか?と、聞かれればそんなことは無いが
そこまでにできるだけ自分の力で頑張って欲しいとは思う。
「自分の力」というとずっと席に座って唸っているヒトがいるがそれは違う。
自分の力でテキストをよく読み、書籍やwebを利用して調べ、手を動かす。 それが大切だ。
幸い、プログラミングの学習では調べる、試すという作業には困らない。
授業のテキストはあるし、参考書もある、web上にも多くの情報がある。
試すには、プログラムを打ち込んで、実行するだけだ。

何もしないうちからわからないのは当たり前!
色々と調べて,試してみたけどそれでもわからなければ堂々と聞いて欲しい。

そうはいっても、
もう何が分からないのかも分からない!!
なんてことも勿論ある。
それはもう仕方ない!とりあえず聞きいてください。

と、言うのが私のスタンスです。
なので、質問されたときもできるだけ自分の力で解決してもらうようにします。
直ぐに質問の答えを提示するようなことはしません。
その質問の答えを自分の力で理解できるように支援します。
なので、「説明はいいから!答えは!?」というヒトには向きません。
むしろ、「答えはいいから!理解したい!」というヒト向きです。
当たり前ですが後者のほうが大変です。
でも、同じ時間を授業に費やすなら後者の態度で臨んだほうが得るものはとても大きいでしょう。

まぁ厳し目に書きましたけど、ナンダカンダで対応します。 質問してくれた方には出来る限りの対応をしようと思うのでよろしくお願いします。

あくまでも私個人のスタンスで他のTAの方や先生方については別だということに注意!

学習の助け

タイトルの通りになればいいと思います。
授業では(おそらく)やらないけど理解しておくといいことなど
主にRubyに限らずプログラミングの一般論について書いていこうと思います。
間違ってたら指摘をお願いします!

プログラムとは

そもそもプログラムとは何か?と、いうのは誰もが思うことだと思う。
そこでプログラムとは何かをざっくりと説明する。

プログラムとは一般に物事の段取りや予定を差す。
根本的には同様である、
我々が扱うプログラムとはコンピュータ(一般的にはパソコン)の行うべき段取りのことである。
(コンピュータだけとは限らないがここではコンピュータとする)

我々がコンピュータを使うときプログラムがなければ,
それはただの箱に過ぎない。
ヒトが乗らない車のようなものだ。
ヒトが乗らないときそれは車としての機能を果たさない主に金属でできた箱である。

これを動かすときに必要となるのがプログラムだと思えばいい。
イメージとしては

に近いかも知れない。
ただし、我々が誰かに命令するように

と、いくら言っても勿論コンピュータはやってくれない。
理由は3つ。

という3つである。
一つ目は意外と簡単に解決することができる。
口頭ではなくコンピュータ上のテキストデータ(文章)として与えればいい。
二つ目を解決するために必要なのが…プログラミング言語である。
二つ目を解決するために必要なのが…アルゴリズムである。

つまり、我々がコンピュータに何かを命令するには

と,いう過程が不可欠である。
まぁ外国から来た部下に命令すると思えば仕方の無いことだ。
彼らの自国の言葉で命令をしなくては仕事が進まない。
アルゴリズムって何か?っていうヒト。
下に書いてあるので読んで欲しい。

プログラミング言語

折角なので
この外国から来た部下を例にして行こう。

早速、残念なお知らせだが、
彼ら(コンピュータ)の自国の言葉=プログラミング言語
と、言うわけではない。
プログラミング言語はあくまでも間に入る翻訳者の共通言語のようなものだ。
逆に言うと、例え相手の出身国が異なっても翻訳者の共通言語が分かればよいことになる。
便利でしょ?

パソコンの世界でもWindowsやLinuxのように出身国が違う方々がいる。
でも、それぞれの言葉を覚える必要はない。
プログラミング言語を覚えればそれぞれにあったように訳してくれるのだ。

まぁとにかくコンピュータに命令して何かして欲しいならプログラミング言語覚えてね!
っていうことだ。

さて、プログラミング言語は兎も角,前述の翻訳者には二つのタイプがいる。

だ。
意識することはほとんど無いと思うがその特徴としては、
インタプリンタさんを通すと会話のようにコンピュータと接することができる。
ただし、いちいち訳しては様子を見るので少し遅い。
コンパイラさんは全部一気に訳して渡してくれるので、
コンピュータは全部の作業を一気に片付けてくれて早い!
ただし、間違えたりすると全文を訳しなおす必要がある。
のように言われている。
Ruby処理系は通常インタプリタのようですね。

さて、コンピュータに命令をする為には
プログラミング言語で書類を書いて翻訳者に渡せばいい
ということは分かりましたか?
このときに書き上げる命令書が

と、呼ばれるものである。
このソース=命令書を発行することで
我々は遂にコンピュータに命令を送ることができるのです。

じゃあ、プログラミング言語を覚えれば
コンピュータは自分の思い通りに動くありがたいものかというと…
半分正解というところだろうか。

アルゴリズムとは

勿論、プログラム言語を覚えて文法を守り、命令を書けばコンピュータは忠実に働いてくれる。
しかし、彼らにできることは自分が知っている作業だけである。
彼らは元々大した作業はできないのである。

多くの場合は

程度の事ができるだけだ。 プログラミングの習得に苦労するヒトの大半はプログラミング言語を覚えれば言いと思っている所がある気がする。

先程の外国から来た部下で言えば、
プログラミング言語を覚えたというのは
言葉が通じるようになったという程度の話である。

いくらプログラミング言語をもって
「高さが3で、底辺が2の三角形の面積を計算しろ!」
と、命令書に書いてもコンピュータはそんな作業はできないのである。
(そもそもできない作業に当たる言葉も無いが…)
では、この作業をさせるためにはどうすればいいか。

というように命令しなければならない。
このように、行う作業の「手順」というべきものがアルゴリズムである。
つまり、コンピュータのできる掛け算や割り算を用いて
三角形の面積を求める手順がこの命令書(プログラム)のアルゴリズムである。

当然、命令する側はこのアルゴリズムを理解し組み立てる必要がある。

実際にはいつもいつも初めから知っている命令で作業させるわけではなく、
よく使う複雑な作業を教える方法や
それらを記述した教科書のようなものを渡してそこに書かれている作業をさせることもできる

プログラミング言語とアルゴリズム(まとめ)

さて、ここまで来てプログラムとは何かが少しはわかっただろうか?

まとめると、

の作業によりプログラミングは行われる。
単純な作業の場合は手順も簡単であまり意識はしないと思うが
複雑な作業になった際にこれらを同時に行うことは難しくなってくる。
習いたての言葉で伝える内容も考えながらでは意図する内容を正確にコンピュータに伝えることは難しいのである。

お勧めとしては

と、いう手順を踏むことである。 アルゴリズムを考えるのは、三角形の面積の例に挙げたように日本語でかまわない。
(なお、アルゴリズム自体はこの先、別の言語を習う際にも変わらない。)

頭の中、ノートの中でコンピュータにさせたい作業の手順を整理して、
それをRubyという言語で書くという意識をもつことが大切である。
これを明確に区別していれば、
言葉(プログラミング言語)が悪いのか、
方法(アルゴリズム)が悪いのかが直ぐに分かり効率的な学習の助けにもなるだろう。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS