- Có phân tích cho rằng nguyên nhân suy tàn của Perl không nằm ở giới hạn kỹ thuật mà ở văn hóa phát triển bảo thủ và khép kín
- Thái độ bài trừ có nguồn gốc từ văn hóa quản trị hệ thống UNIX thời kỳ đầu cùng niềm tự hào “lấy chuyên gia làm trung tâm” đã cản trở sự phát triển của ngôn ngữ
- Sự chia rẽ quanh Perl 6 được đánh giá là sự kiện bộc lộ xung đột nội bộ cộng đồng và tính bảo thủ hơn là một thất bại kỹ thuật
- Cùng thời kỳ đó, Ruby on Rails, PHP, Python phát triển với văn hóa cởi mở và dễ tiếp cận hơn, từ đó thay thế vị trí của Perl
- Perl vẫn còn là ngôn ngữ script cốt lõi trong môi trường POSIX, nhưng ảnh hưởng với tư cách ngôn ngữ phát triển chủ đạo đã suy giảm
Nguồn gốc văn hóa và giới hạn của Perl
- Perl ra đời từ văn hóa quản trị hệ thống UNIX, nơi các trò đùa nội bộ và chuẩn mực khép kín như ‘RTFM’, ‘luser’ chi phối
- Văn hóa này xem độc quyền tri thức và duy trì rào cản gia nhập là một đức tính, đồng thời coi chính sự khó khăn là biểu tượng năng lực
- Kết quả là hình thành một cấu trúc tập thể có sự kháng cự mạnh với người dùng mới và sự thay đổi
- Thái độ như vậy được ví như “văn hóa pháo đài kiểu vây thành”
- Người bên trong lấy độ khó kỹ thuật của mình làm niềm tự hào và xem nhẹ các nỗ lực đơn giản hóa từ bên ngoài
- Điều này dẫn tới một cấu trúc phân tầng nơi “chỉ người đủ tư cách mới có thể bước vào”
Cấu trúc cộng đồng Perl và sự chia rẽ của Perl 6
- Perl đề cao tính linh hoạt với nguyên tắc ‘TIMTOWTDI(There Is More Than One Way To Do It)’
- Tuy nhiên, nguyên tắc này lại củng cố tính bảo thủ trước thay đổi của ngôn ngữ, khiến lõi ngôn ngữ bị cố định còn đổi mới bị đẩy ra ngoài CPAN
- Cấu trúc mở rộng xoay quanh CPAN đã gây ra dependency hell
- Sự xuất hiện của Perl 6 là kết quả của xung đột nội bộ cộng đồng đồng thời là biểu tượng của chia rẽ
- Perl 5 theo đuổi tính thực dụng và ổn định, còn Perl 6 theo đuổi đổi mới và lý tưởng, tạo ra sự phân đôi về văn hóa
- Việc phát triển Perl 6 bị trì hoãn hơn 15 năm, bị đánh giá là “dự án mã nguồn mở mang tính waterfall nhất”
- Trong giai đoạn này, Perl không thân thiện với làn sóng nhà phát triển mới, và cộng đồng ngày càng khép kín
Sự trỗi dậy của các ngôn ngữ cạnh tranh
- Ruby có cú pháp tương tự Perl nhưng lấy “hạnh phúc của lập trình viên” và sự thân thiện làm giá trị cốt lõi
- Ruby on Rails đạt thành công bùng nổ nhờ tooling thân thiện với nhà phát triển và cấu trúc nhất quán
- Perl đã tạo ra nhiều framework tương tự, nhưng thiếu khả năng tương thích lẫn nhau và độ dễ gia nhập, nên không thể lan rộng
- PHP là một “ngôn ngữ lấy người dùng làm trung tâm”, thành công trong việc phổ biến đại chúng nhờ cài đặt và triển khai đơn giản
- Nó trở thành nền tảng của các nền tảng blog như WordPress, từ đó trở thành ngôn ngữ nhập môn của một thế hệ nhà phát triển web
- Python xuất phát từ nền tảng học thuật và duy trì sự tiến hóa dần dần cùng các nguyên tắc thiết kế rõ ràng
- Sau khi được Google chấp nhận, nó tăng trưởng ổn định và có được tính thực dụng nhờ triết lý ‘batteries included’
Hiện tại và di sản của Perl
- Perl vẫn tồn tại như ngôn ngữ script POSIX được cài sẵn mặc định trên phần lớn hệ thống
- Nó vẫn được dùng trong vô số hệ thống legacy và script tự động hóa
- Tuy vậy, nó hầu như không còn được chọn làm lựa chọn mặc định cho các dự án mới
- Những đổi mới quan trọng mà Perl để lại
- Tích hợp biểu thức chính quy và cú pháp mở rộng
- Phân phối gói qua Internet và xác minh chữ ký thông qua CPAN
- Test harness tự động (TAP) và sự phổ biến của khái niệm CI
- Tích hợp các tính năng POSIX, làm mờ ranh giới giữa shell và lập trình hệ thống
- Đổi mới về tài liệu hóa thông qua hệ thống tài liệu POD
Kết luận: Thành công và suy tàn do văn hóa tạo ra
- Trong giai đoạn đầu của web những năm 1990, Perl tăng trưởng bùng nổ khi kết nối hai nền văn hóa (quản trị viên UNIX và nhà phát triển web)
- Tuy nhiên, văn hóa bảo thủ và cộng đồng khép kín đã không thích nghi được với thay đổi, khiến nó rời khỏi dòng chính
- Dù vậy, Perl vẫn được đánh giá là một trong những ngôn ngữ đã đặt nền tảng cho phát triển phần mềm hiện đại
- Tác giả khẳng định Perl sẽ không biến mất, và chừng nào POSIX còn tồn tại thì Perl cũng sẽ còn tồn tại
- Hiện nay, các ngôn ngữ mới nổi như Rust, TypeScript cũng đang lặp lại con đường chuyển đổi văn hóa mà Perl từng trải qua
2 bình luận
Tôi thường nghi ngờ tính độc đáo của một bài viết nếu trong đó có đoạn nói Perl có cú pháp giống Ruby. Đây là kiểu câu quen thuộc hay được trích dẫn trong các bài phê phán Perl thời kỳ cổ điển, chứ trong sử dụng thực tế thì tôi chưa từng cảm thấy như vậy. Vì thế tôi có cảm giác rằng trong quá trình lấp cho đủ nội dung rồi sao chép các bài cũ, hoặc giao phần còn lại cho AI, những bài phê phán Perl mang tính di sản từ ngày xưa đã được tiếp nhận một cách thiếu phê phán.
Ý kiến trên Hacker News
Tôi luôn thấy kiểu thiết lập “nhà sư và pháp sư” của cộng đồng Perl hơi khó chịu
Tôi cũng không thích văn hóa cố tỏ ra thông minh bằng những đoạn code một dòng, còn Python thì có cảm giác nghiêm túc và “bình thường” hơn nhiều
Cú pháp có vẻ như được thiết kế phức tạp một cách có chủ đích, và có quá nhiều chỗ không thể nào hiểu nổi nếu không có tài liệu
Tất nhiên hồi đó sự ngắn gọn của code có lẽ rất quan trọng, nhưng đến năm 2025 thì nó quá thiếu thân thiện
Nó giống như cảm giác một ý tưởng bốc đồng nào đó của ai đó trong D&D bị đóng đinh vĩnh viễn vào sách luật
Trong khi đó Python nhấn mạnh “một cách rõ ràng duy nhất”, từ đó thúc đẩy code gọn gàng
Perl cũng có thể viết đẹp, nhưng đó là điều lập trình viên phải tự ý thức lựa chọn
Còn Python nhờ bắt buộc thụt lề nên ngay cả người mới cũng có thể đạt được một mức độ dễ đọc nhất định
Nhưng bản thân ngôn ngữ lại quá giàu khả năng biểu đạt, nên điều đó ngược lại thành bất lợi đối với code dùng chung
Xử lý văn bản thì Perl đến giờ vẫn là số một, nhưng là ngôn ngữ cho cộng tác thì rất khó
Khác với hình ảnh cường điệu của cộng đồng, khía cạnh rất con người đó lại gây ấn tượng mạnh
Sự tinh nghịch của Perl thậm chí còn cho cảm giác chân thật hơn và bớt nghiêm trọng hơn
Nhưng cuối cùng Python trở thành dòng chính, còn Perl thì dần bị lãng quên
Tôi nghĩ văn hóa độc đoán của cộng đồng Perl đã đẩy nhanh sự suy tàn của ngôn ngữ này
Hồi trước có một người bạn dạy tôi Linux là fan cuồng Perl, nhưng vì thái độ RTFM kiểu không biết thì bị chế giễu nên cuối cùng chúng tôi cắt đứt quan hệ
Tôi gần như không giao lưu với cộng đồng Perl, chỉ dùng nó trong thời kỳ mọi thứ được giải quyết bằng Google
Có quá nhiều ký hiệu như @, %, nên khả năng tiếp cận kém hơn Ruby hay Python
Ruby được thiết kế là ngôn ngữ hướng đối tượng ngay từ đầu nên tự nhiên hơn nhiều
Khi optional type hinting của Python không chính xác thì ngược lại chỉ càng gây rối
Nếu nó phải chính xác thì đó đã là hệ thống kiểu bắt buộc chứ không còn là gợi ý tùy chọn nữa
Hồi những năm 90, trên IRC có người bảo tôi RTFM, nhưng hóa ra đó lại là một trò đùa và một sự kiện chào đón người mới
Tôi thực sự đã được ngồi uống cà phê với các pháp sư Perl và được họ cố vấn, và trải nghiệm đó đã trở thành bước ngoặt trong đời lập trình của tôi
Tôi vẫn còn nhớ câu họ nói khi ấy — “Perl it forward!”
Hiện tượng “khổ trước rồi nhận được dopamine nên nhầm tưởng đó là trải nghiệm tốt” đang lan khắp toàn bộ ngành máy tính
Lúc nào cũng rối ren, và là chuỗi câu hỏi “tại sao lại làm như thế này?” nối tiếp nhau
Nói thật thì Perl biến mất đơn giản vì những ngôn ngữ khác tốt hơn
Giống như không thể làm sản phẩm từ một bo mạch nguyên mẫu, Perl là sản phẩm của thử nghiệm
Ví dụ như khi nhận
@arraydưới dạng scalar thì nó chỉ trả về độ dài, kiểu phụ thuộc vào ngữ cảnh như vậyGiống Toyota vs Honda, thực ra nó gần hơn với khác biệt về sở thích
Cú pháp tham chiếu của Perl, OO bất tiện, những thiết lập lặp đi lặp lại như use strict; / use warnings; đều gây mệt mỏi
Rails gọn gàng và an toàn hơn nhiều, đồng thời thời điểm lịch sử cũng hoàn hảo
Perl là ngôn ngữ đầu tiên tôi thực sự yêu thích, nhưng đến năm 2012 thì tôi đã chuyển hẳn sang Python
Ngay cả bây giờ, mỗi khi nhìn thấy các script Perl trong code legacy, tôi lại thấy nhẹ nhõm vì nghĩ “mình chuyển đúng thật”
Code Perl hầu như không có chú thích, và vì lạm dụng regex nên độ dễ đọc là tệ nhất
Giờ tôi giải quyết những kiểu mẫu đó bằng cách tiếp cận hướng đối tượng của Python
Tôi đã dùng Perl rất nhiều, nhưng cuối cùng chuyển sang Python vì vấn đề chất lượng của CPAN
Các module trên CPAN hay bị hỏng, và thường có nhiều trường hợp phải tự sửa để dùng
Trong thập niên 90 đến đầu những năm 2000, chênh lệch đó khá lớn
Perl chết là vì các ngôn ngữ khác cũng đã có hệ sinh thái như CPAN,
đồng thời cú pháp linh hoạt của Perl không phù hợp với cộng tác theo nhóm
Có thể phát hành module dễ dàng mà không cần SWIG hay mấy trò ma thuật kiểu phức tạp,
và sự trì hoãn phát triển vô tận của Perl 6 chính là đòn kết liễu
Python đã ngoại hóa tranh luận đó qua hệ thống PEP, nên hiệu quả hơn nhiều