Связанные понятия
Аппликативное программирование — один из видов декларативного программирования, в котором написание программы состоит в систематическом осуществлении применения одного объекта к другому. Результатом такого применения вновь является объект, который может участвовать в применениях как в роли функции, так и в роли аргумента и так далее. Это делает запись программы математически ясной. Тот факт, что функция обозначается выражением, свидетельствует о возможности использования значений-функций — функциональных...
Функциональный объект (англ. function object), также функтор, функционал и функционоид — распространённая в программировании конструкция, позволяющая использовать объект как функцию. Часто используется как callback, делегат.
Стековый язык программирования (англ. stack-oriented programming language) — это язык программирования, в котором для передачи параметров используется машинная модель стека. Этому описанию соответствует несколько языков, в первую очередь Forth и PostScript, а также многие ассемблерные языки (использующие эту модель на низком уровне — Java, C#). При использовании стека в качестве основного канала передачи параметров между словами элементы языка естественным образом образуют фразы (последовательное...
Обобщённый алгебраический тип да́нных (англ. generalized algebraic data type, GADT) — один из видов алгебраических типов данных, который характеризуется тем, что его конструкторы могут возвращать значения не своего типа, связанного с ним. Сконструированы под влиянием работ об индуктивных семействах в среде исследователей зависимых типов.
Сетл (SETL) — язык программирования, ориентированный на работу со множествами, разработанный в конце 1960-х годов группой профессора Нью-йоркского университета Джекобом Шварцем. Наименование языка SETL — сокращение от SET Language (англ.), где SET переводится как «множество», то есть дословно «Язык множеств».
Язык спецификаций — формальный язык, предназначенный для декларативного описания структуры, связей, свойств данных и способов их преобразований, (в отличие от активных языков) без явного упоминания порядка выполняемых действий и использования конкретных значений данных.
Лямбда-выражение в программировании — специальный синтаксис для определения функциональных объектов, заимствованный из λ-исчисления. Применяется как правило для объявления анонимных функций по месту их использования, и обычно допускает замыкание на лексический контекст, в котором это выражение использовано. Используя лямбда-выражения можно объявлять функции в любом месте кода.
Макропроце́ссор (также макрогенера́тор) — программа, выполняющая преобразование входного текста в выходной при помощи задаваемых ей правил замены последовательностей символов, называемых правилами макроподстановки.
Мультипарадигма́льный язы́к программи́рования — как правило, язык программирования, который был разработан специально как инструмент мультипарадигмального программирования, то есть изобразительные возможности которого изначально предполагалось унаследовать от нескольких, чаще всего не родственных языков.
Взаимодействующие последовательные процессы (англ. communicating sequential processes, CSP) — формальный язык для описания моделей взаимодействия в параллельных системах. Относится к математическим теориям параллелизма, известных как исчисление процессов (или алгебра процессов), основанных на передаче сообщений по каналам. Оказал влияние на разработку языка Оккам, Limbo, Go.
Абстракция в информатике представляет собой технику управления сложностью систем.
Старсет — высокоуровневый язык программирования, разработанный под руководством М. М. Гилулы в Институте программных систем РАН в 1991 году.
В информатике
объединение (англ. union) представляет собой значение или структуру данных, которое может иметь несколько различных представлений.
Суперкласс позволяет создавать обобщенный интерфейс, заключающий в себе настраиваемую функциональность за счет использования виртуальных функций.
Мемоизация (запоминание, от англ. memoization (англ.) в программировании) — сохранение результатов выполнения функций для предотвращения повторных вычислений. Это один из способов оптимизации, применяемый для увеличения скорости выполнения компьютерных программ. Перед вызовом функции проверяется, вызывалась ли функция ранее...
Задача выполнимости формул в теориях (англ. satisfiability modulo theories, SMT) — это задача разрешимости для логических формул с учётом лежащих в их основе теорий. Примерами таких теорий для SMT-формул являются: теории целых и вещественных чисел, теории списков, массивов, битовых векторов и т. п.
Высший тип (top type) в теории типов, часто обозначаемый как просто вершина или «закрепленным» символом (⊤), — универсальный тип, то есть такой тип, который содержит в себе каждый возможный объект в нужной системе типов. Высший тип иногда именуется универсальным супертипом, то есть все остальные типы в любой отдельно взятой системе типов являются подтипами самого верхнего. Это является противоположностью нижайшего типа, или иначе именуемого универсальным подтипом, который представляет собой тип...
Сверхвысокоуровневый язык программирования (язык программирования сверхвысокого уровня, англ. very high-level programming language, VHLL) — язык программирования с очень высоким уровнем абстракции. В отличие от языков программирования высокого уровня, где описывается принцип «как нужно сделать», в сверхвысокоуровневых языках программирования описывается лишь принцип «что нужно сделать». Термин впервые появился в середине 1990-х годов для обозначения группы языков, используемых для быстрого прототипирования...
В программировании неизменяемым (англ. immutable) называется объект, состояние которого не может быть изменено после создания.
Подробнее: Неизменяемый объект
Объе́ктно-ориенти́рованное проектирование (ООП) — часть объектно-ориентированной методологии, которая предоставляет программистам возможность оперировать понятием «объект», помимо понятия «процедура» при разработке кода.
Стиль о́тступов (индентация) — правила форматирования исходного кода, в соответствии с которыми отступы программных блоков проставляются в удобочитаемой манере.
Подробнее: Отступ (программирование)
Би (вторая буква английского алфавита — B) — интерпретируемый язык программирования, разработанный в AT&T Bell Telephone Laboratories. Является потомком языка BCPL и непосредственным предшественником Си. Би был в основном произведением Кена Томпсона при содействии Денниса Ритчи и был опубликован в 1969 году.
Каркас ное программирование — это стиль компьютерного программирования, основанный на простых высокоуровневых программных структурах, на так называемых фиктивных кодах. Программа каркасов похожа на псевдокод, но при этом допускает синтаксический анализ, компиляцию и тестирования кода. Фиктивный код код будет вставлен в программу каркаса для симуляции обработки и во избежание сообщений об ошибках при компиляции. Он может включать в себя пустые функциональные выражения, или функции, которые возвращают...
Переопределение метода (англ. Method overriding) в объектно-ориентированном программировании — одна из возможностей языка программирования, позволяющая подклассу или дочернему классу обеспечивать специфическую реализацию метода, уже реализованного в одном из суперклассов или родительских классов. Реализация метода в подклассе переопределяет (заменяет) его реализацию в суперклассе, описывая метод с тем же названием, что и у метода суперкласса, а также у нового метода подкласса должны быть те же параметры...
Парсер (англ. parser; от parse – анализ, разбор) или синтаксический анализатор — часть программы, преобразующей входные данные (как правило, текст) в структурированный формат. Парсер выполняет синтаксический анализ текста.
Подробнее: Синтаксический анализатор
Концептуальное программирование - подход к программированию, описанный Э.Х. Тыугу в одноименной книге . К. программирование предполагает оперирование понятиями (концептами), описанными в терминах предметной области, что позволяет использовать ЭВМ на этапе постановки задачи. Достаточно точное описание задачи позволяет ЭВМ автоматически составлять программы для её решения. Характерными особенностями концептуального программирования являются также использование языка предметной области и использование...
В информатике
сокрытие представляет собой принцип проектирования, заключающийся в разграничении доступа различных частей программы к внутренним компонентам друг друга. В одних языках (например, C++) термин тесно пересекается (вплоть до отождествления) с инкапсуляцией, в других (например, ML) эти понятия абсолютно независимы. В некоторых языках (например, Smalltalk или Python) сокрытие отсутствует, хотя возможности инкапсуляции развиты хорошо. Полное сокрытие также обеспечивает лексическая область...
Типаж (англ. trait) — абстрактный тип данных, используемый как «простая концептуальная модель для структурирования объектно ориентированных программ». Типажи подобны примесям, но могут содержать только методы. Также отличается способ разрешения конфликтов — типажи не допускают совпадения названий методов.Типажи являются основой языка Rust и встроены в язык Scala, в PHP начиная с версии 5.4, в вариант Squeak языка Smalltalk с версии 3.9, в Perl 6 (где они называются «роли»), для Perl 5 — реализованы...
Точка следования (англ. sequence point) — в программировании любая точка программы, в которой гарантируется, что все побочные эффекты предыдущих вычислений уже проявились, а побочные эффекты последующих ещё отсутствуют.
Декоратор (англ. Decorator) — структурный шаблон проектирования, предназначенный для динамического подключения дополнительного поведения к объекту. Шаблон Декоратор предоставляет гибкую альтернативу практике создания подклассов с целью расширения функциональности.
Динамический язык — язык программирования, который позволяет определять типы данных и осуществлять синтаксический анализ и компиляцию «на лету», на этапе выполнения программы. Динамические языки удобны для быстрой разработки приложений.
Алгоритмическая теория информации — это область информатики, которая пытается уловить суть сложности, используя инструменты из теоретической информатики. Главная идея — это определить сложность (или описательную сложность, колмогоровскую сложность, сложность Колмогорова-Хайтина) строки как длину кратчайшей программы, которая выводит заданную строку. Строки, которые могут выводиться короткими программами, рассматриваются как не очень сложные. Эта нотация удивительно глубока и может быть использована...
Веду́щие нули ́ в записи числа при помощи позиционной системы счисления — последовательность из одного или более нулей, занимающая старшие разряды. Понятие ведущих нулей возникает при использовании представлений чисел, имеющих фиксированное количество разрядов. В остальных случаях, как правило, ведущие нули не пишутся.
Функция принадлежности нечёткого множества — обобщение индикаторной (или характеристической) функции классического множества. В нечёткой логике она представляет степень принадлежности каждого члена пространства рассуждения к данному нечёткому множеству.
Неявная
типизация , латентная типизация или утиная типизация (англ. Duck typing) — в ООП-языках — определение факта реализации определённого интерфейса объектом без явного указания или наследования этого интерфейса, а просто по реализации полного набора его методов.
Семанти́ческий ана́лиз — этап в последовательности действий алгоритма автоматического понимания текстов, заключающийся в выделении семантических отношений, формировании семантического представления текстов. Один из возможных вариантов представления семантического представления — структура, состоящая из «текстовых фактов». Семантический анализ в рамках одного предложения называется локальным семантическим анализом.
Венге́рская нота́ция в программировании — соглашение об именовании переменных, констант и прочих идентификаторов в коде программ. Своё название венгерская нотация получила благодаря программисту компании Microsoft венгерского происхождения Чарльзу Симони (венг. Simonyi Károly), предложившему её ещё во времена разработки первых версий MS-DOS. Эта система стала внутренним стандартом Майкрософт.
Коди́рование — процесс написания программного кода, скриптов, с целью реализации определённого алгоритма на определённом языке программирования.
В информатике
таблица символов (от англ. symbol table «таблица идентификаторов») — это структура данных, используемая транслятором (компилятором или интерпретатором), в которой каждый идентификатор переменной или функции из исходного кода ассоциируется с информацией, связанной с его объявлением или появлением в коде: типом данных, областью видимости и в некоторых случаях местом в памяти (смещением).
«Foobar» перенаправляется сюда. См. также статью о медиапроигрывателе foobar2000, о канадском фильме Фубар и об англоязычном акрониме FUBAR.Метасинтаксическая переменная, Метапереме́нные — это слова-заменители, которые применяются в технических текстах для обозначения чего-либо, что может стоять на их месте, метапеременные часто используются в программировании.
Подробнее: Метапеременная
Шаблон мост (англ. Bridge) — структурный шаблон проектирования, используемый в проектировании программного обеспечения чтобы «разделять абстракцию и реализацию так, чтобы они могли изменяться независимо». Шаблон мост использует инкапсуляцию, агрегирование и может использовать наследование для того, чтобы разделить ответственность между классами.
Охра́на (охраня́ющее выраже́ние, охранное выражение) — логическое выражение, которое предназначено для ограничения вычислительных процессов и выбора варианта вычислений. Обычно, используется в функциональных языках программирования (например, Haskell, Erlang).
Правило одного определения (One Definition Rule, ODR) — один из основных принципов языка программирования C++. Назначение ODR состоит в том, чтобы в программе не могло появиться два или более конфликтующих между собой определения одной и той же сущности (типа данных, переменной, функции, объекта, шаблона). Если это правило соблюдено, программа ведёт себя так, как будто в ней существует только одно, общее определение любой сущности. Нарушение ODR, если оно не будет обнаружено при компиляции и сборке...
Рекурсивное определение или индуктивное определение определяет сущность в терминах её самой (то есть рекурсивно), хотя и полезным способом. Для того, чтобы это было возможно, определение в любом данном случае должно быть хорошо-основанным, избегая бесконечной регрессии.
Метамодель в информатике — модель, описывающая другую модель; транзитивное отношение между двумя моделям (например: если модель M1 описывает язык L0, в котором формулируется модель M0, то M1 является метамоделью М0; если же модель M2 описывает язык L1, в котором была сформулирована модель М1, то М2 — это метамодель M1, а M2 является тогда для M0 мета-метамоделью).
Стратегия (англ. Strategy) — поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет выбирать алгоритм путём определения соответствующего класса. Шаблон Strategy позволяет менять выбранный алгоритм независимо от объектов-клиентов, которые его используют.
Машина вывода — программа, которая выполняет логический вывод из предварительно построенной базы фактов и правил в соответствии с законами формальной логики.