2022情報I 2学期
第9回 授業の振り返りより

質問より

アルゴリズムにおいて、「繰り返し」の指示を与えた方が機械の処理が速くなるということはあるのですか。
あると思います。繰り返しのいいところは、同じ処理をすることです。何回も一つ一つ処理をするより、同じ処理を何回も繰り返した方が速くなる可能性があります。繰り返しは上手に終了条件を書くことが大切です。無駄に繰り返すと処理が遅くなりますよね。
コンピュータに人間のような曖昧さ(中ぐらいの~、もう少し~)などを学習させて実際に動かすことは可能ですか?
できません。何もわかってないのがコンピュータです。数値で指定して下さい。
加算器とフローチャートは全く別なものですか。
まったく別のものです。加算器はハードウェアのCPUの内部で計算する仕組みです。フローチャートは処理の手順でソフトウェアに関係する事柄です。
フローチャートの繰り返しを使う時、条件をつけないとコンピュータは永遠に繰り返すとおっしゃっていましたが、永遠に繰り返すことを利用しているコンピュータは何かありますか?
ありません。スイッチを入れればずっと動き続けるコンピュータを使った機器もありますが、スイッチを切れば止まります。
フローチャートとアクティビティ図の、記号の形以外に簡単な違いは何ですか。/アクティビティ図は平行での作業を指示できると言ってましたが、そこに不都合な点はあるんですか?フローチャートとどちらが優秀なんですか?/フローチャートがアクティビティ図より勝る点は何ですか?
授業でもお話ししましたが、並行して行う作業が記述しやすいのがアクティビティ図で、広く普及し、多くの人になじみがあるのがフローチャートです。どちらかに優劣があるわけではなく、適宜使いやすいほうで記述すればいいのです。
先生はどうやってプログラミングを操れるようになりましたか。今でもエラーを起こしたりすることってありますか。
コンピュータを動かすにはプログラミングしないと面白くないじゃないですか。というか、昔はExcelみたいな便利なモノもなく、計算するためのプログラムを書かないと面倒だった時期もあります。というか、同じ作業を毎回人間がやるの、バカらしくありません?定型業務で処理方法が決まっていることは、一度頑張ってプログラムに書いちゃったほうが、楽だし間違いがなくなります。
フローチャートのワークシートでラーメンを茹でましたが、その中の答えにあった「よくかき混ぜる」の よ く というのは抽象的で終わりがないとまではいかずともコンピュータにはその加減は伝わらないのではありませんか。
そうですよ。ですからワークシートでは「よく」がなく、かき混ぜるてもOKになるようにしてあります。
今日授業の終わりで扱ったアルゴリズムとフローチャートのファイルにあった問題で、麺を4分茹でるとき「4分茹でる」ではなく「10秒茹でる→4分たってれば終わり、まだならまた10秒」という処理をしていたが、4分数えられないわけではないのに直接4分にしないのはなぜなのか
素晴らしい指摘です。ちょっと言い訳っぽいのですが、4分測ることに専念させると、スープを先に丼に入れられないからです。こういう時にはアクティビティ図のほうが便利ですね。
授業のスライドにあった「アルゴリズムの条件」のうちの、「有限回の命令」と「必ず終了する」の違いが判りません。命令が有限なら必ず終了するのではないでしょうか。
ではこういうの、どうでしょう。
k=0
while k=0:
    print('Hello')

命令は有限ですが、終わりませんよね。

感想より

