imple is Best

「プログラミング」とは

この記事は投稿から 3 年以上経過しています。
最新の情報は各種公式ドキュメント等をご覧下さい。

今回から実際にレッスンとしての講義を行った。

Lesson 1

Lesson 1の目的は、前回の最後に書いた通り基礎となる知識を伝えていくこと。慣れていると「メモリ上にあるデータが…」と言われて何を意味するかがわかるが、これから始める初学者はそんな専門用語を急に言われてもわからない。可能な限りこれからの解説で置いてきぼりにならないように敢えてレッスン1つ分を取って教えることにした。

利用したスライド: Lesson 1: プログラミングとは - Speaker Deck

コンピュータの概要と五大機能

コンピュータは電気がなくては動かない、すべてのデータは0と1で表現しているなんていうのは当たり前な話なのだが最初はやっぱりイメージをつかみにくい。いまスマホで動いているゲームで出てくるキャラクターがコンピュータ的には0と1で表現していると言われても正直なんのこっちゃわからない。だからまずは、コンピュータは電気を用いて計算をしており、それを On/Off で処理するから0と1、つまり2進数を持ちているんだよということを伝えた。また、同様の理由でコンピュータに曖昧な命令をすることはできないことを合わせて伝えた。(もちろんその曖昧なものをコンピュータに伝えるための研究がAIの分野で行われていることも伝えた。)

コンピュータの五大機能といえば「制御装置・演算装置・記憶装置・入力装置・出力装置」。用語として知らなかったという方はいらっしゃるかもしれないが、コンピュータと言うには最低限 CPU・メモリ・SSD/HDD・マウス/キーボード・モニタ が必要ということは直感的にわかると思う。初学者も雰囲気としてはわかるかもしれないが、それぞれがなんのためにあるのかを理解していることは少ない。たまに「メモリが128GBあるスマホ」とか言われて見てみたら iPhone 7 の 128GB モデルだった、というのも稀によくある。そんな勘違いをなくしたいので一番最初にコンピュータというものを教えた。

案の定(という言い方は失礼かもしれないが)ここらへんに関する知見はなんか聞いたことある程度で、とても興味深く聞いてくれた。新しい知識を得て喜んでくれると教える側のモチベーションも爆上がりする。

主記憶装置と補助記憶装置

五大機能では記憶装置でひと括りになっているが、ほとんどのコンピュータには主記憶装置(RAM)と補助記憶装置(HDD/SSD)がある。変数の勉強をするときにメモリをイメージしながら学習していこうと思っているため、ここであえてメモリと HDD/SSD の違いについて細かく述べた。

PC を書斎として例える: 今回のレッスンにて使った方法で、1つの書斎を PC として考えることによって各装置の役割を意識しやすくなるという説明モデル。書斎で仕事している人を CPU、その人の前にある机の上をメモリ、そして少し離れたところにある本棚が HDD/SSD を意味する。人の短期記憶がレジスタに例えられたり、仕事を終える(PC の電源を落とす)ときには机の上を片付けるよね(メモリのデータは消える)とか、意外と直感的にわかる例を提供してくれるモデルなので個人的に重宝している。

「プログラム」のイメージ

プログラミングを通じて作成するプログラムが一体何なのかのイメージがないことにはスムーズにプログラミングを行うことがしにくい、気がしたので少し回りくどい方法を取っった。

具体的にはオックスフォード英英辞典にある語義を見てもらった。もちろんプログラミングにおけるプログラムの定義もあったのだが、ここではあえてすべての定義に目を通してもらった。ITに関する単語は英語がもとになっているので、現地人がどういうイメージを持ってその単語を割り当てたのかを知ってほしかったためだ。幸いなことに全員が一定の英語力(フィンランドで7ヵ月間生活できる程度)を持っているので、英文をある程度英文のまま理解することができる(はず)。なので英英辞典を用いることに関してはあまり抵抗もなく、実際のレッスンでも大きな障害になることはなかった。

個人的には programme(米: program) の語義から 何かの集まり であることを感じ取ってほしかった。実際プログラム自体コンピュータに対する命令の集まりなので。このセッションが、今後ソースコードを組んでいくに連れて「これがこういう命令で、この機能を実装するにはこれらの命令が必要だな」という感覚を早くから身につける、役にたってくれたらなと思っている。実際どうなるかはこれからのお楽しみ。

実際にコードを組んでみる

これまで座学というか論理的なことばかりやってきたが、やっぱり人間は実感がないとなかなか習得した気にならない。はじめて学ぶものはとくに。

C言語に関する基礎的な情報などは次回にまわして、成功体験を最後にしてもらいたいなと思ってこのセクションを設けた。内容としては println() を用いて Hello World を表示するというおなじみのコード。初っ端からローカルに環境を構築することはは望ましいといえば望ましいが、やはり初心者にはコストが大きすぎる。すでに他の言語を組んだことがあったり、パソコンの操作がパッチリでコマンド大好きだよとかなら始めから構築を指示したが、今回はそうじゃないので最初のうちは Paiza.IO を利用する。

やっぱり実際に動くと誰しも嬉しいもので、より一層みんなのやる気が出たかなと思う。これからはちょっと教えて実際に組んでの繰り返しで勧めていく予定。

反省点

まずは私の環境が整っていなかったこと。諸事情で手持ちのノートパソコンが物理的に壊れ、修理のために分解していたために今回は使えなかった。スライドや最後の実習はアシスタントの coreshin に頼んで代わりにやってもらった。なんとか問題なく進めたが、タイムラグができる分少しもたついてしまったり、スライド以外の資料をその場で用意できなかったりしたのでそれは少しやらかし感があった。まぁ、寿命が近いので仕方ないといえば仕方ありませんが。

あともうひとつ、Personal Computer はなぜ Personal なのかという説明をすっかり忘れていた。これは完璧に教材作成段階からのミス。わざわざ最初の方のスライドに What is "Personal"? と書いてある のにまさかの解説をしていないという。昔はコンピュータというのはすごく高価ででかいものだったんだよっていうコンピュータ史をやるつもりで書いてましたがすっかり忘れていた。ここに関しては正直古すぎる感が否めないので、今後のレッスンや雑談の中に組み込めていけたらと思う。