Эта статья включает в себя список литературы , связанной литературы или внешних ссылок , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( Март 2014 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Сравнение языков программирования |
---|
|
Сравнение отдельных языков
|
В теории формальных языков и компьютерного программирования , конкатенации является операция объединения строк символов из конца в конец . Например, сочетание слов «снег» и «мяч» составляет «снежный ком». В некоторых формализации теории конкатенации , также называемой теорией струн, конкатенация струн является примитивным понятием .
Синтаксис [ править ]
Во многих языках программирования конкатенация строк представляет собой бинарный инфиксный оператор . Оператор +
(плюс) часто перегружается для обозначения конкатенации строковых аргументов: "Hello, " + "World"
имеет значение "Hello, World"
. В других языках есть отдельный оператор, в частности, для указания неявного преобразования типа в строку, в отличие от более сложного поведения для общего плюса. Примеры включают .
в себя Эдинбургский IMP , Perl и PHP, ..
в Lua , а также &
в Ada, AppleScript и Visual Basic. [1] Другой синтаксис существует, например, ||
в PL / I и Oracle Database SQL . [2]
В некоторых языках, особенно в C, C ++ и Python, существует конкатенация строковых литералов , что означает, что смежные строковые литералы объединяются без какого-либо оператора: "Hello, " "World"
имеет значение "Hello, World"
. В других языках объединение строковых литералов с оператором оценивается во время компиляции посредством сворачивания констант , хотя это часто является деталью реализации компилятора, а не особенностью языка.
Реализация [ править ]
В программировании конкатенация строк обычно происходит во время выполнения, поскольку строковые значения обычно не известны до времени выполнения. Однако в случае строковых литералов значения известны во время компиляции, и, таким образом, конкатенация строк может выполняться во время компиляции либо посредством конкатенации строковых литералов, либо посредством сворачивания констант .
Объединение наборов строк [ править ]
В теории формального языка и сопоставлении с образцом (включая регулярные выражения ) операция конкатенации строк обобщается до операции над наборами строк следующим образом:
Для получения двух наборов строк S 1 и S 2 , то конкатенации S 1 S 2 состоит из всех строк вида VW , где V представляет собой строку из S 1 и W представляет собой строку из S 2 , или формально S 1 S 2 = { vw : v ∈ S 1 , w ∈ S 2 }. Многие авторы также используют конкатенацию набора строк и одной строки, и наоборот, что аналогично определяется как S 1 w = { vw : v ∈ S 1 } и vS 2 = { vw : w ∈ S 2 } . В этих определениях строка vw представляет собой обычную конкатенацию строк v и w, как определено во вводном разделе.
Например, если F = {a, b, c, d, e, f, g, h} и R = {1, 2, 3, 4, 5, 6, 7, 8} , то FR обозначает множество всех координат шахматной доски в алгебраической записи , а e R обозначает множество всех координат файла королей .
В этом контексте наборы строк часто называют формальными языками. Оператор конкатенации обычно выражается как простое сопоставление (как в случае умножения ).
Алгебраические свойства [ править ]
Строки в алфавите с помощью операции конкатенации образуют ассоциативную алгебраическую структуру с единичным элементом - пустой строкой - свободным моноидом .
Наборы строк с объединением и чередованием образуют полукольцо , причем объединение (*) распределяется по чередованию (+); 0 - это пустой набор, а 1 - набор, состоящий только из пустой строки.
Приложения [ править ]
Аудио / телефония [ править ]
В программировании для телефонии конкатенация используется для предоставления пользователю динамической звуковой обратной связи. Например, в «время суток» говорящие часы , конкатенация используется , чтобы дать правильное время, играя соответствующие записи каскадных кодов вместе. Например:
- "В гудке будет время"
- "Восемь"
- "Тридцать"
- "5"
- "и"
- "Двадцать"
- "5"
- «Секунды»
Сами записи существуют отдельно, но воспроизведение их одна за другой дает слушателю грамматически правильное предложение.
Этот метод также используется в объявлениях об изменении номера, системах голосовой почты или большинстве телефонных приложений, которые обеспечивают динамическую обратную связь с вызывающим абонентом (например, moviefone , tellme и др.).
Программирование для любого типа компьютеризированной системы оповещения также может использовать конкатенацию для динамических публичных объявлений (например, полеты в аэропорту). Система будет архивировать записанную речь с числами, маршрутами или авиакомпаниями, пунктами назначения, временем и т. Д. И воспроизводить их в определенной последовательности для создания грамматически правильного предложения, которое объявляется по всему объекту.
Теория баз данных [ править ]
Один из принципов реляционной базы данныхДизайн состоит в том, что поля таблиц данных должны отражать единственную характеристику предмета таблицы, а это означает, что они не должны содержать сцепленных строк. Если в отчете требуется конкатенация, она должна быть предоставлена во время выполнения отчета. Например, чтобы отобразить физический адрес определенного клиента, данные могут включать номер здания, название улицы, номер подразделения здания, название города, название штата / провинции, почтовый индекс и название страны, например, «123 Fake St Apt 4, Boulder, CO 80302, USA », объединяющая семь месторождений. Однако таблица данных клиентов не должна использовать одно поле для хранения этой объединенной строки; скорее, объединение семи полей должно произойти при запуске отчета. Причина таких принципов в том, что без нихввод и обновление больших объемов данных становится трудоемким и подверженным ошибкам. Отдельный ввод города, штата, почтового индекса и страны позволяет проверить ввод данных (например, обнаружить недопустимое сокращение штата). Затем эти отдельные элементы можно использовать для сортировки или индексации записей, например, все с "Boulder" в качестве названия города.
Развлекательная математика [ править ]
В развлекательной математике многие проблемы связаны со свойствами чисел при соединении их числительных в некоторой базе . Примеры включают домашние простые числа (простые числа, полученные многократным разложением на множители возрастающей конкатенации простых множителей данного числа), числа Смарандаче – Веллина (конкатенации первых простых чисел ) и константы Чамперноуна и Коупленда – Эрдеша (действительные числа, образованные формулой десятичные представления натуральных и простых чисел соответственно).
См. Также [ править ]
- Веревка (структура данных)
Ссылки [ править ]
- ^ Операторы конкатенации в Visual Basic
- ^ Оператор конкатенации
- Джон Э. Хопкрофт и Джеффри Д. Уллман, Введение в теорию автоматов, языки и вычисления , издательство Addison-Wesley Publishing, Reading Massachusetts, 1979. ISBN 0-201-02988-X .
- ДЖОН КОРКОРАН , УИЛЬЯМ ФРАНК и МАЙКЛ МАЛОНИ, Теория струн, Журнал символической логики, т. 39 (1974) стр. 625–637