タグ

2013年9月29日のブックマーク (8件)

  • [雑記] 型推論の是非(C# によるプログラミング入門)

    概要 Ver. 3.0 C# 3.0 では、var キーワードを用いて、暗黙的に型付けされたローカル変数を定義できるようになりました(型推論(type inference))。 型推論は便利な機能ではあるんですが、“いいことずくめ”なものではなく、少々副作用もあって、 その利用形態をめぐって軽い論争が起きたりもしています。 具体的にいうと、var の利用ポリシーとして、 以下のようなものが考えらていて、 どれがいいのかでもめています。 匿名型利用時など、どうしても必要なときだけ使う ↑に加え、右辺が new SomeClass() のようなときだけ var を使う int, string などの組み込み型に対しては使わない 使えるところでは全部使う “いいことずくめ”なんだったら「使えるところでは全部使う」でいいんですが、 最初に言ったように、少々副作用を伴うので、利用を制限した方がいいの

    [雑記] 型推論の是非(C# によるプログラミング入門)
  • 型推論について - soutaroブログ

    暇をみつけては python の型推論をやっている (やろうとしている)。でも、いまだに当にこれが「原理的に可能」なのかどうか疑問だ…。 http://www.unixuser.org/~euske/offline/memo/cur/cur.html#180812 「原理的に可能」とかについて. まず「原理的に可能」の意味を考える必要がある.「可能」ってなに?なにができたら「可能」なの? 型推論とかのプログラム解析の技術を評価する場合,二つの性質が重要になる.「健全性」と「完全性」.「型推論が健全性を持っている」というのは,「型が推論できたら,そのプログラムは正しい」ということ*1.「型推論が完全性を持っている」というのは,「正しいプログラムは必ず型が推論できる」ということ.MLなんかの型推論は,完全かつ健全である.非常に良くできた型推論アルゴリズムと言える.ただし,型推論アルゴリズムと

    型推論について - soutaroブログ
  • 型推論 - Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記

    以下のサイトを参考に http://dysphoria.net/2009/06/28/hindley-milner-type-inference-in-scala/ hindley-milnerの型推論をPython版をPHPで実装してみました。 Modula2->Perl->Scala->Python->PHP という流れで移植に移植を重ねられています。 洗練されたり、悪くなったりしてると思います。 今週末はいろいろと、型推論のソースを見てました。 まだ良くわかってませんが、単相だけではなくて多相の型推論も眼中に入って来た感じで 嬉しいです。 <?php abstract class Term { function __toString() { switch (true) { case $this instanceOf Ident: return $this->name; case $t

    型推論 - Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記
    yuhei_kagaya
    yuhei_kagaya 2013/09/29
    hindley-milnerの型推論
  • Introduction to type inference

    JS 実装をしようかな、と思い立ち、 まずは型推論の知識をしっかり取得するところから初めようと考えています. そもそも、型推論とはなんぞや、というところからおさらいしてみます. 私が型推論について知りたいことの一番の目的は、 「型推論を行うことで動的言語の事前コンパイルを可能にしプログラムの実行を早くすることができるのではないか」, ということになりますので、それに特化した内容になっています. もちろん型推論には、プログラムを早くするという以外の目的もありますが、 ここではそれらは取り上げないことにします. 型推論(type inference)とは、簡単に言うと、 var muda = 7 というコードがあったら、 「変数 muda って Int 型(整数型)じゃね?」 とコンパイラがよろしく変数の型を決定してくれる(推測してくれる)機能になります. 静的な関数型言語(Ocaml, Ha

    Introduction to type inference
    yuhei_kagaya
    yuhei_kagaya 2013/09/29
    型推論アルゴリズム
  • 過負荷に耐えるWEBサービス作成のための使えるPHPキャッシュテクニックまとめ:phpspot開発日誌

    過負荷に耐えるWEBサービス作成のための使えるPHPキャッシュテクニックまとめ。 サービス展開というとOSのチューニングや各種インフラソフトウェアのチューニング、更にはWEBアプリプログラム自体の効率化と、幅広い知識が必要になってきますが、PHPでWEBアプリを作る際によく効くキャッシュテクニックを用途・使いどころ別に説明します。 キャッシュをうまく効かせることで大幅に計算量を減らしてより多くのリクエストを少ないマシンで捌くことが出来、コストを下げたり、過負荷の悩みを減らせます。 個人レベルでのWEBサービス開発の場合、サーバ代がお財布を大きく圧迫しますが、最低のコストでサービスを賄うことに繋げられます、ということでPHPでサービス作ってやろうと思っている人は参考にしてみて下さい。 static変数でキャッシュ 特に何も入れなくてもそのまま使えるstatic変数。例えば、関数等で一定の計算

  • 『[Linux] プロセスIDを調べてみる』

    Linux上では、実行処理されているプログラムがプロセスという形で扱われ、それを見ることで正常に処理が進んでいるかを確認することができます。 Linuxでプロセスを調べる代表的なコマンドとしてpsコマンドがありますが、そのほかの方法でもプロセスを知ることができます。 サーバー管理者からみると、プロセスは名前で判別したほうがもちろんわかりやすいのですが、システム上から見た場合、同名のプロセスもあったりするためかえって判別がつきにくくなります。 プロセスは個別に受け持つ役割があるため、別のプロセスを間違って操作してしまうと、親子関係にあるプロセスなどへ影響が及んでしまいます。 そのため、プロセスにはユニークなプロセスIDが割り振られています。 プロセスをプログラムから操作する場合は、このプロセスIDを用いて操作するのが一般的です。 そのプロセスIDを取得する方法をいくつか紹介します。 プロセス

    『[Linux] プロセスIDを調べてみる』
  • DebianでPHP5.5.0を試してみる - Qiita

    Help us understand the problem. What is going on with this article?

    DebianでPHP5.5.0を試してみる - Qiita
  • PHP5.5 のコードキャッシュは APC から Zend OPcache へ

    PHP5.5 からコードキャッシュとして標準バンドルされた Zend OPcache を試してみました。 第6回関西PHP勉強会で Zend OPcache についてLTしたのでインストールやベンチマークなどはこちらで。 beta4時点では、Zend OPcache は拡張で提供され、opcache.so インストールされる。 Zend OPcache を使うには、php.ini で zend_extension=opcache.so の記述が必要。 やっぱりデフォルトでインストールされるのは楽。 PHP5.5リリースと共に使えるので安心。(PHP5.4 対応の APC はまだ beta) ユーザデータのキャッシュはできないので、別の方法が必要。 OCP – OPcache Control Panel Zend OPcache の利用状況(設定、キャッシュ量など)が確認できるスクリプトが