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

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

создания интерактивных функций, выполняющихся на стороне сервера. РНР-код может быть встроен в Web-страницы для получения доступа к БД и отображения содержащейся в ней информации. Аббревиатура «РНР» первоначально расшифровывалась как «Personal Home Page», но теперь означает «РНР: Hypertext Processor*.

Python

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

SQL (Structured Query Language, язык структурированных запросов) «де-факто» является стандартным языком выполнения запросов, обновлений реляционнных БД и управления ими. В отличие от других языков, описанных в этом разделе, SQL является «декларативным языком», т. е. определяет не последовательность, а результат выполнения некоторых операций.

Visual Basic

Basic (Beginners All-purpose Symbolic Instruction Code, универсальная система символического кодирования для начинающих) - это высокоуровневый язык, первая версия которого была разработана в Дартмутском колледже в 1960-х. Visual Basic - это высокоуровневая объектно-ориентированная версия Basic, предназначенная для визуального программирования. Изначально Visual Basic был разработан в Microsoft для создания приложений Microsoft Windows. Позднее в нем была реализована поддержка настройки Microsoft Office и других приложений для настольных ПК, создания Web-приложений и других программ. По оценкам экспертов в самом начале первого десятилетия XXI века Visual Basic являлся самым популярным языком среди профессиональных разработчиков (Feiman and Driver, 2002).

4.2. Конвенции программирования

В высококачественном приложении должна быть очевидна „ «

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

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



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

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

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

4.3. Волны развития технологий

я видел, как взошла звезда ПК, в то время как звезда мэйнфреймов опустилась за горизонт. Я видел, как консольные программы были вытеснены программами с GUI. Я также видел, как традиционные программы уступили главную роль Web-приложениям. Могу предположить, что, когда вы будете читать эту книгу, будут бурно развиваться некоторые новые технологии, а Web-программирование в его современном (2004) виде начнет отходить на второй план. В соответствии с этими технологическими циклами, или волнами, изменяются и методики программирования.

В зрелых технологических средах - таких как среда Web-программирования в середине 2000-х - нам доступны все достоинства богатой инфраструктуры разработки ПО. Такие среды предоставляют широкий выбор языков программирования, мощные средства поиска ошибок, эффективные инструменты отладки и надежные автоматизированные средства оптимизации производительности приложений. Компиляторы почти не содержат ошибок. Инструменты хорошо описаны в документации производителей, в книгах и статьях сторонних фирм и на многочисленных Web-сайтах. Инструменты интегрированы, благодаря чему вы можете разрабатывать UI, модули работы с БД, составления отчетов и бизнес-логики в одной среде. Решения проблем можно легко найти в ответах на «часто задаваемые вопросы». Кроме того, доступны разнообразные услуги консультантов и программы тренинга.

В ранних средах - таких как Web-программирование в середине 1990-х - ситуация противоположная. Языков программирования мало, при этом они часто полны ошибок и плохо документированы. Вместо написания нового кода программисты тратят массу времени только на то, чтобы разобраться в особенностях языка. Бесчисленные часы уходят на борьбу с ошибками в языках, ОС и других инструментах. Инструменты программирования часто примитивны. Отладчиков может не быть вообще, а об оптимизаторах компиляторов программистам приходится



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

Вам может показаться, что я рекомендую избегать программирования в ранних средах, но это не так. В ранних средах были разработаны программы, давшие начало некоторым из самых инновационных приложений, такие как Turbo Pascal, Lotus 123, Microsoft Word и браузер Mosaic. Я просто хочу сказать, что от стадии развития технологии зависит то, как будет протекать ваша работа. В зрелой среде вы можете посвящать большую часть дня постепенной реализации новой функциональности. Работая в ранней среде, исходите из того, что вам придется тратить много времени на выяснение недокументированных возможностей выбранного языка программирования, отладку ошибок, которые в итоге окажутся дефектами библиотек, проверку того, что написанный код будет работать с новой версией библиотеки какого-нибудь производителя и т. д.

При работе в примитивной среде методики программирования, описанные в этой книге, могут оказаться еще более полезными, чем в зрелых средах. Как сказал Дэвид Грайс (Gries, 1981), подход к программированию не должен определяться используемыми инструментами. В связи с этим он проводит различие между программированием на языке (programming in language) и программированием с использованием языка (programming into language). Разработчики, программирующие «на» языке, ограничивают свое мышление конструкциями, непосредственно поддерживаемых языком. Если предоставляемые языком средства примитивны, мысли программистов будут столь же примитивными.

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

Пример программирования с использованием языка

Разрабатывая программу на Visual Basic, который тогда находился на раннем этапе развития, я с огорчением обнаружил, что язык не поддерживает встроенных способов разделения бизнес-логики, кода GUI и кода работы с БД. Я знал, что, если буду невнимателен, со временем некоторые из моих «форм» Visual Basic включат в себя код бизнес-логики, другие - код доступа к БД, а остальные не будут содержать ни того, ни другого - в итоге я не смогу вспомнить, какая форма за что отвечает. Я только что завершил работу над проектом С++, в котором разделение кода было выполнено плохо, и не хотел еще раз наступать на те же грабли.

Поэтому я принял конвенцию, в соответствии с которой файлам .frm (файлам формы) дозволялось только извлекать данные из БД и сохранять их обратно, но не передавать эти данные другим частям программы. Все формы поддерживали



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.003