Основная особенность процедурных языков программирования заключается в том что программа

Обновлено: 03.07.2024

Тема 1.2. Стили программирования

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

процедурный,
функциональный,
логический
объектно-ориентированный.

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

Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием «машина Тьюринга».

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

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

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

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

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

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

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

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

Двоичный язык является непосредственно машинным языком. В настоящее время такие языки программистами практически не применяются.

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

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

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

Языки Ассемблера и Макроассемблера применяются системными программистами-профессионалами с целью использования всех возможностей оборудования ЭВМ и получения эффективной по времени выполнения и по требуемому объему памяти программы. На этих языках обычно разрабатываются относительно небольшие программы, входящие в состав системного программного обеспечения: драйверы, утилиты и другие.

Язык программирования С (Си) первоначально был разработан для реализации операционной системы UNIX в начале 70-х годов. В последующем приобрел высокую популярность среди системных и прикладных программистов. В настоящее время этот язык реализован па большинстве ЭВМ.

В С сочетаются достоинства современных высокоуровневых языков в части управляющих конструкций и структур данных с возможностями доступа к аппаратным средствам ЭВМ на уровне, который обычно ассоциируется с языком низкого уровня типа языка Ассемблера. Язык С имеет синтаксис, обеспечивающий краткость программы, а компиляторы способны генерировать эффективный объектный код.

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

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

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

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

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

Pascal является одним из наиболее популярных среди прикладных программистов процедурным языком программирования, особенно для ПЭВМ. Разработанный в 1970 году швейцарским специалистом в области вычислительной техники профессором Н. Виртом, язык назван в честь французского математика и по замыслу автора предназначался для обучения программированию. Однако язык получился настолько удачным, что стал одним из основных инструментов прикладных и системных программистов при решении задач вычислительного и информационно-логического характера. В 1979 году был подготовлен проект описания языка — Британский стандарт языка программирования PascalBS 6192, который стал также и международным стандартом ISO 7185.

В языке Pascal реализован ряд концепций, рассматриваемых как основа «дисциплинированного» программирования и заимствованных впоследствии разработчиками многих языков. Одним из существенных признаков языка Pascal является последовательная и достаточно полная реализация концепции структурного программирования. Причем это осуществляется не только путем упорядочивания связей между фрагментами программы по управлению, но и за счет структуризации данных. Кроме того, в языке реализована концепция определения новых типов данных на основе уже имеющихся. Этот язык, в отличие от языка С, является строго типизированным. Pascal характеризуется:

стройностью, простотой и краткостью;

строгостью, способствующей написанию эффективных и надежных программ;

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

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

Функциональное программирование

Сущность функционального (аппликативного) программирования определена А. П. Ершовым как «. способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы па части является введение имени для функции, а единственным правилом композиции — оператор суперпозиции функции. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передачи управления».

Роль основной конструкции в функциональных языках играет выражение. К выражениям относятся скалярные константы, структурированные объекты, функции, тела функций и вызовы функций. Функция трактуется как однозначное отображение из Х^ в X, где Х — множество выражений.

Аппликативный язык программирования включает следующие элементы:

классы констант, которыми могут манипулировать функции;

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

правила построения новых функций из базовых;

правила формирования выражений на основе вызовов функций.

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

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

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

Логическое программирование

Новую область — логическое, или реляционное программирование, — открыло появление языка PROLOG ( PROgramminginLOGic — программирование в терминах логики). Этот язык был создан французским ученым А. Кольмероэ в 1973 году. В настоящее время известны и другие языки, однако наиболее развитым и распространенным языком логического программирования является именно Пролог. Так, имеется свыше 15 различных его реализации на ПЭВМ. Языки логического программирования, в особенности Пролог, широко используются в системах искусственного интеллекта, рассматриваемых в данном учебном пособии.

Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами (в терминах условий или ограничений) и цели (запроса). Процесс выполнения программы трактуется как процесс общезначимости логической формулы, построенной из программы по правилам, установленным семантикой используемого языка. Результат вычисления является побочным продуктом этого процесса. В реляционном программировании нужно только специфицировать факты, на которых алгоритм основывается, а не определять последовательность шагов, которые требуется выполнить. Это свидетельствует о декларативности языка логического программирования. Она метко выражена в формуле Р. Ковальского: «алгоритм = логика + управление». Языки логического программирования характеризуются:

строгой ориентацией на символьные вычисления;

возможностью инверсных вычислений, то есть переменные в процедурах не делятся на входные и выходные;

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

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

Обьектно-ориентированое программирование

Прототипом объектно-ориентированного программирования послужил ряд средств, входящих в состав языка SIMULA -67. Но в самостоятельный стиль оно оформилось с появлением языка SMALLTALK , разработанного А. Кеем в 1972 году и первоначально предназначенного для реализации функций машинной графики.

В основе объектно-ориентированного стиля программирования лежит понятие объекта, а суть его выражается формулой: «объект = данные + процедуры». Каждый объект интегрирует в себе некоторую структуру данных и доступные только ему процедуры обработки этих данных, называемые методами. Объединение данных и процедур в одном объекте называется инкапсуляцией и присуще объектно-ориентированному программированию.

Для описания объектов служат классы. Класс определяет свойства и методы объекта, принадлежащего этому классу. Соответственно, любой объект можно определить как экземпляр класса.

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

К наиболее современным объектно-ориентированным языкам программирования относятся C++ и Java.

Язык C++ был разработан в начале 80-х годов Б. Страуструпом, сотрудником лаборатории Bell корпорации AT&T. Им была создана компактная компилирующая система, в которой за основу был взят язык С, дополненный элементами языков BCPL,Simula-67 и Algol-68. К июлю 1983 года появился язык С с классами, а чуть позднее — C++. К 1990 году была выпущена третья версия языка C++, принятая комитетом ANSI в качестве исходного материала для его стандартизации.

В 1990 году сотрудник корпорации Sun Д. Гослинг на основе расширения C++ разработал объектно-ориентированный язык Oak, основным достоинством которого было обеспечение сетевого взаимодействия различных по типу устройств. Новая интегрируемая в Internet версия языка, получила название Java. Первый броузер, который поддерживал язык Java, разработан программистом корпорации Sun П. Нафтоном и получил название HotJava. С января 1995 года Java получает распространение в Internet.

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

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

С точки зрения возможностей собственно объектно-ориентированных средств язык Java обладает рядом преимуществ перед языком C++. Так, язык Java демонстрирует более гибкую и мощную систему инкапсуляции информации. Механизм наследования, реализованный в Java, обязывает к более строгому подходу к программированию, что улучшает надежность и понимаемость кода. Язык же C++ обладает сложной, неадекватной и трудной для понимания системой наследования. Возможности динамического связывания объектов одинаково хорошо представлены в обоих языках, однако, синтаксическая избыточность C++ заставляет и здесь отдать предпочтение языку Java.

В силу своей конструктивности идеи объектно-ориентированного программирования используются во многих универсальных процедурных языках. Так, например, в состав интегрированной системы программирования на языке PASCAL (корпорации BorlandInternational) версии 5.5 входит специальная библиотека объектно-ориентированного программирования TurboVision.

В последнее время многие программы, в особенности объектно-ориентированные, реализуются как системы визуального программирования. Отличительной особенностью таких систем является мощная среда разработки программ из готовых «строительных блоков», позволяющая создать интерфейсную часть программного продукта в диалоговом режиме, практически без кодирования программных операций. К числу объектно-ориентированных систем визуального программирования относятся: VisualBasic, Delphi, C++ Builder и Visual C++.

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

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

Процедурные языки программирования

    (язык общего назначения) (версии начиная с Quick Basic до появления Visual Basic)

См. также

Ссылки

Wikimedia Foundation . 2010 .

Полезное

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

процедурный язык (программирования) — Широко известными языками этого типа являются Ada, Pascal, PL/1 и др. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN procedure oriented language … Справочник технического переводчика

Язык программирования Си — Си Семантика: процедурный Тип исполнения: компилируемый Появился в: 1969 73 г. Автор(ы): Кен Томпсон, Денис Ритчи Типизация данных: статическая Основные реализации … Википедия

Язык программирования C — Си Семантика: процедурный Тип исполнения: компилируемый Появился в: 1969 73 г. Автор(ы): Кен Томпсон, Денис Ритчи Типизация данных: статическая Основные реализации … Википедия

процедурный язык — Язык программирования, в котором действия над данными выражаются в терминах последовательностей команд. [ГОСТ 19781 90] Тематики обеспеч. систем обраб. информ. программное EN procedural language … Справочник технического переводчика

Язык программирования Рубин — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия

Процедурный язык — 36. Процедурный язык Procedural language Язык программирования, в котором действия над данными выражаются в терминах последовательностей команд Источник: ГОСТ 19781 90: Обеспечение систем обработки информации программное. Термины и определения … Словарь-справочник терминов нормативно-технической документации

