Đây là bài viết đầu tiên của mình về công nghệ. Và đương nhiên, mình khác hoàn toàn với các "tác giả Khoa Học - Công Nghệ".
Lời tuyên bố trịnh trọng này hoàn toàn không phải là vô căn cứ. Chắc chắn trong cộng đồng tech Việt Nam, chủ đề này rất hiếm khi được nhắc đến (mình không rõ tại sao), nhưng anh em công nghệ nào chắc cũng phải biết đến thứ đó, được mệnh danh là "sự tự do trong công nghệ", "thánh địa của phần mềm miễn phí". Vâng, đó chính là ... à mà thôi, tại sao mình lại phải nói ở đây. Xin trịnh trọng mời các bạn đọc tiếp bài này cho nóng.
Ảnh bởi
Kristina V
trên
Unsplash
Rõ ràng những phần thưởng và sự đánh giá cao mà tôi và các đồng nghiệp của tôi nhận được là rất dễ chịu và chúng tôi cảm thấy rằng mình đã giúp tạo ra thứ gì đó có giá trị thực sự. Nhưng không, chúng tôi không thực sự mong đợi rằng đây sẽ là “tương lai” hay thậm chí là lường trước được ảnh hưởng cuối cùng của sản phẩm này.
Dennie Ritchie
Năm 1969, một cuộc cách mạng đã diễn ra, nó đã làm thay đổi toàn bộ lịch sử thế giới. Và đó cũng là lúc mà mọi thứ trở nên rối rắm như hiện tại.
Tại một nơi được gọi là Bell Labs, có hai lập trình viên đang thử nghiệm một mẩu hệ điều hành mới mà họ vừa mới tạo ra. Họ không hề biết rằng, cái "project" mà họ đang làm sau này được xem là cha đẻ của công nghệ hiện đại, thứ mà khiến cho Windows và MacOS khác nhau một trời một vực, thứ mà đã định nghĩa lại thế nào là "công nghệ".
Có lẽ các bạn đã biết được đó chính là hệ điều hành gì. Vâng, UNIX
UNIX
UNIX
Câu chuyện sau đó thì có vẻ như ai cũng biết. Và thực tế Spiderum cũng đã từng có một bài như vậy rồi. Nhưng mà, tại sao Ken Thompson và Dennie Ritchie - hai nhà sáng lập UNIX lại tạo ra "đứa con tinh thần" UNIX của mình thì hiếm ai biết.
Để trả lời câu hỏi đó thì chúng ta nên quay ngược thời gian một chút vào khoảng giữa thập niên 60 của thế kỉ trước. Lúc này, MIT (Massachusetts Institute of Technology), Bell Labs và General Electric đang phát triển một hệ điều hành tên là "Multics", một hệ điều hành time-sharing cho chiếc máy tính mainframe GE-645 to đùng. Multics, mặc dù là một project rất độc đáo, nhưng không phải là không có vấn đề. Hệ điều hành này quá phức tạp, hệ thống thì lại rất cồng kềnh. Thất vọng vì điều đó, một số nhà lập trình phát triển dự án đã rời đi. Những người rời đi cuối cùng là Ken Thompson, Dennie Ritchie, Douglas Mcllroy và Joe Ossanna đã quyết định trải nghiệm mình lại trong một dự án nhỏ hơn. Dự án này ban đầu không có tên và không hề có bên thứ ba nào hỗ trợ.
Logo của Multics
Logo của Multics
Dự án này là một hệ điều hành đơn nhiệm (single-tasking) và được nhóm ban đầu đặt tên là UNICS (Uniplexed Information and Computing Service), như là một cách chơi chữ của MULTICS (Multiplexed Information and Computer Services). Nhưng cuối cùng, tên lại được rút gọn lại thành UNIX, vì "không ai nhớ đến cách viết của UNICS" (cre: Kernighan).
Ban đầu, UNIX được viết bằng hợp ngữ (Assembly). Đến Version 4 vào năm 1973 thì, Dennie Ritchie đã tạo ra một cuộc cách mạng nữa. Nếu bạn nào nghe tên Dennie Ritchie mà thấy quen quen thì xin chúc mừng, ông chính là cha đẻ của ngôn ngữ lập trình C - thủy tổ của các ngôn ngữ lập trình trên thế giới, kẻ đứng đằng sau sự phát triển của công nghệ hiện đại. Version 4 được viết lại bằng C và sau vài năm phát triển thì năm 1975 thì giấy phép mã nguồn đầu tiên của UNIX đã được bán cho Donald B.Gillies ở trường đại học Illinois.
Phụ note là ngôn ngữ C ban đầu là B, sau đó Ritchie cải tiến để ngôn ngữ B thành C.
Ảnh hưởng của UNIX khi đó và vô cùng to lớn đối với công nghệ thời điểm đó, và còn cả giới học thuật nữa. Vậy nên, những năm sau thập niên 70s, AT&T - là chủ quản của Bell Labs đã chia sẻ mã nguồn của UNIX cho các trường đại học lớn và các tổ chức thương mại. Trong đó chắc chắn phải nhắc đến trường đại học California, Berkeley. Trường đại học này đã tạo một phiên bản giáo dục rất nổi tiếng với cái tên Berkeley Software Distribution, gọi tắt là BSD.
Ban đầu, các phiên bản của BSD dựa trên codebase và design của UNIX. Tuy vậy, những phiên bản sau đó, BSD và UNIX càng ngày càng giống nhau. Điều đó đã dẫn đến một thời điểm gọi là "UNIX war", khi mà BSD và System V - phiên bản UNIX của AT&T liên tục cho ra các phiên bản khác nhau. Cuối cùng thì System V đã trở thành tiêu chuẩn của UNIX và đã được mọi người công nhận, các phiên bản sau đó của BSD nổi tiếng nhất có lẽ là FreeBSD (macOS và CentOS cũng bắt đầu xây dựng dựa trên nhánh BSD này), còn UNIX sau đó đã bắt đầu được các nhà cung cấp tạo ra những phiên bản riêng của mình cho mục đích thương mại, ví dụ như Solaris của Sun Microsystems, AIX của IBM, HP-UX của HP, v...v..
Tuy BSD và UNIX hiện nay không còn được maintain nữa, tuy vậy, những ý tưởng của chúng đã ảnh hưởng rất lớn đối với công nghệ hiện đại. Có thể nói, di sản mà chúng để lại đã định hình lại một trật tự hoàn toàn mới cho công nghệ, tức đã đặt lại khái niệm "công nghệ" là gì. Ken Thompsons, Dennie Ritchie và các nhà đồng sáng lập quả thật là những người có công rất lớn trong công cuộc này, vì vậy cộng đồng tech đến tận bây giờ vẫn thật sự tôn trọng và biết ơn họ.

