データベースプログラミングに最適な言語は何か
at DB
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
50:NAME IS NULL 04/12/21 03:04:48 cB2rd/+5.net >49 一連の議論を読んでいると、同じ「最適な言語」を競っても プログラマがSQL文字列を知っている必要があるクラスと コンパイラがSQLを構成するクラスとありそうに思えたから。 ボクシングとK-1ほどに上がる舞台がちがうのではないか。 Parserが必要と感じるのはもちろん後のクラス。関数型言語で SQL相当の操作を書くとすれば、文字列操作の云々は的外れ となり、むしろSQL文字列にどう組み立てなおすかが課題となる。 そんな意味なのですが。 51:NAME IS NULL 04/12/21 08:05:38 .net データベース側が統一が取れてないからそっちを何とかしないとなぁ。 ドライバやクラスで吸収するには違いが大きすぎる。 52:NAME IS NULL 04/12/21 10:39:07 2ug2sBNH.net >>50 すんません。 コンパイラがSQLを構成するっていうのが、私、あまり知らないのですが。 それは例えばどういうものか教えてくれますか? 53:NAME IS NULL 04/12/22 22:55:50 JoqolnD5.net 4,10,18,48,50 と書き込みできた者です。 >52 私も知りません。無責任で申し訳ない。 読み返してみるとParserとかコンパイラとかの用語選択も適切でなかった。それで仕切りなおし。 Lispでと思ったのですが括弧ばかりで上手く説明できそうにないのでProlog風に行きます。 select,into,from 等が適切にオペレータ定義されて、 (select * into X from Table) :- ...... (1) のようにSQLのパターンが述語として定義されたとします。これをプログラムのなかで ?- ...... ,select * into X from emp, ...... のように使うことは利用者がSQLを知っている ことを前提にしているという意味で "select * from emp" と文字列で処理するのと 変わりありません。次に、(1)のパターンばかりでなく、考えられる全てのSQLの参照(操作)パターンを 定義できたとします。その上で、 rdb_call('emp表の全ての組',X):- ......... (2) を定義し、(2) :- の右側で、'emp表の全ての組'を解析して(1) を引き出すことができるとすれば、 この段階で、利用者はSQLを知る必要はなくなります。この例は引数がほとんど自然言語ですから、 相当に複雑になるでしょうが。 (2)のようなライブラリーを充実して、データベースに対処しようとすることはSQL文字列を生成したり 表記する方法を洗練することとはやはりステージが違うと考えるべきだということです。50で述べたかった ことはそういうことです。(2)のようなライブラーだけでデータベース操作を行い得ないということも当然でしょう。 (2)を目指しながら、(1)のレベルを排除しないというのが現実的な処理系の対応になると思います。 それから、(1)のようなパターンを全て定義済みならば、*.sqlのようなファイルをそのまま実行することも 可能なはずです。Parserという言葉はその意味で使いました。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
1973日前に更新/73 KB
担当:undef