Программа - это шаги по порядку
Вы узнаете
Программа - это список мелких шагов, выполняемых по порядку, и порядок входит в смысл программы.
Программа - это список мелких шагов, которые компьютер выполняет один за другим. Возьмите число 2. Прибавьте 3, потом удвойте: получится 10. Удвойте, потом прибавьте 3: получится 7. Те же два шага в другом порядке дают другой ответ, поэтому, описывая программу агенту, вы описываете и порядок. Цикл - это один шаг, записанный один раз и повторённый: прибавить 3 четыре раза, начиная с 2, даёт 14. Когда результат вас удивил, прочтите шаги по порядку и найдите самый ранний, который делает не то, что вы имели в виду.
Попробуйте
Найдите в спеке три программы: add_then_double, double_then_add и add_three_n_times. Поменяйте LOOP_RESULT с 14 на 11 и запустите: a_loop_is_one_step_repeated падает, потому что 11 - это три шага, а не четыре. Верните 14 на место.
The same two steps, add 3 and double, in two orders give two answers, and a loop repeats one step. Lesson 2 of the vibecoding course.
specs/vibecoding/steps_in_order.t27
// SPDX-License-Identifier: Apache-2.0
; Vibecoding lesson 2: a program is steps in order.
; The same two steps in another order give another answer, and a loop repeats one step.
module vc_steps_in_order;
; add 3, then double
pub fn add_then_double(x: u16) -> u16 {
return (x + 3) * 2;
}
; double, then add 3
pub fn double_then_add(x: u16) -> u16 {
return x * 2 + 3;
}
; one step, repeated: add 3, n times
pub fn add_three_n_times(start: u16, n: u8) -> u16 {
var s : u16 = start;
for i in 0..n {
s = s + 3;
}
return s;
}
pub const START : u16 = 2;
pub const TIMES : u8 = 4;
; What each program printed when it ran with START.
pub const ADD_FIRST : u16 = 10;
pub const DOUBLE_FIRST : u16 = 7;
pub const LOOP_RESULT : u16 = 14;
test add_first_then_double {
assert ADD_FIRST == (START + 3) * 2;
}
test double_first_then_add {
assert DOUBLE_FIRST == START * 2 + 3;
}
test the_order_changes_the_answer {
assert ADD_FIRST != DOUBLE_FIRST;
}
test a_loop_is_one_step_repeated {
assert LOOP_RESULT == START + 3 * 4;
assert LOOP_RESULT == START + 3 + 3 + 3 + 3;
}
Все уроки
Модуль 1 · Что такое вайбкодинг
Вы описываете, агент пишет, вы запускаете и проверяете. Что такое программа, и пять мифов, проверенных тестом.
Модуль 2 · Ваш рабочий стол
Редактор с агентом рядом, десять команд терминала и чтение сообщения об ошибке.
Модуль 3 · Точки сохранения в git
Коммит это точка сохранения, ветка это безопасная проба, а ключ это пара, одна половина которой остаётся приватной.
Модуль 4 · Промптинг
Части промпта, пример вместо прилагательного и один маленький шаг за раз.
Модуль 5 · Рабочий цикл
Четыре фазы от идеи до выпуска, цикл из четырёх шагов и что делать, когда вы застряли.
Модуль 6 · Тест как судья
Тест говорит да или нет, подложенная ошибка показывает, что тест работает, а дифф читают до того, как принять.
Модуль 7 · Из чего состоит агент
Чем агент отвечает, что он умеет делать с инструментами и что хранит между сообщениями.
Модуль 8 · Начальный бот
Бот это цикл сообщений, бот строится из спеки, а секрет остаётся вне репозитория и промпта.
Модуль 9 · Ваш собственный проект
Спека для вашей идеи, одна величина, измеренная после запуска, и честный план на следующий месяц.