タグ

IT PROとshelarcyに関するUSAGI-WRPのブックマーク (4)

  • 第12回 Haskellで学ぶ並列プログラミング(その3)並行プログラミングと並列処理

    これまで説明してきたGHCの並列化機能は,いずれもスレッドやプロセスのような並行実行の仕組みを抽象化の内側に隠ぺいしたものでした。しかし,このようにユーザーの目から詳細を隠してくれる特徴が,かえってわずらわしく思えることもあります。 GHCの並列化機能は,「ある一つの計算の処理速度を向上させる」という目的を直接的に反映したものです。このため,処理速度の向上以外の部分には,十分に手が届かないこともあります。例えば,グラフィカル・ユーザー・インタフェース(GUI)などを実現するための対話的なプログラムでは,「ある一つの計算の速度を向上させる」だけでは,プログラム全体の反応速度を思うように上げられません。プログラムをうまく制御して全体での速度向上を目指すことが重要だからです。しかし,これまで説明してきた並列化機能には,こうした制御を実現するのに必要なセマンティックス(意味論)は特に規定されていま

    第12回 Haskellで学ぶ並列プログラミング(その3)並行プログラミングと並列処理
  • 第53回 repaを使って行列演算を並列化する

    これまで並行処理のためのデータ型として,第12回ではTVar型やMVar型,第14回ではChan型やTChan型などを取り上げてきました。一方,並列処理のためのデータ型はあまり説明してきませんでした。取り上げたのは,第10回や第24回のコラムで説明したデータ並列Haskellの並列配列くらいです。 たしかに,並列HaskellやParモナドを利用すれば,並列処理のための特別なデータ型を使わなくても並列処理は可能です。しかし,目的とする処理の並列化に特化したデータ型が用意されているのであれば,それを利用したほうが簡単かつ効率的に処理を行えます。 そこで今回は,並列処理用のデータ型の一つとして提供されている「repa(REgular PArallel arrays)」の並列配列の基を説明します。repaはデータ並列Haskellプロジェクトの一環として開発が進められているライブラリです。デー

    第53回 repaを使って行列演算を並列化する
  • 第16回 Haskellでのテストの自動化を考える

    皆さんはプログラムが正しく動作することをどうやって調べていますか? いちいち実行して確認している人もいるかもしれませんが,多くの人はツールや自作のプログラムを使って何らかの形でテストを自動化しているでしょう。ここ10年くらいで「テストの自動化」はプログラマにとってなじみの深い概念になりました。今回はHaskellでのテストの自動化を取り上げます。 型検査を利用する 実は,Haskellを使っていれば,すでにテストはある程度自動化されていると言えます。 第12回と第13回で説明したSTMでは,STMモナドという特別なモナドを使い内側にI/Oアクションを記述できなくすることによって,取り消し不可能なアクションが入り込むことを防いでいました。 Prelude Control.Concurrent.STM> atomically (writeFile "sample.txt" 12) <inter

    第16回 Haskellでのテストの自動化を考える
  • 本物のプログラマはHaskellを使う:ITpro

    筆者 shelarcy Haskellは,関数型プログラミングというジャンルに属する言語です。Haskellや関数型プログラミングを題材に物事を見ていくことで,今まで思いもよらなかったような未知の世界を知ることができるでしょう。 プログラミング言語を学ぶという行為には, 言語の基的な文法や考え方を理解する 言語の文化圏で広く使われている考え方に親しんでその言語らしい書き方を習得する 単に言語を使ってできること以上の知恵を学ぶ の3段階があります。この連載では,三つ目の段階を目標に,Haskellプログラミングの世界を一つひとつ丁寧に紹介していきます。 更新は毎月第1水曜日(1月のみ第2水曜日)

    本物のプログラマはHaskellを使う:ITpro
  • 1