VẬY UNIX ĐÃ ĐEM LẠI NHỮNG GÌ CHO CỘNG ĐỒNG CÔNG NGHỆ?

Trước hết phải nói về UNIX philosophy (Triết Lý UNIX). Dành cho những bạn nào chưa biết thì UNIX philosophy thì đây là tập hợp những các chuẩn mực văn hóa (cultural norms) và các tiếp cận mang tính triết học (philosophical approaches) để phát triển các phần mềm tối giản và theo module. Để cho chuẩn thì đây chính là version vào năm 1974:
1. Make it easy to write, test, and run programs. 2. Interactive use instead of batch processing. 3. Economy and elegance of design due to size constraints ("salvation through suffering"). 4. Self-supporting system: all Unix software is maintained under Unix.
Còn đây là bản tạm dịch của mình:
1. Làm cho phần mềm dễ viết, kiểm tra, và chạy các chương trình. 2. Cách sử dụng tương tác thay vì xử lý hàng loạt 3. Tính kinh tế và sự sang trọng trong thiết kế do hạn chế về kích thước ("sự cứu rỗi thông qua đau khổ") 4. Hệ thống tự hỗ trợ: tất cả các phần mềm của Unix được duy trì dưới Unix
Đây cũng là cách mà UNIX và các thế hệ sau này của nó (UNIX-like) lại trở nên đặc biệt và tuyệt vời đến như vậy. Vì sự đơn giản, an toàn mà UNIX và UNIX-like được các cộng đồng lập trình viên tin tưởng chọn làm hệ điều hành chạy trong các máy chủ, máy tính cá nhân, v...v... Sự tối giản hóa này cũng khiến cho UNIX không ăn quá nhiều dung lượng, chạy lại cực kì bền bỉ, không có quá nhiều bug và bảo mật cực cao cũng là một điểm cộng cực lớn của UNIX và UNIX-like.
Có một ý tưởng nữa về UNIX đó chính là "Everything is a file". Đây cũng là một cách làm đơn giản lại UNIX và khiến cho hệ điều hành trở nên dễ thao tác và quản lý hơn bao giờ hết. Các phiên bản sau này của UNIX-like (hầu hết) đều có tính năng này, nên những hệ điều hành UNIX-like có một khả năng mà rất nhiều người dùng ưa thích: khả năng tùy biến cực cao.
Ngoài ra, các phần mềm và tính năng của UNIX đã truyền cảm hứng rất lớn cho các phiên bản và bản nhánh sau này của UNIX, ví dụ như shell, pipes, giao thức TCP/IP, v..v.. Tất cả những thứ này đã khiến cho UNIX và họ hàng của nó trở nên đặc biệt hơn bao giờ hết, và đã từng có một thời điểm UNIX và UNIX-like là độc tôn của ngành công nghệ cho đến khi MS-DOS sau này là Windows ra đời, dựa trên Windows NT. Đó là lý do tại sao Windows lại quản lý file và các thư mục của nó thông qua tên dùng các backslash (\) như thế này: C:\Windows\System32\, trong khi của UNIX lại dùng các slash (/) như thế này /home/username/.

BONUS: THỬ NHẸ MỘT PHIÊN BẢN UNIX

Dạo gần đây mình cũng có tò mò tìm hiểu một số phiên bản còn tồn tại của UNIX. Vì UNIX không còn được chính chủ AT&T maintain nữa nên nếu như bạn nào muốn thử một trải nghiệm thuần UNIX (không phải UNIX-like nhen) thì bạn có thể tìm kiếm một số source sau
BSD flavor: FreeBSD
OpenBSD:
DragonflyBSD:
NetBSD:
Gần với SystemV:
Solaris:
OpenIndiana:
Illumos:

TÓM TẮT VÀ CÁC PHẦN SAU

Tóm chung lại, mình đã nêu sơ lược về hệ điều hành UNIX và chuyên sâu hơn một chút về hệ điều hành UNIX, các flavors (mình thường thích gọi là flavors, nếu như bạn muốn chuẩn thì các distributions) của nó và ý tưởng cuối cùng của hệ điều hành UNIX.
Ở bài sau, mình sẽ nói thêm về GNU/Linux, sự tuyệt vời của nó và The Free Software Movement của Richard Stallman. Nhưng nếu như chỉ dừng lại tới đó thì bài của mình có thể coi là trùng lập với một bài trước đây của Spiderum. Vậy nên, với tư cách là một linux user, từ phần 3 trở đi mình sẽ bắt đầu nói sâu hơn về cộng đồng linux, các technology, những cuộc chiến trong nội bộ linux, bình luận về Stallman, Linus và nhiều hơn thế nữa. Vậy nên mong các bạn thích và đón chờ series đầu tay của mình :)))