|
13 / 10 / 5
Регистрация: 04.01.2013
Сообщений: 205
|
|
В чем различия между модульным, процедурным и структурным программированием?23.06.2014, 14:26. Показов 10226. Ответов 16
Метки нет (Все метки)
Доброго всем времени суток. Объясните, пожалуйста, в чем различия между модульным, процедурным и структурным программированием? Читаю в википедии, как-то поверхностно понимаю, но какой-то особой разницы не нахожу.
0
|
|
| 23.06.2014, 14:26 | |
|
Ответы с готовыми решениями:
16
В чём различие между программированием MFC и WinAPi на С++ В чем заключаются различия между массивами и записями? |
|
Master of Orion
|
||
| 23.06.2014, 16:55 | ||
|
luigration, примерно одно и то же. Сейчас трудно сделать четкую грань между ними.
Если взять исторически, то изначально был Затем Дейстра опубликовал свою знаменитую заметку Go To Statement Considered Harmful, где сказал, в частности, что
Все было хорошо, пока программы были маленькие. Но с увеличением объема кода росла сложность, многие куски кода просто копировались, хотя от goto уже помаленьку отошли. И тут пришла идея инкапсуляции - а давайте введем понятие модуля! Это когда есть функция, код внутри модуля может её использовать, а вне модуля - не может. Типичный пример - функции в разделе Implementation, которых нету в разделе Interface (в паскале), или функции , но которые не описаны в .h файле (в С). Чувствуете, на что это похоже? Да, правильно, но это будет чуть попозже... А такое программирование стали называть модульным. Время шло дальше, программы росли, и уже модульное программирование не справлялось со сложностью, от дублирование частично избавились, но модули теперь копировались целиком, что тоже не очень хорошо. И тут кому-то очень умному пришло в голову - а давайте не только функции скрывать, но и данные! А что, идея неплохая. Так зародились концепции ООП, которых четыре, а не три, как принято считать. Первая, и самая главная - это Абстракция. Остальные три - набившие оскомину - Наследование, Инкапсуляция и Полиморфизм. Второе - это прямое развитие идей модульного программирования. Полиморфизм был призван убрать дублирование кода, а Наследование - это способ его реализации, по факту (я пишу каждое слово с Большой Буквы, просто чтобы было заметнее, и придать вес словам По-идее, никак выделять эти слова не надо). Кстати, ООП придумали не В С++ и не Страуструп, как многие думают, а в малоизвестном на сегодня языке Smalltalk. А Страуструп просто вывел эти идеи на промышленные рельсы. Что, впрочем, не умаляет его заслуг. Время шло, программы росли.. Ничего не напоминает? В общем, ООП тоже начало задыхаться. В частности, очень много кода дублировало всевозможные обработки ошибок, логгирование и прочие вещи, которые в университетских программах не встречаются, а вот в промышленном коде занимают очень много места. И оборачивание каждого метода в километровые try catch с однотипным кодом начало убивать все преимущества ООП. И тут подумали - а почему бы нам не абстрагировать еще и поведение? Пусть обработка всех ошибок у нас будет в одном месте, а бизнес-логика - в другом. А еще что-нибудь - в третьем? Так и появилось новое направление - АОП. Есть некоторые его реализации на сегодняшний день, самая известная мне на сегодняшний день - реализация, основанная на новом API от Microsoft - проекте Rosylin. На самом деле интересный проект, предоставляющий API к компилятору и позволяющую делать интересные штуки, вот небольшой перечень того, что можно сделать Одним словом - первая промышленная реализация АОП (остальные имхо сейчас не очень соответствуют этому званию).АОП пока не выдохлось По большому счету оно пока только зарождается. Что будет дальше - посмотрим. Надеюсь, я достаточно подробно рассказал
9
|
||
|
13 / 10 / 5
Регистрация: 04.01.2013
Сообщений: 205
|
||
| 23.06.2014, 18:54 [ТС] | ||
|
0
|
||
|
Master of Orion
|
|
| 23.06.2014, 19:42 | |
|
luigration, сам никогда не понимал
Теоретически, процедурное программирование использует процедуры (внезапно), то есть методы, функции, subroutines, называйте как хотите. Не знаю, может в таком ракурсе структурное программирование подразумевает хреначенье всего кода в main... Ведь даже в ассемблере есть подпрограммы, то есть с этой точки зрения "процедурное" программирование было всегда. По крайней мере начиная с 50гг, если не раньше. Поэтому затрудняюсь ответить на этот вопрос
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 23.06.2014, 22:02 | |
|
В модульном - скрытность с глаз долой исходных кодов готовых модулей. из-за чего Сам код, в котором используются функции модулей не так сильно загроможден. Разбиение на файлы и использование этих файлов начинается уже с первой программы, с HelloWorld, когда пишем #include <О, Божественный компилятор, подари мне все скрытые способности0 этого файла>
___________________________ В структурном просто удобнее создавать и обрабатывать жалкое подобие баз данных и свои типы и объекты, соответствующие этим созданным типам. Также удобнее само обращение к данным. В маленьких программах этого не особо заметно, но в больших программах заметно. При этом внутри структурного программирования широко используется процедурное. Т.е. к каждому уникальному объекту можно присобачить функцию исключительно для него любимого. Это будет называться методом объекта., ну или задать значение переменой для него любимого. _____________________________ Ну процедурное - это самое простое для понимания. В нужный момент времени нужно выполнить какой-то расчет или выполнить какую-то конкретную задачу. При этом момент времени может быть совершенно случайным и повторятся многократное количество раз. Как раз, чтобы не пихать все в main. , пытаясь угадать будущее, стали применять процедурное. _____________________________ При этом все три не взаимоисключающие, все эти подходы программирования можно и иногда нужно сочетать между собой. Всфя разница только в том, что в какой-то конкретной задаче чуть более удобный один из способов программирования.,вот и все.
2
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 23.06.2014, 23:32 | ||
|
Структурное программирование – это использование вместо goto готовых языковых структур – ветвлений и циклов. В Си это for, while, do while. if else, switch. Блок-схемы и были нужны, чтобы, когда этих структур в языке не было, рисовать их на бумажке, а потом реализовывать с помощью макаронного программирования, вписывая goto к номеру строки такой-то. С появлением структурных языков надобность в блок-схемах отпала, поэтому тоже довольно странно видеть как люди с ними возятся. Модульное программирование – это разбиение программы на блоки функций (модули), каждый из которых выполняет свою задачу, и которые настолько независимы, что каждому модулю достаточно знать только интерфейсы других (т.е. имена функций модуля), а реализация этих функций его не интересует. В C++ это пространства имен на логическом уровне и файлы на физическом, где на логическом уровне интерфейс модуля (объявления функций) помещаются в пространстве имен модуля, а реализация модуля (реализации функций) – за пределами этого пространства имен. На физическом уровне интерфейсу модуля соответствует заголовочный файл модуля, а реализации – файл реализации модуля.
2
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 23.06.2014, 23:45 | ||
|
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 23.06.2014, 23:51 | ||
|
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 24.06.2014, 00:02 | ||
|
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.06.2014, 00:06 | ||
|
0
|
||
|
Master of Orion
|
|
| 24.06.2014, 00:18 | |
|
Mr.X, зависит от задачи. С тем же успехом можно сказать "UML для лохов, для настоящих про - простыня кода!" А UML по-факту и есть блок-схема, только не для структурного программирования, я для ООП.
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.06.2014, 00:37 | ||
|
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 24.06.2014, 01:29 | ||
|
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||||||
| 24.06.2014, 14:56 | ||||||
1
|
||||||
| 24.06.2014, 14:56 | |
|
Помогаю со студенческими работами здесь
17
В чём различия между экземплярами класса и типами? Объясните, пожалуйста, в чем различия между SortedSet и NavigableSet? В чем различия между Антивирус ESET NOD32 4.0 и ESET NOD32 4.2 ? Зачем я занимаюсь программированием и вообще чем то ? это то чего я хочу? Есть ли связь между программированием и предсказанием будущего? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|