Kievuz

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

Содержание

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

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

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

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

Некоторые их них активно применяются даже сейчас.

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

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

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

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

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

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

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

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

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

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

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

Fortran

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

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

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

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

С

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

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

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

Паскаль

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

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

Когда все простые решения получены, то они соединяются в общее решение исходного задания.

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

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

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

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

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

(4 5,00 из 5)

Источник: https://bunkerbook.ru/articls/protsedurnye-yazyki-programmirovaniya/

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

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

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

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

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

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

Одним из первых процедурных языков программированиявысокого уровня стал Фортран(FORTRAN ? FORmula TRANslator, транслятор формул), созданный в начале 50-х гг. в США фирмой IBM. Первая публикация о нем появилась в 1954 г. Основное назначение языка ? программирование научно-технических задач.

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

Основные операторы Фортрана ? ввод, вывод, присваивание, условный и безусловный переход, цикл, вызов подпрограмм. Долгие годы он был одним из самых распространенных языков в мире. За это время накоплена огромная библиотека программ, написанных на Фортране. И сейчас ведутся работы над очередным стандартом Фортрана. В 2000 г.

была реализована версия Фортран F2k, имеется стандартная версия HPF для параллельных суперкомпьютеров. Многие средства Фортрана использованы в языках PL-1 и Бейсик.

Кобол(COBOL ? Common Business Oriented Language, общепринятый деловой язык) — язык программирования, ориентированный на решение задач обработки данных. Широко используется для решения учетно-экономических и управленческих задач. Разработан в США в 1958-1960 гг.

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

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

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

Алгол (ALGOrithmic Language, алгоритмический язык) разработан группой зарубежных специалистов в 1960 г., явился результатом международного сотрудничества конца 50-х гг. (Алгол-60). Алгол предназначался для записи алгоритмов, построенных в виде последовательности процедур, применяемых при решении поставленных задач.

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

Внутри блока в Алголе можно вводить локальные обозначения, которые не зависят от остальной части программы. Несмотря на свое интернациональное происхождение, Алгол-60 получил меньшее распространение, чем Фортран. Например, не на всех зарубежных ЭВМ имелись трансляторы с Алгола-60. В 1968 г.

в результате дальнейшего развития и усовершенствования Алгола-60 была создана версия Алгол-68. Это многоцелевой универсальный расширенный язык программирования.

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

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

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

Новый язык назвали универсальным символическим кодом для начинающих (BASIC ? Beginners All-purpose Symbolic Instruction Code) или сокращенно Бейсик. 1964 г. считают годом рождения этого языка. Он получил самое широкое распространение при работена персональных компьютерах в режиме интерактивного диалога.

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

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

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

В начале 60-х гг. каждый из существующих языков программирования был ориентирован на разные классы задач, но в той или иной мере привязан к конкретной архитектуре ЭВМ. Были предприняты попытки преодолеть этот недостаток путем создания универсального языка программирования ПЛ/1(PL/1 ? Programming Language One).

Это первый многоцелевой универсальный язык, разработанный в США фирмой IВМ в 1963—1966 гг.

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

При разработке PL/1 были широко использованы основные понятия и средства языков Фортран, Алгол-60, Кобол. PL/1 — богатый и гибкий язык, он дает возможность производить вставки, исправлять текст программы в процессе ее отладки. Язык получил широкое распространение, трансляторы с него имеются для многих типов компьютеров. Компания IВМ и сегодня продолжает поддерживать этот язык.

Паскаль(Разса1)является одним из наиболее популярных процедурных языков программирования, особенно для персональных компьютеров. Созданный как учебный язык программирования в 1968—1971 гг.

Никлаусом Виртом в Высшей технической школе (ЕТН) в Цюрихе (Швейцария), он был назван в честь французского математика и философа Блеза Паскаля (1623-1662). Целью работы Н.

Вирта было создание языка, который

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

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

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

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

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

