Nhịp sống số

Trên vai người khổng lồ

Trên vai người khổng lồ

Đến hôm nay, đúng một tháng sau khi Ritchie vĩnh biệt chúng ta, tên của ông gần như đã vắng bóng trên các phương tiện truyền thông, trong khi Jobs vẫn tiếp tục là đề tài đầy cảm hứng cho nhiều bài viết.

<>

Vậy là chỉ sau sự ra đi của Steve Jobs đúng 1 tuần, thế giới lại mất thêm một thiên tài công nghệ nữa: Dennis Ritchie đã vĩnh biệt chúng ta vào ngày 12/10/2011 tại nhà riêng ở New Jersey. Ông được coi là “cha đẻ” của ngôn ngữ lập trình C và đã cùng với người đồng nghiệp nổi tiếng của mình tại Bell Labs là Ken Thompson sử dụng C để viết UNIX - hệ điều hành nền tảng của rất nhiều công trình trong thế giới điện toán, bao gồm cả các siêu phẩm “quả táo khuyết” của Steve Jobs. Nhưng trong khi sự ra đi của Steve Jobs trở thành một sự kiện “hot” trên thế giới và kéo theo những hoạt động tưởng niệm rộng khắp đầy xúc động thì sự ra đi của Dennis Ritchie chỉ tác động tới một cộng đồng nhỏ bao gồm những ngưòi biết rõ tài năng và sự cống hiến vĩ đại của ông, đặc biệt là những lập trình viên hệ thống.

Đến hôm nay, đúng một tháng sau khi Ritchie vĩnh biệt chúng ta, tên của ông gần như đã vắng bóng trên các phương tiện truyền thông, trong khi Jobs vẫn tiếp tục là đề tài đầy cảm hứng cho nhiều bài viết. Điều này hoàn toàn dễ hiểu và cũng không có gì là không công bằng vì với những gì mà Jobs đã mang lại cho nhân loại và với tư cách của một doanh nhân, từ lâu nay Jobs đã trở thành “người của công chúng” nên tầm ảnh hưởng của ông thực sự là “ubiquitous”! Còn Ritchie gần cả cuộc đời sáng tạo của mình trôi qua âm thầm trong Bell Labs và các sản phẩm trí tuệ của ông chỉ có những người lập trình chuyên nghiệp mới có thể đánh giá được hết giá trị không thể đo đếm của chúng. Tôi tin rằng ngay cả đối với các sinh viên chuyên ngành Công nghệ Thông tin (CNTT) ở nước ta, nếu được hỏi Dennis Ritchie là ai, chắc cũng chỉ một số ít trả lời chính xác, mặc dù hàng ngày họ đang được sử dụng rất nhiều công cụ là thành quả trí tuệ trực tiếp hoặc gián tiếp của ông. Bởi không phải giáo viên nào dạy ngôn ngữ lập trình cho sinh viên cũng có hiểu biết và hứng khởi đẻ giới thiệu cho họ về lịch sử  phát triển của ngôn ngữ lập trình và những con người đã sáng tạo nên lịch sử  đó. 

Trong thập niên 60 của thế kỷ trước, người lập trình hệ thống chủ yếu sử dụng các ngôn ngữ bậc thấp như ngôn ngữ máy hoặc hợp ngữ (assembly), trong khi người lập trình ứng dụng có hàng loạt công cụ ngôn ngữ bậc cao như Algol, Fortran, Cobol, Pascal,… Mặc dù mã lệnh đã đỡ rắc rối hơn ngôn ngữ máy nhiều nhưng các hợp ngữ vẫn chưa thân thiện với người dùng như các ngôn ngữ bậc cao, đặc biệt sự phụ thuộc vào phần cứng đã làm giảm tính khả chuyển (portability) của chúng. Trong bối cảnh đó, ngôn ngữ C đã được Ritchie phát triển như một ngôn ngữ trung gian giữa hợp ngữngôn ngữ bậc cao, trong khoảng thời gian từ 1969-1973 tại Bell Labs danh tiếng. C là một ngôn ngữ biên dịch được xây dựng dựa trên ngôn ngữ  (thông dịch) B đã có của Ken Thompson. Năm 1978, cùng với cộng sự là Brian Kernighan (là nhà khoa học máy tính người Canada cùng làm việc tại Bell Labs, hiện tại là Giáo sư tại Khoa Khoa học Máy tính, Đại học Princeton), DR đã xuất bản lần đầu tiên cuốn sách “The C Programming Language” để giới thiệu đặc tả không chính thức của ngôn ngữ này. Tôi đã có cơ hội được đọc cuốn K&R C “xịn” này một cách kỹ lưỡng tại  MASI Lab, Đại học Paris 6 để thực hiện nhiệm vụ thầy hướng dẫn giao cho: sử dụng C để viết một driver cho giao thức mạng X25 trong môi trường Unix.

