はてなキーワード: ガーベジコレクションとは
ハードウェアをシミュレーションするの技術を身に着けたいんですけど、
そういうプログラミングコンテストってありませんか。
習得したいことは
C++で、
メモリ→メモリアロケーションとかガーベジコレクションとか
CPU→アセンブラで命令を与えてCPUの挙動をシミュレートしてみるとか
ハードディスク→保存・削除を何万回実行する、とかディスクフラグメンテーションとか
自分で作ってみたりはしてるんですが、どうも抜けや漏れがあるだろうし、
コンテスト形式で動作確認ができるのであれば利用したいのですが・・・、
AtcoderとかTopCoderとかって数学とか計算機科学とかで
Kaggleは機械学習だし、AI系のコンテストはわりとあるんですが・・・。
誰かご存知ありませんか?
SFをもっと楽しむための科学ノンフィクションはこれだ! http://d.hatena.ne.jp/huyukiitoichi/20140417/1397744529 を受けて10冊選んでみました。
「『現実とはなにか』という認識が変わっていく」ような本はありません。
ヨーロッパにおける完全言語を求める歴史を扱った『完全言語の探求』と多くのプログラミング言語設計者へのインタビューをまとめた『言語設計者たちが考えること』は、あまり読者が重なっていない気がしますが、円城塔をきっかけにして両方読んでみるのもいいのではないでしょうか。
「つぎの著者につづく」(『オブ・ザ・ベースボール』収録)の冒頭で語られるエピソードが『完全言語の探求』から引いたものであることは単行本収録時に追加された注で明示されていますし、「道化師の蝶」に出てくる無活用ラテン語についても『探求』で触れられています。
一方『言語設計者たちが考えること』については、読書メーターで「小説を書く人も読むと良い」(2010年12月10日)とコメントしていて、『本の雑誌』の連載でも取り上げています(2011年11月「言葉を作る人たち」)。また『本の雑誌』の連載では『言語設計者たち』以外にも時々プログラミング言語や言語処理についての本が取り上げられています。
最近連載のはじまった「プロローグ」(『文學界』掲載)も今のところ、より望ましい文字の扱いや処理についての話をしているので、いささか強引な解釈ですが『完全言語の探求』『言語設計者たちが考えること』と繋がっている小説です。
ロシア語作家として出発しアメリカ亡命後に英語作家に転身したナボコフは、自分自身の書いた文章を別の言語に翻訳する「自己翻訳」を相当数おこなっていますが、それを主題とした評論書です。
円城塔本人も語っていますが、「道化師の蝶」ではナボコフがモチーフとして使われています。友幸友幸が「希代の多言語作家」であることもナボコフへの参照のひとつでしょう(若島正は『乱視読者の新冒険』のなかでナボコフを「稀代の多言語作家」と形容しています)。その希代の多言語作家の「わたし」とそれを翻訳する「わたし」が重なるようで重ならない「道化師の蝶」の筋立てにも、同じ作品について作者と翻訳者の両方の役割を演じたナボコフの影が見出せます。また「道化師の蝶」の姉妹編といえる「松ノ枝の記」での、相互翻訳・相互創作する2人の作家という設定も「自己翻訳」の変奏と見ることができるでしょう。こうした創作と翻訳の交錯する2編を再読する上でも、この評論書が良い補助線になるのでは。
読書メーターのコメントは「素晴らしい」(2011年4月28日)。
最初期に書かれた『Self-Reference ENGINE』や「オブ・ザ・ベースボール」「パリンプセストあるいは重ね書きされた八つの物語」(『虚構機関』収録)などに顕著ですが、円城塔の小説には、掌編の積み重ね(積み重ならず?)によって全体の物語が作られるという構造がよく現れます。これは辞典を順番に読んでいく感覚とちょっと似ているかもしれません。『数学入門辞典』を読んでいると、たとえあまり数学に詳しくなくても、円城塔の小説に対してしばしば言われる「よく分からないけど面白い」という感覚を味わえると思います。ただし、円城塔の小説に出てくる数学用語がこの辞書に出てくるなどと期待してはいけません。
「一家に一冊」だそうです。 https://twitter.com/rikoushonotana/status/402707462370758656/photo/1
円城塔の小説には数学者やそれに準ずる人が多く登場しますが、『史談』は数学者を語った本として真っ先に名前のあがる定番の名著です。著者は類体論を確立したことあるいは解析概論の著者として知られる高木貞治。かの谷山豊はこの本を読んで数学者を志したそうです。
数学部分については河田敬義『ガウスの楕円関数論 高木貞治先生著"近世数学史談"より』という講義録があるくらいには難しいので適当に飛ばしましょう。
『考える人』2009年夏号 特集「日本の科学者100人100冊」で円城塔が選んでいたのが高木貞治とこの本でした。
ムーンシャイン現象は、『超弦領域』収録の「ムーンシャイン」の題材で、他に「ガーベジコレクション」(『後藤さんのこと』収録)にも単語だけですがモンスター群とコンウェイが出てきます(コンウェイは「烏有此譚」の注にも言及あり)。作品内に数学的ホラ話といった雰囲気がしばしばあらわれる円城塔にとって「怪物的戯言(モンスタラス・ムーンシャイン)」はいかにもな題材かもしれません。
ムーンシャインを扱った一般向けの本というとたぶん最初に『シンメトリーとモンスター』が挙がるのですが翻訳が読みにくいし『シンメトリーの地図帳』にはあまり説明がなかった気がするので、この『群論』を挙げます。
数学の専門書ですが、第4章「有限単純群の分類/Monsterとmoonshine」は読み物風の書き方になっています。ただし詳しい説明なしでどんどん話が進んでいくところも多く、きちんと理解するのは無理です(無理でした)。
第4章を書いている原田耕一郎はモンスター群の誕生にも関わりが深い人で、多くの文章でモンスターとムーンシャインについて触れているので、雑誌などを探せば難度的にもっと易しい文章が見つかるかもしれません。
円城塔の小説には「オブ・ザ・ベースボール」のように確率についての言及もよく見られます。『数学セミナー』『数学のたのしみ』『科学』等で高橋陽一郎が書いた確率論についての諸入門解説記事、は探すのが面倒だと思われるので、もっと入手しやすいこの本を。
確率微分方程式で有名な伊藤清のエッセイ集です。「確率」より「数学者」の項に置くのがふさわしい本ですが確率の本として挙げます。
読書メーターのコメントは「素晴らしい」(2010年10月24日)。
やはり専門が力学系ということもあり、力学系関連もしばしば登場します。
本のタイトルを見て「力学系と力学は違う」と指摘されそうですが、副題は「カオスと安定性をめぐる人物史」。力学系の歴史に関する本です。実のところどんな内容だったか覚えていないのですが、「いわゆるこの方程式に関するそれらの性質について」(単行本未収録)で引用文献に挙がっているから大丈夫でしょう。
『Nova 1』収録の「Beaver Weaver」をはじめ、ロジック(数学基礎論)関連も円城塔の小説に頻出する素材です。
とりわけ計算可能性、ランダム性、busy beaver、コルモゴロフ複雑性……とあげてみると、まずはチャイティンの諸作が思い浮かびますが、あれはむやみに勧めていいタイプの本なのかちょっと疑問なので避けます。読書メーターでは、最近出た『ダーウィンを数学で証明する』に対して「 チャイティンのチャイティンによるチャイティンのためのいつものチャイティン」(2014年3月20日)とコメントしています。
これという本が思い浮かばなかったので、いくらかためらいながらもこの本を挙げました。『メタマジック・ゲーム』か、あるいはヒネリも何もなく『ゲーデル・エッシャー・バッハ』でよかったのかもしれません。ただ『ゲーデル・エッシャー・バッハ』だけを読んでもほぼまちがいなく不完全性定理は理解できないということはもっと周知されるべきじゃないかと思います。
円城塔はこの本について「すごかった。(但し、かなりハード。)」(2011年3月27日)とコメントし、『本の雑誌』でも取り上げています(2012年10月「ゲーデルさんごめんなさい」)。
初心者向きの本ではありませんが、不完全性定理について一席ぶつ前に読んでおくといいでしょう。
『天体力学のパイオニアたち』が上下巻なので、以上で10冊になります。
別にノンフィクションを読まなくてもフィクションを楽しむことはできますが、ノンフィクションを読むことによって得られるフィクションの楽しみというのもまた楽しいんじゃないでしょうか。
追記: 小谷元子編『数学者が読んでいる本ってどんな本』に寄稿している13人のうちのひとりが円城塔なので、そちらも参照してみるとよいと思います。リストに挙げられている約50冊の本のうち半分くらいがノンフィクションです。上に挙げた本とかぶっていたのは『数学入門辞典』『天体力学のパイオニアたち』『ゲーデルの定理 利用と誤用の不完全ガイド』でした。また、はてブのコメントで言及のあったイエイツ『記憶術』もリストに入ってました。
似たようなことがあってさ
おれ、学校ではガーベジコレクションって習ったんだけど、ガベージコレクションという言い方もするらしいのさ
garbage collection ってどっちの読みが正しいんかね
元増田っす
言語仕様がコンパクトなのがなぜ良いのかと言うと、実は2つ理由があります。
1つめは「全体像を把握するのが楽」という理由で。C++やJAVAだと全体像を把握するだけで疲れてしまうわけです。(使い方は奥深いけどね)
2つめはCOBOLを学ぶのと同じ後ろ向きの理由だけど、これからも活躍の場が多いだろうという予測。いまだに組み込みとかハードよりのところだとCは現役だったり、新製品の開発でももりもり使われてます。コンパイラが簡単に作れるし移植も楽だから。(これがCOBOLとかJAVAだと、開発環境を整えるのが大変なので選択されない。未来はわからないけれどもね)
標準ライブラリまで含めても、Cは異常に小さいよ。速いし。
Cのポインタってのは、値渡しのみにするとスタックでコンパイラをすっきりかけるけど、じゃあどうやって柔軟に運用させるべーと考えた妥協の産物です。
だから標準ライブラリにすら文字列・集合・リスト・配列を便利に扱えるものは入ってないし、ガーベジコレクションも多重のスレッドもヒープも入ってないわけです。(だからスタックと静的割り当てだけなんとかすればコンパイラが作れちゃう)知らなかったから作れなかったんじゃなくて、あえて切り捨ててる。
方向性として「間違いを少なくプログラミングする」とか「効率よくプログラミングする」ではなく、「コンパイラを簡単に作れるのが1番。でもできるだけプログラミングしやすいよう」にしてる。
そういう言語を2番目以降に学ぶのが良いのは、ハードよりの考え方(正確には、コンパイラよりの考え方)が出来るようになるから。これが「ポインタと言う概念を理解できる」ということに含まれてる。
メモリを意識したりポインタの概念を理解しておくと「なんで暴走するのか」「どうすると自分の足を撃てるのか」が理解できる。限界も面倒くささも便利さもわかるからね。(ポインタだからっつって暴走するんじゃなくて、C言語のポインタの実装だから、なんだけども。あと、ほんとは機械語=アセンブリを学ぶのが良いとは思うけど、それはハードルが高い。出来ることも少なくなっちゃう)
ポインタが暴走するから隠蔽する・使わないようにする・ミスっても平気にする、ミスらないようにするというのは、言語としては正しい方向性だと思う。
誰がどう考えても「存在しない配列を参照したらエラーを返さずに黙って暴走する(そこにあるメモリを見ちゃう)」「仕様として不定な動作が多い」なんてのはまずいでしょう。けれども、なぜまずいのか知らないまま便利な言語に慣れちゃうのは、感覚として良くない様な気がする。
C#だと信じられないくらい簡単にアプリ作れるし、PythonやPerlは普段使いの言語としてはすっごく便利。でもそれって、パック野菜やお惣菜を買ってきて晩御飯を作るようなものじゃないかな、と。ピーラーやミキサーは便利だし炊飯器はなきゃ炊事なんてやってられない。それでも、その道を学ぶのであれば「レシピを見れば料理は作れる」「包丁となべで調理できる」「なべかまでご飯は炊ける」なんてのは、必要じゃないかなあと。
今あえてC言語を学ぶのは、それが学びやすい(情報が手に入りやすい)最後の言語だから。
(まあ、何を目指すかによって違うとは思うけどね。僕の言ってんのは「いまあえてスペイン語だ!」って言ってるようなもんだし。違うか)