Период с конца 60-х до начала 80-х гг. характеризуется бурным ростом числа различных языков программирования, сопровождавшим, как это ни парадоксально, кризис программного обеспечения. Этот кризис особенно остро переживало военное ведомство США. В январе 1975 г.

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

был объявлен победитель — группа ученых во главе с Жаном Ихбиа. Победивший язык назвали АДА, в честь Ады Лавлейс. Она в юности была увлечена идеями Чарльза Бэббиджа и помогала ему составлять описание машины, а в начале 40-х гг. XIX в. разработала первую в мире программу для вычислительной машины. Язык АДА — прямой наследник Паскаля.

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

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

Язык программирования Си(С)был разработан в лаборатории Bell для реализации операционной системы UNIX в начале 70-х гг. и не рассматривался как массовый. Он планировался для замены Ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора.

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

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

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

Язык Си приобрел большую популярность среди системных и прикладных программистов. В настоящее время этот язык реализован для большинства компьютерных платформ.

Статьи к прочтению:

  • Процесс обмена информацией
  • Процессоры и другие микросхемы

:

Источник: http://csaa.ru/procedurnoe-programmirovanie/

Процедурное против объектно-ориентированного?

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

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

Стиль решения задачи зависит от того, на сколько сложен будет алгоритм её решения.

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

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

Решение задачи в объектно-ориентированном стиле, применяя объектно-ориентированное программирование (ООП), оказывается ближе к реальности. Сложные задачи — это стихия ООП.

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

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

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

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

Пока вы ещё не наворотили много трудно-читаемого и понимаемого кода, запишите себе на видном месте два принципа. Без них может получится “чёпопало” в ваших программах.
Запишите себе — DRY и KISS.

DRY (Don’t Repeat Yourself) — Не Повторяйся.
KISS (Keep It Simple, Stupid) — Не Усложняй, Тупица.

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

Второй принцип — не усложняй, тупица! Звучит грубо, но довольно самокритично, так как это произносится всё-таки внутренним голосом. Действительно, зачем всё усложнять? Код должен решать задачу и всё, он не должен показывать ваши амбиции.

Усложнять глупо, вы вообще учитываете что вы сами потом к этому коду вернётесь, чтобы найти в нём закравшуюся ошибку? Для написанного вами класса это означает, что каждый метод решает элементарную задачу.

Если это не так, код надо реорганизовать и превратить один метод в два или больше.

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

Кто-то может спросить — а что собственно происходит? Какие такие паттерны? Обычные! Можно сказать, это образцы решения задач. Но не конкретные примеры, а схемы, которые отражают взаимоотношения внутри приложения, между классами и объектами.

Примером такого паттерна можно привести широко использующийся при разработке сайтов паттерн MVC.

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

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

Проведём мысленный эксперимент

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

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

На каждой должна быть форма администратора для ввода данных и таблица для отчёта о квартирах и коттеджах.

Для квартир, будет показываться следующее:

  • Площадь
  • Количество комнат
  • Тип дома
  • Цена
  • Этаж
  • Наличие балкона

Для коттеджей практически тоже самое:

  • Площадь
  • Количество комнат
  • Тип дома
  • Цена
  • Количество этажей
  • Отопление
  • Приусадебный участок

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

  • Площадь
  • Количество комнат
  • Тип дома
  • Цена

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

Далее мы создадим еще два класса: Коттедж и Квартира, оба будут наследовать все характеристики и методы класса Недвижимость и расширять его уникальными уже для себя свойствами и методами.

Класс Квартира, будет включать:

Кроме этого, нужны будут методы для доступа к ним и методы для сохранения в базе данных.

Для класса Коттедж, будут выделены характеристики:

  • Количество этажей
  • Отопление
  • Приусадебный участок

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

Сценарий 1

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

  • Высота потолков
  • Устройство пола
  • Электроснабжение

ПП: Для нового объекта учёта, полностью с “нуля” создаётся всё новое и функции и форма.
ООП: Мы просто создаём новый класс Склад, наследуя всё необходимое от класса Недвижимость. В классе Склад, нам нужно будет только создать новые характеристики и методы для обработки новых данных.

Сценарий 2

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

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

ООП: Улыбаясь, добавляем код отправки смс только в классе Недвижимость. Остальное, за нас делает принцип наследования.

Сценарий 3

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

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

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

Берём класс Квартира и наследуем от него классы Новостройка и Вторичка. Добавляем в них те даные, что сказал начальник, и методы для их обработки.

Сценарий 4

Обнаружился баг в передачи смс с ценой, странным образом вместо шести нулей на конце, остаётся только один.Процедурное: Ааааааа! Всё успокоились. Идём и исправляем код относящийся к каждому объекту недвижимости.

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

Заключение

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

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

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

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

  • Модуль — это кусок программы, чаще всего занимающий целый файл, и представляющий собой набор программных объектов (тип данных, функция, конструкция, переменная, константа), относящихся к решению определённого круга задач. Например, существуют модули, работающие с графическими возможностями компьютера, другие занимаются отправкой почты и т.д.
  • Тип данных — это способ описания множества данных похожих друг на друга по своей структуре. Например, если вы хотите описать множество всех целых чисел со знаком, которые можно хранить, выдавая каждому по четыре байта, то для этого есть тип данных int.
  • Функция — законченный кусок программы (которому дано имя), решающий определённую подзадачу в вашей программе. Существуют встроенные функции, кроме них создаются новые для решения задачи. Встроенные функции часто связаны с элементарным вводом и выводом информации, преобразованием данных и т.д.
  • Конструкция — это специальная инструкция, изменяющая поток выполнения программы. Например: ветвления и циклы.
  • Переменная — реально существующий в программе представитель некоторого типа данных. Например: переменная, хранящая целое число, относится к типу int.
  • Константа — тоже самое, что и переменная, вот только значение в такой переменной не меняется.

Всё, что вам нужно знать из ООП

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

  • Класс — это прототип для создания похожих объектов, определяющий что будет в них храниться и какую функциональную нагрузку они будут нести. Данные и функции формулируются в понятиях, используемых для решения задачи. Обычно он создаётся в соответствии с некоторым паттерном, и сосуществуя в системе с другими классами должен находится с ними в слабой связи. Экземпляр класса иногда называют коротко — объект.
  • Данные — это полезная информация, характеризующая конкретного представителя данного класса, например: его цвет, размеры, форму и т.д. Их хранение осуществляется в переменных членах класса.
  • Методы — определяют функциональные возможности класса, а также выполняют служебную роль для данных класса. Реализуются в виде функций членов класса.
  • Параметры — специальные переменные, от которых зависит результат работы методов класса. Параметры появляются тогда, когда их данные нельзя передать через переменные члены класса. Например, в специальных методах, которые называются сеттеры (от слова “set” — установка), без параметров не обойтись, собственно именно через них данные попадают в экземпляр класса. Также данные могут попасть в объект через специальный метод конструктор — через его параметры.
  • Экземпляр — это конкретный представитель класса объектов, создающийся во время работы программы, с помощью конструктора (см. выше). Каждый экземпляр некоторого класса обладает одинаковым набором характеристик и поведением (набором методов). Отличием будет являться только разное значение этих характеристик.
  • Наследование — один из замечательных принципов ООП. Он описывает механизм выстраивания иерархии классов, позволяющий из одного класса создавать другой класс. Если бы его не было, представляете каким бы толстым оказался класс, в котором мы бы попытались описать множество всех компьютерных комплектующих? В результате, каждый экземпляр такого класса  тащил бы за собой ненужный шлейф из характеристик, которые принадлежат другим железкам. Например, у процессора болталось бы без надобности поле, хранящее разрешение монитора по горизонтали и вертикали. Но, у нас-таки есть принцип наследования! Мы можем создать нечто абстрактное — компьютерную железяку, которая обладает общими характеристиками и поведением всех железяк. И на основе её создать множество классов, которые уже будут содержать более специфические характеристики и поведение. Мы можем продолжать плодить классы, пока у нас не получится специальный класс, который будет описывать центральный процессор и не содержать ничего лишнего. Однако, учтите, что бы вы не сделали с родительским классом, это отразится на всех его потомках в любом “колене”.
  • Полиморфизм — ооо, это ооочень полезный принцип. Его сразу можно и не заметить, но когда вы начнёте использовать интерфейсы, вот тогдааа. Он описывает возможность создавать функции с одинаковым именем, но разным набором инструкций.
  • Инкапсуляция — вот с этим намного сложнее. Просто не совсем ясно, зачем называть то, что и так очевидно. Этот принцип говорит, что класс — это единое целое, включающее и данные и методы, которые могут обладать разным уровнем доступа из внешних ресурсов. Какие-то элементы класса доступны только внутри самого класса, до каких-то можно добраться где угодно. Главное — это “всё внутри”.

