<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja"> 
  <HEAD>
    <title>Akihito Nagata's Page</title> 
    <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
    <META http-equiv="Content-Style-Type" content="text/css">
    <meta name="keywords" content="akihito,nagata,ocaml,java,unix,linux,postgresql,html,stylesheet,cgi,thesis,type">
    <meta name="description" content="Akihito Nagata,プログラミングやlinuxなどのtips">    
    <meta name="robots" content="all">
    <link rel="stylesheet" href="/~ganat/stylesheet.css" type="text/css">
    <link rel="stylesheet" href="stylesheet.css" type="text/css">
    <style type="text/css">
      
      span.diary { color : #226;
                 font-style : italic;
                 text-align : right;
                 border-width : 2px;
                 font-size : 1cm;
                }
      div.right{ text-align : right ;
                  border-color : #226;
                border-style : none none solid none ;}
      div.diary { margin : 20px;}       
      div.contents { padding : 20px;}
    
    </style>
  </head>
  <body>
    <table summary="table" border=0 cellspacing=0 cellpadding=0>
	<tr>
	  <td valign="top">
	    <table summary="table" border=0 cellspacing=0 cellpadding=0>
		<tr>
		  <td>
		    <!-- 左上の画像 -->
		    <table summary="table" border=0 cellspacing=0 cellpadding=0>
			  <tr>
			    <td width=10><img alt="*" src="/~ganat/images/borders/pic_border_lt.jpg"></td>
			    <td width=120 style="background-image : url(/~ganat/images/borders/newpic_border_t.gif);">
			      <img alt="*" src="/~ganat/images/borders/white10x10.gif"></td>
			    <td witdh=10><img alt="*" src="/~ganat/images/borders/pic_border_rt.jpg"></td>
			  </tr>
			  <tr>
			    <td><img alt="*" src="/~ganat/images/borders/pic_border_l.jpg"></td>
			    <td><img alt="*" src="<!--#exec cgi="/~ganat/cgi-bin/todayimage.cgi"-->"></td>
			    <td style="background-image : url(/~ganat/images/borders/newpic_border_r.gif);vertical-align : top;">
			      <img alt="*" src="/~ganat/images/borders/white10x10.gif"></td>
			  </tr>
			  <tr>
			    <td><img alt="*" src="/~ganat/images/borders/pic_border_lb.jpg"></td>
			    <td style="background-image : url(/~ganat/images/borders/newpic_border_b.gif);text-align:left;">
			      <img alt="*" src="/~ganat/images/borders/white10x10.gif"></td>
			    <td><img alt="*" src="/~ganat/images/borders/newpic_border_rb.gif"></td>
			  </tr>
		      </table>
		  </td>
		</tr>
		<tr>
		  <td class="menu" valign="top">
		    <!-- MENU -->
		    <div class="menutitle"><img alt="menu" src="/~ganat/images/menutitle.jpg"></div>
		    <div class="menu"><table width="140">
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/index.html">Top Page</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/ocaml/ocaml.html">Ocaml</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/java/java.html">Java</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/diary.html">Theses</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/presentation.html">Presentation</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/survey/index.html">Survey</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/unix/unix.html">Unix Tips</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/memo/index.html">Memo</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/link.html">LINK</a></td></tr>
<tr style="text-align : right; "><td><a class="menu" href="/~ganat/cgi-bin/nagabbs/nagabbs.cgi">BBS</a></td></tr>
</table>
</div>
		  </td>
		</tr>
	    </table>
	  </td>
	  <td>
      <table summary="table" border=0 cellspacing=0 cellpadding=0>
		<tr>
		  <td valign="top" style="text-align : center;">
		    <!-- 題名 -->
		    <!-- <div class="title">GANAT PAGE</div> -->
		    <img alt="Akihito Nagata's Page" src="/~ganat/images/title.gif">
		  </td>
		</tr>
		<tr>
		  <td>
		    <!-- メイン -->
		    <table summary="table" border=0 cellspacing=0 cellpadding=0>
			<tr>
			  <td width="10"><img alt="|" src="/~ganat/images/borders/vline_t.jpg"></td>
			  <td></td>
			  <td></td>
			</tr>
			<tr>
			  <td style="background-image:url(/~ganat/images/borders/vline.jpg);"><img alt="|" src="/~ganat/images/borders/vline.jpg"></td>
			  <td><div class="main">
    <div class="title"><span class="title">今までに読んだ論文の感想</span><img alt="keyboard" src="/~ganat/images/keyboard.gif"></div>

   <div class="diary">
      <div class="right"><span class="diary">Security in Plan 9(Russ Cox, Eric Grosse, Rob Pike, Dave Presotto, Sean Quinlan at Proceedings of the 11th USENIX Security Symposium)</span></div>
      <div class="contents">
	米澤先生の授業で読むことになった論文。セキュリティは良く知らないので勉強しなくては。<br>
	Plan9というのは Unixを作った Bell研が UNIXの問題( = 分散環境に適合できなくなっている) を克服するために作ったOSらしい。
ここのワークステーションにばらばらのソフトウェアがあるのが今の現状なのでどうにかしてネットワークが一つのコンピュータのように見え、均一で集中化されたしかも柔軟なOSを目指している。<br>
   Unixに比べて、
<ul>
<li>エンドユーザの自由度が飛躍的に向上した事</li>
<li>分散配置されたマシンを高度に統合性できる事</li>
<li>システム編成が柔軟に行える事</li>
<li>高度なセキュリティ機構を備えている事</li>
<li>新しいバックアップメカニズムを備えている事</li>
</ul>
のような特徴を持っている。<br>

今回の論文はこの中のセキュリティについて学びます。

      </div>
    </div>

   <div class="diary">
      <div class="right"><span class="diary">A Type Theory for Memory Allocation and Data Layout(Leaf Petersen,Rorbert Harper, Karl Crary, Frank Pfenning</span></div>
      <div class="contents">
	高レベルなデータ構造の実際の表現を気にすることができるような、低レベルな言語でも、型システムを用いてメモリの安全性が保証できるぞという論文。型情報でいっぱいになってしまうTALとは違うらしい。できることはヒープ領域のメモリを複数のオブジェクトの分同時にとってしまういう最適化。この最適化によりどれほど効率があがるのか？それは書いてなかった。
      </div>
    </div>
   <div class="diary">
      <div class="right"><span class="diary">Linear types can chage the world!</span></div>
      <div class="contents">
	Linear Typeがなんなのか学びたいと思います。<br>
	Linear Typeというのを定義する。Linear Typeというのは1回作られて1回だけ使われるようなオブジェクトの型。複製されたりそのまま捨てられては駄目。でも全てのオブジェクトがLinear Typeのような言語は表現力に欠けるので普通のNonlinear Typeと共存させます。1回しかみないオブジェクトはそれを壊しながらupdateできるのでGCとかよりも効率がよい。(2002.3.21)
      </div>
    </div>
   <div class="diary">
      <div class="right"><span class="diary">Flow-Sensitive Type Qualifiers</span></div>
      <div class="contents">
	よくわからないけれど、ファイルなどのオブジェクトの使用方法を推論してバグを見つける論文。Related Workに五十嵐さんと小林さんの論文が入っていてすごい。僕も参照されてみたいです。<br>
	しかし、前提となる知識が足りなくて断念。一度読むのをあきらめました。やはりとりあえずlinearがなんなのかわかりたいです。(2002.3.15)<br>
	普通の型システムのtype qualifiersをつけます。型は場所に関係なくつけられる(flow insensitive)けど、リソースのプロパティはプログラムでの場所に依存するのでflow sensitiveなqualifiersにする。どうやらquolifiersはユーザーが指定するみたい。それを正しいかどうか確かめる。<br>
	頑張って読んだ。effect,linear type,store,restrictionなどいろいろ学べて良かった。でもPOPLではうまく発表できなかった。残念だ。次回はちゃんと発表できるようにします。(2002.4.17)
      </div>
    </div>
    <!-- ====================================================================================-->
    <div class="diary">
      <div class="right"><span class="diary">PPL & SPA</span></div>
      <div class="contents">
	はじめて学会というものに参加しました。<br>
	大分の別府で温泉に入りながらの学会でした。自分も卒論のscheme-to-javaをSPAのポスターセッションで発表させてもらいました。ポスターセッションは教授などに自分の研究をみてもらって突っ込んでもらうための発表というような感じだったけれど、ほとんどの突っ込みには答えられた気がします。住井さん他、米澤研の人に大感謝という感じです。<br>
	あとRubyの作者のまつもとさんに興味を持ってもらえてお話ができました（少しだけど）。<br>
	発表がない時間は他の学校の人といろいろ話をすることができて。非常に楽しかったです。来年も参加できたらと思います。来年はポスター発表ではなくショート発表くらいに格上げしたいものです。あと個人的に旅行が苦手なので近いところ希望です。<br>
	残念だったことは他の人の発表がほとんど理解できなかったところ。前提となる知識がないもんだから何が新しいのかもわからないし内容もよくわからない。わからないながらもlinear typeというものに興味を持ってみました。調べてみようと思います。<br>
	あとそこで発表した僕の卒論です。<a href="/~ganat/thesis.ps">(ps)</a>(2002.3.5 - 2002.3.7)
      </div>
    </div>

    <div class="diary">
      <div class="right"><span class="diary">Memory Controlled Spill Code for Software Pipelining</span></div>
      <div class="contents">
	ループをソフトウエアパイプラインに変換すると使用するレジスタの数が増えてしまう。もしこの要求されるレジスタ数がマシンの持っている数よりも多くなってしまった場合は使用するレジスタ数を減らす必要がある。減らすには１、各ステージを長くする。２、変数をメモリに吐き出す。の２通りがあるが、これらの２つを両方適度に使うことでどちらか一方よりもいい結果が出せる。という論文。<br>
	組み合わせるあたりが自分の卒論と似てて好感触。レジスタ割り当てがどうこういうより実際にどうやってソフトウエアパイプラインに変換するのが気になります。これはこれでわかりやすくてよかったけど。(2002.2.26)
      </div>
    </div>

   <div class="diary">
      <div class="right"><span class="diary">No Assembly Required:  Compiling Standard ML to C</span></div>
      <div class="contents">
	Cにどうやってtail callを実装するか、だけのために参照しました。そこ以外は全然よんでません。普通にCallしまくってスタックがあふれそうになったら区ロージャーを作って、スタックの底でまってるトランポリンという人に継続を渡します。スタックはあふれないけど、ジャンプの回数は変わらないのでそんなに速くはならないのでは？と。(2002.2.10)
      </div>
    </div>

   <div class="diary">
      <div class="right"><span class="diary">Extending Java Virtual Machine to Improve Performance of Dynamically-typed Languages</span></div>
      <div class="contents">
	動的型付け言語をJVMに効率良く実装するためにJVMを拡張。参照型とint型の両方を格納できるdescriptorという型をバイトコードに導入する。JVMの拡張なんて何から始めたらいいのかわかんないっす。さすが大岩さん。僕のSoft Typingと異なるアプローチとしていろいろ引き合いに出させて頂きました。(2002.2.10)
      </div>
    </div>

    <div class="diary">
      <div class="right"><span class="diary">Kawa : Compiling Scheme to Java</span></div>
      <div class="contents">
	これもScheme-to-Javaコンパイラ。コンパイラとしても使えるが、クラスローダを利用してJITっぽくインタプリタとしても使える。Schemeの正しいnumber型を目指したりcall-ccを部分的に実装したりとR5RSに近づける工夫がいっぱい。また一般の関数型言語-to-Javaを実装するためのライブラリとしても使えるらしい。(2002.2.10)
      </div>
    </div>


    <div class="diary">
      <div class="right"><span class="diary">SILK -- a playful blend of Scheme to Java</span></div>
      <div class="contents">
	僕の卒論のテーマと同じScheme-to-Java。こっちはコンパイラ。Schemeのコード中からJavaのクラスやらメソッドやらを扱える。すごい。(2002.2.10)
      </div>
    </div>

    
    <div class="diary">
      <div class="right"><span class="diary">Tail call elimination on the Java Virtual Machine</span></div>
      <div class="contents">
	Javaのバイトコードでどうにかしてproperなtail callを実装しようとした論文。自分自身を呼び出す末尾再帰ならば単純なfor loopに置き換えることができ、この場合は速いしスタックものびない。しかしJavaはメソッドの長さに制限があるのでこの方法は不向きな場合があるらしい。他にはコンティニュエーションを頑張って作るなど方法があるようだけど、バイトコードではジャンプを減らし速さを向上させるためのproperなtail callは無理でスタックを伸ばさない用にするのが精一杯という感じ。(2002.2.10)
      </div>
    </div>


    <div class="diary">
      <div class="right"><span class="diary">A Practical Soft Type System for Scheme</span></div>
      <div class="contents">
	Schemeに実際にSoft Typingをする。長い論文。Static Typeなど新しい概念が多くて読むのがたいへん。
	アブセントバリアブルという特殊な型変数を設定することでプロシジャを複製すること無くポリモルフィックにできる。(2001.11.28)
      </div>
    </div>
    <div class="diary">
      <div class="right"><span class="diary">Compiling Standard ML to Java Bytecodes</span></div>
      <div class="contents">
      SMLをJavaにコンパイルする。ポリモーフィズムはすべての型に対してコードを作るというSTLまがいのことをしていた。でもバイトコードにコンパイルすることを利用して関数をただのイテレータに変換するなど頑張ってた。関数を引数に渡す場合はそれぞれのタイプについてインターフェースを作りそのオブジェクトとして渡す。よって使われる全てのインターフェースを作る必要があった。シグニチャを書くことで隠蔽をすることができるけど、外に見える部分では関数渡しのできる関数は定義できないようになってた。<br>
      あとSMLとOcamlは微妙に書式が違ってうまく書けない。(2001.11.20)
    </div>
    </div>
    <div class="diary">
      <div class="right"><span class="diary">Safe polymorphic type inference for a Dynamically Typed Language:Translating Scheme to ML</span></div>
      <div class="contents">
      SchemeのソースをMLのソースに変換しようという論文。動的型チェックのSchemeをできるところは静的に型チェックしてしまうことりにより効率化を計る。なんとなーくわかったけど自分の英語力の無さのため十分にはわからなかった。東大記録会のテントの中で読んだ。寒かった。(2001.11.6)
    </div>
    </div>
    <div class="diary">
      <div class="right"><span class="diary">Soft Typing</span></div>
      <div class="contents">
      MLのように厳格に静的に型をつけてしまうのではなく、ランタイムの型チェックも許して適度に型をつけましょう。これでSchemeにも型をつけることができます。でも重要なところはfull paperを参照してくれと書いてありfull papaerを参照すると非常に長々と書いてあるため読む気が無くなる感じだった。(2001.10.23) 
      </div>
    </div>
  </div></td>
			  <td></td>
			</tr>
			<tr>
			  <td><img alt="|" src="/~ganat/images/borders/vline_b.jpg"></td>
			  <td></td>
			  <td></td>
			</tr>
		    </table>
		  </td>
		</tr>
	    </table>
    </td>
  </tr>
  </table>
    <div><a href="/~ganat/old/index.html">前のページはこちら</a></div>
  </body> 
</html>