Gần 30 năm đã trôi qua nhưng tôi vẫn còn nhớ mãi dòng lệnh in quen thuộc  <>printf<>(<>"Hello,<> World!"<>)<> trong ví dụ đơn giản đã trở thành kinh điển được các tác giả đưa ra lần đầu trong cuốn sách. Những kẻ nhập môn như tôi hồi đó ai mà chẳng thử ngay cái lệnh in này để tận hưởng khoái cảm câu chào thân thiện ấy xuất hiện trên trang in? Có lẽ chính bản thân Ritchie cũng không thể ngờ rằng C của ông không chỉ gửi lời chào thế giới mà sẽ còn góp phần quan trọng trong việc thay đổi thế giới.

Cái hay của C là nó có thể dùng cả cho lập trình hệ thống lẫn lập trình ứng dụng. Những ưu điểm của C, đặc biệt là tính khả chuyển, đã được cộng đồng lập trình đón nhận và C nhanh chóng trở thành một ngôn ngữ “hot” của hơn một thập kỷ tiếp theo và từ một chuẩn “de facto” nó đã sớm được hoàn thiện để trở thành chuẩn “de jure” sau khi “qua tay” các tổ chức chuẩn hoá quốc gia và quốc tế là ANSI và ISO. Và chính C đã là nền móng cho nhiều ngôn ngữ dẫn xuất từ nó như C++, Java hay các ngôn ngữ chấp nhận tích hợp C như Python, Ruby,…đã và đang là công cụ hữu hiệu của các nhà lập trình đương đại để viết ra hầu hết các chương trình hệ thống điều khiển các tài nguyên, dịch vụ cho máy tính và mạng.

Lẽ dĩ nhiên khi sáng tạo ra C, Ritchie không hề quan tâm đến số phận tương lai của nó mà chỉ nhằm mục đích đơn giản là cần phải có một ngôn ngữ mềm dẻo và đủ mạnh để có thể viết lại nhân UNIX (UNIX kernel), trước đó đã được viết bằng hợp ngữ. Tính khả chuyển của C đã cho phép Ritchie và Thompson viết ra được một nhân UNIX cũng khả chuyển và do vậy đã nhanh chóng được cài đặt cho nhiều hệ thống máy tính với nền tảng (platform) khác nhau. Phiên bản này sau đó đã trở nên phổ biến và trở thành nền móng quan trọng để phát triển các hệ điều hành đương đại, nổi bật là Mac OS của Apple và hệ điều hành mã nguồn mở Linux. Nhiều tài liệu đã nhắc lại câu nói nổi tiếng của Ritchie về hệ điều hành UNIX của mình: “UNIX là một hệ điều hành đơn giản, tuy nhiên bạn phải là một thiên tài mới hiểu được sự đơn giản của nó”, nhưng có lẽ không phải ai cũng nắm bắt được thông điệp mà ông muốn gửi gắm – mà theo tôi, rất gần gũi với quan điểm nhất quán của Jobs thể hiện trong câu nói của ông: “Hãy biến những khái niệm phức tạp thành những thứ dễ hiểu. Tạo ra cái gì đó đơn giản còn khó hơn nhiều so với việc làm nó trở nên phức tạp. Nhưng khi làm được, bạn có thể dời non lấp bể".

Viết đến đây tôi lại nhớ đến hệ điều hành XINU do Douglas Comer và cộng sự ở Đại học Purdue phát triển. Nhóm tác giả đã chơi chữ một cách hóm hỉnh khi đặt tên cho sản phẩm của mình là XINU với diễn giải “<>Xinu <>Is <>Not <>Unix” (XINU đọc ngược cũng thành UNIX) mặc dù hệ điều hành này cũng là UNIX-like. XINU đã được cài đặt cho nhiều hệ máy tính như PDP-11, VAX, Sun-2, Sun-3, Intelx86, … Mục đích chính của nhóm tác giả là để phục vụ cho việc giảng dạy chuyên sâu về hệ điều hành ở đại học nên nó đã giúp cho những kẻ “không phải thiên tài” như chúng  tôi cũng có thể tìm hiểu thuận lợi hơn “sự đơn giản” của UNIX mà Ritchie tự hào!