Источник: http://artanovy.com/2011/03/procedurnoe-protiv-obyektno-orientirovannogo/

Процедурное программирование – это что такое?

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

Процедурное программирование – это программирование, в котором отражен фон Неймановской архитектуры компьютера.

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

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

Какая главная идея данного языка?

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

Как все начиналось

Процедурное программирование началось с создания языка высокого уровня под названием Фортран. Его создали в начале пятидесятых годов в США фирма IBM. Первые публикации о нем появились только в 1954 году.

Процедурно-ориентированный язык программирования Фортран была разработан для выполнения научно-технических задач. Главными объектами языка выступают числовые переменные, вещественные и целые числа.

Все выражения строятся на четырех главных арифметических вычислениях: возведение в степень, операции отношения, круглых скобок, логические манипуляции И, НЕ, ИЛИ.

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

За время существования языка была накоплена огромнейшая база разных библиотек, программ, что были написаны именно на Фортране. Сейчас все еще ведутся работы над введением очередного стандарта Фортрана. В 2000 году была разработана версия Фортран F2k, у которого стандартная версия называется HPF.

Она была создана для параллельных суперкомпьютеров. К слову, в языках PL-1 и Бейсик использованы многие стандарты именно с Фортраны.

Язык Кобол

К процедурным языкам программирования относят и язык Кобол. Это язык программирования, направленный на разрешение многих задач по обработке информации. Он активно применяется для решения различных управленческих, учетно-экономических задач.

Процедурное программирование на Коболе было разработано на территории США в 1958-1960 годах. Сама же программа, созданная на Коболе, обладает несколькими видами типа предложений на английском языке, напоминает с виду самый обычный текст.

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

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

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

Интересный факт: самые высокооплачиваемые программисты в США пишут программы именно на языке Кобол.

Язык Алгол

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

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

Процедурное программирование на языке Алгол впервые ввело в обиход такие понятия, как «блочная структура программы», «динамическое распределение памяти».

Еще есть одна особенность языка – это возможность в блоке вводить некоторые локальные отметки, что не касаются остального кода программы. Да, Алгол-60, несмотря на свое интернациональное происхождение, не так был популярен, как Фортран.

Далеко не все зарубежные вычислительные машины имели трансляторы с Алгола-60, поэтому это процедурное программирование претерпело изменений и появился усовершенствованный язык Алгол-68.

Алгол-68

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

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

Как же появился знаменитый Бейсик?

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

Состоял он из простейших английских слов и новый язык признали универсальным кодом для новичков или же другими словами BASIC. Годом рождения данного языка считают 1964. BASIC стал широко распространенным на ПК в режиме интерактивного диалога.

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

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

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

ПЛ/1

Это самый первый многоцелевой универсальный язык, который был создан в США фирмой IBM. Годы создания 1963—1966.

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

