aster_ismの工作室

FPGAとかマイコンとか

妻、プログラミングを始める

この記事は https://adventar.org/calendars/2238 の12/9の記事です。

さて、元々名古屋界隈のITエンジニアのコミュニティの忘年会に一緒に参加したこともあって、夏ぐらいから妻がプログラミングをやってみたいというようになってきました。

とは言っても妻はプログラミングのプの時も全く知らない非エンジニア。先日参加してたNGK2017Bでは @Kazuki_Kachi さんがC#(言語) とC♯(音楽)という風にお互い思いつくことが違うという話をされてました。我々もお互いのバックグラウンドによって思いつくことがちがったりすることがあるので、質問されたら相手がどう考えているのか?何がわからないのか?をちゃんと聞きながら教えてあげないと余計に混乱してしまいます。特にずっと理系な道を進んできた自分からすると、全く疑問に思わないようなことを悩むことがあるということをちゃんと理解してあげないといけないなと思いました。

なお、題材に使っているのは下記OCamlの本。

プログラミングの基礎 ((Computer Science Library))

プログラミングの基礎 ((Computer Science Library))

各所で「初めてがOCaml!?」的な反応をされることがありますが、妻は悩みつつ楽しく?ゆっくりと勉強をしております。
ということで、今回は勉強中エピソードを2つほど今回は紹介してみたいと思います。

1.妻、文字列が表示できない
2.3章の基本的な型としてstringの説明があります。例題は下記のように「Yokohama」と「横浜」を表示します。

# "Yokohama";;
- : string = "Yokohama"
# "横浜";;
- : string = "横浜"

簡単ですね。妻も簡単と思って実行するわけです。でも、結果はこれです。

# "横浜";;
- : string = "\230\168\170\230\181\156"

恐らく、我々エンジニアなら「あー、化けた。日本語だしね。そりゃそうか」と思って、ググって解決法を調べる訳です。でも、始めてこれを見ると「え?」となるわけです。
一応、本文では説明されているページをちゃんと辿っていくとLinuxここに到達するのですが、当然意味は分からない訳です。また、簡単に実行できるようにTry OCamlを使っているので、この方法はそもそも使えない。当然そんなことも妻は分からない。ということで、何が悪いのか悩んで色々試す訳です。

私が思うにプログラミングをするときに日本語を正しく扱うのはプログラミング初心者からすると、とても難しいことだと思っています。でも、それって今まで日本語を表示しようとして同じような経験があるから難しい、何かケアしないといけないと知っていることなんですよね。

ということで、私が仕事から帰ってきたら、「私は日本語を表示することもできない。たったの4ページ目で躓いた。もうダメだ」と言ってくる妻に、日本語を使うのはすごく難しいことだよ。と説明しながら下記のように設定をしてみよう。と教えました。

# let printer ppf = Format.fprintf ppf "\"%s\"";;
val printer : Format.formatter -> string -> unit = <fun>
# #install_printer printer;;
# "横浜";;
- : string = "横浜"

余談ですが、使っている本は私のなので、実は日本語を扱うところに上の設定2行を本の端に手書きしてました。でも、やっぱり全く分からない妻にそれをいうと、「夫さんが本に書き込むなんて珍しい。何かよくわからない呪文みたいなもので、何に使うのか分からなかった。これだったのね」という訳です。
日本語難しい。


2.条件分岐がわからない
やっと型について何となく理解し、5章の条件分岐にやってきました。if式ですね。
例題を見ながら、とりあえず構文は理解したようですが、日本語で書かれた内容をプログラムとして書き下すことができない。というのです。
つまり、今まで算数や数学でいうところの式を立てるということが凄い苦手なんですね。
試しに、簡単な算数の問題を出してみると答えは正しいんですけど、どう計算したの?と聞くと答えがでてこない。妻の頭の中では立式したという感覚もなく、答えは10だ。となってしまう訳です。もしかしたら、頭の中では式があるのかもしれないですが、プログラミングをするときに、それを演算子とか使って式で書き下すことが苦手になってしまっているのです。これって前の章の関数を作ったりするときにも同じように感じているはずなので、この日から暇があれば意図的に式に書き下したり、条件式を書かせるようにしています。

1つ最近の例を紹介すると、
冷凍ピザを焼くときに追加で妻が「ベーコンをのせますか、ウインナーをのせますか」と聞いてきたので「それは排他的論理和ですか?」と聞いて、妻自身が言ったことが同時に成り立たせることができるのか、ダメなのか。を考えさせたりして遊んでいます。
少し慌てた感じにはなりつつ、答えを言ってくる妻は可愛いです。

とまぁ、こんな感じで来年以降も楽しく過ごせそうです。


去年は結婚してすぐだったので、日ごろのありがとうを書きました。
妻いつもありがとう - 雨のち曇り時々晴れ@aster_ism
一年経って読み返すと、妻が仕事始めたら色々手伝わないと!と書いているけど、どちらかといえば妻のほうがたくさん家事をしているので、もっと自分のできることはやらないとなぁと少し反省。
今日は妻が仕事、私は休みなので、妻には少しゆっくり寝てもらいながら、私がお弁当のおかずを準備しています。この記事は、おかずが冷えるまでの時間を使って書いています。