Объектно-ориентированное программирование

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

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

Что читать дальше

Я отметил ранее, что Алан Кей считается отцом объектно-ориентированного программирования. Подобно многим простым высказываниям, данное утверждение выдерживает критику лишь отчасти. Сам Кей[Kay 1993] считает, что его вклад состоит преимущественно в разработке языкаSmalltalk на основе более раннего языка программированияSimula, созданного в Скандинавии в60-хгодах[Dahl 1966, Kirkerud 1989]. История свидетельствует, что большинство принципов  объектно-

ориентированного программирования было полностью разработано создателями языка Simula, но этот факт в значительной степени игнорировался профессионалами до тех пор, пока они(принципы) не были вновь открыты Кеем при разработке языка программированияSmalltalk. Пользующийся широкой популярностью журналByte в1981 году сделал многое для популяризации концепций, разработанных Кеем и его командой из группыXerox PARC.

Термин  «кризис программного обеспечения», по-видимому, был изобретен Дугом Мак- Илроем во время конференции НАТО1968 года по программным технологиям. Забавно, что мы находимся в этом кризисе и сейчас, по прошествии половины срока существования информатики как независимой дисциплины. Несмотря на окончание холодной войны, выход из кризиса программного обеспечения не ближе к нам, чем это было в1968 году— см., к примеру, статью Гиббса «Хронический кризис программного обеспечения» в сентябрьском выпускеScientific American за1994 год[Gibbs 1994].

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

 

Цитата американского лингвиста Эдварда Сапира (стр. 21) взята из статьи «Связь поведения и мышления с языком», перепечатанной в сборнике «Мышление и реальность» [Whorf 1956]. В нем содержится несколько интересных работ по связям между языком и процессом мышления. Я настоятельно рекомендую каждому серьезному студенту, занимающемуся компьютерными языками, прочитать эти статьи. Некоторые из них имеют удивительно близкое отношение к искусственным языкам.

Другая интересная книга — это «Эффект алфавита» Роберта Логана[Logan 1986], которая объясняет в лингвистических терминах, почему логика и наука были разработаны на Западе, в то время как в течение веков Китай имел опережающую технологию. В более современном исследовании о влиянии естественного языка на информатику Дж. Маршалл Унгер[Unger 1987] описывает влияние японского языка на известный проект Пятого поколения компьютеров.

Всеми признанное наблюдение, что язык эскимосов имеет много слов для обозначения типов снега, было развенчано Джоффри Паллумом в его сборнике статей по лингвистике[Pullum 1991]. В статье вAtlantic Monthly  «Похвала снегу» (январь1995) Каллен Мерфи указывал, что набор слов, используемый для обсуждения «снежной» тематики людьми, говорящимипо-английски, по крайней мере столь же разнообразен, как и термины эскимосов. При этом, естественно, имеются в виду люди, для которых различия в типах снега существенны(преимущественно это ученые, которые проводят исследования в данной области).

В любом случае данное обстоятельство не имеет значения для нашего обсуждения. Определенно истинно, что группы индивидуумов с общими интересами стремятся разработать свой собственный специализированный словарь и, будучи однажды созданным, он имеет тенденцию направлять мысли своих творцов по пути, который не является естественным для людей за пределами группы. Именно такова ситуация с ООП. Хотя объектно-ориентированныеидеи могут, при надлежащей дисциплине, быть использованы и без объектно-ориентированныхязыков, использование их терминов помогает направить ум программиста по пути, который не очевиден без терминологии ООП.

Мой рассказ является слегка неточным в отношении принципа Чёрча и машин Тьюринга.

Чёрч фактически делал свое утверждение относительно рекурсивных функций [Church 1936], которые впоследствии оказались эквивалентными вычислениям,