Когда создавался PL/1, применялись на практике различные понятия и средства из языков Алгол-60, Фортран, Кобол. PL/1 считается гибкий и богатейший языков, он позволяет создавать вставки, корректировать готовый текст программы даже в процессе отладки. Язык широко распространен, а трансляторы с него применяются во многих типах компьютеров. IBM даже сейчас продолжает поддерживать данный язык.

Язык С

Процедурное программирование С разработано в лаборатории Bell для реализации ОС UNIX, не рассматривался вначале как массовый. В планах у разработчиков было просто заменить Ассемблер, но появился просто отдельный язык С.

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

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

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

Какая существует особенность процедурных языков?

Их всего несколько, потому о каждой стоит поговорить. Это:

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

Различия между процедурным и объектно-ориентированным программированием

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

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

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

ООП включает в себя понятие «объект», а иначе их еще называют экземплярами класса, так как наследуется очень много именно у класса. Наследование – это еще один из отличительных принципов ООП.

Процедурные и функциональные языки

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

Что выбрать для себя?

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

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

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

Источник: https://FB.ru/article/45551/protsedurnoe-programmirovanie-istoriya-razvitiya-dialoga-cheloveka-s-evm

Процедурное программирование против объектно-ориентированного

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

Пожалуй, каждый, кто хоть немного интересуется программированием, знает, что при разработке ПО и web-приложений используются 2 основных подхода – процедурный и объектно-ориентированный. Сразу скажем, что ни один из них не является хорошим или плохим. Это – разные способы организации кода, разные способы решения задач. Да и задачи, собственно говоря, они решают тоже разные.

Чем же отличается ПП от ООП? Какие преимущества и недостатки они имеют? И, наконец, какой из этих подходов следует изучать начинающему программисту?

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

Увы, все в этом мире имеет свои минусы и плюсы. Среди недостатков ПП можно назвать следующие:

  • Риск возникновения множества ошибок при работе над большим проектом. Приходится писать много процедур, и это не может не сказаться на чистоте и работоспособности кода.
  • Все данные процедуры доступны только внутри нее. Их нельзя вызвать из другого места программы и при необходимости придется писать аналогичный код. А это уже противоречит одному из основополагающих принципов программирования, который звучит как Don’t Repeat Yourself (Не повторяйся).
  • Сложность изучения для начинающих. Этот недостаток может кому-то показаться притянутым за уши, но простая статистика свидетельствует, что процедурное программирование для большинства новичков дается сложнее, чем объектно-ориентированное.

Впрочем, у ПП есть и свои преимущества. Среди них отметим:

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

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

Главным минусом использования ООП можно назвать громоздкость при решении простых задач. Сравни, например, два участка кода, написанного на PHP. Первый пример – процедурный код, второй – объектно-ориентированный. И тот, и другой скрипт ведут к одному результату: просто выводят на экран фразу “Hello, world”:

Скрипт №1

Скрипт №2

Показательно, не правда ли?

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

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

Подводим итоги

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

Помни: язык – это всего лишь инструмент. Он не должен управлять программистом так же, как хвост не может вилять котом. Если же это происходит, то виноват кот программист, но не хвост, ведь так?

При реализации того или иного проекта разработчик сам решает, как он будет реализован. Если перед тобой стоит серьезная задача, и ты понимаешь, что без классов и объектов здесь не обойтись – выбирай ОО-язык. К ним относятся Delphi, Java, C#, JavaScript.

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

Кроме того, существуют ЯП, которые поддерживают обе парадигмы организации кода – PHP, C++. К ним мы питаем особую слабость :-).

И последнее: в Академии мы изучаем и процедурное, и объектно-ориентированное программирование. Хочешь стать одним из нас? Занимай свое место в группе!

Поделитесь статьей с друзьями

Источник: https://saikt-online.ru/procedurnoe-programmirovanie-protiv-obektno-orientirovannogo/

ovdmitjb

Add comment