アカウント名:
パスワード:
SQLはクソ言語だし、今さら互換性を維持して色々するのは悪手だとは思う。まぁみんな使えるから価値はあるかな。が、現代風にクエリ言語を再設計するならどうすればいいだろうか。
データベース側の処理を考えるとJsonやらXMLやらで命令文が記述できた方が処理しやすいだろうがさすがにそれは人間側が困る。各言語側でJavaのStreamやC#のLinq的な何かを実装するとして問い合わせは機械処理しやすい言語ってのもありかもな(現在もだけど名前を微妙に変えたりせずAPIは統一してほしい)。あんまり高度で表現性が高いとキャッシュやら高速化やらで困るのは目に見えてるのも難点。
とりあえずいろんなデータで扱えるクエリ言語ってのは便利かもしれないな。良い普及したのがあればJavaScriptで標準で使えるようになりそうで便利な感じ。XMLならXPathあたりが…近いようで全然違うな。
伺いたいのですが、SQLってどの辺がクソ言語ですかね?
いや、基本のSQL構文に各DBが好き勝手に色々やっててごちゃごちゃしてるのはありますが、データの取り扱いにおいて、シンプルな実装だと思ってるので。
まあ、もう少し記号等でシンプルに表記できたりしてもいい気もしますが、自分も大分慣らされちゃったってことなのかな。
とりあえず語順。fromを先にしてくれれば…。
あとプログラム方面に振れるけど、一つ前のデータを使って計算したいとか度々あるので簡単に使用できる構文なり関数なり欲しい。サブクエリ作って行番号発行すればできるけど面倒。
語順は、「普通の英語の構文」っぽいんですよね。Select [columns] from [Table]とUpdate [Table] set はたしかに昔よく間違えたかも。で、UpdateとInsertの文法も、まあ違う。
英語だと考えれば、やりたいことが一番前に来るのはナチュラルだと思うんですよね。で、やりたいことの対象が目的語として次にくる。
どうしても語順に馴染めない場合、配列やら構造体やらで事前にデータセット作って、SQL文は手で書かないような工夫をしたり、なんてのもいいかもです。(なんかこんな事言うとクソ言語を認めるみたいになってますが)
「一つ前のデータ」のイメージがはっきり湧きませんが、DBって、データの順序とか気にして(保証されて)格納されてないイメージですけどね。(そういう開発したことないだけかな・・・)
前後の行と連携させた処理の場合、AWKっぽい発想になっちゃいますね、自分は。
BASICなんかもそうなんだけど英語構文に近い記述を目指すことに価値がないとは思わないですが、やりたいことが複雑になるとどんどんめんどくさくわかりにくくなるのは避けられないと思います。個人的には構文を自然言語に近づけることはあまり目指さない方がすっきりするし、かっこなどによって関係性や依存関係などがわかりやすいので好きですね。数式的な箇所ならともかく、サブクエリのようにかっこを使わないと書けない構文というのは「自然言語に近い構文」というポリシーを破壊して結局中途半端になってるという印象です。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア
SQLねぇ (スコア:0)
SQLはクソ言語だし、今さら互換性を維持して色々するのは悪手だとは思う。
まぁみんな使えるから価値はあるかな。
が、現代風にクエリ言語を再設計するならどうすればいいだろうか。
データベース側の処理を考えるとJsonやらXMLやらで命令文が記述できた方が処理しやすいだろうがさすがにそれは人間側が困る。
各言語側でJavaのStreamやC#のLinq的な何かを実装するとして問い合わせは機械処理しやすい言語ってのもありかもな(現在もだけど名前を微妙に変えたりせずAPIは統一してほしい)。
あんまり高度で表現性が高いとキャッシュやら高速化やらで困るのは目に見えてるのも難点。
とりあえずいろんなデータで扱えるクエリ言語ってのは便利かもしれないな。
良い普及したのがあればJavaScriptで標準で使えるようになりそうで便利な感じ。
XMLならXPathあたりが…近いようで全然違うな。
Re: (スコア:2)
伺いたいのですが、SQLってどの辺がクソ言語ですかね?
いや、基本のSQL構文に各DBが好き勝手に色々やっててごちゃごちゃしてるのはありますが、
データの取り扱いにおいて、シンプルな実装だと思ってるので。
まあ、もう少し記号等でシンプルに表記できたりしてもいい気もしますが、自分も大分慣らされちゃったってことなのかな。
Re: (スコア:0)
とりあえず語順。fromを先にしてくれれば…。
あとプログラム方面に振れるけど、一つ前のデータを使って計算したいとか度々あるので簡単に使用できる構文なり関数なり欲しい。
サブクエリ作って行番号発行すればできるけど面倒。
Re: (スコア:4, 参考になる)
語順は、「普通の英語の構文」っぽいんですよね。
Select [columns] from [Table]とUpdate [Table] set はたしかに昔よく間違えたかも。
で、UpdateとInsertの文法も、まあ違う。
英語だと考えれば、やりたいことが一番前に来るのはナチュラルだと思うんですよね。
で、やりたいことの対象が目的語として次にくる。
どうしても語順に馴染めない場合、配列やら構造体やらで事前にデータセット作って、SQL文は手で書かないような工夫をしたり、なんてのもいいかもです。
(なんかこんな事言うとクソ言語を認めるみたいになってますが)
「一つ前のデータ」のイメージがはっきり湧きませんが、DBって、データの順序とか気にして(保証されて)格納されてないイメージですけどね。(そういう開発したことないだけかな・・・)
前後の行と連携させた処理の場合、AWKっぽい発想になっちゃいますね、自分は。
Re:SQLねぇ (スコア:1)
BASICなんかもそうなんだけど英語構文に近い記述を目指すことに価値がないとは思わないですが、やりたいことが複雑になるとどんどんめんどくさくわかりにくくなるのは避けられないと思います。
個人的には構文を自然言語に近づけることはあまり目指さない方がすっきりするし、かっこなどによって関係性や依存関係などがわかりやすいので好きですね。
数式的な箇所ならともかく、サブクエリのようにかっこを使わないと書けない構文というのは「自然言語に近い構文」というポリシーを破壊して結局中途半端になってるという印象です。
うじゃうじゃ