Sách “Ngôn ngữ lập trình C” xuất bản lần thứ nhất (1978) và thứ hai (1988). Ví dụ nổi tiếng về câu lệnh C đơn giản

Có thể nói, các sáng tạo của Dennis Ritchie đã để lại dấu ấn khắp nơi trong các sản phẩm ICT đã và đang hiện hữu trong thế giới của chúng ta, kể cả của Microsoft và Apple. Đối với Apple, dấu ấn của UNIX là hết sức ấn tượng trong các dòng hệ điều hành MacOS X và iOS.

Martin Rinar, Giáo sư ở  MIT và là thành viên của Computer Science and Artificial Intelligence Laboratory, nhận xét: “Jobs là Vua của những gì nhìn thấy được, còn Richie là Vua của những gì phần lớn là không thấy được. Thiên tài của Jobs là đã sáng tạo ra những sản phẩm mà mọi người thực sự muốn dùng bởi ông có mỹ cảm tuyệt vời và có thể làm ra những thứ mà mọi người thực sự thấy hấp dẫn. Còn Ritchie thì sáng tạo ra những điều mà các nhà công nghệ có thể sử dụng để xây dựng cơ sở hạ tầng cốt lõi mà mọi người không nhất thiết phải nhìn thấy nhưng lại dùng chúng hàng ngày ”. Còn đồng nghiệp B. Kerninghan của ông thì khẳng định: “Như cách nói đứng trên vai những người khổng lồ của Newton, có thể nói rằng tất cả chúng ta đang đứng trên đôi vai của Dennis Ritchie”.  Dĩ nhiên, “chúng ta” bao gồm cả “người khổng lồ” Steve Jobs!

Thực ra việc so sánh giữa Steve Jobs và Dennis Ritchie là khiên cưỡng bởi 2 ông sống, học tập và và sáng tạo trong một thời kỳ và môi trường làm việc rất khác nhau. Trong khi Jobs bỏ dở chương trình đại học thì Ritchie lại được đào tạo rất bài bản: tốt nghiệp Đại học Harvard về Vật lý và Toán ứng dụng, nhận học vị Tiến sỹ (Ph.D.) cũng tại Đại học Harvard về Khoa học Máy tính với luận án về “Cấu trúc chương trình và độ phức tạp tính toán” dưới sự hướng dẫn của Giáo sư Patrick C. Fischer - chuyên gia nổi tiếng trong các lĩnh vực Lý thuyết tính toánCơ sở dữ liệu. Và kể cả phần thưởng mà xã hội dành cho 2 ông cũng khác nhau. Với những cống hiến của mình, Ritchie (cùng với Thompson) đã được trao nhiều giải thưởng danh giá như: Giải thưởng Turing (1983) do Hiệp hội Khoa học Máy tính (ACM) trao tặng, Huân chương Hamming (1990) do Hiệp hội Kỹ sư điện và điện tử (IEEE) trao tặng, Huân chương Quốc gia về Công nghệ (1999), được trao bởi tổng thống Mỹ Bill Clinton, và Giải thưởng Công nghệ Thông tin và Truyền thông Nhật Bản (2011). Trong khi đó, phần thưởng dành cho Jobs chủ yếu chỉ là sự ngưỡng mộ của đông đảo công chúng trên khắp hành tinh này.

và Thompson làm việc trên máy PDP-11 tại Bell Labs (1972)
Ritchie (giữa) và Thompson nhận Huân chương do Tổng thống Mỹ trao tặng (1999)

Sau khi viết bài tưởng niệm Steve Jobs trên Tia Sáng (http://tiasang.com.vn/Default.aspx?tabid=112&CategoryID=43&News=4520), tôi đã định không viết thêm bài về Dennis Ritchie nhưng khi tình cờ thấy được một bức biếm hoạ rất thú vị trên một trang mạng (mà tôi không biết ai là tác giả), trong đó “động chạm” đến cả 2 thiên tài này thì tôi đã thay đổi ý kiến. Và tôi muốn dùng bức biếm hoạ nói trên để thay cho lời kết của bài viết. Tất cả những ai ngưỡng mộ và quan tâm đến các sự kiện liên quan đến Steve Jobs và Dennis Richie đều có thể dễ dàng giải mã được bức tranh thú vị và sâu sắc này.

(Chú thích của người viết: tên họ đầy đủ của Ritchie là Dennis MacAlistair Ritchie)

Nếu thực sự có tồn tại một chốn vĩnh hằng iHeaven nào đó thì xin nguyện cầu cho linh hồn 2 con người vĩ đại này luôn được phiêu diêu miền cực lạc!

R.I.P for the two giants!