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

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

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

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

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

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

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

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

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

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

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


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 6.05.2000