Си (язык программирования) — У этого термина существуют и другие значения, см. Си. Запрос «Язык программирования Си» перенаправляется сюда; см. также другие значения. Си Класс языка: процедурный Тип исполнения: компилируемый Появился в: 1969 1973 Автор( … Википедия

Что такое процедурное программирование?

Ключевые особенности процедурного программирования

Ключевые особенности процедурного программирования приведены ниже:

Преимущества и недостатки процедурного программирования

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

  • Процедурное программирование отлично подходит для программирования общего назначения
  • Закодированная простота наряду с простотой реализации компиляторов и интерпретаторов
  • Большое разнообразие книг и онлайн-материалов курсов по проверенным алгоритмам, облегчающих обучение в процессе
  • Исходный код переносим, ​​поэтому его можно использовать и для другого процессора
  • Код может быть повторно использован в разных частях программы, без необходимости копировать его
  • Благодаря методике процедурного программирования требования к памяти также сокращаются
  • Ход программы можно легко отследить

Недостатки

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

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

Что такое объектно-ориентированное программирование (ООП)

  • Благодаря модульности и инкапсуляции, ООП предлагает простоту управления
  • ООП имитирует реальный мир, облегчая понимание
  • Поскольку объекты являются цельными внутри себя, они могут использоваться в других программах

Недостатки

  • Объектно-ориентированные программы, как правило, работают медленнее и занимают много памяти
  • Чрезмерная обобщение
  • Программы, созданные с использованием этой парадигмы, могут занять больше времени

Процедурное программирование против объектно-ориентированного программирования: сравнение между собой

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

Процедурное программированиеОбъектно-ориентированного программирования
Использует неизменные данныеИспользует изменяемые данные
Следует декларативной модели программированияСледует модели императивного программирования
Расширяет поддержку параллельного программированияНе подходит для параллельного программирования
Порядок выполнения операторов не является основным направлениемПорядок выполнения операторов очень важен
Управление потоком осуществляется с помощью вызовов функцийУправление потоком осуществляется через условные операторы и циклы
Использует концепцию рекурсии для итерации коллективных данныхИспользует концепцию цикла для итерации сбора данных
Нет таких побочных эффектов его функцийМетод может иметь определенные побочные эффекты
В процедурном программировании основное внимание уделяется тому, что вы делаете.Основное внимание в объектно-ориентированном программировании уделяется теме «Как вы это делаете»

  • Функциональное программирование предлагает защищенную среду
  • В то время как многие другие языки требуют значительного объема информации для правильного выполнения операций, программирование функций устраняет необходимость в большом количестве кода, необходимого для определения состояний.
  • Поскольку эта парадигма зависит только от входных аргументов, побочных эффектов нет

Недостатки

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

Вывод

Процедурные языки программирования - языки программирования, код которых можно разделить на процедуры.
Программирование – это очень объемная сфера знаний, изучить которую целиком не сможет ни один человек на свете. Сейчас существует более 120 различных языков программирования, каждый из которых в той или иной мере используется для решения своих специфических задач. Все языки делятся на разные типы. Очень видное место в свое время занимали так называемые процедурные языки программирования. Некоторые их них активно применяются даже сейчас.

Процедурные языки программирования

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

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

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

Некоторые процедурные языки

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

Машинные коды и ассемблер

Традиционно к процедурным языкам программирования относят машинные инструкции, а также появившиеся несколько позже языки ассемблера. Машинный код представлял собой систему последовательных команд, написанных под конкретно взятую ЭВМ, которая выполняется процессором устройства либо его микропрограммами – уже написанными последовательностями действий процессора. В основе таких инструкций лежит работа двоичного кода, который выражается в последовательности нулей и единиц. Нуль означает для ЭВМ отсутствие электрического сигнала, а единица – подачу единичного импульса. Здесь четко соблюдается подчинение процедурному программированию – каждая последующая команда в программе может быть выполнена только по реализации предыдущий. Если в одной из команд произошла ошибка, то программа просто прекращала свою работу и инженеру нужно было искать ошибку в коде.

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

Fortran

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

Модификации языка последних годов превратили его в мощный инструмент, способный работать и с объектно-ориентированным программированием, и с обобщенным и модульным программированием. Также вместе с Фортран в 1950-х появились и другие процедурные языки, которые в целом были довольно схожи. Сюда относят в первую очередь Алгол, Ada, всем известный Basic.

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

Паскаль

Известный практически каждому студенту Паскаль также относиться к процедурным языкам. Если в коде программы здесь будет какая-либо ошибка, то она не станет запускаться. Здесь можно использовать подпрограммы, независимые структуры данных. Решаемая с помощью Паскаль задача как бы разделяется на более простые задания (что типично для процедурных языков). Когда все простые решения получены, то они соединяются в общее решение исходного задания.

Некоторые особенности процедурного программирования

Основными понятиями из ПП можно назвать следующее:

Модуль. Часть программы, которая может храниться в отдельном файле. Он выполняет часть функций, связанных с какими-то определенными переменными, объектами или константами;

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

В целом, процедурные языки – это интересная часть истории программирования. Они и сейчас довольно активно используются как в образовательных, так и прикладных целях. Тот же Фортран имеет редакцию от 2010 года.

Читайте также: