フォト
無料ブログはココログ

« 2020年9月 | トップページ | 2020年11月 »

2020年10月

2020年10月27日 (火)

Scratchの疑問

 Scratchのサンプルをみていると、疑問に感じることがある。

疑問1:「ずっと」ブロック

 とりあえず「ずっと」ブロックを使ってその中で処理を行っているサンプルをよく見かける。疑問は、なぜ、ずっとブロックの中で終わるのか? である。
例えば↓のようなサンプルだ。

Forever

このプログラムの意図は「スプライトが端に触れたら止まる」であろう。そうであれば、繰り返し処理は「ずっと」ではなく「<>まで繰り返す」が適当だろう。

While

そういえば、「ずっと」繰り返すの意味や、「ずっと」と「<>まで繰り返す」の違いを説明しない。

Forevervsuntil

「ずっと」ブロックの意味を説明しないから、学習者がサンプルを改造するときに、よく間違う。学習者に子供が多いからといってもちゃんと説明すべきだと思う。

 NHK for Schoolの「Whyプログラミング」では、スクラッチを始めよう。(04:54あたり)で「ずっと」ブロックを説明している。

疑問2:イベントドリブン

 Scratchはイベントドリブンで書けるようになっている。
ところが、↓のようなサンプルを見かける。

Forever2

「ずっと」ブロックの中で押されている↑↓→キーで条件分岐している例だ。
どうしても条件分岐を使いたいなら、わからなくもないが、キー押下はイベントが用意されているので↓のように書くとスッキリする。

Evantdriven


Scratchの「全てを止める」ブロックは、イベントの発生まで止めないので、↑の例では、スプライトが端に触れると移動は止まるが、↑↓→キーで向きは変わる。ちょっとハマってしまった。


最近の投稿
最近の投稿】【プログラミング】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2020年10月25日 (日)

スマホのカメラ機能 <カメラか?メモか?>

20代女性巡査、私有スマホで県警内部書類撮影…同僚にライン送信 読売新聞オンライン (2020/10/20)

★ルールが時代の感覚から乖離している。

 20代にとってスマホのカメラ機能の認識は、カメラではなくメモかもしれない。

 フィルム・カメラを使っていた人にとって、カメラは映像を記録する機器だったから、スマホのカメラ機能はカメラだと認識している。撮影した画像は記録され未来まで残ることが前提だ。

 ところが、フィルム・カメラを使ったことがない人、ひょっとするデジカメも使ったことがない人にとって、スマホのカメラ機能はメモという認識だろう。 気になったシーンを一時記録するためのものだ。インスタにアップするまでとか、黒板に板書された内容を覚えるまでとか、一時的に記録しておくものだろう。

 冒頭のニュースでは、おそらく、運用ルールを作ったのはフィルム・カメラ世代の人で、処分を受けた人は、スマホ世代ではないだろうか。そうであれば、処分するだけでは根本的な解決にならないだろう。

 ルールが時代の感覚から乖離しているのである。

 外部に持ち出してはならない情報がある部屋にはスマホを持ち込めないルールにすればよい。(そのような運用をしている職場はある)
ところが、そのような運用ができない職場は多いのではないだろうか。それが、セキュリティ・ホールだ。

 セキュリティ・ホールを塞がないでルールで縛るには限度がある。セキュリティは「仕掛けと躾け」の両方の対策が必要だから、躾けだけで対応しようとするのは無理がある。

 まず、フィルム・カメラを使っていた世代の意識を変えることが必要だろう。


最近の投稿】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2020年10月14日 (水)

ルビィのぼうけん

ルビィのぼうけん リンダ・リウカス作 鳥居雪訳

Photo_20201010213401

 この絵本は、新しいことを覚えるのが好きな女の子、ルビィ(Ruby)、変わり者と呼ばれているペンギンたち、孤独が好きな雪豹(Snow Reopard)、ときどきオジャマ虫を育てている狐、カップケーキを作っているロボット、ニシキヘビがペットのジャンゴが登場する。

 IT業界にいる人は思わずニヤリとしてしまう。 そうそう、仕事で旅行にでかけているルビィのお父さんの写真は、まつもとさんに似ている。 もし、主人公がパールちゃんだったら、おばさんだから、物語が変わってしまう。

 この絵本は、リンダ・リウカス氏は子どもたちが「プログラマー的思考」ができるようになるために書いたようだけど、文科省がはじめた「プログラミング教育」の「プログラミング的思考」で参考にされているようだ。

 この本の「プログラマー的思考」にある要素のうち、「プログラミング的思考」で扱いにくい要素があるようだ。
「データ構造」「抽象化」「関数(一般化)」「デバッグ」が扱いにくく、「シーケンス」「小さく分ける(分解)」「ループ(繰り返し)」「アルゴリズム」は扱いやすいようだ。

 大人向けの部分に書いてある、「れんしゅう1」から「れんしゅう22」までのすべての要素を継続的に教えると「プログラマー的思考」ができるようになるのだけど、一部それも単発では「プログラマー的思考」は無理だと思ってしまう。

閑話休題

 大人向けの解説に↓こんなのがある。

Algorisms

 最近モヤモヤしていたことだ。

 プログラミング教育でよく使われる、code.orgの古典的な迷路(angry birds)アルゴロジックはアルゴリズムを題材にしたものだ。 これらサイトでは正解すると少ないステップ数があることが示される。

 それはそれで良いのだけれど...少ないステップ数のアルゴリズムの方が良いアルゴリズムと教える人がいる。

2s

↑これより、↓これの方が良いのだと。

1s

「ルビィのぼうけん」の解説にあるように

異なったアル ゴリズムは、それぞれの用途によって使い分けるものです。

なのだ。

 一般的には、簡潔なアルゴリズムの方が最適であることは多い。しかし、プログラムを高速化するときに、ループを展開して順次処理にするのは常道だから、簡潔なアルゴリズムがいつも最適とは限らない。

 状況や場面によって最適のアルゴリズムは異なるから、状況や場面に合わせて選択しなければならない。 だから、複数のアルゴリズムを考えられる、頭の柔らかさ、発想の柔軟さがとても×2重要だ。

 教える人は、迷路の問題のアルゴリズムを教えるときに、「最小ステップが最適だ。」ではなく、「少ないステップにするにはどうしたらよいか?」という問いかけが必要なのだと思う。


最近の投稿
最近の投稿】【最近の書籍・雑誌】【プログラミング】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2020年10月 2日 (金)

「技術の調べ方について」の質問

twitterで↓こんな投稿を見つけた

 「分からないことがあったら何でも聞いてね」と言われて本当に聞いたら、キレられるのはよくあることだけど、投稿した新人君には大きな誤解があると思う。

誤解1:知っていることは教えられる。

 知っているのと教えられるのは全く別の能力なので、自分が分からないことを先輩や上司が解るように教えてくれるのを期待しないほうが良い。

 「分からないことがあったら聞いてね」と言う人は、自分が知っていることを教えられると勘違いしている人だ。いざ質問すると教えてくれないのは、意地悪しているのではなく、教える能力が無いだけだ。教師ではないのだから期待してはいけない。

誤解2:説明してくれたらなんでも理解できる。

 訊ねた側と訊ねられた側の知識レベルの差が大きければ大きいほど、教えるのが難しくなる。
必要な前提知識が無かったら、理解させるのはまず無理だ。前提知識から教えようとすると膨大な説明が必要となる。
そこで、ストレートに「ぐぐれ」と言うか、わからないだろうと思いながら、レベルを下げないで説明するか、参考資料を紹介するかだろう。

 気をつけなければならないのは、分かった気にさせてくれる人だ。分かった気になっているだけで、理解しているわけではない。体よく誤魔化されただけだ。理解していないのに分かった気になるので、理解が遅れる。

誤解3:いきなり一般解を得ることができる。

 個別の技術ではなくて「技術の調べ方について」質問するのは、目の付け所が良い。しかし、ベテランでも「技術の調べ方」を他人に教えられるほど一般化できている人は少ない。

 多くの技術者は、特殊解を積み重ねて一般解にたどり着くことが多いようだ。一般解を求めるなら、一般解にたどり着いていて、それを他人に教える技能を持っている人を探すか、特殊解を教えてもらって自分で一般化する必要がある。

誤解4:質問された側は親切に回答する義務がある。

 質問のしかたが悪いと言われるのは、相手が答えられない質問をしているからだろう。
多くの先輩や上司は何でも知っているわけではないから、答えられない質問はある。素直に「知らない」と言えばよいのだが、技術者にとって「知らない」は、とても×2、言いにくい。いきおい、質問が悪いと言ってしまう。

まとめ

  • 知っていることと教えられることは別の能力なので、知っていても教えられないことは多い。
  • レベルが違いすぎると、質問に対する回答が膨大になるので、答える気力が失せる。
  • 「技術の調べ方」のような汎用的な質問に対する回答を持っている人は少ない。
  • 人は答えられない質問を受けると、質問した相手を責める。そういうものだ。

だから

  • 回答は不完全と思うこと。
  • 不完全な回答から学ぶ方法を身につけること。
  • 自分で自分の能力を向上させる方法から始める。

かな。

###

 技術系の会社に就職するとエンジニアになれるわけではなくて、技術を身に付けて初めてエンジニアと名乗れるのだと思う。だから、新人君は「エンジニア見習い」くらいかな。


最近の投稿】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

« 2020年9月 | トップページ | 2020年11月 »

2020年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

最近のトラックバック