2021年6月14日

技術系ぽい雑談(2021-06-14)

3
ほえほえ@DX塾 @hoehoe1234

個人的にはこういうハック(発想)大好きですし、すばらしいと思います。応用であるとともにパターンであるところに渋さと経験を感じます。 twitter.com/sugoi_kaizen/s…

2021-06-14 14:49:18
ほえほえ@DX塾 @hoehoe1234

中学まで算数完全制覇が必要なのはいうまでもないのでうが、これは「理解」を言っているのではありません。中学までの算数は「応用」することが求められます。昨日のカーネルリーディングでも「切り上げ」の話がでました。みんさん無意識にやってらっしゃると思いますが切り上げとはこのような話です。

2021-06-14 14:50:55
ほえほえ@DX塾 @hoehoe1234

100円なら100円、110円なら200円、120円でも200円、、、、190円でも200円、200円でも200円です。これは多分、中学校の算数の話でしょう。しかし、この話が今度は「メモリブロックの切り上げ」の話になるのです。

2021-06-14 14:52:23
ほえほえ@DX塾 @hoehoe1234

メモリブロックは2の累乗のサイズで確保したりします。V6では64が基本になっています。たしか、これをグレインと呼ぶとか聞いたことがあるのですが定かではありません。単位64、すなわち、UNIT64ということです。これは単純に64個で1と数えるということですが、この感覚が実に難しいのです。

2021-06-14 14:53:44
ほえほえ@DX塾 @hoehoe1234

10円、1000円なら簡単に「切り上げ計算」ができるのですがコードでは64で切り上げなければなりません。さて、どうしましょうか?という話になります。ここで中学数学を「応用」する必要があります。切り上げとはなにか?を一般的に理解する必要があるのです。

2021-06-14 14:54:55
ほえほえ@DX塾 @hoehoe1234

推奨しているように具象例を書くことをおすすめします。 必要なサイズ(Request)、必要な単位(64単位、B) R B  0 0 1 1 2 1 ・・・ 63 1 64 1 64 2 となります。今回は64ですが、この仕組は一体どうなっているのでしょうか?

2021-06-14 14:57:30
ほえほえ@DX塾 @hoehoe1234

推奨している方法は ①10進数を基数として具体例を書いてみる ②10進数を基数として数式、ルールに変換してみる ③求められている問題の具体例を書いてみる(上記ツイ) ④求められている問題を数式、ルールに変換してみる。 ⑤一般法則を考えてみる。 となります。

2021-06-14 14:59:20
ほえほえ@DX塾 @hoehoe1234

今回の場合は、具体例から63を足して切り捨てればほしい数字になります。ここは自分で「図、数直線」を書いてみるのもいいと思います。ワイはよくそういう図式化をやります。 さて、63とはどういう数なのか?を考えます。そうですね。基数から1つ少ない数です。

2021-06-14 15:00:46
ほえほえ@DX塾 @hoehoe1234

基数をRとすると、R-1を足すと、基数倍+1であれば次の水準に切り上がります。なので式を書くと 求めたいブロック単位 B リクエスト数 N 基数 R とすると B = (N + (R-1)) / R となります。Bは商ですね。これが切り上げの仕組みでごく簡単な話なのですが

2021-06-14 15:03:10
ほえほえ@DX塾 @hoehoe1234

自分で数式なりイメージなりを整理しておかないと「コードに現れた時」になかなか読めません。コードは「なぞる」のではなくて「読む」んですね。読むとは「意図を理解する」ということです。コードリーディングとはまさにそれで「なぞる」ことから「意図を理解する」ことへの意識の変化を意味します。

2021-06-14 15:04:38
ほえほえ@DX塾 @hoehoe1234

B = (N+63)>>6 を見たときに、「Nに63を足して右に6ビビットシフトしている」というのがコードをなぞるということです。もちろん最初は文法が理解できることが優先なのでこれでよいのです。しかし、コードリーディングとしてはこの先にある「意図」を読み取ることが必要なのです。

2021-06-14 15:06:48
ほえほえ@DX塾 @hoehoe1234

これは「Nを切り上げて必要なブロック数(64単位)をもとめている」というのが読むということです。メモリなので要求サイズを切り上げたブロック数を確保することが必要ですからね。これが中学数学を「応用する」ということだと思います。

2021-06-14 15:08:20

コメント

コメントがまだありません。感想を最初に伝えてみませんか?