Главная - Литература

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 [234] 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

30.6. Волшебная страна

инструментальных средств

Десятилетиями поставщики инструментария и ученые мужи ni тшш Щтуп обещают, что создание средств, которые позволят отказаться щнщутпщт штт от программирования, не за горами. Первым и, кажется, от стшни развмя lewtonofn-самым забавным случаем присвоения этого ярлыка, был язык жт щш рщп 4.3). Fortran. Fortran (Formula Translation Language, язык преобразований формул) задумывался как средство, которое даст ученым и инженерам возможность просто набирать формулы и, таким образом, обойтись без помощи программистов.

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

Индустрия ПО постоянно разрабатывает новые инструменты, которые уменьшают влияние (или совсем исключают) некоторых наиболее утомительных аспектов программирования: деталей размещения операторов исходного кода; шагов, предпринимаемых для редактирования, компиляции, компоновки и выполнения программы; работы по поиску несогласованных скобок; действий по созданию стандартных текстовых сообщений и т. д. Поскольку каждое из этих новых средств начинает демонстрировать выигрыш в производительности, ученые мужи экстраполируют этот выигрыш до бесконечности, предполагая, что благодаря ему в конце концов «исчезнет необходимость в программировании». Но на самом деле каждая инновация содержит некоторые изъяны. С течением времени изъяны исправляются, и потенциал инновации реализуется полностью. Однако после реализации фундаментальной концепции инструмента дальнейший выигрыш достигается путем удаления случайных трудностей, возникших в качестве побочного эффекта при создании нового инструмента. Устранение этих случайных проблем по сути не увеличивает производительность, а просто исключает «шаг назад» из типичного уравнения «два шага вперед, один шаг назад».

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

Причина в том, что программирование - принципиально сложный процесс даже при наличии хорошего инструментария. Дело не в инстру- л,,!, щ О щщц ментах - программистам приходится бороться с несовер- спттт прогрттрош-шенством реального мира; нам нужно досконально проду- нт т. подраздел «Существен-мывать последовательности, зависимости и исключения, ные несущественше пропе иметь дело с конечными пользователями, которые никак не раздш Ь± могут ничего решить. Нам всегда придется бороться с пло-



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

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

Когда вы слышите заявления о том, что «новый инструментарий устранит необходимость компьютерного программирования», бегите! Или хотя бы посмейтесь про себя над этим наивным оптимизмом.

Дополнительные ресурсы

Дополнительную информацию о программном инструментарии содержат следующие источники.

Шр: сс2е,сот/309а , . лvr -

ummsamagazme.com/jolts. Web-сайт, посвященный ежегодной

премии Jolt Productivity журнала «Software Development Maga-http7/cc2e com/3006 zine», - хороший источник информации о лучших на се-

годняшний день инструментах.

Hunt, Andrew and David Thomas. The Pragmatic Programmer. Boston, MA: Addison-Wesley, 2000. Раздел 3 этой книги содержит всестороннее исследование программного инструментария, включая редакторы, кодогенераторы, отладчики, системы управления версиями и другие аналогичные инструменты.

Vaughn-Nichols, Steven. «Building Better Software with Better Too\s», IEEE Computer, September 2003, pp. 12-14. В этой статье http: cc2exom/3012 приводится обзор инициатив в области разработки инст-

рументальных средств, выдвинутых IBM, Microsoft Research

и Sun Research.

Glass, Robert L. Software Conflict: Essays on the Art and Science of Software Engineering. Englewood Cliffs, NJ: Yourdon Press, 1991. В главе «Recommended: A Minimum Standard Software Toolset» в противовес мнению о том, что чем больше инструментов, тем лучше, автор ратует за определение минимального набора инструментов, который должен быть доступен каждому разработчику и предлагаться в виде стартового комплекта.

Jones, Capers. Estimating Software Costs. New York, NY McGraw-Hill, 1998.

Boehm, Barry, et al. Software Cost Estimation with Cocomo П. Reading, MA: Addison-Wesley 2000. Книги Джонса и Бома содержат разделы, посвященные влиянию инструментальных средств на производительность.



Контрольный список: программнь[й

инструментарий hxtpimomm

□ Используете ли вы эффективную IDE?

□ Поддерживает ли ваша IDE интеграцию с системой управления исходным кодом, средствами компоновки, тестирования и отладки и другую полезную функциональность?

□ Есть ли у вас инструменты для автоматизации часто выполняемого рефакторинга?

□ Используете ли вы систему управления версиями для управления исходным кодом, содержанием, требованиями, результатами проектирования, планами работ и другими элементами проекта?

□ Используете ли вы при работе над очень большим проектом словарь данных или другой центральный репозиторий, содержащий официальное описание каждого класса, пирменяемого в системе?

□ Рассматривался ли вопрос использования библиотек кода в качестве альтернативы написанию собственного кода там, где это возможно?

□ Пользуетесь ли вы интерактивным отладчиком?

□ Используете ли вы make или другое ПО для контроля зависимостей, чтобы создавать программы эффективно и надежно?

□ Содержит ли ваша среда тестирования инструменты для автоматического тестирования, генераторы тестов, мониторы покрытия, средства для стрессового тестирования, инструменты для сравнения и ПО для отслеживания дефектов?

□ Создаете ли вы специальные средства, способные помочь в поддержке специальных нужд проекта, особенно инструменты, автоматизирующие повторяющиеся задания?

□ Получает ли ваша среда преимущества от применения надлежащего инструментария?

Ключевые моменты

Хороший инструментарий может значительно облегчить вам жизнь.

Можно легко приобрести инструменты для редактирования, анализа качества кода, рефакторинга, управления версиями, отладки, тестирования и настройки кода.

Вы можете создать множество инструментов специального назначения.

Хорошие инструменты могут упростить наиболее утомительные аспекты разработки ПО, но они не могут исключить необходимость программирования, хотя и способствуют эволюции того понятия, которое мы вкладываем в слово «программирование».



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 [234] 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294



0.0102