Идиома (программирование)

  • Идиома программирования — устойчивый способ выражения некоторой составной конструкции в одном или нескольких языках программирования. Идиома является шаблоном решения задачи, записи алгоритма или структуры данных путём комбинирования встроенных элементов языка.

    Идиому можно считать самым низкоуровневым шаблоном проектирования, применяемым на стыке проектирования и кодирования на языке программирования. Идиома предписывает конкретный способ реализации определённых деталей и отношений между ними средствами конкретного языка. Набор идиом зависит от языка программирования, и одна и та же идиома может выглядеть в двух разных языках по-разному, либо в ней может не быть надобности в одном из них.

    Идиома может представлять собой воспроизведение в языке элементов семантически иного языка, которые в данном языке тоже могут быть применимы, но не провоцируются самим языком (то есть не входят в число его идиом). С этой позиции многие шаблоны в объектно-ориентированном проектировании рассматриваются как идиоматическое воспроизведение элементов функциональных языков.

Источник: Википедия

Связанные понятия

Предметно-ориентированный язык (англ. domain-specific language, DSL — «язык, специфический для предметной области») — язык программирования, специализированный для конкретной области применения (в противоположность языку общего назначения, применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Построение такого языка и/или его структура данных отражают специфику решаемых с его помощью задач. Является ключевым понятием языково-ориентированного программирования...
Диалект языка программирования — это (относительно небольшая) вариация или расширение языка, сохраняющее при этом свою первозданную сущность. Что касается таких языков как Scheme и Forth, то их стандарты могут быть недостаточно соблюдены, частично проигнорированы или вовсе не соответствовать стандартам. В результате того, что эти вариации зачастую отклоняются от соблюдения стандартов, то язык, полностью им соответствющий, считается стандартным, а все прочие — его диалектами. В других случаях, диалект...
Мультипарадигма́льный язы́к программи́рования — как правило, язык программирования, который был разработан специально как инструмент мультипарадигмального программирования, то есть изобразительные возможности которого изначально предполагалось унаследовать от нескольких, чаще всего не родственных языков.
Синтаксический сахар (англ. syntactic sugar) в языке программирования — это синтаксические возможности, применение которых не влияет на поведение программы, но делает использование языка более удобным для человека.
Сверхвысокоуровневый язык программирования (язык программирования сверхвысокого уровня, англ. very high-level programming language, VHLL) — язык программирования с очень высоким уровнем абстракции. В отличие от языков программирования высокого уровня, где описывается принцип «как нужно сделать», в сверхвысокоуровневых языках программирования описывается лишь принцип «что нужно сделать». Термин впервые появился в середине 1990-х годов для обозначения группы языков, используемых для быстрого прототипирования...

Упоминания в литературе

При рассмотрении языка в качестве одного из маркеров этничности группы не столь существенно действительное положение идиома: язык может служить одним из основных символических маркеров, поддерживающих границы сообщества, однако не представлять собою, с точки зрения внешнего наблюдателя, языка в структурном смысле слова, то есть «не существовать» для лингвиста, иными словами, – не выполнять в сообществе коммуникативной функции. Отмечены сообщества, в которых манифестируемый в качестве символа группы идиом утрачен (как, например, марковский говор [Бахтин, 2001]), однако группа по-прежнему использует его как один из маркеров своих границ. С точки зрения их роли в конструировании идентичности идиомы, подобные марковскому говору, функционально не отличаются от полноценных языков.
Мы поддерживаем следующие рассуждения Дж. Люгера: "…понимание естественного языка включает куда больше, чем разбор предложений на индивидуальные части речи и поиск значений слов в словаре. Оно базируется на обширном фоновом знании о предмете беседы и идиомах, используемых в этой области, так же, как и на способности применять общее контекстуальное знание для понимания недомолвок и неясностей, присущих человеческой речи. Задача сбора и организации этого фонового знания, чтобы его можно было применить к осмысливанию языка, составляет значительную проблему в автоматизации понимания естественного языка. Разработано множество методов структурирования семантических значений. Но, из-за огромных объемов знаний, требуемых для понимания естественного языка, большая часть работы ведется в хорошо понимаемых специализированных проблемных областях. Методики представления известных специализированных программ слишком просты, чтобы передать семантическую организацию более богатых и сложных предметных областей. Основная часть текущих работ в этой области направлена на поиск формализмов представления, которые должны быть достаточно общими, чтобы применяться в широком круге приложений и уметь адаптироваться к специфичной структуре заданной области. Множество разнообразных методик, большинство из которых являются развитием или модификацией семантических сетей, исследуются с этой целью и используются при разработке программ, способных понимать естественный язык в ограниченных, но достаточно интересных предметных областях. Есть стохастические модели, описывающие совместное использование слов в языке, которые применяются для характеристики как синтаксиса, так и семантики. Далее следует принципиально важный вывод: полное понимание языка на вычислительной основе все же остается далеко за пределами современных возможностей" [264, стр. 47].
Тезис Ф. де Соссюра «все диахроническое в языке является таковым лишь через речь» [Соссюр 1977:130] за прошедшие сто лет был отвергнут, переосмыслен и снова принят. Множество «обломков прошлого» (по выражению А. А. Потебни) остается в языке в качестве идиом, которые с трудом поддаются описанию в терминах генеративных правил. Эти единицы могут быть рассмотрены как реликты былых состояний или ростки новых явлений, то есть как примеры постоянного языкового развития. Часть таких единиц в результате генерализации формируют то или иное правило, часть – хранится в виде застывших штампов. Представленные ниже исследования синтаксических фразем являются по преимуществу ориентированными на динамические модели в языке, проявляющиеся как на синхронном срезе языка, так и в его развитии. По этой причине целесообразно кратко остановиться на двух подходах, повлиявших на авторов настоящего исследования (обстоятельный обзор теорий языкового изменения можно найти в третьей главе книги [Croft 2000: 42–86]).
«Толкование пословиц» в практике патопсихологического исследования активно применяется еще с последней четверти XIX века. Классический вариант данной методики (когда больному предлагается несколько пословиц или идиом и предлагается объяснить переносный смысл высказывания) использовал в своих судебных экспертизах В. Х. Кандинкий (1880), а великий русский психиатр В. М. Бехтерев писал о нем в своей «Объективной психологии» (1910) как об одном из «классических психологических экспериментов». Существует большое количество модификаций данной методики, но их все можно разделить на два основных варианта: первый – это классический, а второй (как, например, предложенный Б. В. Зейгарник (1973)) предполагает задания на соотнесение предложенных пословиц или идиом с предложенным списком толкований. Мы в нашей работе остановились на рассмотрении классического варианта проведения как более распространенного из-за кажущейся простоты процедуры, но предполагающего экспертную оценку со стороны специалиста, что иногда может вызывать трудности. Список самих идиом соответствует списку, предложенному Б. В. Зейгарник в своем учебнике «Патопсихология». Впрочем, необходимо уточнить, что поскольку оценка идиом и пословиц в данном случае является экспертной, то специалист вправе незначительно варьировать данный список, добавлять или убавлять отдельные идиомы с целью оптимизации патопсихологического исследования в зависимости от конкретной задачи, но делать это он может исключительно в рамках собственной ответственности.
Таким образом, для изучения принципов восприятия и адекватной интерпретации рекламного текста важно иметь представление об образе читателя- потребителя. Адресатами рекламных сообщений являются люди, разные по положению в обществе, образованности, профессии, возрасту, полу, с различной степенью «информированности». «Информированный читатель»1, отвечающий условиям языкового конвенционализма, т.е. он должен быть компетентным носителем языка, на котором составлен текст; в совершенстве владеть семантическим знанием лексических рядов, возможностей словосочетания, идиом, профессионализмов, терминологии и т.п.
Согласно общей теории фразеологии, разработанной А. Н. Барановым и Д. О. Добровольским, понятие фразеологизма не сводится только к его чисто языковому понимаю, но имеет прочную когнитивную составляющую, заключающуюся в том, что образная составляющая фразеологизма является неотъемлемой частью содержания, даже если не оказывает непосредственного влияния на актуальное членение данной единицы [Баранов, Добровольский, 2008, с. 21]. В рамках данной гипотезы выделяются пять видов фразеологизмов: коллокации, идиомы, поговорки и пословицы, грамматические фразеологизмы, фразеосхемы (синтаксические фразеологизмы). Каждый из представленных видов имеет свои отличительные характеристики и обладает своим собственным уровнем устойчивости и идиоматичности.
Так, для носителей русского языка очевидным является завершение инициальных частей следующих слого-ритмических комбинаций («под-сол…нух», «под-кач… ка», «под-ли…за»); идиом («домоклов … меч», «ахиллесова … пята», «несолоно … хлебавши»); фразеологических единств и выражений («Ни к селу… ни к городу», «Незваный гость… хуже татарина», «Без труда… не выловишь и рыбку из пруда»). Опыт наших исследований свидетельствует о том, что ребенок с нормальным речевым развитием к трем годам обнаруживает отчетливую способность к прогнозированию окончаний знакомых слов или фраз [Бабина, Сафонкина, 2004]. Подтверждения данному находим, например, в исследованиях С. Н. Цейтлин и М. Б. Елисеевой (1998). В своей работе авторы зафиксировали следующие факты. Мать практикует с сыном (2,5 г.) игру с завершениями стихотворных текстов: «Иго-го – кричит ребенок, значит это – …»; «Вяжет мама длинный шарф, потому что сын ….»; «Он веселая игрушка и зовут его …». Ребенок добавляет: «Аськафонок!» (жеребенок), «Касяф! Зиляф!» (жираф), «Питуська!» (Петрушка) [Цейтлин, Елисеева, 1998, с. 86]. Приведенный пример показывает, что возможность проговаривания слоговых составляющих слова находится у этого ребенка на этапе становления, однако прогнозирование окончаний стихотворных фраз, для которых требуется добавить слова различной слоговой структуры, он реализует без ошибок.
Для современного научного дискурса в целом характерны две противоречивые тенденции: с одной стороны, повышение значимости работы и авторитета автора за счет корректного изложения анализируемых идей, с другой – стремление обеспечить максимально широкое и комфортное поле обсуждения выдвигаемых идей. Повышение авторитетности работы и в целом осуществляется путем «демонстрации» обезличенности и беспристрастности изложения, использования корректных ссылок, исчерпывающих классификаций, специальной терминологии, включения в работу благодарностей конкретным авторам. Размывание научной терминологии, стремление к перформативности, обращение к специфическому научному юмору и использование модных научных идиом приводит к расширению «поля общения» внутри научного сообщества.
Помимо фразеологизмов в устной деловой речи используются и профессиональные идиомы: разнести по ведомостям, поднять отчетность, снять с баланса, наработать связи, выйти на потребителя, запустить в работу, расписать сумму и т. д.

Связанные понятия (продолжение)

Язык программи́рования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.
Гомоикони́чность (гомоиконность, англ. homoiconicity, англ. homoiconic, от греч. ὁμός — равный, одинаковый + ср.-греч. εἰκόνα — «о́браз», «изображение») — свойство некоторых языков программирования, в которых структура программы похожа на его синтаксис, и поэтому внутреннее представление программы можно определить прочитав текстовую разметку. Если язык гомоиконичен, это означает, что текст программы имеет такую же структуру, как её абстрактное синтаксическое дерево (то есть AST и синтаксис являются...
Ле́йпцигские пра́вила глосси́рования (англ. Leipzig glossing rules) — предложенный для унифицированного использования при представлении языковых примеров в лингвистических работах набор правил глоссирования (поморфемной нотации). Включает как собственно правила оформления интерлинеарных глосс, так и список рекомендуемых сокращений (грамматических помет, «ярлыков»), используемых для обозначения грамматических категорий.
Контроли́руемый язы́к (упрощённый естественный язык, англ. controlled natural language, CNL) — ограниченная версия естественного языка, созданная для выполнения определённых задач. Контролируемый язык — это подвид естественного языка, полученный ограничением в использовании грамматики, терминологии и речевых оборотов посредством регламентирующих правил с тем, чтобы снизить или искоренить его многозначность и сложность.
Индукция грамматики (или грамматический вывод) — это процесс в машинном обучении для обучения формальной грамматике (обычно в виде набора правил вывода или порождающих правил или, альтернативно, как конечный автомат или автомат другого вида) из набора наблюдений, то есть построение модели, которая описывает наблюдаемые объекты. Более обще, грамматический вывод — это такая ветвь машинного обучения, в которой пространство примеров состоит из дискретных комбинаторных объектов, таких как строки, деревья...
Стековый язык программирования (англ. stack-oriented programming language) — это язык программирования, в котором для передачи параметров используется машинная модель стека. Этому описанию соответствует несколько языков, в первую очередь Forth и PostScript, а также многие ассемблерные языки (использующие эту модель на низком уровне — Java, C#). При использовании стека в качестве основного канала передачи параметров между словами элементы языка естественным образом образуют фразы (последовательное...
Псевдоко́д — компактный (зачастую неформальный) язык описания алгоритмов, использующий ключевые слова императивных языков программирования, но опускающий несущественные подробности и специфический синтаксис. Псевдокод обычно опускает детали, несущественные для понимания алгоритма человеком. Такими несущественными деталями могут быть описания переменных, системно-зависимый код и подпрограммы. Главная цель использования псевдокода — обеспечить понимание алгоритма человеком, сделать описание более воспринимаемым...
В информатике лексический анализ («токенизация», от англ. tokenizing) — процесс аналитического разбора входной последовательности символов на распознанные группы — лексемы, с целью получения на выходе идентифицированных последовательностей, называемых «токенами» (подобно группировке букв в словах). В простых случаях понятия «лексема» и «токен» идентичны, но более сложные токенизаторы дополнительно классифицируют лексемы по различным типам («идентификатор, оператор», «часть речи» и т. п.). Лексический...
Грамматика ван Вейнгаардена (также вВ-грамматика или В-грамматика) — это двухуровневая грамматика, которая предоставляет способ определения потенциально бесконечных грамматик через конечное число правил. Формализм был изобретён Адрианом ван Вейнгаарденом для определения некоторых синтаксических ограничений, которые ранее должны были формулироваться на естественных языках, несмотря на свою принципиально синтаксическую сущность. Типичными применениями являются обработка рода и числа в естественных...
Лексическая типология, или лексико-семантическая типология, — раздел лингвистической типологии, изучающий разнообразие семантики лексических единиц в языках мира.
Сема́нтика в программировании — дисциплина, изучающая формализации значений конструкций языков программирования посредством построения их формальных математических моделей. В качестве инструментов построения таких моделей могут использоваться различные средства, например, математическая логика, λ-исчисление, теория множеств, теория категорий, теория моделей, универсальная алгебра. Формализация семантики языка программирования может использоваться как для описания языка, определения свойств языка...
Сте́мминг — это процесс нахождения основы слова для заданного исходного слова. Основа слова не обязательно совпадает с морфологическим корнем слова.
Расширенная форма Бэкуса — Наура (расширенная Бэкус — Наурова форма (РБНФ)) (англ. Extended Backus–Naur Form (EBNF)) — формальная система определения синтаксиса, в которой одни синтаксические категории последовательно определяются через другие. Используется для описания контекстно-свободных формальных грамматик. Предложена Никлаусом Виртом. Является расширенной переработкой форм Бэкуса — Наура, отличается от БНФ более «ёмкими» конструкциями, позволяющими при той же выразительной способности упростить...
Синхронный автоматический перевод (Speech-to-Speech Real-Time Translation) — «моментальный» машинный перевод речи, с одного естественного языка на другой, с помощью специальных программных и технических средств. Так же называется направление научных исследований, связанных с построением подобных систем.
Конкатенативный язык программирования — это язык программирования, основанный на том, что конкатенация двух фрагментов кода выражает их композицию. В таком языке широко используется неявное указание аргументов функций (см. бесточечное программирование), новые функции определяются как композиция функций, а вместо аппликации применяется конкатенация. Этому подходу противопоставляется аппликативное программирование.
Динамическая и формальная эквивалентность (термин ввёл Юджин Найда) — это два различных подхода к переводу, которые помогают избежать буквализмов из текста оригинала в тексте перевода, что наблюдалось в переводах Библии.
Комбинато́рное программи́рование (англ. function-level programming) — парадигма программирования, использующая принципы комбинáторной логики, то есть не требующая явного упоминания аргументов определяемой функции (программы) и использующая вместо переменных комбинаторы и композиции. Является особой разновидностью функционального программирования, но, в отличие от основного его направления, комбинаторное программирование не использует λ-абстракцию).
Базовый набор слов эсперанто был определён в Первой книге, опубликованной Заменгофом в 1887 году. В ней содержалось около 900 корней, однако, правила языка позволяли говорящим заимствовать слова по мере необходимости. Рекомендовалось заимствовать наиболее интернациональные слова, которые имеют одно основное значение, от которого можно получить другие слова без заимствования многих слов с соответствующими значениями. В 1894 году Заменгоф публикует первый словарь эсперанто «Universala vortaro», который...
Эзотерический язык программирования — язык программирования, разработанный для исследования границ возможностей разработки языков программирования, для доказательства потенциально возможной реализации некой идеи (так называемое «доказательство концепции», англ. proof of concept), в качестве произведения программного искусства или в качестве шутки (компьютерного юмора).
Формальный язык в математической логике и информатике — множество конечных слов (строк, цепочек) над конечным алфавитом. Понятие языка чаще всего используется в теории автоматов, теории вычислимости и теории алгоритмов. Научная теория, которая имеет дело с этим объектом, называется теорией формальных языков.
Си́мула-67 (Simula 67) — язык программирования общего назначения, разработанный в конце 60-х сотрудниками Норвежского Вычислительного Центра (Осло) Кристеном Нюгором и Оле-Йоханом Далем для моделирования сложных систем.
Типология порядка слов (в предложении) — один из методов типологической классификации языков, используемых в лингвистической типологии, основанный на понятии базового порядка составляющих: подлежащего (англ. subject), сказуемого (англ. verb) и прямого дополнения (англ. object). Термины «подлежащее» (англ. subject) и «прямое дополнение» (англ. object) в данном случае используются не строго, но для обозначения агентивного и пациентивного участников ситуации. Современное состояние типологии базового...
Пролог (англ. Prolog) — язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
Формальная грамматика или просто грамматика в теории формальных языков — способ описания формального языка, то есть выделения некоторого подмножества из множества всех слов некоторого конечного алфавита. Различают порождающие и распознающие (или аналитические) грамматики — первые задают правила, с помощью которых можно построить любое слово языка, а вторые позволяют по данному слову определить, входит ли оно в язык или нет.
Корефере́нтность или референциональное тождество — отношение между именами — компонентами высказывания, в котором имена ссылаются на один и тот же объект (ситуацию) внеязыковой действительности (референт).
Каламбур типизации является прямым нарушением типобезопасности. Традиционно возможность построить каламбур типизации связывается со слабой типизацией, но и некоторые сильно типизированные языки или их реализации предоставляют такие возможности (как правило, используя в связанных с ними идентификаторах слова unsafe или unchecked). Сторонники типобезопасности утверждают, что «необходимость» каламбуров типизации является мифом.
Аппликати́в (лат. applicatus «примыкающий, присоединяющийся» от гл. applicare) — повышающая актантная деривация, при которой у описываемой глаголом ситуации появляется новый обязательный участник, который раньше был периферийным. Во многих языках аппликатив имеет морфологическое выражение: глагол присоединяет особый аффикс, который показывает, что валентность глагола возросла на один аргумент. Новый обязательный участник может играть различные семантические роли: бенефактива, адресата, экспериенцера...
Синтакси́ческий ана́лиз (или разбор, жарг. па́рсинг ← англ. parsing) в лингвистике и информатике — процесс сопоставления линейной последовательности лексем (слов, токенов) естественного или формального языка с его формальной грамматикой. Результатом обычно является дерево разбора (синтаксическое дерево). Обычно применяется совместно с лексическим анализом.
Языкова́я спосо́бность — специфический психофизиологический механизм, формирующийся у носителя языка на основе нейрофизиологических предпосылок и под влиянием опыта речевого общения.
Компью́терная лексикогра́фия — прикладная научная дисциплина в языкознании, которая изучает методы использования компьютерной техники для составления словарей. Это временная дисциплина периода перехода от ручной и рукописной лексикографической практики к новым безбумажным информационным технологиям.
Избыточность языка — статистическая величина, обозначающая избыточность информации, содержащейся в тексте на определённом языке.
Минимали́стская програ́мма — лингвистическая теория, предложенная американским лингвистом Н. Хомским для объяснения тех языковых феноменов, механизмы которых не были прояснены полностью в рамках теории принципов и параметров. Сама Минималистская программа содержит ряд сильных утверждений, касающихся универсальной грамматики, а также некоторые гипотезы об устройстве когнитивной системы в связи с врождённой языковой способностью. Главным методологическим принципом Минималистской программы является...
Языкова́я система́тика — вспомогательная дисциплина, помогающая упорядочивать изучаемые лингвистикой объекты — языки, диалекты и группы языков. Результат такого упорядочивания также называется систематикой языков.
Универсальная грамматика — термин, которым в ряде лингвистических теорий обозначается предполагаемый набор правил или принципов, присущих каждому человеческому языку. Подобные правила не определяют язык полностью: они допускают значительную вариантность, но ограничивают её некоторыми конечными рамками. В современной когнитивной науке универсальная грамматика понимается как встроенное на генетическом уровне знание о языке.
Чистота́ (в отношении языка программирования) — отсутствие побочных эффектов. Язык программирования является чистым в том случае, если все функции в программах этого языка являются чистыми.
Теория «Смысл — текст» (название более точно записывается как «теория „Смысл ⇔ Текст“») — лингвистическая концепция, созданная И. А. Мельчуком и представляющая язык как многоуровневую модель преобразований смысла в текст и обратно (модель «Смысл ⇔ Текст»); отличительной особенностью этой теории является также использование синтаксиса зависимостей. Значительна роль, отводимая лексическому компоненту модели — Толково-комбинаторному словарю.
Теория принципов и параметров — этап развития генеративной грамматики, при котором грамматика различных языков описывается с помощью системы универсальных правил, а языковые различия задаются с помощью определённого набора параметров.
Системно-функциональная лингвистика (СФЛ) - это подход к лингвистике, рассматривающий язык как социальную семиотическую систему. Данный подход был разработан Майклом Халлидеем, который перенял понятие системы от своего учителя, Дж. Р. Ферса. В то время как Ферс считал, что системы ссылались на возможности, подчиненные структуре, Халлидей в некотором смысле «освободил» сферу выбора от структуры и сделал выбор основополагающим понятием своей теории. Другими словами, в то время как многие подходы к...
Спецификация (стандарт, определение) языка программирования — это предмет документации, который определяет язык программирования, чтобы пользователи и разработчики языка могли согласовывать, что означают программы на данном языке. Спецификации обычно являются подробными и формальными и в основном используются разработчиками языка, в то время как пользователи обращаются к ним в случае двусмысленности: например, спецификация языка C++ часто цитируется пользователями из-за сложности. Сопутствующая документация...
Выразительность языка программирования — качество языка, показывающее, насколько разнообразны идеи, которые можно реализовать на этом языке, и насколько легко они читаются.
Диалоговый (интерактивный, разговорный) язык программирования — язык, используемый в режиме диалога человек-машина. Характерными чертами являются лаконичность конструкции, развитый принцип умолчания, возможность пошаговой трансляции директив, мнемоничность. Известными разговорными языками, ориентированными на вычислительные задачи, являются BASIC, APL и др.
Идентификация языка (англ. language identification), в методике обработки естественного языка — определение языка. Проблема идентификации языка является особым случаем категоризации текста и решается с использованием статистических методов.
Функциона́льное программи́рование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).
В информатике неоднозначной грамматикой называется формальная грамматика, которая может породить некоторую строку более чем одним способом (то есть для строки есть более одного дерева разбора). Язык называется существенно неоднозначным, если он может быть порождён только неоднозначными грамматиками.

Подробнее: Неоднозначная грамматика
Есте́ственный язы́к — в лингвистике и философии языка язык, используемый для общения людей (в отличие от формальных языков и других типов знаковых систем, также называемых языками в семиотике) и не созданный целенаправленно (в отличие от искусственных языков).
а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я