Форум программистов, компьютерный форум CyberForum.ru

В чем различия между модульным, процедурным и структурным программированием? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Отображение файла в память, поиск и замена последовательности байт http://www.cyberforum.ru/cpp-beginners/thread1215029.html
В общем, задача такая: спроецировать файл в память, найти последовательность байт, заменить её и записать изменения в файл. Вот, что я сам попробовал нацарапать: int _tmain(int argc, _TCHAR* argv) { HANDLE hFileMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, 0, "file.txt"); char* p=(char*)MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,0); if(0!=p) { CloseHandle(hFileMap);...
C++ Алгоритм с Паскаля на С++ Очень прошу помощи. Никак не могу перевести с паскаля на С алгоритм. На Паскале вычисляет все отлично, все тесты проходит. На С++ заваливается через тест... x:=sekt; repeat v:=(a div k) mod n; if sekt<sekt then v:=n-v+1; if x<sekt then x:=sekt; a:=a+k; until a>=b; result = section; http://www.cyberforum.ru/cpp-beginners/thread1215002.html
C++ Каким образом переменные, описанные в одном файле, могут быть доступны другому файлу?
помогите пожалуйста ответить на вопрос 1. Каким образом переменные, описанные в одном файле, могут быть доступны другому файлу?
C++ Конструктор с двоеточием
Новичок. Объясните, пожалуйста, что за параметры в конструкторе после скобочек за двоеточием? HelloWorld::HelloWorld() :_targets(NULL), _projectiles(NULL) { }
C++ Написать группу классов "мобильный телефон" http://www.cyberforum.ru/cpp-beginners/thread1214962.html
Создать класс MICROCHIP, имеющий объем памяти в Гб (v - целое). Определить конструкторы. Создать класс MOBITELEFON содержащий объект m класса MICROCHIP. Дополнительно у этого класса есть название фирмы-изготовителя (f - литерный указатель). Определить конструкторы и деструктор. Определить private-производный класс TELEFON_C_VIDEO, имеющий дополнительно размер карты памяти (k - целое). Определить...
C++ С чего начать написание программы для 3D моделирования всем доброго времени суток=) я недавно загорелся идеей написать программку для 3D моделирования, но совсем не знаю с чего же мне начать... может есть у кого нибудь мудрый совет или интересная книжка для новичка=))) я знаю основы с++ и с# может другой какой язык посоветуете=) в общем F1 ;) подробнее

Показать сообщение отдельно
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 154
23.06.2014, 18:54  [ТС]     В чем различия между модульным, процедурным и структурным программированием?
Цитата Сообщение от Psilon Посмотреть сообщение
luigration, примерно одно и то же. Сейчас трудно сделать четкую грань между ними.

Если взять исторически, то изначально был хаос макаронный код, с миллионами goto и прочими прелестями.

Затем Дейстра опубликовал свою знаменитую заметку Go To Statement Considered Harmful, где сказал, в частности, что
Так зародились идеи структурного программирования (смотри структурную теорему Бёма — Якопини, которая утерждвает, что goto не нужен).

Все было хорошо, пока программы были маленькие. Но с увеличением объема кода росла сложность, многие куски кода просто копировались, хотя от goto уже помаленьку отошли. И тут пришла идея инкапсуляции - а давайте введем понятие модуля! Это когда есть функция, код внутри модуля может её использовать, а вне модуля - не может. Типичный пример - функции в разделе Implementation, которых нету в разделе Interface (в паскале), или функции , но которые не описаны в .h файле (в С). Чувствуете, на что это похоже? Да, правильно, но это будет чуть попозже... А такое программирование стали называть модульным.

Время шло дальше, программы росли, и уже модульное программирование не справлялось со сложностью, от дублирование частично избавились, но модули теперь копировались целиком, что тоже не очень хорошо. И тут кому-то очень умному пришло в голову - а давайте не только функции скрывать, но и данные! А что, идея неплохая. Так зародились концепции ООП, которых четыре, а не три, как принято считать. Первая, и самая главная - это Абстракция. Остальные три - набившие оскомину - Наследование, Инкапсуляция и Полиморфизм. Второе - это прямое развитие идей модульного программирования. Полиморфизм был призван убрать дублирование кода, а Наследование - это способ его реализации, по факту (я пишу каждое слово с Большой Буквы, просто чтобы было заметнее, и придать вес словам По-идее, никак выделять эти слова не надо).

Кстати, ООП придумали не В С++ и не Страуструп, как многие думают, а в малоизвестном на сегодня языке Smalltalk. А Страуструп просто вывел эти идеи на промышленные рельсы. Что, впрочем, не умаляет его заслуг.

Время шло, программы росли.. Ничего не напоминает? В общем, ООП тоже начало задыхаться. В частности, очень много кода дублировало всевозможные обработки ошибок, логгирование и прочие вещи, которые в университетских программах не встречаются, а вот в промышленном коде занимают очень много места. И оборачивание каждого метода в километровые try catch с однотипным кодом начало убивать все преимущества ООП. И тут подумали - а почему бы нам не абстрагировать еще и поведение? Пусть обработка всех ошибок у нас будет в одном месте, а бизнес-логика - в другом. А еще что-нибудь - в третьем? Так и появилось новое направление - АОП. Есть некоторые его реализации на сегодняшний день, самая известная мне на сегодняшний день - реализация, основанная на новом API от Microsoft - проекте Rosylin. На самом деле интересный проект, предоставляющий API к компилятору и позволяющую делать интересные штуки, вот небольшой перечень того, что можно сделать Одним словом - первая промышленная реализация АОП (остальные имхо сейчас не очень соответствуют этому званию).

АОП пока не выдохлось По большому счету оно пока только зарождается. Что будет дальше - посмотрим. Надеюсь, я достаточно подробно рассказал
Про ООП мне всё понятно. А чем же тогда процедурное программирование отличается от структурного? Грубо говоря, особо ничем?
 
Текущее время: 01:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru