Unix đã chết, Unix muôn năm

Bài viết được dịch từ blog Coding Horror

Unix bước sang tuổi 40: Quá khứ, hiện tại và tương lai của một cuộc cách mạng hệ điều hành là một bài viết tuyệt vời để đọc.

Bốn mươi năm về trước trong một mùa hè cũng giống như thế này, một lập trình viên ngồi xuống và đóng cửa lập trình trong vòng một tháng để làm ra cái mà sau đó đã trở thành một trong những phần mềm quan trọng nhất đã từng được tạo ra.

Cha đẻ hệ điều hành UnixVào tháng 8 năm 1969, Ken Thompson (người đứng bên trái), một lập trình viên tại AT&T (là công ty con của Bell Laboratories), nhìn thấy khoảng thời gian một tháng mà vợ và cậu con trai bé bỏng của anh đi vắng là một cơ hội tuyệt vời để biến những ý tưởng về một hệ điều hành mới trở thành hiện thực. Anh ta viết phiên bản đầu tiên của hệ điều hành Unix bằng ngôn ngữ assembly cho một máy tính minicomputer Digital Equipment Corp. (DEC) PDP-7, anh dành ra một tuần cho mỗi thành phần gồm hệ điều hành, một shell, một editor và một assembler.


Bài viết đó đi kèm bởi một cây sơ đồ từ wikipedia, minh họa cấu trúc phả hệ của đại gia đình Unix.

Sơ đồ phả hệ các hệ điều hành.Đối với tôi, Unix đã trở thành đồng nghĩa với Linux, và phong trào mã nguồn mở nói chung. Những phiên bản *nix mới nhất đứng cạnh bên nhau cho ta một cái nhìn tổng quan như sau:

Mã nguồn mở Mã nguồn Hỗn hợp/Chia sẻ Mã nguồn đóng
Minix Mac OS X AIX
Linux OpenServer
FreeBSD HP/UX
NetBSD
OpenBSD
OpenSolaris

Tôi đã không nhận ra có nhiều biến thể mã nguồn đóng của Unix đến vậy cho đến khi tôi trực tiếp trải nghiệm chúng. Đó cũng là một điều khá kỳ quặc khi hệ điều hành OS X của Apple đã mang chúng ta đi một vòng cùng với giấy phép Unics và BSD. Nếu nó trở nên khá cô độc trong cột “Mã nguồn đóng”, thì hãy tưởng tượng cảm giác tồn tại của nó khi trở thành cái tên duy nhất trong cột “Mã nguồn Hỗn hợp/Chia sẻ”. (NB: tôi nghĩ rằng cái nhóm nhỏ hiện tại của Apple đang nắm giữ đại điện cho tương lai của phần mềm thương mại, nhưng đó là một chủ đề cho một bài viết khác.)

Trước tiên tôi là một lập trình viên trên môi trường Windows từ đầu những năm 90s, nhưng theo thời gian, tôi đã phát triển một sự tôn trọng bất đắc dĩ dành cho Unix. Và đoạn trích sau đây của Michael Feathers đã tổng kết điều đó tốt nhất:

Có một cái gì đó sâu sắc trong phát triển phần mềm mà không phải ai cũng có thể có được như những người ở Bell Labs đã làm. Đó là một trào lưu ngầm của “phong cách New Jersey”, “Tồi hơn thì Tốt hơn”, và “triết lý Unix” – và nó không chỉ là một đặc trưng của phần mềm Bell Labs. Bạn nhìn thấy nó trong đặc tả Ethernet nguyên thủy nơi mà sự xung đột giữa các gói tin được xem như là chuyện bình thường.. và những ý tưởng tương tự nằm sâu trong chính giao thức internet. Đó là nhận thức sâu sắc về thiết kế phân luồng – một sự bằng lòng để sống với ít hơn một chút để tránh sự lớn hơn nhưng bừa bộn và một sự bằng lòng để nhìn thấy sự thanh tao trong thế giới thực hơn là tầm nhìn.

Tôi nhận thấy điều này trở nên sâu sắc và hết sức đúng đắn trong mọi thứ mà mình đã từng làm việc với tư cách là một lập trình viên, và càng ngẫm nghĩ về triết lý Unix trên thì ta lại thấy nó hoàn toàn không thể phủ nhận được. Không giống như Rich Skrenta, tôi đã không lớn lên như là một lập trình viên Unix, vì vậy tôi tiếp xúc với sự đánh giá này khá trễ. Còn Joel Spolsky cũng đã phân chia Unix/ Windows, sau khi đọc cuốn sách The Art of UNIX Programming, trong một bài viết của anh như sau:

Sự khác biệt về văn hóa giữa các lập trình viên Unix và Windows là gì? Có rất nhiều chi tiết và sự tinh tế, nhưng phần quan trọng nhất đến từ một thứ: đó là các giá trị văn hóa Unix thì có ích đối với những lập trình viên khác, trong khi các giá trị văn hóa Windows thì có ích đối với không-phải-lâp-trình-viên. Điều này dĩ nhiên chỉ là một sự đơn giản hóa, nhưng thực ra sự khác nhau rất lớn là: chúng ta lập trình cho các lập trình viên hay cho người dùng cuối? Mọi thứ khác thì chỉ là phụ.

Vì vậy một bên thì bạn có hàng trăm ứng dụng kiểu dòng lệnh, được xây dựng theo những phong cách hoàn toàn khác nhau, cùng hàng ngàn tham số khó hiểu, tất cả chúng có thể được kết hợp mềm dẻo cùng với nhau để hoàn hành hầu hết mọi tác vụ. Và một bên kia, bạn có windows registry và MFC.

Đôi khi, bạn chỉ không thể thắng.

Vì vậy, vâng, tôi là một fan của Unix. Và tôi cũng là một fan của Windows. Tôi nghĩ rằng thật là thú vị để nghiên cứu về những mặt ưu và nhược điểm của cả hai môi trường, bởi vì với tư cách là một lập trình viên, thì tôi là một fan của bất cứ sản phẩm chết tiệt nào mà… có thể làm việc tốt.

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s