Ghi chú của Ada Lovelace về Analytical Engine mô tả một thuật toán có thể lặp lại. Xem cách những ý tưởng sớm của bà phản chiếu tư duy thiết kế chương trình hiện đại.

Bạn có lẽ đã nghe tóm tắt: Ada Lovelace đã viết “thuật toán đầu tiên”, một tập hướng dẫn dành cho Analytical Engine của Charles Babbage. Người ta vẫn nhắc đến nó vì đó là một ví dụ sớm và đáng ngạc nhiên về cái mà chúng ta gọi là lập trình—tách một mục tiêu thành các bước chính xác để một máy có thể theo.
Bài viết này không cố gắng tái tạo bánh răng của Engine hay chứng minh mọi tuyên bố lịch sử một cách tuyệt đối. Thay vào đó, nó tập trung vào các ý tưởng lập trình trong tác phẩm của Lovelace: cách biến một bài toán toán thành điều có thể thực thi, cách biểu diễn dữ liệu, và cách truyền đạt một thủ tục để người khác (hoặc thứ khác) có thể chạy nó.
Ghi chú nổi tiếng của Lovelace đọc như một cây cầu giữa toán học và thiết kế phần mềm. Dù máy phần lớn chỉ tồn tại trên giấy, cách suy nghĩ ấy quen thuộc với bất kỳ ai từng cố gắng khiến máy tính làm điều gì đó đáng tin cậy.
Đây là những điểm chúng ta sẽ để ý khi đọc tiếp:
Mục tiêu cuối cùng đơn giản: xem “thuật toán đầu tiên” của Lovelace ít là một hiện vật bảo tàng hơn và nhiều hơn một khuôn mẫu sớm cho tư duy tính toán, phản chiếu cách chúng ta thiết kế chương trình ngày nay.
Augusta Ada King, nữ bá tước Lovelace—thường gọi là Ada Lovelace—lớn lên ở giao điểm của thơ ca và toán học. Mẹ bà khuyến khích học hành nghiêm túc, và Ada nhanh chóng trở thành thành viên của một nhóm nhỏ các nhà khoa học và tư tưởng nổi bật. Bà không phải một thiên tài cô độc; bà là một cộng tác viên xuất sắc, đặt câu hỏi một cách rõ ràng về ý nghĩa của máy móc—không chỉ xem chúng có thể làm gì mà còn có thể có ý nghĩa gì.
Charles Babbage đã nổi tiếng với các kế hoạch tính toán cơ khí khi Ada gặp ông. Babbage có thể thiết kế phần cứng trong đầu: bánh răng, trục, và bánh số xếp thành một hệ thống. Ada, trong khi đó, có tài giải thích—biến những ý tưởng kỹ thuật phức tạp thành các khái niệm có cấu trúc và dễ truyền đạt.
Mối quan hệ của họ hiệu quả vì điểm mạnh khác nhau. Babbage thúc đẩy tầm nhìn kỹ thuật; Ada thúc đẩy tầm nhìn khái niệm, đặc biệt ý tưởng rằng một máy có thể theo một chuỗi thao tác do người ta thiết kế trước.
Analytical Engine của Babbage không chỉ là một máy tính tốt hơn. Trên giấy, nó mô tả một cỗ máy đa dụng: có thể lưu giá trị, thực hiện phép toán, và chạy một thủ tục đã lên kế hoạch từng bước. Hãy nghĩ về nó như bản thiết kế sớm cho cái mà chúng ta gọi là máy tính có thể lập trình—dù nó chưa bao giờ hoàn thành trong thời của họ.
Những năm 1840 là thời điểm toán học, công nghiệp và tự động hóa bắt đầu giao thoa. Mọi người cần các phương pháp đáng tin cậy—bảng tra, công thức, thủ tục lặp lại—vì sai sót tốn kém và khoa học phát triển nhanh. Trong bối cảnh đó, sự quan tâm của Ada về “cách hướng dẫn một máy” không phải là tò mò; đó là phản ứng đúng lúc cho một nhu cầu đang tăng: biến suy luận con người thành các quy trình có thể lặp lại và kiểm tra.
Trước khi Ada Lovelace mô tả một thuật toán, phải có một máy đáng để “lập trình”. Analytical Engine của Charles Babbage được nghĩ là một máy tính đa dụng: không chỉ dùng cho một công thức, mà là một cỗ máy có thể được cấu hình để thực hiện nhiều chuỗi thao tác khác nhau.
Ý tưởng cốt lõi đơn giản: nếu bạn có thể chia một bài toán thành các bước số học nhỏ (cộng, trừ, nhân, chia), một máy phải có thể thực hiện những bước đó một cách đáng tin cậy, theo đúng thứ tự, và lặp lại bao nhiêu lần cần thiết.
Đó là bước nhảy từ một phép tính một lần sang một phương pháp có thể tái sử dụng.
Babbage mô tả hai thành phần chính:
Về đầu vào và đầu ra, Engine được thiết kế để nhận lệnh và dữ liệu bằng thẻ đục lỗ (lấy cảm hứng từ khung dệt), và tạo kết quả ở dạng con người có thể dùng—in ra hoặc ghi lại.
Nếu bạn ánh xạ những ý tưởng đó tới hôm nay:
Đây là lý do Analytical Engine quan trọng: nó phác thảo cùng sự phân tách mà chúng ta vẫn dựa vào—phần cứng thực thi các bước, và chương trình định nghĩa các bước cần thực hiện.
Khi người ta nói về Ada Lovelace và thuật toán đầu tiên, họ thường chỉ tới một tập phần bổ sung cụ thể: “Ghi chú” mà bà thêm vào bản dịch tiếng Anh của bài viết của Luigi Menabrea về Analytical Engine của Charles Babbage.
Menabrea mô tả khái niệm máy. Lovelace đi xa hơn: bà coi Engine như thứ bạn có thể hướng dẫn—không chỉ để ngưỡng mộ. Sự chuyển đổi này là lý do những Ghi chú quan trọng trong lịch sử lập trình. Chúng đọc như tư duy tính toán sơ khai: chia mục tiêu thành các bước chính xác, chọn cách biểu diễn, và tiên liệu cách một cơ chế sẽ thực thi chúng.
Ghi chú của Lovelace giải thích cái mà chúng ta nay gọi là thiết kế chương trình. Bà mô tả các phần của Engine (như store và mill) theo cách các thao tác có thể được xâu chuỗi và kiểm soát. Ý tưởng trung tâm đơn giản nhưng sâu sắc: nếu Analytical Engine có thể thực hiện các phép toán theo thứ tự xác định trên các ký hiệu xác định, thì cách làm cần được viết ra ở dạng mà máy có thể thực thi.
Đây là lúc công trình của bà bắt đầu giống lập trình hiện đại. Nó không chỉ là lý thuyết; đó là phương pháp.
Quan trọng nhất, Ghi chú bao gồm một ví dụ thực hành trình bày dưới dạng bảng các bước. Nó liệt kê, từng dòng một, máy nên làm gì—giá trị nào nằm ở vị trí nào, phép toán tiếp theo là gì, và kết quả được lưu ở đâu.
Định dạng bảng đó là tổ tiên của pseudocode, sơ đồ luồng, và lịch trình chỉ dẫn ngày nay: một kế hoạch rõ ràng, có thể kiểm tra mà bạn có thể theo mà không phải đoán. Dù bạn có xây Engine hay không, thói quen nó dạy—biến ý tưởng thành chuỗi có thể thực thi—vẫn là cốt lõi của việc viết phần mềm.
Một thuật toán, nói thông thường, là một phương pháp có thể lặp lại: tập các bước rõ ràng đưa bạn từ điểm bắt đầu đến kết quả. Nó giống như một công thức nấu ăn không phụ thuộc vào trực giác—nếu bạn theo đúng các bước, kết quả lặp lại được.
Ví dụ nổi tiếng của Lovelace nhằm tính số Bernoulli—một dãy giá trị xuất hiện trong nhiều phần toán học (ví dụ trong công thức tổng 1 + 2 + … + n, và một số phần của giải tích). Bạn không cần hiểu lý thuyết sâu để thấy vì sao chúng là trường hợp kiểm thử tốt cho một máy tính sớm.
Chúng đủ khó ở chỗ phù hợp:
Nói cách khác, nó đủ phức tạp để chứng minh máy có thể theo một phương pháp có cấu trúc, nhưng đủ trật tự để viết thành các bước.
Về cốt lõi, thuật toán có cấu trúc quen thuộc mà chúng ta vẫn dùng trong chương trình:
Nhìn vậy, Lovelace không chỉ chỉ ra một con số được tính—bà cho thấy cách tổ chức một phép tính nhiều bước để máy có thể thực thi mà không phải phỏng đoán.
Khi người ta nói về thuật toán số Bernoulli của Lovelace, thường họ tập trung vào kết quả (“một chương trình sớm”) hơn là công việc thiết kế giúp các bước đáng tin cậy. Thành tựu thực sự không chỉ là liệt kê thao tác—mà là định hình chúng để máy có thể theo mà không cần ứng biến.
Thay vì coi “tính số Bernoulli” là một nhiệm vụ đơn, Ghi chú chia nó thành các phần nhỏ có thể lặp lại và kiểm tra: tính giá trị trung gian, kết hợp chúng theo công thức cụ thể, ghi kết quả, rồi chuyển sang trường hợp tiếp.
Phân rã quan trọng vì mỗi tác vụ con có thể được kiểm chứng riêng. Nếu đầu ra sai, bạn không gỡ lỗi “toàn bộ thuật toán”; bạn kiểm tra một phần.
Máy cơ khí không “ghi nhớ” trong đầu. Mọi giá trị cần dùng sau phải được lưu ở đâu đó, và Ghi chú cẩn thận về điều này. Một số số là giá trị làm việc tạm; số khác là kết quả cuối cùng cần giữ cho các bước sau.
Đây là dạng suy nghĩ sớm về trạng thái chương trình:
Thứ tự thao tác là một tính năng an toàn. Một số phép tính phải xảy ra trước những phép khác, không phải vì đẹp mắt, mà để tránh dùng giá trị chưa sẵn sàng hoặc vô tình ghi đè thứ còn cần.
Trong thuật ngữ hiện đại, Lovelace thiết kế luồng điều khiển để chương trình có đường đi rõ ràng: làm A, rồi B, rồi C—vì làm B trước sẽ âm thầm cho kết quả sai.
Một trong những ý tưởng “hiện đại” nhất ẩn trong bảng các bước của Lovelace là lặp lại: khả năng thực hiện cùng một tập lệnh nhiều lần, không phải vì lạc lõng, mà vì lặp là cách nhanh nhất để đến kết quả.
Lặp trong chương trình có nghĩa là: làm theo một công thức nhỏ, kiểm tra xem đã xong chưa, nếu chưa thì chạy lại cùng công thức đó. Chìa khóa là có thứ thay đổi mỗi lần—thường là bộ đếm, vị trí trong bảng, hoặc giá trị bạn đang xây dựng—vậy chương trình tiến về phía đích.
Trong ký hiệu của Lovelace, bạn thấy điều này như việc quay trở lại có cấu trúc tới các bước trước. Thay vì viết lại chỉ dẫn giống hệt nhiều lần, bà mô tả một mẫu và chỉ rõ khi nào phải quay lại. Đó là hạt giống của cái chúng ta gọi là iteration ngày nay.
Nếu bạn từng viết code, bạn đã thấy mẫu này dưới dạng for (lặp N lần) hoặc while (lặp cho tới khi điều kiện đúng). Bảng của bà cũng ngụ ý những thành phần vòng lặp quen thuộc:
Giả sử bạn muốn tổng của 1 đến 5.
total = 0\n- Bắt đầu với i = 1\n- Cộng i vào total\n- Tăng i lên 1\n- Nếu i vẫn nhỏ hơn hoặc bằng 5, lặp lại bước cộng và tăngĐây là phép lặp diễn giải đơn giản: một vòng lặp nhỏ cập nhật bộ đếm và tích lũy kết quả. Đóng góp của Lovelace không chỉ là cái gì bà tính—mà là chỉ ra rằng cấu trúc lặp có thể viết ra rõ ràng để máy (và người sau này) thực thi đáng tin cậy.
Một thủ tục có thể logic hoàn hảo trong đầu bạn nhưng vẫn không thể cho máy—hay người khác—thực hiện nếu không có cách tham chiếu đến các lượng thay đổi. Đó là nơi biến và ký hiệu xuất hiện.
Hãy coi biến như một hộp có nhãn trên bàn. Nhãn không đổi, nhưng thứ bên trong có thể thay đổi khi bạn làm việc.
Nếu bạn tính một dãy, bạn có thể có:
Không có các hộp đó, bạn bị buộc phải mô tả mọi thứ bằng câu dài (“lấy số bạn vừa tính hai bước trước…”)—và nhanh chóng rối tung.
Trong Ghi chú của Lovelace, các ký hiệu và nhãn không phải để trông trang trọng—chúng ở đó để làm cho quy trình có thể thi hành. Ký hiệu rõ trả lời các câu hỏi thực tế:\n\n- Giá trị nào đang được cập nhật ngay bây giờ?\n- Giá trị nào phải tồn tại tới các bước sau?\n- Giá trị nào là tạm và có thể bị ghi đè?\n Khi thủ tục dài, những làm rõ nhỏ này tránh lỗi phổ biến nhất: lẫn lộn các lượng trông giống nhau.
Đặt tên biến tốt vẫn là cách rẻ nhất để giảm bug. So sánh x1, x2, x3 với current_sum, term_index, next_term: bộ tên thứ hai cho biết các hộp dùng để làm gì.
Kiểu lại thêm lớp an toàn. Quyết định một thứ là số nguyên, số thập phân, danh sách hay bản ghi giống như chọn đúng loại hộp—một số lỗi trở nên không thể xảy ra, hoặc dễ phát hiện sớm hơn.
Biến và ký hiệu biến một “ý tưởng thông minh” thành các bước có thể lặp lại đúng, bởi bất kỳ ai (kể cả máy).
Trừu tượng nghĩa là chú ý tới điều quan trọng và cố tình ẩn đi chi tiết không cần thiết. Đó là sự khác biệt giữa nói “sắp xếp danh sách này” và mô tả từng lần hoán đổi và so sánh bằng tay. Ghi chú của Lovelace cho thấy trực giác này sớm: chúng hướng tới truyền đạt một phương pháp rõ ràng mà không bắt người đọc mắc kẹt vào chi tiết cơ học của engine.
Điểm nổi bật của Ghi chú là cách chúng giữ ý tưởng lõi độc lập với hành vi cơ học của máy. Analytical Engine có cách “làm” riêng (bánh răng, store, mill), nhưng Ghi chú nhấn mạnh “cái gì”: chuỗi thao tác cần thực hiện để đạt kết quả.
Sự tách này là hạt giống của thiết kế phần mềm:
Khi bạn có thể mô tả phương pháp mà không giải thích lại máy, bạn đã coi tính toán là thứ có thể di động—có thể triển khai lại trên phần cứng khác, hoặc bởi người khác.
Các bảng bước trong Ghi chú giống như các “thủ tục” sơ khai: một tập xác định các bước có thể lặp lại. Mã hiện đại hình thức hoá điều này thành hàm, module và thành phần có thể tái sử dụng.
Một hàm tốt làm như Ghi chú của Lovelace:
Đó là lý do trừu tượng không phải là mơ hồ—mà là có thể sử dụng được. Tái sử dụng đến tự nhiên: khi một phương pháp được diễn đạt sạch sẽ, bạn có thể gọi lại nó trong bối cảnh mới và kết hợp với các phương pháp khác để xây hệ lớn mà không bị ngập chi tiết.
Ada Lovelace không chỉ mô tả Engine có thể làm gì—bà cho thấy cách làm để một thủ tục không mập mờ với người khác (hoặc máy) theo. Đó là sức mạnh thầm lặng của Ghi chú: coi giải thích là một phần công việc, chứ không phải trang trí.
Lý do trình bày của bà vẫn cảm thấy hiện đại là sử dụng bảng các bước có cấu trúc. Bảng bắt buộc các quyết định mà văn phong mơ hồ có thể che giấu:\n\n- Cái gì xảy ra trước, sau, tiếp theo\n- Giá trị trung gian nào tồn tại ở mỗi bước\n- Khi nào một giá trị được cập nhật so với chỉ tham chiếu\n- Nơi bắt đầu và kết thúc của phần lặp\n Điều đó giảm mơ hồ giống như pseudocode hôm nay. Bạn có thể đọc một đoạn văn và nghĩ là hiểu—cho đến khi cố gắng thực thi. Bảng bước làm đường đi thực thi hiển nhiên, và đó là mục tiêu của tài liệu chương trình tốt.
Ghi chú của Lovelace kết hợp ba thứ mà chúng ta vẫn cố giữ cùng nhau:
Điều này tương ứng với comment, docstring và README hiện đại. README giải thích mục tiêu và bối cảnh. Chú thích nội tuyến làm rõ bước khó hiểu. Docstring định nghĩa đầu vào/đầu ra và các trường hợp biên. Khi thiếu một trong những thứ này, người dùng phải đoán—và đoán là nơi nảy sinh bug.
Khi bạn tài liệu một quy trình (dù là code hay không):
Đó không phải là việc làm thêm—đó là cách một phương pháp trở nên tái sử dụng.
Ada Lovelace thường được giới thiệu bằng nhãn gắn gọn: “lập trình viên đầu tiên.” Đó là cách nói tiện lợi, nhưng cũng có thể làm phẳng một sự thật thú vị hơn. Cuộc tranh luận không chỉ liên quan đến vị trí đầu tiên—mà liên quan đến ta hiểu thế nào là chương trình, máy tính, và quyền tác giả.
Nếu “lập trình viên” nghĩa là người viết hướng dẫn dành cho một máy đa dụng, Lovelace có lý để nhận danh xưng. Trong Ghi chú về Analytical Engine, bà mô tả một phương pháp từng bước để sinh số Bernoulli—về cơ bản là kế hoạch để Engine thực hiện một phép tính không tầm thường.
Nhưng các nhà sử học tranh luận vì:\n\n- Engine không được hoàn thành nên chương trình chưa thể chạy và kiểm chứng\n- Một số phần của phương pháp có thể phản ánh hợp tác với Babbage, người đã suy nghĩ về thủ tục máy từ lâu\n- Tự động hoá trước đó đã tồn tại (như thẻ đục lỗ của khung dệt Jacquard), dù không theo nghĩa đa dụng giống vậy
Quan trọng là tách phát minh một ý tưởng tính toán khỏi xây dựng máy hoạt động. Đóng góp lớn của Babbage là kiến trúc: máy đề xuất có bộ nhớ (“store”), bộ xử lý (“mill”), và điều khiển qua thẻ đục lỗ. Đóng góp của Lovelace là phần diễn dịch và diễn đạt: bà làm rõ máy có thể biểu diễn gì và cách viết một thủ tục để máy theo.
Một chương trình không mất tính là chương trình chỉ vì phần cứng chưa ra đời. Trong thuật ngữ hiện đại, giống như viết phần mềm cho nền tảng còn lý thuyết—hoặc chỉ định một thuật toán trước khi con chip tồn tại.
Cách tôn trọng để nói về thời kỳ này là coi đó như hợp tác giữa các vai trò:\n\n- Babbage: thiết kế máy, tham vọng toán học và phát triển từng bước dài hạn.\n- Lovelace: dịch, mở rộng, giải thích, và khả năng hiếm hoi kết nối thủ tục trừu tượng với máy đa dụng.\n- Menabrea (và người khác): mô tả ban đầu mà Lovelace dịch và biến thành thứ chi tiết hơn.
Điều ta có thể nói chắc chắn: Ghi chú của Lovelace giúp định nghĩa lập trình là gì—không chỉ là tính toán, mà là diễn đạt cẩn thận một quy trình mà máy có thể thực hiện.
Ghi chú của Lovelace quan trọng vì cho thấy cách suy nghĩ khi biến một ý tưởng thành kế hoạch có thể thực thi bởi máy. Dù bạn không chạm vào thẻ đục lỗ hay bánh răng cơ khí, những bài học cốt lõi vẫn ứng với thiết kế chương trình hiện đại: cho công việc một cấu trúc rõ ràng, đặt tên cẩn thận, dùng lặp có chủ ý, và xây khối có thể tái sử dụng.
Cấu trúc đánh bại sự thông minh thoáng qua. Chương trình dễ xây và bảo trì hơn khi chia thành các bước có mục đích rõ. Cách tiếp cận của Lovelace khuyến khích bạn thiết kế hình dạng giải pháp trước khi sa đà vào chi tiết.
Rõ ràng là một tính năng. Bảng và giải thích của bà không phải trang trí—chúng là một phần của chương trình. Khi tương lai-của-bạn (hoặc đồng đội) có thể theo logic nhanh, chương trình đáng tin cậy hơn.
Lặp là công cụ, không phải mánh khóe. Lặp (vòng) là cách mở rộng một phương pháp. Chìa khóa là định nghĩa cái gì lặp, cái gì thay đổi mỗi lần, và khi nào dừng.
Trừu tượng cho phép tái sử dụng. Nếu một chuỗi bước hoạt động một lần, bạn nên tái sử dụng nó với đầu vào khác. Đó là hạt giống của hàm, module và thư viện.
Nếu bạn từng dùng quy trình “xây bằng cách mô tả”—viết yêu cầu, lặp kế hoạch, rồi sinh phần mềm—you đã tái hiện tinh thần Ghi chú của Lovelace: làm thủ tục rõ ràng, giữ trạng thái minh bạch, và tài liệu giả định để việc thực thi lặp lại.
Đó là một lý do khiến các nền tảng tương tác như Koder.ai phù hợp tự nhiên với câu chuyện này. Koder.ai cho phép bạn tạo ứng dụng web, backend và di động qua giao diện chat, nhưng các nguyên tắc cơ bản vẫn thế: bạn đạt kết quả tốt hơn khi xác định đầu vào/đầu ra, đặt tên nhất quán, và yêu cầu cấu trúc từng bước (chế độ lập kế hoạch giúp bạn cố định “Ghi chú” trước khi sinh hoặc thay đổi mã). Công cụ mới, kỷ luật không đổi.
Dùng qua nhanh trước khi bắt đầu code—hoặc khi gỡ lỗi thứ gì đó rối:
Nếu bạn muốn củng cố phong cách “ghi chú trước” khi thiết kế chương trình, các nguồn sau sẽ hữu ích:
Gộp lại, những thói quen này biến lập trình từ “làm cho chạy” thành “làm cho dễ hiểu”—cùng bước chuyển mà Ghi chú của Lovelace đã chỉ dẫn từ trước.
Thuật toán “đầu tiên” của Ada Lovelace là một quy trình từng bước (trình bày trong phần Ghi chú của bà) dự định để Charles Babbage’s Analytical Engine thực hiện. Nó nổi tiếng vì coi phép tính như một dãy các thao tác được lên kế hoạch trên các giá trị được lưu trữ, tương tự lập trình hiện đại dù máy chưa hoàn thành.
Bài viết tập trung vào những ý tưởng lập trình trong tác phẩm của Lovelace—cách biểu đạt một phương pháp để nó có thể thực thi, kiểm tra và hiểu được—hơn là cố gắng tái tạo phần cứng Engine hay giải quyết mọi tranh luận lịch sử.
Analytical Engine là một máy tính đa dụng được đề xuất, có khả năng:
Kiến trúc này quan trọng vì nó tách phần cứng thực thi khỏi chương trình chỉ định các bước—chính là sự phân tách mà máy tính hiện đại vẫn dựa vào.
Số Bernoulli là một dãy xuất hiện trong nhiều công thức toán học. Chúng là bài toán minh họa tốt vì mỗi giá trị mới phụ thuộc vào các giá trị trước đó, yêu cầu nhiều thao tác, lưu trữ trung gian, và các bước có thể lặp lại—đúng kiểu công việc bạn muốn kiểm tra trên một máy có thể lập trình được.
Một bảng các bước buộc tính chính xác. Nó bắt bạn chỉ rõ:
Chính vì vậy nó giống pseudocode ngày nay và giúp người khác “chạy” quy trình mà không phải đoán.
Lặp là hình thức sớm của phép lặp (iteration): bạn định nghĩa một tập bước nhỏ, thay đổi một thứ mỗi lần lặp (như bộ đếm hay tổng tạm), và dừng khi đạt điều kiện. Trong mã hiện đại, điều đó tương ứng với for/while có:
Vì máy không thể dựa vào ngữ cảnh hay trí nhớ như con người. Các nhãn giống biến cho phép bạn theo dõi:
Điều này giảm lỗi phổ biến nhất trong quy trình dài: nhầm lẫn các lượng trông giống nhau.
Trừu tượng tách phương pháp (thuật toán) khỏi cơ chế (cách máy thực hiện). Đó là hạt giống của các thành phần có thể tái sử dụng:
Trong ngôn ngữ hiện đại, đó là chức năng của hàm và module để hệ thống dễ mở rộng.
Danh xưng này gây tranh luận vì:
Kết luận an toàn: Ghi chú của bà làm rõ điều lập trình là gì: viết một quy trình không mập mờ mà máy có thể theo.
Một lượt kiểm tra nhanh trước khi bắt đầu mã:
Để đọc thêm theo phong cách “ghi chú trước”, xem các tài liệu liên quan: /blog/how-to-write-better-requirements và /blog/pseudocode-examples.