Какие типы программ не присущи структурному программированию
Обновлено: 21.11.2024
ПРОГРАММЫ ДОЛЖНЫ БЫТЬ ПРОЕКТИРОВАНЫ. Никто не может просто сесть за компьютер и написать программу любой сложности. Дисциплина, называемая программной инженерией, занимается созданием правильных, работающих, хорошо написанных программ. Инженер-программист склонен использовать общепринятые и проверенные методы для анализа решаемой проблемы и разработки программы для решения этой проблемы.
В 1970-х и 80-х годах основной методологией разработки программного обеспечения было структурное программирование. . Подход структурного программирования к разработке программ основывался на следующем совете: чтобы решить большую проблему, разбейте ее на несколько частей и работайте над каждой частью отдельно; чтобы решить каждую часть, относитесь к ней как к новой проблеме, которую можно разбить на более мелкие задачи; в конце концов, вы спуститесь к проблемам, которые можно решить напрямую, без дальнейшей декомпозиции. Такой подход называется программированием сверху вниз.
В программировании сверху вниз нет ничего плохого. Это ценный и часто используемый подход к решению проблем. Однако он неполный. Во-первых, он почти полностью связан с созданием инструкций, необходимых для решения проблемы. Но со временем люди поняли, что проектирование структур данных для программы не менее важно, чем проектирование подпрограмм и управляющих структур. Нисходящее программирование не уделяет должного внимания данным, которыми манипулирует программа.
Еще одна проблема строгого нисходящего программирования заключается в том, что это затрудняет повторное использование проделанной работы для других проектов. Начав с конкретной проблемы и разделив ее на удобные части, нисходящее программирование имеет тенденцию создавать дизайн, уникальный для этой проблемы. Маловероятно, что вы сможете взять большой кусок программирования из другой программы и вписать его в свой проект, по крайней мере, без значительных модификаций. Создание высококачественных программ сложно и дорого, поэтому программисты и люди, которые их нанимают, всегда стремятся повторно использовать прошлую работу.
Поэтому на практике проектирование сверху вниз часто сочетается с проектированием снизу вверх. . При восходящем проектировании подход заключается в том, чтобы начать «снизу», с проблем, которые вы уже знаете, как решать (и для которых у вас уже может быть под рукой многоразовый программный компонент). Оттуда вы можете работать над решением общей проблемы.
Компоненты многократного использования должны быть как можно более «модульными». Модуль — это компонент более крупной системы, взаимодействующий с остальной системой простым, четко определенным и прямолинейным образом. Идея состоит в том, что модуль можно «подключить» к системе. Детали того, что происходит внутри модуля, не важны для системы в целом, пока модуль правильно выполняет назначенную ему роль. Это называется сокрытием информации и является одним из наиболее важных принципов разработки программного обеспечения.
Один из распространенных форматов программных модулей состоит в том, чтобы содержать некоторые данные вместе с некоторыми подпрограммами для манипулирования этими данными. Например, модуль списка рассылки может содержать список имен и адресов, а также подпрограмму для добавления нового имени, подпрограмму для печати почтовых ярлыков и так далее. В таких модулях сами данные часто скрыты внутри модуля; программа, использующая модуль, может затем манипулировать данными только косвенно, вызывая подпрограммы, предоставленные модулем. Это защищает данные, поскольку с ними можно манипулировать только известными, четко определенными способами. И это упрощает использование модуля программами, поскольку им не нужно беспокоиться о деталях представления данных. Информация о представлении данных скрыта.
Модули, поддерживающие такой вид сокрытия информации, стали обычным явлением в языках программирования в начале 1980-х годов. С тех пор более продвинутая форма той же идеи более или менее захватила разработку программного обеспечения. Этот последний подход называется объектно-ориентированным программированием, часто сокращенно ООП.
Центральным понятием объектно-ориентированного программирования является объект, который представляет собой своего рода модуль, содержащий данные и подпрограммы. Точка зрения в ООП заключается в том, что объект является своего рода самодостаточной сущностью, которая имеет внутреннее состояние (содержащиеся в нем данные) и может отвечать на сообщения (вызовы своих подпрограмм). Например, объект списка рассылки имеет состояние, состоящее из списка имен и адресов. Если вы отправите ему сообщение с просьбой добавить имя, он ответит, изменив свое состояние, чтобы отразить изменение. Если вы пошлете ему сообщение с просьбой распечатать себя, он ответит, распечатав свой список имен и адресов.
Подход ООП к разработке программного обеспечения заключается в том, чтобы начать с определения объектов, вовлеченных в проблему, и сообщения, на которые эти объекты должны реагировать.В результате программа представляет собой набор объектов, каждый из которых имеет свои данные и свой набор обязанностей. Объекты взаимодействуют, отправляя сообщения друг другу. В такой программе не так много «сверху вниз», и людям, привыкшим к более традиционным программам, может быть трудно привыкнуть к ООП. Однако люди, использующие ООП, утверждают, что объектно-ориентированные программы, как правило, являются лучшими моделями того, как устроен мир, и поэтому их легче писать, легче понимать и с большей вероятностью они будут правильными.
Вы должны думать об объектах как о "знающих", как реагировать на определенные сообщения. Разные объекты могут реагировать на одно и то же сообщение по-разному. Например, сообщение «печать» будет давать очень разные результаты в зависимости от объекта, которому оно отправлено. Это свойство объектов — то, что разные объекты могут реагировать на одно и то же сообщение по-разному — называется полиморфизмом.
Объекты обычно имеют своего рода «семейные отношения» друг с другом. Объекты, которые содержат данные одного типа и одинаково реагируют на одни и те же сообщения, принадлежат к одному и тому же классу. (В реальном программировании класс является первичным, т. е. создается класс, а затем создаются один или несколько объектов с использованием этого класса в качестве шаблона.) Но объекты могут быть похожими, но не принадлежать к одному и тому же классу.
Например, рассмотрим программу для рисования, которая позволяет пользователю рисовать на экране линии, прямоугольники, овалы, многоугольники и кривые. В программе каждый видимый объект на экране может быть представлен программным объектом в программе. В программе будет пять классов объектов, по одному для каждого типа видимого объекта, который можно нарисовать. Все линии будут принадлежать одному классу, все прямоугольники — другому классу и так далее. Эти классы, очевидно, связаны; все они представляют собой «рисуемые объекты». Например, все они, вероятно, смогут ответить на сообщение «нарисуй себя». Другой уровень группировки, основанный на данных, необходимых для представления каждого типа объекта, менее очевиден, но был бы очень полезен в программе: мы можем группировать многоугольники и кривые вместе как «многоточечные объекты», в то время как линии, прямоугольники и овалы являются «двухточечными объектами». (Линия определяется своими конечными точками, прямоугольник — двумя углами, а овал — двумя углами содержащего его прямоугольника.) Мы могли бы изобразить эти отношения следующим образом:
DrawableObject, MultipointObject, и TwoPointObject будут классами в программе. MultipointObject и TwoPointObject будут подклассами DrawableObject. Класс Line будет подклассом TwoPointObject и (косвенно) DrawableObject. Говорят, что подкласс класса наследует свойства этого класса. Подкласс может добавить к своему наследию и даже «переопределить» часть этого наследования (путем определения другого ответа на какой-либо метод). Тем не менее, линии, прямоугольники и т. д. являются объектами, которые можно рисовать, и класс DrawableObject выражает эту связь.
Наследование — мощное средство для организации программы. Это также связано с проблемой повторного использования программных компонентов. Класс — это окончательный повторно используемый компонент. Мало того, что его можно повторно использовать напрямую, если он точно соответствует программе, которую вы пытаетесь написать, но если он почти подходит, вы все равно можете повторно использовать его, определив подкласс и внеся только небольшие изменения, необходимые для его точного соответствия вашим потребностям. .
Итак, ООП должен быть как превосходным инструментом разработки программ, так и частичным решением проблемы повторного использования программного обеспечения. Объекты, классы и объектно-ориентированное программирование будут важными темами остальной части этого текста.
Решаете ли вы проблемы, просто вскакивая, желая игнорировать опыт и мудрость тех, кто может запрограммировать решения проблем, очень похожих на ваши? Мы учимся у прошлого. Наши предки открыли и изобрели способы программирования, которые мы знаем как парадигмы. Мы извлекаем пользу из знаний, которые они нам оставили, даже если сами стремимся создавать новые парадигмы.
Определение
A — это стиль или «способ» программирования.
Некоторые языки позволяют легко писать в одних парадигмах, но не в других.
Никогда не используйте фразу «парадигма языка программирования».Парадигма — это способ выполнения чего-либо (например, программирования), а не конкретная вещь (например, язык). Верно, что если язык программирования L позволяет легко выразить конкретную парадигму программирования P, то мы часто говорим: «L — это язык P» (например, «Haskell — язык функционального программирования»), но это не означает, что любая такая вещь, как «парадигма функционального языка».
Некоторые общие парадигмы
Вы должны это знать:
- : программирование с явной последовательностью команд, которые обновляют состояние.
- : Программирование путем указания желаемого результата, а не способа его получения.
- : Программирование с чистыми вложенными управляющими структурами без переходов.
- : Императивное программирование с вызовами процедур.
- (Применительно): программирование с вызовами функций, которые избегают какого-либо глобального состояния.
- (Комбинатор): Программирование вообще без переменных.
- : Программирование путем определения объектов, которые отправляют сообщения друг другу. Объекты имеют собственное внутреннее (инкапсулированное) состояние и общедоступные интерфейсы. Ориентация объекта может быть:
- На основе класса: объекты получают состояние и поведение в зависимости от принадлежности к классу.
- На основе прототипа: объекты получают поведение от объекта-прототипа.
Парадигмы не должны исключать друг друга; в одной программе может быть несколько парадигм!
Взгляд на некоторые основные парадигмы
Императивное программирование
Поток управления явный: команды показывают, как происходит вычисление, шаг за шагом. Каждый шаг влияет на глобальное состояние вычислений.
Структурированное программирование
это вид императивного программирования, в котором поток управления определяется вложенными циклами, условиями и подпрограммами, а не переходами. Переменные обычно являются локальными для блоков (имеют лексическую область действия).
Ранние языки с упором на структурное программирование: Algol 60, PL/I, Algol 68, Pascal, C, Ada 83, Modula, Modula-2. Структурное программирование как дисциплина иногда зародилось знаменитым письмом Эдсгера Дейкстры, озаглавленным «Перейти к утверждению, которое считается вредным».
Объектно-ориентированное программирование
ООП основан на отправке объектам. Объекты отвечают на сообщения, выполняя операции, обычно называемые . Сообщения могут иметь аргументы. Сообщество объектов, каждый со своей собственной локальной памятью и собственным набором операций, отличается от ощущения монолитного процессора и единой общей памяти в необъектно-ориентированных языках.
Одним из наиболее заметных аспектов более чистых объектно-ориентированных языков является то, что условные операторы и циклы сами становятся сообщениями, аргументами которых часто являются блоки исполняемого кода. В синтаксисе, подобном Smalltalk:
Это можно сократить до:
Многие популярные языки, которые называют себя объектно-ориентированными языками (например, Java, C++), на самом деле просто берут некоторые элементы ООП и смешивают их с императивным кодом. Далее мы видим, что length и toUpper являются методами, а не функциями верхнего уровня, но for и if снова стали управляющими структурами:
Декларативное программирование
Поток управления неявный: программист указывает только как должен выглядеть результат, а не как его получить.
Никаких циклов, никаких присваиваний и т. д. Какой бы движок ни интерпретировал этот код, предполагается, что он просто получает нужную информацию и может использовать любой подход, который ему нужен. (Парадигмы логики и ограничений обычно также являются декларативными.)
Функциональное программирование
В , поток управления выражается путем объединения вызовов функций, а не путем присвоения значений переменным:
Ой! Мы опишем это позже. А пока будьте благодарны за синтаксический сахар:
А? Это все равно не очень красиво. Почему людям нравится этот материал? Настоящая сила этой парадигмы заключается в передаче функций в функции (и возврате функций из функций).
Мы можем добиться большего успеха, используя крутой оператор |>. Здесь x |> f просто означает f(x) . Оператор имеет очень низкий приоритет, поэтому вы можете читать слева направо:
Продолжаем! Обратите внимание, что вы не стали бы писать map(λx. square(x)) , верно? Вы бы написали map(square) . Мы можем сделать что-то подобное выше, но мы должны использовать композицию функций, вы знаете, (fo g)x is f(g(x)) , поэтому:
Вот три вещи, которые нужно прочитать, чтобы понять суть функционального программирования:
С функциональным программированием:
- Нет команд, только выражения без побочных эффектов.
- Код намного короче, менее подвержен ошибкам, и его гораздо легче доказать правильность
- Существует больше встроенного параллелизма, поэтому хорошие компиляторы могут создавать более быстрый код
Некоторые любят говорить:
- Функциональное, или аппликативное, программирование — это программирование без операторов присваивания: вы просто применяете функции к аргументам. Примеры: Scheme, Haskell, Miranda, ML.
- Программирование на уровне функций избавляется от переменных; one объединяет функции с , a.k.a. Примеры: FP, FL, J.
Упражнение. Изучите следующие стили программирования и определите, чем они похожи и чем отличаются друг от друга: (а) основанный на стеке, (б) конкатенативный, (в) бесточечный, (г) неявный.< /p>
Во многих языках есть удобная функция, объединяющая карту и фильтр.
Программирование логики и ограничений
и представляют собой две парадигмы, в которых программы строятся путем установления отношений, которые определяют и делают вывод, и задают вопрос, является ли что-то истинным (т. е. указание .). Унификация и возврат для поиска решений (т. е. достижения целей) происходят автоматически .
Языки, которые подчеркивают эту парадигму: Prolog, GHC, Parlog, Vulcan, Polka, Mercury, Fnil.
Языки и парадигмы
Одной из характеристик языка является поддержка определенных парадигм программирования. Например, Smalltalk имеет прямую поддержку объектно-ориентированного программирования, поэтому его можно назвать объектно-ориентированным языком. Программы OCaml, Lisp, Scheme и JavaScript, как правило, интенсивно используют передачу функций, поэтому их называют «функциональными языками», несмотря на наличие переменных и множества императивных конструкций.
- Очень немногие языки реализуют парадигму на 100 %. Когда они это делают, они . Невероятно редко бывает «чистый язык ООП» или «чистый функциональный» язык. Многие языки имеют несколько побегов; например, в OCaml вы будете программировать с функциями в 90% или более случаев, но если вам нужно состояние, вы можете его получить. Другой пример: очень немногие языки реализуют ООП так, как это представлял себе Алан Кей.
- Многие языки упрощают программирование в одной или нескольких парадигмах. В Scala вы можете легко выполнять императивное, объектно-ориентированное и функциональное программирование. Если язык преднамеренно разработан для обеспечения возможности программирования во многих парадигмах, он называется . Если язык только случайно поддерживает несколько парадигм, у нас нет специального слова для этого.
Если вы новичок в программировании, парадигмы программирования не имеют большого значения. Но когда вы поднимаетесь по лестнице и начинаете создавать сложные программы и программное обеспечение, очень важно понять, какая парадигма программирования лучше всего подходит для вашего проекта. Прежде чем мы начнем, важно знать, что такое парадигма. Согласно многим цитируемым определениям, парадигма — это «набор предположений, концепций, ценностей и практик, которые составляют способ видения реальности для сообщества, которое их разделяет, особенно в интеллектуальной дисциплине».
Это определение является точным, поскольку парадигма отличается другим взглядом на реальность для сообщества. Парадигмы имеют значение, поскольку они часто путешествуют вместе с определенной культурой написания программ и размышлений о них. В этой статье мы обсудим основные парадигмы программирования, уделив особое внимание парадигме процедурного программирования.
Что такое процедурное программирование? [Определение]
Процедурное программирование может быть первой парадигмой программирования, которую изучает новый разработчик. По сути, процедурный код — это тот, который непосредственно инструктирует устройство о том, как завершить задачу логическими шагами. Эта парадигма использует линейный нисходящий подход и рассматривает данные и процедуры как две разные сущности. Основываясь на концепции вызова процедуры, процедурное программирование делит программу на процедуры, которые также известны как подпрограммы или функции, просто содержащие последовательность шагов, которые необходимо выполнить.
Проще говоря, процедурное программирование включает в себя запись списка инструкций, которые сообщают компьютеру, что он должен делать шаг за шагом, чтобы завершить поставленную задачу.
Ключевые особенности процедурного программирования
- Предопределенные функции. Предопределенная функция обычно представляет собой инструкцию, идентифицируемую по имени. Обычно предопределенные функции встроены в языки программирования более высокого уровня, но они являются производными от библиотеки или реестра, а не от программы. Одним из примеров предопределенной функции является «charAt()», которая ищет позицию символа в строке.
- Локальная переменная. Локальная переменная — это переменная, объявленная в основной структуре метода и ограниченная заданной ей локальной областью. Локальная переменная может использоваться только в методе, в котором она определена, и если она будет использоваться вне определенного метода, код перестанет работать.
- Глобальная переменная. Глобальная переменная — это переменная, объявленная вне любой другой функции, определенной в коде. Благодаря этому глобальные переменные можно использовать во всех функциях, в отличие от локальных переменных.
- Модульность. Модульность — это когда две разные системы выполняют две разные задачи, но сгруппированы вместе, чтобы сначала выполнить более крупную задачу. В этом случае каждая группа систем будет выполнять свои задачи одну за другой, пока не будут выполнены все задачи.
- Передача параметров. Передача параметров — это механизм, используемый для передачи параметров функциям, подпрограммам или процедурам. Передача параметров может осуществляться через «передачу по значению», «передачу по ссылке», «передачу по результату», «передачу по значению-результату» и «передачу по имени».
Преимущества и недостатки процедурного программирования
- Предопределенные функции. Предопределенная функция обычно представляет собой инструкцию, идентифицируемую по имени. Обычно предопределенные функции встроены в языки программирования более высокого уровня, но они являются производными от библиотеки или реестра, а не от программы.Одним из примеров предопределенной функции является «charAt()», которая ищет позицию символа в строке.
- Локальная переменная. Локальная переменная — это переменная, объявленная в основной структуре метода и ограниченная заданной ей локальной областью. Локальная переменная может использоваться только в методе, в котором она определена, и если она будет использоваться вне определенного метода, код перестанет работать.
- Глобальная переменная. Глобальная переменная — это переменная, объявленная вне любой другой функции, определенной в коде. Благодаря этому глобальные переменные можно использовать во всех функциях, в отличие от локальных переменных.
- Модульность. Модульность — это когда две разные системы выполняют две разные задачи, но сгруппированы вместе, чтобы сначала выполнить более крупную задачу. В этом случае каждая группа систем будет выполнять свои задачи одну за другой, пока не будут выполнены все задачи.
- Передача параметров. Передача параметров — это механизм, используемый для передачи параметров функциям, подпрограммам или процедурам. Передача параметров может осуществляться через «передачу по значению», «передачу по ссылке», «передачу по результату», «передачу по значению-результату» и «передачу по имени».
Преимущества и недостатки процедурного программирования
Процедурное программирование имеет свои плюсы и минусы, некоторые из которых упомянуты ниже.
Преимущества
- Процедурное программирование отлично подходит для программирования общего назначения.
- Простота кода наряду с простотой реализации компиляторов и интерпретаторов
- Большой выбор книг и материалов онлайн-курсов по проверенным алгоритмам, которые облегчают процесс обучения.
- Исходный код является переносимым, поэтому его можно использовать и для другого процессора.
- Код можно повторно использовать в разных частях программы без необходимости его копирования.
- Благодаря методике процедурного программирования требования к памяти также резко сокращаются.
- Ход программы можно легко отслеживать
Недостатки
- При использовании процедурного программирования программный код писать сложнее
- Процедурный код часто нельзя использовать повторно, что может потребовать повторного создания кода, если он потребуется для использования в другом приложении.
- Трудно связать с реальными объектами.
- Важное значение придается операции, а не данным, что может вызвать проблемы в некоторых случаях, связанных с данными.
- Данные доступны для всей программы, что снижает безопасность
Как мы упоминали ранее, существуют различные типы парадигмы программирования, которые представляют собой не что иное, как стиль программирования. Важно понимать, что парадигма ориентирована не на конкретный язык, а на способ написания программы. Ниже приведено сравнение между процедурным программированием и объектно-ориентированным программированием.
Что такое объектно-ориентированное программирование (ООП)
ООП – это подход к программированию, который рассматривает жизнь в том виде, в каком мы ее знаем, как набор объектов, которые работают в тандеме друг с другом для решения конкретной задачи. Первое, что нужно знать об ООП, — это инкапсуляция, то есть идея о том, что каждый объект, содержащий программу, является самодостаточным, что означает, что все компоненты, составляющие объект, находятся внутри самого объекта. Теперь, поскольку каждый модуль в этой парадигме является самодостаточным, объекты можно взять из одной программы и использовать для решения другой проблемы с небольшими изменениями или без изменений.
Преимущества
- Благодаря модульности и инкапсуляции ООП обеспечивает простоту управления.
- ООП имитирует реальный мир, облегчая его понимание.
- Поскольку объекты являются целыми сами по себе, их можно повторно использовать в других программах.
Недостатки
- Объектно-ориентированные программы работают медленнее и потребляют много памяти.
- Чрезмерное обобщение
- Программы, созданные с использованием этой парадигмы, могут создаваться дольше
Процедурное программирование и объектно-ориентированное программирование: прямое сравнение
Другой часто используемой парадигмой программирования является функциональное программирование. Функциональное программирование сильно отличается как от процедурного программирования, так и от объектно-ориентированного программирования, поскольку оно использует математические функции. Благодаря этому операции выполняются только на основе введенных данных и не зависят от временных или скрытых переменных.
Преимущества
- Функциональное программирование предлагает защищенную среду
- В то время как многие другие языки требуют значительного объема информации для правильного выполнения операций, функциональное программирование устраняет необходимость в большом объеме кода, необходимого для определения состояний.
- Поскольку эта парадигма зависит только от входных аргументов, побочных эффектов нет
Недостатки
- Использование функционального программирования исключительно при разработке коммерческого программного обеспечения не рекомендуется и не допускается
- Требуется большой объем памяти и времени.
- Она может оказаться менее эффективной, чем другие парадигмы.
Заключение
Как мы уже говорили в этой статье, процедурное программирование — это больше то, что вы делаете, чем то, как вы это делаете. Это стандартный подход, используемый во многих компьютерных языках, таких как C, Pascal и BASIC. Хотя идеальной парадигмы программирования не существует, важно понимать, что правильная парадигма всегда будет зависеть от типа используемого вами языка и программы, которую вы хотите создать. Для достижения максимальных результатов и сильного портфолио рекомендуется владеть всеми тремя основными парадигмами программирования. Лучший способ улучшить парадигмы программирования — попробовать, и Hackr может вам в этом помочь.
Люди также читают:
Сагар Бхатия
Сагар имеет диплом инженера и увлекается технологиями. Уже более 5 лет он пишет статьи по различным дисциплинам. Сам заядлый геймер, он хочет создать предприятие, связанное с киберспортом в Индии. Просмотреть все сообщения автора
Парадигма программирования – это способ осмысления и структурирования функциональности программы. Парадигмы программирования отличаются друг от друга, например, тем, как определяются выполнение и управление программой, а также из каких компонентов состоят программы.
Большинство используемых в настоящее время языков программирования поддерживают несколько парадигм программирования. Часть роста программиста включает в себя способность на основе опыта выбирать подходящий язык программирования и парадигму; в настоящее время не существует единого универсального языка программирования и парадигмы программирования.
Сегодня наиболее распространенными парадигмами программирования являются объектно-ориентированное программирование, процедурное программирование и функциональное программирование. Первые два из них кратко обсуждаются ниже.
Объектно-ориентированное программирование
В объектно-ориентированном программировании информация представлена в виде классов, описывающих концепции предметной области и логику приложения. Классы определяют методы, которые определяют, как обрабатывается информация. Во время выполнения программы объекты создаются из классов, содержащих информацию о времени выполнения и также влияющих на выполнение программы: выполнение программы обычно проходит через серию вызовов методов, связанных с объектами. Как упоминалось несколько недель назад, "программа состоит из небольших, понятных и взаимодействующих элементов".
Основные идеи объектно-ориентированного программирования, т. е. представления информации и методов ее обработки с помощью классов и объектов, впервые появились в Simula 67, предназначенном для разработки симуляторов, и языке программирования Smalltalk. Ее прорыв произошел в 1980-х годах благодаря языку программирования C++, и Java сделала его одной из наиболее широко используемых парадигм программирования в мире.
Одно из основных преимуществ объектно-ориентированного программирования заключается в том, что концепции предметной области моделируются с помощью классов и объектов, что упрощает понимание программ. Кроме того, структурирование проблемной области по классам облегчает создание и сопровождение программ. Однако объектно-ориентированное программирование не всегда подходит для решения всех задач: например, приложения для научных вычислений и статистики обычно используют такие языки, как R и Python.
Процедурное программирование
В то время как в объектно-ориентированном программировании структура программы формируется данными, которые она обрабатывает, в процедурном программировании структура программы формируется функциональностью, желаемой для программы: программа действует как шаг за шагом. пошаговое руководство по выполняемой функции. Программа выполняется шаг за шагом, а подпрограммы (методы) вызываются всякий раз, когда это необходимо.
В процедурном программировании состояние программы сохраняется в переменных и таблицах, и любые методы обрабатывают только значения, предоставленные им в качестве параметров. Программа сообщает компьютеру, что должно произойти. В качестве примера приведенный ниже код демонстрирует перестановку значений двух переменных a и b
При сравнении объектно-ориентированного программирования с процедурным программированием обнаруживается несколько существенных отличий. В объектно-ориентированном программировании состояние объекта может, в принципе, измениться с помощью любого метода объекта, и это изменение состояния также может повлиять на работу методов других объектов. Как следствие, другие аспекты выполнения программы также могут быть затронуты, поскольку объекты могут использоваться в нескольких местах программы.
Разница между объектно-ориентированным программированием и процедурным программированием конкретно показана в примере с часами, представленном в начале пятой части.В приведенном ниже решении показан процедурный стиль, в котором печать времени передается методу.
Читайте также: