← Quay lại
13 tháng 12, 2025
•
10 phút đọc
•
Dịch sách CODE của Charles Petzold
Dự án đầu tiên của mình cho blog là dịch sách Code của Charles Petzold. Đây là cuốn sách giúp vén màn ngôn ngữ của máy tính, cách phần cứng và phần mềm hoạt động và giúp con người làm được vô vàn thứ kì diệu...
Mình đã bắt đầu dịch nó từ rất lâu rồi nhưng vì những bộn bề cuộc sống của một cử nhân mới ra trường lao vào đời lao động, học hỏi và kiếm tiền nuôi sống bản thân nên đã bỏ dở nó. Hồi ấy là lúc mới ra trường, mình phỏng vấn nhiều nơi nhưng không đậu. Thế là mình bắt đầu học ngôn ngữ lập trình mới, Ruby, với web framework nổi tiếng của nó là Rails để kiếm việc và đã theo nó tới giờ. Trong quá trình đó mình cũng tò mò muốn tìm hiểu thêm về code vì một cử nhân kinh tế chỉ học tin học cơ bản trong trường nên kiến thức nền tảng về lập trình khá kém. Mình vô tình tìm thấy sách này và thấy nó khá là dễ đọc, chứa kiến thức thú vị về máy tính. Vừa đọc mình vừa nghĩ chắc là cũng có nhiều người giống mình cũng mãi theo đuổi công việc hằng ngày mà không nắm được bản chất của máy tính nên đã quyết định dịch sách.
Ban đầu mình dịch và đăng lên Spiderum. Khi ấy nền tảng này vẫn khá mới và nó giống Medium cũng là nơi để mọi người blog chia sẻ kiến thức. Bài mình đăng được khá nhiều người xem tầm 2~3 nghìn lượt xem cho mỗi bài (với mình con số này là rất cao và nó khiến mình vui khủng khiếp) kèm theo vài bình luận chia sẻ và cảm ơn. Nhưng Spiderum khi ấy còn hạn chế và mình không thích phong cách của nó lắm nên quyết định lập blog riêng và đăng tiếp ở đó. Kinh nghiệm của mình không nhiều và thời gian không có nên mình dùng Wordpress. Thế là vừa học vừa phỏng vấn (và đậu) vừa dịch, dần dà cũng được 11 chương (trên tổng 28 chương). Thế rồi vì công việc và nhiều thứ khác nữa mình không còn thời gian tiếp tục hành trình này và đành tạm ngưng.
Đến hôm nay là hơn 8 năm, mình quyết định tiếp tục nó và sẽ đăng trên blog cá nhân mới này. Hiện tại công việc của mình đã đi vào ổn định, mình cũng đã lập gia đình nên không còn bay nhảy nhiều như khi xưa. Vậy đó! À mà sách này đã được tái bản, và bản dịch lần này là cho phiên bản mới đó. Mình rà lại tất cả những chương đã dịch và sửa nó khớp với bản mới. 11 chương đầu chắc sẽ đăng nhanh còn những chương sau đó mình không chắc tiến độ nhưng sẽ cố gắng hoàn thành.
Một lưu ý lớn là sách này mình dịch không có sự đồng ý của tác giả. Mục đích để chia sẻ cho mọi người không có khả năng đọc hiểu hoàn toàn bản tiếng anh. Mình không kinh doanh hay trục lợi tiền bạc từ nó nên nếu có vấn đề gì về bản quyền thì mình sẽ dừng lại và gỡ xuống hết. Nếu các bạn có đăng lại ở đâu đó thì hãy ghi rõ tác giả và người dịch cũng như nguồn từ blog của mình nukunblog.com
Mong mọi người sẽ thấy nó bổ ích và học hỏi được gì đó. Mình thật lòng mong nó giúp các bạn vững bước trên con đường lập trình hoặc chỉ để nhận ra rằng máy tính cũng là một công cụ do con người làm ra và chính bạn (một con người) có khả năng hiểu được nó.
Và sau đây là lời giới thiệu sách của tác giả.
Mình đã bắt đầu dịch nó từ rất lâu rồi nhưng vì những bộn bề cuộc sống của một cử nhân mới ra trường lao vào đời lao động, học hỏi và kiếm tiền nuôi sống bản thân nên đã bỏ dở nó. Hồi ấy là lúc mới ra trường, mình phỏng vấn nhiều nơi nhưng không đậu. Thế là mình bắt đầu học ngôn ngữ lập trình mới, Ruby, với web framework nổi tiếng của nó là Rails để kiếm việc và đã theo nó tới giờ. Trong quá trình đó mình cũng tò mò muốn tìm hiểu thêm về code vì một cử nhân kinh tế chỉ học tin học cơ bản trong trường nên kiến thức nền tảng về lập trình khá kém. Mình vô tình tìm thấy sách này và thấy nó khá là dễ đọc, chứa kiến thức thú vị về máy tính. Vừa đọc mình vừa nghĩ chắc là cũng có nhiều người giống mình cũng mãi theo đuổi công việc hằng ngày mà không nắm được bản chất của máy tính nên đã quyết định dịch sách.
Ban đầu mình dịch và đăng lên Spiderum. Khi ấy nền tảng này vẫn khá mới và nó giống Medium cũng là nơi để mọi người blog chia sẻ kiến thức. Bài mình đăng được khá nhiều người xem tầm 2~3 nghìn lượt xem cho mỗi bài (với mình con số này là rất cao và nó khiến mình vui khủng khiếp) kèm theo vài bình luận chia sẻ và cảm ơn. Nhưng Spiderum khi ấy còn hạn chế và mình không thích phong cách của nó lắm nên quyết định lập blog riêng và đăng tiếp ở đó. Kinh nghiệm của mình không nhiều và thời gian không có nên mình dùng Wordpress. Thế là vừa học vừa phỏng vấn (và đậu) vừa dịch, dần dà cũng được 11 chương (trên tổng 28 chương). Thế rồi vì công việc và nhiều thứ khác nữa mình không còn thời gian tiếp tục hành trình này và đành tạm ngưng.
Đến hôm nay là hơn 8 năm, mình quyết định tiếp tục nó và sẽ đăng trên blog cá nhân mới này. Hiện tại công việc của mình đã đi vào ổn định, mình cũng đã lập gia đình nên không còn bay nhảy nhiều như khi xưa. Vậy đó! À mà sách này đã được tái bản, và bản dịch lần này là cho phiên bản mới đó. Mình rà lại tất cả những chương đã dịch và sửa nó khớp với bản mới. 11 chương đầu chắc sẽ đăng nhanh còn những chương sau đó mình không chắc tiến độ nhưng sẽ cố gắng hoàn thành.
Một lưu ý lớn là sách này mình dịch không có sự đồng ý của tác giả. Mục đích để chia sẻ cho mọi người không có khả năng đọc hiểu hoàn toàn bản tiếng anh. Mình không kinh doanh hay trục lợi tiền bạc từ nó nên nếu có vấn đề gì về bản quyền thì mình sẽ dừng lại và gỡ xuống hết. Nếu các bạn có đăng lại ở đâu đó thì hãy ghi rõ tác giả và người dịch cũng như nguồn từ blog của mình nukunblog.com
Mong mọi người sẽ thấy nó bổ ích và học hỏi được gì đó. Mình thật lòng mong nó giúp các bạn vững bước trên con đường lập trình hoặc chỉ để nhận ra rằng máy tính cũng là một công cụ do con người làm ra và chính bạn (một con người) có khả năng hiểu được nó.
Và sau đây là lời giới thiệu sách của tác giả.
Code đã làm rộn tâm trí tôi cũng được khoảng một thập kỷ trước khi tôi bắt đầu viết về nó. Khi tôi đang chìm đắm trong suy tưởng về Code và rồi viết ra đây, và thậm chí cả sau khi cuốn sách được xuất bản, mọi người thường hỏi tôi, “Cuốn sách viết về gì thế?”
Tôi luôn luôn lưỡng lự khi trả lời câu hỏi này. Thường tôi sẽ lầm bầm một thứ gì đó đại loại như “một chuyến viễn du độc nhất đi qua tiến trình tiến hóa của công nghệ kỹ thuật số đã định hình nên kỷ nguyên hiện đại” và mong rằng thế là đã đủ.
Nhưng rồi tôi cũng phải thừa nhận điều này: “Code là một cuốn sách về cách hoạt động của máy tính.”
Như tôi lo sợ, phản ứng không được tốt đẹp mấy. “Ồ, tôi có một cuốn giống vậy”, vài người sẽ nói thế, và ngay lập tức tôi đáp, “Không, không, không, bạn không có cuốn nào như cuốn này đâu.” Tới giờ tôi vẫn còn thấy nó đúng. Code không giống những cuốn sách máy-tính-hoạt-động-như-thế-nào khác. Nó không có các hình minh họa màu lớn về ổ đĩa (disk drive) với các mũi tên chỉ cách dữ liệu quét vào máy tính. Code không có những hình vẽ về các đoàn tàu hỏa chở một lô một lốc những số không và một. Phép ẩn dụ và so sánh là những công cụ văn học tuyệt vời nhưng chúng chả được gì ngoài việc làm lu mơ vẻ đẹp của công nghệ.
Những phản hồi khác mà tôi nghe được là, “Người ta không muốn biết cách máy tính hoạt động”. Điều này có lẽ cũng đúng. Cá nhân tôi tự thưởng thức việc học cách vạn vật vận hành. Nhưng tôi cũng thích chọn điều này điều kia để học hay không. Tôi sẽ rất áp lực nếu phải giải thích cách cái tủ lạnh nhà tôi hoạt động, kiểu vậy.
Thế nhưng tôi thường nghe mọi người hỏi những câu mà ẩn chứa trong đó là nhu cầu muốn biết đôi điều về cơ chế bên trong của máy tính cá nhân. Một câu hỏi phổ biến là, “Điểm khác nhau giữa storage và memory là gì?”
Đó chắc chắn là một câu hỏi quan trọng. Thị trường máy tính cá nhân dựa trên những khái niệm như này. Thậm chí đến những người dùng mới cũng mong muốn biết xem các ứng dụng nào đó của họ cần bao nhiêu megas cho thứ này và bao nhiêu gigas cho thứ kia. Người dùng mới cũng mong muốn hiểu được khái niệm “file” máy tính và hình dung cách mà các file được tải từ storage vào memory và lưu ngược lại từ memory về storage.
Câu hỏi storage-và-memory thường được trả lời với một bài phân tích: “Memory kiểu như bề mặt bàn còn storage thì như ngăn bàn”. Đó không phải là một câu trả lời dở trong giới hạn của nó. Nhưng tôi thấy nó không đạt yêu cầu lắm. Nó làm ta nghe có vẻ như cấu trúc máy tính giống với một văn phòng vậy. Sự thật thì sự phân biệt giữa memory và storage là một thứ do con người nghĩ ra và tồn tại đơn độc bởi vì ta không có một phương tiện lưu trữ đơn nào mà vừa nhanh vừa lớn cũng như không bị mất dữ liệu khi tắt nguồn. Những gì ta biết ngày nay cũng như “cấu trúc von Neumann” – cấu trúc máy tính chủ yếu trong hơn 50 năm – là một kết quả trực tiếp của sự thiếu sót về mặt kỹ thuật này.
Đây là một câu hỏi khác mà ai đó đã có lần hỏi tôi: “Tại sao ông không thể chạy các chương trình Macintosh trên nền Windows?” Mồm tôi chuẩn bị mở ra để phun câu trả lời thì chợt nhận ra rằng nó liên quan đến nhiều vấn đề mang tính kỹ thuật hơn hẳn những gì mà tôi chắc người hỏi đã được trang bị để hiểu liền mạch ngay được.
Tôi muốn Code trở thành một cuốn sách giúp cho bạn hiểu được những thứ này, không phải theo những cách trừu tượng, mà với một chiều sâu mà có thể thậm chí sánh được với các kỹ sư điện và lập trình viên. Tôi cũng mong rằng bạn có thể nhìn nhận máy tính là một trong những thành tựu tột bật của công nghệ thế kỷ hai mươi và xem nó như là một thứ đẹp đẽ mà tự nó có được chứ không phải bởi những phép so sánh hay ẩn dụ mang lại.
Máy tính được cấu tạo theo thứ bậc, từ các transistor nằm tầng đáy đến các thông tin được hiển thị trên màn hình ở tầng trên. Lên mỗi cấp độ trong thứ bậc đó – cũng là cách Code được sắp đặt – thì có lẽ sẽ không khó cho hầu hết mọi người suy ngẫm. Chắc chắn là có rất nhiều thứ đang diễn ra trong máy tính hiện đại, nhưng nó chỉ là rất nhiều những hoạt động đơn thuần.
Mặc dù máy tính ngày nay phức tạp hơn nhiều so với các máy ở cách đây 25 hay 50 năm, nhưng về cơ bản thì vẫn giống nhau. Đó là những gì tuyệt vời khi nghiên cứu lịch sử công nghệ: Càng đi xa về quá khứ, công nghệ càng trở nên đơn giản. Cho nên có khả năng ta sẽ chạm đến một điểm nơi mà mọi thứ sẽ đều tương đối dễ hiểu.
Trong Code, tôi đã đi xa hết mức trong khả năng. Ngạc nhiên thay, tôi nhận ra là mình có thể đi ngược về thế kỉ mười chín và dùng những thiết bị điện báo đời đầu để biểu diễn cách máy tính được xây dựng. Ít nhất về mặt lý thuyết, mọi thứ trong 17 chương đầu của Code có thể được tạo nên hoàn toàn bằng việc dùng các thiết bị điện đơn giản có mặt quanh ta trong vòng một thế kỉ.
Việc dùng công nghệ lỗi mốt cho Code một cảm giác khá hoài cổ, tôi nghĩ vậy. Code là cuốn sách mà không bao giờ có thể mang tên The Faster New Faster Thing hay Bussiness @ the Speed of a Digital Nervous System. “Bit” không được định nghĩa cho tới trang 68; “byte” thì mãi tới trang 180. Tôi không đề cập đến transistor cho tới trang 142, và chỉ lướt qua nhanh.
Vì vậy, trong khi Code đi khá sâu vào hoạt động máy tính (một ít cuốn sách khác trình bày cách bộ xử lý máy tính thật sự hoạt động, ví dụ), thì nhịp độ vẫn khá là thong thả. Mặc dù đi sâu, tôi cũng cố làm cho chuyến đi thoải mái nhất có thể.
Nhưng sẽ không có các hình vẽ nhỏ về các đoàn tàu chở những lô hàng toàn không với một đâu.
Charles Petzold
16 tháng 8, 2000