サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
www.pokarim.com
前回はRDBMSの使用が引き起こすモジュール性の低下について議論したが、その根拠を具体的に示さなかった。その補足ということで今回は小さな例を1つ示したい。 また、関数プログラミングが副作用の多い状況に対して弱みを持つ、と書いたのは乱暴であったのでお詫びして訂正したい。 正しくは、副作用を含むロジックに対しては、注意深く抽象化を行う必要があり、副作用・外部入出力の種類が違えば、そのたびごとに抽象化のモデル・実装について熟慮して抽象化を行う必要があるということである。 これはうまい抽象化が不可能だということではないので、それを弱みと呼んだのは間違った一般化であった。 しかし、ありがちな抽象化の方法では、クエリーの発行がモジュール性の低下を引き起こしかねないということを小さな例を使って示したいと思う。この例は手続き的な擬似コードによるものだが、RDBMSを抽象化するfunctionalなDSLで
プログラム開発は、多くの人々が目的達成のため、もがき苦闘するタールの沼である – Frederic P. Brroks, Jr., 人月の神話 モジュール性はプログラミング成功の鍵である – John Hughes, 関数プログラミングはなぜ重要か タールの沼の底から タールの沼と聞いて連想するのは大規模なSIである。業務アプリケーションやWebアプリケーションは規模が大きくなればなるほど、複雑さが増し収拾がつかなくっていく。そしてそのようなアプリケーションを大きな単位で上手くモジュール化し、さらには再利用することは不可能に近い。 その技術的な原因の一端、そして問題を解く鍵は、そのようなアプリケーションが常に携えているRDBMSの周辺にあり、さらに言えばおそらくRDBMSとアプリケーションロジックの組み合わせにあると考えている。 ここでは、アプリケーションロジックの実装に関数プログラミング
この記事はPlay! framework Advent Calendar 2011 jp #play_ja の7日目です。 勢いで参加してみたものの、ネタが見つからず困っていたところ、@mumoshu さんのつぶやきが目にとまりました。 mumoshu この2日間のPlay 2.0は、Scala向けのJSON APIが変更されたり、Actionの合成方法がドキュメントにそった形になった。JSONの方は、使うライブラリがsjsonからJerksonへ変更。Jerksonをベースに、sjsonのようなAPIを実装している。 04 Dec 2011 from Twitter for Mac -- this quote was brought to you by quoteurl Jerksonというライブラリは全く知りませんでした。 調度良いのでこのJerksonについて調べたことを書こうと思い
最近、PythonのWebフレームワークの中では、軽量級のFlaskをよく使っています。 Flaskは、wsgiツールキット的なWerkzeugを基盤に構築されたフレームワークです。 Flaskではroutingの仕組みは、Werkzeugのものをほぼそのまま使い、 関数を簡単にコントローラとして公開できるようなデコレータが用意されています。 これはたとえば以下のように使います。 @app.route("/post/<int:post_id>") def show_post(post_id): return "hello" <int:post_id>というところに注目してください。 この定義により、"/post/10"や"/post/5"のようなURLにマッチし、 show_post関数の引数post_idに、マッチした部分をintに変換し 10や5といった値がわたってくる事になります。
Clojure with Emacs and Slime/Swank on Ubuntuを参考にemacs + slime + swank-clojureでプログラミングしてるのだけれど、 最近のslimeとswank-clojureの組み合わせがこける。 SLIME REPL broken を参考に、 "/home/hokari/opt/swank-clojure/src/main/clojure/swank/core/protocol.clj" を @@ -4,6 +4,20 @@ ;; Read forms + (def #^{:private true} + *percent-re* #"%") + +(defn- fix-percent + "Replace double colons with a /." + ([text] (.replaceAll (re-ma
中西さんよりZope/Ploneアドベントカレンダーのバトンを頂戴したので、Zope/Ploneネタを書いて16日目を担当したいと思います。 普段の仕事ではZope/PloneよりもSQLAlchemyなどを使いつつRDBMSを使用するようなフレームワークを使うことの方が多いです。どんなネタにしようかとすこし悩みましたが、Zope/PloneからSQLAlchemy越しにRDBMSにアクセスする方法について調べてみました。 Zopeは自前のオブジェクトデータベースZODBを持っているのでZope/PloneからRDBMSを使用する機会はあまりありませんが、既存のデータベースとやりとりが必要になることは、たまにあります。ZopeからRDBMSを操作する方法としては、Z SQL Methodを使用するが昔からあって、select * from products where id=<dtml-s
Clojureの特徴。 -JavaVMの上で動く -Lispの新しい方言 -動的型付けの純粋でない関数型言語 -STMによる並行処理 -豊富でimmutableなデータ型 -遅延シーケンス というところあたり。 1.JavaVMの上で動く JavaVMの上で動く言語は、ScalaやGroovy、ABCLなど たくさんある。 これらの中でClojureは新しいほう。 JavaVMの上での言語開発の利点は、Javaとの連携が容易で Javaの豊富なライブラリを利用できる点と、 JVMの高いパフォーマンス、マルチプラットフォーム対応 ガーベージコレクタなどの恩恵を受けられる点など。 2.Lispの新しい方言 Common LispやR5RSなどの仕様によらない、 新しく設計されたLispの方言。 当然コードはS式でマクロが使える。 新しいLispという意味では、ポールグレアムのArcなどと同様で
このページを最初にブックマークしてみませんか?
『Conceptual Contexture』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く