Читаем Человеческий фактор в программировании полностью

Программист, проспавший большую часть последних десяти или двадцати лет, наверное, не знает о том, что такое объектно-ориентированное программирование. Остальные из нас уже сыты этими объектами по горло. Я испытываю некоторое сочувствие к этим ван Винклям[33] нашей отрасли, поскольку в 1986 году, когда я имел неосторожность вернуться в компьютерную индустрию, объектная технология уже была звездой, восходившей с головокружительной скоростью. А ведь за десять лет до этого, в пору моего последнего отсутствия в компьютерной области, объектно-ори-ентированное программирование было неизвестным хмурым карликом, скрытым в космосе непонятных компьютерных методов. Конечно, спустя десяток лет очень легко определять, какие тенденции проявлялись ранее.

Нельзя сказать, что объектно-ориентированный подход является особенно новым. Хотя некоторые авторы связывают провал структурных методов с возникновением объектно-ориентированных, на самом деле, структурное программирование и проектирование появилось почти одновременно с объектами, возникнув из одного первобытного болота неструктурных методов. Дейкстра (Dijkstra), Константин (Constantine), Кэй (Кауе), Даал (Dahl) и Сатерленд (Sutherland) — все эти люди работали параллельно в конце 60-х и начале 70-х годов, разрабатывая и распространяя основные понятия новых способов мышления о программах и программировании.

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

«Как же можно объект уподобить информационному кластеру или модулю с информационным сцеплением?», — может спросить дотошный студент.

«Послушайте, — отвечает нетерпеливый преподаватель, — я же сказал вам забыть обо всей этой старой структурной чепухе. Это не работало. И пока вы не очистите кору головного мозга от этих вещей, вы ничего не поймете». (Подразумевается, что преподаватель даже и не знает, о чем спрашивает студент, поэтому пусть студент закроет рот и слушает.)

Многие из педагогов и демагогов, которые в то время занимались 00, утверждали, что единственный путь к «объектной эффективности» — это отказ от старых способов. Нужно забыть все, что вы знаете (или думаете, что знаете) о разработке программного обеспечения, и изучить совершенно новую парадигму. Следовало начать все сначала — с чистой грифельной доски в голове.

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

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

Некоторая расплывчатость определений и полное отсутствие консенсуса относительно того, что можно считать основными понятиями в ОО, не улучшали положения бедного странника, ищущего объектно-ориентиро-ванного просветления. Однако со временем все установилось, и сегодня есть общепринятая терминология и концепции объектно-ориентированной парадигмы.

Упаковка

В 00 есть множество аспектов. Для некоторых этот подход является способом прожить, для других это образ жизни. Для того чтобы постичь 00 в полном его великолепии, следует понимать не только инкапсуляцию или сокрытие описания, но также и наследование, делегирование, универсальность, динамическое связывание и полиморфизм. (И люди еще говорят, что структурная революция навязала слишком много новых терминов!) Все эти понятия представляют собой важные аспекты данной парадигмы и ее практического применения, но реальная причина того, что в разработке программ объекты ждет большое будущее, намного проще.

В короткой статье невозможно описать все тонкости объектно-ориентированной парадигмы, но главные вопросы, связанные с человеческим фактором в программировании (peopleware), являются довольно простыми. (Написав эти строки, я уже слышу, как стучат клавиши, чтобы подготовить негодующие электронные письма, которые скоро будут переполнять мой ящик.)

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT