タグ

2014年12月22日のブックマーク (7件)

  • 関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのHatena

    Java8で関数が値として扱えるようになりました。 このことが、「関数が渡せると便利だよね」という観点ではなく、プログラミング言語としての能力をどのようにあげるか考えてみます。 圏論からのテクニックが使いやすくなる 集合論はどちらかというと値にたいする理論でしたが、圏論は関数呼び出しに関する理論です。 プログラムには、関数呼び出しを連結させて値を変換していくという側面があります。 そのような関数呼び出しの扱い方を整理するのが圏論で、圏論の考え方を使うことでより安定したプログラムを書くことができます。 モナドなど圏論由来のテクニックを使うには、どうしても関数を値として扱う必要があります。 関数を値として扱うことで、圏論のテクニックが使いやすくなり、安定したプログラムの書きやすさにつながります。 型の証明能力があがる 動的な型付の言語にくらべて、静的な型付の言語はプログラムが間違いにくいといわ

    関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのHatena
    mukaken
    mukaken 2014/12/22
    「プログラム意味論」と「論理と計算のしくみ」は読んだ(でる)から、他の本も読んでみよ
  • 高速なCommon LispのWebサーバ「Woo」を作りました - 八発白中

    ここ一ヶ月ほど手掛けていたCommon LispのWebサーバ「Woo」が一応の完成に至りましたのでお知らせします。Clack-compatibleなAPIになっており、現状運用しているClackのWebアプリケーションでそのままお試しいただけます。 高速であることを最優先に設計しており、Hunchentootの4倍、Wookieの3.5倍高速に動きます。現状ではCommon Lispのサーバでは最速ではないでしょうか。*1 Woo by fukamachi | GitHub Benchmarks いくつかのCommon Lispのサーバと、Node.js、GoPythonのサーバを比較してみました。縦軸はreq/secで、高いほうが多くのリクエストを捌けることを意味します。 Wooは、PythonのTornadoより約9.5倍、Node.jsの約1.9倍のリクエストを捌けます。一方、G

    高速なCommon LispのWebサーバ「Woo」を作りました - 八発白中
    mukaken
    mukaken 2014/12/22
    "Hunchentootの4倍、Wookieの3.5倍高速"
  • OCamlで信号処理 - Qiita

    信号の種類で結線に色付けしてみます。赤:オーディオ信号、紫:イベント信号、青:定数信号とします。 今回は再生途中でパラメータの変更は無しとしたいので次のようにイベント信号も定数信号として考えることにします。 実装の方針 オブジェクト毎にカレント値を持たせ、AudioInから開始して繋がるオブジェクトを次々と更新することによりAudioOutの値を算出する方法が考えられますが、その場合はカレント値をmutable(破壊的代入が可能)な変数にする方法しか思いつかなかったのであまりやりたくありません。今回はAudioOutを開始として値算出に必要な経路を探索してみます。 AuidoOutを親とするツリー構造 経路はAuidoOutを親とするツリー構造のようなもので表現します。探索時の注意ですがz^-1(単位遅延演算子)が見つかったらその先は探索せずに止めます。z^-1は前回値を保持していますので

    OCamlで信号処理 - Qiita
  • OCamlとSLAPで作る型安全ニューラルネット(と深層学習) - Qiita

    この投稿は Machine Learning Advent Calendar と ML Advent Calendar の18日目の記事です. 今日は関数型プログラミング言語 OCaml と線形代数演算ライブラリ SLAP を使った型安全なニューラルネットワークの実装について書きたいと思います.最近,深層学習とかいうニューラルネットの応用が流行っていますし,一方で,関数型プログラミング言語とかいうのも流行っているので,2つの流行に(むりやり同時に)のってみました. 私はOCaml を使って,次元の合わない行列演算をコンパイル時に検出する機能を持った変な線形代数演算ライブラリ Sized Linear Algebra Package (SLAP) を作っています.世の中には便利な線形代数ライブラリ(BLAS とか LAPACK とか)や数値計算言語(MatLab とか R とか)が沢山ありま

    OCamlとSLAPで作る型安全ニューラルネット(と深層学習) - Qiita
  • 『例えば、PHPを避ける』以降PHPはどれだけ安全になったか

    この記事はPHPアドベントカレンダー2014の22日目の記事です 。 2002年3月に公開されたIPAの人気コンテンツ「セキュアプログラミング講座」が2007年6月に大幅に更新されました。そして、その一節がPHPerたちを激しく刺激することになります。 (1) プログラミング言語の選択 1) 例えば、PHPを避ける 短時日で素早くサイトを立ち上げることのみに着目するのであれば、PHPは悪い処理系ではない。しかし、これまで多くの脆弱性を生んできた経緯があり、改善が進んでいるとはいえまだ十分堅固とは言えない。 セキュアプログラミング講座(アーカイブ)より引用 「PHPを避ける」とまで言われてしまったわけで、当然ながらネット界隈では炎上を起こし、現在はもう少しマイルドな表現に変わっています(参照)。 稿では、当時のPHPの状況を振り返る手段として、この後PHPセキュリティ機能がどのように変化

    mukaken
    mukaken 2014/12/22
  • 最近の行儀のよい JavaScript の書き方 - Qiita

    JavaScriptは移り変わりの早い言語です。 もう1年以上経っていますし、記事のメンテもちゃんとできていないので、消し線を入れることにしました。 参考程度のために記事は一応残しますが、より新しい情報を読まれることをお勧めいたします。 はじめに --- 最近では JavaScript の実行環境はブラウザに限りません。(node.js, Web Workers) また、旧来のような <script> 経由でのロードもとうに古くなっています。今は CommonJS スタイルで、require を用いたモジュールのロードを行なうことがより良いとされています。 ですから、次のようなことは改める必要があります。 - var YourModule = {}; などとして、外部から YourModule.hoge(); などと呼び出す書き方 - this === window だと思うこと 今回は、

    最近の行儀のよい JavaScript の書き方 - Qiita
  • 0から始めるAWS入門:概要 - Qiita

    研修向け。0からAWS上に基的なWEBアプリケーションの環境構築していく。 前提 ・一般的なLAMPのWEBアプリケーション向け(※1)に環境を構築しますが、それらミドルウェアのインストール・設定等はあまり対象にしてません。 ・すでにAWSのアカウントを取得しているものとします。サインアップはこちら ちなみに、新規登録であれば無料枠があるため、この研修向け内容をやったとしても$3ぐらいに収まります。 ※1 アプリケーションの要件・内容には触れませが、一般的なLAMPアプリケーションでも同様になるかと思います。 構築する環境 今回のシリーズで目指す環境は、下記の通り。 簡単に各AWSサービス紹介 Elastic Compute Cloud (EC2) 一般的に言う仮想サーバー。スケーラブルに展開可能。 今回はここにアプリケーションを配置する。 詳細はこちら Relational Datab

    0から始めるAWS入門:概要 - Qiita
    mukaken
    mukaken 2014/12/22