Willy có phần hốt hoảng. Chỉ khi thấy thằng nhóc con nhà Yulia đã đi xa hẳn, anh ta mới dám co chân chạy.
Lúc bị Yuki va phải, Willy đã sợ hãi đến cứng đờ người. Hắn phải cố hết sức, mới có thể kiểm soát bản thân giữ bình tĩnh.
“Không thể tiếp tục thế này được…”
Willy vừa nghĩ vừa chạy hết tốc lực, chẳng mấy chốc đã rời khỏi rìa làng, ngồi xổm xuống bên con đường chính. Một đám bụi bất chợt cuốn tới. Willy bật dậy, vẫy tay liên hồi.
Tiếng còi xe vang rền. Giữa tiếng phanh gấp và bụi đất mịt mù, có một bóng đen dừng ngay trước mặt Willy. Theo sau đó là tiếng camera điều chỉnh tiêu cự. Một lúc sau, một giọng nói khàn đặc vang lên: “Willy? Sao cậu lại ở đây?”
“Enoch….” Willy run rẩy nói: “Tôi sợ quá, Enoch.”
Willy vốn sống dựa vào các công nhân hạng nặng, vì vậy nên anh ta biết rõ thói quen và lịch trình thường ngày của họ. Anh ta đoán rằng rất có thể Enoch sẽ đi qua con đường này vào khoảng thời gian này.
“Này! Cậu sợ cái gì chứ?” Enoch không mấy quan tâm.
Willy thét lên: “Hôm qua chính anh là người bảo tôi đẩy tên đó ra! Là anh mà! Anh không thể bỏ mặc tôi được! Nếu không…. Nếu không….” Willy nói, giọng như oà khóc: “Enoch đại ca! Tôi…”
Ban đầu, là vì muốn lấy lòng Enoch nên Willy mới đồng ý “giở trò với Yog”. Enoch là một trong những công nhân hạng nặng hào phóng nhất. Quan trọng nhất là, Enoch rất lười biếng, thường xuyên thuê người khác dỡ hàng hộ. Chỉ cần kết thân được với Enoch, Willy sẽ chẳng bao giờ lo thiếu việc nữa.
Nhưng Willy thật sự không thể ngờ tên “Yog”.… không, tên “Sơn” kia lại có vẻ thật sự vô cùng lợi hại.
Hắn thế mà có thể chiến thắng một võ giả!
Giọng nói Enoch cũng bắt đầu có phần khẩn trương: “Hắn phát hiện ra cậu rồi sao? Không thể nào. Khi đó xung quanh toàn là người của chúng ta… Bọn họ đều có góp phần vào, chắc chắn không thể tố giác chúng ta được.”
“Là thằng nhãi con nhà Yulia!” Willy hét lớn.
“Yuki? Nó nhìn thấy à?” Enoch nhíu mày. Gã từ lâu đã cảm thấy Yuki rất phiền phức, nếu như không có Yuki, thì có lẽ Yulia đã chấp nhận hắn rồi – thậm chí Hướng Sơn cũng là do Yuki đào lên.
“Vừa nãy đi trên đường, nó đã va vào tôi! Va vào tôi đấy!” Willy hoảng loạn: “Chắc chắn thằng nhãi con đó đã thấy rồi! Nếu không thì…. Nếu không thì….”
“Chỉ va trúng một phát?” Enoch nghe vậy, không biết nên khóc hay nên cười: “Chỉ có chút chuyện nhỏ đấy thôi á?”
“Chuyện nhỏ gì chứ? Tôi đã đẩy gã quái vật đó đấy!” Willy hét to: “Cả con chó kia cũng thua, làm sao tôi có thể thắng được!”
“Chẳng qua là ăn may mà thôi!” Enoch gằn giọng: “Chẳng qua là đại lão gia tỏ ra tốt bụng thôi! Thắng cái gì mà thắng. Chẳng phải hắn còn ngã lăn ra đất rồi nói cái gì đó mà “Tôi thua rồi, tôi thua rồi” sao? Loại hèn nhát… Xì!”
“Anh không thể bỏ mặc tôi được!” Willy tiếp tục gào lên: “Hay là chúng ta lừa thằng nhóc đó đi! Dù là đập nát thành nhiều mảnh, hay tháo ra đem bán….”
“Này! Cậu điên à!” Enoch giật mình. Gã thật sự có ý định đến với Yulia. Enoch hiểu rõ tính cách của bản thân, gã biết chắc mình sẽ không giữ được bí mật. Nếu động đến Yuki, gã sẽ không thể tiến tới với Yulia được nữa.
Enoch bắt đầu cảm thấy phiền với Willy. Nhưng gã cũng sợ nếu cứ mặc kệ anh ta, nói không chừng Yuki sẽ xảy ra chuyện, và hắn cũng bị liên luỵ theo. Nghĩ vậy, Enoch cố dỗ dành: “Chuyện nhỏ thôi mà… Thế này đi, hôm nay tôi vốn có dự định vào trong thành vui chơi. Để tôi cho cậu đi xem cái gì hay ho nhé, thấy thế nào?”
“Hay ho?” Wlly ngơ ngác hỏi: “Là cái gì? Đấu trường sao? Hay là có trò mới?”
“Còn kích thích hơn thế nhiều… Lên xe đi!”
Enoch không có buồng lái. Gã hơi nghiêng thùng xe, để cho Willy tự trèo lên.
Bụi đất tung bay.
………………
“Một lập trình viên chân chính, phải bắt đầu từ máy trần!”
“Một lập trình viên đích thực không phân biệt kiểu lập trình hướng đối tượng hay hướng thủ tục, không cần biết kiểu dữ liệu mạnh hay yếu. Từ ngôn ngữ máy, hợp ngữ, hay trình biên dịch mã cho đến vô số chương trình ứng dụng cao cấp, hắn không gì là không biết!”
Một vài ký ức vụt sáng trong đầu. Hướng Sơn không còn nhớ ai là người đã nói câu đó. Tuy nhiên, một số thành phần “tri thức nào đó nhắc nhở hắn rằng đó là một lập trình viên huyền thoại, người đã định hình nên lịch sử.
Hướng Sơn có một mối giao tình sâu sắc vói người này, nhờ đó, hắn đã học được gần như “tất cả mọi thứ” liên quan tới lập trình.
Bản chất của thứ này chính là “Toán học”.
Lập trình không chỉ là ngôn ngữ học, mà còn là toán học.
Hoặc có thể nói, ngôn ngữ học chính là một dạng của toán học.
Vào khoảng thời gian cuối Thế chiến thứ hai, các nhà khoa học đã mở ra một lĩnh vực mới gọi là “bài toán từ”. Trong lĩnh vực này, những khái niệm toán học được khoác lên mình lớp áo của “ngôn từ”, và được biểu thị một cách tự nhiên bản chất của chúng thông qua các cấu trúc đại số. Nói ngắn gọn, các nhà toán học đã bắt đầu thử nghiệm dùng quy tắc của ngôn ngữ học để giải mã toán học.
Năm 1944, nhà logic học người Mỹ và cũng là người tiên phong trong lĩnh vực trí tuệ nhân tạo, Emil Post, đã chứng minh bài toán từ là không thể xác định được.
Ba năm sau, vào năm 1947, con trai của Andrei Markov, Anatoly Markov đã đưa ra một chứng minh tương tự dù không hề biết tới công trình của Post.
Như vậy, trong ngôn ngữ tồn tại “những vấn đề không thể xác định được”. Đây là ví dụ đầu tiên về một bài toán không giải được không do con người đặt ra, và cũng không xuất phát từ lĩnh vực khoa học máy tính.
Cùng thời điểm đó, các nhà ngôn ngữ học đã quyết định đi theo hướng ngược lại, nhưng kết quả đạt được cũng không có gì khác biệt.
Nếu ngôn ngữ học hiện đại bắt nguồn từ Ferdinand de Saussure, thì Noam Chomsky chính là đỉnh cao sau Saussure. Ngoài việc được biết đến rộng rãi như một nhà ngôn ngữ học, triết gia và nhà xã hội học, Chomsky còn có thể được coi là một nhà toán học.
Nghiên cứu của ông về ngôn ngữ học thậm chí đã được ghi nhận trong lịch sử toán học.
Hai khái niệm do ông tạo ra, "ngữ pháp phi ngữ cảnh" và "ngữ pháp chính quy", có vai trò quan trọng trong lý thuyết khoa học máy tính.
Ngoài ra, các nhà di truyền học cũng vô cùng kính trọng Chomsky. Họ tin rằng nghiên cứu của ông về ngôn ngữ có thể là chìa khoá để phá giải mã di truyền – giúp họ tìm ra "ngôn ngữ của Đấng tạo hoá" được ẩn giấu trong thông tin di truyền.
Nói cách khác, đó là "chương trình máy tính" mà hoá học di truyền vận hành theo.
Với nghiên cứu đủ sâu sắc về toán học và các lĩnh vực liên quan, việc tạo ra một ngôn ngữ mới độc đáo hoàn toàn không phải điều bất khả thi.
Mặc dù vậy, thách thức thực sự nằm ở việc đảm bảo ngôn ngữ đó khó hiểu đối với con người, trong khi lại dễ hiểu đối với máy móc.
Ngôn ngữ càng khó hiểu, ưu thế về nội công càng lớn. Các hiệp khách chính là dựa vào nội công để ẩn mình mỗi khi tham gia Internet. " Ngôn ngữ" là gốc rễ của tất cả mọi phòng tuyến của họ. Chức năng xử lí ngôn ngữ của bộ não của họ luôn phối hợp chặt chẽ với nội công.
Ngôn ngữ họ thông thạo càng phức tạp, nội công của họ càng khó bị phát hiện.
Tuy nhiên, nếu hy sinh hiệu suất máy tính chỉ để đạt được lợi thế nội công, thì đó sẽ là một sự đảo lộn giá trị.
Lisp không thể đáp ứng yêu cầu "phức tạp". Nó quá gần với toán học, đến mức chỉ cần nắm bắt một số kiến thức cơ bản, một nhà toán học lợi hại cũng có thể dễ dàng sử dụng nó.
C là một "ngôn ngữ cấp cao mang đặc điểm của ngôn ngữ tự nhiên", có số lượng người dùng đông đảo. Do đó, ngôn ngữ này đã trải qua một quá trình "phát triển hỗn loạn", thậm chí đã xuất hiện hiện tượng "biến đổi ngôn ngữ" chỉ trong thời gian ngắn – điều này rất giống với sự tiến hoá của ngôn ngữ tự nhiên. Nếu như trên thế giới có hai khu vực mạng hoàn toàn cách biệt, C thậm chí có thể tiến hoá ra những "phương ngữ riêng".
Hướng Sơn thành thạo cả hai mặt của vấn đề này.
Trong lĩnh vực nội công, điều đó được gọi là "nhất pháp thông, vạn pháp thông".
Hướng Sơn có cảm giác mình cũng quen biết thêm một người như vậy. Người này có thể không có danh tiếng vang dội, nhưng chắc chắn đứng trên ranh giới của tri thức nhân loại.
Hắn đã học hỏi được rất nhiều từ những người bạn của mình – ít nhất thì hắn tin là vậy.
Nhưng nếu suy nghĩ kỹ một chút, điều này dường như không hợp lý. Trong nhận thức của Hướng Sơn, một người tối đa cũng chỉ có thể đào sâu vào một lĩnh vực nhất định, còn những lĩnh vực khác chỉ chạm được đến bề mặt. Tri thức nhân loại từ lâu đã mở rộng đến mức không một "cá nhân" nào có thể nắm bắt được toàn bộ.
Hắn không nên vừa giỏi kỹ thuật xây dựng, vừa thành thạo lập trình, lại có trình độ toán học xuất sắc mới đúng. Ngay cả khi bạn bè của hắn đều là những người lợi hại đến như vậy, không có lí do gì để hắn có thể lĩnh hội được hết sở trường của họ.
Người bạn thân thiết nhất trong những năm cuối đời của Einstein là nhà toán học vĩ đại Gödel. Nhưng mối quan hệ này cũng không khiến ông đạt đến trình độ toán học ngang bằng Gödel – ít nhất, theo quan điểm của các nhà toán học thực thụ, trình độ toán của Einstein chỉ ở mức “đủ dùng cho một nhà vật lý”.
Thế nhưng... điều kỳ lạ đó lại đã thật sự xảy ra.
Hướng Sơn tháo rời hệ điều hành của thiết bị đầu cuối và thay thế trình biên dịch cũ bằng trình biên dịch của chính mình.
Dù là Java mộc mạc, bình dân như khúc nhạc "Hạ Lý Ba Nhân," hay C chỉ đơn thuần là nền tảng cho người mới; dù là Perl đẹp đẽ mà cô độc như những bài thơ cổ, hay Ruby đầy đam mê và xúc cảm như thơ hiện đại; dù là Python dễ học khó tinh nhưng sau khi đại thành thì chẳng khác gì thần minh, hay Lisp vừa gần gũi với toán học vừa gần gũi với sự sáng tạo; thậm chí cả những hậu duệ của chúng, đều không phù hợp để duy trì sự tồn tại của nội công.
Nguyên nhân rất đơn giản: chúng đều được tạo ra để “người khác có thể sử dụng”.
Những ngôn ngữ này được sinh ra để con người có thể hiểu được.
Điều duy nhất cản trở việc hiểu chúng chỉ là trí thông minh của người đọc.
Ngay cả khi ngôn ngữ C đã phát triển thành các "phương ngữ", điều đó vẫn chưa đủ để giữ bí mật.
Đối với các hiệp khách, một ngôn ngữ tốt không chỉ có thể che giấu ý định của họ, mà còn cho cơ hội phản công cuối cùng khi tường lửa bị phá vỡ, mã hoá bị bẻ khoá, lớp đóng gói bị xé toạc, hay Nhâm Đốc Tiểu Chu Thiên bị gián đoạn.
Ngươi không thể mãi hy vọng kẻ địch của mình chỉ là một tên ngốc – ngươi phải tìm cách để dẫu cho kẻ thù có thông minh đến đâu, nhưng nếu thiếu đi thông tin quan trọng, thì cũng không thể nhanh chóng thấu hiểu những dòng mã nguồn không ngừng lưu chuyển trong chương trình của ngươi.
Mỗi trường phái nội công đều có trình biên dịch đặc thù riêng, với các đặc điểm ngữ pháp và phương pháp đặt tên riêng biệt. Các ngôn ngữ lập trình cấp cao của chúng đều đi ngược lại hoàn toàn với triết lý thiết kế truyền thống của các ngôn ngữ lập trình trước đây.
Đấy là những ngôn ngữ được tạo ra để "người khác không thể hiểu được".
Nếu các lập trình viên truyền thống luôn nỗ lực tạo ra một loại "ngôn ngữ tốt nhất", tốt đến mức ai cũng muốn sử dụng, thì ngôn ngữ do các hiệp khách tạo ra lại hoàn toàn ngược lại, là "ngôn ngữ tệ nhất".
Đáng ngưỡng mộ hơn là, họ vẫn đảm bảo được rằng những ngôn ngữ "tệ nhất" này vẫn có thể được chấp nhận bởi máy móc.
Mà ở điểm này, Hướng Sơn có một sự tự tin tuyệt đối. Lúc ban đầu, hắn cũng không hiểu sự tự tin này bắt nguồn từ đâu.
Sau khi dành hai giờ để viết lại trình biên dịch, hắn bắt đầu nhớ ra nhiều điều.
Nền tảng nội công của hắn là một ngôn ngữ vô danh, chỉ được lưu truyền trong một cộng đồng rất nhỏ.
Có rất ít người biết ngôn ngữ này, đơn giản là vì nó không được lưu hành rộng rãi. Người biết về nó đã ít, người có thể học và sử dụng nó lại càng ít hơn. Chỉ là, việc học ngôn ngữ này khó hơn cả việc học một môn ngoại ngữ, và việc sử dụng nó để lập trình chẳng khác gì sáng tác một bài thơ xuất sắc bằng một ngôn ngữ hoàn toàn xa lạ.
“Nói đi cũng phải nói lại, nếu nó quả thật khó đến vậy… thì làm thế nào mà mình học được?” Hướng Sơn tự hỏi: “Rốt cuộc mình là ai? Sao mình lại lợi hại như vậy?”
Khi hoàn thành việc viết lại trình biên dịch, hắn cảm thấy như vừa mở khóa thêm một tầng kiến thức mới. Dữ liệu từ con chip kết nối não bộ của hắn tràn ra. Mã đè lên mã, những khối màu bất quy tắc hiện lên trên màn hình rồi biến mất khi thiết bị tự khởi động lại.
Đây không phải là sáng tạo từ con số không. Dường như Hướng Sơn đã từng trải qua điều tương tự trước đây.
Có lẽ do ký ức khuyết thiếu, hắn không thể tái hiện hoàn toàn kỹ thuật khi ấy. Nhưng kể cả thế, hắn đã có đủ cơ sở để đứng vững.
Ngôn ngữ vô danh này chắc chắn là ngôn ngữ khó dùng nhất thế giới.
Nhưng trong mắt các hiệp khách, nó cũng là một trong những ngôn ngữ mạnh mẽ nhất.
Lời tự thuật của tác giảVề vấn đề hiểu sai các chi tiết kỹ thuật trong các chương cập nhật mấy ngày gần đây, đúng là lỗi của tôi. Khi viết “Tẩu Tiến Tu Tiên”, tôi tham khảo các cuốn sách phổ biến trong giới học thuật, được các chuyên gia đánh giá cao. Một phần trong những mô tả đó đến từ các sách hướng dẫn lập trình tôi tự đọc, và phần còn lại là những gì tôi thấy trên các cộng đồng lập trình viên, những mô tả khiến tôi cảm thấy “Ôi trời, mô tả này thật tuyệt vời!” Dù sao thì tôi không phải là lập trình viên chuyên nghiệp, vì vậy không tránh khỏi việc đôi khi tôi “hiểu sai giữa hình thức và thực tế”. Và bây giờ nhìn lại, những cuốn sách lập trình nhập môn tôi đọc cũng không chắc đã chính thống, (hơn nữa tôi cũng không chắc đã hiểu hết).
Về các phần liên quan đến lịch sử ngành học, những câu chuyện nhỏ trong ngành, tôi nghĩ không có vấn đề gì, nhưng đối với các chi tiết kỹ thuật hiện tại của lập trình, đúng là có một số vấn đề. Một số mô tả tôi sẽ dần dần sửa lại theo những góp ý từ các độc giả chuyên môn.
Ý định ban đầu của tôi luôn là: “Bạn nghe tôi kể về ngành học này hay ho đến mức nào, nếu bạn cảm thấy thú vị, hãy tự tìm cách học hỏi và đạt được thành quả, đó là phúc của bạn cũng là công đức của tôi”. Đối với tôi, việc tích lũy các chi tiết kỹ thuật trong sách là cách để tạo dựng cảm giác “thực tế” và “sự kinh ngạc”. Nếu có phần nào trong những chi tiết này khiến bạn bối rối, xin hãy mở phần bình luận của chương. Các bạn đọc chuyên môn chắc chắn mạnh hơn tôi nhiều. Nếu bạn thấy câu chuyện của tôi thú vị và muốn học hỏi một chút gì đó, thì đó là điều tuyệt vời nhất rồi. Còn về những thiết lập mà tôi – một tay mơ trong giới geek – tưởng tượng ra, xin đừng tin hết.