C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 178 - Уровни абстракции компьютерных систем и MFC / MFC шаг за шагом / Visual C++

Шаг 178 - Уровни абстракции компьютерных систем и MFC

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

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

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

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

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

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

Каждая система - это иерархия в строгом понятии. И вот какие уровни вроде как есть для нашей программы на MFC:

  • машинные кода
  • операционная система
  • Win 32 API
  • Код С
  • MFC

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

class CAFCTree : public CTreeView
{
......
}

class CLeftView : public CAFCTree
{
.........
}

Вот получается нам надо создавать еще более крупные классы концентрируясь на необходимых нам свойствах. Только вот при программировании нам часто приходится углубляться в детали и скакать с уровня на уровень. Мне кажется это немного не правильно, потому что потом тяжело разобраться о чем думал на предыдущем уровне. Как видите сейчас разговор идет больше о методике создания программ, в том числе и с MFC. И вообще понимание уровней абстракции и умение их применять это и есть залог успеха к созданию программных систем. Для интереса кто из Вас сможет описать все уровни абстракции при обращении клиента к серверу по сети ??? Кстати и литературы по этому поводу нет, то есть нигде это явно не написано. Странно ...... У меня большие подозрения на капиталистов, что они просто скрывают часть важной информации.


| |
Автор Каев Артем.
[AD]