You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
ゲームプログラミング界の巨人、Tim Sweeneyが「未来のゲーム開発テクノロジー」を語る 超並列処理、次世代のゲームグラフィックスはソフトウェアレンダリングに回帰する 9月9日~11日開催 会場:昭和女子大学 「CEDEC 2008」の最終日、海外トラックの目玉となるセッションが開催された。講演者は米Epic GamesのCEO、Tim Sweeney氏。Sweeney氏はEpic Gamesの創設者であると同時に、1997年にリリースされたFPS「Unreal」のメイン開発者であり、また現在では同社の技術ディレクターを兼任して研究開発を続けているという現役の最先端テクノロジストだ。 「未来のゲーム開発テクノロジー」と題されたこの講演では、Sweeney氏が予測するゲーム開発の将来像が提示された。Sweeney氏は評論家やアナリストではなく、その将来像を具現化する最前線に立っている人物
この記事はMario Gleichmann氏による、「Functional Scala」シリーズの第7回「Functional Scala: Lambdas and other shortcuts | brain driven development」を、氏の許可を得て翻訳したものです。(原文公開日:2010年12月5日) 前回は、関数型プログラミングの世界における最も強力な概念のうちの1つ、すなわち高階関数を見てきました。本質的に、ある関数が高階と呼ばれるのは、他の関数を引数として受け取る場合か、結果として関数を出力する場合でした。この考え方により、抽象化の新しいやり方がもたらされるだけでなく、ある種の状態やいわゆるコンビネータ(関数ビルダと呼んでも構いません)を捕捉したり受け渡したりするといった、かなり便利なこともできるようになるのです。なお、コンビネータとは入力された関数もしくはその
一般に再帰呼び出しが可能な言語では、サブルーチン呼び出しのたびにスタックに呼び出し先から戻るための情報を保存する。そのため再帰が深くなりすぎるとスタックオーバーフローでプログラムが異常終了する。 そのような場合、次のようにループに変換して回避する。 { 変換前 } function F (a1:T1, a2:T2, ..., an:Tn) : T0 begin P ; return func (b1, b2, ..., bn) ; end ; { 変換後 } function F (a1:T1, a2:T2, ..., an:Tn) : T0 begin loop P ; a1 := b1 ; a2 := b2 ; : an := bn ; end loop ; end ; { Ti は型、P は手続き、bi は値または a1~an に対する副作用を伴わない式である。 それ以外の識別子は変
はじめに 関数型といえばモナド、モナドといえば難しいという事が巷で言われていますが、いきなりモナドを理解しようとするから難しく思えるだけで、圏論から順序を追って理解していけば全然難しく無いんだよって事を分かって貰えればいいなぁと思い書いて見ることにしました。 ただ、圏論といっても適用範囲がとっても広く、応用編になると分けわかんなくなってくるので、ここではプログラミング分野に特化したFP(functional programing)圏論*1について書きます。 また、説明を簡単にする為に細かい部分をいろいろ省略しています。学術的な定義としては正確ではないので、このエントリの説明は大体合ってる位の気持ちで読んでくださいね。 尚、ぼくは圏論の詳しい事はさっぱり分からないので、学問的な話を振られても回答できませんキリッ 圏ってなんなの? 圏論と言えば、圏です。 圏って何なのかというと、対象(obje
理学部・コンピュータ科学科 三好 博之教授 私たちの生活に欠かせないものとなったコンピュータ。便利になった反面、金融機関での大規模なシステムエラーなど、ひとつ間違えば社会全体を混乱に巻き込むような事故もひき起こしてしまいます。 今まで以上に安全性が高いシステムを構築するにはどうすればいいのでしょうか。その答えのひとつとなる「関数型プログラム言語」が専門の三好 博之先生に、それを使うことのメリット・デメリット、また現在のプログラムで使う関数や数学における関数との違いなどをお話いただきました。 数学の関数とコンピュータの関数は違う? みなさんは数学の授業で関数というものを習っていますね。簡単なものは、f(x)=x+3、などと表されますが、実は関数と一言で言っても、数学で学ぶものとコンピュータで使うものとでは、厳密に同じではありません。 たとえば、f(x)=x+3の場合ですと、f(x)が表してい
6. 今日の話 この本の解説 Purely Functional Data Structure Chris Okazaki リストとキューの話しかしません (それでも十分難しい) 7. 関数型言語の利点 • 本を読め! by C.Okazaki – J.Backus 1978 – J.Hughes 1989 – P.Hudak and M.P. Jones 1994 • それだとあんまりなので、適宜説明しま す 8. データ永続性(persistency) • 変数に割り当てられた値は一切変更され ることはない – 破壊的代入が行われない – いつ参照しても同じ値が返ってくる • 永続性により保守性が高まる 例: 1. aにある値を代入 2. bにある値を代入 3. a,bの値を表示 4. aとbにある操作をしてその結果をcに代入 5. a,bの値を表示 この間に値が変わらないのが、永続性
最近ちょっと気になるiterateeを勉強したので、日本語の解説を書いてみます。と言いつつ、大部分が The Monad.Reader Issue 16 *1 からの引用です。 はじめに Iterateeと呼ばれる新たなI/Oの抽象化手法が、最近にわかに広まりつつあります。既存のI/Oが抱える問題を解決するべくOleg Kiselyovによって2008年頃に提唱されたiterateeは、新しい高性能webフレームワークsnap *2 や、hyena *3 で利用されています。また、HackagDB上にて、iterateeパッケージ*4、およびiterateeを利用できる様々なパッケージ *5 *6 *7 *8 が公開されています。 しかし、ドキュメントの少なさなどからiterateeがどういうものなのかよく分からないという人も多いようです。そういうわけなので、iterateeを易しく解説し
Kota Mizushima (on a diet) @kmizu デブサミ2013の「こわくない関数型言語」の登壇者がアカデミックな背景持ってる人が多くて、これは「こわい関数型言語」になるのでは、というのが某所で流れてた件について。や、何もないですけど、 2013-02-10 14:52:51 takesako (y0sh1) @takesako 明日のデブサミ2013で【14-B-7】「こわくない関数型言語」のパネルディスカッションを17:45~開始します。参加する方しない方どちらも #kowakunai で「関数型言語のこわそうな部分」につぶやいていただけないでしょうか。 http://t.co/bNpKirCC 2013-02-13 13:51:59
■ [haskell] モナドについてなんか分かった気がした モナドって「結局何なの?」ってのがいまいち分からずにもやもやしてたんだが、なんか分かった気がしたのでメモ。 関数型言語では値が関数から関数へと流れていくことで計算が行われる。 このプロセスに「一皮被せる」ことで、計算の本筋とは別にいろいろな「仕掛け」を組み込むのがモナド。 値 a をただ流すんじゃなくて、Maybe a のようにモナドという箱に入れて、箱に入ったものどうしの演算を定義することで仕掛けを作る。 Haskellでは、モナドを「returnとbind(>>=)というメソッドが定義されている型」で表す。returnは値を箱に入れる関数。>>=は値を流す関数。 class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a returnの型は
■ [haskell] モナドって結局なんなの 社内勉強会でモナドについて発表しました。分かった気がするたびにすぐに手からすりぬけてしまう、それがモナド…! 追記: モナドそのものが何なのかとか考えないほうがいいんじゃないですかね! [Twitter / いーぐるとまとより引用] まさにその通りだと思います(笑)。IOの使い方、Maybeの使い方、Stateの使い方などを押さえておけば、 中がどうなってるかなんて知らなくても大丈夫。 でも、モナドの持つ「なんか秘技がありそうな感じ」が、中を覗いてみたくさせるんですよね。 この、どこまで掘っても自分の知らないことが出てくる感じがHaskellの魅力なのかも。 Haskell の本当にすごいところは、「なぜなに」を問いかけることでいつまでもプログラマが成長できるところにある。 [ふぁぼったー / ikegami__より引用] 一問一答 Q. モ
ノート"関数型プログラミングはパイプライン・プログラミング"、と考えてみるとイメージも分かりやすいし、実際のプログラミング時のガイドとしても有効なので、その観点でまとめてみよう、というのが今回のセッションの趣旨です。 元々Haskell的、Scalaz的Monadicプログラミングをやろうと思ったのは、ScalazのPromiseを見て衝撃を受けたのがきっかけなので、PromiseとKleisliやApplicative Functorを組合せて並列プログラミングした効果を実測値付きで盛り込めて目標の一つは達成できたかなと思います。 実際に書き始めてみると、Monadicの話に行く前に今風の関数型プログラミングの基礎といったものが必要なことが分かったので、その部分を厚くしてみました。逆に、当初予定していたReducerを使ってMonoidを任意のドメインオブジェクトに接続する手法や、Tra
ソフトウェア開発に Scala や Haskell、Erlang といった関数型言語を採用する企業が増えているそうだ (ITpro の記事より) 。 関数型プログラミング言語には「迅速に開発できる、バグを抑えやすい、アプリケーションの性能を向上させやすい」といった特徴があるとし、これらは新規のサービス開発に向いているという。「言語選定が競争力に直結」といった意見も記事には掲載されている。 これだけだといいことずくめのようにも聞こえるが、関数型言語は習得しにくく、ライブラリなども C/C++ や Java と比べるとまだ少ない。使いこなせるプログラマも少なく、関数型言語で大規模システムの設計を行えるエンジニアはまだ少ないのではないだろうか。関数型言語を使える人材はある程度スキルの高い人であり、そのために生産性が高いのではという疑問もある。今後日本で関数型言語の採用は進んでいくのだろうか?
業務で使う関数型言語の第一回は、レコードについてです。 この記念すべき第一回は、F# Advent Calendar 2011 の1日目の参加エントリーにもなっています。 レコードとオブジェクト指向プログラミング言語におけるクラスを比べながら、どういう場面でレコードが使えるのか見ていきましょう。 クラスのおさらい まずは、クラスについてのおさらいです。 Java や C# などの言語に見られるクラスには、以下のような特徴があります。 いくつかのデータをまとめることができる メンバに対して可視性 (もしくは accessibility) を設けることができる 他のクラスを継承することができる 継承先で振る舞いを変更することができる インターフェイスを実装することができる 他にもあるでしょうけど、とりあえずこのくらいで。 次はレコードです。 レコードの特徴 レコードを、クラスの特徴と同じような
ローンパターン Scalaでは関数をオブジェクトとして扱えるため、以下のような関数を考えることができる def withWriter(filename: String)(op: Writer => Unit) { val writer = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(filename),"UTF-8")) try { op(writer) } finally { writer.close() } } このwithWriter関数は以下の2つの引数をとる String 型のファイル名 Writer 型の引数を受け取り、Unit 型(つまり戻り値なし)を返す関数 withWriter関数内部では、指定されたファイル名でストリームを作成し、外部から与えられた関数にwriterを貸出し、その後、クロ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く