Его можно использовать между двумя фразами, в которых первая фраза вызывает вторую.
- Пример: «Он много играл, поэтому его одежда запачкалась». (Арабский: لَعِبَ كَثِيرًا ؛ فَٱتَّسَخَتْ مَلَابِسُهُ. )
- Пример: «Ваша сестра не получила высоких оценок, она не училась». (Арабский: لم تحقق أختك درجات عالية ؛ لأنها لم تدرس. )
Греческий, церковнославянский
В греческом и церковнославянском языках точка с запятой обозначает вопрос, аналогично латинскому вопросительному знаку . Для обозначения длинной паузы или отдельных разделов, каждый с запятыми (назначение точки с запятой в английском языке), в греческом языке используется, но крайне редко, греческий: άνω τελεία , латинизированный: áno teleía , lit. «точка вверх», Interpunct · .
Церковнославянский пример: гдѣ єсть рождeйсѧ царь їудейскій; (Где тот, кто родился царем иудейским? — Матфея 2: 1 )
Греческий пример: Τι είναι μια διασύνδεση; (Что такое интерпункт?)
французкий язык
Во французском языке точка с запятой ( точка-косая черта , буквально «точка-запятая») — это разделение между двумя полными предложениями, где двоеточие или запятая не подходят. Фраза, следующая за точкой с запятой, должна быть независимым предложением, которое связано с предыдущим (но не объясняет его, в отличие от предложения, введенного через двоеточие ).
Во французском письме также используется тире , но не так широко, как точка с запятой. Использование этих устройств (точка с запятой и тире) варьируется от автора к автору.
Литература
Точно так же, как есть писатели, поклоняющиеся точке с запятой, есть и другие высококлассные стилисты, которые отвергают ее, называя ее, если угодно, средним классом.
Линн Трасс , ест, стреляет и уходит
Некоторые авторы избегали и отвергали использование точки с запятой во всех своих работах. Линн Трасс заявила:
Сэмюэл Беккет весело пробирался сквозь такие романы, как « Моллой» и « Малоун умирает» , все время высовывая нос над точкой с запятой. Джеймс Джойс предпочитал толстую кишку, поскольку считал ее более классической. П.Г. Вудхаус без труда проделал изумительную работу без него, Джордж Оруэлл попытался полностью избежать точки с запятой в Coming Up for Air (1939), Мартин Эмис включил только одну точку с запятой в Money (1984), а Умберто Эко был поздравлен академическим читателем за использование ноль точек с запятой в «Имя розы» (1983).
В ответ на сообщение Трасса Бен Макинтайр , обозреватель The Times , написал:
Американцы долгое время относились к точке с запятой с подозрением, как к благородному, застенчивому, знаку препинания типа «ни что-то одно, ни другого», не имеющего ни мясистости полного двоеточия, ни непостоянства запятой. Хемингуэй , Чендлер и Стивен Кинг не будут замечены мертвыми в канаве с точкой с запятой (хотя Трумэн Капоте мог бы). Настоящие мужчины, согласно неписаному правилу американской пунктуации, не используют точки с запятой.
Как метафора
В книге Курта Воннегута « Человек без страны» он написал: «Вот урок творческого письма . Первое правило: не используйте точки с запятой. Точки с запятой — это трансвеститы- гермафродиты . Все, что они делают, — это показывают, что вы учились в колледже. «
Кодирование в цифровых носителях
Точка с запятой имеет присвоенное значение в компьютерных стандартах кодирования символов . В ASCII он кодируется как 0x3B , в EBCDIC он кодируется как 0x5E , а в Unicode он кодируется как U + 003B .
Unicode содержит кодировку для нескольких символов точки с запятой:
- U + 003B ; SEMICOLON — унаследован от ASCII
- U + 037E ; ГРЕЧЕСКИЙ ВОПРОСНЫЙ ЗНАК
- U + 061B ؛ ARABIC SEMICOLON — арабское письмо
- U + 1364 ፤ ETHIOPIC SEMICOLON — скрипт Geʽez
- U + 204F ⁏ ПЕРЕВЕРНУТЫЙ СЕМИКОЛОН — используется в старых системах письма, таких как венгерский руническийязык и язык синдхи.
- U + 236E ⍮ ФУНКЦИОНАЛЬНЫЙ СИМВОЛ APL SEMICOLON UNDERBAR — используется в языке программирования APL
- U + 2E35 ⸵ ПОВОРОТНАЯ ПОЛУПОЛОСТЬ — «указывает на внезапное закрытие голосовой щели »
- U + A6F6 ꛶ BAMUM SEMICOLON — скрипт Bamum
- U + FE14 ︔ ФОРМА ПРЕЗЕНТАЦИИ ДЛЯ ВЕРТИКАЛЬНОЙ ПОЛУПОЛНОЙ — определяет ориентацию, когда широкие символы пишутся вертикально, а не горизонтально
- U + FE54 ﹔ МАЛЫЙ ПОЛУПОЛОВНИЦА — варианты малой формы предназначены для совместимости с китайским национальным стандартом CNS 11643
- U + FF1B ; FULLWIDTH SEMICOLON — для использования в скриптах с широкими символами, таких как кандзи.
- U + E003B TAG SEMICOLON — блок устаревших тегов
Использование вычислений
Программирование
В компьютерном программировании точка с запятой часто используется для разделения нескольких операторов (например, в Perl , Pascal и SQL ; см. Паскаль: Точки с запятой как разделители операторов ). В других языках точки с запятой называются терминаторами и требуются после каждого оператора (например, в PL / I , Java и семействе C ). Сегодня точки с запятой как терминаторы в значительной степени победили, но это был спорный вопрос в языках программирования с 1960-х по 1980-е годы. Влиятельным и часто цитируемым исследованием в этой дискуссии было исследование Gannon & Horning (1975) , в котором был сделан убедительный вывод в пользу использования точки с запятой в качестве терминатора: «Наиболее важным [результатом] было то, что наличие точки с запятой в качестве терминатора утверждения лучше, чем наличие точки с запятой в качестве терминатора утверждения. точка с запятой в качестве разделителя операторов «. Сторонники использования точки с запятой в качестве разделителя раскритиковали исследование как несовершенное из-за того, что участники знакомы с языком, в котором используется точка с запятой как терминатор, и нереально строгой грамматикой. Тем не менее, дебаты закончились в пользу точки с запятой в качестве терминатора. Таким образом, точка с запятой обеспечивает структуру языка программирования.
Точка с запятой является необязательной для ряда языков, включая BCPL , Python , Eiffel и Go , что означает, что они являются частью формальной грамматики языка, но могут использоваться во многих или во всех контекстах (например, в конце строки, заканчивающейся заявление (в Go)). Поскольку языки могут разрабатываться без них, некоторые считают точки с запятой ненужной неприятностью.
Использование точек с запятой в структурах потока управления и блоках кода варьируется — точки с запятой обычно опускаются после закрывающей фигурной скобки, но включаются в одну ветвь оператора структуры управления (предложение «then»), за исключением Pascal, где точка с запятой завершает все предложение if . then . else (чтобы избежать зависания else ) и, таким образом, не допускается между «then» и соответствующим «else», так как это вызывает отмену вложенности.
Это использование берет свое начало с АЛГОЛОМ 60 , и падает между запятой , — используется в качестве разделителя списка — и период / полная остановка . — используется для обозначения окончания программы. Точка с запятой, как знак, разделяющий операторы, соответствует обычному английскому использованию разделения независимых предложений и дает всей программе грубый синтаксис одного обычного предложения. Из этих других символов, в то время как запятые по-прежнему широко используются в программировании для списков (и в других редких случаях, таких как оператор запятой, который разделяет выражения в C), они редко используются иначе, и точка в конце программы вышла из употребления. Последнее крупное использование запятой, точки с запятой и иерархии точек было в Erlang (1986), где запятые разделяют выражения; точки с запятой разделяют предложения, как для потока управления, так и для предложений функций; и периоды завершают операторы, такие как определения функций или атрибуты модулей, а не всю программу. Недостатки наличия нескольких разных разделителей или терминаторов (по сравнению с одним ограничителем и одной группировкой, как в случае с точкой с запятой и фигурными скобками) включают умственные издержки при выборе знаков препинания и накладные расходы при перестановке кода, так как это требует не только перемещения строк, но и обновление знаков препинания.
В некоторых случаях различие между разделителем и терминатором является сильным, например, в ранних версиях Паскаля, где конечная точка с запятой дает синтаксическую ошибку . В других случаях последняя точка с запятой обрабатывается либо как необязательный синтаксис, либо как сопровождаемый пустым оператором, который либо игнорируется, либо обрабатывается как NOP (без операции или пустой команды); сравнить конечные запятые в списках. В некоторых случаях допускается пустой оператор, разрешающий последовательность точек с запятой или использование самой точки с запятой в качестве тела структуры потока управления. Например, пустой оператор (точка с запятой сама по себе) обозначает NOP в C / C ++, что полезно в циклах синхронизации с ожиданием занятости .
APL использует точки с запятой для разделения объявлений локальных переменных и для разделения осей, например, при индексировании многомерных массивов matrix[2;3] .
Другие языки (например, некоторые языки ассемблера и диалекты LISP , файлы CONFIG.SYS и INI ) используют точку с запятой для обозначения начала комментариев .
Обычно на многих языках каждый оператор записывается в отдельной строке, но обычно это не является требованием языка. В приведенных выше примерах два оператора помещены в одну строку; это допустимо, потому что точка с запятой разделяет два оператора. Таким образом, языки программирования, такие как Java, семейство C, Javascript и т. Д., Используют точку с запятой для получения правильной структуры на соответствующих языках.
Данные
Точка с запятой часто используется для разделения элементов строки текста. Например, несколько адресов электронной почты в поле «Кому» в некоторых почтовых клиентах должны быть разделены точкой с запятой.
В Microsoft Excel точка с запятой используется в качестве разделителя списка, особенно в тех случаях, когда десятичным разделителем является запятая, например 0,32; 3,14; 4,50 , вместо 0.32, 3.14, 4.50 .
В MATLAB и GNU Octave точка с запятой может использоваться в качестве разделителя строк при определении вектора или матрицы (тогда как запятая разделяет столбцы в строке вектора или матрицы) или для выполнения команды без вывода сообщений, без отображения результирующего выходного значения. в консоли.
В HTML точка с запятой используется для завершения ссылки на символьный объект , именованной или числовой. Объявления атрибута стиля в каскадных таблицах стилей (CSS) разделяются и заканчиваются точкой с запятой.
В файловой системе RSX-11 и OpenVMS , Files-11 , точка с запятой используется для обозначения номера версии файла . Точка с запятой разрешена в длинных именах файлов в файловых системах Microsoft Windows NTFS и VFAT , но не в их коротких именах .
В некоторых форматах файлов значений, разделенных разделителями , точка с запятой используется в качестве символа-разделителя в качестве альтернативы значениям, разделенным запятыми .
Математика
В списке аргументов математической функции точка с запятой может использоваться для отделения переменных от фиксированных параметров . ж ( Икс 1 , Икс 2 , … ; а 1 , а 2 , … ) <\ displaystyle f (x_ <1>, x_ <2>, \ dots; a_ <1>, a_ <2>, \ dots)>
В дифференциальной геометрии точка с запятой перед индексом используется для обозначения ковариантной производной функции по координате, связанной с этим индексом.
Другое использование
Точка с запятой обычно используется как часть смайлов , чтобы обозначить подмигивание или плач, например, 😉 и ;_; .
Проект «Точка с запятой» — это название религиозной инициативы по борьбе с самоубийством (поскольку точка с запятой продолжает предложение, а не заканчивает его), в результате чего знак препинания стал очень символической и популярной татуировкой , которую чаще всего делают на запястье .
Точка Хамфри иногда используется вместо десятичной точки в двенадцатеричных числах.
Монада — программируемая точка с запятой

Монады — программируемые точки с запятой. Именно так. Монада предоставляет функции, позволяющие упорядочивать действия. Более того, между каждыми двумя действиями выполняется определённый фрагмент кода. Итак, монада — настраиваемая точка с запятой.
Сделаем шаг назад
В императивных языках, таких как C и Java, для выражения последовательности операций используются точки с запятой. Код перед точкой с запятой выполняется перед кодом после другой точки с запятой. В таких языках, как Haskell, где более или менее всё является просто выражением, на первый взгляд не видно, какова последовательность выполнения.
Это интересно: монады происходят из области математики под названием “Теория категорий”. Для использования и понимания монад в Haskell не обязательно знать определения и теоремы этой математической дисциплины.
Секвенирование легче на других языках. Значит ли это, что Haskell плохо спроектирован?
Вовсе нет. Можно сказать, что так сделано преднамеренно. Haskell разработан как ссылочно прозрачный язык. Это просто причудливый способ сказать, что каждый вызов функции может быть заменён его возвращаемым значением.
Представьте, что у вас есть функция с именем doCalculation , которая принимает число, выполняет некоторые вычисления и возвращает другое число. В Haskell выражение doCalculation(x) + doCalculation(x) можно заменить на 2*doCalculation(x) . При этом мы можем быть уверены, что поведение программы не изменится. В Java эта замена вообще не выполнима, поскольку не гарантируется, что doCalculation возвращает один и тот же результат при каждом вызове. Например, метод может просто вызвать генератор случайных чисел и всегда возвращать другой результат. Кроме того, в таких языках, как Java, doCalculation может включать общие побочные эффекты: запись в базу данных или вывод на консоль.
Ссылочная прозрачность имеет много преимуществ. Оптимизация проще для компиляторов ссылочно прозрачных языков. Более того, до некоторой степени можно автоматизировать параллелизм . Однако все эти функции сопряжены с затратами на более сложное разделение инструкций. Но если уж на то пошло, мы можем использовать монады.
Ближе к сути
Как можно запрограммировать и использовать такую точку с запятой? Ответим на вопрос примером: созданием и редактированием списков покупок. Список покупок — это список строк. Мы можем реализовать функции, добавляющие элементы один за другим, а также функцию, удаляющую первый элемент. Кроме того, мы хотим подсчитать, сколько раз список был изменен. Определим новый тип:
Тип Counter состоит из целого числа с именем counter и произвольного элемента. Для наших списков покупок элементом будет список строк. Счётчик будет представлять количество выполненных манипуляций. Давайте перейдём к самой важной части. Чтобы запрограммировать точку с запятой, включив секвенирование, мы пишем следующее:
Именно здесь происходит магия. Начнем с более простой функции.
return просто создаёт новый счётчик для данного элемента. Он может использоваться для построения нового счётчика, начинающегося с 0 манипуляций для данного списка покупок.
Как и всё в Haskell, монада — просто ещё одна функция. В нашем примере она имеет тип Counter a → (a → Counter b) → Counter b (для наших конкретных списков покупок a и b будут списками строк). А теперь то же самое — медленно: >>= получает счётчик с элементом (в коде он называется x ). Он манипулирует элементом с помощью заданной функции, которая снова возвращает счётчик. Наконец, >>= возвращает новый счётчик, в котором целое, представляющее число манипуляций, является целым счётчика из данной функции плюс 1.
Решающее значение в определении нашей программируемой точки с запятой имеет то, что счётчик известен до вычисления функции, заданной во втором аргументе. Таким образом, если счётчик в первом аргументе перед монадой — просто выражение, приводящее к конкретному счётчику, то мы можем быть уверены, что это выражение будет вычислено до вызова функции, заданной во втором аргументе, после монады.
Чтобы иметь возможность добавлять и удалять товары в наших списках, нужно определить ещё две однострочные функции. Кроме того, мы определяем наш первый, пустой список.
Сейчас у нас есть все, чтобы создать типичный список покупок, по одному пункту за раз. Выполнение кода приводит к следующему результату:
Что здесь происходит?
Начнём с пустого списка покупок, в котором нет никаких элементов, с счётчиком на 0 . Монада берет список, полученный из строки, и передаёт его функции в следующей строке.
Пустой список покупок по сути передаётся через строки и подвергается манипуляциям на каждом этапе. Ключевой момент: мы можем быть уверены, что “Bread” добавляется перед “Butter”. Как описано выше, так происходит благодаря определению программируемой точки с запятой.
Заметьте, что все в нашей операции с монадой состоит из функций. Каждая строка, кроме первой, является анонимной функцией, как и >>= .
В заключение отметим, что мы реализовали способ секвенирования действий в чисто функциональном стиле. Haskell предоставляет много синтаксического сахара, который позволяет писать операции с монадами так, чтобы ещё больше подчеркнуть свойство секвенирования:
Эти два определения полностью эквивалентны. В конце концов, это дело вкуса, какой из них использовать. Для начала, однако, желательно использовать явную форму, чтобы помнить о происходящем за кулисами.
Ещё одно важное замечание: после определения в программируемой точке с запятой, подсчёт полностью невидим внутри операции. Магия происходит внутри >>= . Поскольку функциональность монады можно свободно определить, это отличное место, чтобы скрыть что-то. Предопределённая монада maybe , например, скрывает проверку на null и пропускает все следующие строки, если видит null . Кроме того, монадой можно реализовать логирование и скрыть в >>= .
Парсер — ещё одно приложение, использующее монаду состояния, но это совсем другая история. Итак, монады полезны в различных ситуациях. В конце концов, они не больше и не меньше, чем программируемые точки с запятой.