Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отображение файла в память, поиск и замена последовательности байт http://www.cyberforum.ru/cpp-beginners/thread1215029.html
В общем, задача такая: спроецировать файл в память, найти последовательность байт, заменить её и записать изменения в файл. Вот, что я сам попробовал нацарапать: int _tmain(int argc, _TCHAR* argv)...
C++ Алгоритм с Паскаля на С++ Очень прошу помощи. Никак не могу перевести с паскаля на С алгоритм. На Паскале вычисляет все отлично, все тесты проходит. На С++ заваливается через тест... x:=sekt; repeat v:=(a div k) mod n; if... 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. Дополнительно у этого класса есть название...
C++ С чего начать написание программы для 3D моделирования всем доброго времени суток=) я недавно загорелся идеей написать программку для 3D моделирования, но совсем не знаю с чего же мне начать... может есть у кого нибудь мудрый совет или интересная книжка... подробнее

Показать сообщение отдельно
Psilon
Master of Orion
Эксперт .NET
5909 / 4806 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
23.06.2014, 16:55
luigration, примерно одно и то же. Сейчас трудно сделать четкую грань между ними.

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

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

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

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

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

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

АОП пока не выдохлось По большому счету оно пока только зарождается. Что будет дальше - посмотрим. Надеюсь, я достаточно подробно рассказал
8
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru