2 điểm bởi GN⁺ 2025-12-08 | 2 bình luận | Chia sẻ qua WhatsApp
  • 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

 
kh0324 2025-12-10

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.

 
GN⁺ 2025-12-08
Ý 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

    • Dạo này tôi đang học Perl, và nó thực sự cho cảm giác như một ngôn ngữ do các pháp sư tạo ra
      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
    • Perl là ngôn ngữ đầu tư vào chiều sâu biểu đạt, và kết quả là có thể viết cùng một việc theo 1000 cách khác nhau
      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
    • Tôi công nhận cộng đồng Perl đã tạo ra CPAN, kho lưu trữ module đầu tiên trên thế giới
      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ó
    • Tôi từng nghe một cuộc phỏng vấn với Larry Wall, và ông ấy đơn giản cho cảm giác là một lập trình viên lập dị thích thử nghiệm cho vui
      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
    • Python cũng từng ồn ào vì quy tắc khoảng trắngtranh cãi về hệ thống kiểu
      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

    • Đó chính là mục đích của optional type hinting
      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!”

    • Không biết đây là thật hay chỉ là chuyện đùa
    • Tôi muốn nghe thêm về câu chuyện Software Local 2142 đó
  • 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

    • Thật ra tôi thấy đó gần như là bản chất của mọi công việc phát triển
      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

    • Perl rất tuyệt với vai trò một ngôn ngữ thử nghiệm, nhưng tính thực dụng thì kém
      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
    • Có rất nhiều độ phức tạp ẩn dưới triết lý “do what I mean”
      Ví dụ như khi nhận @array dưới dạng scalar thì nó chỉ trả về độ dài, kiểu phụ thuộc vào ngữ cảnh như vậy
    • Tôi nghĩ đánh giá Perl là tệ đã lan truyền như một câu cửa miệng theo phong trào
      Giống Toyota vs Honda, thực ra nó gần hơn với khác biệt về sở thích
    • Tôi từng là một phần của cộng đồng Perl, nhưng thứ khiến tôi chuyển sang Python là Django
    • Bài “Ancient Languages: Perl” của Steve Yegge giải thích lý do đó rất rõ
      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

    • Tôi chuyển sang Python vì tốc độ thực thi script của Perl chậm
      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

    • Tôi chuyển sang Ruby, và khả năng mở rộng của MRI thực sự mang tính cách mạng
      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
    • Văn hóa tiến hóa tự do của Perl rất hấp dẫn, nhưng trong môi trường cộng tác thì gánh nặng nhận thức tăng theo cấp số nhân
      Python đã ngoại hóa tranh luận đó qua hệ thống PEP, nên hiệu quả hơn nhiều
    • Ngoại trừ npm, đến giờ vẫn gần như không có kho lưu trữ nào mạnh bằng CPAN