Длительность рабочего цикла

Длительность рабочего цикла

Но сам процесс работы серьезно изменился. В 1960-е годы я мог ждать день или два для получения результатов компиляции. В конце 1970-х годов программа из 50 000 строк компилировалась около 45 минут. Даже в 1990-е годы долгая сборка казалась нормой.

В наши дни программисты не ждут результатов компиляции.[25] В их распоряжении появилась такая немыслимая вычислительная мощь, что цикл «красный-зеленый-рефакторинг» может прокручиваться буквально за секунды.

Например, я веду проект FitNesse, написанный на Java и состоящий из 64 000 строк кода. Полная сборка со всеми модульными и интеграционными тестами занимает менее 4 минут. Если тесты проходят, то я публикую новую версию продукта. Таким образом, весь процесс контроля качества, от исходного кода до развертывания, занимает менее 4 минут. Время компиляции ничтожно мало. Тесты выполняются за считанные секунды. Выходит, цикл компиляции/тестирования может прокручиваться по 10 раз в минуту!

Конечно, не всегда стоит работать с такой скоростью. Часто бывает лучше замедлиться и подумать.[26] Но в некоторых ситуациях прокрутка цикла с максимальной скоростью оказывается в высшей степени производительной.

Для быстрого выполнения чего угодно необходима тренировка. Быстрая прокрутка цикла «код/тест» требует очень быстрого принятия решений. А для быстрого принятия решений необходимо успешно распознавать огромное количество ситуаций и проблем, а также просто знать решения.

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

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

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

Представьте гитариста – скажем, Карлоса Сантану. Музыка в его голове просто переходит в пальцы. Он не задумывается над положением пальцев или приемами игры. Его ум свободен для планирования высокоуровневых мелодий и гармоничных сочетаний, тогда как его тело преобразует эти планы в низкоуровневые движения пальцев.

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

Данный текст является ознакомительным фрагментом.



Поделитесь на страничке

Похожие главы из других книг:

Операторы цикла

Из книги автора

Операторы цикла Для многократного выполнения кода используют операторы цикла. Кроме того, циклы предоставляют удобные средства для манипулирования массивами.Цикл forОператор for служит для создания цикла. Он имеет следующий синтаксис:for (выражение инициализации;


Прерывание и перезапуск цикла

Из книги автора

Прерывание и перезапуск цикла Иногда бывает нужно прервать выполнение цикла. Для этого JavaScript предоставляет Web-программистам операторы break и continue.Оператор прерывания break позволяет прервать выполнение цикла и перейти к следующему за ним выражению:while (a < 100) {a = a * i + 2;if (a


2.2. Повторение (операторы цикла)

Из книги автора

2.2. Повторение (операторы цикла) Циклом называется группа операторов, которая выполняется повторно. После каждого повторения проверяется условие, называемое условием окончания цикла, по которому принимается решение продолжать повторение или закончить


R.6.5 Операторы цикла

Из книги автора

R.6.5 Операторы цикла Эти операторы задают виды цикла.оператор-цикла: while ( выражение ) оператор do оператор while ( выражение ) for ( оператор-иниц выражение opt ; выражение opt ) оператороператор-иниц: оператор-выражение оператор-описаниеОбратите внимание, что конструкция


Задание шага цикла

Из книги автора

Задание шага цикла Полный синтаксис оператора For. . .Next включает необязательное ключевое слово Step (шаг) в первой строке структуры, как, например, в следующем фрагменте программного кода: Sub ListOddNumbers() Dim strOddNumbers As String For F = 1 To 33 Step 2 StrOddNumbers = strOddNumbers 5 F & " " Next F MsgBox "Нечетными


Завершение цикла while

Из книги автора

Завершение цикла while      Мы подошли к самому существенному моменту рассмотрения циклов while. При построении цикла while вы должны включить в него какие-то конструкции, изменяющие величину проверяемого выражения так, чтобы в конце концов оно стало ложным. В противном случае


5.5. Инструкция цикла for

Из книги автора

5.5. Инструкция цикла for Как мы видели, выполнение программы часто состоит в повторении последовательности инструкций - до тех пор, пока некоторое условие остается истинным. Например, мы читаем и обрабатываем записи файла, пока не дойдем до его конца, перебираем элементы


Операторы цикла while и repeat

Из книги автора

Операторы цикла while и repeat Оператор цикла while имеет следующую форму: while условие do оператор Условие представляет собой выражение логического типа, а оператор после do называется телом цикла. Перед каждой итерацией цикла условие вычисляется, и если оно истинно, то


Синтаксис цикла

Из книги автора

Синтаксис цикла Синтаксис цикла непосредственно следует из предшествующих соображений, определяющих ингредиенты цикла. Он будет включать элементы, отмеченные как необходимые.[x]. Инвариант цикла inv - утверждение.[x]. Условие выхода exit, чья конъюнкция с inv дает желаемую