記号やイラストは世界共通で伝わるのでIKEAの説明書に言葉の説明がないことのも理解出来た。アルゴリズムは書き方が定義されているが、緩いものも沢山あり、許容されているそうだが、曖昧では行けないアルゴリズムなのになぜ大丈夫なのか疑問に思った。数値できちんと示して命令しなくてはならなく、大小の判断や数の入れ替えが2つずつしか出来ないので、実際にフローチャートをやってみて難しいと感じた。
フローチャートは手順の流れを示すのに広く世の中で使われています。本来は厳格に書き方が決まっているのですが、正しくないものも多数あります。それを踏まえて、授業では記号の扱い方や書き方については許容しようということです。大事なことは手順を書き表せることと、手順を読み取れることです。
フローチャートは中学時代にやったことがあったがあそこまで図形がきちんと決まっていたことは知らなかった。上下がちょっとへこんだ楕円形とひし形と長方形しか中学校では出てこなかった。端子と処理と判断ということが今日判明。
フローチャートは厳密に記号が定義されているのですが、中学の技術のようにその一部だけ使って書いたりすることが一般的に使われています。少々違っても許されそうな書きやすさと、既視感による読みやすさがあります。
アクティビティ図やフローチャートの図は世界共通なのか気になった。
フローチャートの記号は日本のJIS(Japanese Industrial Standards:日本産業規格)やISO( International Organization for Standardization:国際標準化機構)に同じものが載っています。アクティビティ図はUML(Unified Modeling Language:統一モデリング言語)のうちの一つなので、国際的に標準化されています。
アルゴリズムを頭の中で考えるのは難しい。私はいつも紙に書いて順序を整理するようにしている。だから、高速計算を繰り返してアルゴリズム(プログラム)を処理しているパソコンは凄いと思った。それと同時に、いくら高速と言ってもパソコンは与えられた命令を行うだけなので、効率の良い方法や繊細な部分を考えるのはやはり人間の役目だと思った。
人間はアルゴリズムを考えて作り出しますが、コンピュータはアルゴリズムに従って動作しているだけです。人間って凄いんですよ。
アルゴリズム体操でお馴染みのピタゴラスイッチで、「しめじソート」というコーナーがあり、それを使って並び替えてみました。2人ずつのペアを作って、長い方同士を戦わせて並び替えるというものの繰り返しで、どんどん前から決まっていく感じでした。今日は5手でした。
授業で紹介した並べ方はバブルソートというアルゴリズムです。ピタゴラスイッチのシメジソートはマージソートというアルゴリズムです。並べ替えのアルゴリズムはいろいろあって、それぞれの特徴があります。
終わりが必要なアルゴリズムにおいてループが使われるということに予習時点で疑問だったが、授業を受けて限界が設けられたループということで納得できた。
コンピュータは何度でも嫌がらずに同じ動作・処理を高速で実行します。そのときに使うのがループ(繰り返し)です。このループは必ず終了の条件を書いておく必要があります。そうしないと無限ループになってしまいますよね。アルゴリズムとして失格です。
ずっと同じことばかりやっていることを「無限ループ」に入ったなどと言いますが、これはプログラミングで使われる言い方が一般にも広がったものです。他にも「フラグが立つ」もプログラミング用語です。
アルゴリズム行進はスタートしてから終わりを決めていないので現在進行形で今も歩いているのだと思った。つまりアルゴリズム行進は終了していないので「アルゴリズム」と言ってはいけないと思うアルゴリズムの数字を並べ替える実習をしてみて、普通人間がやるなら簡単なことでもプログラムしてみると意外と複雑な命令を出さなければならないのだなと思った
コンピュータのプログラムとして利用するアルゴリズムは終了が必須なのですが、アルゴリズム行進が模しているアルゴリズムはCPU内部の処理の方法ですから、終了がなくてもデータが無くなれば終了するので問題ないのです。詳しいことはこちらのアルゴリズム行進こそ至高のアルゴリズムであるを読むとわかると思います。
アルゴリズムというのが、どういうものか理解できた。Tiktokの「アルゴリズム」とよく言われたりするが、「アルゴリズムは有限回の命令」と習ったので、Tiktokのコンテンツは無限にあるわけで、それのレコメンデーションに関するアルゴリズムは果たして「アルゴリズム」という呼び方でいいのか、疑問に思った。
Tiktokのコンテンツは有限です。コンテンツは整数で数えることができます。いくら増え続けようとも、数えることができる限り有限なのです。
今はアルゴリズムにも大きく3つの条件があるが、AIの研究が進むことでいつかは条件もなくなってしまうのか。
AIに幻想を抱いちゃってますね。授業でも、この振り返りでも何度か説明していますが、AIってコンピュータのプログラムなんですよ。コンピュータのプログラムはアルゴリズムに従って作られているので、3つのアルゴリズムの条件(有限回・必ず終了・曖昧さがない)は必須です。
アルゴリズムと聞いた時聞き覚えのある言葉だな、、と思っていたが動画を見てそれか!!となった。おかげで授業の後から手を横に!あら危ない!が頭から離れません。アルゴリズム体操もそうだし、レシピもアルゴリズムの一つと聞いてアルゴリズムをかなり身近に感じた。言われてみるとインスタント麺の「ゆであがる」は具体的な数字がないと曖昧で(探究でいうマジックワードを思い出した)、人間は個人の裁量でなんとかできるけれど、指示を完璧にこなす、逆に言えば指示通りにしか動けないコンピューターには通じないのも納得できた。これからわかりやすい説明を求められた時にはコンピューターに指示を出すような気持ちで説明すればいいのか?と思った。
部下に仕事を頼むとき、「早めに」じゃだめで「明日の15:00」と具体的に指示した方がよいそうです。人間泣いてでも具体的に数値で指定する方が、正確に情報共有ができて、円滑に仕事が進むんですね。
数学の証明問題なども、一つ一つ手順を踏んでいくため、考え方が似ていると思った。
2そうですね。一部の「証明」は解法の手順ですから、アルゴリズムなんです。
機械にも理解できるように表現を変えることが意外に難しかった。レシピ本で時々使われる「しんなりするまで」という表現は、人間相手なら特に補足しなくても十分だが、機械はまったく理解できない。このような場合は「その材料を一定の力で上から押しつぶすと切れるか」で分岐処理を用いないといけないのだろうか。
機械に命令するのであれば、時間で指定すると思います。何回か実験して、しんなりするのに必要な平均時間を設定します。レシピには「3分炒める」って書いてあることもありますよね。結果「しんなり」するまで炒めているかもしれません。
コンピューターに指示するときは1からすべてを説明する必要があるが、人間に対しての場合も誤解が生まれないように、特に不特定多数の人に見せるものにおいて、曖昧さをなくすことは大切だと思った。
よく理解できない説明書などは、書いていない手順があったり指示に曖昧さがあったりしているのだと気づいたから、自分がつくるときには気をつけたいと思った。
今回は、フローチャートやアクティビティ図を使って、プラグラミングの元になるアルゴリズムについて理解した。人が、説明書などを呼んで、行動するときは、常識として普通に考えたらわかるものも言う共通の知識があるため、説明を少し省いてもわかるところが多いが、コンピュータに入力するため、アルゴリズムはきちんと正確である必要があることを知った。また、自分が話していることにも多くの不足情報があることにとても気付かされた。
アルゴリズムは難しいものかなと思っていたけれど単純に考えることが大事だと思った。
アルゴリズムを書くときの条件の一つに、「曖昧さがない」とあったが、私たちが日常的に使う表現だと、「天気がよかったら(雲半分くらいだと?)」だったり、「火を通す(ウェルダン?それともミディアム?)」だったり、「クリアするまで(ラスボス倒す?それともフルコン?)」だったりと、曖昧な表現が多すぎて、いちいち数字や固有名詞を使わないと思ったような命令にならなそうだと思った。ただ逆に言えば、そういった曖昧な表現をその場の雰囲気で解釈できるのは、コンピュータにはない人間の強みとも言えると思う。
インスタントラーメンの作り方をフローチャートで表したときに、エクセルに打ってどのような基準で丸がつけられているのか気になりました。多分キーフレーズがあらかじめ設定されていたり、沸騰したお湯の定義から始めておらず、文中の言葉を使って打てばいいので用意した答えとの差ができにくくて想定する回答が少なかったりするから、機械的に丸がつくのだろうと思いました。想定できる回答がたくさんある大学入学共通テストでは、採点者によって点のバラつきがあるとして国語、数学の記述式問題の導入が見送られました。そこで、AIを使った採点を千葉大学の教授が研究しているそうです。キーフレーズだけでなく、NGフレーズを設定するなどをして採点をさせるそうです。しかし、AIに日本語のような特に曖昧な言語を扱わせて採点するのは採点されるこっち側からすると怖いです。もし導入するなら理科や社会は専門用語が入っていればだいたい正答しやすいので、そっちで導入すべきだと思います。
カップラーメンの手順を書くやつで、自分なりに順序を整理して書きたくやってしまうけど、そもそも説明書の時点で手順は考えられているはずだから素直に従わなければならなかったなと思った。
コンピュータは解釈ができないというとを考えて命令を出すことが大切だと思った。
フローチャートは中学校で習っていたから、馴染みがあった。プログラミングの核はプログラミング言語を覚えることじゃなくて、アルゴリズムを適切に考えることだと分かった。
プログラムを書くときはプログラミング言語を理解することも大切だが、アルゴリズムを考えるのも大切だという話には確かになと納得できた。今までプログラムを書く前にこういう流れで答えに持っていこうと特にしっかり決めているわけではなかったので、今度は書く前にプログラムの全体像をアルゴリズムで考えてからプログラムを書くとすっきりとしたプログラムができるのではないかと思った。
今回、アルゴリズムについて学習しました。今回の授業を通して、人間の動作の感覚と、コンピュータの動作の感覚がまるで違うことを実感しました。人間は少し手順がミスっても空気を読んで間違いに適応して、正しい手順を踏んでくれませんが、コンピュータはそうはいきません。そのかわり正確に手順を踏んでくれます。人間とコンピュータという全く違うものをうまく使い分けて生活を便利にしていきたいと思いました。
人間が普通に理解できることでも、機械が理解できるようにするには、かなり単純で具体的な指示を出す必要があることが分かった。また、授業では与えられた説明をフローチャートに直しただけだったが、プログラムを考えるときには一から自分で考えなくてはいけないので、先を見通して手順を考えられるようにしたい。
人間はしっかりとした手順を定めていなくてもいくらでも思いつきで行動できてしまうが、コンピューターはそれができないので、プログラミングの際、正確なアルゴリズムを考え出すことが大切だと思った。
中学校でプログラミングを使ってミニゲームを作ったとき、あれこれ指示をするよりもシンプルにできないか工夫したほうが自分のミスが少なかったのを思い出した。日常の場面でも、物事の効率化と単純化を考えて過ごしたいと思った。
普段人間が無意識にやっていることも、しっかり順番通りに正しく指示しないといけないことが分かった。

自己評価集計

自己評価集計

ワードクラウド

3つのキーワード

3つのキーワード
感想や気づき

感想や気づき
テキストマイニング 無料ツール by ユーザーローカル
前のページに戻る