タグ

programmingとProgrammingに関するtztのブックマーク (522)

  • 『ふつうのHaskellプログラミング』サポートページ

    $Id: index.html,v 1.9 2006/06/01 16:35:13 aamine Exp $ [ 正誤表 | 書誌情報 | 詳細目次 ] [ SBCr | Amazon ] リスト処理・文字列処理の基礎からモナド、パーサコンビネータまで。 ふつうのプログラマに贈る関数型言語入門。 サポート情報 正誤表 GHC 6.4.2 のダウンロード [www.haskell.org] LazyLines のダウンロードとインストール サンプルコード (オンライン) サンプルコードのダウンロード (.zip) サンプルコードのダウンロード (.tar.gz) リファレンスマニュアル検索ツール href 質問や間違いの指摘などはメールで aamine AT loveruby.net (AT は @ に置き換え) までお願いします。 書誌情報 書名

  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • views

  • iidaの日記 | スラド

  • 正規表現を超える - あどけない話

    まずは、Audrey さんが言った Haskell の殺し文句を思い出して頂きたい。 正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分で Perl6 の完全なパーサを書く方法を勉強しましょう。 15分というのは誇張が入っていると思うが、正規表現が保守しにくく、Haskell の Parsec は強力で保守し易いのは事実だ。その理由を Perl と Haskell のコードを示しながら説明してみたいと思う。 Perl を愛する方に:この記事は Perl を攻撃するために書いたのではない。Perl を選んだのは、正規表現を広めた言語であり、僕がそれなりに Perl のコードを書けるためである。この記事の目的は、正規表現よりも関数型パーサー(Parsec)の方が優れていると示すことだ。 例題 この記事では例題として、IPv4 アドレスを解析する関数を書く

    正規表現を超える - あどけない話
  • 後藤弘茂のWeekly海外ニュース

    ■後藤弘茂のWeekly海外ニュース■ KhronosがGDCでGPUやCell B.E.をサポートするOpenCLのデモを公開 ●OpenCLの実装テストのスタートは5月 世界中のゲーム開発者が集まるカンファレンス「GDC (Game Developers Conference)」でKhronos Groupは、ヘテロジニアスな並列コンピューティングのためのプログラミング言語である「OpenCL」のオーバービューのセッションを行なった。 OpenCLは、NVIDIAの「C for CUDA (OpenCLもCUDAのランタイムに落とし込むため、従来の拡張CをベースにしたCUDAはC for CUDAと呼ぶようになった)」のように、GPUを汎用コンピューティングに使うことができるプログラミング言語だ。しかし、NVIDIA独自のC for CUDAとは異なり、クロスプラットフォームのプログラ

  • データ型のアラインメントとは何か,なぜ必要なのか?

    以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい

  • 「たしなみ」ではなく「たのしみ」としてのSICP - 思っているよりもずっとずっと人生は短い。

    こんにちは、SICPが好きな高橋です。って、どんだけ好きかはこの辺を読んでいただければ(ちなみに「このときの様子がなんとなく目に浮かんでいるのではないか」というのは控えめな表現で、100%かんぺきな再現力だと思います。私は爆笑してしまいました)。 さてさて、またまたSICPが話題になっていたようですね。しかもちょっとネガティブな意味でも。まあ、確かに新版の翻訳はちょっと読みにくいのもありますし、万人におすすめ、というわけではないのもわかりますが。 だがしかし。 http://d.hatena.ne.jp/nowokay/20090322#1237667055 じゃあ、SICPはどういうか。 LISPを使って仮想マシンを作って、LISPコンパイラを作って実行させて、プログラムがどのように動くかを勉強するだ。 えええええ。いやいやまさか、そういうじゃないはず、ですよね? とは言うものの。

    「たしなみ」ではなく「たのしみ」としてのSICP - 思っているよりもずっとずっと人生は短い。
  • ライブラリの外に公開するシンボルを制限する - bkブログ

    ライブラリの外に公開するシンボルを制限する C言語にはファイル内 (コンパイル単位) からしかアクセスできない static 関数と、別のファイルからもアクセスできる非static 関数があります。しかし、ライブラリを作成する上では、この2つのスコープだけでは不十分なときがあります。 記事では GNUの開発環境において、ライブラリの外に公開するシンボルを制限する方法を紹介します。 次のような例を考えてみます。 % cat a.c // foo() は libfoo の主役の関数なので公開したい void foo() { bar(); } % cat b.c // bar() はライブラリの中だけで使われるべきなので当は公開 // したくない。しかし別のファイルに含まれる foo() から使われ // ているので、非staticにせざるをえない void bar() { } このようなコ

  • いやなブログ - 実行時のスタックの消費量を調べる

    実行時のスタックの消費量を調べる 先日の記事では checkstack.pl を用いて個々の関数がどのくらいスタックを消費するか調べる方法を紹介しました。今回は、実行時の実際のスタック消費量を調べてみます。 以下のコードでは次のような方法でスタックの消費量を調べます。x86_32 の Linux 用です。 最初に max_num_pages 分だけスタックを伸ばす 伸ばした分をすべて mprotect でアクセス不能にしてしまう SIGSEGV を拾って 1ページずつアクセス可能に設定する 最後に、何ページ使ったかを表示する このような処理を行う共有オブジェクトを作成して LD_PRELOAD してやれば、実行時のスタック消費量をページ単位で調べられるのではないか、という試みです。 #include <asm/page.h> #include <assert.h> #include <er

  • checkstack.pl で関数のスタック消費量を調べる - bkブログ

    checkstack.pl で関数のスタック消費量を調べる Linux カーネルのソースコードに付属する checkstack.pl を使うと、C/C++ のプログラムの関数のスタック消費量を調べることができます。checkstack.pl は objdump -d のディスアセンブルの出力からスタックポインタの操作をパターンマッチしてスタックの消費量を計算しています。 入手方法 checkstack.pl は Linux カーネルのソースコードに付属しています。Debian GNU/Linux sarege なら次のようにコマンドラインから実行して取得できます。ソースツリーに含まれる scripts/checkstack.pl が目的のものです。 % apt-get source kernel-source-2.6.8 使い方 checkstack.pl の使い方は簡単です。スタックサイ

  • 良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blog

    Java並行処理プログラミングを読み終えた。ここ 1 年に読んだ技術書の中でダントツのベスト。(2位はWorking Effectively With Legacy Code) 「Javaだから関係ない」と思った人にこそ読んで欲しい。僕もここ数年 Java のコードなど一切書いていないが、このを読んで得たものは非常に大きかった。 このでは マルチスレッドプログラミングにおける問題と背景、その対処方法 Java が提供している API の設計と実装 を解説している。分かりやすさとレベルの高さを兼ね備えたとても良い。翻訳も最高。 僕はこのを読んで、Java の並行処理プログラミングは、想像を遙かに超えて進化している事に驚きを隠せなかった。何回も twitterJava すげーと叫んだ。 これを読んでしまうと、最近僕が熱心な Scheme も含めて、自分の身の回りにあるプログ

    良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blog
  • http://www.kt.rim.or.jp/~kbk/

  • ときどきの雑記帖 Re*

    この「日記のような何か」を含むサイトの一部はHugoを使って作られています。 使用するHugoのテーマ、記事のパーマネントリンクなどは予告なしに変更される可能性があります。 雑記帖のrssは http://www.kt.rim.or.jp/~kbk/zakkicho/post/index.xml で取得できます。

  • マイクロスレッド講座 - 弾幕風Wiki

    はじめに ここでは、スクリプトバージョン2から導入されたマイクロスレッドというものについて解説していきます。プログラムをかじった事がある人でも、マイクロスレッドというものにあまりなじみのない人は多いのではないかと思います。マイクロスレッドは、特にゲームにおけるアニメーション処理において非常に重宝される機能ですので、是非ともマスターしておきましょう。 ↑ 1−1.概念 マイクロスレッド(ファイバーと呼ばれることもある)とは、中断可能な処理のかたまりです。関数やサブルーチンでは一旦呼び出し元に戻るとそれっきりですが、マイクロスレッドでは一度中断した部分に、また後で戻ることができます。 図 1-1-1 関数やサブルーチンの処理の流れ 図 1-1-2 マイクロスレッドの処理の流れ マイクロスレッドは一度に複数立ち上げることができ、まるで並列して処理を行っているような感じになります。 図 1-1

  • スタックオーバーフローのハンドリング (Stack Overflow Handling)

    作成日:2004.04.12 更新日:2006.02.19 更新記録 (2004.04.12) 3/6、 3/11、 3/13 の日記をまとめて作成。 (2004.05.07) 文章を修正。サンプルコードを追加。 (2005.01.20) alternative → alterante に修正。 (2005.02.13) 追記を記述。 (2006.02.17) linux_stack_info.cpp の実装に誤りがあったので修正。 (2006.02.19) BSD 系OS でのスタック領域情報の取得の仕方を追加 初めに C/C++ でプログラムをしているとつい忘れてしまうのがスレッドのスタックオーバーフローの問題。 最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。 だが、再帰や alloca を積極的に使

  • Lua言語の紹介

    プログラミング言語Luaの紹介 Luaは軽量なスクリプト言語として活躍しているフリーソフトです。 ここでは、日語の解説などを紹介しています。 Luaの日語ページ まだトップページの和訳だけですがご参考に。 Lua言語の手引き(5.1) 短くまとめた文書として公開してきたもので、バージョン5.1にあわせて変更しました。 Luaサンプルプログラムの補足説明 luaの配布コードにあるサンプルプログラムの補足説明をしてみました。 最新情報 詳細はLuaのホームページ newsまで。 新バージョン5.3が公開中。 Luaワークショップ2014が11月にモスクワで開催されました。 Luaの資料 リファレンスマニュアル(5.2) 日語版 yuno さんのブログサイトに掲載されています。きちんと訳されています。 Programming in Lua の和訳書が出ています。 エルサリムスキー教授の P

  • Luaプログラミング入門

    著作権を明記すれば,このの内容を自由に利用・配布・変更してもかまいません. Lua5.1に対応しています. C言語プログラミング入門に比べて執筆スピードは遅いと思います. まずはC言語の方を完成させないと.

  • カーネル挙動を追尾する「DTrace」の実力

    Solaris 10の強化機能としてクローズアップされることが多い「DTrace」。さまざまなサービスが並列稼働する基幹サーバでは、カーネル挙動によってボトルネックを判断することも多い。DTraceは、解決するための打開策となるのか? 実例サンプルで検証していく。 Solaris 10の目玉となる機能のひとつに、実行中のサーバ情報をいつでも取得できる「DTrace」がある。DTraceは、稼働サーバ上で思うようなパフォーマンスが得られなかったり、トラブルが生じた際に原因究明するのに役立つ機能だ。この「OS選択の新常識」Solaris特集では、DTraceを使うと具体的にどのような情報を取得でき? どのようなシーンで役立つのか? その実例を解説していくことにしよう。 DTraceの仕組み まずは簡単に、DTraceの仕組みから説明する。 Solaris 10の内部には、「プローブ」と呼ばれる

    カーネル挙動を追尾する「DTrace」の実力
  • 2009-03-14

    @ntamaoki がうちの若手と飲みましょうよ、と言ってきたので、ほいほいそれに乗って日オラクルの若手エンジニアに会ってきた。実のところ、ERPだAPPSだというのは、よくわからない。わたしはデータベースのエンジニアだったわけで、職種もコンサルとかではなく、サポートのさらに下のバックエンドのサポートだったわけで。 新社屋は素敵だった。二階の受付まで行って、諸般の事情で社内にははいれなくて残念。 まあ、それは、どーでもいい話なのだが、基盤系いいよ〜、RDBMSの開発おもしろいよ〜という話をお腹いっぱい話してきた。 バックエンドサポートの一日つーのは、出社してbugdb見て、自分の担当部分のバグをざっと見て、新しいバグがあれば、拾って、地味に回答を作る。パッチを作る場合もあるし、バグじゃなかったり、バグだったとしても、簡単なワークアラウンドがあったりして、それを回答したりという感じである。

    2009-03-14