アカウント名:
パスワード:
a = a + 1 に比べれば、可換でないのに"+"を使う方のはなんでもない。
# でも MOVE だけはご勘弁、どす (これも主観 :-)。
なぜ、可換でない演算のための演算子のなかでも「*」なのか、というのはまだ解説されていないと思います。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲを呼ぶ -- ある傍観者
文字列連結 (スコア:2, 興味深い)
harako氏がなぜ残念に思うのか聞いてみたいところ。
Re:文字列連結 (スコア:2, 興味深い)
argonさんでなくても構わないのですが、意味が理解できている方に解説を願えませんでしょうか…。
#煽りでもなんでもなく、本当に分からないので…。
Re:文字列連結 (スコア:1)
"*" は、Ada で使われてたような気がします。
ですので、割と一般的な記号だと考えられます。
Plan 9 の rc や、ML 等は、"^" を使っています。
可換性とか考える必要が無さそうなので、これは良いんじゃないかと。
最も良いのは、(string-append "hello " "world" "...")
でしょう。見たままだし。
# って、解説になってない(汗)。
Re:文字列連結 (スコア:0)
> でしょう。見たままだし。
意味合い的には見たままなのですが、
なんか面倒な気がするのはおいらだけ?(w;
"hello " + "world" + "..." が駄目な理由がわかりません。
Re:文字列連結 (スコア:1)
"+" とか "*" 等と違って、
変な記号を使わないので信頼性が高い、と思ったわけです。
面倒に見えるのは…、慣れです。(^^;;
Re:文字列連結 (スコア:1, 参考になる)
どうも可換群の演算子は+と書くことが一般的 [nagaokaut.ac.jp]だから、という主張の様子。
実数全体から0を除いた集合って、小学校で習うような通常の積法に関して群だよね。
しかも可換。
これも通常+で書く?書かないよね?
確かに代数学やってる人間にとっては、加法群って常識的な定義なのかもしれない。
けど、なんつーか説明時の利便性のために導入された、適当なものにしか見えないんだけど。>加法群
Re:文字列連結 (スコア:2, 興味深い)
a = a + 1
に比べれば、可換でないのに"+"を使う方のはなんでもない。
Re:文字列連結 (スコア:0)
Re:文字列連結 (スコア:1)
# でも MOVE だけはご勘弁、どす (これも主観 :-)。
Re:文字列連結 (スコア:1)
#「入れる」という動きは読みとれないか…
Re:文字列連結 (スコア:1)
Re:文字列連結 (スコア:2, 参考になる)
それはともかく、演算という目で見ると文字列連結には終端処理が入るためそもそも勝手が違ってきます。数値として見た場合、文字列は終端を含めたものが群になるべきではないかと思いますので、片方の終端を削って全体を繋げるという演算は数学には存在しないのではないかと考えてしまうのです。(数学エキスパートではないので、もし存在してましたら失礼!)つまり数学として見る事自体が不自然ではないかと。
>それが気になる人は、代入演算に"="を使う方がよほど気持ち悪いと思うのだが。
↑そしてまさにこれです。私が最初プログラミングに出会ったとき(最初はBASICでした、その後は色々と…)、(=)が左辺と右辺を等価にみなすための意味ではなく、単なる代入を意味する記号として使われているのに違和感を覚えると同時に「ああ、マイコンではこう書くんだ。」(当時パソコンという呼び方はしてなかった(笑))とむしろ新鮮でした。
なので文字列連結も、数値演算とは別に言葉として「加える」という意味合いで(+)が使われていると普通に連想していたわけです。少なくともこの連想では「掛ける」を使うのが不自然に見えても仕方がないとお考えください。
結局のところ、ソース上の演算子って演算目的の記号と特定の動作を表す記号のダブルミーニングなんですよね。Cだとさらにポインターの意味も加わったりしますし。それは時たま目やコンパイラを迷わせますが、まあ慣れの問題で良いのではないかな~。…って、それだと(*)でもいいやんってなっちゃいますよね。でもそれだと英語で読む時に違和感があるんだよー。addだと文字列の場合でもそのままで読めるんで。
#だから私の感性ではって話ですので、論陣張らないようにお願いしますね…。
Re:文字列連結 (スコア:1)
+でなくてはいけない理由はないけど、*を使うのはかなり違和感あります。乗算の単位元1は全体という感じで””とはちと違う。
それに文字列演算では、*は別の意味がありますよね。0回以上の繰り返し。
^は違和感なし。&はandだから、ちょっとどうかなと思うけど、文字列演算の中で使うぶんには、まぎらわしくないからかまわない気はする。
.は、確かに乗算の・と同じ点だけど、下のほうに寄っているのがいつも違和感ありました。それに読みにくいし。乗算の演算子として.でなく*が使われるのも、目立つからなのかなとずっと思っていたりします。
いっそ,とか;でもいいかなと思うけど、これは書式を使うような関数の引数として文字列を使うとき、見た目がごっちゃになってわからなくなるだろうし、やはりやめたほうがよさそ。
そうだ _ とか # でも悪いわけはなし。
(文中、記号を全角で書いていますが、半角にするのが面倒だっただけです)
Re:文字列連結 (スコア:1)
これからの時代はソースコードも Unicode で。
鵜呑みにしてみる?
Re:文字列連結 (スコア:1)
Arrayの連結に<<があります。Stringを文字のArrayと考えるのはいかがでしょか?
#個人的には嫌いなんだけどさ。
Re:文字列連結 (スコア:0)
* って違和感ありすぎるって言うか、意味わかんないです。
■■■3 + □□2 = ■■■□□5
■■■3 * □□2 = ◆◆◆◆◆◆6
って感じで、* だと全く別物になる感覚があるのですが?
意味合いとして、文字列の連結だと + じゃないと
駄目なんじゃないの?
詳しい人教えてぇ~!
Re:文字列連結 (スコア:0)
よくわかんない人は文字変数のかけ算をイメージしてくださいな。
行列A、B、CをかけたのをA*B*C=ABC=X
D、EをかけたのをD*E=DE=Y
ABCDE=X*Y
って書くのはそれなりに自然じゃないかと。
Re:文字列連結 (スコア:0)
Re:文字列連結 (スコア:0)
...あ、お呼びでない?
Re:文字列連結 (スコア:0)
可換じゃないから+より*がいいって人にとっては、
どうも何か代数的にきれいにおさまるところがいいみたい。
それならば+もうまいこと定義して、
体とは言わないまでも環ぐらいになるようにしてもらいたい。
そ
Re:文字列連結 (スコア:0)
”3”+4
とかした場合、”34”か”7”か迷うのでいやだ。
以前JavaScriptでこの手のバグを出してさんざん悩んだので
Re:文字列連結 (スコア:0)
Re:文字列連結 (スコア:1)
少し違った観点から見ても(本質的にはあまり違わないような気もするけど)、文字列の連結は結合律 (a*b)*c = a*(b*c) を満たすので、 - や / よりは * のほうがいい理由にはなるでしょう。
ぼくは、 Visual Basic の&はけっこういいと思います。 + と比べても特に悪いとは思わない、という意味ですが。 Perl の . よりも&のほうが多少好きです。
でも、 #279123 [srad.jp] の「Perl の . は \cdot みたいだ」という意見を聞いて、ちょっと印象が変わったかもしれません。
ML では文字列の連結の演算子は ^ だ、と書いておくと喜ぶ人がいるかもしれないので、一応書いておきます :)
鵜呑みにしてみる?