2007-09-22

OOPs - продолжение

Мир состоит из объектов. Объект "я" сел в объект "машина", поехал по объекту "дорога" в объект "ресторан", где попросил создать экземпляр класса "стейк". Мне принесли объект "стейк", я его съел, отдал объекты "деньги", получил объект "чек" и т.д. Некоторые объекты вполне реальны. Я, машина, дорога, стейк. Все они локализованы в пространстве-времени, отличаются от окружающей среды, обладают своими особыми свойствами, ведут себя своим собственным образом. Некоторые объекты есть лишь в нашем воображении. Объект "King County" (местное административное деление), вполне условен и существует постольку, поскольку мы договорились его признавать в данных границах. Так же и свойства объектов, бывают вполне объективны. Например материал стейка, вес, даже с некоторыми оговорками вкус. А есть условные, например цена стейка, марка машины, её остаточная стоимость со всеми её помятостями, престижность этой машины в различных кругах (короче, далее по Пелевину). Все это зависит не столько от самого объекта, сколько от различных субъективных факторов нашей оценки этого объекта, от наблюдателя. --- Знаете, чем данный, например, текст отличается от программы? Любой текст пишется для его читателей. Этот текст рассчитан только на на один вид читателей - homo programmaticus. А любая программа имеет двух читателей - тех же homo, плюс компьютер. Эта двойственность делает программу текстом особенным, и эту двойственность читателя постоянно надо держать в уме при написании. Бывают программы, где человеческий читатель полностью игнорируется. Лишь бы компьютер сжевал, а на остальное наплевать. Их никто и не читает, выкидывают и пишут другую. Другой полюс - наплевать на компьютер. В том плане, что надо чтобы программа была понятна любому и это будет определять всю её структуру. Работает такая программа тоже не очень, её тоже приходится переписывать. Думаю примеры того и другого всем хорошо знакомы. --- Когда-то давно, задолго до того, как впервые подошёл к компьютеру, где-то в старшей школе, я придумал для себя термин "объектное мышление", как результат чтения советской прессы. Он означал разделить понятия принадлежащие объекту и понятия навешанные на него наблюдателем. Знаете, чем отличается "очередная гнусная провокация террористов" от "неудачно проведённой операции национально-освободительной армии"? Отношением к ним. В реальности просто была перестрелка противоборствующих вооружённых группировок преследующими свои, разные, цели. Очень полезный навык в различных областях, очень рекомендую. И в частности в программировании. В стадии анализа задачи очень важно понимать что принадлежит объекту, а что есть его отражение наблюдателем. А в стадии написания кода важно понимать, что пишется для компьютера, а что для человека. --- Ну так для кого пишутся классы? --- ... продолжение следует ...

No comments: