PHP là 'Toyota Corolla của giới lập trình'
(deprogrammaticaipsum.com)- PHP và JavaScript đã phát triển thành hai trụ cột của web kể từ khi ra đời vào năm 1995, mở rộng hệ sinh thái của chúng mặc cho những lỗi thiết kế ban đầu và sự chế giễu.
- Cả hai ngôn ngữ đều trải qua quá trình chuẩn hóa vào năm 1997 và đã có một giai đoạn hồi sinh mạnh trong những năm 2010 nhờ sự hỗ trợ của Facebook và Google/Microsoft.
- PHP đã từng bị xem thường trong thời gian dài vì “thiết kế xấu kiểu fractal”, cú pháp độc đáo và nhiều khuyết điểm, nhưng hiện 70~80% website trên toàn cầu chạy trên PHP.
- Với tư cách là phần lõi của LAMP stack, PHP dễ tiếp cận ở mọi nơi, giá thành thấp và đã tiến hóa thành một ngôn ngữ vững chắc có nhiều tính năng hiện đại như OOP, FP, trình quản lý package và kiểm thử.
- Gần đây, cùng với các runtime như FrankenPHP và nhờ cải thiện bảo mật liên tục cùng sự phát triển do cộng đồng dẫn dắt, PHP đang hướng tới tương lai.
PHP và sự phát triển của lập trình web
- Năm 1995, một nhà phát triển phần mềm gần như vô danh ra mắt phiên bản đầu tiên của ngôn ngữ kịch bản mới PHP, mở rộng tầm nhìn cho phát triển ứng dụng web.
- Với quá trình chuẩn hóa dần dần và việc đưa thêm các tính năng OOP (Lập trình hướng đối tượng), PHP dần khẳng định vị thế như một ngôn ngữ thật sự.
- Tuy nhiên, cú pháp độc đáo và mô hình runtime, các vấn đề bảo mật thường xuyên xuất hiện cùng hàng loạt framework đã khiến PHP trở thành đối tượng chỉ trích của nhiều lập trình viên “nghiêm túc” suốt hàng chục năm.
- Dù vậy, nhờ sức mạnh cộng đồng và sự hỗ trợ của các doanh nghiệp công nghệ lớn, PHP vẫn không ngừng tiến hóa và mở rộng hệ sinh thái khổng lồ.
Lịch sử song song của PHP và JavaScript
- Năm 1995, lần lượt xuất hiện từ Rasmus Lerdorf (“Personal Home Page Tools”) và Brendan Eich (Netscape).
- Cả hai ngôn ngữ đều, trong giai đoạn đầu, chịu chỉ trích từ giới “lập trình viên nghiêm túc” vì thiết kế sơ sài và vấn đề cú pháp.
- Năm 1997, PHP/FI 2 và ECMA-262 lần lượt đưa đến quá trình chuẩn hóa.
- Bước vào thập niên 2010, cả hai đều trải qua sự bứt phá lớn nhờ hỗ trợ của Facebook, Google, Microsoft và các ông lớn công nghệ khác.
- Tính đến năm 2025, đã xuất hiện các runtime mới “tái sinh” dựa trên ngôn ngữ Go như FrankenPHP và TypeScript Native.
Sự nghịch lý “Ai cũng ghét, ai cũng dùng”
- C, Java, Python, Perl… mỗi ngôn ngữ đều có biệt danh riêng
- C: “assembly có thể mang đi”
- Java: “Viết một lần, debug ở đâu cũng được”
- Python: “Pseudo-code có thể thực thi”
- JavaScript: “Ngôn ngữ được tạo ra trong 10 ngày”
- Perl: “Keo dán của Internet”
- Mặc dù mang những biệt danh tiêu cực như “thiết kế xấu kiểu fractal” hay “Pretty Horrific Programming”, PHP vẫn đạt được thực tế là vận hành 70~80% web toàn cầu.
PHP: “Toyota Corolla của giới lập trình”
- Giá thành thấp, dùng được ở đâu cũng dễ dàng, là biểu tượng của cụm LAMP (Linux, Apache, MySQL, PHP).
- Ngày nay, PHP đã trở thành dự án mã nguồn mở đầy đủ, hỗ trợ các tính năng OOP nâng cao (traits, property hooks, namespace, attributes, enum) và tính năng lập trình hàm (closure, capture list, arrow function).
- Sắp tới sẽ có toán tử pipe, kiểm tra kiểu nhanh, thư viện chuẩn phong phú, trình quản lý package mã nguồn mở mạnh mẽ (Composer) và Packagist, khung kiểm thử PHPUnit xuất sắc, v.v., giúp PHP sở hữu các đặc điểm hiện đại và mạnh mẽ.
- Hiệu năng và tốc độ biên dịch cũng nổi bật; ngoài ra còn có IDE chuyên dụng của JetBrains, linh vật riêng của PHP, cùng cộng đồng năng động và hệ sinh thái riêng.
Những vấn đề của quá khứ và sự thay đổi nhận thức
- Những điểm yếu trước đây vẫn còn, như toán tử
goto, cách đặt tên biến đặc biệt, nhưng trong 10 năm qua đã có cải tiến bền bỉ thông qua các bản phát hành định kỳ, loại bỏ lỗ hổng bảo mật và dọn dẹp API kế thừa.- Đầu những năm 2000 tồn tại các lỗ hổng bảo mật và phong trào “I Hate PHP” tạo nên hình ảnh tiêu cực.
- Trong 10 năm qua, việc phát hành định kỳ (tháng 11 hàng năm), cải thiện bảo mật và hiện đại hóa API đã giúp nâng cao độ hoàn thiện và độ tin cậy của ngôn ngữ.
- Đã đến lúc các lập trình viên từng xem thường PHP trước đây phải thừa nhận sự tiến bộ gần đây.
- Các vấn đề an ninh kinh điển như SQL injection vẫn là điểm cần cảnh giác.
Cộng đồng và hệ sinh thái
- Khi các tổ chức chính thức như PHP Foundation cùng sự hỗ trợ từ ngành công nghiệp ngày càng mạnh hơn, PHP vẫn duy trì được văn hóa cộng đồng tương đối độc lập khỏi ảnh hưởng của các công ty công nghệ lớn, nếu như trừ JetBrains.
- Xếp hạng ngôn ngữ từng đứng thứ 3 vào năm 2004, nhưng gần đây đã giảm xuống còn khu vực khoảng hạng 7~15 theo một số thước đo.
- Mặc dù thứ hạng theo TIOBE, IEEE, PYPL có xu hướng giảm, một số bảng xếp hạng như RedMonk vẫn duy trì vị trí cao liên tục, cho thấy mức giảm không lớn như tưởng tượng.
Sự tiến hóa của engine: FrankenPHP
- Trong nhiều thập kỷ, Zend Engine giữ vai trò engine chuẩn của PHP; gần đây, với việc đưa vào runtime chính thức mới FrankenPHP, khả năng hỗ trợ môi trường container đã được cải thiện đáng kể.
- FrankenPHP duy trì tương thích 100% với mã nguồn hiện tại trong khi cung cấp cách container hóa dễ dàng và mô hình thực thi mới, trở thành phần then chốt cho tương lai hướng về phía trước của PHP.
Tương lai và nhận diện của PHP
- PHP vẫn có thể được đánh giá là ngôn ngữ “không nghiêm túc”, nhưng mức ảnh hưởng thực tế của nó trong việc hỗ trợ vô số site và ứng dụng, cùng cộng đồng năng động, vẫn được duy trì.
- Vẫn tồn tại tiếng tăm “sản phẩm của thiết kế ngẫu nhiên”, “ngôn ngữ không xuất hiện trong các bài nghiên cứu”.
- Như Rasmus Lerdorf từng nhấn mạnh, có thể thấy PHP là ngôn ngữ dựa trên sự tham gia và tăng trưởng tự nguyện của cộng đồng.
- Được ghi nhận như một ví dụ thành công của mã nguồn mở kiểu ‘bazaar’, nơi đã phát triển khi nhiều người cùng hợp tác trong bối cảnh giảm bớt kiểm soát của tập trung.
Kết luận
- PHP là một thứ không thể xem thường, giống như “Toyota Corolla của hệ sinh thái web”
- Dù vẫn là mục tiêu của sự châm biếm và phê phán, thực tế thì đây là một ngôn ngữ lập trình vững chắc làm nền tảng cho web toàn cầu.
- Với chi phí thấp, rào cản nhập môn dễ dàng và hệ sinh thái phong phú, PHP tạo môi trường giúp lập trình viên trẻ bắt đầu bước chân dễ dàng hơn.
- Trong tương lai, nó vẫn giữ triển vọng phát triển liên tục nhờ sự hòa hợp giữa cộng đồng và các xu hướng công nghệ mới.
8 bình luận
Nói đơn giản thì là "một ngôn ngữ giúp kiếm tiền".
Là người đang làm việc trực tiếp với PHP nên mình không hiểu nổi vì sao người ta lại hạ thấp PHP đến thế.
Ai cũng nói rằng PHP rẻ, dễ xây dựng, không thể dùng lâu dài và bảo mật yếu.
Nhưng toàn bộ suy nghĩ đó đều rất lỗi thời, và mình tự tin muốn nói thẳng với họ rằng họ là 'ngốc'.
PHP ngày nay là một ngôn ngữ rất hiện đại. Ngay cả khi bắt đầu một dự án dài hạn từ bây giờ, vẫn có thể tạo các module dùng được ở mọi nơi và có thể tái sử dụng cho bất kỳ website nào, và đây chính là điều các framework PHP hiện đại đang cho thấy.
Dù không phải mới nhất, PHP từ phiên bản 8 trở lên đã cải thiện bảo mật rất nhiều và mỗi năm đều công bố nâng cấp phiên bản. Chẳng hạn, Laravel cũng đang tiếp tục nâng cấp phiên bản mỗi năm.
Những người nói PHP bảo mật yếu có thể nói rằng ngay cả trong Java hoặc các ngôn ngữ backend khác, đã có rất nhiều báo cáo rủi ro được phát hiện và những rủi ro lớn vẫn đang tiếp tục xảy ra đến giờ.
Nhà nước Hàn Quốc, chẳng hạn, sử dụng JSP dựa trên Java, nhưng các vấn đề bảo mật vẫn phát sinh mỗi năm.
Kết luận: PHP không hề ngốc, yếu hay rẻ. Những người dùng PHP sai cách mới là những người ngốc, yếu và rẻ.
Rồi sao?
Giá rẻ, ai cũng dễ tiếp cận và sử dụng.
Dù là xe nhỏ mà lại khá rộng, nên có cảm giác nhét được đủ thứ đồ vào.
Ngoại hình cũng khá đẹp,
Tiêu hao nhiên liệu kém nên về lâu dài lại không rẻ như tưởng tượng.
Khi muốn nhét quá nhiều thứ vào thì vì công suất động cơ và nhiều vấn đề khác nên không dễ điều khiển tùy ý.
Dù tận hưởng ngoại hình đẹp để dùng như xe cắm trại, chỉnh sửa khắp nơi một chút rồi, cuối cùng vẫn chỉ quay vòng vòng kiểu đại khái.
Thậm chí còn có rủi ro lật úp.
Giá rẻ, ai cũng dễ tiếp cận và sử dụng.
Về PHP, có thể dùng cho web, CLI, workload và nhiều mục đích khác.
Có thể xây dựng giao diện trông cũng đẹp.
Dễ trở thành mã spaghetti, và khi PHP tăng phiên bản thì càng ngày càng phức tạp hơn, khiến chi phí bảo trì cao hơn nhiều hơn dự kiến.
Khi thực sự muốn dùng cho nhiều mục đích, thì PHP khá nặng khi chạy qua CLI nên ngoài web thì khó dùng.
Ngay cả với cấu trúc gọn gàng của Laravel, Symfony cũng chỉ tạm thời; khiêmnhưng khó cưỡng lại cám dỗ “ném vào” rồi tạo ra mã spaghetti lộn xộn.
Ngôn ngữ luôn khiến bạn phải lo lắng về hoặc lo sợ bị đe dọa bảo mật.
Giống kiểu như máy Morning hay Spark thôi à? Không có tiền mà vẫn muốn lái, haha. Mình cũng ban đầu tiếp cận PHP mà dạo này thì gần như không dùng nữa. Nhìn mấy thứ như Laravel, thấy kiểu dùng quá nhiều OOP cho một dự án nhỏ đến thế. Nó là thứ pha trộn lộn xộn luôn. Không dùng framework thì code thô của từng người sẽ la liệt thành xx.php, xx1.php, haha.
Nếu ví như xe trong nước thì sẽ là chiếc xe gì nhỉ?
Porter?
Rủi ro, nhưng không có gì tốt hơn cái này.
Tôi cũng thấy "Porter" là phù hợp.
Bình luận trên Hacker News
Java giống như Corolla. Nó dường như cố ý theo đuổi sự tầm thường, kém sang trọng hơn những mẫu đối thủ như Mazda3, và chỉ có cảm giác để đi từ A đến B. PHP thì giống Hyundai Elantra trong thế giới lập trình. Ngày trước, chi phí gia nhập thấp nên ai cũng dùng, nhưng vì vấn đề thiết kế và độ tin cậy, nên nó đã thành đề tài đùa trong một thời gian dài. Nhưng giống như Elantra, PHP đã phát triển rất nhiều, giờ đã khá ổn
Việc đánh giá về Corolla hiện nay khác khá nhiều so với thực tế. Từ năm 2023 trở đi, Corolla bản cơ bản đã trang bị sẵn công nghệ hỗ trợ lái tự động, và thậm chí còn hơn cả gói trang bị cao nhất của Mazda. Corolla của Toyota là xe duy nhất vượt qua bài kiểm tra phanh khẩn cấp tự động dừng hẳn từ 62 mph.
Cách ví von rất hay, nhưng ví dụ hơi thiếu. Mazda3 lại gần với cảm giác "tối giản tuỳ chọn, giá rẻ và hoạt động tốt" hơn, đặc biệt nếu nhìn theo mốc 2025 thì càng trông như vậy. Và tôi không nhớ lại thời điểm Corolla từng tệ về độ tin cậy. Một bác lớn tuổi trong gia đình tôi luôn khoe rằng chiếc Corolla đời 69 ấy là chiếc xe mới đầu tiên ông mua. Đó là thứ mở đường cho làn sóng xe Nhật thời thập niên 80.
Java hiện nay khá ổn. Sự cải thiện đến từ suy luận kiểu, fiber, text block, record, v.v... Làm việc chỉ với Java 8 thì chưa chắc vậy, nhưng trong môi trường Java hiện đại thì không còn khó chịu như trước.
Cách so sánh rất hay. Tôi muốn biết Python giống chiếc xe nào. Sẽ hữu ích cho lần mua xe sau này.
Java thì, ngược lại, giống Honda hơn. Nó đã phổ biến đến mức có mặt ở khắp nơi, đủ tẻ nhạt đến mức buồn tẻ. Dù từng có nhiều nỗ lực thay thế và “loại bỏ”, nó vẫn liên tục chứng tỏ sức sống.
PHP thành công vì một lý do duy nhất: triển khai cực kỳ dễ làm. Các lập trình viên hay đánh giá thấp điều này, nhưng khi tôi mới bắt đầu làm web, nó cho phép tôi đưa sản phẩm lên môi trường thực tế chỉ trong vài phút—một trải nghiệm như bùng nổ. Nó giống như một chiếc xe đạp hơn. Giá rẻ, không cần bằng lái, ai cũng có thể đi được, và có thể chạy nhanh mà không cần thủ tục phức tạp. Tôi đã không dùng PHP hơn 10 năm, nhưng lúc đó nó là “trải nghiệm mới” kéo tôi vào.
Trên internet có nhiều sự châm biếm về PHP, nhưng câu: “Bất kỳ ai cũng có thể dùng PHP — và thực sự rất nhiều người đã làm như vậy” rất ấn tượng. Nhưng việc giảm rào cản tham gia theo hướng tích cực là điều tốt. Tôi nghĩ càng nhiều người có thể lập trình càng tốt, và nếu PHP giúp được việc đó thì càng đáng hoan nghênh.
Một trải nghiệm gần như không ma sát tự nó đã là một bước nhảy lượng tử. Khi một việc quan trọng nào đó có thể làm một cách đáng ngạc nhiên dễ dàng, dù đó là công cụ chuyên dụng hay dịch vụ đại chúng, người ta sẽ dễ dàng chấp nhận những nhược điểm đi kèm. Tôi lại nhớ triết lý nổi tiếng: “làm tốt một việc”.
Khi từng làm Perl CGI script trước đây, tôi luôn phải chạm trán các rào cản như upload qua FTP, cấp quyền chạy, quyền truy cập file... Nhưng PHP đã tích hợp sẵn trong web server nên toàn bộ những quy trình đó biến mất, thường không cần tranh cãi với admin web thì chỉ cần chạy. Lợi thế lớn này đến từ cấu trúc triển khai, chứ không phải bản chất ngôn ngữ.
PHP là ngôn ngữ khó mô tả trong một câu. Nó từng được dùng như lựa chọn thay thế khi chuyển từ mod_perl, và cho phép thêm dữ liệu động vào trang tĩnh cực kỳ dễ dàng. Đặc biệt khi chưa có nhiều kinh nghiệm xây site lớn, chuỗi thử-sai là điều tất yếu. Nhưng bản thân ngôn ngữ thật sự kém. Như câu nói “thợ xấu hay đổ lỗi cho đồ nghề”, hãy tưởng tượng một chiếc tua vít có hai tay cầm và ba đầu ngẫu nhiên. Có thể người ta vẫn dùng nó, nhưng thật khó tin khi ai đó lại yêu quý thứ đó; vì bên cạnh đã có Snap-On tốt hơn và miễn phí. Vì vậy chèn vài chức năng server-side nhỏ bằng PHP thì không vấn đề, nhưng khi tích lũy thành thứ gì đó to như mạng nhện, rồi bạn lại nói “nhìn này, cái tua vít này cũng làm được việc ấy!” rồi nhận ra một phần sẽ sập sau một thời gian. Hình ảnh này không tạo được niềm tin. Nó đã khá cải thiện, nhưng vẫn là một dụng cụ rất “đặc biệt”.
Các ngôn ngữ khác giờ đã theo kịp PHP. Thời đầu, các ngôn ngữ có thể nhúng code trực tiếp vào HTML đều mang tính độc quyền như server-side JavaScript, ColdFusion, ASP. PHP là ngôn ngữ đầu tiên là mã nguồn mở và đủ tốt để năm 2001 trở thành lựa chọn hàng đầu cho web app. So với cgi-bin thì cũng nhanh hơn vì không cần build, quản lý tài nguyên tốt nên nhà cung cấp hosting có thể cung cấp hosting PHP giá rẻ, từ đó mới có các sản phẩm mã nguồn mở thay đổi thế giới như WordPress. Nhưng sớm hay muộn, giới hạn bộc lộ: để làm web app tốt cần một framework giúp route các trang khác nhau theo đầu vào. Ví dụ như khi form bị lỗi thì cần hiển thị lại màn hình thành công hoặc hiển thị lại lỗi; PHP có thể làm được nếu có kỷ luật, nhưng khi tới bước tạo router mới, việc tách riêng view bằng template trở thành điều đương nhiên. Sau Ruby on Rails, mọi ngôn ngữ đã có framework tiện lợi như PHP và cũng đòi hỏi mức kỷ luật nhất định.
includecủa PHP vào đầu những năm 2000, nó giống mảnh ghép còn thiếu trong đầu tôi. Không cần phải đồng bộ thủ công header, nav, footer qua hàng chục trang nữa. Trước khi Rails ra đời, tôi chưa hề làm được web app đúng nghĩa. Với cấu trúc và quy ước của Rails, khả năng tiếp cận tốt hơn hẳn; khi đó PHP phức tạp như spaghetti nên với người mới vào nghề cũng khó theo.