에이다 러브레이스의 애널리티컬 엔진 노트는 반복 가능한 알고리즘을 설명했습니다. 그녀의 초기 아이디어가 현대의 프로그램 설계와 어떻게 닮아 있는지 살펴보세요.

아마 헤드라인 버전은 들어보셨을 겁니다: 에이다 러브레이스는 “최초의 알고리즘”을 썼다—찰스 배비지의 애널리티컬 엔진에서 실행되도록 의도된 일련의 지시문. 사람들은 여전히 이것을 인용합니다. 현대의 프로그래밍이라 부르는 것, 즉 목표를 기계가 따를 수 있는 정확한 단계로 분해하는 예시로서 꽤 분명하게 드러나기 때문입니다.
이 글은 엔진의 기어를 재현하거나 모든 역사적 주장을 논쟁 없이 증명하려는 것이 아닙니다. 대신 러브레이스의 작업 안에 있는 프로그래밍 아이디어에 초점을 맞춥니다: 수학 문제를 실행 가능한 것으로 바꾸는 방법, 데이터를 어떻게 표현하는지, 그리고 누군가(또는 어떤 것)가 그것을 실행할 수 있도록 절차를 어떻게 전달하는지입니다.
러브레이스의 유명한 "노트"는 수학과 소프트웨어 설계 사이의 다리처럼 읽힙니다. 그 기계가 대부분 가설적이었음에도, 그 사고방식은 신뢰성 있게 컴퓨터에게 무언가를 시켜본 적이 있는 사람들에게 친숙합니다.
우리가 주목할 점은 다음과 같습니다:
끝에 가서 목표는 단순합니다: 러브레이스의 "최초의 알고리즘"을 박물관 유물처럼 보는 대신, 우리가 오늘날 프로그램을 설계할 때 여전히 닮아 있는 계산적 사고의 초기 템플릿으로 이해하는 것입니다.
아가스타 에이다 킹, 러브레이스 백작 부인—보통 에이다 러브레이스로 알려진 그녀—는 시와 수학이 만나는 길목에서 자랐습니다. 어머니는 엄격한 학문을 장려했고, 에이다는 곧 소수의 저명한 과학자와 사상가 그룹의 일원이 되었습니다. 그녀는 고립된 천재가 아니라 기계가 무엇을 의미할 수 있는지에 대해 유난히 명확한 질문을 던진 재능 있는 협력자였습니다.
찰스 배비지는 이미 기계식 계산 설계로 유명했을 때 에이다를 만났습니다. 배비지는 머리속으로 하드웨어를 설계할 수 있었고: 기어, 축, 숫자 바퀴들을 시스템으로 배치하곤 했습니다. 반면 에이다는 복잡한 기술적 아이디어를 구조화된 전달 가능한 개념으로 번역하는 재능이 있었습니다.
두 사람의 관계는 서로 강점이 달랐기 때문에 잘 작동했습니다. 배비지는 공학적 비전을 밀어붙였고, 에이다는 개념적 비전을 전진시켰습니다—특히 기계가 누군가가 미리 디자인한 일련의 연산을 따라갈 수 있다는 아이디어였습니다.
배비지의 애널리티컬 엔진은 단순히 더 나은 계산기가 아니었습니다. 도면상으로는 값들을 저장하고 연산을 수행하며 계획된 절차를 단계별로 실행할 수 있는 범용 기계를 묘사했습니다. 이는 오늘날 우리가 말하는 프로그래머블 컴퓨터의 초기 청사진으로 생각할 수 있습니다—비록 그들의 생애 동안 완성되지는 않았지만요.
1840년대는 수학, 산업, 자동화가 겹치기 시작한 시기였습니다. 사람들은 신뢰할 수 있는 방법—표, 공식, 반복 가능한 절차—을 원했는데 잘못은 비용이 컸고 과학은 가속화되고 있었습니다. 그런 맥락에서, "기계에 지시하는 방법"에 대한 에이다의 관심은 단순한 호기심이 아니었습니다. 인간의 추론을 반복 가능하고 검증 가능한 과정으로 바꾸려는 시기적 요청에 대한 응답이었습니다.
에이다 러브레이스가 알고리즘을 설명하기 전에, "프로그래밍"할 가치가 있는 기계가 있어야 했습니다. 찰스 배비지의 애널리티컬 엔진은 단일 공식용 장치가 아니라 여러 다른 연산 시퀀스를 수행하도록 설정할 수 있는 범용 계산기로 구상되었습니다.
핵심 아이디어는 직관적입니다: 문제를 작은 산술 단계(더하기, 빼기, 곱하기, 나누기)로 쪼갤 수 있다면, 기계는 그 단계들을 올바른 순서로 필요한 만큼 신뢰성 있게 수행할 수 있어야 합니다.
이것이 일회성 계산에서 재사용 가능한 방법으로의 도약입니다.
배비지는 두 가지 주된 구성 요소를 묘사했습니다:
입력과 출력을 위해 엔진은 천공 카드(직기에서 영감을 얻음)를 사용해 명령과 데이터를 받도록 설계되었고, 결과는 인쇄되거나 기록되는 등 사람이 사용할 수 있는 형태로 만들어지도록 고안되었습니다.
오늘날의 관점으로 매핑하면:
이 때문에 애널리티컬 엔진은 우리가 여전히 의존하는 동일한 분리를 스케치합니다—단계를 실행할 수 있는 하드웨어, 그리고 어떤 단계를 실행할지 정의하는 프로그램.
사람들이 에이다 러브레이스와 첫 알고리즘을 말할 때, 종종 특정 부록을 가리킵니다: 그녀가 루이지 메나브레아의 애널리티컬 엔진에 관한 논문을 영어로 번역하면서 덧붙인 "노트"들입니다.
메나브레아는 기계의 개념을 서술했지만, 러브레이스는 한 걸음 더 나아가 엔진을 지시할 수 있는 것으로 취급했습니다—단순히 감탄할 대상이 아니라는 점입니다. 이 전환이 바로 이 노트들이 프로그래밍 역사에서 그렇게 중요한 이유입니다. 노트는 목표를 정확한 단계로 쪼개고, 표현을 선택하며, 메커니즘이 그것들을 어떻게 따를지 예측하는 초기의 계산적 사고처럼 읽힙니다.
러브레이스의 노트는 지금 우리가 프로그램 설계라 부르는 것을 설명합니다. 그녀는 엔진의 부품(메모리 저장소와 처리 "밀" 같은)을 연산이 어떻게 순서화되고 제어될 수 있는지의 관점에서 설명합니다. 중심 아이디어는 간단하지만 심오합니다: 애널리티컬 엔진이 정의된 순서로 정의된 기호들에 대해 연산을 수행할 수 있다면, 그 "방법"은 기계가 실행할 수 있는 형태로 기록되어야 합니다.
이 지점에서 그녀의 작업은 현대 프로그래밍과 닮아갑니다. 단지 이론이 아니라 방법입니다.
가장 중요한 것은, 노트에는 단계별로 제시된 작업 예제가 표 형태로 포함되어 있다는 점입니다. 표는 한 줄씩 기계가 무엇을 해야 하는지—어떤 값이 어느 위치에 있는지, 다음 어떤 연산이 수행되는지, 결과가 어디에 저장되는지—를 보여줍니다.
그 표 형식은 오늘날의 의사코드, 순서도, 명령 스케줄의 선조입니다: 추측할 필요 없이 따를 수 있는 명시적이고 검증 가능한 계획입니다. 애널리티컬 엔진을 실제로 만들지 않더라도, 아이디어를 실행 가능한 연속으로 바꾸는 습관은 여전히 소프트웨어 작성의 핵심입니다.
일상어로 말하면 알고리즘은 반복 가능한 방법입니다: 시작점에서 답으로 신뢰성 있게 이끄는 명확한 단계의 집합—레시피처럼 직관에 의존하지 않고 단계를 따르면 항상 같은 결과가 나옵니다.
에이다 러브레이스의 유명한 예제 알고리즘은 베르누이 수를 계산하려는 것이었습니다—이 수열은 수학의 여러 영역(예: 1 + 2 + … + n의 합 공식 등)에서 등장합니다. 이론을 몰라도, 범용 기계의 초기 테스트 케이스로 왜 적절한지는 이해할 수 있습니다.
다음과 같은 적절한 난이도를 갖추고 있습니다:
다시 말해, 구조화된 작업을 기계가 따라할 수 있음을 증명하기에 충분히 복잡하면서도 단계로 적기에 정돈되어 있습니다.
핵심적으로 알고리즘은 오늘날 프로그램에서 여전히 사용하는 친숙한 구조를 가집니다:
이렇게 보면, 러브레이스는 단순히 어떤 수가 계산되는 것을 지적한 것이 아니라, 기계가 추측 없이 실행할 수 있도록 다단계 계산을 조직하는 방법을 보여준 것입니다.
사람들이 러브레이스의 베르누이 수 알고리즘을 말할 때, 종종 결과(“초기 프로그램”)에 초점을 맞추고 신뢰성을 보장하는 설계 작업을 간과합니다. 진짜 업적은 단지 연산을 나열한 것이 아니라—기계가 즉흥 연산 없이 따를 수 있도록 그것들을 형태화한 것입니다.
"베르누이 수 계산"을 하나의 작업으로 다루는 대신, 노트는 반복하고 검증할 수 있는 작은 부분들로 나눕니다: 중간 값 계산, 특정 공식으로 결합, 결과 기록, 다음 경우로 진행 등.
이 분해는 각 하위 작업을 독립적으로 검증할 수 있게 해 중요합니다. 출력이 잘못되면 "전체 알고리즘"을 디버그하는 대신 한 부분을 검사하면 됩니다.
기계식 컴퓨터는 "마음에" 무언가를 간직하지 않습니다. 나중에 필요할 모든 값은 어딘가에 저장되어야 하며, 노트는 그 점을 면밀히 다룹니다. 어떤 숫자는 임시 작업 값이고, 어떤 숫자는 나중 단계까지 유지되어야 하는 최종 결과입니다.
이것은 프로그램 상태를 생각하는 초기 형태입니다:
연산의 순서는 안전 장치입니다. 특정 계산은 다른 것들보다 먼저 일어나야 하며, 이는 우아함 때문이 아니라 준비되지 않은 값을 사용하는 것을 피하거나 여전히 필요한 값을 덮어쓰는 일을 막기 위해서입니다.
현대 용어로 말하면, 러브레이스는 프로그램이 명확한 경로를 갖도록 제어 흐름을 설계합니다: A를 하고, 그다음 B를 하고, 그다음 C를 한다—B를 먼저 하면 조용히 잘못된 답을 낼 것이기 때문입니다.
러브레이스의 단계표에서 가장 "현대적인" 아이디어 중 하나는 반복입니다: 같은 지침 집합을 계속해서 수행하는 능력—단순히 반복하려고 하는 것이 아니라, 반복이 결과에 이르는 가장 빠른 길이기 때문입니다.
프로그램에서 반복은 다음을 의미합니다: 작은 단계 레시피를 따르고, 끝났는지 확인한 다음 끝나지 않았다면 같은 레시피를 다시 실행합니다. 핵심은 매번 무언가가 바뀐다는 점입니다—종종 카운터, 표에서의 위치, 또는 만들고 있는 값—그래서 프로그램이 종료선으로 나아갑니다.
러브레이스의 표기에서는 이전 단계로 구조적으로 돌아가는 것으로 볼 수 있습니다. 동일한 지침을 여러 번 다시 쓰기보다 패턴을 설명하고 언제 순환할지 표시합니다. 이것이 우리가 이제 이터레이션이라 부르는 개념의 씨앗입니다.
코드를 써본 적이 있다면 이 패턴을 for 루프("이것을 N번 반복")나 while 루프("조건이 참일 때까지 반복")로 보았을 것입니다. 그녀의 표는 또한 익숙한 루프 구성요소들을 암시합니다:
다음 상황을 상상해보세요.
total = 0으로 시작i = 1으로 시작i를 total에 더함i를 1만큼 증가시킴i가 여전히 5 이하이면 더하고 증가시키는 단계를 반복이것이 평범한 이터레이션입니다: 카운터를 업데이트하고 결과를 누적하는 작은 루프. 러브레이스의 기여는 그녀가 무엇을 계산했는지가 아니라, 반복 구조를 기계(과 미래의 인간)가 신뢰성 있게 실행할 수 있도록 명확히 적을 수 있음을 보여준 점입니다.
절차는 머릿속에서는 완벽히 논리적일 수 있지만, 기계나 다른 사람이 따르려면 변하는 양을 참조할 방법이 필요합니다. 바로 변수와 표기법의 중요성이 여기에 있습니다.
변수는 책상 위에 붙인 라벨이 있는 상자처럼 생각하세요. 라벨은 그대로지만 내용물은 작업하면서 바뀔 수 있습니다.
수열을 계산할 때는 다음 같은 상자가 필요할 수 있습니다:
이런 상자들이 없으면 "두 단계 전의 계산값을 가져와서…"처럼 길게 설명해야 하고 곧 엉키기 쉽습니다.
러브레이스의 노트에서 기호와 라벨은 형식을 갖추기 위해 있는 것이 아니라 절차를 실행 가능하게 만들기 위해 있습니다. 명확한 표기는 실용적인 질문에 답합니다:
절차가 길어질수록 이런 작은 명확화가 가장 흔한 오류—비슷해 보이는 양들을 혼동하는 것—을 방지합니다.
좋은 변수 이름 짓기는 여전히 버그를 줄이는 가장 저렴한 방법 중 하나입니다. x1, x2, x3 대신 current_sum, term_index, next_term처럼 이름을 짓는다면 두 번째 집합은 각 상자가 무엇을 위한 것인지를 알려줍니다.
타입은 또 다른 안전층을 추가합니다. 어떤 것이 정수인지, 소수인지, 리스트인지, 레코드인지 결정하는 것은 적절한 용기를 고르는 것과 같아서 몇몇 실수는 애초에 불가능하거나 적어도 초기에 잡기 쉬워집니다.
변수와 표기법은 "영리한 아이디어"를 누구(기계 포함)가 따라해도 정확히 반복될 수 있는 단계로 바꿉니다.
추상화는 중요한 것에 집중하고 필요 없는 세부는 숨기는 것을 의미합니다. 이것은 "이 리스트를 정렬하라"고 말하는 것과 모든 교환과 비교를 손수 적는 것의 차이입니다. 러브레이스의 노트는 이러한 직관을 일찍 보여줍니다: 핵심 방법을 전달하려고 기계의 물리적 세부에 사로잡히지 않습니다.
노트의 눈에 띄는 특징은 핵심 아이디어를 기계의 물리적 동작과 독립적으로 유지하려는 점입니다. 애널리티컬 엔진은 자체적인 "방법"(기어, 저장소, 밀의 동작)을 가졌지만, 노트는 결과를 얻기 위해 필요한 연산의 순서, 즉 "무엇"을 강조합니다.
이 분리는 오늘날 우리가 소프트웨어 설계라 부르는 것의 씨앗입니다:
방법을 기계와 무관하게 설명할 수 있다면, 그 계산은 이식 가능해집니다—다른 하드웨어나 다른 사람에 의해 재구현될 수 있습니다.
노트의 단계별 표는 초기의 "절차"를 닮았습니다: 반복해서 따를 수 있는 정의된 단계 집합. 현대 코드는 이를 함수, 모듈, 재사용 가능한 구성요소로 형식화합니다.
좋은 함수는 러브레이스의 표현 방식이 하는 일을 합니다:
추상화는 모호함의 문제가 아니라 사용 가능성의 문제입니다. 방법을 깔끔하게 표현하면 자연스럽게 재사용이 따라옵니다: 다른 입력으로 다시 호출하고, 다른 방법과 결합해 더 큰 시스템을 만들 수 있습니다.
에이다 러브레이스는 애널리티컬 엔진이 무엇을 할 수 있는지 설명하는 것뿐 아니라—절차를 다른 사람(또는 기계)이 모호함 없이 따르도록 만드는 방법을 제시했습니다. 이것이 그녀의 노트의 조용한 힘입니다: 설명을 작업의 일부로 간주한 것입니다.
그녀의 표현이 현대적으로 느껴지는 이유 중 하나는 구조화된 단계별 표의 사용입니다. 표는 모호한 산문이 숨길 수 있는 결정을 강제로 드러냅니다:
이것은 오늘날의 의사코드가 하는 일과 동일하게 모호함을 줄입니다. 문단을 읽고 이해한다고 생각할 수 있지만 실제로 실행해 보면 모르는 것이 드러납니다. 단계표는 "실행 경로"를 가시화하고, 그게 바로 좋은 프로그램 문서화가 목표로 하는 바입니다.
러브레이스의 노트는 오늘날 우리가 함께 유지하려고 하는 세 가지를 섞어 놓았습니다:
프로그램의 목적(의도)
작동 방식(절차)
표기 해석 방법(인터페이스—이름, 기호, 가정)
이는 현대의 주석, 도큐스트링, README와 깔끔하게 대응합니다. README는 목표와 맥락을 설명합니다. 인라인 주석은 까다로운 단계들을 명확히 합니다. 도큐스트링은 입력/출력과 경계 경우를 정의합니다. 이 중 하나라도 빠지면 사용자는 추측하게 되고, 추측은 버그가 자라는 토양입니다.
(코드든 아니든) 절차를 문서화할 때는 다른 사람이 당신 없이 그것을 재현할 것이라고 가정하고 쓰세요:
이것은 추가 작업이 아니라 방법이 재사용 가능해지게 하는 방식입니다.
에이다 러브레이스는 종종 대담한 꼬리표와 함께 소개됩니다: "최초의 프로그래머." 유용한 축약이 될 수 있지만 더 흥미로운 진실을 평평하게 만들기도 합니다. 논쟁은 단지 우월성의 문제가 아니라 프로그램, 컴퓨터, 저작권의 의미에 관한 것입니다.
"프로그래머"가 범용 기계를 대상으로 한 명령을 작성한 사람을 의미한다면, 러브레이스는 강한 주장을 할 수 있습니다. 그녀는 애널리티컬 엔진에 대해 베르누이 수를 생성하는 단계별 방법을 기록했는데, 본질적으로 엔진이 비자명한 계산을 수행하는 방법의 계획을 제시했습니다.
하지만 역사가들은 다음 이유로 그 꼬리표를 두고 논쟁합니다:
계산 아이디어를 발명하는 것과 작동하는 컴퓨터를 만드는 것을 구분하는 것이 중요합니다. 배비지의 주요 공헌은 구조적 설계였습니다: 기억("저장소"), 처리부("밀"), 천공 카드로 제어하는 설계. 러브레이스의 공헌은 해석적이고 표현적이었습니다: 그러한 기계가 무엇을 표현할 수 있는지, 절차를 어떻게 기록해야 기계가 따를 수 있는지를 명확하게 한 점입니다.
하드웨어가 출하되지 않았다고 해서 프로그램이 프로그램이 아닌 것은 아닙니다. 현대적 관점에서는 아직 칩이 존재하지 않는 플랫폼용 소프트웨어를 작성하거나 칩이 나오기 전에 알고리즘을 명세하는 것과 같습니다.
이 시대를 말할 때는 역할별 협업으로 보는 것이 존중하는 태도입니다:
확실히 말할 수 있는 것은: 러브레이스의 노트는 프로그래밍이 무엇인지—단순 계산이 아니라 기계가 따를 수 있는 명확한 절차를 신중하게 표현하는 것—를 정의하는 데 기여했다는 점입니다.
러브레이스의 노트가 중요한 이유는 아이디어를 기계가 실행할 수 있는 계획으로 바꿀 때 어떻게 생각해야 하는지를 보여주기 때문입니다. 천공 카드나 기계식 기어를 직접 다루지 않더라도 핵심 교훈은 현대의 프로그램 설계에 그대로 적용됩니다: 작업에 명확한 구조를 부여하고, 이름을 신중히 정하고, 반복을 의도적으로 사용하고, 재사용 가능한 조각을 구축하세요.
구조가 기교보다 낫다. 작업을 명확한 목적을 가진 단계로 쪼개면 구축과 유지보수가 쉬워집니다. 러브레이스의 접근은 세부에 집착하기 전에 해결책의 형태를 설계하라고 권합니다.
명료함은 기능이다. 그녀의 표와 설명은 장식이 아니라 프로그램의 일부였습니다. 미래의 당신(또는 팀원)이 논리를 빠르게 따라올 수 있으면 프로그램은 더 신뢰성 있게 됩니다.
반복은 도구다, 트릭이 아니다. 반복(루프)은 방법을 확장하는 방법입니다. 핵심은 무엇이 반복되는지, 각 반복에서 무엇이 바뀌는지, 언제 멈추는지를 정의하는 것입니다.
추상화는 재사용을 가능케 한다. 한 번 작동하는 단계는 다른 입력으로도 사용할 수 있어야 합니다. 이것이 함수, 모듈, 라이브러리의 시작입니다.
요구사항을 기술하고 계획을 반복한 뒤 동작하는 소프트웨어를 생성하는 "서술로 만드는" 워크플로를 써본 적이 있다면, 이미 러브레이스의 노트 정신을 재현한 것입니다: 절차를 명확히 하고, 상태를 분명히 하며, 가정을 문서화해 실행을 반복 가능하게 만드는 것입니다. 도구는 새롭지만 규율은 새롭지 않습니다.
이것이 Koder.ai 같은 바이브 코딩 플랫폼이 이 이야기와 자연스럽게 어울리는 이유 중 하나입니다. Koder.ai는 채팅 인터페이스로 웹, 백엔드, 모바일 애플리케이션을 만들게 해주지만, 입력/출력 명세, 일관된 이름 짓기, 단계별 구조(계획 모드는 노트를 고정해 코드 생성이나 변경 전에 확정하는 데 도움을 줄 수 있음)를 지정하면 더 좋은 결과를 얻는다는 기본 원칙은 동일합니다. 도구는 새로워도 규율은 같습니다.
코딩을 시작하기 전이나 지저분한 문제가 있을 때 디버깅할 때 이 빠른 점검을 사용하세요:
노트 우선 스타일의 프로그램 설계 능력을 강화하고 싶다면 다음 자료들이 도움됩니다:
이 습관들을 합치면 프로그래밍을 "동작하게 만들기"에서 "이해하기 쉽게 만들기"로 바꿀 수 있습니다—바로 러브레이스의 노트가 이미 지향하던 전환입니다.
에이다 러브레이스의 "첫 알고리즘"은 찰스 배비지의 애널리티컬 엔진에서 실행되도록 작성된 단계별 절차(그녀의 노트에 수록된)를 말합니다. 유명한 이유는 계산을 저장된 값들에 대해 계획된 연산의 순서로 다루어, 기계가 따를 수 있는 현대적 프로그래밍과 매우 유사한 개념을 제시했기 때문입니다. 다만 당시 엔진은 완성되지 않았습니다.
이 글은 러브레이스의 작업에 담긴 프로그래밍 아이디어—방법을 기계가 실행할 수 있고, 검증 가능하며, 이해할 수 있도록 표현하는 방법—에 초점을 맞춥니다. 엔진의 하드웨어를 재구성하거나 모든 역사적 논쟁을 결론짓는 것이 목적은 아닙니다.
애널리티컬 엔진은 제안된 범용 기계로, 설계상 다음을 할 수 있게 되어 있었습니다:
이 구조는 연산을 실행하는 하드웨어와 어떤 연산을 실행할지 규정하는 프로그램을 분리한다는 점에서 현대 컴퓨터의 핵심 개념과 맞닿아 있습니다.
베르누이 수는 여러 수학 공식에 등장하는 수열로, 새 항이 이전 항들에 의존합니다. 따라서 여러 연산, 중간 저장, 반복 가능한 단계가 필요해 범용 기계의 테스트 케이스로 적절합니다. 복잡하지만 규칙적이라 단계로 적어 검증하기 좋습니다.
단계 표(step table)는 정확성을 강제합니다. 표는 다음을 명확히 하게 만듭니다:
이 때문에 현대의 의사코드와 유사하며, 다른 이가 추측 없이 절차를 ‘실행’하게 해줍니다.
반복은 초기 형태의 반복(iteration) 개념입니다: 작은 단계 집합을 따르고, 매 회마다 무언가(카운터나 누적값 등)이 바뀌며, 종료 조건이 만족되면 멈춥니다. 현대 코드에선 for나 while 루프가 이런 패턴을 구현합니다. 루프에는 보통:
이 포함됩니다.
기계는 인간처럼 문맥을 기억하지 못하므로 변하는 양을 참조할 방법이 필요합니다. 변수는 라벨이 붙은 상자와 같아 내용은 바뀔 수 있습니다. 러브레이스의 표기와 기호는 실행 가능하게 만들기 위한 도구입니다:
명확한 표기는 서로 비슷한 값들을 혼동하는 흔한 오류를 줄여줍니다.
추상화는 중요한 것에 집중하고 세부는 숨기는 것입니다. 러브레이스의 노트는 핵심 방법(무엇을 할 것인지)을 기계의 물리적 동작(어떻게 할 것인지)과 분리해서 설명하려는 시도를 보여줍니다. 이 분리는 재사용 가능한 구성요소(함수, 모듈 등)의 씨앗이 됩니다:
이 표현은 논쟁의 여지가 있습니다. 이유는:
안전한 결론은: 러브레이스의 노트는 프로그래밍이 무엇인지—기계가 따를 수 있는 명확한 절차를 쓰는 것—를 정의하는 데 기여했다는 점입니다.
코드를 작성하기 전에 아이디어를 실행 가능한 계획으로 바꿀 때의 사고방식을 보여주는 핵심 교훈들입니다. 짧은 설계 점검 목록:
관련 가이드는 /blog/how-to-write-better-requirements 및 /blog/pseudocode-examples를 참고하세요.