06/10/2026 · VietTechies · Biên tập

Larry Wall không hề bắt đầu với mục tiêu phát minh một ngôn ngữ lập trình.
Ông chỉ cần tạo báo cáo.
Dữ liệu nằm trong những file văn bản rải trên một mạng máy tính.
Unix tool sẵn có về lý thuyết vẫn làm được.
Nhưng làm rất khó chịu.
Và chậm.
Vì vậy Wall làm điều lập trình viên thỉnh thoảng vẫn làm khi đủ mệt mỏi với một tác vụ lặp lại.
Ông xây một tool mới.
Rồi tool đó trở thành Perl.
Bài toán ban đầu cực kỳ bình thường
Năm 1987, Wall đang làm dự án cần thu thập thông tin từ file văn bản rồi biến chúng thành báo cáo hữu ích.
Công việc liên quan đến hệ thống Unix và quản lý mạng.
Những công cụ như shell, sed và awk rất mạnh, nhưng Wall muốn xử lý văn bản và tạo báo cáo phức tạp hơn mà không phải ghép chuỗi script ngày càng rườm rà.
Sau này ông nói có lẽ vẫn có thể giải bài toán bằng awk và shell.
Ông chỉ không muốn giải theo cách đó.
Dùng awk cho những gì ông muốn sẽ rất cồng kềnh.
Và với cách ông muốn làm, nó cũng quá chậm.
Wall có ba “đức tính” nổi tiếng chống lại workflow cũ
Sau này ông mô tả ba đức tính của lập trình viên là:
Laziness.
Impatience.
Hubris.
Ba từ nghe như câu đùa, nhưng ý tưởng kỹ thuật bên dưới rất nghiêm túc.
Laziness nói rằng công việc lặp lại nên được tự động hóa.
Impatience nói rằng máy tính không nên phí thời gian của người dùng.
Hubris nói bạn đủ tự tin để nghĩ mình có thể xây thứ tốt hơn.
Perl xuất hiện từ cả ba.
Thay vì tiếp tục xoay xở với awk, ông tạo cả một ngôn ngữ
Wall từng viết compiler.
Ông hiểu Unix tool.
Ông yêu ngôn ngữ — cả ngôn ngữ con người lẫn ngôn ngữ lập trình.
Vì vậy thay vì tiếp tục mở rộng chuỗi script, ông thiết kế một thứ hấp thụ những điểm mạnh hữu ích của nhiều tool sẵn có.
Perl thừa hưởng ý tưởng từ C, sed, awk, shell scripting và nhiều ngôn ngữ khác.
Nhưng nó gom chúng quanh một loại công việc rất cụ thể:
Quét văn bản.
Trích xuất thông tin.
Biến đổi.
Tạo báo cáo.
Và tiện thể quản lý file với process luôn.
Phiên bản nội bộ xuất hiện trước
Lịch sử chính thức của Perl ghi nhận một “Perl 0” dùng nội bộ.
Sau đó Perl 1.000 được công bố ngày 18/12/1987.
Wall mô tả đây là thời điểm Perl đi từ chỗ dành cho đồng nghiệp cùng văn phòng ra thế giới.
Thông báo ban đầu mô tả Perl là ngôn ngữ tối ưu cho việc quét các file văn bản bất kỳ, trích xuất thông tin và in báo cáo.
Gần như chính xác là mô tả sự khó chịu đã tạo ra nó.
Web sau đó đưa Perl tới một công việc lớn hơn rất nhiều
Perl không được tạo ra cho website.
Năm 1987 còn chưa có public Web.
Nhưng thế mạnh của nó lại khớp với Web thời kỳ đầu một cách lạ thường.
Chương trình CGI cần nhận văn bản đầu vào, phân tích tham số, đọc file, giao tiếp với cơ sở dữ liệu và tạo văn bản đầu ra — thường là HTML.
Perl vốn đã rất giỏi xử lý văn bản và kết nối các công cụ.
Đến giữa thập niên 1990, nó trở thành một trong những ngôn ngữ định hình việc phát triển Web thời đầu.
Một ngôn ngữ sinh ra vì báo cáo quản lý mạng bỗng gặp thêm một núi văn bản khổng lồ đang chờ.
Perl chủ ý kết hợp nhiều phong cách
Một số ngôn ngữ hướng người dùng tới một cách rõ ràng để diễn đạt ý tưởng.
Perl phát triển cá tính khác.
Nó tiếp nhận nhiều phong cách.
Người đến từ sed có thể viết Perl hơi giống sed.
Người dùng awk thấy nhiều ý tưởng quen thuộc.
Lập trình viên C nhìn thấy cú pháp quen.
Triết lý nổi tiếng của Wall trở thành “There’s more than one way to do it.”
Sự linh hoạt ấy khiến Perl rất hiệu quả với người cần giải nhanh những vấn đề thực tế.
Nó cũng khiến Perl nổi tiếng với code có thể trở nên khó hiểu khi sự thông minh lấn át tính rõ ràng.
Chính sự tự do giúp ngôn ngữ giàu khả năng biểu đạt cũng khiến kỷ luật trở nên quan trọng hơn.
Pattern sâu hơn lớn hơn Perl rất nhiều
Nhiều công cụ hữu ích bắt đầu khi ai đó chạm giới hạn của glue code — phần mã nối các thành phần với nhau.
Ban đầu workflow vẫn ổn.
Chạy lệnh A.
Dùng pipe chuyển kết quả sang B.
Phân tích đầu ra bằng C.
Thêm shell script nhỏ.
Thêm một cái nữa.
Rồi xử lý ngoại lệ.
Rồi cấu hình.
Cuối cùng, phần kết nối trở thành cả hệ thống.
Đó là lúc một abstraction mới có thể có giá trị hơn thêm một patch.
AI workflow hiện đại đã bắt đầu chạm đúng bài toán này
Ngày nay, mọi người xây tự động hóa bằng prompt, API, công cụ thu thập dữ liệu, cơ sở dữ liệu và script.
Ban đầu, vài lời gọi nối nhau là đủ.
Sau đó nhóm thêm cơ chế retry.
Trạng thái.
Memory.
Định tuyến.
Đánh giá.
Phân quyền.
Khả năng quan sát hệ thống.
Chẳng mấy chốc, workflow đã thành một môi trường lập trình riêng.
Câu hỏi bắt đầu giống bài toán của Wall năm 1987:
Tiếp tục ép công cụ cũ đi qua những bước xử lý vòng vèo, hay tạo một lớp trừu tượng hỗ trợ trực tiếp mô hình công việc lặp lại ấy?
Ý tưởng tự động hóa tốt thường bắt đầu từ sự khó chịu
Perl không bắt đầu bằng phân tích thị trường nói rằng thế giới cần thêm một ngôn ngữ lập trình.
Nó bắt đầu bằng một lập trình viên nhìn tác vụ báo cáo rồi thấy cách làm hiện tại quá phiền phức.
Điều đó đáng nhớ vì sản phẩm đầy tham vọng thường bắt đầu từ những lời phàn nàn rất nhỏ.
Việc này mất quá lâu.
Tôi cứ lặp lại cùng một phép biến đổi.
Mấy công cụ này gần khớp với nhau, nhưng chưa hẳn.
Tôi giải được, nhưng ghét cách phải giải.
Đó không phải lúc nào cũng là dấu hiệu bạn cần chăm chỉ hơn.
Đôi khi đó là dấu hiệu abstraction đang sai.
Workflow lặp lại nào bạn vẫn đang giải bằng chuỗi script ngày càng dài chỉ vì chưa ai thừa nhận rằng nó xứng đáng có tool riêng?
Đọc bằng ngôn ngữ khác: English · Español · Deutsch · Français · Português (Brasil) · Tiếng Việt
Nguồn
- Linux Journal — Larry Wall, the Guru of Perl
- Perldoc — perlhist, lịch sử release Perl
- Perldoc — perlfaq1, nguồn gốc và use case của Perl
- Perl.org — Impatient Perl, lịch sử ngắn của Perl
- Perl.com — Larry Wall, The Culture of Perl
- Ảnh chân dung dùng trong ảnh đại diện — Larry Wall tại YAPC 2007, ảnh Randal Schwartz, CC BY-SA 2.0 qua Wikimedia Commons. Bản phái sinh đã biên tập tiếp tục theo cùng giấy phép.
