逆ポーランド記法最強?
http://wiredvision.jp/news/200807/2008070921.html
逆ポーランド記法を使えということですね。
冗談です。まあ、多分、+とか−とかは、範疇としては述語よりも and とか or に近いものなんだと思う。
とりあえず、Func(x) よりも x.Func() の方がとっつき安いってのは確かな気がする。
で、x.Verb(y) よりも、(x, y).Verb() の方が自然ってことですかね?ダブルディスパッチ用の構文は確かに欲しい。
現状、拡張メソッド定義して、x.With(y).Verb() とか x.To(y).Verb() とか書くのがいいのかな?
それか、new {By = x, With = y, To = z, From = w}.Verb() とか。
追記: そんな C# プログラム書いてみた。
ほんとに以下みたいな書き方できるプログラムを作ってみた。
Nominals.Make( "Hello World!\n".を(), Console.Out.に() ).出力(); string 置換結果 = Nominals.Make( "置換前の文字列\n".の(), "置換前".を(), "置換後".に() ).置換(); string 繋いだ結果 = Nominals.Make( "abc".と(), "def".と(), "ghi".を() ).繋ぐ();
Sentence .With("Hello World!\n") .To(Console.Out) .Write(); string result = Sentence .With("置換前の文字列\n") .From("置換前") .To("置換後") .Replace();
ソースファイル↓
http://ufcpp.net/study/csharp/source/Sentence.zip
ええ、書きやすくも見やすくもないですね。というか、VB の名前付き引数でいい気がしてきた。
そもそも記事の信憑性
まあ、↑のソースはネタです(笑)
実際のところどうなんでしょうね、SVO よりも SOV の方が自然だって話。なんせ、元ネタの記事自体、被験者たった40でいいの?とか SOV の言語はトルコ語だけ?とかいろいろ疑問もありますし。
そもそも、SVO とか SOV とかいうのも、いくらでも崩しようがありますし。たとえば・・
- 私はそこで犬を見た
- 私がそこで見たものは犬だ
- 犬を見たの、そこで、私
語順に厳しい英語ですら、形式主語だの関係代名詞だので語順変え放題。
- I saw a dog there.
- It was a dog I saw there.
- There was a dog I saw.
まあ、ニュアンスどころじゃなくて微妙に意味違いますけど。
推測としては、SOV が分かりやすいんじゃなくて、
- 「話の主題となる名詞2・3個」 + 「述語」 + 「付帯情報となる名詞」
とかが一番わかりやすい気がする。
仏語なんかは基本的に SVO なのに、Je t'aime (英語にすると I you love の語順)とか On y va(同じく One there goes)みたいな文章書くことがあるし。欧州言語でも、南の方の言葉は割と語順自由だから目的語が述語の前に来がち。