Re[3]: Конкатенация строк
От: Пётр Седов Россия  
Дата: 14.11.07 22:24
Оценка:
Здравствуйте, Кодт, Вы писали:
К>Кстати, вот! Пример того, как сложение (пусть и некоммутативное) обобщается до умножения.
Конкатенация строк похожа на умножение матриц:
* некоммутативность: A * B ≠ B * A (в общем случае)
* ассоциативность: (A * B) * C = A * (B * C)
(Кстати, иногда так и говорят: конкатенация матриц (matrix concatenation).)
Поэтому, если уж придумывать оператор повторения строки, то, глядя на матричное равенство
A * A * A = A³
вспоминается ** (Fortran-овский оператор возведения в степень).
Похоже, на пути эволюции «математик -> программист» закрался логарифм , так как:
log(a * b * c) = log(a) + log(b) + log(c)
log(aⁿ ) = n * log(a)
Пётр Седов (ушёл с RSDN)
Re: Конкатенация строк
От: int13h Украина  
Дата: 19.11.07 21:45
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Я вот подумал, а почему конкатенация строк обозначается чимволом '+' и никогда символом '*'? Хотя символ '*' более логичен. Множество строк с операцией конкатенации образуют моноид, а в нем рассматривается именно умножение. Далее, есть единичный элемент (пустая строка). Операция некоммутативна, но ассоциативна ('+' обозначается групповая операция в абелевых группах, в них же единица называется нулем).

сдесь без поллитры не разобрацца

M>Другие известные мне обозначения '.' и '||' достаточно нейтральны.

А мне + удобней и логичней, плюс, он и в Африке +
Re[2]: Конкатенация строк
От: int13h Украина  
Дата: 19.11.07 21:45
Оценка:
Здравствуйте, Пётр Седов, Вы писали:

ПС>Здравствуйте, Mystic.

ПС>В Visual Basic-е конкатенация строк обозначается & (амперсанд). В Lua конкатенация строк обозначается .. (две точки).
В РНР точка (хотя напрягает иногда после ЖабаСкрипта)
Re[2]: Конкатенация строк
От: Кодёнок  
Дата: 20.11.07 06:57
Оценка:
Здравствуйте, int13h, Вы писали:

M>>Другие известные мне обозначения '.' и '||' достаточно нейтральны.

I>А мне + удобней и логичней

I>плюс, он и в Африке +


Очень логично
Re[2]: Конкатенация строк
От: Пётр Седов Россия  
Дата: 20.11.07 07:38
Оценка: 1 (1) +1
Здравствуйте, int13h, Вы писали:

M>>Я вот подумал, а почему конкатенация строк обозначается чимволом '+' и никогда символом '*'? Хотя символ '*' более логичен. Множество строк с операцией конкатенации образуют моноид, а в нем рассматривается именно умножение. Далее, есть единичный элемент (пустая строка). Операция некоммутативна, но ассоциативна ('+' обозначается групповая операция в абелевых группах, в них же единица называется нулем).

I>сдесь без поллитры не разобрацца
Чтобы разобраться, нужна не «поллитра», а книга по математике. Например, «Дискретная математика для программистов» (автор: Фёдор Новиков):

Глава 2. Алгебраические структуры

2.3. Алгебры с одной операцией

2.3.1. Полугруппы
Полугруппа – это алгебра с одной ассоциативной бинарной операцией:
.
Пример
1. Множество слов в алфавите A образует полугруппу относительно операции конкатенации.

2.3.2. Моноиды
Моноид – это полугруппа с единицей:
.
Пример
1. Множество слов в алфавите A вместе с пустым словом Λ образует моноид.

2.3.3. Группы
Группа – это моноид, в котором
.
Элемент называется обратным.
Пример
1. Множество невырожденных квадратных матриц порядка n образует группу относительно операции умножения матриц. Единицей группы является единичная матрица. Обратным элементом является обратная матрица.

Коммутативная группа, то есть группа, в которой
,
называется абелевой. В абелевых группах приняты следующие обозначения: групповая операция обозначается + или , обратный элемент к a обозначается -a, единица группы обозначается 0 и называется нулём.
Пример
1. – множество целых чисел образует абелеву группу относительно сложения. Нулём группы является число 0. Обратным элементом является число с противоположным знаком: .
2. – множество положительных рациональных чисел образует абелеву группу относительно умножения. Нулём группы является число 1. Обратным элементом является обратное число: .


M>>Другие известные мне обозначения '.' и '||' достаточно нейтральны.

I>А мне + удобней и логичней, плюс, он и в Африке +
Обозначать конкатенацию строк плюсом – это программистская традиция/привычка. Логика здесь туманная, так как в математике плюс (и плюс в кружке) обозначает коммутативные операции.
Пётр Седов (ушёл с RSDN)
Re[3]: Конкатенация строк
От: int13h Украина  
Дата: 20.11.07 23:36
Оценка: +1
Здравствуйте, Пётр Седов, Вы писали:
[skipped]
Ну это, конечно, все хорошо... Только когда-то давно, когда я не знал, как объединить строки, первое, что пришло в голову — это "плюс". Думаю, большинству интуитивнее именно плюс И не надо смешивать элементарный здравый смысл и математические структуры. Они тут ни к чему
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.