はてなキーワード: ポインタとは
「かゆうま」みたいなノリで匿名日記を書くサイト作って1年が経った
去年の投稿で「今では日500人切れば緊急事態宣言解除してもいい流れになってたり」と書いていたが、今や日3000人超えてても行動制限なしでゴールデンウィークは各地が賑わうと、すっかり世界が変わってしまった。
日本ではまだマスク着用が多いが、マスク着用義務を廃止した国も出てきているし、来年の今頃はマスク着けないがスタンダードになっているかもしれない。
まあワクチン打ってる人も増えてるし、オミクロン株は弱毒化してるということで、ウィズコロナ時代になったのだろう。
このまま終息してアフターコロナになることを願いたい。
サイト的にはこの1年は穏やかだった。
大きなバズはないが、投稿数が減ることもなく、むしろちょっとずつ増えてる感もある。
長く投稿してくれてる人、新たに書き込んでくれる人などなど大変ありがたい。
今年の2月にはfaviconを作ってくれた人もいた。ちょうど見かけたのでサイトに設定した。嬉しい。
自分ごとでいうと、去年の6月に適応障害になってしまい半年ほど倒れていた。
ある日の午後、15分ほどの軽いオンラインミーティング後に「さて、作業するかー!…あれ何するんだっけ……」と頭が真っ白になった。
とりあえずその日は午後休をもらい休んだが、翌日になっても翌々日になっても思考がボヤボヤしたままだった。
「これはヤバいやつな気がする…」と思い心療内科に行ったところ診断が出て休職になった。
休み中はとにかく眠くて、日中も5時間以上昼寝して、夜も8時間以上寝るでとにかく寝ていた。
短期記憶が死んでいて、麦茶を沸かそうとしても湯を沸かしっぱなしにしたり、火は止めたけどティーバッグを入れ忘れたり、ティーバッグを入れたまま翌日まで放置したりと散々だった。
本や漫画を読もうにも前のページのことを忘れるし、プログラミングしようにも1行書くと次の行に何書こうか忘れる状態。
それまでの趣味も全然できず、麦茶を忘れないようにしたり、料理で食材や調味料を入れ忘れないので精一杯だった。
4ヶ月くらいして徐々に眠気も緩和し、思考・記憶も回復してきた。
少しやる気も出てきたので、リハビリを兼ねて前々から読みたいと思っていたビジネス書を読もうとしたり、忙しくてなかなか時間が取れてなかった資格勉強を再開しようとしてみた。
元々時間が出来たら読みたい本リストややりたいことリストを作っていたのだか、どれもいまいちピンとこなかった。
そんな中ある日、本屋に行ったときに手にとったのが「ゼロからのOS自作入門」だった。
時間がかかり、それでいて仕事への費用対効果はほぼ無い。あくまで自分のコンプレックスから興味があると思っているだけ。それだったら仕事に効きそうなことを優先しようと封印していた。
ポインタに触れるのが久しぶりすぎて15年以上ぶりにC言語ポインタ完全制覇を引っ張り出してきて復習したり、図書館でオペレーティングシステムの本を借りてきて読んだり、学生時代に戻ったみたいだった。(たぶん学生時代はこんなにポインタとかOSの本を読んでなかったと思う)
理解は追いつかなかったが、UEFIとEDK IIの存在を知ったこと、CPUにリングプロテクションや専用レジスタがあることを初めて知ったりなどなど、どんどん新しいことを知れてとても楽しかった。
仕事への効果はいまのところ感じられないし、おそらく今後も効果を発揮する場面はなさそうだ。
倒れている間はなかなかしんどかったけど、仕事やキャリアの面から「やりたいと思い込んでいたこと」と、仕事に全然効かないけど「人生の満足度が上がるやりたいこと」がクリアになったのはいい機会だった。
いまは休みの日に合間を見て「コンピュータシステムの理論と実装」をやってる。これも楽しい。ゆるゆる進めていきたいと思う。
サイトの方も引き続きゆるゆる続けていきたいと思う。
COVID-19流行下の日々を集団で記録する日誌 https://enigmatic-brushlands-82725.herokuapp.com/
例えばJavaScriptでリストをコピーするとき
const newList = list.slice();
しかし、
「なんで const newList = listじゃダメなんですか?」
と聞かれると非常に困る。
例えばconst a = 123と入っているときに、bにコピーしたかったらconst b=aで良い。
プリミティブと配列の違いとして覚えてもらう、という方法もあるけれど
じゃぁ文字列はどうなんですか?となると非常に困る。
JavaScriptだけを教えるならそれでも問題ないかもしれないが、Pythonも一緒に教えるとかなるとカオスになる。
結局のところ、コンピュータの仕組みを理解してもらって、メモリのアドレスとかポインタを知ってもらい
それからプリミティブや配列の話をしないと根本的には説明できない。
単純なプログラミング教育ってこの辺が破綻してると思っているので、結局はPCの構造と機械語・アセンブリ言語・C言語と順番に教える必要があると思っている。
俺は設計より実装の方が苦手だわ。プログラミング言語の特に脈絡のない仕様(ファイルオープンして1行読むのってどうやるんだっけ?改行コードの扱いはどういう仕様だっけ?EOF判定はどういう関数だっけ?str2numに対応する処理の関数はなんだっけ?文字コードがUTF8じゃない場合にはなんか特別な引数書かないといけないんだっけ?1行読んでポインタを先頭に戻したい場合はどう書くんだっけ?ていうかディレクトリ内のファイルリスト取得する関数はなんだっけ?あー余計なファイルをはじくための正規表現の仕様はなんだっけ?.......)が全く記憶できなくてすげーストレス。なんど覚えても雑然としすぎていてすぐ忘れる。ファイル云々に限らずプログラミングは一事が万事全部そうだし…。
つまり、物語にガベージコレクションの機能があれば、自然と伏線は回収されるのではないか
参照をカウントしてゼロになったときにデストラクタが発動するだけでも構わない
つまり、スコープから外れるとスタックなどに確保された変数の領域が開放されるように、
物語のある地点のスコープに含まれるもの、近くてどうでもいいものは記憶からも消えていく
しかし、グローバルではないが、どれだけ広範囲なのか分からない伏線のようなものがあり、
物語が如何に進行しようとも、そのポインタだけはキープしている
ときどき登場人物が思い出したかのように伏線を語るとき、参照カウントが追加される
そうやってカウントが増えたり減ったりして、
最後は大団円でauto release poolの中に登録された伏線がドバーッと開放されていく
だから伏線にはポインタのように誰が所有しているとか責任を取るべきみたいな概念が当てはまるのかもしれない
つまるところ、メモリにゴミを置いたままプロセスが終了するということであり、
それでも問題ないのはOSのように周囲が尻拭いしてくれるからである
作者はコアダンプを吐くべきだ
いざ人に聞かれた時に説明できないものが多くて悔しい。分野偏っちゃったけど、適当に補完してほしい。
イメージとしては、原理自体はそう難しいものではないけど理解に時間かかるものを想像してほしい。
学びたてのときは理解している。今だと解説記事や解説記事を更にわかりやすくした記事等があるから理解には困らない。
人に解説することだって容易い。準備期間あったらちょっとした講演くらいできるとさえ思う。
だからしばらくして人に聞かれた時、自信満々に答える。
君も過去の私と同じ疑問を持ったのか、よし教えてあげよう。「まずこれはこうでしょ、そして…」
あれ?自分は今何を言おうとしていたんだ。頭が真っ白になる。
まず、の後が続かない。どうして。
忘れていることを忘れる、というか。すごく恥ずかしい。