Перейти к содержимому

На чем основано процедурное программирование

  • автор:

21. На чем основано процедурное программирование и каковы его недостатки?

Процедурное программирование основано на потоке управления. Суть его заключается в алгоритмической декомпозиции процесса решения задачи (разбиение на операторы), таким образом, чтобы из операторов языка программирования сконструировать программу, выполняющую некоторое заданное преобразование данных. Этот стиль программирования является базовым инструментарием для всех остальных технологий программирования. Процедурный стиль выражается в четком выделении в программе двух составляющих: непроцедурной (описание переменных, функций, процедур) и процедурной (описание действий). Существенный недостаток процедурного программирования – сложная реализация параллельного программирования. Также как недостаток можно отметить существенный объем программного кода.

22. Дайте определение структуры данных и приведите пример.

Структура данных – это совокупность элементов данных, между которыми существуют некоторые отношения, причем элементами данных могут быть простые данные и структуры данных. Структуру данных можно определить, как S=(D,R), где D- множество элементов данных, R-множество отношений (связей) между элементами данных. В качестве примера можно привести статические структуры данных. Этот класс структур характеризуется тем, что для их размещения в памяти ЭВМ выделяется фиксированный объем памяти. Вектор – конечное упорядоченное множество простых данных или скаляров одного и того же типа. Элементы вектора находятся между собой в отношении непосредственного следования. В памяти ЭВМ элементы вектора представляются последовательностью одинаковых по длине участков памяти, как правило, расположенных в порядке следования элементов в группе.

23. Назовите основные преимущества case- технологий по сравнению с традиционной технологией проектирования.

CASE – технологии обладают следующими основными достоинствами: улучшают качество создаваемого ПО за счет средств автоматического контроля, прежде всего, контроля проекта; позволяют за короткое время создавать прототип будущей системы, что позволяет на ранних этапах оценить ожидаемый результат; ускоряют процесс проектирования и разработки; позволяют разработчику больше времени уделять творческой работе по созданию ПО, освобождая его от рутинной работы; поддерживают развитие и сопровождение разработки; поддерживают технологии повторного использования (компонент разработки).

24. Приведите пример таблицы решений для какой-либо внешней спецификации.

Приведем пример таблицы решений для спецификации процесса выбора символов из входного потока по следующим правилам: а) если очередной символ является управляющим, то подать звуковой сигнал и вернуть код ошибки;

б) если буфер формируемой строки заполнен, то подать звуковой сигнал и вернуть код ошибки; в) если очередной символ не находится в заданном диапазоне, (положим, от ‘а’ до ‘я’), то подать звуковой сигнал и вернуть код ошибки;

г) иначе поместить символ в буфер, увеличить значение счетчика выбранных символов и вернуть новое значение счетчика. Таблица решений для данного примера приведена ниже ( таблица 1.1). Здесь ‘Д’ означает ‘да’, ‘Н’ — ‘нет’, 1,2 — помеченные действия выполняются в указанном порядке.

Процедурное и модульное программирование

В результате исследовательских работ 1960—1970-х гг. была разработана технология процедурного (или структурного, модульного) программирования, внесшая ясность в написание программ, простоту тестирования и отладки, легкость модификации. По сравнению со стихийным программированием технология процедурного программирования — это дисциплинированный подход к написанию программ. Процедурное программирование основано на модели построения программы как иерархии процедур, что и дало название данной технологии.

Для изучения процедурного программирования в 1971 г. Н. Виртом был создан язык программирования Pascal, нашедший большое применение в университетах. На протяжении 1970-х гг. создавался язык С на базе концепции предшествующих двух языков — BCPL и В, разработанных для написания компиляторов и операционных систем. Язык С получил широкую популярность в результате его использования в разработке операционной системы UNIX. В конце 1970-х гг. был создан «классический» язык С Б. Кернигана и Д. Ритчи. На этом языке были написаны фактически все новые операционные системы и системные программные продукты.

Технология процедурного программирования основана на использовании следующих методов (приемов) программирования:

  • 1) метод декомпозиции (нисходящего проектирования), т.е. разделение программы на процедуры простейшей структуры и представление программы в виде иерархии процедур:
  • 2) метод модульной организации, т.е. группировка процедур и обрабатываемых ими данных в модули, которые программируются и компилируются отдельно. Преимущества данного метода заключаются в параллельной работе программистов, удобстве программирования, возможности создания библиотек;
  • 3) метод структурного программирования процедур, который заключается в следующем:
    • • разделение процедур на вложенные блоки, что позволяет локализовать переменные и операторы их обработки, структурировать процедуру;
    • • использование операторов ветвления и циклов, осуществляющих передачу управления только сверху — вниз, что приводит к ясности алгоритма, к облегчению программирования и сопровождения программ; операторы безусловной передачи управления goto использовать не рекомендуется;
    • • форматирование текста процедуры, т.е. использование отступов для отображения вложенности блоков, применение идентификаторов, несущих смысл, и использование комментариев, что приводит к повышению читаемости программ и к облегчению их сопровождения.

    Наиболее известными процедурными языками программирования являются PL1, ALGOL-68, Pascal, С, C++.

    На чем основано процедурное программирование

    81. Процедурное программирование

    Процедурно-ориентированное программирование — метод программирования, в соответствии с которым программы пишутся как перечни последовательно выполняемых операторов. При этом используется процедурно-ориентированный язык программирования, например, Паскаль, Фортран.

    Процедурное программирование. Программа отделяется от данных. Программа состоит из последовательности команд, обрабатывающих данные. Данные как правило хранятся в виде переменных. Весь процесс вычисления сводится к изменению их содержимого.

    Процедурно-ориентированный язык — язык программирования, позволяющий описывать алгоритм решения задачи как совокупности процедур. К процедурно-ориентированным языкам относятся Паскаль, Фортран и др

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

    Программа, написанная на процедурном языке, представляет собой последовательность команд, определяющих алгоритм решения задачи. Основная идея процедурного программирования — использование памяти для хранения данных. Основная команда- присвоение, с помощью которой определяется и меняется память компьютера. Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.

    Процедурные языки характеризуются следующими особенностями:

    • необходимостью явного управления памятью, в частности, описанием переменных;

    • малой пригодностью для символьных вычислений;

    • отсутствием строгой математической основы;

    • высокой эффективностью реализации па традиционных ЭВМ.

    Различают такие языки процедурного программирования:

    Язык Фортран создан в начале 50-х годов 20-го века для программирования научно-технических задач;

    Кобол – создан в конце 60-х годов 20-го века для решения задач обработки больших объемов данных, хранящихся на различных носителях данных;

    Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые введены понятия «блочная структура программы» и «динамическое распределение памяти»;

    В середине 60-х годов 20-го века был создан специализированный язык программирования для начинающих – BASIC. Характеризуется простотой освоения и наличием универсальных средств для решения научных, технических и экономических задач, а также задач, например, игровых.

    Все перечисленные выше языки были ориентированы на различные классы задач, но они в той или иной мере были привязаны к конкретной архитектуре ЭВМ.

    В 1963-1966гг был создан многоцелевой универсальный язык PL-1. Этот язык хорошо приспособлен для исследования и планирования вычислительных процессов, моделирования, решения логических задач, разработки систем математического обеспечения.

    Язык Паскаль (PASCAL) (1968-1971гг)- язык процедурного программирования наиболее популярный для ПК, который и в настоящее время успешно применяется.

    К языкам процедурного программирования можно отнести язык АДА (1979 г) Язык назван в честь первой программистки Ады Лавлейс- дочери Байрона. Его отличает модульность конструкций.

    Язык СИ (начало 70-х годов) также относится к языкам процедурного программирования. Первоначальный его вариант планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Одной из особенностей языка СИ является то, что различия между выражениями и операторами сглаживаются, что приближает его к функциональным языкам программирования. Кроме того, в языке СИ отсутствует понятие процедуры, а использование подпрограмм основано на понятии функции, которая может сочетать в себе возможности процедуры. С одной стороны, по набору управляющих конструкций и структур данных его можно отнести к языкам высокого уровня, а с другой – он имеет набор средств прямого обращения к функциональным узлам компьютера, а это означает, что его можно использовать как операционный язык.

    Pascal является одним из наиболее популярных среди прикладных программистов процедурным языком программирования, особенно для ПЭВМ.

    В основу языка Pascal положен подход от общей задачи к частным (более простым и меньшим по объему).

    К основным принципам, которыми обладает Паскаль, можно отнести:

    а) Структурное программирование, которое основано на использовании подпрограмм и независимых структур данных;

    б) Программирование «сверху-вниз», когда задача делится на простые, самостоятельно решаемые задачи. Затем выстраивается решение исходной задачи полностью сверху вниз.

    Pascal реализован на ЭВМ различных типов, но наиболее распространен и развит для ПЭВМ. В настоящее время широко используются такие версии этого языка для ПЭВМ, как Borland Pascal и TurboPascal.

    Язык Pascal содержит удобные средства для представления данных. Развитая система типов позволяет адекватно описывать данные, подлежащие обработке, и конструировать структуры данных произвольной сложности.

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

    Паскаль – компилятор, то есть, прежде чем начать исполнение программы, Паскаль полностью прочитывает исходный текст, написанный программистом, и составляет последовательность машинных кодов, выполняющую те действия, которые описал программист в тексте. Эта последовательность сохраняется в файл с расширением “.EXE” и является самостоятельным исполняемым файлом, который может быть запущен сам по себе.

    Правила языка Паскаль предусматривают единую для всех программ форму основной структуры:

    В начале программы пишется заголовок, состоящий из зарезервированного слова program и имени программы, которое придумывает программист,

    После заголовка программы идет раздел описаний, в котором программист описывает все имена, которые он сам придумал, и поясняет Паскалю, что эти имена означают.

    В разделе описаний указывается все, что Вы будете использовать в своей программе: константы, переменные, процедуры, функции и так далее.

    Константа — явное представление значения. При выполнении программы значение константы никогда не меняется.

    После описаний констант идет раздел описания переменных. Переменная — это реальный объект, который используется для хранения значения определенного, связанного с ним типа. Запоминание нового значения в переменной уничтожает старое значение, которое до сих пор хранилось в переменной. Таким образом, переменная может менять свое значение в процессе выполнения программы.

    Переменные отличаются от констант тем, что им можно присваивать новые значения при исполнении программы. Подраздел описания переменных начинается со служебного слова var. Следом идут описания переменных, каждое из которых начинается со списка имен переменных, разделяемых запятыми, затем идет символ «:», затем указывается тип этих переменных. Завершается каждое описание точкой с запятой. Тип данных характеризует множество значений, которые может принимать объект; множество операций, которые могут применяться к объекту; размер памяти, занимаемый объектом. В программе на Паскале можно использовать много типов переменных и создавать свои типы. В стандарте Паскаля определено 4 простых типа: integer— целый, real— вещественный, char — символьный и boolean — логический.

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

    Целочисленный тип определяет все целые числа в диапазоне от -32768 до +32767.
    Формат: : integer;

    Байтовый тип аналогичен целочисленному, но охватывает более узкий диапазон значений от 0 до 255. Описывается стандартным идентификатором byte.

    Вещественный тип данных включает все положительные числа от 1Е-38 до 1Е+38, соответствующие отрицательные числа и 0. Мантисса может содержать до 11 значащих цифр. Описываются стандартным идентификатором real.

    Логический (Булевский) тип данных описывается стандартным идентификатором boolean. Переменные и константы этого типа могут принимать одно из двух значений: True — истина и False — ложь.

    Символьный тип данных описывается стандартным идентификатором char. Константы и переменные этого типа могут принимать одно из значений кодовой таблицы ПЭВМ.

    1) Операторы ввода/вывода: read, readln, write, writeln.

    2) Оператор присваивания. Оператор присваивания (:=) предписывает вычислить выражение, заданное в его правой части, и присвоить результат вычисления переменной, идентификатор которой расположен слева от символа присваивания. Переменная и результат вычисления выражения должны иметь совместимые типы данных.

    3) Составной оператор или последовательность объявляет некоторую последовательность операторов в виде одного оператора. Это необходимо при использовании последовательностей операторов в других управляющих операторах.

    Формат составного оператора:

    Составной оператор воспринимается как единое целое и может находиться в любом месте программы, где в языке Паскаль допустимо использование простого оператора.

    4) Условный оператор

    Для задания ветвящихся алгоритмов в языке Паскаль используется условный оператор.

    Условный оператор предписывает выбор направления выполнения алгоритма в зависимости от некоторых условий. Условный оператор может иметь две формы: полную и неполную.

    5) Оператор выбора Case является обобщением оператора if и позволяет сделать выбор из произвольного количества возможных вариантов. Он состоит из выражения, называемого селектором, и списка операторов, каждому из которых предшествует список констант выбора. Как и в операторе if, в операторе Case может присутствовать часть else (“иначе”), имеющая тот же смысл.

    Формат оператора выбора:

    6) Операторы цикла

    Цикл предписывает многократное выполнение одной и той же последовательности действий.

    Циклы подразделяются на циклы с параметром, с предусловием и с постусловием.

    Цикл с параметром предписывает многократное выполнение одной и той же последовательности действий при значениях параметра в интервале от начального до конечного значений с заданным шагом.

    Формат оператора цикла с параметром:

    В некоторых случаях бывает удобно, чтобы принимал последовательные, но не возрастающие, а убывающие значения. В этом случае надо использовать оператор цикла с параметром следующего вида:

    Цикл с предусловием предписывает многократное выполнение одной и той же последовательности действий с проверкой истинности условия перед телом цикла.

    Формат оператора цикла с предусловием:

    Цикл с постусловием предписывает многократное выполнение одной и той же последовательности действий с проверкой истинности условия после тела цикла.

    Формат оператора цикла с постусловием:

    При выполнении этого оператора цикла последовательность операторов, находящихся между символами repeat и until, выполняется один или более раз. Этот процесс завершается, когда после очередного выполнения заданной последовательности операторов логическое выражение, записанное в , впервые принимает значение True.

    Функция – это подпрограмма, вызываемая в выражениях в качестве операнда и вычисляющая значение данных простого типа. Как и процедура, функция может содержать параметры, осуществляющие ее взаимодействие с основной программой.

    Формат объявления функции:

    end;
    где тип результата – тип данных возвращаемого результата.

    Остальные элементы объявления функции имеют тот же смысл и формат, как и в процедуре.

    Результат, возвращаемый функцией в основную программу, должен быть присвоен имени функции.

    Формат вызова функции: [(фактические параметры)]

    В среде Турбо-Паскаль вы можете иметь любое количество открытых окон, но в любой момент времени может быть активным только одно окно. Активное окно — это окно, с которым вы работаете в настоящий момент. Любая команда или вводимый текст относятся только к активному окну.

    Окна в среде Турбо-Паскаль имеют следующие компоненты:

    1. Заголовок окна.

    2. Закрывающая кнопка.

    3. Полосы скроллинга (прокрутки).

    4. Уголок для изменения размеров окна.

    5. Кнопка масштабирования.

    Кроме того, окно редактора всегда показывает номера текущих строки и столбца в нижнем левом углу. Если вы изменили свой файл, то слева от номеров строки и столбца появится знак звездочки (*).

    Процедурное программирование

    • Процеду́рное программи́рование — программирование на императивном языке, при котором последовательно выполняемые операторы можно собрать в подпрограммы, то есть более крупные целостные единицы кода, с помощью механизмов самого языка.

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

    Императи́вное программи́рование — это парадигма программирования (стиль написания исходного кода компьютерной программы), для которой характерно следующее.

    Объектами первого класса (англ. first-class object, first-class entity, first-class citizen) в контексте конкретного языка программирования называются элементы, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной.

    Динами́ческая типиза́ция — приём, широко используемый в языках программирования и языках спецификации, при котором переменная связывается с типом в момент присваивания значения, а не в момент объявления переменной. Таким образом, в различных участках программы одна и та же переменная может принимать значения разных типов. Примеры языков с динамической типизацией — Smalltalk, Python, Objective-C, Ruby, PHP, Perl, JavaScript, Lisp, xBase, Erlang, Visual Basic.

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

    Обобщённое программирование (англ. generic programming) — парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. В том или ином виде поддерживается разными языками программирования. Возможности обобщённого программирования впервые появились в виде дженериков (обобщённых функций) в 1970-х годах в языках Клу и Ада, затем в виде параметрического полиморфизма в ML и его потомках, а затем во многих объектно-ориентированных.

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

    Дальнейший рост сложности разрабатываемого ПО потребовал структурирования данных и, как следствие, в языках появилась возможность определения пользовательских типов данных. Кроме того, анализ причин возникновения большинства ошибок технологии процедурного программирования позволил сформулировать новый подход к программированию, который был назван «структурным».

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

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

    Ме́тод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту.

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

    Абстракция данных — популярная и в общем неверно определяемая техника программирования. Фундаментальная идея состоит в разделении несущественных деталей реализации подпрограммы и характеристик, существенных для корректного её использования. Такое разделение может быть выражено через специальный «интерфейс», сосредотачивающий описание всех возможных применений программы.

    Стати́ческая типиза́ция — приём, широко используемый в языках программирования, при котором переменная, параметр подпрограммы, возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже (переменная или параметр будут принимать, а функция — возвращать значения только этого типа). Примеры статически типизированных языков — Ада, С++, C#, D, Java, ML, Паскаль, Nim.

    Ленивые вычисления (англ. lazy evaluation, также отложенные вычисления) — применяемая в некоторых языках программирования стратегия вычисления, согласно которой вычисления следует откладывать до тех пор, пока не понадобится их результат. Ленивые вычисления относятся к нестрогим вычислениям. Усовершенствованная модель ленивых вычислений — оптимистичные вычисления — переходит в разряд недетерминированных стратегий вычисления.

    Сопрограммы (англ. coroutines) — методика связи программных модулей друг с другом по принципу кооперативной многозадачности: модуль приостанавливается в определённой точке, сохраняя полное состояние (включая стек вызовов и счётчик команд), и передаёт управление другому. Тот, в свою очередь, выполняет задачу и передаёт управление обратно, сохраняя свои стек и счётчик.

    Вывод типов (англ. type inference) — в программировании возможность компилятора самому логически вывести тип значения у выражения. Впервые механизм вывода типов был представлен в языке ML, где компилятор всегда выводит наиболее общий полиморфный тип для всякого выражения. Это не только сокращает размер исходного кода и повышает его лаконичность, но и нередко повышает повторное использование кода.

    Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом. Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.

    Примитивный (встроенный, базовый) тип — тип данных, предоставляемый языком программирования как базовая встроенная единица языка.

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

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

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

    Абстра́ктный тип да́нных (АТД) — это математическая модель для типов данных, где тип данных определяется поведением (семантикой) с точки зрения пользователя данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций.

    Инкапсуляция (англ. encapsulation, от лат. in capsula) — в информатике упаковка данных и функций в единый компонент.

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

    При́месь (англ. mix in) — элемент языка программирования (обычно класс или модуль), реализующий какое-либо чётко выделенное поведение. Используется для уточнения поведения других классов, не предназначен для порождения самостоятельно используемых объектов.

    Мона́да — это абстракция линейной цепочки связанных вычислений. Монады позволяют организовывать последовательные вычисления.

    Объектно-ориентированный язык программирования (ОО-язык) — язык, построенный на принципах объектно-ориентированного программирования.

    Мно́жественное насле́дование — свойство, поддерживаемое частью объектно-ориентированных языков программирования, когда класс может иметь более одного суперкласса (непосредственного класса-родителя), интерфейсы поддерживают множественное наследование во многих языках программирования. Эта концепция является расширением «простого (или одиночного) наследования» (англ. single inheritance), при котором класс может наследоваться только от одного суперкласса.

    Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, байт-код, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).

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

    Блок (также говорят блок кода, блок команд, блок инструкций) в программировании — это логически сгруппированный набор идущих подряд инструкций в исходном коде программы, является основой парадигмы структурного программирования.

    Свойство — способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой.

    По одной из классификаций, языки программирования неформально делятся на сильно и слабо типизированные (англ. strongly and weakly typed), то есть обладающие сильной или слабой системой типов. Эти термины не являются однозначно трактуемыми, и чаще всего используются для указания на достоинства и недостатки конкретного языка. Существуют более конкретные понятия, которые и приводят к называнию тех или иных систем типов «сильными» или «слабыми».

    Функциона́льное программи́рование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).

    Фу́нкция вы́сшего поря́дка — в программировании функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата. Основная идея состоит в том, что функции имеют тот же статус, что и другие объекты данных. Использование функций высшего порядка приводит к абстрактным и компактным программам, принимая во внимание сложность производимых ими вычислений.

    Аспе́ктно-ориенти́рованное программи́рование (АОП) — парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули.

    Компонентно-ориентированное программирование (англ. component-oriented programming, COP) — парадигма программирования, существенным образом опирающаяся на понятие компонента — независимого модуля исходного кода программы, предназначенного для повторного использования и развёртывания и реализующегося в виде множества языковых конструкций (например, «классов» в объектно-ориентированных языках программирования), объединённых по общему признаку и организованных в соответствии с определёнными правилами.

    Предметно-ориентированный язык (англ. domain-specific language, DSL — «язык, специфический для предметной области») — язык программирования, специализированный для конкретной области применения (в противоположность языку общего назначения, применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Построение такого языка и/или его структура данных отражают специфику решаемых с его помощью задач. Является ключевым понятием языково-ориентированного программирования.

    Запись — агрегатный тип данных, инкапсулирующий без сокрытия набор значений различных типов.

    Логи́ческое программи́рование — парадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.

    Из-за путаницы с терминологией словом «оператор» в программировании нередко обозначают операцию (англ. operator), см. Операция (программирование).Инстру́кция или опера́тор (англ. statement) — наименьшая автономная часть языка программирования; команда или набор команд. Программа обычно представляет собой последовательность инструкций.

    Сема́нтика в программировании — дисциплина, изучающая формализации значений конструкций языков программирования посредством построения их формальных математических моделей. В качестве инструментов построения таких моделей могут использоваться различные средства, например, математическая логика, λ-исчисление, теория множеств, теория категорий, теория моделей, универсальная алгебра. Формализация семантики языка программирования может использоваться как для описания языка, определения свойств языка.

    Клу (англ. Clu, CLU) — объектно-ориентированный язык программирования, одним из первых реализовавший концепцию абстрактных типов данных и парадигму обобщённого программирования. Создан группой учёных Массачусетского технологического института под руководством Барбары Лисков в 1974 году, широкого применения в практике не нашёл, однако многие его элементы использованы при создании таких языков, как Ада, C++, Java, Sather, Python, C#.

    Полиморфизм в языках программирования и теории типов — способность функции обрабатывать данные разных типов.

    Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своей области видимости.

    В информатике типобезопасность (англ. type safety) языка программирования означает безопасность (или надёжность) его системы типов.

    Зарезерви́рованное сло́во (или ключево́е сло́во) — в языках программирования слово, имеющее специальное значение. Идентификаторы с такими именами запрещены.

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

    Си́мула-67 (Simula 67) — язык программирования общего назначения, разработанный в конце 60-х сотрудниками Норвежского Вычислительного Центра (Осло) Кристеном Нюгором и Оле-Йоханом Далем для моделирования сложных систем.

    Побо́чные эффе́кты (англ. side effects) — любые действия работающей программы, изменяющие среду выполнения (англ. execution environment). Например, к побочным эффектам относятся.

    Каламбур типизации является прямым нарушением типобезопасности. Традиционно возможность построить каламбур типизации связывается со слабой типизацией, но и некоторые сильно типизированные языки или их реализации предоставляют такие возможности (как правило, используя в связанных с ними идентификаторах слова unsafe или unchecked). Сторонники типобезопасности утверждают, что «необходимость» каламбуров типизации является мифом.

    Анонимная функция в программировании — особый вид функций, которые объявляются в месте использования и не получают уникального идентификатора для доступа к ним. Поддерживаются во многих языках программирования.

    Сопоставление с образцом (англ. Pattern matching) — метод анализа и обработки структур данных в языках программирования, основанный на выполнении определённых инструкций в зависимости от совпадения исследуемого значения с тем или иным образцом, в качестве которого может использоваться константа, предикат, тип данных или иная поддерживаемая языком конструкция.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *